From a91e58f3463b43aea14f363c1627474ea9002045 Mon Sep 17 00:00:00 2001 From: CDR-AmirM <88067035+CDR-AmirM@users.noreply.github.com> Date: Mon, 27 Nov 2023 17:30:57 +1100 Subject: [PATCH 1/5] v1.3.2 release (#92) Co-authored-by: CDR Open Source --- .azuredevops/pipelines/build-v2.yml | 6 +- .github/workflows/docker.yml | 9 ++ .github/workflows/sonarcloud-analysis.yml | 13 +-- CHANGELOG.md | 14 ++- CODE_OF_CONDUCT.md | 6 +- CertificateManagement/mtls/server-energy.cmd | 5 - CertificateManagement/mtls/server-energy.cnf | 20 ---- CertificateManagement/mtls/server-energy.csr | 19 ---- CertificateManagement/mtls/server-energy.ext | 9 -- CertificateManagement/mtls/server-energy.key | 28 ------ CertificateManagement/mtls/server-energy.pem | 29 ------ CertificateManagement/mtls/server-energy.pfx | Bin 2853 -> 0 bytes CertificateManagement/mtls/server.cnf | 5 +- CertificateManagement/mtls/server.csr | 35 +++---- CertificateManagement/mtls/server.ext | 4 +- CertificateManagement/mtls/server.key | 52 +++++------ CertificateManagement/mtls/server.pem | 50 +++++----- CertificateManagement/mtls/server.pfx | Bin 2837 -> 3043 bytes Help/container/HELP.md | 2 +- README.md | 41 +++++---- SECURITY.md | 39 ++++++++ Source/.dockerignore | 3 +- .../CDR.Register.API.Gateway.TLS.csproj | 6 +- .../CDR.Register.API.Gateway.mTLS.csproj | 6 +- ....API.Infrastructure.Tests.UnitTests.csproj | 6 +- .../CDR.Register.API.Infrastructure.csproj | 6 +- .../Extensions.cs | 87 +++++++++--------- .../CDR.Register.API.Logger.csproj | 6 +- .../Business/Validators/BrandValidator.cs | 7 +- .../Validators/LegalEntityValidator.cs | 20 ++-- .../Validators/SoftwareProductValidator.cs | 2 +- .../Controllers/LoopbackController.cs | 3 +- .../CDR.Register.Discovery.API.csproj | 6 +- .../Controllers/DiscoveryController.cs | 6 +- .../CDR.Register.Domain.UnitTests.csproj | 6 +- .../CDR.Register.Domain.csproj | 6 +- Source/CDR.Register.Domain/Entities/Brand.cs | 2 +- .../Entities/DataHolder.cs | 2 +- .../Entities/DataHolderLegalEntity.cs | 4 +- .../Entities/DataRecipient.cs | 2 +- .../CDR.Register.Infosec.csproj | 6 +- .../Controllers/TokenController.cs | 6 +- ...0_GetDataRecipients_MultiIndustry_Tests.cs | 2 +- ...GetDataHolderBrands_MultiIndustry_Tests.cs | 7 +- ...eStatementAssertion_MultiIndustry_Tests.cs | 2 +- ...DataRecipientStatus_MultiIndustry_Tests.cs | 15 ++- ...ftwareProductStatus_MultiIndustry_Tests.cs | 2 +- .../CDR.Register.IntegrationTests/BaseTest.cs | 29 ++++++ .../CDR.Register.IntegrationTests.csproj | 6 +- .../US12665_IdentityServer_OIDC_Tests.cs | 10 +- .../Miscellaneous/US50483_DynamicUrl_Tests.cs | 12 ++- .../CDR.Register.Repository.csproj | 6 +- .../CDR.Register.SSA.API.UnitTests.csproj | 6 +- .../CDR.Register.SSA.API.csproj | 6 +- .../CDR.Register.Status.API.csproj | 6 +- .../Controllers/StatusController.cs | 6 +- Source/docker-compose.IntegrationTests.yml | 2 + 57 files changed, 352 insertions(+), 349 deletions(-) delete mode 100644 CertificateManagement/mtls/server-energy.cmd delete mode 100644 CertificateManagement/mtls/server-energy.cnf delete mode 100644 CertificateManagement/mtls/server-energy.csr delete mode 100644 CertificateManagement/mtls/server-energy.ext delete mode 100644 CertificateManagement/mtls/server-energy.key delete mode 100644 CertificateManagement/mtls/server-energy.pem delete mode 100644 CertificateManagement/mtls/server-energy.pfx create mode 100644 SECURITY.md diff --git a/.azuredevops/pipelines/build-v2.yml b/.azuredevops/pipelines/build-v2.yml index a4e6d1b..5df2a80 100644 --- a/.azuredevops/pipelines/build-v2.yml +++ b/.azuredevops/pipelines/build-v2.yml @@ -186,8 +186,8 @@ steps: Authorization__Scope=$(Authorization__Scope) BasePathExpression=$(BasePathExpression) BasePath=$(BasePath) - PublicHostName=$(CtsHostUrl) - SecureHostName=$(CtsHostUrl) + PublicHostName=$(CtsPublicHostNameUrl) + SecureHostName=$(CtsSecureHostNameUrl) Certificate__CertThumbprintNameHttpHeaderName=X-SSLClientCertThumbprint Certificate__CertCommonNameHttpHeaderName=X-SSLClientCertCN dockerComposeCommand: up --abort-on-container-exit --exit-code-from mock-register-integration-tests @@ -268,7 +268,7 @@ steps: displayName: 'Install dotnet-ef' condition: always() inputs: - script: 'dotnet tool install --global dotnet-ef' + script: 'dotnet tool install --version 7.0.13 --global dotnet-ef' - task: CmdLine@2 displayName: 'Check dotnet-ef version' diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 21789f7..d362a7b 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -78,3 +78,12 @@ jobs: - name: Image digest run: echo ${{ steps.docker_build.outputs.digest }} + + - name: Docker Hub Description + if: ${{ github.repository_owner == 'ConsumerDataRight' && github.ref_name == 'main' }} + uses: peter-evans/dockerhub-description@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + repository: ${{ env.DOCKER_IMAGE }} + enable-url-completion: true diff --git a/.github/workflows/sonarcloud-analysis.yml b/.github/workflows/sonarcloud-analysis.yml index 758740e..35a8131 100644 --- a/.github/workflows/sonarcloud-analysis.yml +++ b/.github/workflows/sonarcloud-analysis.yml @@ -31,17 +31,18 @@ jobs: runs-on: windows-latest steps: - - name: Set up JDK 11 - uses: actions/setup-java@v1 + - name: Set up JDK 17 + uses: actions/setup-java@v3 if: ${{ env.sonarSecret != 0 }} # Only run scan if secret use is allowed - requires secrets to run successfully with: - java-version: 1.11 - - uses: actions/checkout@v2 + java-version: 17 + distribution: 'zulu' # Alternative distribution options are available. + - uses: actions/checkout@v3 if: ${{ env.sonarSecret != 0 }} # Only run scan if secret use is allowed - requires secrets to run successfully with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - name: Cache SonarCloud packages - uses: actions/cache@v1 + uses: actions/cache@v3 if: ${{ env.sonarSecret != 0 }} # Only run scan if secret use is allowed - requires secrets to run successfully with: path: ~\sonar\cache @@ -49,7 +50,7 @@ jobs: restore-keys: ${{ runner.os }}-sonar - name: Cache SonarCloud scanner id: cache-sonar-scanner - uses: actions/cache@v1 + uses: actions/cache@v3 if: ${{ env.sonarSecret != 0 }} # Only run scan if secret use is allowed - requires secrets to run successfully with: path: .\.sonar\scanner diff --git a/CHANGELOG.md b/CHANGELOG.md index 35f511a..4701b70 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,23 @@ # Changelog All notable changes to this project will be documented in this file. -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] +## [1.3.2] - 2023-11-29 +### Changed +- Refactored code and fixed code smells +- Removed Mock Data Holder Energy mTLS server certificate as Mock Data Holder Banking and Mock Data Holder Energy mTLS server certificates are now combined. + +### Fixed +- Certificate DN for Register and Data Holder are updated - [Issue 60](https://github.com/ConsumerDataRight/mock-register/issues/60) + +## [1.3.1] - 2023-10-30 +### Changed +- Selflinks to use public host name / secure host name if configured. + ## [1.3.0] - 2023-08-22 ### Changed - Client_id is now optional in the access token request. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 9768323..7501fdc 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -115,8 +115,8 @@ the community. ## Attribution This Code of Conduct is adapted from the [Contributor Covenant][homepage], -version 2.0, available at -[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. +version 2.1, available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. @@ -126,7 +126,7 @@ For answers to common questions about this code of conduct, see the FAQ at at [https://www.contributor-covenant.org/translations][translations]. [homepage]: https://www.contributor-covenant.org -[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html [Mozilla CoC]: https://github.com/mozilla/diversity [FAQ]: https://www.contributor-covenant.org/faq [translations]: https://www.contributor-covenant.org/translations diff --git a/CertificateManagement/mtls/server-energy.cmd b/CertificateManagement/mtls/server-energy.cmd deleted file mode 100644 index 692a70f..0000000 --- a/CertificateManagement/mtls/server-energy.cmd +++ /dev/null @@ -1,5 +0,0 @@ -openssl req -new -newkey rsa:2048 -keyout server-energy.key -sha256 -nodes -out server-energy.csr -config server-energy.cnf -openssl req -in server-energy.csr -noout -text -openssl x509 -req -days 1826 -in server-energy.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out server-energy.pem -extfile server-energy.ext -openssl pkcs12 -inkey server-energy.key -in server-energy.pem -export -out server-energy.pfx -openssl pkcs12 -in server-energy.pfx -noout -info diff --git a/CertificateManagement/mtls/server-energy.cnf b/CertificateManagement/mtls/server-energy.cnf deleted file mode 100644 index a10f5d2..0000000 --- a/CertificateManagement/mtls/server-energy.cnf +++ /dev/null @@ -1,20 +0,0 @@ -[ req ] -default_bits = 2048 -distinguished_name = req_distinguished_name -prompt = no -req_extensions = req_ext -[ req_distinguished_name ] -commonName = mock-data-holder-energy -countryName = AU -stateOrProvinceName = ACT -localityName = Canberra -organizationName = ACCC -organizationalUnitName = CDR -[ req_ext ] -basicConstraints = CA:FALSE -keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment -extendedKeyUsage = critical, serverAuth -subjectAltName = @alt_names -[alt_names] -DNS.1 = mock-data-holder-energy -DNS.2 = localhost diff --git a/CertificateManagement/mtls/server-energy.csr b/CertificateManagement/mtls/server-energy.csr deleted file mode 100644 index 2c0bfd3..0000000 --- a/CertificateManagement/mtls/server-energy.csr +++ /dev/null @@ -1,19 +0,0 @@ ------BEGIN CERTIFICATE REQUEST----- -MIIDJTCCAg0CAQAwbTEgMB4GA1UEAwwXbW9jay1kYXRhLWhvbGRlci1lbmVyZ3kx -CzAJBgNVBAYTAkFVMQwwCgYDVQQIDANBQ1QxETAPBgNVBAcMCENhbmJlcnJhMQ0w -CwYDVQQKDARBQ0NDMQwwCgYDVQQLDANDRFIwggEiMA0GCSqGSIb3DQEBAQUAA4IB -DwAwggEKAoIBAQCyDecqnpVolmCG402dwf7WJGF0L+NySrI6CFYbSuyP+TJJ/fqd -8yXMoMXHpSLtgKTaUAKZhdQ1AMDiVowkFiGoSZRTDQMyrhfn9xtlATRfhwT+G+Ht -RNbUZZpRH3Ky4q7HCW0Pos87Mcxem7VaNb3mi2VpevSEXYEPzv8ZwdZT4kHx/cM+ -RclAHbNT3BmzhUVPDqLeq3Mg98f+eYmmdzEGHXjr3JholuqXw7EVjWHOL4K3h7fC -PrHU58x78pr84TENR28c8wYk57qr6J4/4r35goj2oj2r1XnPh5ajzam/+ar/BlpO -JNrtfOzYweWtzDrU7A6xMYlHD81svNhqCnDnAgMBAAGgczBxBgkqhkiG9w0BCQ4x -ZDBiMAkGA1UdEwQCMAAwDgYDVR0PAQH/BAQDAgXgMBYGA1UdJQEB/wQMMAoGCCsG -AQUFBwMBMC0GA1UdEQQmMCSCF21vY2stZGF0YS1ob2xkZXItZW5lcmd5gglsb2Nh -bGhvc3QwDQYJKoZIhvcNAQELBQADggEBAK94YAkQ75NTqbxWsAAGeBvKur59lB7d -3o4BMhN1D4pUjQnJIijPv5ECynlU+f9T3hnvWD/Y4eJvw5qUhoKC3uLBnmi81meI -Wtj3PZE6DEkcJfiLxpDdnnOkmFRMB/RcplPFES6W3AT69wvhB5qauyUlE9T55GtS -aalzxustFg5daxsZKxzTsiUI+sUyPI0TaDECAX34nuDaXxrh79ktkVk+oT8M+yiO -BvVTkUvfbXeGRM0pXzR+J9armjjRWmb357IhIgjWcpJlHR2TXsgc0ish8j00M9W5 -hrEnTg5JcTOCbp0qLMFjVMgSyPSMRQkUPbk+bfT+VKALtYnW4rpzOjI= ------END CERTIFICATE REQUEST----- diff --git a/CertificateManagement/mtls/server-energy.ext b/CertificateManagement/mtls/server-energy.ext deleted file mode 100644 index 65d8bcc..0000000 --- a/CertificateManagement/mtls/server-energy.ext +++ /dev/null @@ -1,9 +0,0 @@ -authorityKeyIdentifier=keyid,issuer -basicConstraints = CA:FALSE -keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment -extendedKeyUsage = critical, serverAuth -subjectAltName = @alt_names -[alt_names] -DNS.1 = localhost -DNS.2 = mock-data-holder-energy - diff --git a/CertificateManagement/mtls/server-energy.key b/CertificateManagement/mtls/server-energy.key deleted file mode 100644 index 62b4c62..0000000 --- a/CertificateManagement/mtls/server-energy.key +++ /dev/null @@ -1,28 +0,0 @@ ------BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCyDecqnpVolmCG -402dwf7WJGF0L+NySrI6CFYbSuyP+TJJ/fqd8yXMoMXHpSLtgKTaUAKZhdQ1AMDi -VowkFiGoSZRTDQMyrhfn9xtlATRfhwT+G+HtRNbUZZpRH3Ky4q7HCW0Pos87Mcxe -m7VaNb3mi2VpevSEXYEPzv8ZwdZT4kHx/cM+RclAHbNT3BmzhUVPDqLeq3Mg98f+ -eYmmdzEGHXjr3JholuqXw7EVjWHOL4K3h7fCPrHU58x78pr84TENR28c8wYk57qr -6J4/4r35goj2oj2r1XnPh5ajzam/+ar/BlpOJNrtfOzYweWtzDrU7A6xMYlHD81s -vNhqCnDnAgMBAAECggEAQ1IkZCXfodKxnm6U6x/tRXQt8KsmmRELAAwk2l7iwLDc -xcMkndHQKeVjwk96vEfWjMCRqxBBouStCSbmB8LiaOmhDiGuYtwWJ9tzXSYucivv -xFAwhPBxNY9Q4Hk+ecphgNnchXvuVJhIiEDhOcF2EpQD/PTDPMTJxntiUo/KhJ42 -Ph7dqLWytXRI3YJ6xH/mFRE4ir6tWcgEkGT48Ws4XzOZAhiH9kKUSPHs7bOgNPZH -rZ1e/REuXxd2oWqxwkzHge76RkOESUV4iMWQUDAZbiaa7f6ehmeft8zLDi8hoAu5 -qpEuZFdQd6QV4+fS9rsNPumzRBGIAnqLcUf07I1cYQKBgQDsX7Vy4nvf+W8dGgZl -qgtmrB0zuNS8iRiqPvN/m9CfIIPk5F9K0XIf0vJrasOAUL5JdWB6giXxhW3wYI6Y -ddBdXeBQW/kY0O5c6YHBGUt7R1CBQME2AaZYp/B1CIkZXr+coZkPcmpte1UC2dtY -re1rOhSx/X7/Wt/DW5xZSBTgFwKBgQDA1pJJ2qymCcoIqw1gPWT5RWEj+jez6aaJ -zJubiJ5uVQNmXjHaUMrHp1cLIjkuYUjNB0uRfM1EGBTFRqeoWHH5cFXatY1O4O1K -eoaXKzxWpK6C77VIHydj3BLJ15SHyumj2I6pvGAszaJVtdHZIBVRvRcVeuskr5Fp -tLA7+UgnsQKBgDGh0xbBaaNY27TvnwI/108Cusr+d2TzIIO23iggTojrKeao8T1j -hyQZhh959nz990azZ8OxikgRbUk47RgkPNEuAgi9lytXy4Uk3sLuDcRf8A6Dy04M -wKIC+WGJnkf+dhtsbxgoPSKp7+q+Velj8+M8+dV51e3GZg++L7Erin6XAoGACq/Z -i55C0zDXsYNJSnwcjHP73jKPw7i/MgPU29nGbfboKVQvDxpLIqVzfXp4EMnzbulo -lreD6LIs9IHl6L5+EoTXPTeyjRyKCgagTuBmh6a4xSjjswuG81HO+MCpypzENgBa -Z6245sK+rGFXL+FHTTBdhyM4xN+1/1W0Lp6yEQECgYEArpypGcQX8BTHgAp+10Wh -skzxCyDCeB1dcyZu8dA6joMgQofwAQmvOhA9E40ozy2N+oWe2TGxdvi+GCBonZyR -udhcIkpqIZ50R5gKYJTtiOpEYL5ZgAROaW9FkorcPqYy1tYzJn0vmWFiwGCS/IVq -jmPdvTySaaMtfWukUUckfVw= ------END PRIVATE KEY----- diff --git a/CertificateManagement/mtls/server-energy.pem b/CertificateManagement/mtls/server-energy.pem deleted file mode 100644 index abafc0e..0000000 --- a/CertificateManagement/mtls/server-energy.pem +++ /dev/null @@ -1,29 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIE4zCCAsugAwIBAgIUZArKvnjChy+gwjOSYMnMf3tioukwDQYJKoZIhvcNAQEL -BQAwYTELMAkGA1UEBhMCQVUxDDAKBgNVBAgMA0FDVDERMA8GA1UEBwwIQ2FuYmVy -cmExDTALBgNVBAoMBEFDQ0MxDDAKBgNVBAsMA0NEUjEUMBIGA1UEAwwLTW9jayBD -RFIgQ0EwHhcNMjMwNjE2MDAzMTI5WhcNMjgwNjE1MDAzMTI5WjBtMSAwHgYDVQQD -DBdtb2NrLWRhdGEtaG9sZGVyLWVuZXJneTELMAkGA1UEBhMCQVUxDDAKBgNVBAgM -A0FDVDERMA8GA1UEBwwIQ2FuYmVycmExDTALBgNVBAoMBEFDQ0MxDDAKBgNVBAsM -A0NEUjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALIN5yqelWiWYIbj -TZ3B/tYkYXQv43JKsjoIVhtK7I/5Mkn9+p3zJcygxcelIu2ApNpQApmF1DUAwOJW -jCQWIahJlFMNAzKuF+f3G2UBNF+HBP4b4e1E1tRlmlEfcrLirscJbQ+izzsxzF6b -tVo1veaLZWl69IRdgQ/O/xnB1lPiQfH9wz5FyUAds1PcGbOFRU8Oot6rcyD3x/55 -iaZ3MQYdeOvcmGiW6pfDsRWNYc4vgreHt8I+sdTnzHvymvzhMQ1HbxzzBiTnuqvo -nj/ivfmCiPaiPavVec+HlqPNqb/5qv8GWk4k2u187NjB5a3MOtTsDrExiUcPzWy8 -2GoKcOcCAwEAAaOBhjCBgzAfBgNVHSMEGDAWgBSDBp7augjmKwlSCGJs3hSkF3Z1 -UTAJBgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSUBAf8EDDAKBggrBgEF -BQcDATAtBgNVHREEJjAkgglsb2NhbGhvc3SCF21vY2stZGF0YS1ob2xkZXItZW5l -cmd5MA0GCSqGSIb3DQEBCwUAA4ICAQA1MF/14YKYNmKsuYkQn/vtkc0/+gGqHn2a -jJfEBDIjlc28ot2DJNi3V0ibbekmiUGhSmqpFX8/SRt9Wp7z6OKiYFFKZ0SJgd0J -5eX6sPm1y6NOJDLlC/ScfC+fLbFWD6C6tCHe5wBMwHMimy/FyqTgtFbwYePIxrmH -dh5n2tXiMhAA4KZ8ckJRcW2wzTgoBlfAgS3UGmdJjAE6CunBGDeWFfDpDGXusHGy -2BEiF9wq7lQ0ghhxZV0GohInACunO0wxyW5tMGRaiafUe3N/RQazz8zNBpAWDYpb -pH3LkO3vNQ80qNJzAGywCOVjeH5rVfsxqEJ7EE5wGwQ71pS8gFZ8hWQaaKCIxun2 -GF49Q+31oldjhI74XrP1fUP+Imqxxs1g1eT6WhRQpZSQfw3XyJR0Ikk31t9vAaEN -o0MSnSFFN1iIPCCPYDH7MFgNN27oS+Yp2dzo7oyxF7MtwygyGJS51W4ro4QMabWs -WymO3yDZZNSE4XMb8voIywGQMU80FKTSx6dmwkSXwMiB4jD9LUl9Jh6q2QSn1GcA -qmthmg2PYE/FjCcl9Q5ftF9o+fgbA+GEtd05CPHGoENEIqtzIQ1UADPDFvSzqi94 -GqbpzwF4qW8lnN+hIluhT8f/+oCoKOvoTJYSwpUfLszbbHPz7YYbJmJBvZBNzWEP -wkiVMGumAw== ------END CERTIFICATE----- diff --git a/CertificateManagement/mtls/server-energy.pfx b/CertificateManagement/mtls/server-energy.pfx deleted file mode 100644 index 4ce1b6042c177a0636acca3c253b8d7b973d4c4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2853 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 BPG0~3 diff --git a/CertificateManagement/mtls/server.cnf b/CertificateManagement/mtls/server.cnf index a449727..d927948 100644 --- a/CertificateManagement/mtls/server.cnf +++ b/CertificateManagement/mtls/server.cnf @@ -4,7 +4,7 @@ distinguished_name = req_distinguished_name prompt = no req_extensions = req_ext [ req_distinguished_name ] -commonName = register.mock +commonName = mock-data-holder countryName = AU stateOrProvinceName = ACT localityName = Canberra @@ -17,4 +17,5 @@ extendedKeyUsage = critical, serverAuth subjectAltName = @alt_names [alt_names] DNS.1 = localhost -DNS.2 = register.mock +DNS.2 = mock-data-holder +DNS.3 = mock-data-holder-energy diff --git a/CertificateManagement/mtls/server.csr b/CertificateManagement/mtls/server.csr index 043067d..9802c60 100644 --- a/CertificateManagement/mtls/server.csr +++ b/CertificateManagement/mtls/server.csr @@ -1,19 +1,20 @@ -----BEGIN CERTIFICATE REQUEST----- -MIIDETCCAfkCAQAwYzEWMBQGA1UEAwwNcmVnaXN0ZXIubW9jazELMAkGA1UEBhMC -QVUxDDAKBgNVBAgMA0FDVDERMA8GA1UEBwwIQ2FuYmVycmExDTALBgNVBAoMBEFD -Q0MxDDAKBgNVBAsMA0NEUjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -AN4C3uv3OjGNjc8yA6ibltETv0F0LkQek/k+OiJ+lqoqCAvMGJO5ML3QNa93JrQx -gq+FPtTl5jV5RGFqS7zN/BCBBVR9nY1+mXz9otZWMnkU8C6mL+rO1OzPQM+zlBBH -GMUs6GAaVvBV3qnfsSUnTohu4/Kw499S3XV2cv3zZFbbDfxsr4QKl1/1ZdlA8MMt -tBldsDohMI1oNQGZKEF6FqgAro7ev6eqbKEQ1AwEYwLUEUBGw4xzU/YH56PocBGC -iyy65CKqwbLuCztFIBsnMt1jiWRVxKG6vqHmgFwaO2g1eG8CniyFP887o6ceJGtv -3DN6Sr3IDm/xy6PQcxg78/UCAwEAAaBpMGcGCSqGSIb3DQEJDjFaMFgwCQYDVR0T -BAIwADAOBgNVHQ8BAf8EBAMCBeAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEwIwYD -VR0RBBwwGoIJbG9jYWxob3N0gg1yZWdpc3Rlci5tb2NrMA0GCSqGSIb3DQEBCwUA -A4IBAQDaodDSmewoyrISEdmiNGxlLiQ3pr9DGpZQpbFKSTLDo6bK3uuqNIjje4Cr -H7oEKcnUS7EU9RWLU72/yK1F+WJzMQkU0CP9uZMNlQ10iXHU7jpt/kOVgRlfV3J6 -AI0qmIFxigIq/pz7NVyiSFsjA5iBz2VcUcWo26y97CKq2QaZgLWk+Zw8IoWNLq9p -Z5ao72KMfsIaUmOQybwHf1flU23BEN7w454lgVEhNzM49hKhP2z8uRZmT6hdCdRs -bamAGQoBbCOqpcnbRAKnlJgeKfd/RrCr2xSsKO7G1l/DiVKv8MOn0p1RT63508u8 -6zRYjvUYUBVCokoYQAlq03YVbxTp +MIIDMjCCAhoCAQAwZjEZMBcGA1UEAwwQbW9jay1kYXRhLWhvbGRlcjELMAkGA1UE +BhMCQVUxDDAKBgNVBAgMA0FDVDERMA8GA1UEBwwIQ2FuYmVycmExDTALBgNVBAoM +BEFDQ0MxDDAKBgNVBAsMA0NEUjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBANe18Pt/9lsJuphzuKt4TCsna6cEL6uKGzc3zOORefm3yM+O9GPO5/Yo2CNH +fTALtziOSxEdKhSh4WvhnDDw2BwyTarnSmpNmZ4fTiyCxRX9XcHieO264sVlWhxe +zxiTz5MIwLZKoi0fNndo13of7CWe1SHErOnsrGlMlDE7OB2i061eSyQTnUEEVz9W +zC/U3hmB4WeT//b4liMhdVIAc8Px3ehEU7QrRtSwcsMv5rVLwzaOLIs/K8DDf0AN +PXD1GVMoR49lloVFMTu0Y0YyEMkgl7hfXY2zaKgEpuZ/I80UUFvFgwjadT0c5Lux +p4K4II3ddb19x79MGq6uja2ef1ECAwEAAaCBhjCBgwYJKoZIhvcNAQkOMXYwdDAJ +BgNVHRMEAjAAMA4GA1UdDwEB/wQEAwIF4DAWBgNVHSUBAf8EDDAKBggrBgEFBQcD +ATA/BgNVHREEODA2gglsb2NhbGhvc3SCEG1vY2stZGF0YS1ob2xkZXKCF21vY2st +ZGF0YS1ob2xkZXItZW5lcmd5MA0GCSqGSIb3DQEBCwUAA4IBAQC2Dc3bD4lzLD1H +Oroyw62Y8+W743zlssWJdknX0OvGdphRWUgKkGifNZFz9FIdBLrYRGNEs7MulpMY +0z56vYsR5b14BTThRm9AHn6jmMnu7k7MaC7lYleOan8BKgAk/ocDynl5rhs02W4q +tusYOxfgT2WdYtR8GYO+4a9/EdOAbaRX1ecCbg7Ea6gK41ETQlwmWcaSEVQNz1EX +Lr4jsOtyoU7ZJ5C2zPII3D6mxWbPoCLHKprmdfWjiNf10r3+ICtjEK+q6E3H5Tjy +oya4CUISHjch31xu+Fd7odwxqNE+Q3G98ipnkHm0nZUQzjHUyab24bMjHkgYavLJ +ywSX6vdl -----END CERTIFICATE REQUEST----- diff --git a/CertificateManagement/mtls/server.ext b/CertificateManagement/mtls/server.ext index b7a0210..c413971 100644 --- a/CertificateManagement/mtls/server.ext +++ b/CertificateManagement/mtls/server.ext @@ -5,5 +5,5 @@ extendedKeyUsage = critical, serverAuth subjectAltName = @alt_names [alt_names] DNS.1 = localhost -DNS.2 = register.mock - +DNS.2 = mock-data-holder +DNS.3 = mock-data-holder-energy \ No newline at end of file diff --git a/CertificateManagement/mtls/server.key b/CertificateManagement/mtls/server.key index 2d27e95..e3c65dd 100644 --- a/CertificateManagement/mtls/server.key +++ b/CertificateManagement/mtls/server.key @@ -1,28 +1,28 @@ -----BEGIN PRIVATE KEY----- -MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDeAt7r9zoxjY3P -MgOom5bRE79BdC5EHpP5PjoifpaqKggLzBiTuTC90DWvdya0MYKvhT7U5eY1eURh -aku8zfwQgQVUfZ2Nfpl8/aLWVjJ5FPAupi/qztTsz0DPs5QQRxjFLOhgGlbwVd6p -37ElJ06IbuPysOPfUt11dnL982RW2w38bK+ECpdf9WXZQPDDLbQZXbA6ITCNaDUB -mShBehaoAK6O3r+nqmyhENQMBGMC1BFARsOMc1P2B+ej6HARgossuuQiqsGy7gs7 -RSAbJzLdY4lkVcShur6h5oBcGjtoNXhvAp4shT/PO6OnHiRrb9wzekq9yA5v8cuj -0HMYO/P1AgMBAAECggEBALxRhRR1bohwAVU6oH3aFLEe5gG4cjJYGb62+Qsfg9+t -rYuMQWC1GtI3lgJTuKHqyWbnSKfAp2i+h7F2P+5Ub7b0KjhEIWvPcpTidMkI7uFk -UGPRlh2/+j8xglFsi3DPTgSbFjXGwe41eJ1x4MqaL/Rs07CeOXzKxo2Hvv0JAxjk -PMosBcPzD0jlHm6mT3RAwxRKKb01KWuPA7QEGw1J5Zd9DOxaVOFL3ZDBTO+N2fRz -yb0LA75Kq0tRDjK5jJT2WcyIdnqbB6jHZFxTzawH0VaHzTP2EkznYrRvwA9P83d5 -suNDk7B59bPL0rFlmiYilWKNRipieq9qBMQYQUdIlZUCgYEA87cyoYauCXKq5zd4 -yRCpeWpWn1V2wkcm1ZGcd9ipSlOmJ1QnIWkNQat2PZYS7Jr6q+NHR0P0Cn9rStpO -xgwgjweorz/BJDLj6jxQYarf8VyzsXquwBIeFIaiO7U2Sd1IBNihVh9SVhOlhJIL -rBDaLbNUvuwCdBSGcZVVssa/Z+cCgYEA6TOb0gXQCNKJ0BB4ZkcMFOYgRPTTSw5j -rLlcQyJUrbC0hxWyLIPchl8iUsfhzr0SWIsmq8KNb4UGJO/qYCrTqqZJt0hyfYJ5 -tEyg/K5uPGv0Sif7DL6J+8mNZ0p4q2yOcC4KfXTKltCs2FtUiVRN+6hjI+J+l7NS -dxdIxoAb2cMCgYEA7/S55wuBo0/BMTIOvHipRCAM9YfiC9qeQ7zAP8eUttexShuz -A1Q5dyTooC54p3jXwhFehq5DQ2q9Ks/Sq3AZRnoV/aZZ9dgdSuzjf6YMI8pQKjhO -glHUSAVfCkabExLJ6+uWvgLMwG9LkkFxOJLHHiPpFqmsqLnkvUR5QjIpFpUCgYAI -CcpeM+sW0sMDU/4CcIJ/GeuU1OePl8BhzMXcXouSrRub6GiK1kS8sPzK467p5GSE -fs9nbj5X0LsEfOyUQgWnxTGXSrz/jIbLazTFYPHVzVbPU494wfyZnDnujIeaSRSj -00JzTppJFopOrt88GJbTjNtV+lGowvqdtkTA6tuK5wKBgQCJd/bCK4h94esp2kil -2bPXPBcOGp9cYmtLzPuEUmUk9ws1VTSyPTcOD2JKZN1Tl/l4TlJNzOnGlGdqsIsU -ZD6SPGXxcBFDde9vDgtnQhsbXxV+thA/PbsftyNWOYV6QmzuFNV+xVl/UWqoA+ip -c7hz47kycXYNkKGZSpcGthCMtA== +MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDXtfD7f/ZbCbqY +c7ireEwrJ2unBC+rihs3N8zjkXn5t8jPjvRjzuf2KNgjR30wC7c4jksRHSoUoeFr +4Zww8NgcMk2q50pqTZmeH04sgsUV/V3B4njtuuLFZVocXs8Yk8+TCMC2SqItHzZ3 +aNd6H+wlntUhxKzp7KxpTJQxOzgdotOtXkskE51BBFc/Vswv1N4ZgeFnk//2+JYj +IXVSAHPD8d3oRFO0K0bUsHLDL+a1S8M2jiyLPyvAw39ADT1w9RlTKEePZZaFRTE7 +tGNGMhDJIJe4X12Ns2ioBKbmfyPNFFBbxYMI2nU9HOS7saeCuCCN3XW9fce/TBqu +ro2tnn9RAgMBAAECggEAEchKSIde3RgnGWJ/zKXm/I88PwlXry/cSL/pPHDdke4a +SC8IG1K/GVI6aCUgbzWmCevkCRIDCi6ipUi03i16mU91yuMUhcEmKux4fq+clPCd +Oiqj7rAfeeeeJzTTJHrp65x2+4gZSLg4Hp2mVsdbKapHdmhO211jBK63EDxqJroi +2M3UGGgUoWnnsZDZTePiDChgZTqu6F1gTEYOigTdVXaFxaDRNwEeCkxHbUtBRbHX +mvbJzQEblNyVqxEfYEuWuIr5zMc3rLR8OBkSXwF0C1GHusUJjQLTD0OZ3RCPND2j +ilfmDlW8D0uZsD5ACxPs7tpCfGQFHnjoawQiZ++ZqQKBgQD89pZH+alX6P1zZiwJ +mhG+cMnE0sal4p78/uD7rlUGUpCTR1pzltJDxRNusVkHUgUg+tStPTr0OzFEzfa3 +eBXbowLjX0qIlfNBMSNLnBzFMW4oxXYwxTzLFY7sP5xQtJtd74Yrh6UvIXzHUfsf +QTnfjZDsK+gxJSzLz72tnlclCQKBgQDaTN5xGR+S1dk338Be3Xg2QOjYDXHpS+aQ +n4LsPyd4EK5nhRzMIf/Tl38hH+vxlHGRSOiOIMxgUjdop/A6RIXZflX0uM8L1HUY +M5Z9Y5hsWhZ+vML0wrZI8H4TFkRDhMDQ1AKfnlwCeKIls2YMVIT85w7DANYtvCAP +QUjiMEsiCQKBgCO+A8XvtMnDFey0RwykRFWQQjIZRhAyURyWNtvY6hKWn+7vagxj +BxqkQfamAFpUcH0Uc/B2cloH8xIxt+Z8hTofck0GLdXWuiQ/+Si5yibisRn5rJV/ +iPN4/FTNOBz/J+TB70c/R0u9g4/2OXFVGgRIUG3OVmR7SDUUCUz6zn1hAoGBALpk +pBIBl5nyilRQ8pqNk5UPe0DuyfKfYjDeYhWCHxs/cwrk95+88Akk8+G+teFCFG4u +yJKCor8jtDfiHRZDZ947Jv2bxv2c3JZbhgVuQrlRep+gYP5IOwiwf5Wgj4zvDwu/ +2rWbq4hYpGp4cYvZpuuiBlKupjHKzbz4y1iGT8CxAoGATvMh4hlZn1RcS0sUzPCI +DQ9xLauCxrPXV4HHCd5LzH+hWoPnRs9MpZeHsX00VvgVsIiRSwtLOZdXAmPqOWUk +hADLuicFwaSZ4J1TTKIBXFjZU6DNuxlLmgJKKLWA7ZkslwiEawNxeI3rUMliVlvp +nyXGRA5vZWUZ4t6UwnYw2ak= -----END PRIVATE KEY----- diff --git a/CertificateManagement/mtls/server.pem b/CertificateManagement/mtls/server.pem index efc301b..f7539dc 100644 --- a/CertificateManagement/mtls/server.pem +++ b/CertificateManagement/mtls/server.pem @@ -1,28 +1,30 @@ -----BEGIN CERTIFICATE----- -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 +A1UdEQQ4MDaCCWxvY2FsaG9zdIIQbW9jay1kYXRhLWhvbGRlcoIXbW9jay1kYXRh +LWhvbGRlci1lbmVyZ3kwHQYDVR0OBBYEFGKBy/rHEt58SQr0bAwRpM4BU32NMA0G +CSqGSIb3DQEBCwUAA4ICAQBMO8+jm/s86CNLTznhTRlndlmRL4S4BhsSnib4fNXe +lt/RhRyBHRfnZ96KHEcw0n2i+5/5M/H2nMRC0DfhbKEnVz5puFFG7MIvK4CC6qur ++hjQWMMy0p0slTt58zag2xGl046tZjgGCSW/17kzawEmRpFhi19hD2o3Bfq54RbH +Do18duWI6hIcYWEtPubst9XQUA/om1iemn+xYLj8LbZwmysdNh4ZlEDm7DVLTqUV +Jjkof6Nr23lxyjPRcM16neL33FdqTVLAemsaNuC8ld7Pv09LiRzf8xK5VrmUdDH8 +S0EH8fyBwy0inzsrUHZvyeRhvQG0TXgRFZ1avmpCwPx+Z3sL9LqmsIosCk2Siae0 +6khUgBqRsGZ9f3sQQLlsWauJqQ/76vhJAa0y8qvJ2J2bLmLg4BDpqMALqKY2YVvx +UxyihfSjNM+6g5fqhBz23KwIQL7sFD4UYXeT5g7GNOnjolL+nKsSCd/epWWqS4o7 +imqx45YH8e0oZTuq6hdSBMnnX+zkf3pm4ocec5d8mU3Bq+24Ob6ISvrgtRftzxiA +kfFwWtW8Lh+QLjQUFNa0aFL0/3806A85p7NiHAKpUi4lWJBa0SyU6o6JKmTSpT+i +NYj2X8gnCLg9M92CMJp0tnF5/vbhE2dDN4x59pqb3DxJcYNgdrqU8iHNa5yd7IXq +vA== -----END CERTIFICATE----- diff --git a/CertificateManagement/mtls/server.pfx b/CertificateManagement/mtls/server.pfx index 3eff30648ec437bc9017c5580fadf21f595f2597..eaa36ebf2cdde2421b638d8c56aaaf6801000907 100644 GIT binary patch literal 3043 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 li#|Sg](https://raw.githubusercontent.com/ConsumerDataRight/mock-register/main/mock-register-architecture.png) +[Mock Register - Architecture](./mock-register-architecture.png?raw=true) ## Mock Register - Components The Mock Register contains the following components: @@ -234,19 +234,22 @@ The following technologies have been used to build the Mock Register: # Testing -A collection of API requests has been made available in [Postman](https://www.postman.com/) in order to test the Mock Register and view the expected interactions. See the Mock Register [Postman](https://github.com/ConsumerDataRight/mock-register/blob/main/Postman/README.md) documentation for more information. +A collection of API requests has been made available in [Postman](https://www.postman.com/) in order to test the Mock Register and view the expected interactions. See the Mock Register [Postman](./Postman/README.md) documentation for more information. # Frequently Asked Questions -See the [Frequently Asked Questions](https://github.com/ConsumerDataRight/mock-register/blob/main/Help/faq/README.md) page for answers to some common questions and links to help files. +See the [Frequently Asked Questions](./Help/faq/README.md) page for answers to some common questions and links to help files. # Contribute -We encourage contributions from the community. See our [contributing guidelines](https://github.com/ConsumerDataRight/mock-register/blob/main/CONTRIBUTING.md). +We encourage contributions from the community. See our [contributing guidelines](./CONTRIBUTING.md). # Code of Conduct -This project has adopted the **Contributor Covenant**. For more information see the [code of conduct](https://github.com/ConsumerDataRight/mock-register/blob/main/CODE_OF_CONDUCT.md). +This project has adopted the **Contributor Covenant**. For more information see the [code of conduct](./CODE_OF_CONDUCT.md). + +# Security Policy +See our [security policy](./SECURITY.md) for information on security controls, reporting a vulnerability and supported versions. # License -[MIT License](https://github.com/ConsumerDataRight/mock-register/blob/main/LICENSE) +[MIT License](./LICENSE) # Notes The Mock Register is provided as a development tool and is not an exact replica of the production CDR Register. diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000..64bf693 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,39 @@ +# Security Policy +If you have discovered a potential security vulnerability within the [Consumer Data Right GitHub Organisation](https://github.com/ConsumerDataRight) or [Consumer Data Right Sandbox](https://cdrsandbox.gov.au/) +operated by the ACCC, we encourage you to disclose it to us as quickly as possible and in a responsible manner in accordance with our [Responsible disclosure of security vulnerabilities policy](https://www.cdr.gov.au/resources/responsible-disclosure-security-vulnerabilities-policy). + +Visit our [Responsible disclosure of security vulnerabilities policy](https://www.cdr.gov.au/resources/responsible-disclosure-security-vulnerabilities-policy) for: + - A full view of our Responsible disclosure of security vulnerabilities policy + - Your responsibilities if you find a vulnerability + - Steps required for reporting a vulnerability + +## Supported Versions + +| Version | Supported | +| ------- | ------------------ | +| 1.3.x | :white_check_mark: | +| 1.2.x | :x: | +| 1.1.x | :x: | +| 1.0.x | :x: | + + +## Reporting a Vulnerability +Visit our [Responsible disclosure of security vulnerabilities policy](https://www.cdr.gov.au/resources/responsible-disclosure-security-vulnerabilities-policy) for steps required for reporting a vulnerability. + + +## What controls are in place +### SonarCloud +Code repositories in [Consumer Data Right GitHub Organisation](https://github.com/ConsumerDataRight) utilise [SonarCloud](https://docs.sonarcloud.io/). Whenever a code change is made to this repository, GitHub actions are used to scan the code using SonarCloud. +The SonarCloud results are then assessed. High impact issues, that are not false positives, will be remediated. + - [mock-register results](https://sonarcloud.io/project/overview?id=ConsumerDataRight_mock-register) + - [mock-data-holder results](https://sonarcloud.io/project/overview?id=ConsumerDataRight_mock-data-holder) + - [mock-data-holder-energy results](https://sonarcloud.io/project/overview?id=ConsumerDataRight_mock-data-holder-energy) + - [mock-data-recipient results](https://sonarcloud.io/project/overview?id=ConsumerDataRight_mock-data-recipient) + - [authorisation-server results](https://sonarcloud.io/project/overview?id=ConsumerDataRight_authorisation-server) + - [mock-solution-test-automation results](https://sonarcloud.io/project/overview?id=ConsumerDataRight_mock-solution-test-automation) + +### GitHub Security Features +Code repositories in [Consumer Data Right GitHub Organisation](https://github.com/ConsumerDataRight) utilise [GitHub security features](https://docs.github.com/en/code-security/getting-started/github-security-features). + +### Keeping up to date +Code repositories in [Consumer Data Right GitHub Organisation](https://github.com/ConsumerDataRight) are routinely updated with new features and dependency updates. \ No newline at end of file diff --git a/Source/.dockerignore b/Source/.dockerignore index 3729ff0..fec74a0 100644 --- a/Source/.dockerignore +++ b/Source/.dockerignore @@ -22,4 +22,5 @@ **/secrets.dev.yaml **/values.dev.yaml LICENSE -README.md \ No newline at end of file +README.md +_temp/ \ No newline at end of file diff --git a/Source/CDR.Register.API.Gateway.TLS/CDR.Register.API.Gateway.TLS.csproj b/Source/CDR.Register.API.Gateway.TLS/CDR.Register.API.Gateway.TLS.csproj index 6d0836a..a87404d 100644 --- a/Source/CDR.Register.API.Gateway.TLS/CDR.Register.API.Gateway.TLS.csproj +++ b/Source/CDR.Register.API.Gateway.TLS/CDR.Register.API.Gateway.TLS.csproj @@ -3,9 +3,9 @@ net6.0 - 1.3.0 - 1.3.0 - 1.3.0 + 1.3.2 + 1.3.2 + 1.3.2 diff --git a/Source/CDR.Register.API.Gateway.mTLS/CDR.Register.API.Gateway.mTLS.csproj b/Source/CDR.Register.API.Gateway.mTLS/CDR.Register.API.Gateway.mTLS.csproj index 000e016..acde472 100644 --- a/Source/CDR.Register.API.Gateway.mTLS/CDR.Register.API.Gateway.mTLS.csproj +++ b/Source/CDR.Register.API.Gateway.mTLS/CDR.Register.API.Gateway.mTLS.csproj @@ -2,9 +2,9 @@ net6.0 - 1.3.0 - 1.3.0 - 1.3.0 + 1.3.2 + 1.3.2 + 1.3.2 diff --git a/Source/CDR.Register.API.Infrastructure.Tests.UnitTests/CDR.Register.API.Infrastructure.Tests.UnitTests.csproj b/Source/CDR.Register.API.Infrastructure.Tests.UnitTests/CDR.Register.API.Infrastructure.Tests.UnitTests.csproj index eaaa802..7e261d4 100644 --- a/Source/CDR.Register.API.Infrastructure.Tests.UnitTests/CDR.Register.API.Infrastructure.Tests.UnitTests.csproj +++ b/Source/CDR.Register.API.Infrastructure.Tests.UnitTests/CDR.Register.API.Infrastructure.Tests.UnitTests.csproj @@ -3,9 +3,9 @@ net6.0 false - 1.3.0 - 1.3.0 - 1.3.0 + 1.3.2 + 1.3.2 + 1.3.2 diff --git a/Source/CDR.Register.API.Infrastructure/CDR.Register.API.Infrastructure.csproj b/Source/CDR.Register.API.Infrastructure/CDR.Register.API.Infrastructure.csproj index e78fbac..e429331 100644 --- a/Source/CDR.Register.API.Infrastructure/CDR.Register.API.Infrastructure.csproj +++ b/Source/CDR.Register.API.Infrastructure/CDR.Register.API.Infrastructure.csproj @@ -2,9 +2,9 @@ net6.0 - 1.3.0 - 1.3.0 - 1.3.0 + 1.3.2 + 1.3.2 + 1.3.2 diff --git a/Source/CDR.Register.API.Infrastructure/Extensions.cs b/Source/CDR.Register.API.Infrastructure/Extensions.cs index 8f31832..a40f641 100644 --- a/Source/CDR.Register.API.Infrastructure/Extensions.cs +++ b/Source/CDR.Register.API.Infrastructure/Extensions.cs @@ -1,5 +1,4 @@ -using AutoMapper.Configuration; -using CDR.Register.API.Infrastructure.Authorization; +using CDR.Register.API.Infrastructure.Authorization; using CDR.Register.API.Infrastructure.Models; using CDR.Register.Repository.Infrastructure; using Microsoft.AspNetCore.Authentication.JwtBearer; @@ -18,7 +17,6 @@ using Newtonsoft.Json; using System; using System.Collections.Generic; -using System.Configuration; using System.Linq; using System.Net.Http; using System.Security.Authentication; @@ -52,9 +50,9 @@ public static string GetInfosecBaseUrl(this IConfiguration configuration, HttpCo /// /// public static bool ValidateIssuer(this HttpContext context) - { + { if (context.Request != null && context.Request.PathBase.HasValue) - { + { // PathBase : /cts/{id}/register var issuer = context.User.Claims.FirstOrDefault(x => x.Type == "iss")?.Value; if (string.IsNullOrEmpty(issuer) && string.IsNullOrEmpty(context.Request.PathBase)) @@ -65,8 +63,8 @@ public static bool ValidateIssuer(this HttpContext context) // For a stronger match validating dynamic base path with an conformance ID instead of confromanceId only return issuer?.Contains(context.Request.PathBase) ?? false; } - - return false; + + return false; } public static void UseBasePathOrExpression(this IApplicationBuilder app, IConfiguration configuration) @@ -76,8 +74,7 @@ public static void UseBasePathOrExpression(this IApplicationBuilder app, IConfig { app.UsePathBase(basePath); } - - // @"^\/cts\/[a-zA-Z0-9\-]{1,36}\/register\/(.*)$"; + // A dynamic base path can be set by the Mock Register:BasePathExpression app setting. // This allows a regular expression to be set and matched rather than a static base path. var basePathExpression = configuration.GetValue(Constants.ConfigurationKeys.BasePathExpression); @@ -118,9 +115,9 @@ public static IWebHostBuilder UseRegister(this IWebHostBuilder webBuilder, IConf return webBuilder; } - + public static void AddAuthenticationAuthorization(this IServiceCollection services, IConfiguration configuration) - { + { var metadataAddress = configuration.GetValue(Constants.ConfigurationKeys.OidcMetadataAddress); var jwks = Task.Run(() => LoadJwks($"{metadataAddress}/jwks")).Result; // Default 2 mins* @@ -157,7 +154,7 @@ public static void AddAuthenticationAuthorization(this IServiceCollection servic }; }); - + // Authorization services.AddMvcCore().AddAuthorization(options => { @@ -232,11 +229,13 @@ public static string GetHostName(this string url) public static LinksPaginated GetPaginated( this ControllerBase controller, string routeName, + IConfiguration configuration, DateTime? updatedSince, int? currentPage, int totalPages, int? pageSize, - string hostName = null) + string hostName = null, + bool isSecure = false) { var currentUrl = controller.Request.GetDisplayUrl(); var links = new LinksPaginated @@ -244,15 +243,7 @@ public static LinksPaginated GetPaginated( Self = new Uri(currentUrl) }; - if (string.IsNullOrEmpty(hostName)) - { - if (controller.Request.Headers.TryGetValue("X-Forwarded-Host", out StringValues forwardedHosts)) - { - hostName = forwardedHosts.First(); - links.Self = ReplaceUriHost(currentUrl, hostName); - } - } - + links.Self = ReplaceUriHost(currentUrl, controller.GetHostNameAsUri(configuration, hostName, isSecure)); hostName = links.Self.ToString().GetHostName(); if (totalPages > 0) @@ -280,24 +271,40 @@ public static LinksPaginated GetPaginated( return links; } - public static Links GetSelf(this ControllerBase controller, string hostName = null) + public static Links GetSelf(this ControllerBase controller, IConfiguration configuration, HttpContext context, string hostName = null) { var currentUrl = controller.Request.GetDisplayUrl(); var links = new Links { Self = new Uri(currentUrl) }; + links.Self = ReplaceUriHost(currentUrl, controller.GetHostNameAsUri(configuration, hostName)); + return links; + } - if (string.IsNullOrEmpty(hostName)) + public static string GetHostNameAsUri(this ControllerBase controller, IConfiguration configuration, string hostName, bool isSecure = false) + { + var hostNameToUse = isSecure + ? configuration.GetValue(Constants.ConfigurationKeys.SecureHostName) + : configuration.GetValue(Constants.ConfigurationKeys.PublicHostName); + + if (string.IsNullOrEmpty(hostNameToUse)) { if (controller.Request.Headers.TryGetValue("X-Forwarded-Host", out StringValues forwardedHosts)) { - hostName = forwardedHosts.First(); - links.Self = ReplaceUriHost(currentUrl, hostName); + hostNameToUse = forwardedHosts[0]; + } + else + { + hostNameToUse = hostName; } - } - return links; + if (!hostNameToUse.StartsWith("https", StringComparison.OrdinalIgnoreCase)) + { + hostNameToUse = "https://" + hostNameToUse; + } + } + return hostNameToUse; } public static Uri GetPageUri( @@ -346,21 +353,17 @@ public static Uri GetPageUri( private static Uri ReplaceUriHost(string url, string newHost = null) { - var uriBuilder = new UriBuilder(url); + Uri originalUri = new(url); + Uri replaceUri = new(newHost); - // Replace the host with the forwarded host - if (!string.IsNullOrEmpty(newHost)) + // Update the Uri components + UriBuilder modifiedUriBuilder = new(originalUri) { - var segments = newHost.Split(':'); - uriBuilder.Host = segments[0]; - - if (segments.Length > 1) - { - uriBuilder.Port = int.Parse(segments[1]); - } - } + Host = replaceUri.Host, + Port = replaceUri.IsDefaultPort ? -1 : replaceUri.Port, + }; - return uriBuilder.Uri; + return modifiedUriBuilder.Uri; } public static Industry ToIndustry(this string industry) @@ -438,7 +441,7 @@ public static string GetCommonName(this string input) { var commonName = input; - if (commonName.IsDistinguishedName() ) + if (commonName.IsDistinguishedName()) { commonName = commonName.GetCommonNameFromDistinguishedName(); } @@ -466,7 +469,7 @@ public static string GetCommonNameFromDistinguishedName(this string distinguishe { return string.Empty; } - + } } } diff --git a/Source/CDR.Register.API.Logger/CDR.Register.API.Logger.csproj b/Source/CDR.Register.API.Logger/CDR.Register.API.Logger.csproj index 326fff1..2ac6816 100644 --- a/Source/CDR.Register.API.Logger/CDR.Register.API.Logger.csproj +++ b/Source/CDR.Register.API.Logger/CDR.Register.API.Logger.csproj @@ -4,9 +4,9 @@ net6.0 enable enable - 1.3.0 - 1.3.0 - 1.3.0 + 1.3.2 + 1.3.2 + 1.3.2 diff --git a/Source/CDR.Register.Admin.API/Business/Validators/BrandValidator.cs b/Source/CDR.Register.Admin.API/Business/Validators/BrandValidator.cs index 0941d2e..d204f8c 100644 --- a/Source/CDR.Register.Admin.API/Business/Validators/BrandValidator.cs +++ b/Source/CDR.Register.Admin.API/Business/Validators/BrandValidator.cs @@ -19,12 +19,11 @@ public BrandValidator() //Field lengths RuleFor(x => x.BrandName).MaximumLength(200).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(b => $"Value '{b.BrandName}' is not allowed for BrandName"); - RuleFor(x => x.LogoUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(b => $"Value '{b.LogoUri}' is not allowed for LogoUri"); ; + RuleFor(x => x.LogoUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(b => $"Value '{b.LogoUri}' is not allowed for LogoUri"); - //invalid field - RuleFor(x => x.Status).Must(x => Enum.TryParse(x, true, out Repository.Entities.BrandStatusType result)).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(b => $"Value '{b.Status}' is not allowed for Status"); ; - + RuleFor(x => x.Status).Must(x => Enum.TryParse(x, true, out Repository.Entities.BrandStatusType result)).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(b => $"Value '{b.Status}' is not allowed for Status"); + RuleForEach(x => x.SoftwareProducts).SetValidator(new SoftwareProductValidator()); //duplicate check diff --git a/Source/CDR.Register.Admin.API/Business/Validators/LegalEntityValidator.cs b/Source/CDR.Register.Admin.API/Business/Validators/LegalEntityValidator.cs index a7a6e8a..167609a 100644 --- a/Source/CDR.Register.Admin.API/Business/Validators/LegalEntityValidator.cs +++ b/Source/CDR.Register.Admin.API/Business/Validators/LegalEntityValidator.cs @@ -34,18 +34,16 @@ public LegalEntityValidator() //field lengths RuleFor(x => x.LegalEntityName).MaximumLength(200).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState( le => $"Value '{le.LegalEntityName}' is not allowed for LegalEntityName"); - RuleFor(x => x.AccreditationNumber).MaximumLength(100).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.AccreditationNumber}' is not allowed for AccreditationNumber"); ; - RuleFor(x => x.AccreditationLevel).MaximumLength(13).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.AccreditationLevel}' is not allowed for AccreditationLevel"); ; - RuleFor(x => x.LogoUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.LogoUri}' is not allowed for LogoUri"); ; - RuleFor(x => x.RegistrationNumber).MaximumLength(100).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.RegistrationNumber}' is not allowed for RegistrationNumber"); ; - RuleFor(x => x.RegisteredCountry).MaximumLength(100).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.RegisteredCountry}' is not allowed for RegisteredCountry"); ; - RuleFor(x => x.Abn).MaximumLength(11).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.Abn}' is not allowed for Abn"); ; - RuleFor(x => x.Acn).MaximumLength(9).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.Acn}' is not allowed for Acn"); ; - RuleFor(x => x.Arbn).MaximumLength(9).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.Arbn}' is not allowed for Arbn"); ; - RuleFor(x => x.AnzsicDivision).MaximumLength(100).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.AnzsicDivision}' is not allowed for AnzsicDivision"); ; + RuleFor(x => x.AccreditationNumber).MaximumLength(100).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.AccreditationNumber}' is not allowed for AccreditationNumber"); + RuleFor(x => x.AccreditationLevel).MaximumLength(13).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.AccreditationLevel}' is not allowed for AccreditationLevel"); + RuleFor(x => x.LogoUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.LogoUri}' is not allowed for LogoUri"); + RuleFor(x => x.RegistrationNumber).MaximumLength(100).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.RegistrationNumber}' is not allowed for RegistrationNumber"); + RuleFor(x => x.RegisteredCountry).MaximumLength(100).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.RegisteredCountry}' is not allowed for RegisteredCountry"); + RuleFor(x => x.Abn).MaximumLength(11).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.Abn}' is not allowed for Abn"); + RuleFor(x => x.Acn).MaximumLength(9).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.Acn}' is not allowed for Acn"); + RuleFor(x => x.Arbn).MaximumLength(9).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.Arbn}' is not allowed for Arbn"); + RuleFor(x => x.AnzsicDivision).MaximumLength(100).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.AnzsicDivision}' is not allowed for AnzsicDivision"); - - RuleForEach(x => x.DataRecipientBrands).SetValidator(new BrandValidator()); RuleFor(x => x.DataRecipientBrands).Must(HaveUniqueIds).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(GetDuplicateId); diff --git a/Source/CDR.Register.Admin.API/Business/Validators/SoftwareProductValidator.cs b/Source/CDR.Register.Admin.API/Business/Validators/SoftwareProductValidator.cs index f5b2dd2..7a1f885 100644 --- a/Source/CDR.Register.Admin.API/Business/Validators/SoftwareProductValidator.cs +++ b/Source/CDR.Register.Admin.API/Business/Validators/SoftwareProductValidator.cs @@ -20,7 +20,7 @@ public SoftwareProductValidator() RuleFor(x => x.RedirectUris).Must(x => x!= null && x.Length>0).WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); RuleFor(x => x.JwksUri).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); RuleFor(x => x.Status).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.Certificates).Must(x => x!= null && x.Count>0).WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); ; + RuleFor(x => x.Certificates).Must(x => x!= null && x.Count>0).WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); //lengths RuleFor(x => x.SoftwareProductName).MaximumLength(200).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(x => $"Value '{x.SoftwareProductName}' is not allowed for SoftwareProductName"); diff --git a/Source/CDR.Register.Admin.API/Controllers/LoopbackController.cs b/Source/CDR.Register.Admin.API/Controllers/LoopbackController.cs index 9d4b683..e5d4697 100644 --- a/Source/CDR.Register.Admin.API/Controllers/LoopbackController.cs +++ b/Source/CDR.Register.Admin.API/Controllers/LoopbackController.cs @@ -125,8 +125,7 @@ public IActionResult MockDataRecipientClientAssertion() public IActionResult RegisterSelfSignedJwt( [FromQuery] string aud) { - var cert = new X509Certificate2(_config.GetValue("SigningCertificate:Path"), _config.GetValue("SigningCertificate:Password"), X509KeyStorageFlags.Exportable); - var cert64 = Convert.ToBase64String(cert.RawData); + var cert = new X509Certificate2(_config.GetValue("SigningCertificate:Path"), _config.GetValue("SigningCertificate:Password"), X509KeyStorageFlags.Exportable); var signingCredentials = new X509SigningCredentials(cert, SecurityAlgorithms.RsaSsaPssSha256); var descriptor = new SecurityTokenDescriptor diff --git a/Source/CDR.Register.Discovery.API/CDR.Register.Discovery.API.csproj b/Source/CDR.Register.Discovery.API/CDR.Register.Discovery.API.csproj index 141fc1e..9a59659 100644 --- a/Source/CDR.Register.Discovery.API/CDR.Register.Discovery.API.csproj +++ b/Source/CDR.Register.Discovery.API/CDR.Register.Discovery.API.csproj @@ -4,9 +4,9 @@ net6.0 2f05af62-1878-47d5-925d-31c0db13b55c Linux - 1.3.0 - 1.3.0 - 1.3.0 + 1.3.2 + 1.3.2 + 1.3.2 diff --git a/Source/CDR.Register.Discovery.API/Controllers/DiscoveryController.cs b/Source/CDR.Register.Discovery.API/Controllers/DiscoveryController.cs index fca4c9e..c673ee7 100644 --- a/Source/CDR.Register.Discovery.API/Controllers/DiscoveryController.cs +++ b/Source/CDR.Register.Discovery.API/Controllers/DiscoveryController.cs @@ -80,8 +80,8 @@ public async Task GetDataHolderBrandsXV2( } // Set pagination meta data - response.Links = this.GetPaginated(ROUTE_GET_DATA_HOLDER_BRANDS_XV2, - updatedSinceDate, pageNumber, response.Meta.TotalPages.Value, pageSizeNumber, ""); + response.Links = this.GetPaginated(ROUTE_GET_DATA_HOLDER_BRANDS_XV2, _configuration, + updatedSinceDate, pageNumber, response.Meta.TotalPages.Value, pageSizeNumber, "", true); return Ok(response); } @@ -95,7 +95,7 @@ public async Task GetDataHolderBrandsXV2( public async Task GetDataRecipientsXV3(string industry) { var response = await _discoveryService.GetDataRecipientsAsync(industry.ToIndustry()); - response.Links = this.GetSelf(""); + response.Links = this.GetSelf(_configuration, HttpContext, ""); return Ok(response); } diff --git a/Source/CDR.Register.Domain.UnitTests/CDR.Register.Domain.UnitTests.csproj b/Source/CDR.Register.Domain.UnitTests/CDR.Register.Domain.UnitTests.csproj index 226f0c3..69e94eb 100644 --- a/Source/CDR.Register.Domain.UnitTests/CDR.Register.Domain.UnitTests.csproj +++ b/Source/CDR.Register.Domain.UnitTests/CDR.Register.Domain.UnitTests.csproj @@ -3,9 +3,9 @@ net6.0 false - 1.3.0 - 1.3.0 - 1.3.0 + 1.3.2 + 1.3.2 + 1.3.2 diff --git a/Source/CDR.Register.Domain/CDR.Register.Domain.csproj b/Source/CDR.Register.Domain/CDR.Register.Domain.csproj index 12f25a7..e6ee1ce 100644 --- a/Source/CDR.Register.Domain/CDR.Register.Domain.csproj +++ b/Source/CDR.Register.Domain/CDR.Register.Domain.csproj @@ -2,9 +2,9 @@ net6.0 - 1.3.0 - 1.3.0 - 1.3.0 + 1.3.2 + 1.3.2 + 1.3.2 diff --git a/Source/CDR.Register.Domain/Entities/Brand.cs b/Source/CDR.Register.Domain/Entities/Brand.cs index eafd5d1..756e041 100644 --- a/Source/CDR.Register.Domain/Entities/Brand.cs +++ b/Source/CDR.Register.Domain/Entities/Brand.cs @@ -10,6 +10,6 @@ public abstract class Brand public string LogoUri { get; set; } public string BrandStatus { get; set; } public bool IsActive { get; set; } - public DateTime LastUpdated { get => lastUpdated.ToUniversalTime(); set => lastUpdated = value; } + public DateTime LastUpdated { get => DateTime.SpecifyKind(lastUpdated, DateTimeKind.Utc); set => lastUpdated = value; } } } diff --git a/Source/CDR.Register.Domain/Entities/DataHolder.cs b/Source/CDR.Register.Domain/Entities/DataHolder.cs index e4888a7..2aefb97 100644 --- a/Source/CDR.Register.Domain/Entities/DataHolder.cs +++ b/Source/CDR.Register.Domain/Entities/DataHolder.cs @@ -19,7 +19,7 @@ public DateTime? LastUpdated get { return this.Brands != null && this.Brands.Any() - ? this.Brands.OrderByDescending(brand => brand.LastUpdated).First().LastUpdated.ToUniversalTime() + ? DateTime.SpecifyKind(this.Brands.OrderByDescending(brand => brand.LastUpdated).First().LastUpdated, DateTimeKind.Utc) : null; } } diff --git a/Source/CDR.Register.Domain/Entities/DataHolderLegalEntity.cs b/Source/CDR.Register.Domain/Entities/DataHolderLegalEntity.cs index 248f62e..e5c3fcc 100644 --- a/Source/CDR.Register.Domain/Entities/DataHolderLegalEntity.cs +++ b/Source/CDR.Register.Domain/Entities/DataHolderLegalEntity.cs @@ -20,14 +20,14 @@ public class DataHolderLegalEntity public string Status { get; set; } } - public enum DhStatusEnum : int + public enum DhStatusEnum { Active = 1, Removed = 2, Inactive = 6 } - public enum OrganisationTypeEnum : int + public enum OrganisationTypeEnum { Unknown = 0, SoleTrader = 1, diff --git a/Source/CDR.Register.Domain/Entities/DataRecipient.cs b/Source/CDR.Register.Domain/Entities/DataRecipient.cs index f98f7ca..9755bdc 100644 --- a/Source/CDR.Register.Domain/Entities/DataRecipient.cs +++ b/Source/CDR.Register.Domain/Entities/DataRecipient.cs @@ -17,7 +17,7 @@ public DateTime? LastUpdated get { return this.DataRecipientBrands != null && this.DataRecipientBrands.Any() - ? this.DataRecipientBrands.OrderByDescending(brand => brand.LastUpdated).First().LastUpdated + ? DateTime.SpecifyKind(this.DataRecipientBrands.OrderByDescending(brand => brand.LastUpdated).First().LastUpdated, DateTimeKind.Utc) : null; } } diff --git a/Source/CDR.Register.Infosec/CDR.Register.Infosec.csproj b/Source/CDR.Register.Infosec/CDR.Register.Infosec.csproj index 26b1af1..42a009a 100644 --- a/Source/CDR.Register.Infosec/CDR.Register.Infosec.csproj +++ b/Source/CDR.Register.Infosec/CDR.Register.Infosec.csproj @@ -4,9 +4,9 @@ net6.0 enable enable - 1.3.0 - 1.3.0 - 1.3.0 + 1.3.2 + 1.3.2 + 1.3.2 diff --git a/Source/CDR.Register.Infosec/Controllers/TokenController.cs b/Source/CDR.Register.Infosec/Controllers/TokenController.cs index b5b12a2..6f7f9f2 100644 --- a/Source/CDR.Register.Infosec/Controllers/TokenController.cs +++ b/Source/CDR.Register.Infosec/Controllers/TokenController.cs @@ -11,8 +11,7 @@ namespace CDR.Register.Infosec.Controllers public class TokenController : ControllerBase { private readonly ILogger _logger; - private readonly IConfiguration _configuration; - private readonly IClientService _clientService; + private readonly IConfiguration _configuration; private readonly ITokenService _tokenService; public TokenController( @@ -22,8 +21,7 @@ public TokenController( ITokenService tokenService) { _logger = logger; - _configuration = configuration; - _clientService = clientService; + _configuration = configuration; _tokenService = tokenService; } diff --git a/Source/CDR.Register.IntegrationTests/API/Discovery/US27560_GetDataRecipients_MultiIndustry_Tests.cs b/Source/CDR.Register.IntegrationTests/API/Discovery/US27560_GetDataRecipients_MultiIndustry_Tests.cs index 0f6d5c5..59bd715 100644 --- a/Source/CDR.Register.IntegrationTests/API/Discovery/US27560_GetDataRecipients_MultiIndustry_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/API/Discovery/US27560_GetDataRecipients_MultiIndustry_Tests.cs @@ -132,7 +132,7 @@ public async Task AC01_CTS_URL_Get_WithXV_ShouldRespondWith_200OK_DataRecipients { // Arrange var url = $"{GenerateDynamicCtsUrl(DISCOVERY_DOWNSTREAM_BASE_URL)}/cdr-register/v1/{industry}/data-recipients"; - var expectedDataRecipients = GetExpectedDataRecipients(url); + var expectedDataRecipients = GetExpectedDataRecipients(ReplacePublicHostName(url, DISCOVERY_DOWNSTREAM_BASE_URL)); // Act var response = await new Infrastructure.API diff --git a/Source/CDR.Register.IntegrationTests/API/Discovery/US27562_GetDataHolderBrands_MultiIndustry_Tests.cs b/Source/CDR.Register.IntegrationTests/API/Discovery/US27562_GetDataHolderBrands_MultiIndustry_Tests.cs index 5c67494..866df1f 100644 --- a/Source/CDR.Register.IntegrationTests/API/Discovery/US27562_GetDataHolderBrands_MultiIndustry_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/API/Discovery/US27562_GetDataHolderBrands_MultiIndustry_Tests.cs @@ -265,8 +265,9 @@ public async Task AC01_CTS_URL_Get_WithNoQueryString_ShouldRespondWith_200OK_Fir string conformanceId = Guid.NewGuid().ToString(); string tokenEndpoint = $"{GenerateDynamicCtsUrl(IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp/connect/token"; var getDataholderBrandsUrl = $"{GenerateDynamicCtsUrl(DISCOVERY_DOWNSTREAM_BASE_URL, conformanceId)}/cdr-register/v1/{industry}/data-holders/brands"; - - var expectedResponse = GetExpectedResponse(getDataholderBrandsUrl, getDataholderBrandsUrl, null, null, null, industry); + string expectedDataholderBrandsUrl = ReplaceSecureHostName(getDataholderBrandsUrl, DISCOVERY_DOWNSTREAM_BASE_URL); + + var expectedResponse = GetExpectedResponse(expectedDataholderBrandsUrl, expectedDataholderBrandsUrl, null, null, null, industry); // Arrange - Get access token var accessToken = await new AccessToken @@ -274,7 +275,7 @@ public async Task AC01_CTS_URL_Get_WithNoQueryString_ShouldRespondWith_200OK_Fir CertificateFilename = CERTIFICATE_FILENAME, CertificatePassword = CERTIFICATE_PASSWORD, Scope = "cdr-register:read", - Audience = tokenEndpoint, + Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL), TokenEndPoint = tokenEndpoint, CertificateThumbprint = DEFAULT_CERTIFICATE_THUMBPRINT, CertificateCn = DEFAULT_CERTIFICATE_COMMON_NAME diff --git a/Source/CDR.Register.IntegrationTests/API/SSA/US27564_GetSoftwareStatementAssertion_MultiIndustry_Tests.cs b/Source/CDR.Register.IntegrationTests/API/SSA/US27564_GetSoftwareStatementAssertion_MultiIndustry_Tests.cs index 430cf0f..8305b87 100644 --- a/Source/CDR.Register.IntegrationTests/API/SSA/US27564_GetSoftwareStatementAssertion_MultiIndustry_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/API/SSA/US27564_GetSoftwareStatementAssertion_MultiIndustry_Tests.cs @@ -473,7 +473,7 @@ public async Task AC01_CTS_URL_GetSSA_WithXV1_ShouldRespondWith_200OK_V3ofSSA(in CertificateFilename = CERTIFICATE_FILENAME, CertificatePassword = CERTIFICATE_PASSWORD, Scope = "cdr-register:read", - Audience = tokenEndpoint, + Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL), TokenEndPoint = tokenEndpoint, CertificateThumbprint = DEFAULT_CERTIFICATE_THUMBPRINT, CertificateCn = DEFAULT_CERTIFICATE_COMMON_NAME diff --git a/Source/CDR.Register.IntegrationTests/API/Status/US27556_GetDataRecipientStatus_MultiIndustry_Tests.cs b/Source/CDR.Register.IntegrationTests/API/Status/US27556_GetDataRecipientStatus_MultiIndustry_Tests.cs index 316d84c..9629060 100644 --- a/Source/CDR.Register.IntegrationTests/API/Status/US27556_GetDataRecipientStatus_MultiIndustry_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/API/Status/US27556_GetDataRecipientStatus_MultiIndustry_Tests.cs @@ -5,6 +5,7 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Newtonsoft.Json; +using System; using System.Linq; using System.Net; using System.Net.Http; @@ -88,7 +89,19 @@ public async Task AC01_AC02_CTS_URL_Get_ShouldRespondWith_200OK_DataRecipientsSt { // Arrange var url = $"{GenerateDynamicCtsUrl(STATUS_DOWNSTREAM_BASE_URL)}/cdr-register/v1/all/data-recipients/status"; - var expectedDataRecipientStatus = GetExpectedDataRecipientsStatus(url); + + string publicHostName = Configuration["PublicHostName"] ?? ""; + string expectedUrl = ReplacePublicHostName(url, STATUS_DOWNSTREAM_BASE_URL); + + if (String.IsNullOrEmpty(publicHostName)) + { + expectedUrl = url; + } + else + { + expectedUrl = url.Replace(STATUS_DOWNSTREAM_BASE_URL, publicHostName); + } + var expectedDataRecipientStatus = GetExpectedDataRecipientsStatus(expectedUrl); // Act var response = await new Infrastructure.API diff --git a/Source/CDR.Register.IntegrationTests/API/Status/US27558_GetSoftwareProductStatus_MultiIndustry_Tests.cs b/Source/CDR.Register.IntegrationTests/API/Status/US27558_GetSoftwareProductStatus_MultiIndustry_Tests.cs index 6991376..680baad 100644 --- a/Source/CDR.Register.IntegrationTests/API/Status/US27558_GetSoftwareProductStatus_MultiIndustry_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/API/Status/US27558_GetSoftwareProductStatus_MultiIndustry_Tests.cs @@ -85,7 +85,7 @@ public async Task AC01_CTS_URL_Get_WithXV_ShouldRespondWith_200OK_SoftwareProduc { // Arrange var url = $"{GenerateDynamicCtsUrl(STATUS_DOWNSTREAM_BASE_URL)}/cdr-register/v1/all/data-recipients/brands/software-products/status"; - var expectedSoftwareProductsStatus = GetExpectedSoftwareProductStatus(url); + var expectedSoftwareProductsStatus = GetExpectedSoftwareProductStatus(ReplacePublicHostName(url, STATUS_DOWNSTREAM_BASE_URL)); // Act var response = await new Infrastructure.API diff --git a/Source/CDR.Register.IntegrationTests/BaseTest.cs b/Source/CDR.Register.IntegrationTests/BaseTest.cs index debeaa0..e5a3b3a 100644 --- a/Source/CDR.Register.IntegrationTests/BaseTest.cs +++ b/Source/CDR.Register.IntegrationTests/BaseTest.cs @@ -528,5 +528,34 @@ public static string GenerateDynamicCtsUrl(string baseUrl, string? conformanceId return $"{baseUrl}/cts/{conformanceId}/register"; } } + + protected static string ReplaceSecureHostName(string url, string hostNamedToReplace) + { + string secureHostname = Configuration["SecureHostName"] ?? ""; + + if (String.IsNullOrEmpty(secureHostname)) + { + return url; + } + else + { + return url.Replace(hostNamedToReplace, secureHostname); + } + } + + protected static string ReplacePublicHostName(string url, string hostNamedToReplace) + { + string publicHostname = Configuration["PublicHostName"] ?? ""; + + if (String.IsNullOrEmpty(publicHostname)) + { + return url; + } + else + { + return url.Replace(hostNamedToReplace, publicHostname); + } + } + } } \ No newline at end of file diff --git a/Source/CDR.Register.IntegrationTests/CDR.Register.IntegrationTests.csproj b/Source/CDR.Register.IntegrationTests/CDR.Register.IntegrationTests.csproj index 95804f3..bed1481 100644 --- a/Source/CDR.Register.IntegrationTests/CDR.Register.IntegrationTests.csproj +++ b/Source/CDR.Register.IntegrationTests/CDR.Register.IntegrationTests.csproj @@ -3,9 +3,9 @@ net6.0 false - 1.3.0 - 1.3.0 - 1.3.0 + 1.3.2 + 1.3.2 + 1.3.2 diff --git a/Source/CDR.Register.IntegrationTests/IdentityServer/US12665_IdentityServer_OIDC_Tests.cs b/Source/CDR.Register.IntegrationTests/IdentityServer/US12665_IdentityServer_OIDC_Tests.cs index 8eb5493..0e814e4 100644 --- a/Source/CDR.Register.IntegrationTests/IdentityServer/US12665_IdentityServer_OIDC_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/IdentityServer/US12665_IdentityServer_OIDC_Tests.cs @@ -47,11 +47,11 @@ public async Task AC02_Get_ShouldRespondWith_200OK_OIDC() }.SendAsync(); // Assert - await AssertOidcConfiguration(response, ctsBaseUrl, ctsBaseUrl); + await AssertOidcConfiguration(response, ReplacePublicHostName(ctsBaseUrl, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL), ReplaceSecureHostName(ctsBaseUrl, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL)); } - private async Task AssertOidcConfiguration(HttpResponseMessage response, string baseUrl, string tokenBaseUrl) + private async Task AssertOidcConfiguration(HttpResponseMessage response, string publicBaseUrl, string secureBaseUrl) { using (new AssertionScope()) { @@ -64,9 +64,9 @@ private async Task AssertOidcConfiguration(HttpResponseMessage response, string // Assert - Check json string expected = $@" {{ - ""issuer"": ""{baseUrl}/idp"", - ""jwks_uri"": ""{baseUrl}/idp/.well-known/openid-configuration/jwks"", - ""token_endpoint"": ""{tokenBaseUrl}/idp/connect/token"", + ""issuer"": ""{publicBaseUrl}/idp"", + ""jwks_uri"": ""{publicBaseUrl}/idp/.well-known/openid-configuration/jwks"", + ""token_endpoint"": ""{secureBaseUrl}/idp/connect/token"", ""claims_supported"": [""sub""], ""id_token_signing_alg_values_supported"": [""PS256""], ""subject_types_supported"": [""public""], diff --git a/Source/CDR.Register.IntegrationTests/Miscellaneous/US50483_DynamicUrl_Tests.cs b/Source/CDR.Register.IntegrationTests/Miscellaneous/US50483_DynamicUrl_Tests.cs index 1614023..67ed638 100644 --- a/Source/CDR.Register.IntegrationTests/Miscellaneous/US50483_DynamicUrl_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/Miscellaneous/US50483_DynamicUrl_Tests.cs @@ -48,7 +48,7 @@ public async Task AC01_Get_Data_Holder_Brands_Invalid_Certificate_Header_For_Acc CertificateFilename = CERTIFICATE_FILENAME, CertificatePassword = CERTIFICATE_PASSWORD, Scope = "cdr-register:read", - Audience = tokenEndpoint, + Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL), TokenEndPoint = tokenEndpoint, CertificateThumbprint = DEFAULT_CERTIFICATE_THUMBPRINT, CertificateCn = DEFAULT_CERTIFICATE_COMMON_NAME @@ -94,7 +94,7 @@ public async Task AC02_Get_Access_Token_Invalid_Certificate_Header_For_Access_To CertificateFilename = CERTIFICATE_FILENAME, CertificatePassword = CERTIFICATE_PASSWORD, Scope = "cdr-register:read", - Audience = tokenEndpoint, + Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL), TokenEndPoint = tokenEndpoint, CertificateThumbprint = certificateThumbPrint, CertificateCn = certificateCommonName @@ -126,7 +126,7 @@ public async Task AC03_Get_Access_Token_Invalid_Url_Regular_Expression_For_Acces CertificateFilename = CERTIFICATE_FILENAME, CertificatePassword = CERTIFICATE_PASSWORD, Scope = "cdr-register:read", - Audience = tokenEndpoint, + Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL), TokenEndPoint = tokenEndpoint, CertificateThumbprint = DEFAULT_CERTIFICATE_THUMBPRINT, CertificateCn = DEFAULT_CERTIFICATE_COMMON_NAME @@ -155,7 +155,7 @@ public async Task AC04_Get_Data_Holder_Brands_Invalid_Access_Token_Issuer() CertificateFilename = CERTIFICATE_FILENAME, CertificatePassword = CERTIFICATE_PASSWORD, Scope = "cdr-register:read", - Audience = tokenEndpoint, + Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL), TokenEndPoint = tokenEndpoint, CertificateThumbprint = DEFAULT_CERTIFICATE_THUMBPRINT, CertificateCn = DEFAULT_CERTIFICATE_COMMON_NAME @@ -224,7 +224,7 @@ public async Task AC05_Get_Access_Token_With_Valid_Certificate_Header(string tes CertificateFilename = CERTIFICATE_FILENAME, CertificatePassword = CERTIFICATE_PASSWORD, Scope = "cdr-register:read", - Audience = tokenEndpoint, + Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL), TokenEndPoint = tokenEndpoint, CertificateThumbprint = certificateThumbPrint, CertificateCn = certificateCommonName @@ -279,5 +279,7 @@ private static void SetCertificateCommonName(string softwareProductId, string co }; } + + } } diff --git a/Source/CDR.Register.Repository/CDR.Register.Repository.csproj b/Source/CDR.Register.Repository/CDR.Register.Repository.csproj index 1d93728..e61ef1d 100644 --- a/Source/CDR.Register.Repository/CDR.Register.Repository.csproj +++ b/Source/CDR.Register.Repository/CDR.Register.Repository.csproj @@ -2,9 +2,9 @@ net6.0 - 1.3.0 - 1.3.0 - 1.3.0 + 1.3.2 + 1.3.2 + 1.3.2 diff --git a/Source/CDR.Register.SSA.API.UnitTests/CDR.Register.SSA.API.UnitTests.csproj b/Source/CDR.Register.SSA.API.UnitTests/CDR.Register.SSA.API.UnitTests.csproj index f4006d7..450376d 100644 --- a/Source/CDR.Register.SSA.API.UnitTests/CDR.Register.SSA.API.UnitTests.csproj +++ b/Source/CDR.Register.SSA.API.UnitTests/CDR.Register.SSA.API.UnitTests.csproj @@ -3,9 +3,9 @@ net6.0 false - 1.3.0 - 1.3.0 - 1.3.0 + 1.3.2 + 1.3.2 + 1.3.2 diff --git a/Source/CDR.Register.SSA.API/CDR.Register.SSA.API.csproj b/Source/CDR.Register.SSA.API/CDR.Register.SSA.API.csproj index d4dd80a..e9f3d97 100644 --- a/Source/CDR.Register.SSA.API/CDR.Register.SSA.API.csproj +++ b/Source/CDR.Register.SSA.API/CDR.Register.SSA.API.csproj @@ -4,9 +4,9 @@ net6.0 31925f57-bd42-4e7b-bf0a-9080de458279 Linux - 1.3.0 - 1.3.0 - 1.3.0 + 1.3.2 + 1.3.2 + 1.3.2 diff --git a/Source/CDR.Register.Status.API/CDR.Register.Status.API.csproj b/Source/CDR.Register.Status.API/CDR.Register.Status.API.csproj index e1b4fb7..e66fac1 100644 --- a/Source/CDR.Register.Status.API/CDR.Register.Status.API.csproj +++ b/Source/CDR.Register.Status.API/CDR.Register.Status.API.csproj @@ -4,9 +4,9 @@ net6.0 2f05af62-1878-47d5-925d-31c0db13b55c Linux - 1.3.0 - 1.3.0 - 1.3.0 + 1.3.2 + 1.3.2 + 1.3.2 diff --git a/Source/CDR.Register.Status.API/Controllers/StatusController.cs b/Source/CDR.Register.Status.API/Controllers/StatusController.cs index 54defb2..c281bca 100644 --- a/Source/CDR.Register.Status.API/Controllers/StatusController.cs +++ b/Source/CDR.Register.Status.API/Controllers/StatusController.cs @@ -33,7 +33,7 @@ public StatusController( public async Task GetDataRecipientsStatusXV2(string industry) { var response = await _statusService.GetDataRecipientStatusesAsync(industry.ToIndustry()); - response.Links = this.GetSelf(""); + response.Links = this.GetSelf(_configuration, HttpContext, ""); return Ok(response); } @@ -47,7 +47,7 @@ public async Task GetDataRecipientsStatusXV2(string ind public async Task GetSoftwareProductStatusXV2(string industry) { var response = await _statusService.GetSoftwareProductStatusesAsync(industry.ToIndustry()); - response.Links = this.GetSelf(""); + response.Links = this.GetSelf(_configuration, HttpContext, ""); return Ok(response); } @@ -61,7 +61,7 @@ public async Task GetSoftwareProductStatusXV2(string in public async Task GetDataHolderStatusXV1(string industry) { var response = await _statusService.GetDataHolderStatusesAsyncXV1(industry.ToIndustry()); - response.Links = this.GetSelf(""); + response.Links = this.GetSelf(_configuration, HttpContext, ""); return Ok(response); } diff --git a/Source/docker-compose.IntegrationTests.yml b/Source/docker-compose.IntegrationTests.yml index 8062e20..17fd006 100644 --- a/Source/docker-compose.IntegrationTests.yml +++ b/Source/docker-compose.IntegrationTests.yml @@ -52,6 +52,8 @@ services: - CtsSettings__AzureAd__UnauthorisedClientId - CtsSettings__AzureAd__UnauthorisedClientSecret - IdentityProvider_Downstream_BaseUrl + - PublicHostName + - SecureHostName volumes: - "./_temp/mock-register-integration-tests/testresults:/testresults" depends_on: From e9ab40c5dfdd06d7d5b46483a3c455ce2546dede Mon Sep 17 00:00:00 2001 From: CDR-AmirM <88067035+CDR-AmirM@users.noreply.github.com> Date: Wed, 29 Nov 2023 08:58:40 +1100 Subject: [PATCH 2/5] Enabling CodeQL action (#94) --- .github/workflows/codeql-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 5870a61..eb3bd9e 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -72,7 +72,7 @@ jobs: - name: Autobuild uses: github/codeql-action/autobuild@v2 - # ℹ️ Command-line programs to run using the OS shell. + # ℹ️ Command-line programs to run using the OS shell # 📚 https://git.io/JvXDl # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines From 7457daf243d36ebb024f84f94835f811e81d18d3 Mon Sep 17 00:00:00 2001 From: CDR-AmirM <88067035+CDR-AmirM@users.noreply.github.com> Date: Wed, 29 Nov 2023 11:43:23 +1100 Subject: [PATCH 3/5] Fixed URLs used for Readme images to display correctly in Docker Hub (#95) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8ff7dcf..c4215c0 100644 --- a/README.md +++ b/README.md @@ -188,7 +188,7 @@ To get help on launching and debugging the solutions as containers and switching ## Mock Register - Architecture The following diagram outlines the high level architecture of the Mock Register: -[Mock Register - Architecture](./mock-register-architecture.png?raw=true) +![Mock Register - Architecture](./mock-register-architecture.png?raw=true) ## Mock Register - Components The Mock Register contains the following components: From a9d37c07ea42c49cdff854ff5a6c3fc8ca5d2572 Mon Sep 17 00:00:00 2001 From: CDR-FarooqK <110141673+CDR-FarooqK@users.noreply.github.com> Date: Thu, 15 Aug 2024 12:36:18 +1000 Subject: [PATCH 4/5] Resolve conflict for syncing main to develop (#101) Co-authored-by: Farooq Kotwal --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c4215c0..8ff7dcf 100644 --- a/README.md +++ b/README.md @@ -188,7 +188,7 @@ To get help on launching and debugging the solutions as containers and switching ## Mock Register - Architecture The following diagram outlines the high level architecture of the Mock Register: -![Mock Register - Architecture](./mock-register-architecture.png?raw=true) +[Mock Register - Architecture](./mock-register-architecture.png?raw=true) ## Mock Register - Components The Mock Register contains the following components: From 0743389ea7ff881c42c155e323f189fd63d74e8e Mon Sep 17 00:00:00 2001 From: CDR-FarooqK <110141673+CDR-FarooqK@users.noreply.github.com> Date: Fri, 16 Aug 2024 09:40:07 +1000 Subject: [PATCH 5/5] v2.1.0 release (#102) Co-authored-by: CDR Open Source Co-authored-by: Farooq Kotwal --- .azuredevops/pipelines/build-v2.yml | 133 +- .github/workflows/codeql-analysis.yml | 2 +- .github/workflows/docker.yml | 14 +- .github/workflows/dotnet.yml | 10 +- CHANGELOG.md | 29 + Help/container/HELP.md | 2 +- Help/faq/HowToUpdateRegisterHostname.md | 8 +- Help/faq/README.md | 4 +- Help/notebooks/HELP.md | 42 + .../images/get-data-recipients-example.png | Bin 0 -> 119371 bytes Help/notebooks/images/restart.png | Bin 0 -> 18413 bytes Help/notebooks/images/run-all-cells.png | Bin 0 -> 22758 bytes .../images/setup-environment-config.png | Bin 0 -> 121324 bytes Help/notebooks/mock-register.ipynb | 747 ++++ Help/notebooks/payloads/metadataPayload.json | 1971 +++++++++++ Help/testing/HELP.md | 137 + ...er-Compose-Mock-Register-Running-Tests.png | Bin 0 -> 66224 bytes .../Docker-Compose-Mock-Register-With-Sql.png | Bin 0 -> 51357 bytes .../MS-Visual-Studio-Test-Explorer-Debug.png | Bin 0 -> 68286 bytes ...udio-Test-Explorer-Execution-Completed.png | Bin 0 -> 477070 bytes .../MS-Visual-Studio-Test-Explorer-Run.png | Bin 0 -> 116691 bytes .../images/MS-Visual-Studio-Test-Explorer.png | Bin 0 -> 57294 bytes .../MS-Visual-Studio-View-Test-Results.png | Bin 0 -> 185829 bytes Postman/README.md | 40 - Postman/mock-register.postman_collection.json | 1126 ------ Postman/postman-client-certificate-step1.png | Bin 9284 -> 0 bytes Postman/postman-client-certificate-step2.png | Bin 25486 -> 0 bytes Postman/postman-client-certificate-step3.png | Bin 23711 -> 0 bytes ...postman-mock-register-collection-step3.png | Bin 10444 -> 0 bytes ...postman-mock-register-collection-step5.png | Bin 18027 -> 0 bytes ...postman-mock-register-collection-step6.png | Bin 15612 -> 0 bytes ...postman-mock-register-collection-step7.png | Bin 45897 -> 0 bytes README.md | 19 +- SECURITY.md | 7 +- .../CDR.Register.API.Gateway.TLS.csproj | 68 +- .../CDR.Register.API.Gateway.TLS/Program.cs | 4 +- .../CDR.Register.API.Gateway.TLS/Startup.cs | 3 +- .../appsettings.Release.json | 6 +- .../CDR.Register.API.Gateway.mTLS.csproj | 94 +- .../CDR.Register.API.Gateway.mTLS/Program.cs | 4 +- .../CDR.Register.API.Gateway.mTLS/Startup.cs | 6 +- .../appsettings.Release.json | 4 +- ....API.Infrastructure.Tests.UnitTests.csproj | 27 +- .../Certificates/CertificateValidatorTests.cs | 2 + ...ectorTests.cs => CdrVersionReaderTests.cs} | 195 +- .../Authorization/AuthorisationPolicies.cs | 43 + .../AuthorisationPolicyAttribute.cs | 23 + .../DataRecipientSoftwareProductIdHandler.cs | 8 +- .../Authorization/MTLSHandler.cs | 12 +- .../Authorization/PolicyAuthorizeAttribute.cs | 13 +- .../RegisterAuthorisationPolicy.cs | 12 + .../Authorization/RegisterForbidResult.cs | 1 + .../RegisterUnauthorizedResult.cs | 1 + .../Authorization/ScopeHandler.cs | 6 +- .../Authorization/ScopeRequirement.cs | 9 +- .../CDR.Register.API.Infrastructure.csproj | 60 +- .../Certificates/CertificateValidator.cs | 17 +- .../Configuration/ConfigureSwaggerOptions.cs | 35 + .../ConfigureUnversionedSwaggerOptions.cs | 31 + .../Constants.cs | 24 +- .../Extensions.cs | 189 +- .../Extensions/AttributeExtensions.cs | 55 + .../CdrSwaggerMiddlewareExtensions.cs | 54 + .../Extensions/HttpClientHandlerExtensions.cs | 37 + .../Filters/CheckDate.cs | 6 +- .../Filters/CheckIndustryAttribute.cs | 10 +- .../Filters/CheckPage.cs | 4 +- .../Filters/CheckPageSize.cs | 8 +- .../Filters/ETagAttribute.cs | 7 +- .../Filters/LogActionEntryAttribute.cs | 6 +- .../Middleware/ApiExceptionHandler.cs | 9 +- .../Middleware/ModelStateErrorMiddleware.cs | 42 +- .../Models/AuthorisationPolicy.cs | 10 - .../Models/CdrApiEndpointVersionOptions.cs | 57 + .../Models/CdrApiOptions.cs | 45 + .../Models/CdrSwaggerOptions.cs | 11 + .../Models/ErrorResponseVersion.cs | 30 - .../Models/JsonWebKey.cs | 22 +- .../Models/JsonWebKeySet.cs | 2 +- .../Models/Links.cs | 2 +- .../Models/LinksPaginated.cs | 10 +- .../Models/Meta.cs | 6 - .../Models/NotificationMessage.cs | 24 - .../Models/ResponseErrorList.cs | 151 - .../DataRecipientStatusCheckService.cs | 2 +- .../IDataRecipientStatusCheckService.cs | 2 +- .../AuthorizationOperationFilter.cs | 61 + .../SwaggerFilters/CustomDocumentFilter.cs | 41 + .../SwaggerFilters/CustomParameterFilter.cs | 21 + .../PropertyAlphabeticalOrderFilter.cs | 18 + .../SetupApiVersionParamsOperationFilter.cs | 33 + .../Versioning/ApiVersionErrorResponse.cs | 50 + .../Versioning/ApiVersionSelector.cs | 130 - .../Versioning/CdrVersionReader.cs | 95 + .../Versioning/InvalidVersionException.cs | 14 +- .../MissingRequiredHeaderException.cs | 22 +- .../Versioning/UnsupportedVersionException.cs | 13 +- .../CDR.Register.API.Logger.csproj | 24 +- .../RequestResponseLogger.cs | 4 +- .../RequestResponseLoggingMiddleware.cs | 4 +- .../Business/AdminMappingProfile.cs | 7 +- .../Business/Model/Brand.cs | 8 +- .../Business/Model/DataHolderBrandModel.cs | 23 +- .../Business/Model/ErrorResponseVersion.cs | 85 - .../Business/Model/LegalEntity.cs | 9 +- .../Business/Validators/BrandValidator.cs | 20 +- .../DataHolderAuthenticationValidator.cs | 10 +- .../Validators/DataHolderBrandValidator.cs | 27 +- .../Validators/DataHolderEndpointValidator.cs | 25 +- .../DataHolderLegalEntityValidator.cs | 30 +- .../Validators/LegalEntityValidator.cs | 51 +- .../SoftwareProductCertificateValidator.cs | 10 +- .../Validators/SoftwareProductValidator.cs | 52 +- .../CDR.Register.Admin.API.csproj | 127 +- ...ticipantTooling.MockRegister.API.Admin.xml | 34 + .../Controllers/AdminController.cs | 33 +- .../Controllers/LoopbackController.cs | 4 +- .../Data/seed-data.Container.json | 2922 ++++++++-------- .../Data/seed-data.Development.json | 3006 ++++++++--------- .../Data/seed-data.Release.json | 2922 ++++++++-------- .../ErrorHandlingExtensions.cs} | 22 +- .../Extensions/ServiceCollectionExtensions.cs | 65 + Source/CDR.Register.Admin.API/Program.cs | 3 - Source/CDR.Register.Admin.API/Startup.cs | 147 +- .../appsettings.Release.json | 4 +- .../CDR.Register.Admin.API/appsettings.json | 3 +- .../ResponseRegisterDataRecipientList.cs | 1 + .../CDR.Register.Discovery.API.csproj | 106 +- ...pantTooling.MockRegister.API.Discovery.xml | 14 + .../Controllers/DiscoveryController.cs | 11 +- .../CDR.Register.Discovery.API/Extensions.cs | 52 - .../Extensions/ServiceCollectionExtensions.cs | 27 + Source/CDR.Register.Discovery.API/Program.cs | 9 +- Source/CDR.Register.Discovery.API/Startup.cs | 36 +- .../appsettings.Development.json | 6 +- .../appsettings.Release.json | 6 +- .../appsettings.json | 4 +- .../CDR.Register.Domain.UnitTests.csproj | 22 +- .../CDR.Register.Domain.csproj | 19 +- Source/CDR.Register.Domain/Constants.cs | 87 + .../Entities/DataHolder.cs | 4 +- .../Entities/DataHolderAuthentication.cs | 2 +- .../Entities/DataHolderLegalEntity.cs | 4 +- .../Extensions/MvcBuilderExtensions.cs | 25 + .../Extensions/StringExtensions.cs | 32 + .../Models/CdrJsonSerializerSettings.cs | 19 + .../Models/Error.cs | 24 +- Source/CDR.Register.Domain/Models/Meta.cs | 7 + .../CDR.Register.Domain/Models/MetaError.cs | 12 + .../Models/ResponseErrorList.cs | 163 + .../ValueObjects/BusinessRuleError.cs | 17 +- .../CDR.Register.Infosec.csproj | 86 +- Source/CDR.Register.Infosec/Constants.cs | 1 - ...cipantTooling.MockRegister.API.Infosec.xml | 16 + .../Controllers/DiscoveryController.cs | 25 +- .../Controllers/TokenController.cs | 153 +- .../Extensions/ServiceCollectionExtensions.cs | 29 + .../Models/AccessTokenResponse.cs | 2 +- .../Models/ClientAssertionRequest.cs | 4 +- .../Models/DiscoveryDocument.cs | 3 + .../Models/ErrorResponse.cs | 2 +- .../Models/ResponseBase.cs | 2 +- Source/CDR.Register.Infosec/Program.cs | 4 +- .../Services/ClientService.cs | 6 +- .../Services/IClientService.cs | 2 +- .../Services/TokenService.cs | 90 +- Source/CDR.Register.Infosec/Startup.cs | 27 +- .../appsettings.Release.json | 6 +- Source/CDR.Register.Infosec/appsettings.json | 4 +- ...0_GetDataRecipients_MultiIndustry_Tests.cs | 27 +- ...GetDataHolderBrands_MultiIndustry_Tests.cs | 43 +- ...eStatementAssertion_MultiIndustry_Tests.cs | 14 +- ...DataRecipientStatus_MultiIndustry_Tests.cs | 8 +- ...ftwareProductStatus_MultiIndustry_Tests.cs | 8 +- .../API/Update/ExpectedErrors.cs | 26 +- .../API/Update/US50480_UpdateDataHolders.cs | 47 +- .../Update/US50480_UpdateDataRecipients.cs | 106 +- .../CDR.Register.IntegrationTests/BaseTest.cs | 117 +- .../CDR.Register.IntegrationTests.csproj | 176 +- .../ConnectionStringCheck.cs | 4 +- .../Gateway/US12841_Gateway_MTLS_Tests.cs | 13 +- .../US12665_IdentityServer_OIDC_Tests.cs | 11 +- .../US14045_IdentityServer_Token_Tests.cs | 269 +- .../Infrastructure/API.cs | 3 +- .../Infrastructure/AccessToken.cs | 2 +- .../US12677_RegisterEnrolment_Tests.cs | 44 +- .../Miscellaneous/US50483_DynamicUrl_Tests.cs | 65 +- .../US29068_TemporalTableTests.cs | 6 +- .../appsettings.Development.json | 2 +- .../appsettings.Release.json | 2 +- .../appsettings.json | 2 +- .../CDR.Register.Repository.csproj | 31 +- .../IRegisterDiscoveryRepository.cs | 4 +- .../IRegisterStatusRepository .cs | 6 +- .../Infrastructure/Extensions.cs | 42 +- .../Infrastructure/MappingProfile.cs | 3 +- .../Infrastructure/ScopeConstants.cs | 1 - .../Migrations/20211005022250_Init.cs | 2 + .../Migrations/20211223050501_V2.cs | 2 + .../Migrations/20220817233556_V3.cs | 1 + .../Migrations/20220915001454_V4.cs | 1 + .../Migrations/20230504063906_V6.cs | 1 + .../RegisterAdminRepository.cs | 32 +- .../RegisterDiscoveryRepository.cs | 10 +- .../RegisterStatusRepository.cs | 8 +- .../CDR.Register.SSA.API.UnitTests.csproj | 39 +- .../Certificates/jwks.pfx | Bin 0 -> 2709 bytes .../mock-data-recipient-invalid.pfx | Bin 0 -> 3043 bytes .../Certificates/mock-data-recipient.pfx | Bin 0 -> 2845 bytes .../Certificates/readme.md | 9 + .../HttpClientHandlerExtensionsTests.cs | 135 + .../TokenizerServiceTests.cs | 24 +- .../Business/CertificateService.cs | 4 +- .../Business/Models/SSAValidationException.cs | 7 +- .../Business/SSAService.cs | 4 +- .../Business/SerializationExtensions.cs | 11 +- .../CDR.Register.SSA.API.csproj | 53 +- ...articipantTooling.MockRegister.API.SSA.xml | 144 + .../Controllers/SSAController.cs | 10 +- .../ServiceCollectionExtensions.cs} | 30 +- Source/CDR.Register.SSA.API/Program.cs | 10 +- Source/CDR.Register.SSA.API/Startup.cs | 42 +- .../appsettings.Release.json | 6 +- Source/CDR.Register.SSA.API/appsettings.json | 4 +- .../ResponseRegisterDataHolderStatusList.cs | 1 + ...ResponseRegisterDataRecipientStatusList.cs | 1 + ...sponseRegisterSoftwareProductStatusList.cs | 1 + .../CDR.Register.Status.API.csproj | 112 +- ...icipantTooling.MockRegister.API.Status.xml | 8 + Source/CDR.Register.Status.API/Extensions.cs | 46 - .../Extensions/ServiceCollectionExtensions.cs | 23 + Source/CDR.Register.Status.API/Program.cs | 8 +- Source/CDR.Register.Status.API/Startup.cs | 33 +- .../appsettings.Development.json | 4 +- .../appsettings.Release.json | 6 +- .../CDR.Register.Status.API/appsettings.json | 41 +- Source/Directory.Build.props | 10 + Source/Dockerfile | 7 +- Source/Dockerfile.integration-tests | 9 +- Source/Dockerfile.unit-tests | 4 +- Source/docker-compose.Ecosystem.yml | 5 +- Source/docker-compose.IntegrationTests.yml | 6 +- Source/docker-compose.UnitTests.yml | 6 +- Source/docker-compose.yml | 5 +- mock-register-architecture.png | Bin 251580 -> 455876 bytes 245 files changed, 11095 insertions(+), 8062 deletions(-) create mode 100644 Help/notebooks/HELP.md create mode 100644 Help/notebooks/images/get-data-recipients-example.png create mode 100644 Help/notebooks/images/restart.png create mode 100644 Help/notebooks/images/run-all-cells.png create mode 100644 Help/notebooks/images/setup-environment-config.png create mode 100644 Help/notebooks/mock-register.ipynb create mode 100644 Help/notebooks/payloads/metadataPayload.json create mode 100644 Help/testing/HELP.md create mode 100644 Help/testing/images/Docker-Compose-Mock-Register-Running-Tests.png create mode 100644 Help/testing/images/Docker-Compose-Mock-Register-With-Sql.png create mode 100644 Help/testing/images/MS-Visual-Studio-Test-Explorer-Debug.png create mode 100644 Help/testing/images/MS-Visual-Studio-Test-Explorer-Execution-Completed.png create mode 100644 Help/testing/images/MS-Visual-Studio-Test-Explorer-Run.png create mode 100644 Help/testing/images/MS-Visual-Studio-Test-Explorer.png create mode 100644 Help/testing/images/MS-Visual-Studio-View-Test-Results.png delete mode 100644 Postman/README.md delete mode 100644 Postman/mock-register.postman_collection.json delete mode 100644 Postman/postman-client-certificate-step1.png delete mode 100644 Postman/postman-client-certificate-step2.png delete mode 100644 Postman/postman-client-certificate-step3.png delete mode 100644 Postman/postman-mock-register-collection-step3.png delete mode 100644 Postman/postman-mock-register-collection-step5.png delete mode 100644 Postman/postman-mock-register-collection-step6.png delete mode 100644 Postman/postman-mock-register-collection-step7.png rename Source/CDR.Register.API.Infrastructure.Tests.UnitTests/Versioning/{ApiVersionSelectorTests.cs => CdrVersionReaderTests.cs} (52%) create mode 100644 Source/CDR.Register.API.Infrastructure/Authorization/AuthorisationPolicies.cs create mode 100644 Source/CDR.Register.API.Infrastructure/Authorization/AuthorisationPolicyAttribute.cs create mode 100644 Source/CDR.Register.API.Infrastructure/Authorization/RegisterAuthorisationPolicy.cs create mode 100644 Source/CDR.Register.API.Infrastructure/Configuration/ConfigureSwaggerOptions.cs create mode 100644 Source/CDR.Register.API.Infrastructure/Configuration/ConfigureUnversionedSwaggerOptions.cs create mode 100644 Source/CDR.Register.API.Infrastructure/Extensions/AttributeExtensions.cs create mode 100644 Source/CDR.Register.API.Infrastructure/Extensions/CdrSwaggerMiddlewareExtensions.cs create mode 100644 Source/CDR.Register.API.Infrastructure/Extensions/HttpClientHandlerExtensions.cs delete mode 100644 Source/CDR.Register.API.Infrastructure/Models/AuthorisationPolicy.cs create mode 100644 Source/CDR.Register.API.Infrastructure/Models/CdrApiEndpointVersionOptions.cs create mode 100644 Source/CDR.Register.API.Infrastructure/Models/CdrApiOptions.cs create mode 100644 Source/CDR.Register.API.Infrastructure/Models/CdrSwaggerOptions.cs delete mode 100644 Source/CDR.Register.API.Infrastructure/Models/ErrorResponseVersion.cs delete mode 100644 Source/CDR.Register.API.Infrastructure/Models/Meta.cs delete mode 100644 Source/CDR.Register.API.Infrastructure/Models/NotificationMessage.cs delete mode 100644 Source/CDR.Register.API.Infrastructure/Models/ResponseErrorList.cs create mode 100644 Source/CDR.Register.API.Infrastructure/SwaggerFilters/AuthorizationOperationFilter.cs create mode 100644 Source/CDR.Register.API.Infrastructure/SwaggerFilters/CustomDocumentFilter.cs create mode 100644 Source/CDR.Register.API.Infrastructure/SwaggerFilters/CustomParameterFilter.cs create mode 100644 Source/CDR.Register.API.Infrastructure/SwaggerFilters/PropertyAlphabeticalOrderFilter.cs create mode 100644 Source/CDR.Register.API.Infrastructure/SwaggerFilters/SetupApiVersionParamsOperationFilter.cs create mode 100644 Source/CDR.Register.API.Infrastructure/Versioning/ApiVersionErrorResponse.cs delete mode 100644 Source/CDR.Register.API.Infrastructure/Versioning/ApiVersionSelector.cs create mode 100644 Source/CDR.Register.API.Infrastructure/Versioning/CdrVersionReader.cs delete mode 100644 Source/CDR.Register.Admin.API/Business/Model/ErrorResponseVersion.cs create mode 100644 Source/CDR.Register.Admin.API/ConsumerDataRight.ParticipantTooling.MockRegister.API.Admin.xml rename Source/CDR.Register.Admin.API/{Extensions.cs => Extensions/ErrorHandlingExtensions.cs} (56%) create mode 100644 Source/CDR.Register.Admin.API/Extensions/ServiceCollectionExtensions.cs create mode 100644 Source/CDR.Register.Discovery.API/ConsumerDataRight.ParticipantTooling.MockRegister.API.Discovery.xml delete mode 100644 Source/CDR.Register.Discovery.API/Extensions.cs create mode 100644 Source/CDR.Register.Discovery.API/Extensions/ServiceCollectionExtensions.cs create mode 100644 Source/CDR.Register.Domain/Constants.cs create mode 100644 Source/CDR.Register.Domain/Extensions/MvcBuilderExtensions.cs create mode 100644 Source/CDR.Register.Domain/Extensions/StringExtensions.cs create mode 100644 Source/CDR.Register.Domain/Models/CdrJsonSerializerSettings.cs rename Source/{CDR.Register.API.Infrastructure => CDR.Register.Domain}/Models/Error.cs (51%) create mode 100644 Source/CDR.Register.Domain/Models/Meta.cs create mode 100644 Source/CDR.Register.Domain/Models/MetaError.cs create mode 100644 Source/CDR.Register.Domain/Models/ResponseErrorList.cs create mode 100644 Source/CDR.Register.Infosec/ConsumerDataRight.ParticipantTooling.MockRegister.API.Infosec.xml create mode 100644 Source/CDR.Register.Infosec/Extensions/ServiceCollectionExtensions.cs create mode 100644 Source/CDR.Register.SSA.API.UnitTests/Certificates/jwks.pfx create mode 100644 Source/CDR.Register.SSA.API.UnitTests/Certificates/mock-data-recipient-invalid.pfx create mode 100644 Source/CDR.Register.SSA.API.UnitTests/Certificates/mock-data-recipient.pfx create mode 100644 Source/CDR.Register.SSA.API.UnitTests/Certificates/readme.md create mode 100644 Source/CDR.Register.SSA.API.UnitTests/HttpClientHandlerExtensionsTests.cs create mode 100644 Source/CDR.Register.SSA.API/ConsumerDataRight.ParticipantTooling.MockRegister.API.SSA.xml rename Source/CDR.Register.SSA.API/{Extensions.cs => Extensions/ServiceCollectionExtensions.cs} (59%) create mode 100644 Source/CDR.Register.Status.API/ConsumerDataRight.ParticipantTooling.MockRegister.API.Status.xml delete mode 100644 Source/CDR.Register.Status.API/Extensions.cs create mode 100644 Source/CDR.Register.Status.API/Extensions/ServiceCollectionExtensions.cs create mode 100644 Source/Directory.Build.props diff --git a/.azuredevops/pipelines/build-v2.yml b/.azuredevops/pipelines/build-v2.yml index 5df2a80..5256325 100644 --- a/.azuredevops/pipelines/build-v2.yml +++ b/.azuredevops/pipelines/build-v2.yml @@ -1,4 +1,11 @@ -# Build pipeline v2 (Containerised) +schedules: +- cron: '0 2 * * 0' + displayName: 'Run at 2:00 AM every Sunday (UTC)' + always: true + branches: + include: + - develop + trigger: - develop - main @@ -68,16 +75,6 @@ steps: repository: mock-register-integration-tests tags: latest -# # Build mock-register-for-testing -# - task: Docker@2 -# displayName: Build mock-register-for-testing image -# inputs: -# command: build -# Dockerfile: ./Source/Dockerfile.for-testing -# buildContext: ./Source -# repository: mock-register-for-testing -# tags: latest - # List docker images - task: Docker@2 displayName: List Docker images @@ -86,21 +83,16 @@ steps: command: images # Run unit tests -- task: DockerCompose@0 - displayName: Unit Tests - Up - inputs: - action: Run a Docker Compose command - dockerComposeFile: Source/docker-compose.UnitTests.yml - dockerComposeCommand: up --abort-on-container-exit --exit-code-from mock-register-unit-tests +- script: | + docker compose --file $(Build.SourcesDirectory)/Source/docker-compose.UnitTests.yml up --abort-on-container-exit --exit-code-from mock-register-unit-tests + displayName: 'Unit Tests - Up' + condition: always() # Remove unit tests -- task: DockerCompose@0 - displayName: Unit Tests - Down - condition: always() - inputs: - action: Run a Docker Compose command - dockerComposeFile: Source/docker-compose.UnitTests.yml - dockerComposeCommand: down +- script: | + docker compose --file $(Build.SourcesDirectory)/Source/docker-compose.UnitTests.yml down + displayName: 'Unit Tests - Down' + condition: always() # Login to ACR - task: Docker@2 @@ -120,24 +112,16 @@ steps: #**************************************************************************************************************** # Run integration tests #**************************************************************************************************************** -- task: DockerCompose@0 - displayName: Integration Tests - Up +- script: | + docker compose --file $(Build.SourcesDirectory)/Source/docker-compose.IntegrationTests.yml up --abort-on-container-exit --exit-code-from mock-register-integration-tests + displayName: 'Integration Tests - Up' condition: always() - inputs: - action: Run a Docker Compose command - dockerComposeFile: Source/docker-compose.IntegrationTests.yml - dockerComposeFileArgs: | - TEST_FILTER=Category!=CTSONLY - dockerComposeCommand: up --abort-on-container-exit --exit-code-from mock-register-integration-tests # Remove integration tests -- task: DockerCompose@0 - displayName: Integration Tests - Down +- script: | + docker compose --file $(Build.SourcesDirectory)/Source/docker-compose.IntegrationTests.yml down + displayName: 'Integration Tests - Down' condition: always() - inputs: - action: Run a Docker Compose command - dockerComposeFile: Source/docker-compose.IntegrationTests.yml - dockerComposeCommand: down # Run trx formatter to output .MD and .CSV - script: | @@ -146,7 +130,9 @@ steps: -v=$(Build.SourcesDirectory)/Source/_temp/mock-register-integration-tests/testresults/formatted/:/app/out/:rw \ $(AcrBaseUrl).azurecr.io/trx-formatter -i results.trx -t "MR" --outputprefix "MR" -o out/ displayName: 'Run trx-formatter' - condition: always() + condition: always() + env: + TEST_FILTER: "Category!=CTSONLY" # Publish mock-register integration tests results - publish: Source/_temp/mock-register-integration-tests/testresults @@ -162,45 +148,34 @@ steps: testResultsFormat: 'VSTest' # Options: JUnit, NUnit, VSTest, xUnit, cTest testResultsFiles: '**/results.trx' publishRunAttachments: true # Optional + #**************************************************************************************************************** # Run integration tests For CTS Only tests #**************************************************************************************************************** -- task: DockerCompose@0 - displayName: Integration Tests Tests For CTS Only - Up +- script: | + docker compose --file $(Build.SourcesDirectory)/Source/docker-compose.IntegrationTests.yml up --abort-on-container-exit --exit-code-from mock-register-integration-tests + displayName: 'Integration Tests Tests For CTS Only - Up' condition: always() - inputs: - action: Run a Docker Compose command - dockerComposeFile: Source/docker-compose.IntegrationTests.yml - dockerComposeFileArgs: | - TEST_FILTER=Category=CTSONLY - CtsSettings__AzureAd__TokenEndpointUrl=$(CtsSettings__AzureAd__TokenEndpointUrl) - CtsSettings__AzureAd__ClientId=$(CtsSettings__AzureAd__ClientId) - CtsSettings__AzureAd__ClientSecret=$(CtsSettings__AzureAd__ClientSecret) - CtsSettings__AzureAd__Scope=$(CtsSettings__AzureAd__Scope) - CtsSettings__AzureAd__GrantType=$(CtsSettings__AzureAd__GrantType) - CtsSettings__AzureAd__UnauthorisedClientId=$(CtsSettings__AzureAd__UnauthorisedClientId) - CtsSettings__AzureAd__UnauthorisedClientSecret=$(CtsSettings__AzureAd__UnauthorisedClientSecret) - IdentityProvider_Downstream_BaseUrl=$(IdentityProvider_Downstream_BaseUrl) - Authorization__Issuer=$(Authorization__Issuer) - Authorization__ClientId=$(Authorization__ClientId) - Authorization__Scope=$(Authorization__Scope) - BasePathExpression=$(BasePathExpression) - BasePath=$(BasePath) - PublicHostName=$(CtsPublicHostNameUrl) - SecureHostName=$(CtsSecureHostNameUrl) - Certificate__CertThumbprintNameHttpHeaderName=X-SSLClientCertThumbprint - Certificate__CertCommonNameHttpHeaderName=X-SSLClientCertCN - dockerComposeCommand: up --abort-on-container-exit --exit-code-from mock-register-integration-tests + env: + TEST_FILTER: "Category=CTSONLY" + CtsSettings__AzureAd__TokenEndpointUrl: '$(CtsSettings__AzureAd__TokenEndpointUrl)' + CtsSettings__AzureAd__ClientId: '$(CtsSettings__AzureAd__ClientId)' + CtsSettings__AzureAd__ClientSecret: '$(CtsSettings__AzureAd__ClientSecret)' + CtsSettings__AzureAd__Scope: '$(CtsSettings__AzureAd__Scope)' + CtsSettings__AzureAd__GrantType: '$(CtsSettings__AzureAd__GrantType)' + CtsSettings__AzureAd__UnauthorisedClientId: '$(CtsSettings__AzureAd__UnauthorisedClientId)' + CtsSettings__AzureAd__UnauthorisedClientSecret: '$(CtsSettings__AzureAd__UnauthorisedClientSecret)' + IdentityProvider_Downstream_BaseUrl: '$(IdentityProvider_Downstream_BaseUrl)' + Authorization__Issuer: '$(Authorization__Issuer)' + Authorization__ClientId: '$(Authorization__ClientId)' + Authorization__Scope: '$(Authorization__Scope)' + BasePathExpression: '$(BasePathExpression)' + BasePath: '$(BasePath)' + PublicHostName: '$(CtsPublicHostNameUrl)' + SecureHostName: '$(CtsSecureHostNameUrl)' + Certificate__CertThumbprintNameHttpHeaderName: 'X-SSLClientCertThumbprint' + Certificate__CertCommonNameHttpHeaderName: 'X-SSLClientCertCN' -# Remove integration tests For CTS Only tests -- task: DockerCompose@0 - displayName: Integration Tests For CTS Only - Down - condition: always() - inputs: - action: Run a Docker Compose command - dockerComposeFile: Source/docker-compose.IntegrationTests.yml - dockerComposeCommand: down - # Run trx formatter to output .MD and .CSV - script: | docker run \ @@ -210,6 +185,12 @@ steps: displayName: 'Run trx-formatter' condition: always() +# Remove integration tests For CTS Only tests +- script: | + docker compose --file $(Build.SourcesDirectory)/Source/docker-compose.IntegrationTests.yml down + displayName: 'Integration Tests For CTS Only - Down' + condition: always() + # Publish mock-register integration tests results - publish: Source/_temp/mock-register-integration-tests/testresults displayName: Publish MockRegister CTS Integration tests @@ -257,18 +238,18 @@ steps: artifact: Mock-Register - Unit tests - task: UseDotNet@2 - displayName: 'Use .NET 6 sdk' + displayName: 'Use .NET 8 sdk' condition: always() inputs: packageType: sdk - version: '6.0.x' + version: '8.0.x' performMultiLevelLookup: true - task: CmdLine@2 displayName: 'Install dotnet-ef' condition: always() inputs: - script: 'dotnet tool install --version 7.0.13 --global dotnet-ef' + script: 'dotnet tool install --version 8.0.3 --global dotnet-ef' - task: CmdLine@2 displayName: 'Check dotnet-ef version' diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index eb3bd9e..5870a61 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -72,7 +72,7 @@ jobs: - name: Autobuild uses: github/codeql-action/autobuild@v2 - # ℹ️ Command-line programs to run using the OS shell + # ℹ️ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index d362a7b..f0f6a5b 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -13,7 +13,6 @@ on: - '.github/pull_request_template.md' - '.github/stale.yml' - 'LICENSE' - - 'Postman/**' pull_request: branches: [main, develop] types: [opened, synchronize, reopened] @@ -25,7 +24,6 @@ on: - '.github/pull_request_template.md' - '.github/stale.yml' - 'LICENSE' - - 'Postman/**' env: DOCKER_IMAGE: consumerdataright/mock-register @@ -36,11 +34,11 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Setup Docker Metadata id: meta - uses: docker/metadata-action@v3 + uses: docker/metadata-action@v5 with: # list of Docker images to use as base name for tags images: | @@ -54,21 +52,21 @@ jobs: type=semver,pattern={{major}} - name: Setup Docker QEMU - uses: docker/setup-qemu-action@v1 + uses: docker/setup-qemu-action@v3 - name: Setup Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v3 - name: Login to DockerHub if: ${{ github.repository_owner == 'ConsumerDataRight' && github.event_name != 'pull_request' }} - uses: docker/login-action@v1 + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Build and push Docker image id: docker_build - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v6 with: context: ./Source file: ./Source/Dockerfile diff --git a/.github/workflows/dotnet.yml b/.github/workflows/dotnet.yml index 3e52863..18c1240 100644 --- a/.github/workflows/dotnet.yml +++ b/.github/workflows/dotnet.yml @@ -11,7 +11,6 @@ on: - '.github/pull_request_template.md' - '.github/stale.yml' - 'LICENSE' - - 'Postman/**' pull_request: branches: [ main, develop ] types: [opened, synchronize, reopened] @@ -23,7 +22,6 @@ on: - '.github/pull_request_template.md' - '.github/stale.yml' - 'LICENSE' - - 'Postman/**' env: buildConfiguration: 'Release' @@ -67,22 +65,22 @@ jobs: # Run unit tests - name: Run unit tests run: | - docker-compose -f ./mock-register/Source/docker-compose.UnitTests.yml up --abort-on-container-exit --exit-code-from mock-register-unit-tests + docker compose -f ./mock-register/Source/docker-compose.UnitTests.yml up --abort-on-container-exit --exit-code-from mock-register-unit-tests # Remove unit tests - name: Remove unit tests run: | - docker-compose -f ./mock-register/Source/docker-compose.UnitTests.yml down + docker compose -f ./mock-register/Source/docker-compose.UnitTests.yml down # Run integration tests - name: Run integration tests run: | - docker-compose -f ./mock-register/Source/docker-compose.IntegrationTests.yml up --abort-on-container-exit --exit-code-from mock-register-integration-tests + docker compose -f ./mock-register/Source/docker-compose.IntegrationTests.yml up --abort-on-container-exit --exit-code-from mock-register-integration-tests # Remove integration tests - name: Remove integration tests run: | - docker-compose -f ./mock-register/Source/docker-compose.IntegrationTests.yml down + docker compose -f ./mock-register/Source/docker-compose.IntegrationTests.yml down # Archive unit test results - name: Archive unit test results diff --git a/CHANGELOG.md b/CHANGELOG.md index 4701b70..6fab27f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [2.1.0] - 2024-08-16 +### Changed +- Updated NuGet packages + +## [2.0.0] - 2024-06-12 +### Changed +- Replaced Postman collections with a Polyglot Notebook solution +- Migrated from .NET 6 to .NET 8 +- Migrated docker compose from v1 to v2 +- Added SSL Server Validation capability with switched off by default +- Added custom User-Agent header for request filtering on GetClientJwks + +## [1.4.0] - 2024-03-13 +### Changed +- Updated NuGet packages to avoid vulnerabilities + +### Fixed +- Location for log file in appsettings file is fixed - [Issue 65](https://github.com/ConsumerDataRight/mock-register/issues/65) + +## [1.3.4] - 2024-02-14 +### Fixed +- lastUpdated field fixed to populate the correct value +- Remove the old Scope "cdr-register:bank:read" references +- Added property code_challenge_methods_supported in Mock Register + +## [1.3.3] - 2024-02-01 +### Fixed +- Audience validations for token endpoint have been fixed + ## [1.3.2] - 2023-11-29 ### Changed - Refactored code and fixed code smells diff --git a/Help/container/HELP.md b/Help/container/HELP.md index 4127a25..55954fe 100644 --- a/Help/container/HELP.md +++ b/Help/container/HELP.md @@ -49,7 +49,7 @@ Example of accepting the `ACCEPT_EULA` environment variable of the SQL Server co ``` mssql: container_name: sql1 - image: 'mcr.microsoft.com/mssql/server:2019-latest' + image: 'mcr.microsoft.com/mssql/server:2022-latest' ports: - '1433:1433' environment: diff --git a/Help/faq/HowToUpdateRegisterHostname.md b/Help/faq/HowToUpdateRegisterHostname.md index 9a100d0..8764946 100644 --- a/Help/faq/HowToUpdateRegisterHostname.md +++ b/Help/faq/HowToUpdateRegisterHostname.md @@ -12,7 +12,7 @@ However, there are fields in the Open ID Disovery Document that are still pointi In order to change this, the following configuration items need to be updated: -- Edit `CDR.Register.Admin.API\appsettings.Production.json`, and update: +- Edit `CDR.Register.Admin.API\appsettings.Release.json`, and update: ``` "IdentityServerTokenUri": "https://{updated-hostname}:7001/idp/connect/token", @@ -23,7 +23,7 @@ For e.g.: "IdentityServerTokenUri": "https://cdr.register:7001/idp/connect/token", ``` -- Edit `CDR.Register.Discovery.API\appsettings.Production.json`, and update: +- Edit `CDR.Register.Discovery.API\appsettings.Release.json`, and update: ``` "IdentityServerUrl": "https://{updated-hostname}:7000/idp", @@ -36,7 +36,7 @@ For e.g.: "IdentityServerIssuer": "https://cdr.register:7000/idp", ``` -- Edit `CDR.Register.IdentityServer\appsettings.Production.json`, and update: +- Edit `CDR.Register.IdentityServer\appsettings.Release.json`, and update: ``` "IssuerUri": "https://{updated-hostname}:7000/idp", @@ -51,7 +51,7 @@ For e.g.: "TokenUri": "https://cdr.register:7001/idp/connect/token", ``` -- Edit `CDR.Register.SSA.API\appsettings.Production.json`, and update: +- Edit `CDR.Register.SSA.API\appsettings.Release.json`, and update: ``` "IdentityServerUrl": "https://{updated-hostname}:7000/idp", diff --git a/Help/faq/README.md b/Help/faq/README.md index 6eee03e..072bb07 100644 --- a/Help/faq/README.md +++ b/Help/faq/README.md @@ -16,8 +16,8 @@ See [here](../../CertificateManagement/README.md) for instructions on replacing See [here](HowToUpdateRegisterHostname.md) for instructions on replacing the default hostname used in the Mock Register. -## How To: Use Postman to query the Mock Register -See [here](../../Postman/README.md) for postman details. +## How To: Invoke Mock Register APIs +See [here](../notebooks/HELP.md) for instructions on using Polyglot Notebook the Mock Register. ## How To: Load your own data into the Mock Register diff --git a/Help/notebooks/HELP.md b/Help/notebooks/HELP.md new file mode 100644 index 0000000..35c1c95 --- /dev/null +++ b/Help/notebooks/HELP.md @@ -0,0 +1,42 @@ +# Polyglot Notebook Guide for the Mock Register + +A [Polyglot Notebook](https://code.visualstudio.com/docs/languages/polyglot) has been created for the Mock Register's APIs as a tool for demonstrating how these APIs are used. It has the capability of invoking public APIs and mTLS APIs that require an access token. + +This guide provides instructions on how to setup and use this notebook. Further information on how Polyglot Notebooks work can be found at [Polyglot Notebooks](https://code.visualstudio.com/docs/languages/polyglot). + + +## Prerequisites + +[Visual Studio Code](https://code.visualstudio.com/) is installed and running. + +[Polyglot Notebooks Extension](https://code.visualstudio.com/docs/languages/polyglot) is installed in Visual Studio Code. + +A Mock Register is running as a [Docker Container](../container/HELP.md) or in [Visual Studio](../debugging/HELP.md). + +## Getting Started + +1. Ensure the above prerequisites are installed and running. + +2. Using Visual Studio Code, open the [Mock Register Polyglot Notebook](./mock-register.ipynb). + +3. Click the "Execute Cell" icons to set the required variables that will be used throughout the notebook. + +**Note:** The default configuration is setup for execution against local docker containers using a Banking industry profile. + +[Setup Environment Config.](./images/setup-environment-config.png) + +4. Proceed to explore and execute any cells to view the request and response from the Mock Register. + +For example, to invoke the Get Data Recipients API, click the "Execute Cell" icon for this cell. + +[Get Data Recipients Example.](./images/get-data-recipients-example.png) + +## Tips + +Clicking the "Run All" toolbar icon will sequentially execute all cells in this notebook. + +[Run all cells.](./images/run-all-cells.png) + +In the event where the notebook is not responsive, try clicking the "Restart" toolbar icon to restart the current instance. + +[Restart.](./images/restart.png) \ No newline at end of file diff --git a/Help/notebooks/images/get-data-recipients-example.png b/Help/notebooks/images/get-data-recipients-example.png new file mode 100644 index 0000000000000000000000000000000000000000..360f926bade7adb9f8debd4419ec96054425705c GIT binary patch literal 119371 zcmdSBXH*nh&^C$(g(C_aL_j1RL_orTWXYlkk|k$Qat=ezDk74Fff+KAa~c>jjN~xn zG%zGVa!$jL=eBy@@2>mr`|euz$L+OPG|leayLMGQReN_m9ri|5o|NPv2>}5Cslsbn z4FZB&O#}otqyGL2xI#=to(ufC;ie(~f}m`WegpX9rnQWU3;{u9%$>`3w}8KIyS&zS zBOst={q=K0LF4g00RcW&K~_e~+hlw0cB;w>{`-OWg`JMoQ}YL?sV@F|@Eolkjm)gC zZw`tJ3Uab+vfoG>6udbre9URMfxp;T3w@Ere`5J5jMhrvB5eoXj1zTR9qdm^5;wP5 zKMI_q8S)vdxAqz2Upt#$ljvsV=I*}v7Oy!gU6OmnNi`236I?daM*2}otLT23(b4D|HX+!sc5E{pBt(z6X7#lrp}4@8`d_U4M(LcJT=##-I8Hg; zRQWB6ZUsp(Vo2ghSxZaH)3YW&e=YN6=)B)vGirKS*0cczLoc?6(tr%ylTuQv?a{lv z>>0DQ&I={_Rn^?$T04e9AMSf^O_r|pCuNI3IMU3K4<87+9%8W*algBd=lb{Ge>pf5 z=$?)?`{BNS|L(OAfbQ&M<>x;<-ztZ7026>1fhF#Y=5F#Rd3kt9y8L)9BlAJHlU1kI zX|Bw;F}X^xLj9bZ*8{7ZZ^_^!E1t6dJnVKBi*1(ldE=eX)nZ zp|lrAJkCZaxPLwVTe78<)nK}$-(p*csHo`6P_lrP1l<=eUm{##=`F|G+uMzMErz2} z4~0g%7MHyJ{6qlL(Ps_{3ZkKb?eDudPCZ!z@1EPq5C1kt7X=4Q^+x?#`V7JzHlAwg zvyuQzmYA4Hi(-Mn`H(bzw&Gp8u4w=^-EX%(RS9Wubu#13A|E|l?`G}mdmc$EKm=3C zSPl1E?V*;x`)hzdG{PbxAYxT^U@)NL=HpQ%Sk*{q%W-66r1)MFgpGZoOt;*GMK1Dh zGBTdD;k>#w3c=sDZ)8xTqH5KjCS}T;A=agGBPsK*Qe%2MyXIs7B)7k?q~*&tx3nZ1`nW@!8CEN z&2bJ#BaaH}jn>vy3JMDNaYsi7aK}qJT@{P52G5<%wKeu5-M#2ac`dDYBoaSeWnH{~ zLSHz(;5H<=GgAvIMGX#4f>rW(j2mV>(8h5U0V`F?5@sD=0B>a!_w4sv>KjGX>sMJ( zvE9XmFwdtG{ubvE=hY!z3m3ZfXVNFj@?;-KmfK`fsmwNyeUIOjyX6q`2M_99YC8ecUI800#Bmd5^9))6tDO9Nds8`;7ylWE=r2*rn+_GLtOf$lR$y!CeokX~ zDu4}aFCdY{#rAr7QypQHytcElpk|+=)lf2qxZHB1dJQ_)kc-QsA+$ljs-yR&aq4Z z$LeRg0hI>pq{=6I3;5$PwQ|E+Rk|BfAO1k@kGLlz-z_Ff^v@%-0l8A`Nj_^IzAALXf0DF2e3Rp$HBZQ!yoBGPgv|a!@ zKSc4uOwPYhumE1f=ee!tIAsCo{h-=*EIsJ@3_uqf{fgl2*;p3&Yru09I4N(n$ z|Hf)0FmS*^-%O6aeEBlNdnpWf%Jyu%rq1)4Cr_Rf07ga!V0DvsrLcNJwav&2VRlwl zOZ@ef0hFPssi~}Sw;?0&-1hqN%s^*A*mX%3(YDgWQLkOB6Broi+;s4HXUnfo_ZR&A z2NF}oZFY`;XA_gr*V&Hc4Wx+J>#r2ee+%p1shM$_sc|$6%m1LL=?Vd$PAD-Y#qWTE zGFJ)4LoRvzH6tTK*dg@e$B%$I&ai0Hp`jr(+)h|tUVhp>P0SKQ;Uol;0M2&ASTS8X1O25?+V2?16VP4dC z(;Ogz)6&*szFWGl_A?n2#V0cgDk$f;ng7Cq0uBJFi$rYh(bM~*K(&`=YZ+8Er1kfK ztAMm!b#--s8ck4brujfG`D)#EgfOM&&!7IMb)kZjZ@0fS@_%Hjc^84|a@qJ3@V?10 z+k8~YCn8euUU~ZKDFp9t{Ga6k|K0c9Br}uwSN36t;R?O|CxLj6EIbTm)ApBGtL$bp ztZ@Jwtc#OyAe!$j~piIj)xVVGjT1-YfPFNVbZt-t{ zlx&%<54UTFlKpIa3gqU}_2K8mdXO+?0Z9)sIse`Z+aM-y`@T(^He87S1+OT`Q zQ+)2rsVz;hPZy2$!9>Zgi1fS8iRI)9BO{grVp0`Rgys7YiM2sTfs!VH6{$0n=sPM6 zslG?kaD3PF6E||q0|7P8GgO`jnh4+0fD1o{;f>l^8Ve(f3ZO{@1aBZ(YQr5hAA0Zb zHtpBizg-&Z-mAf-s7-DLIx_ko1J|TfG0!0Odn>Od+OpIZ14>Dl;<1H_dd$W0N8FIY z$#N!<`kk6DU%Dl$9q5c-umr2Hxn1V@ERgLX15c0LK}a?ZlQgJCfP<~xP^)jDPUEp8 z-!z+M;0t%VCa9*Zl=(}>)2snw*wcGjn|kM26NJvhf)V3#rc#s5nqplPXL%*s!FDET zrDGxsBlsCwCG)r(f`=jx?-i}goId?`spboXb4aSN5>}uP{~XllkWNU1G7iu<-rPe( zA}gat_%s|e9vFHRNA}rE`cB3T@jCCXKRWqldU1ntmFKLlMG@YT8f73C>&I`=}t5|BiLiFdn&^28oB(ST9AWgnWObjGQN959%`wKN6!ZahM2k-|m z`%szmL4)WjuQ&Uo_=2D_d${7-tk~fmGrmz*ltD{0xBB2fBxxz=Jm5O$(B7=6<7-u8 z&|BDr!Mwo9y-pPpGO5a-69#0!X>#sg`a-+RCLhWMLqc0E7dNRNU|jZ(zgp?q%v_h= zzOy$aU?}CLswh-Qf9BURi#+!#H1RzbnuIH2>U+16K!I$UR;6!2`O3^J7qY%ds(VH{ zV_ZeBm)mi@FNsMR1+7lVX$@3!&q6<+o6cL=YtIA+&UG~j;!TzEV|J*V&X{M(m|6S` zp;bRkb72D9Pi8E@;uT%E5dL75*wz*{&CzHtRcEo%mH4>kXD1op%NW(usyx$h<4x2; z9jX!rsnS)8iiU1gzzpl4+AkV@cH{3}nx-1z54nT3`?LocONe0j9^`V(z(WD=;cxFC zQ2I&!qAUX|jo9Lf{Tl>A=vTK?#5}j3`JHS7t3f6)_w~K0@3J>l9Kn8WYW3Kt2r2mX zZF{WqX*m;jwCLA(oM+JO(*TXpL=zR2H2oG;K|xO?UrK5c(W z)U>zC>0&qR-ncZHQF9yy&CbkBj9B!kh+nPY?odYGrjz_C8voAYL5*A z-4SJx&i%2|YB_}*$|i_i{dvLudx3Bc1w{Pn{5RNsj%w_1-+oR?Y2F?YiC|CvV;}HLL(;ib#`avL;WFtEDEEQL;PK zecURJs_~*Dxju;|eD|t(@2o*T(c$nYX@E^+eXbP^SKm8F;ws$FPp|=7vy+ zyaOrJwr6Z#*&(1TmiI&}onWs`x7gO!lE?6~l#PKcJ0F$v{;nM~e<@B4HN01awko=4D zgT3f-BR$S@^{%@S8&Xwk5OkvFkg$KhjL*LZ`;KcdrF{N6FVGjcK~XV+dx@e}o`p;q zR}C>K{BU{iuP`h)KF}Ap`N~aqkIU}E;y!v3qG%wv#4)m8fiDHxRBdBl$zqx}jCA6%+WDcN zw2XHeyB4Yso|oka7@DQvrAl8EmJp9hl*rP}sp*A(E9IgFO%+66jvTc-)RQwO2;k7^ zM1ii3(=hy^FBOnRnLSX;zms?f8=_|No&LAgVR~8K(wQ?*kdnB zHg0$+V{MRC@A2TZg1A+58Y@Ij#o+1uR_Gag{mE8Mz7jK?qg$qw0Ai*8TpLx%w;3|E zR>rsE&0?`k4a$$NymLCF_-)uHOzODKCO(f zy1NVxn_KRt>pL?r&eol5&is`=!XFvmOuVw~ZDoOL(=_JrlsNTZl6+@_Ya=v`z8v$L z1SOXhLh;;Y>mPJN8%; zvKxei+>S#7VI#uWf*u+J+}=NWb-mGpWr#Mh+6ST&d5wy^Lo&Rz4Xt^zO~49@NylOD zrV1HTfa%L$Ll#5X&C-araF$bp?eSJzTRd-2hjz2Io!?p~EfSt3k8>upm(Fs$=pucR zT_4zy=yQi1mmq%DR(edb^Az0w)bY7ftF!;=4ouFIr-UG30NYg`!G;^jrn+7XU{hn# zn${hQ7l(Xpt)kY`)u!{rlJAN8EH?4Il5bgy8e5(AZ!W^9`5q-PGlUE4Q;*v(4=Z}Y zrX5F9#vD)sT!MDXs5|K#qBO9t*3?ZB8n2W;#a}1(LNLWQ4CVZu{xp@Qhu)F5S$=Oe z_f{4gwh!ZSU(}TFTUB|0i<=XgY+KySE!^|9`>`Y-9miRZycFNKrxF<^`o-04q zs5OLwQa$00an&?P{vke-P~>^l*BZpv?z@|zmNQ>a7Fa6w~xG#mvC;z zoVJ8nR`IFrH;LLd&F`<1{GOUct}MevCzR+U0}h|3{4)RHL6(dpv2Pk{u897QJ_Ney z732bAM0T#4F07ZKf>Ur-Tt`K+o4uw+K5ldxMfi8m5x$Nj9+8)v*R0vfd%U-p1VOxmBoLz2^;rZ|XSV zgp;;Ayb_oD?Z8gY?8ca-R7n8#4hejg>v2a;;lg0J*M>osct7SULQY@W8A>Hn_ax9q z;5_d`3z&_jZ3_72D}j}>j!5!a%w zjpX`lbk`SM5A-9|s!W6>>%BvwbV7#@PspPkA0+x8My#2~+~=x|gfzx*`(X?Yy|#V! zAbQh0dtWdE)s<{x72p4!77vXskhH1r%DQygT3mBd#k5QrIPpU|gF2EK0>sgKdWADO zi&XSfyK(p2w05%9K(CfZ>)ckjNX@qP6s#cD%f^|_ch5g+*EFUz>ZNR@ zkYBwist+8`Q6OwLR#`n=N8Dj#kOI<3KDB;RItEiMZgom|cj!ZJjbk{P?Jko=+FO11 zN-)~{mFM4HDlunHEtc?+J2*YD3evrCT{`>xL#rjx(~-=9W@UxYNrP^(hf?pZF)tPP zThMiF-PJGT$f6HxB|_m2t2PKw3U~8zviYP`5&mA|PA&z%qLf=HaapWtz@uR0ywlQh zNwGHmmHpf0p!xeOelk_=aVuNF!~=8YNizKgTeHFsIaI7{xy6`g3x7K;rjK4b|n~}HK zd}!tQSJD`v||0Vx0*|aD#W}ZHvX*gGqOvjf&+a%=BR1E5 ze6%qFc0G1_c6z(~D?IBFUVO)%-+2ANVe(&TP<{^lz+~> zH3Iu@shmVA9rbP+l4pKLSh&{U7{p#q0MhULYpbp27XVq=y5Kc+ ze;Mg9biB-=hK}F28ID=Xe6}06OnMu3G0C zru13u^-S$!Zr5{pkeBCPg-^}ZT7J!*1(o?P86D^SrKAdO&4?HZIQCx*7Jij#(C>ti zo@Lz`jwR1{UDfxCBSb4Rt?}|-BI(YwKkPQC z>J{&pxwk;EI5^Ly>7+c1D|Q2kE9jVCC$Vg>;r+nXXUZwS6Qglg`V4&&v78U z{C#f`C4%0Ytami6p&X2}d&w9Eej#)8R(#P!_Zo)UOPq zAMlpPN!CE?iGvVO^*76JB>P8q#mvc^@7!B&OA}^mWEeeIAo4nzv2g~Ig!!mLN=GawRH|bc#mX0x;x0vPtoZtm#nspZ*Se|{R zL7pg9z43!L$f*VzsHavE7&MgmxO+Io*?TSG+LZU{CdQ}T?*@Pst7EIn+iGM?*T*k5 zXrf>UV#&}~LSDe4n>VTAM=0gwOMaFU7vEk@pN$*}N>hWw_IEo*cn@qBCDaTq8ng3u zNLg-(%T?&9f1&1iruI-wN{%sE3$LfB%^b@2b19ct`$(A_k`!I=`Ne@v| z=51&KB}q9YpBQCcEjI|NsA`~up0arURDz0w<)-{mKOG9CbnN(RNI;N9*?K{C=5a_T-Wx0 zq!Ti5V{b@@?iXS~yvYhfpkno~%Q$+7Bkk4S^`ir|oV{JR8Y;Ba`a^()~7<*PEG0&sR+^=z2BG5AuS|OQj#$ZLT!a*qB^62j#)vbuf zY%|xF4l!`+QI1DF;ICfkCM9J;!lQAtIYKTZ~0={bX_hqU2enF~}&mqhE7Wo$IQ|1hN~=S99alJYOu`8h@MnDYAwq|FZUIx&E9c zK8ShW^8i=2eOpuc{LE1}e<;La=6R|8)xT#KX`Yv6rnxE2?+$uzLacwblxAFt9e$_{ z79)4(5s)+d09HGRQW#MHlinRQD1LQTOU|FmAQe>6rWBL_tS7}k>5;XZCX$%wFpR8? z=tn?HhsiO$me_5Lbi1UmSG}m#sVp6;G|73faB1o@syT&QMYwvzzP1S26r<> zRhK6@)3hmEM_UThiK@}oKhN|KzJq~jZDi;CF<6Nuj#}-ccj?Xwp68^|h_^D|XSd+Ng#-9Z=)wAv`MREiW6o1mXTfekpqD z=c+$$|6Gz7>Iy5HPe1Bu!KV)%IL$jOyVoN)wceqrABp*xyMOMTC`V15s3{KMvroLd zPTWLt_s%48=7;74BwrKYHZEHSyAV{LAiQnWd!5yI6>3YpG8N z<`IeC4Y!IoESd5Qbp_US~NwlU)ODE2=T+cy%xO;Mu6%rbq z-sqroyzvR{uPy1H*fgzpQ% zw^#fh{Nrla@ul{KYKlPeZ2W1C%(%tY@qpJc-m_~o@i8Q5xtSF+rX}DOxRL^mhjT2p zFCv4^=X!r0__Sm)i$ppeEz@*f6cjPm&v@w>6eAwkoFy@TbAJAfL&#T~R(C0u{FM-H zC}z51BeoH}z}H$Jekv2gYQ&Trun3bg-;4NChh8%W8EVcmRzFQ~Tyo0=-uqmPo|>$9 z`fBi9SZSPAD2(LK4uYh?_iN4n2Gve7WRdTAu*o;`0) zPeY_44IE02STfFxpRSzUOu+80EzgAwIZFYnN8f~LK3P%t=nC~5sHsY&JnKgO@B|Q*3T3g?KV_=dd=aPIs1T#W0&y8oDxdlAN% zS83J#eUQ`_v!K6}c~^g?Wc?~v$75)FS- zWEwdbd1Z4tKRv`Wn_>YbC*L!klD2PJv2NaOj&Rh0?^o?3vTBY8Wp+C;J>EW_4Fl(@ zHwtTgUkROf30cYp1z5=^F>rW1Me`-8I^&Y;$J4X=iFvpOa}AS|HN>JcfHtVJVRBe&vin*N|S(VSeF|?loF>6T?-^k^>8cl6- z#5QeEcHN~D^exM^zKyXn@LSeTpLX>)K-`}3 zj>6Waf9&+}p-#&;8Dz+gOjl7J5=T6JxAKyBl?*@k(5ZON+5wB^se*Mf35$Pr-^cRR zdxVu(iUm0N(KdE-NsM>KpLAoq_{~v8>t19HZ~4z0l72RH{(GrD&!`NSie6?i({!T9 zcJxJ4F$ar>8uDb1psE@9ma~0_3qApO$3SM7{*q6gcZB-g1+9Rgc>7W*taepI$Lle- z#q&?}F01a1DJc#UJSLQiWkvoZ3o<%sJe!zX1kWh|^E5YKiazzPcirL_ZCcP1;l+Nc z%xHgw=q{V)aZptJ>igUR;>Tt;vo%>fY0N7aCqDRT{r=9NttLhR#bA(qv2c86&mq9G z7sdS6<;N8-9X7!4*-ljmyQZ>odOGz>eCRJ4HUp?)2Gv zU09wrU+J=|G$j3QC(vVkN9!6r<$}Y;Apx~3Z8+9 z8P)7W#)^3__uPUIxx=M6wJfQ&Ww`9UDz0M*8_C!2FB)|6yhW@$XfiFd>J?|qU}b+- zTNo&#Q5HBjkQXZbw4$a_Sf`RmM>&vz-SC{tHT-b<$|@q|MMN#}7UR>UtMfFhfTZN! z5QBmo1Nn-z{)vC{Jf$%zz+9z%RKSyAkpI>#586G--2{Y}`7O{j*fMOz4en&Bu(H=0 zaKWtxA@a!J&uq+{%_34WJdVqSXwflGqA8NbewuU7#r7n;{hnRbRV_TVeHiWEXbq07 z*{w)_$I>U>evF!Fl8@kVhLSRscFhc-${`K(Jwh)1B}oAK zi;$ZfVHrHkTTJjB#0H;7C0#Bd?^^ieOVl#`7LGisp3b;0lAtpf`QR@LcNE0xw@0$b z7a*GN&|t?xI@tIT1Q&y9KDvd)F5(?(RF#uZ7J^?-9v9r<3Dzpmvl{8STx@ zj@WB`f+RNio3};k{M}nH9UXt*+c$*?l}(QME?zWT)-0CvN;M(neFMqdWi~2Wi-r*4 z{xzh}(zr}%^v3Yg0JJug##zlmU6Aspv4a%y`b={Klf7=|7}27UEE!^&bJ3r!W@3(! z^gHUu+luB&eDyx9IqII2odw=9XGZv19UKpugz7~3gB!_MUr=->DojHpd*u73O~rk2D6}Vg0PKk78t{n|a&!9b?dtxD@nExwD*T z(wWMbPtnvRZZN~Wl)>t#^nI@i<94QGgLOhiLcHxEE*x!b=HJ;P+Tyv;*V)Nf=^!i) zb~!S;0n6elWngb)-9>0@-P37mnH60yRD<4_8R@R z=>0d4z?(&G!(v6xQi3OonphTglj4;as#gM8E&6Bq2P?AdUw0(dcfmv)YvwHYK67#9 zuY7^k=xbOSk$MhgyqWqq5S`RRBw01Jzogx?A8`^gvF-!k?z`VIhXx941aI7EwI008 zB#k#49<@+w*;>Kdpjr;;2TwOM*VRNiJE^cO8EMo^NNdO08;<*SM{E72(@O(we=6Dk!|ck;Crh0N+7V>xnv$A4p5WnL;MpBp8noLa7;>$HQsvc z%n0I_@*&W`{-`vJNh%1~Tpj1Ok7**(>2?$c6@SgJpIrFHF&msB65vuZZ9a48r?WW|rf;F8$)94KKTUAJ14)^_tKdHYxL%1Uj9E5T=~aa9x((&L|6yQqsNC zJEWpGRpq%L5*iK?2)qu%Hd2x>>BmVXQh2SekA@z9348MFwBtIr#;^YVbf=PZY!par z8`S8X$H-UsjwEFZrb#Z<{!K^R^!mU0XO}2HUTf)q-CpGDa?9dA~SHInx?&^f?PTC?`=~NX3Yv;KD(W3 z$ABD6Y0T-L2m|R?Xq$C2R)-tc9DSXZ791Di@b%Dccn$KuS&+3de$y`w)`F8S@q}A< z?m{Cpj6Qlihdsk}h>XxwbCru?PrZoeO;X>K1awb+ny^>H7$Lx;OFxAN!+0q8DCDge zXZ74^ONt~Fkm)u3nFW?+9>w0|*J93nZ4CJcH<7DjM$sHy8q=gwH|tVPU*>Z96Titp zFuUYX+0|{p)FX8x#Dd zD{(*~@!t5ZLGmS{tQyKD6obeO8_KNslCM~6H>_uv+~ItUdsz-!5Ia|-5fn0Wx2}aO z?BE^VsXK=`1#CuM%NLZZWZyQTC2H{;o2sc_K?rUf>s=z96nW-GJKQ?#l|lt$@J?-? zUTJ$9{UjL==!@%3YgTnm6}61L9wZ(5ICskbAq#!O&=^7dZfFc@T$wu@Vm#5$&}gX(-$2 zNTDa4DKcd>no%MhIaIZ=E^k|yOlvc47rW2{W1Z|>SzRItZ!8x|he+FtK&Qr$P0a(r)^-7}aL%uTMF!#>g9^?aq? z$nU8l$U0vVb@pts-J;LQ$FMJw%s`c6#FYbzE|$87+0yVJ^0NdopXt3FsJh7+hu>0P zbmD0}Y5H{EsHBFkC+!@I&q~a>{2{iL4Km$(*gdFYdGaq%;g}X~kUajpTCgzLdf}N* z&=I%e5AWbF-Ac`r(~gI6DSkbY`P%2acm}B}Uf=#7qnua&1ZGAOX3(2dH7vm%{VccM z>66`hIpy!aMoBrCP(-fZ$UicwfHkFEFeiFecosU7v+x8P}te|f|~!EP5poE zb=f#K+~4`NN0*y)UX`JrRs#jdMiVx+hqXtW5zI_iOJ1!;Cvz4jvkECK;_2W6aw@a~ z;13m^BIaYgUqo4WR%0fHm>!vdJA1!K*ZJ)V6p+oh-Ru2`D9_Xr&NbTZIrfb7W^uN{rys9st#?T6HjcU|DCuk!LWLcC zTHHHwzD%!8oe-)0!w1wj!ft{7a45bn-2d;4fHUgQk$~#J zVa{*6r!_5w*himuKp`JjVkj7dZMnMzXdO77F#r4SX@8P*^#=_bTQK&4u%~}{+m|pG zEcuQE7=to@QT^_ByEn8qRmvW%<|L{pnfSSPe3Jp*PKep-yT|n|KV+OXqyy40;NWcU zMWc0oZ_Jl&}pKy|Uh+XN~1(B=E*mi^TLfs#yB8IbqQ>-hscMfhFn27$B zC!BU_(S8!EAnn{Y1}_12?*&dqe*6nN4My6FQkyU~OWOsk1t4aZD9z2Pn_l=`H(UK2 zY_BX7jT=;mlKh8matrEGzTD0wd|mX1-$PI%A<;B8s_{oCKC=9P6CZzQZ}ULUSF6p+ z2fXNcmX`r4qM_2#RHdQneF>+%^?HzA@!9+j(03~<)BLm3@qwObe$Y#S63=+pc9j8| z?06g;c_!50+V*KzCNF2sUe`wdx5VH0|4uf_nW*IQ%1<#0K5yRMvErY|n0?Z>5D&lD z*DXdIP(`RrdptoeYv&I<2eq5&z5P_o!7R2BFKo2l_=#}ij15Q&?V}pK7zA*|%`Q*p7Orv$ByX4_rj~0((_N$sgbHAU+#jVMGqG#Z95q`HyNK@ z_f{;a$)uSEbr;%z9QmW}CP_T*0m|@aISf9r91eJ1wQF7<^@JH$a<-e8uLcS|HBvHs z{E9bS(lIT-(d4%vrzwj&qA;WR@*{KAWaG9+!A%2e_#=~pFJY3Gmgqb*5lp`Ky0<2}IBuCzTo)-As9!y8LE<!XQ*)$W^?i4-lz0=OJ3b|b)y}U-c(+3~S?`*Y-@81V7mSplsnCvf zs%cUn{wpy@;0sF)!q7cyb7#{JYP$(qbQ*pP5k7Nn%h7_k%8X zLN!W^lb+%Hksh#rHT!l6?^q|7LZ(X9(&VqzMGo8z^lW63jK4=aKDB)7sPt%cc$+;O zNn?H7v=s2&fORKP`W-dz@b7Zy?|(D2nus<3C4X`#k`#9>Apc5Pc6Swb{raisxu?x| zS^Y z`t|=Ur1}50QCMX~H0g^OG@9tQED6V(#pONnbOby}0NE_)u(uoFO-y_)PI#%Omk2HK z*_^OXOni_}Y9tpW7V1Igl_m)Djccmq=jWp`S&}d|zviiK z^LS@Qms7E(lu&Czf%7|N-&B@!9yceVs67mDM-pOV4}f_rY^`@&1DUoM<*u+KTmnN@ zU{xjEjHQ?<(SUGrDMFscI0z1U6>+#^-b8w zv2ogAQV#uC+egA0AP1GVoNvalDvke0Z-Y^X|mLi zSN^4(+-Im^?9|j$YAU_sZ}W3uovC$3YTeECEg*#f*%k6zXgI3Sd7)(ogP5t_2<6IE z3b)(+yT-gb8vNw)7t3&;D)*?so=!F-9pmQP-7RgePa{wEvC^FB$<_t}{^`@F9^~!Y zx9#32r%P;94M}NdoE_n9)jr+(^*Fn~3LpP6@glM8bPaWtL;0wNp|LT|Ywfd5AJSgh zr{9pv1>Mgdo91oLH(xAuG8KuwUfOgDQLlA!0Z0@Y8gUP`Vz?6!I~t01@&1ef#}rB5 zYd$GSD6#~z7C~xEYXdkHM}1oi3i@u>jtU?Oxe5W&Xm4+Ciiq>%XVlw9vRrW=kUIDE zbs*-;i<$%*Z8mM40T~Fu2(hxVN`L11g02NDOJ*~%lxKCDJ+6l5vhd&X=cwjwi-iRb zblL@O4=r91%P?D{&4v9sqp2ntu-cz+@a;EU^)*AIDbg?_;6$`=5U{ltV7@eHr2uVr zgv9`~Hg=%w?yx*ES==jKIon_zWf7O{_4nq=ijed9HHTE@H`vS)3o(mbxv7aUd@*D+N|u2q`$g}e4$`)6BQTRTG3A>b%eW$n($D`C6w z06VN~nAtR-X`l$XP(9q=xLg*cj6v9Y@wq}a?9zVi{Qk5ZF*okiU?Dn3#B` zg+!jS=X|sG+x>`=8WVeH!UDi_RlIZ7pqwXto!t;-3$P&*2puPA1pzjWJ->i}{dSe8 zqqFl^pv%l;ZO!=SJB8?#<+WvewT1i(-o8`d3U zQ4$dmu}PdwQUtPj4j7ZfEv{0?((##tVpch_89TUyb@SK<|@C(^TY%jvXJ z{w`cr(l*8JXGsCHHs3TcXkW=VNpo{^sc8`j)}yd(%MBVcKP(r1004HZ?c*b}a~?hm zwIBUYALVIwW|2OKEmz`D(BDX5vn+@zjsti^Ms5Q_hvnPmLVARj#y!^_6MNA-(dg(p zImw)C6WGs%@3jUdPmPQfndCN?VO4`DlzmquO);+E7x(`?SHzB=Kp7kUVu6~5h6YOz zZ6})L>s@&z0qC%3u%N}P;PUpk-h_DAj(p5s0Xwr6Ilr1DHs|_*EMj;j(xyE(9_hyA z@P@@y+G{s;v-lOhXElCoD&K#CQm_!WGHOU;A+v*zOEwmwC8= z*RirgMCzHL!VINQn!CC*R40&NJu*uWN|9_KfeRTgn~*~FD_DF_$d$ciI2z}MXo2Z+ zo&cOtLx661ezH@{*kx-hNAncGUceS=qzh^tXKG~SD{7D(#rXzW2JzRvwi?V=0J+r- z4DNG2SJwwnQB_rS7ri$Lf0)uU2x8DyC!dp*m#3qS*!i}I=9R zMOW4uXmX93zH(J*2wf1|_*`LMbabmd;gS5>FQnFet^&lVASabyMg}l8wV0%rrmgcg zL*Zig&CK!V-Cuqozz?$m-zY~9bcNLR(o&XgMXr@Q!2O1bFa4MW?}W;KA&np$!TE$i2sT ztboi3hv<~RDN4J-ui>5Xf#ENpWt=@I7%$9rw;9J6AmkuEM#UQbs^v*ACrIm!Tr_3C zDnHZolZ3L5o41qw0opQUfyaCryl_De3Gf|@Z=O3_8q5kQ9kvv;p3f~1hP zv$Inr^)ykru*)PstMWDTT_!0b58lx-V{vV!cs1Y~1V!Y1NDYzW!$S?$BOpmBHLB-l zVR<68mGu;4Ya zFlC1y13~%gz<6=P;jhR#-@FBc<9ri=61jwRWnE#FJ)EW#fEIBwLW(_=%<^C8+0Xm; z8ny-pQt)|NrF1yZM6!5499vVRsR&-FRcqs#n_?*DB#2+@O7 zw&j%|oWGMD2b%O8DRf7DY zp?{dAbvOHb{8XdJ{`)e2B8}?+KIxDU7njBV3dUpnKP+s(4Go|kOTbqe#(>XnMDVs$q@9){ z-nA25TLJz2*bAn6OHe>fC7mwdFjetECtEIR6t0{{4Kk28{Shqbd;B$swR9y}nLo-X z4M=__fAOeM|IPegBl&-*x9@MTo0^(}^gn0I$B2oEF-rNL9t}wk4G!ugtqo6jQrKv6`ACUR1goCXn*j6}(z zlAF}~wDbFJ-KyQXb+@)|ZQb4dYpfBQPk+uiPkz4+h_VTD(RMyZ+geCAat6_b>1oiU z7vkE`%a;kbw-k&(NgyL`MJ*BASAQkw9O?`E;lhae-9vBtQx{J3`8EH`g!n((4gZTQ z;s0?P{|`O*t3SDAwTI1ML84)u&+tDQ($dn3vBG^LBf7NQ+z>8taBy&Q+k!&dsy|0o zNvZ!a@kOHbOGi(fI$>_1Dn>_7FD53|*x2}vjJC|YD@kOnLh8Sy&v^=`6|)R;bxI!t zTEzV44V!EHAOp9<;7|h)3MPk$fBg8d8}TRc$#DNWO8qI|I3WCv($LgIp>$h1I&zic z#o_-A-&IHhn{&JwPtYrT(R5i^v-x*R> zHMLR)O-N^L$Ez{?C#+7zfCd{=QDNRl`~oL>t>M|4%QfBI-G>XXv%o-EU(f%uNx=7$ zNrqcG!VX$lvHmwVI-xh^hAXI%t40i3^YdsI8FxhSS*mOS-Jza@(aG6a!=D%a;8oyr z&Z;S}>QI2Pzqsw6~){g|Z4*7N7M>x_*Jn%9~{|c9N*#*0Mq0T%TfGDTVUNDDs zd-v|$g}K>TAY2>*JA*?jPtwm$>Y2sQgnEeNzX#LP($Hkh!3(9ka^(TgL`WFi zzSh@EDr(jkCpv;kUep~Cc$G{2+an+s^ycXw^y}Iox9e~yUG=n3Dk7jFXI4>Q?9Szd zXr5)Zkv@>pzkmNX68aMm@=(1?kmdWex#L97Y zes6C>slys_`o76n*KzlQ)$%F~CR395t54)H!-i>TYBB-L3h|$`A~_`Rv*GX?utP)I zLF}xoP=A^DNX5~ca1AU}>3~7D%&ns0Vq)-R+7SiZ6k}uK3srp)b%5@` zUu2eij*sWLY-VcOdT64Vl`F@GKp`~~sYm2YU$(oIa@E+f4<>YX34Hz%=W`?gOKY)at0ROi1ujK>=gG-8055jy!oE9dRm$MO%fG7n) zhcDsCm9K&rG;(M~b(r!!(>E5|Cb2P|1JFW|e&Hz+@&);=U%!aoS4k;&l>-Gv4=mnQ z28KMcKYPBUV`uq)TZ5*tu zPY~9OoQ-3{>p~fh>wVe${;Vb?8`E&tL1;ri#;F0C}E&0&2hcAyrI7S=H0u$ zAejdv2cM72wDSLF2_!dssH{FD#H7$0BRf7ixTN!ZN`@!E|YICjw z9_jf31067(xJ*dQ%*+`_^$;3?gd zddmr~9auX^o31~W|Ac)i42?eB*w_$1-kVvkJy2R_>8r1w8n()(7x${5$+?=DnW>ZY zR=dvU2@i0jpFJp#io){>}4Br^Oc|YSuzfb+CEK9YiZo=8X$lo5hB+v9S%mDpd}r5#~DoE7B0xlAu!`Ru`{p&eiMS;oM-rKDsyk^5>wy1kX9h&LE z*t2G*VxdxEZJ2WzOsjFr#qCcDU`iosn*%D;W8{rx3)8On1oA)kKGR7iF#5Gog!sx{(X;`2PC?$F zh99;s7*m^stfZu*G^N-qf#AE*9Z+oqUR4my75MO2UXzbDjCm|dF>X6UW@>6`X6;|P z5~WDE2H5Z4zt7LlFCk&r4Qsc()aU5npbfiwx+#z;9qcWU&ouKrD7VKF;pkXgTpSw{ zBe$DpS;Y&9hz|%-H2V!UqQxoF^qM z_O35@qNq4l;gEc+%FqNDEqDNF1*izw=-LbpgF_(V@m@dN;KJv%OU`*sHJsrpuYj|e zV^A~fk_c89fOwWn($AkKB)`O-daUROG_EmIC@*n%>!z@#DEJ)ymf>R!9EXyz4Zg)S zmCm?HuJhl1Ssfj+Z)pq6^hhnkAQrm_@F%;Gvem9+8KQdvM$F*b3v!`Pv!*^2K@b4J zFxo9K|5hXf4&3udVW>X*CL*TD2A{~v;vsGzo6m$Qm=>JqJezsuRICT8m`ZpE1wZ2s z78`5>#QDh=wEmpkS2QiyAIFdK&B3G_)_P(1RWx9Mm%EbRWoKv8w1Y>6ED@M+y$Mjm z0%BQLrL$E{Hu?1nfB!vL?G9Ck4Z_g`0Wx6x!9kVog!jzk4DPFwBqKBD}7$0&Q{MjZ8J+mM0c-nmbbRB9e zmIY2E9PoF0BFV~^A>R@Gm*Vz+8M0^~M0~w^HWh!JePt;r|EHY%-_KS5hl2e7MSkeN z$wC2*l}@IPg)}cem1vRVa{%wPJMNj!ufjy_3n|;h(~2t_&}M3l=l)}7E55;D%TLXE z19J!Jq<=brU;EzvNj|qM{%;a5|K~OV|C8hXKh?eb!}FZ&vw{i@kmsPWCroZz`&Xm5 zE150RVs(k*JeuN%vQXyZqp`g$kNWJHYe=PITe-RQ`0Opi2743BUYewb!L>%E@A6$X z@@`u=jvjyOd`D%Rp7B)c^guygZTSy}EDfIB!>JTLLW{g;UeG@sFA4Q?SAGr>%64O{ zWM)(2Wbr$)n^?xuOMLA}pM7<7pafZdgjg`m!cr|9gtoT{vKo+6Q80*BK;;wy;Jm!N z&uZWTkVs@)oDXy)`m(j!>ONnmqT+L2QU}+&jF#j5UoI zia~QRDy`xE7&p06X`XLu@ysbiM#{Pl!l>s0*Tj2&v*(iqRNSS}vcj7`-=^3dU$UQP zSqt*aDlFS5;+|z{GCthTZ(q^{1KAewxL$w=);O(8n8O&RMRny_zM2CN41xE7(@sT|46#FM`eH90%`021E6PMvLu zLOVBVl0&@766ZEuxt!>)(JAfOX(ULCILRD3Hy1DHE z2@jeGdSb0=522TTbaccN79L*gec&?k{(~2^S_~N?N4|~g&aSNFOxgaH zTQ^feA+}4l?TDj-e_>j+3UlZD27;^Z_gth#ZC=B<=WSSlk{=Z|r7~W)E{}qj&b>$H zi+E4b`RK}ST6qQynk#eJW7loC)JTBO zoDjkEq_n?An-R$$KOW}zqkC@Ij=eLc%-L3{8|!y?7_;Y}sXK3ur^?)sO7)_4yw&C~ zO^FC1=(jC>!k6os%W#2UDvu#diY|r|86LCwu06dhdu0O?;GEfqdulVugRI>Y+l-tr zDW6OGmUg_p-8Q-~S)}jQMo@EZ%2={6Uq-C`&Q2N3ZiU)JfD#0s;{@VF1axcJ2|%ia zVuuDE0t+ZA4or9~=c2fDTL(1KVvTLfM-gpMUm~8A1j$p7fU0a>d{BsvkDq{wmQJ0I zH{X}|cw(Ovid;7EAF!%b;JOUmrUIbo0Jy`lgn!m%<>ln%A%U1TmK&pY9WDGWN2#M( z=L6@kyY{(_YZgvNqb$=*n=VF=j;`&Ptr4pzf0&wbTI|-klf47l$yQZi=R*g(q1M!C z*2J%~&&GXtxFvALhgI~Q)#C-~(9Qdx|NSR6X&3ABl z#V=zeTq2XsY~o@_zm)ngUrKWN3ZE6-9Ui{5Lo?TS?`)0l>xLPHN^7N}BOxj*AxCPc z=f0$Vb^b9DuJMF~<{_b}d5NW$zRKs3!s^`J(s3VKEh&>C;M$=Cva$8?-K3*QYaYNDTBHd1|C6CCe z@`@Ph@$<*(`a)SQG{coKp4H4(JX6;KO@G8>l0Czo9!}|>cPP=z?p8i)Gf}I*f#Y5q zbDaQSWG_H==Q^UHH=;qy3Kpe2H1wiui`Y24@L5ykZh&shG>3$I`jj(lX90SgXp{zTbB0*DWB(!q5Y7mWPW>0zG#4goGdr_4NUO<7{X8 zC)M!8R=uSXd$K-;lbymvg*R?XraDt8y;_=Ine!ey&EhJbdQX5!)4Amql6BYAyZ8Pj zywFglL`SE*sAg#7mr9dh1_KAHQTfu}E>>R2$yNP>BHp_)Lg_9~y!lqs@w@`aMau4{ z0irAMMPJxUZ+tb(s8lj;>)e|UWS7Tnnu|T6|L&e?Rutls&r5b?Hd6VJ$9v%2@QsRJ z)0TH!9e_f80D~!zeQ5-P{eX(Qy3PP}x&;K<^5v+x^#;pqqFZ~Zu3Wjp%-q_M$gd|0 z5J{+`6NixaC?qdeJ%GU;I0YV!ZNPDDo6th$SAQE zcKdIi!+$2n2neU`UWA`+pZChHhcaQxcb;VU+Jyz$t6RUguSY0P zX4uh-o)XKyu5Wgzysv7U*yMwEwcjvzbe(MBb7rAO<+nVL3|ZN!S=ElfPleWZGfTJU$CI1@6GHk&dd?*wv2^bxc&-dlGtBi7(#Y+gxY8OERD`oTU}&iyaV@q=NNlzwEY8#ZDpj( zM&|si+QjViqUN50qJim0hOQPxAtXBGXn$#8Zdp$xiBj#VmI3KW5|;A0Qz`$XJp0%> zKh9$#vZ7KYrFcW6$!>B)DemmMcQPYJmgF117q|Va8f{CPZ9jLDR@-?CbzDq|NiFFs zH+B^quvi?K=My@{1+Im;W?9Vs{Cq@p_mIQ+$+O_>djyvGr`Va+dMsi`tVE-hgHg6Z zV4cM($&{N>Hv62-eUnm+w2Y0!Bwl*GnrdN!RPL+&NzU$d2*yzOD3XUQjcgGMc@1Zum6 zbXd?Lb|ISn5S`NLi;9YjuItqKZ(Grf*s>J`TeoxdaY+YUj<~`1I^kVeZ{^xkYQo(< z=7u8iQokCJU^0(ib-bF2X%)TeDrPGbwE~?b5k^LTH+Ek)ej=mcjj-yyZ9jNEq~AZ* zvQNV?+}Gqstw0T{uDXrl!~tX1AKO z5Fbz{N^Q(EpQ@w7Lz<}~=+WomwClXpoi&Y*Jm+E3Cu!<-{9aC^vO>sXZ$u(hZh7nK zY0QUaUJ9>V-hgn!FQY>wqsPHl-d_o9jd^R-d*%iVV5qMbhqSgD8$lc&H(+ekJ|Y_t(3* z97BtC;j|`karBSTdG}iQ_bI$aYKFK_{xTn1(r|V4A7aA8=#%^CjOP$}nI)mOJBId) zXv5+ojm0hSsR9zXSqw#9dG%ME!c+P*FIz>=wwyaR`;I?}F=i{gBv(S77OQi5dpq)ndny_cp`%BcW+^VhEi|obS9kOb zTIW|LSSQzT(!QjlR@k&Y2F&ArIYkvzYuqOdk-wd(-4`p8peEGO+$=*0S3XSm8up5= zLQNLf@RLA#E`in_`y&M?0p16)elvroHPmu-uAWGETy%((4uBggwn#L?KY#9}4d7@R z899J<#?bSZPy!mRSejY5zHmwC(b%IUgJJEY5UNY;4y=!*@JCgHM@Uq z3S|0}*DSAC*^sNb+XmTfy|31#&3Lc=J*Jw|j=Kamyx<}B#+VQ#GGH+^w*8y(U`*)@ z9^msIb+1(M)kxbteQ|J5?XSy4Vzx?+@r&UcF}O+EZoxjauw>y*Q5g8nzxZ8i7#k@f zFs;3_-)G`7B!;llQAI^IlFtt&U#T}9+In`D+NRJvxN|VJi_%gj>p`hE%9#x#tbV5E z(5sWnQ1}jnT9y38ff?Ar;F&u6{pDgbKkDuU75OsV40m_+Zs3nd$e>B)SIG+$Qh$@| zS^!RwtL72<*5=llxVGJ`lyG*FMSjVTQy;8_DtSw(dxS|!dmGIVdqN(Ti!sG@TDgIS zB+&wO5k1NUmd0A^nKQ?yj@ei&d<>Kz-8~mSX3{w_ihFW@g{S{l5t|Hppp+si=96Lh z&3CC<^Y8k8e0F{^vQdc-`Al)<+J?Ei=i;exrVONvJeSAX_}=67W#$O+3o+hO^!lxz z1S6cMayJ&$9%@T#u_0l{$;G$)s1Jh$P}`^EGEVlg^O5CiEuP;{y_p|O0g9!Q?qxAY zG`*F!FN8{evB!MU5d5>tRNh{=o-}r1s9-ao9<2k>_~Bv6^Uxt{aTwx~3xrO@V`=Hk zvhPqkZ4Qwz=nsAaG1KdMGGV#REzXaEckbLtNwefCNmq`~I~pqg-9&BJGNHv+Z^A4f zg_#eD(H)*|rw!tfw^fAleQ_s(H2=tguwQzm?IaD%|d1^+NwEIU2ByFP+&*bwj zn$(QetIoM*j^I9Tr|N9e>6e_4Ifu897BfFjCD3*DW1E`Y6q_+2qRd+N;-I+TB;@Jp z)EYX$hosSFi@0!S`&i){HNv0zcdO_+5$bKH%bH!ZjYHbj1gmby?Y!LBZze^Q%1pPh zn7zySK&Ou|Z>kw#6EQ8;O=e)=I-6C9k!AV8!^p{T!&9_*xae`3tKE2Kp{5vGm`hY= zJdL@yH_4StOr$QCE-6#w>Jp15o_k3JtMq&A!8lXFhgn^QSHg#}Wm6O4soZRc3Xd{c z+arTZ7`@r__;7!{k)#Um;rF~svoRG5qnkRMjo7L@^*;4s)!fqlc`hCsp@K9^{llv@ z_*B)S)ANz3zhX~)-2WLSFKIhn7~xxYu`VNe2nq6=mZgq=Arjda`5oIP=9JFC3zg5IwUOR zt7wv*%zT9rSj`RiwSnNaj*6_E5!-H1l9%<_jaX46ah0eUdzU)AxxR={mmfx06Mhw? z;uVGvl)+4PU-UvFSr6{5A0}>uJdW+v=q~38O_nFmJuIm>?7a_l#7wyyP9;rVmK|!@ zHipj8?3%kRU1Q4Z{18SjZC~BYq({BuD^i`ks5o}0v(rUT!|!CTB;E>ObJjtY^?KI% zYTCHX9p^hvb22f<9MYf`2Bphbr9W=WuN;nqX%$NutTeYDg{j;o@f5F+=8E8B#s!;6X0240iRkaivIoEud1B(iBpC@gbg~WANyyL8}Ez=P-A@ zP0V5A=Kb*AXDs=`Wnzh}cx|>!iS~#^()Pv0k%_KGUvec|M54NdE&}Id)h(auI8DK9 z7jsKQhfI@ow>=-Bk6hfO3`t$pOIgA<)c5HgJ8zIVXZEP#W>Z=83JltDD(&L6iwzX{ z3zyL<{l{4=i)sNNZ?EKTsH9{mDs~NZw5R2hQz{`Pc=vTns@l5Dhx~bXOJK^AG%KmKrT-f|2U;ptpJj0>Bk8JGQK5wLZW{4Uw zO>renZKEe}7_E65qukwi@1bq531;|Jc(i}Ayi2?35esMeTYZ0qQ9Veu;|4xu{(9<& zIk&kasL7Ylx~$lUQ&#bVSlGY#>Nl*saGX`oVzPS826v36g^ZS6=989h!2#u8F!MXn z%IK%}igz4zJ=^P+#jamI{1rUhsD&T>l~WwD!)7 zBMINj9A%D@U5_%t-G>?U5$ek|&QFly&s!*us>B7v(>E0R$N$kg&vIG&T^&bOMQhM8 zqf6*<>MLFf-}F3FlnkJy@^orj z_N(}6@7aGFK#kil9;N=saQ5*wa6ZRg{Pb0e;)f2!?xhjDHg(E=RyR2}Lux#U)5e9Z zN|%`NvgL-k0ru@Unznm-*Nm{8f?6tWF@hdv<+z5i<*%iT?qA0I91>5CaNN=IZn8!e z*RgxmGKJ{#zv3;zOcJs&^h0;;nYVF>BbDo8@zB}7|>h}HyGKp3#%#8atN5*P6 zGwLaS;_F*Vc|J#TdpnU_yO~A$?(m{sggUQ~G)8@I%IJ-1qxW4Rm@e961*qGJ>QLm} zpCgP$QT!~*Y6ZVsZl4=p*DbLzZ^pc&!OM0r^U`8(=Wx;u0eSX2C=@|jO*r!WgftV~ z7$-d>IkL^G@v8DeqJq!Gi&+jrk_=DU#BYT?EM8@h*0PQ|6vgmqT6jjdoyHotn~u!i zpd0g|7hO5uB#a-bK2!Wi`GJd*0?4gZ*yal}5l_Z)zM4A7;aL#2)Ax?p80LpBp)|F& zhqKF0K?M+D^E8<~J0pHFTzj59vq(XzTv{G?{cI&m(5vvRf z+RM?ywwp0hh7gXvn$MgaGaWm_jtUMZJrLr)n~tNZeZTZV+p4RH+o>s^3w0vnsht{b zCBHRJyidgmJ$XxS`cWBI5@OKN9rGy5g%^cgxWPH~`51|BgGn4_CgO1XDqLZw2fcfg zRcf7u;JtfcYdU{T+65+j(1*5p95Piy4J09zE~{DH7g2c|a$7gi(XrLXzu$DOMbHkN zjAq86e2zUt^?!&tcO7u5bsEzTC-B;62uhyAN6PLeOEC#yvfl1rRaI{3EVX&?GzmO| zRd1tMQoM<^kIz!b=FD8VP~Gg@taHd>XPY`2oZw+RW;f80aXhrls_^(_g1yu3_9FgM zxLpRn9uv67nCj&$ryoNT)+5#Lp#q?4%f7mBd0KtYCf&a(UX5!NOk$?HEDNz4K`kCN zwLqUzemxAq?ZF}EqGPbZxTBoeT}DA}e0UsiOj}i8Q=)q7SoP8Qf)(2jJpO)%bZQ1h zRVN%DH&EYJzfUp}(qF3b+98=C5v>}K<&`mbHEn!I@$54vpJatBMjo~KH0_@gKg>Pq%A-`=f$b8rT=L6W;vwHD>>xpLbmZy0 zc!jw8_O%-1L{pohXr6@F?21}vdUKD4+ieAH&W_siw}+Xo>9yy!ju;|^yt7glxErMh zckCqle|IpEBerGtH^i&Bd5~txBSDs;*H>K^k6RBl%Iqfce0D40J}a1ZK8AbHU@F3V zCdYc>0Su&hPySOHI|E~_q)^>$G3=Kh^!hBr5XKVd{W{}@p}iCu?phG8s71(299ZIt z-0b<0QS|`h-u~f;3A&?Z^W~Ud6I$Ex=`kmxBDPB~s|TDm6P-!f_I}+PpOvr9S_Zn1 zTeDNKAg})TD=79q!ZtdpGV=2PV^7nNH z^ahPZkIvGiY}Xr!A33HnsCOazlz%tWD`E%X+SI?1+U|7vt;sD zS~neEy~1-#7wRS}iM!XB=xY48e}vdbH8QCWV4rED7xEQ?Ob*hF45Ch*@HK-$iO*3{ zl@2rCSFBeDp5t%t!<00P@j&}dry)afz&@J^)bltEr&g{jR z$}5W0JrZjk>L{PkYrDUyOt-bhFWYyNwX4`DSLkwFd$ZQtK&`wEp|#}L#<5hcW+Yz2 zVaPr;Pd>+FzHQIad4eD^PRy`2PUZWD%bT;*jZB2EFNM4l6l^o7lm6Z+me*d^K+?dG zt!lLf9Y{iK{ImTtPA=i>kJd2$XV+CbI@$+Bz_B(a${v&jFnEoD(dM4J*HJ+2?t-n@iXUBbw8&bjNYj%Tjk_no1 z6Rm&EIIsG1Zx6TqHRrf_p=OIX6u@41q$XE*t=8gMSVPz?RSRvgI$guvYSR*IlUmtW zri)|Uv0dd`eKh(iI$F)$S+>Q0($RqE@rytFW(s?tXX zXUp@|S`2n}uJ>sf>cg=10L;b0^@$=v+QCdP{QV~3Lrp(Sj6=f@H)~GzVr+C2=DXA2 z65Wiv0l4onw=U;LXnFZAM}GASZzhMZ#h!GlWS->eEjJ8@Dg?Eiuj(0lJ@+Xv*Hwjt zev@pWM%IGtG7k2RCz~lM_=~pU%-eD$(-Ryn8Lx1g>J{$&DEgLhjIsovbDn z!_6JNtp=Q&ALlym^!Q}932judQryysw$G10juS({T z;qo0+vl(J~SN@g+2UC85kpGoryL^ix*OM~d%L|uPp$lUC(j-vNPp5b3I3?<_1GzaT z@-*^Cr@~$9E1~!UGYnRz*2>;W=VEl@m_JLNm(@s|qZ$|eI@omeH!^h-z zcbNq;>A=PF1ZoT)vvF8U-jKd?Cbb(SH>Swb?>YU-+Vkg^^|7e!Qc-NY*^j+dwIjZG z)xT9+cqPBa%5y1m=v_rjw=5=ilmD5L{~zjsMo zmN|56wa>+Tu`;g^>W`yd_kE7g_2+JFy05s_iRUk_zG{6r|H1m;O|W`yE*B}{a`5b6 zZQQ6W(z~a?aAFA6fc7^Y)nwzYu`X7&#vZ@4TEjQGM-Hn|Feuu6=8Xt}D+YKyk=pva zK7?Mq!GO?kvsZBR=|3e6A~iz8Lfy@4d}7g7fqLKM^x6Z}E9%%C|C{Z8W^U`#gn02# z2I|jd*SxVeMK3OvzM#yh>E&MNZyjs6u4Q~&bhAiAJ&jYpU(&8g&5y3J&z_ftZIiq{ zSiV^!jb`EjkVO(;G*d`Kq^h#gWwAR|i)Xdz893@QlHqdC;Oa}5O9vIpNJLReYO01{ zhhfGyddG9B+DO_PHVGG0O*#}gcSiF=X`55X!drd)hP~#>dvhH**)Z3+j;~eAOB1)C zU(uJB$DT$#f%u{CV_Pr_!JO|dnEy+XB2v%Fqc_3Ubl>QX3G*^SU!pZ(bD>ipY}49!;XDc@vo`d=p* z7!j}WU2ORfUSgYc1QO(`-EcVt3XRLe}_SXS=CVg5EdJl5X-A^q0uHJ2wh z4^^vhVeU6S&eZbx%i1J1gDp+*pWe3CNwMY*rp~ad*4WYf=;-JuuX+MEmR*z#Z^gs- ztxOP2sncTjmoHyHYvb1-aOO+L90X!wo;xr~H4g$IQIC?0<<~T{#Ue za=5B?jzE)Qn_Cp@g?68`!YH*Z7*w%qurn9 z4!dMhrmVUN;10}4xfPX@T=FnNJLsI-6Z5ID#j(sb^9MyY=Pnb}dfw+88M63p+W)}c zZrbrwdb~t1Ku7yv+doKTNSB_+^xI?;+T)_#s&nEOOxWhd8A1!!t%R-_tC%vSqRWnA z-zcA*rJ^|9B8l)BvMG|5Zn6^d`N4&0>TZ5b=9$*3dvVqzHEmr-uYXBaQr02$SWrR$ z9}$H-@Rvhj=43Bf^K6=qus6dvBsz+7#IIJIiIdq763?J-+yiA|vXf4P?c% zfmlXF(bR{McnS5o&9=JhUD=;&J^t}UWYOThOQ%zRzdfq}4WW_lm4#`XDNC;RY{T4; zB}=Q!j&tkqIfReJddp@u%i zkGGz;$gC;aMmYH>xolLP8LCw!&Kxc+9}{?^~uT=P4~!#4&m6=kd05(S9`hdT3aA+D3{^jT~&e3?z1Z4Kf6z# z$RZ-wCO=M1u1s|$`L0f7ZwZ*}K|PM)-o5xB?k*0p=U?l)VETmcmtE`c+cIHv@~@@P z%a_8TkxMF3t&mNmR|TM$3)+}gdrrTKZMD!d6{n4@o?~>!vXmMnT*wRZ*qiuWo1C4_ zZ+#o03HO=ep?CcjjTH|TdQPKB1iqe7;WCG@YOPN&U{)M_bc0WKo17G{)ve7^#+2uC z!)VCnk;3y3=mDA??pPQsX&;Fx;^($vHf6XEcl-8sJ^z5?3Z(x`xKCO(lHG-&?f;0h zuiY^J{|C1JyRRUj1!hVFuF#0MgA>Ap^Y0=CT(8rnJvNuM&_*bF}G{;vy$D^@`N z)DC1F`9C__S9N55%v7|XdxDFOVQ4q^U-8jQ^K!vjPuFbAV)F$ND`<+Pa84dn-7^%*mZuGpy z@8#N}fN?|B7X6=9ZR*bF_<_L2(l%!{7j)6%OJ@ zHKGUzgnl2t{4M+F(IW-8O#EkpB)bf878Rw!FA|4icez{gy2fl z<-Dpq7}n-3oON?^18uA+h`e0KoY7I=HGwGtwH(H4*H|yN9hz(#FY-F5t4D~FfDRTY zKIK*eO5T4Ips%7}qMiyucLo`lWrUKcM!FKc&DY1Babj>2xernLHu$#P z<=+X|TzSxh=9f>4j@E@=l6yG{6kjfDqr{ktsI-O&TVPCV{GMs< zWA*hVfG?9zg1rqzPK^#RP?we4jQI8SoQlDXEL1~rQ4x_3(&kAk~$x*T>$Eo8h0hrL6t)-l5 zvH}uo<3!%ypvS&V$U5x)>$Y|$D3xV$=Rr+7YiRR^uia_0LjaBlqnL+!S|qTzlV?mJ*$XBcmb6;oMU{31`1$*9%e=H4$P@ED_S(MD2@>WlB`=M-o1fo* z{1^qnD{vpSK>^wU?`p8XC{=_EU$7v+rz$Y z7?|cda=6*o{4uwpLNKxz)T~6>M?(N9doIJ3&-fO)tV82})lF!?7g`p;Qo-u+=vO|t ze_yRFOZ;ECVAt7JXHbnQ#R``~k;>NA7G(0EE(NinpyS*p{>o6B30A7J9>y=Uw6tu# z+IqZyL>#<>`_scfTS=zt`8w$Rd$$cN3!~@Cy&7s=;*y=PyaM+D;6PxhmZsni_o-+7 z+BXt0F*Ti=pU-yE(;J1qDSgbw50LcOh=|@gU*A4vrhE5(r=ksL;3i^d)g1zUC~JLb z3p3Pc&7WN>{|y9pr8p`9hv`Rrl0pDigDdN2;T#;pw}tC9*?WL!1^cuPKNsD14wp9 z&2wPu=1U^5y(JcEHHk7~mCoDq-cDwnaUCG^UIf{9MxJr@92j=h7ZANg^I4%%G}7L^ zYi3%N`d22+4iaSxc!?8Un;rfzI|b%qIf$7%7Pv0QFyYL;IyVO(und?>Zw6+;S~t1OcZ_-{X!n2yc&+eZM^UKJL_`$SW|E1S^!idvWA58w7NDuHKY%bfQKL zrz49wy??|AK|I_)!K6nH_AN9t^l9>AB1~vQT3ZiHNN>j0))ojJvmg9t6)$^&4?=)) zr6*lk!h632<&4QG1>wNL)Y2!v2c`N?{If%Wrxx=?lnPj z4{QKUBXprgXn6Q07z0mGxDMa__tVcwhJQ>=OXJq7_yt~rjs8`IHOOvx!OOwNw6tcJ z`E6`&GI0qN*)Cb2fti!{tnd~n$eDqf5fl_eq%UrdOIaU5t(T`}tNZxqK;s583(Gu! z0idqd9sjKmiAD>6KPeygSO!t0#{o@b9j7@6Bf)0HwX(fy7Zn!P>DQDt*y8hrK_+T0 zos_gcRy!fhfpu(mzR&DG2?9Ltt8DuJJtibR{_|J=Gx5Lw@7Ck}fA`z{!A!Yt6Vp_H z2b8?7iv%S<#0DOop7O%n+-m{U27>MzDKyR+5c#fz-jq`J0A)KQei7e*wsFvMI|NMM zJeXZzd>NM8#zsx@+9MEAa700MPft&uoSY2xOojeIK5R=(|1+Xuz#PRn9;2=&;K9@~TO@)BZ z3J%iK+^J|ln31lPb5Z^&~zY4GeIv+sNNIU>hXkua_MDyNYu1sF`86y!u zG?5@2Zi1fW_pe`}lG>@@S@mHDZvDBonitC+#(f+X2xL@5eW$^0&y!* zPYZE{@rY zmOW`fAHTF*2k8zu<{#`ZieRk-3lAm9)Ffx7mK+FP?13+2(de=~T)GT5A}2R6F|}9{ zquipb;a?`|N?jVH7z27C#3Rb0DI%Mw&rcB+yy6-(5W9iAwL9VK3%uR27fj<5rW`o!B*>vd)E!RL=4_EDvW=&w$_lKbg9X2kPr z$5-OfXcp%zAVtlTjo5kuID*Gf62`j~>E%_&h-o8`Y)#G>c>R{vzOJ20YyxF1{+yMY zUs=hCdU?pyD(n$ZS69dI4cp#cvT0lgM|4}p6y7&3G@Nt{UN>XkPgztS&>!T)nC3x< z3g{_DMn>7T`f6C=doRCN1EYorK=p$-U1(TiAHkl!kQESTyvo-)gZ3OY zUm<|kC!!HXORfGS-L=OnHLJ@kX$q0ufI&r~EWbjWqOLF8)L~@Yti$kG3V6<;Tcf|d4V05lTpg>@D!V5tswa0_ zMC5?Tfv6+Y8eG5c*ktWjcB=3Teg3|LrLhIl}+DG#U- zF;UT!?$6QD99F>j;rAx9(aJxqJwiCBBXG=@(nA(p0dPiGqJ_mpwh`_s1@<>ZcvZdq zIkeAj88CtSyX*PX1CZemu}|HeSpbnLBEc1emH4P2w?9V0aQHZcoFMwlUC|s;$YcO$ zHKVXo%Z_0ArV8iNVKC4~%@W65MJDn>dB&#z+rxYyzY`VpPwNh_l+i-*F!u`FBhcc- zYxrmziz9gD&bhg}3keHnZ6AWCN_lATqQ?MI7O)sZH>Qe>Xb6h|(rx>WLkhqj+fGA( zti|WW$1xNdBEJ7*VwQ3;@!fe3d-om%;?GD~mk zsLO~AxTvSi2InBOkA-BHU*$U7eiL$f4j$t}EoO_@dNQ7raPC4Cc*D#JQb)^^Lyv{hjn5d9L3Kb3 zla=9hf^|ZA9DsFKbfVOyq2L2LNH?&Ci(~`Y3hb-AjA9>e?zZj+6@}7N_1;N6e@DY( z`+sBaJ)^2jw{AhyvMfH5KoAfRNh$&+a*(WKksz>1DoB!GsVFEYNs@@<93&&L zR73~F^oxfD{gk=tmb;jkQVQgF z!W$bKy?4pMUq*8dd2cs8qX1pztg8N%gWT-D$dlVE1yK3trbvIHdI#SMw40SK!`$7dbS}c z*#YYxR5@@ZYI3GhUhc!IYOsqN@nk-Q-KT3meufDir*~B3~ja~mU7*z*=SZ=uo8m-KjT1eq4R=A^U^B8Jho_@ z&Uq!)ZGYEQQM1? zpG-DoW@;%R1^Aeqy&39GkvL{wB3;jqHlD9djmJ!_ zsi>CtQPlC;DG{*Z^5@w9*Ju@g*>HOzG1vx(f7p2 zmOGbXDl03S1a1c?e8AffF@}*y0JBGf-m;R)=g8Avlh^S88>sD=6!pZ(|hcY2nRQ{Rzj#UX3kXu{VO-*f{$pAX$rqdiJ0xxIAb}I8TY?x*eP7#;sZ#NK_{1mSY1Z^R+}+*nx-edBUeBD8wkG99X4xy9zv}t?k8^+R zbbWBIH$k4^0zLQcQ*vshP2V0d(r>%GQ~KzUBd)uS9-vNUEEWE~!LrFMfU`_)YQx5R z>}NcpORk0Wy$-h)J!rqHH%sbDCwQchI@1@|u9?d|-fP?^cpXbG2y~^VMia?h_$0KK zf)GSdKOC=argyG@QMP=R=;k6?9fmCd_=B0fv0uHsyk5RMkYD0Dj(dUReK)>**U1>` zhY?2`zun(LzUjZvIQi_R9{0pKwDIWV#51)qHL2|R5jOA9kNKcwpp%F9 zUMfq8Cfyu+dh40aN;W33awr66(+Ps<$-Q_MqukUE);p*joKR!&xy4G1Hg=+t52Anh zP$je<BcTfd2 z2M%A~tu~ra=`k}<#oSgwZ7^=9Y{RRao?TI>X>U95mYRVljLc}^GPNt9xK*E?xAWkG zn4OwmUlpX8rM~XClbq;$TTP(z@C53zT;Xi9+GlIOMx=(jENd`><5#64?$Y@OJG9<$ zq|Tw*3;zz^Om12&qwdY{<7P^7ac5LEFJdfdT{*F$!go8^(G262v@=c^=jvOT{|gmu zYS_meO~=hX2AB4oOuhUnmWA8$i6rVEVwjm@+3t?KoJ8Jxc(Q@3B9EA?B2bQ{y5?uU zIaV^u&`?5_a95ZK+d3WiGtp3M5G8KZs!6B&Ns76E}W@Vgcl%aaP&yqop_7bGXElbR#I4s0PiQ87`IFrzUWUx|)OC0Uyx zKjJ(5YhvMNC)%Yj;S(jcOj#zf5$;FhohxLCYPUU_OBKInA1z=7+Zq4;C$Ah9a>Ab#cF>e-|?kiob`s3Ty;!RA?*uQrd=Z>9~eI+s($f+FhCk=B^ zMd$ZV8ilVKPNH;cK3OdpTYplPrAvkBNA_`fI&z!lT#9?W{W-*oYbr_D5;K-|N;m(c zqa4fT;d}e{?i~%Vf>iNxIcA4p#%*XmSbPyK^0q2I`hsKfs<}5fL;EdHh2@#VY`e27 z7RUjAW7*ly$sRq%=HWC;gPrY|M+YMU9&*9keiZv10-xv&a=Q9fB9!iRoGp4IT6M?# zG9nY>TI6MeVBTZL-ug<{r_m^e@R$Yu_4-tyQD=mv@0???6rKwr6#=FIkFr!_{uXKQ zdD8++tams?9rb75r{QFt@z0%!zB!xhCQ_n=)#7(~8VhKaamMe`LXDwVpS@)>m%(cX zwab~6ZVho~9_r^{9f)j=h9u!}_wB?9V`7baQ`LzH($6o0KzK&%oNV(IZWPW+&W3Pr|JNr;% zUiSCrvAv|efZ(SPCn@#xJTa6_EZ(P-K*taxlTF@lubQTw(#x~>y0YyTSS<{$t7o3c z=pC1Qc35_YP1R{xA#m5y{pPPx56c>kPZ6@0xl{N2R9|16O?zh4So7(<&WqDuJy(7h zp*Wnx_L{3ECR&#;v4EIcANW(@07Y~^Er5|ZZ)~sar`TSX=QmrTCnyTzH$UNx*GIAN zWT-s0io;)wh|I{_I)6r-@%he@>aji)LV67Jti353TtW3M4*9DngeUam@&qt6=LOU_ z=$+%M{0xXFzw82pE%N(l~nsZD{~ zp%Q2>rhd>aN%YcZNO(5Sx|MWMV$Zap-K6_?dFm5j7ocEJd&opED(7bfpKDRlJ%?`*p?c!w?0*rlnpHkXFUNCj6;-rJf90Ltin@y}n7i0L_zEJs z?1c-?#g0`gwOR&0OZrm#<1hoVE9)?~cKYSw8$(L$Ssy;HkS@#K>cF68Q_quGPjE#$ zZs%uy9)dPx0XhMLq)IFPZn>*{bt*z2(7jm}a&j3XE7KM|aR2p(Pp5uEm5whljJdxn z*~514a^h+;ER|KW0XHVS0@DRB9MiP^1-dFm@Js_r8M!~dGNIE@~W$4 zhJWB*sLgE;PM#|wpP`9N#Bj;!)g1=3lgcK2Nr#7%Zr4xamx+bgM6zHilUN(RqIAPuEO^QPj-ZF zm=~^QC)U>3(gkwXI81gI;~AGD%arS%;ZnHtZBi`FsQ8BT*}vUo@2>pe7ju6?EDYN- z*ubT=&nz&mA~D@q+uVk{*U_L|Bz}G19k{8wOXF_ljuXWY(U-9q-*AlitmikiNU3Txk=_n@;SMjk5DD5IMh6eK+be4ObbIds^q6LEg0|>8Zj?O zn3(nEH-g845h7D3_kBDS{aRWQ$L|+nXfoC$@0xR1GC#fNAzsUI+MPqdrC>bGW2Z`6 zBHh^Lk_*M<#m%I4B&vVm_STE{>btNy*^3Fn^-YtHbn4uH#BOAtnvBF$xUP_tkPhz0 zL=cf^O0kB9ZyxI;`Qj#)U1e@k-Na*`pb%1LILe;wGG}h29&YGAv*_TugasvVT}jrENXr1ZFvVkG#0$oXBS`=Qx`Fnw}VFp z)8dJN%80662lIR)=*d=b1d+BPetdF#IrNaUZ}97-$P50OH4B9wf#95RlkzMlT7d4; zv_&^0z1E5SlD0_SxwNYIR>r~tMD2N?GBdhX-WD(wX>OOp;xjG0HJ+!wQRz;ub%!8f z#TjyTK5_M>S99HLz;dd)YOsKj;n||n={MWtUy~0ux^{u782P zRLeXzK(!UYqh7_76#F`PY2sMxU6oJK5O<|kXK4LWFKyo^s#KrUqc+l*wBOF@W2iv1 z`=y=O82QgFMjLeQ6CY2CznTtF{Z3cQ$R?bM$lN^OHBn zxz5rrfjis>CFvKU7=3!geMhxbNcKFJ{T@HobRK8roX5twZ5S=q>cL=koBD$Cz?tj8 zOU!e~kdp!d$`51D&KYjqOm*vNKP&h5<#Iql0+_`{TwqI7{p%+f@U*3itRoc~_66&RRCtaMr{!UxX!CAf+*iM3t?V$Zjn(1czvvCvuJSK$y=`*iOi&sUHo!u@WSgliWk*WD;#6CE)z=!ULO=w*XX9M95SmOXJTI{*2^Ob1!OwN_#y9)!YWDfw3n}}K z>J`*I_iwojSHjEG_Bc1T)6Sot58WQ8I`tasMy#@$_dfx!DB#t%nPBQ(ujejI8imUPp(COZja7)CpAH{t8bvniVGD6edZ}_f-@Qrz_hxRW_Yd)| zL&zkTl3#9+R#+I^3P9UyN7ZQ9(f7WKey`H=6OA)lEEpa*Tc4vOa}emrkD}zZjL6gF z^J0;H#?^E~9^d^qFsrZL_Z&4U?W zL!R@zG)StPKJH0Pz%-?&znfbr(L^1}QdTQ0oQistqL}m{X2Q^py0&U%e$Q65Bbhzz z*D_}G247sww$uzL9sF`YzO0?Ga|PM+b+leLij=`?@Glk?{G5nhqLqxXmh?4v2gJ1uHO?viIpxC54WoA zJPm*a5Zg>P3Y}LQl4Wy`|6yIlsw;EnUDYE-%p8xAt5jr9O{~1g2?D_c(lvKog=s`Z16=?Qz}AFEZHh?1Xq0 zZ{p5l-}Gj|pIu>>3CKV~e}rM9!%4z|%uqS-<&%-3ys>|(;Rv=Uq4EAQ^i8RpEF!61uPky2~ zeo=DC6lpQ>)z2(uTOhy%EBCJ^Wf=9oTt@EIaB7lKZV;SL+_S4HvZ9i>D zO?-=BARJAhaK%g-uR(PG67k>>E8A7XnQZ0g%uI?MXqPik+ z^z`Y|M~~Jq--*0hdJ`>>mx4O`FT5Ob)fruvja&!_mi|p)QnXH>Xh7fQ2;yv`J zZ&=0ggSD{F_?9ufI?qonXUqD^m9LXiRCskQeLLp1cjC=EcnddAh2c>AuqL3174G2M zQ&;38sHRyME2*9yDr){#z5qp|tM4bz`vpOhLjeI0LsW#PijSzitORdqnKUOFNlY>@RUrT?%Z&3>W1ODCm^IOK`%1f2Dki$w!Hx*TAFWpf0c*L_AF|Tfa zJ7fi1j6)_!arPqt!o{8vfE@sRiWAFB0U*xf%Qv1sNYJ|u+|iuM%o$18FVeRCm%w;W z2^koj=BE58Wg5mNBcng?r@=NxZYbvT8 za{q4lI&t9NapC=5@&AtI{@;Jd>%Zm^R0;?Sw=kDF-GA^v?>t^gf}`2U;!(Bge>Z{54(Oa#*q z0i#~#-(RDMoA{2tBjs`t7;^5GvhLQU@>=|lMRWfj`F8)sPyD|<%<1WAhz%t6Vjiv3 z7N{lIj-@;3>4-uK#3Fd88`#t(WL|f|bG1}teNPY7FNy0(@*k(kWWaQH#9u^WDMSre ztS=Km4d&faMIG!1~-ab=Tk-I6CrsK>sL^i zGXLHS=qZM(lv`AE;Q^b6#g8VS7L3Fh55bDw)Q9WJ)-OpR z1Y|7uZr#Jbf7g_Eyu9z1LOUY|hdhzrM`Cq&vBucQ<<~cRC8auaFaY%!%On7P0`)6K zie@miZp5%(7`6+TM5r10f1zy0BWb`_R=i80|@q|*kwVAi3I1_4yXj( z2$K|L-(txI*j>m5@PYqAWdoa-TP_UWZvm*yy+N0AqcpMUEnUL?wE&dAkSM@50+ic= zfd__ovbM}1k0gtagF1Kb?%jb0&;QAwM3)~g3DZ4K#^*uCV2RWL{8nQ32o~sI(~f$Y zHeW8Oa|Nm0>JfgL$fGZsTTu$9s>YmyV6Ehsa!*Z74IlZruw@gP66&sshGf7lvU%H{ z?bOsw7S`6|K&dF*lkUSBWBhFWN*$<5(0)jw=`Dfh>6mTz2^@~u;d(4bwGrpK0rUb3 z9cujA$5?3d8i|W~ygnJ_k@=f@TdAk&llP2%RWGtP-n@qA5s~aktlu4$Wp!ak-h(6O z$)iU?we6`|B$O||nM)EnQp!rb@7}$u^%x9Y7{@*UV?I4mp`+ME)fS8goNAV@raVI? zH^8z8DhSMF%tlClpN?8;reB^x>wrjBhL&-iH#_!Hbv~7B#Z++{2k0~Aubnlq9H|bE zitv4)DE?BCs0_SpF!aRV|5jE4Tpwf`rW&mV6aC1 zAF2!2Fgr#!&+V>Fa)z5(z_7H)bIn7Dg*a$l!N}9x2Ot9xsS`jlB_Zdl#|v3t+b1!=}4v21@6` zHS|68fKnzXZ?(p5oFNPO){HU=&uyH6p5`;_0U@5AwP7ZtT8P^tlgmt)XR^={1Y<*_ z*c4Dzg~Rv2@IYJ=oQJOY+o;V6x*s;BHg>hX)n2h&~b{P&= z2;upX@*F0%3>~&#FfGmhgYXc-qebksH_yDKU4qlFk;YB){skEstYa%A{Ht3`Oic2n z#qY=SS+QNp)YmC>o*|eH#n4Ym6^KrFY4{e_3yRVaryNsPtW`iW!`pHt%M_X)ApCp8 zj{I*BM9-f;zm0*%)EtLs1;2VhS>oS^G$|}ENU+#2W2K?cLfQVh!Y&_h7gR&GjC#T{ zsu1+zSo#&o^cdyB{i3$=V}|!Mcm#yua*@C=)N41P{VeQLhq{@I07Wj5f_xh!<++Nv z%eW!MQcF3wi3G32fmL)fU?1_N>XWhU9=E=Y`FdOkiEcq$8OCGkD3+#SHemsnR(W z+|!Jdt?$K~xtXb7Jn-V9U|W_E+pb;4enn0D7gks% z>zdEEJ^bO$?=NLVxD?1vpO=@GERBfCLeM)Mz=D-E;XKa`)n4<9S4ik|0}++6e4{bh zAVK#DB~IzzcLA!Lo{o+f$cq@L5_asLa={B5Zr22Iz=R+@NB=lLgrrUSum!hRK9s)) zryp_7T=_NkdGGDC5p;gQaLKl92 z!UKVvh2L=g2oEeaK1`(FiH6YNIE{FQpOC@3qx}Vct*k&ErN9fxMG2>8 zX!R(lD#5!i;nKG4!7YZvB)#lr#gq4cZQpL)lH7<*iNj%`>u8&$fZ| z&XHFZp@PoU-yCttcg{NQ&$w~LN+i>7vwLRqR8gSkwADC`XvVhw_kPKoroeoR0W~9_d_)0h< zV{I8EzrOfb4{Z3--h8sLGhO=kNjr&?R=G4cg8i*MY^Q4=1mNn|p|X9@W0(Hd)~z$n z-+dUD$AJO}>vk!u?hx+mjV|8VxH&zhg2&)>9;Kd{Ia58s*R6^D(4hg~5~PmT&NHzh zH6g+&5Ya_$1SJ+#klBwPpG6~6o{TL383|9l{Wl9UpCU(qCeASbs8){lYgdL^UJqnZ2}79AREu)-_#2O!K5`p`;ki40m};L@vtkR0Af z%!Ed<>u6+-Jb`!iXf03WHbI%=M%G`O&+;aORP!2q0xeb=1ScXJe0l?4tOR^&Xxho6 zE{rVN_C)(t0Xr*eVK(%BNG8c{$6cmK3`h}p0Hxq;O6r!6q zg=B;sM~m2pDlH>J2-yS|D$n;Tq)T)M+es1;2PpwbFiO&0H&=6Z zpz2XqN;n=X$q8_IPla`-nfo-7x4CAnCKuxTOvmq*Den8?%IbCaBgi&`9-bHAlY+2> z$SZkkyaV}4Ps0FR5P$&MZ#Ym1u6XZ=e8!DFJ%D*MvuP6mPW~V={~|o6837ed!$0lN ze3f4+`<@+X9zS%U=Mau3(Slap@Fk4as(F%$&fR|Coe!tUjYoN%h=2$z=R3I@cXU!R zQ#Dv3j3l+cAW}0@uKB#X{kbK~wBbchUv%$!=W~(YU*Z}~kT(G}5F2~BKqEeZNa6v< z3)*u#a<4scQ>eOY?ov7-au5b-HmtvFv-DeQ1$JgJYG(#V4A6~-tUJgL8#9Q&hI(bT zttYXZS9E0NANnMBBM@Jrrh$^Ne8iTSNdYmRiy?^U>o>EAAqAYE_5TRPQhI5s7I000 zQ$m?U=)Z2+yg3BV)I;c@Os-jNfoV-3+)oYBQftUt=+ITh`-~8_tjpMsBezT}93{L3 zu!hd1z$b?u!!V;?B5A~cFwoTSYziZR6959eeS(S#C@J!`lGwFUalVMivYDD*wbqJb zxgR}eq5#*}LV1(!!2@__8h}Re)!`+$bLYi=4Mk$H36aIt$OP?)jOg!ZS7Kl&wWg=(qluyxgRb&N5=0 z|AR;C|6leA{!bEz6~JPo>0So3$nV)>?#F&BR@Y0SntP(Mi01~3irHD0nH0% zl>o?K6gcRVCIWy>r!Yb{SnkV;-QOsITY=;Z;1y>>+bjT`)nyG$QLRq=WKGd0^BA2* zSwItcoOgZ(q?XH(Lb<8h8L+x%VYkzl$CF=jM^Focd?;md3`Qvixg!|b9LJ?l%4pmZ zO@_&yy0f4+*f@zqAETDIoznuR2jx?>bXUkUh_Vx}AKM6?) zD+NhJRPdtgb&BXF(RTpE7olc@(M<>2=+jd?wNPKVwSimd5#n4P$7cdnp=i`3Hp4ME z2&WAi$1RXEU|CDp*@?btI)=iL+R!PswZ&@4(7C2HSDy(-h}jW+Hle(i_|ZWYr)zj; z60;9tIV2X^$sBaCXIw#RgKBB>2!HI8Y>jHh0w5Ee?lUbK7sGveElYHpK85L*I$y`P z>lNahMPau`z)*h^ku8AID!JfP%Qk z1-jZ0-gYbwCY{zw1wbS=MRRT)IB3^fipCt({kAghM#m2V{CEPvg3_||tBw=N1D1kr z*XI02x4_ym$r5iD`?$+*3@HdjJViVFX=LowJJ<#5GB=F&p>`!F>(BR2le=%?J1Gg@ zX$7!>u5(KCEb5@uskPOH!*(I;NRrs!P#|-gziI7VFt-NsW#Sz$bFgZN%4?zLimLy` zg{E(!5rQT%SibzmR$b1#-oB^LSlRJAu3zAu0`qR{Be7DpYfWuM@0$B$_eqjfs;2Kf zQd_#EUw1G{T-46te=Pyjaa!(XW?lv|kb*5~Smtj0>#8S;IClVK`J~PO9H}Wd7nLrZ zB&6)m25+ga0ts6-NuWfBWoW!9p%%j#h*;2`vsTuS0KYHuw0q4x!pdQs8+B7H1D}2Y z%|oIgw-?5BgbXNM=*B`(9ib+x8?r|Zvfi`aaT0SFCwGF4c+Jh`bAfssZGI~TEMjMN^Xspr!rRh5zL4p`rrZKa0vfS z9HL1*cI8PHM7}5>6b#j1WMD8$j7NJr2to4>LSBn3;Ua2vSmVS+MX|UWq{p>^_oi~a z)eM)&6J2CDVuZ*VaQmK*p%8pew^I0VoY9M$z;5M6_XD`@mGUT!)!+P$aO2Q{-@}DZ z+|U=QB!_^JV_t9NjSC`#!2?0>5){%vM2;srq07#dL=`NDWmwV4Yp zfs62f_t(Y&hH=8LPO^#}=KTH-)5HyQy42^&b^gSf!MfFD!}zrr#KSPk)t2;A>UHbY zE155llN{uz#V9Dyi<2G@3EXzA_Z1JKh3Y*!Z;);bbaW=(sPL2eyU84I#*&@NkMtWs z#RJz`pB$s=iPqd(w#jGiY}{J57>D}>roxK}vwL1(;)pz*^Cc7u+nJ7A95{ab1_)vE z*exQ_BHu0yy%J&p`!qMJtD*I<^AoG+rr4$k&d;_lKw2vOl*V6D2<5l&#(N|LccF2& zfc=gWog%*yVZ|7!2^yIw>}yjHPW2SA?p;s^yM?!bjB>uYl>u(c6iK_b1E4&9;9B75 zh`BF2@Et=R8Q&akKPRYH^mx@chYX(UI!QJlwyQ2 z?c~W&yiW0QPgA7ATQ_*nVmVWvgPvBqw)F5Cy%b%74nuy9&@lv8+C>rvBM5G&KKmPF z1dpp9%IT`rz!TRsOLX=jM3w)VtwpA$rlpNW?@9snXV!$~_{i!G6*X&1TVvJADL3}p4^n(z z%wG27O@(|ujz>avmlqm8h+^+kF{U7m!?3r#r1=8HkhZE9Sj4=;02JT^`2ztCKt2n< z?X~qi%1ig~RjlyjWiI;9AhD{HT%$J_~s`rH0@ZNGpZZ$*T4=*Z?~7^zxuA144f(i@y?uhm z{LIbzea79W=}yBKuy9yFdLQlAoL+AT3@1Sh1%>p9bqSEK0}FJ7{xM zo+r==DFr+Qv=?R}^T$0ed2$mkBBVFt&)Zz92K}oE>58VKVkiB+ec~>&rhJ@h%k32y z!j#hV`q_$rNYIM*fw>RFSR^mX9{C`*JH>NgUp+8VOcum@-G$9T)GQZ^Ru1`W)SWxy zYu*!87>;$TBtTNoQ^)_A0Gg!VG}ZCyZQV-rv5QtGW{)ePdN!_}z=h6@z9p{-ezaoE zlU7N3cERrRURJTjB8Xl#=znu5dVk*3^czy`#7yJ~+$+F<0;WueNU3Fr{pKy&plLx_ zKtX!Pd{Ifd(CHuNQo-u;vC^}XphgMy4|$tQIRbD(l9c*`Gr)6=(r5nKt-K~~7){II zY}8*nSn{2OEQSVm4Ow522FJT~$SL*HJxk3W@Rg}1_k!)*wbpJ}wIciX+DL3{Ea$}+ zXO-mns? zT5H8AoVfOBKly^UONlZbpxgYIS?UVdb0GEc_AHEITCoetQuC95#ad)=#XdidaD>qA z!A4bym`lB!y73o4gw?6!ci24(fCnbb8z?x~y-*H}m}Lqu^cOzEWL3iaG>zVri^!J~ z)nAC`P`L@O-uK*3WLdB{;76}@7hP}DWTb?8gC!5;(=)Gr?&O0`0kl80o&FN@VF3u+ z8FP?M9~Yne`fA0BRvt>Ggez_yxQV6mc%}vW#c5;l*O(7RLIXfub_uE_iVNN5F+!nw zJE_?Ku06j8_+cr`UG4*3Bs5@Kso^+34_KuT>2nnKt+DL4vYqf3nQg!HHKOZ?CQp#Y z=RhK2fGYwu{T>kjymlCu5l%UV+{LYVRHlJZ*Gj+K*nKFT*0#6wi_#N;#zP#DQL#6Y z4uy+5Ia~m-+?vU&48_v6dl8UhZsyei;sKENAun&Fdy}0c}D>NlRa8V`a*@@ zvMx;akouBd7QIFdhL{LBb(|}PAn#{_YP_|NBfE=BC1~XXp*B*O$0M~{tZ)rP-x}^e z?R;!u_z7Frrxy|=nqotZt28T)9lv7jF}b1M0;~&#*KQ5HEaKupLf2Hp&j&vxJnDtL z7C&bC?hUvF*wRg?Aj^7#(FNH_X0DAC%kpQY?0NwWrmNu$hePddd}lApAM!zzbIP!k z_vTp!Q68zRjzBXpS=0W6vuln9tn4zGF1|iW&R00qZce^?_)-_Uw{v|X_|QGH_h-sa zpHz>R+a*qC%4MOs$viH?%PEY_Wo<*o#u8st^@=idvj^xHIk`_%l)^ znS%vYC=zz-YQ_N07|q^eXV@-|pvVpaVrgHk>4L|XFarzLnmpbo_Q^wz3*Z1l6>K`P zW0)M{6|&g`W}T~LQD#Gq$qY=EV{WbRT|>RCCL|^*dJBNV+!@UEt;(!21h+Va-U1uF zl0OlTG!>b%?Fyj*TKAQgxiF-yx(|n68{fyT5-pi=O6_J^W9!c`D%PoMjUHcIc52-( ztC+kk&}4HQPyj=^k|2EXOyF_h+L~8Pw;IHpyWf;_F>Aww+&S{0^`~_4scni4y@~)~X1KK5!n7r=sgP{K!6DP!XLHphXs^Aq1b%5NSzT{YUZr!|Oh2yuzFEdKKM)$yp`58v{5SAKH@VYpDl zhfuWpCuN(y^@jdkA-sRzz8^!+e80V-+gZLB0w$u}K*iFzgM|ZKfVet?@;b*4g4STg z#LtyV#oI{AE8tDAg51`R%Nmjz06=SEy#@R(7)WW6(o z$3)*+MG#G!U-1zF*Ns(^H&Lct2h|HjLvUsZQqFKgv|S=s10YfUpPQR}-7pbE3hWT+ zeN^mASByNuUzNP^?V(HP2x0;*z&u8G;z~3~nDtWv4K22S(3Ld%NMF^uV8BIqP#~5; zxC3=mfH@vQf@%a~fm~Y&gVWaDH&!*>=t|fx$0Bd{@e zC&snz+=-`rmvXRpNeYEu$;Qpp7X6?Rkn!0G-z1fnxUyG?CWNv-x9^2@*5|iZ(-V%6 zdozU>an}G6LZG$)alln^9TS?`hysaH7c3(#U=tdS*6j*o-pdne>b6s)ttvC;^`? z7)emcrU$$m$CxJq8Op5xoXWmuMwn|P;yi^ql6Kp+T$w-)9DRt0z>VKCX6}`t%ETQk zkQrdYR7LQbb<-ff@>GPZfAm#&g1e}j27yQXd7+~)Ok3iN0fuPq_4HiBynDhnfuBR* zt!Hu}JlKN@lNQ*QPY5qK=E6hxy8vv=XeEGZRe#)jm{@m!)2tgA9o>h-qNT{AM|7`k zWUb=G$U`B_IY6JDX($U8F81P!!Sw-N9Y6U_6Ov};7l5b$~4BaP%~5bHlQ zQ<`A2PEigMdH4RkAqa0o#u?sqInAqNgHy!fg|90Zu4L-RPQ*;ZlV{gK^=2Xtf-W-H zMq1%{QIL6`S1Z*t3r4F0klq-0G>@^ZfAoIa^XNzci+visHzETd33v&HTjus>jG$@f zRb72kUjNSEH_8u@aJxn7hL6mWV7^D)g(1b^Y703rB*5$jFE+X*#B!~5wLm##>=FaE z_zpumY(5#+#dK}Zb__<|%CAoo-W^yB2zkz?5O#Ilj^FOa{wc3`pDfg6f;Ya&k>1t7 zX%75g;}@R{B_QmvJX8T-Aq-de0@nn%`f6;Ux_afx6_C#Q+g8P{=R%-I$HF)8F*~+x z`+>I#UZ*}CMGzpK+9pDjG%7DG?is`(ft=j_CU%1#s>?OFO^B!cLb0hEe+FcR^fsbs zMM3ao4UF@YG55%v73>jU?~U*J~*_mcXF|LfS5 zN~qp|TY9Y=$B#E1jpH7c2}J#1`r+w6O5Mc${`$6|#NxnehA`^ekHF1LZQWpt^!K&C zK^4$mVeSeGMV*)O5V2%W=_E*o7|#r*OfDzl#evkpJ+=x5^s0_nKLnKqFoZTeW|ipd z?)z$tDh0zl+8)}W{@=Z)0e>aqi`dYos4fp-PMjT_W+B>HC0K4ee6n2Z9{ve$tS|^o z$UX!gjLr}e&hM{KZwSQI%nBh^FiPCgmfi$b_xRfa0^2`nrRP?^uunt}6ReU~ik`Yu z`<8&Xu&Qs9OVuQ{ALAU=XS=A%{b*#y;4vG{^$=vwh_)VKWTzLxmhgQv;}8IEUGa<0 zgBbMZAAejvZ1|sj+uOEp#|8pjfU1A)Zh>fJTVGzY(sN`cx_aj2eLPr_-(sCgz+UkC zQ75hsfF4M{-mZ5=G5AO$enF_AYmLVvzV*=N#1P0SpSak!;{OF46)?nng8&M-Rs=>MLZTaipZ}8*8jYPXNd`~-n#}skDN2KtHwV%+S?rBUgz$IK zvbEL|@FA?IJUyzDgE0DjyW3whH1*H;BAKvBx*Mpb&K?sR>b&a9@*t<=+WiDA^kk*< z$;3M!x&;$iAQIuMK;;)8;vvZAK{q3&x@3p%rKhJ~3puj>wYzEHhJ3Jc`V-zNr^<5+ z&R$NKa!=#eGVR#D9c{)siKC5-Lad>L1>^mv_zt2}SR3~rCfa0my8x&0$4MR! zI-;KGm$~Mzj0NGHR-h?cH@83%*AP*;qk>~x8bAhYY#*%L_|MqgPJK{Zb?JyMc*|Ye ze}B+RhzLr=s5_YLh+pH^ry^vq-!s4Z7XCJ_y>n^DJi_iwpQ;2@i;^&`kB=C5F(5tZ zE6yl90Fmoboma_z`JgTioIaw&m$A?4LcxMyR7bE&H@|%__D+Bg0a#J+EjlE{QDiX@ zGCEcFkX%GJKiu_%QSUshgsI=)3jz&-XGGy|c>*=-q*!DyhFt@iG8ehd^Av^?f3LFd z;eSHdCu`mT>}q?hX*iC8K10i?D-eyy{$0BWS1F_p`+gw7V*9UudxL(%kZ@xfEL&KG z&f4zv#*zV7_9{$x2;@aTBzT07^iM!8stL(F1ia3d)o6ro>j5$%FR z;fjH0&frb}Ge%%KKwVGJ#kgxi(IFrVP~B#pyHCB`kM#311^;VxL~2d#r!C)|U=5%V zh)OA`g98ICL(mPcB@&bVP(n9Wg8INEH<`bKur*q=jhb2kumb@FZj2=5$O5>ga!Y$I zwz#199O=y(e=#U|oiNd%E8Oez0Kp{0@amENqFOCL7h-{`v-PSR49UWFz1>QWvq0Wp z$QNKB(W)TBaBk#7KpZF~VlK_LA~&op0JaJTVxsxc2LV_ZGBv&fb;bNyPft%8hw%TGuC5}qss^{Ji`!XsXPT<+`w-6_0MBr}csq{}o`6`h3p5?#yd zY;lem+9O)6B9apupkZ{rLI;%jE7Q0tBKRCIBTgX5%p5o@@r${SVHAb=eQJhuCQq#4 zC;<;FP`()ZsFn~zWdWhBMKouF13N5}R|V)QN*{hU|p1_4y1=2aM!j_tIWO>W7WQDA(N2 z8#t0M;=>+K^W!kEgCpNnwNau)kr1x&0I_91FmB>1v1Nep z?qN>yjvYJrRbQTgs%CASo|yL4c4*|8#dYH2%b}*UC8pohzmU+|mG1qBo*Ont4WS+b zv@H;wCg6u`iG&3QIZA@My9_Xbyz;cGQq?cRS%QHBDbxz-(|iC|2Lo>GCaoHW>n@!C zTIka%1P&cD1ZMbg!bEP?m(j{y$I-wj$KkCkbGLSXL7%B5F-<5n1HJAO zyp<~?9)YY+@_+H|AU-Cye|(Ki9_}Z85)9tl_q44sZpxzGUM;u_5D?%J{FkJts3@Gp z1RpGUe=%F^ zvox-FQHN#y!^D3#4?2OuFKkEW1F&-99XwXI?$Z#6mFIqNQAZlNP2@wq@Pwm*`vpby zvLtw_q_tGAm2KAX!j!F10DQ?l_4_X4x1hERshQ{LLy@{N7rk~HHhDr#W6e<5ozd1E zy_@ad?|DDIW&)L13Ld7ctSn_|$)&W79Z?Ojw9RXkuy5jajI&i2JNh;$uX3C?QG^aA zRAsFMhQ!pot`aA^_CrN{<6I6ci691!DO*cLnpC869yoBuhJ~4#7^psXS@~Rx3wR;( zb@`jXK;c4g__oBQ5%GhH>gfQY@+}w-x=LMgT}c9C=3qpfL28V>?{ejjLLUmRa^MGtaSw(aW#vO3S*bHP_uecRCoedr`yzflIGOI+3D?nk04x({I%6O*l zzP+i-J$W2XB&3YzQl5s*t@|r5DVQK5jtX>3nZ1T6pdoBsU+(k!7Y7e9GBaDjx%&pL z`ZsUV15ArU`u--Eo=IXHRG~K&_H6%q*!~~sRPF!2{{G)ydMdX6`mSgD2b!sxmVnFz zzw&+^YC4JicYeoi6}VWkppu9L@@RoT0AGz(zE}TYVZ7s}@}FEO=~otNk*+ji z@HEmn=C8I-BGT$=*lh|i%GV_VUbqm2LIK(1f{#s%V`0%%j8_PO&@ysA=#7w7kj)Yq(*2Q67S+v@g9{wB|qb$3hWLk#h*j z0Rbuf{_d9z1(wY+YPKMW$5Oo11)->~z&jUtYj%tnw< z1Ai%lx0*%}L>f$}a^TdoYu~C`{RW|ng%YydL{#`_vYoj9JvQ~cQ8b&YK<^fw(9CLKjU6&N{GoI1VLjqk`>(IYS4t&SEt-^HCeQZ&jelkbM>OX6qAs zMklWOqlm;pewoK+V;-=o$CH~B1;V)jX*5eBkIn92SB6OY6X{elQy=5Wbq``<=g(Mt z?<1$Rl?WFr@5W0t4COrI?MKOO!utuECGMbZ%pp@hB(f%@3YNTsRZGY#>U*;WN3m)k z4LPA8?Nm!l{AQ5g9l!!;y7>v^?PmVrQ!(Gqz#1AlrXNr-rmvy7@6_&g>{x<3tZIZf zy8(x*Aq)yzi<-uR;RIVWJX`{L)Kxx$T{jyg1!`*()FWu!Z9fj2OSqWju@1x)2!>V(%h;$11Sdc;;xxh)rtTJV z&Z@#8$M@mGjuNLVox1b?sw+T*AgRmNRw*z@-2MI)=05{a6t`5}lHA(^6AQs;gA>Nc zxGKRfjp;fif=FF40M1%B~?a@CBlh^n?LMNRg4a}<)n>MAXOu{x2nY(KqA11e{@VgM_&xQ zEMu*0rCnEmK|!+RqOa!^9M^BmCkRcqE*QY>yV3pT2(v_}&?|tRzP$ub=4Z78`Rp~< zV-y`Xfl-O{>v>%8=+SgIY!DALhb{;0eroa0X-pb%0>uryXK2-dtsarAU`i3R(&cRf z^A3B9GVa9X5m$UnEYt7Njo|ya;luomuCW;j$pDBb$KJD}l&}@z> zbIxIkacG;1gnd+G@0E3dHJU$iSQ!WlMhy{WL}lr;o7b z9)6DWPrNV~KG5+Rjb91V4`%<7%(>fGKsw>7mTcr0qk!Brt4yn3iyP;{-qgak!PknV^u5>JRcNCLJiI<#QG{%EA`4d)F>O zsHNnKE-_YL07B8vg^ZaYFJ|eR7|Ev_M4+$|TKOPxVnh)#B5@b-xa)(_qMCq%Lp@D@ z5=5BVK{I44C=aPR!>o>*rQsJxta%P<4dt1LK|mdvDcj)7LB(Qu2UREUI9z30#Ik?+ z!2w8&F5A9ihanUTMD!L80uQ5@AuX^7!hL}NEqqGh~A*57B+VSL;TP{j>+XL_D{zLBkVx9J2j8K_H5e| z?Qh%aEo#NuE5FNMe4qrio=6`EfQ;*mQE?8oHBS%THTn1*@wH_S{1%BGB<0zEaD^bd zzzaY_zVO&vM4IJ%*@w7Gc)(Ny{q6JtkA)!^Z~R+*WV_NyFopiSiXt4Fhn@$ddnzKF1BpnJB{ahWE%TDHK@Mp z@=o5OmSy<120LuDZZ^^zkqhokt;Q)jRl=j5?>JvWj4>pAH<}k#mLFB#reaUh&EdPQf^(i-#%lZ?ATKqCz7@u_QkgN_~|2I z;x?}!EuPXO{L2LeBxeLHjT%+&lR;(ALdS%Lesl}V*Eix* zo*Q|MnmqMcy1W?Mj;1^PLwp5z#+5x@@il9Y|CT3j*+4IK#9l;7bxh7!2?8kG=U4@` zUA#r@OzfyISP|bdb@bgs#CW5d!%8Ka8O#yp38i(i?`@wg5*9JsUdZ&rOV;GcpK!D$ zI}r|os@<#q2X${Ajdk0$4Qo&#WlR(zvrw7JREZ+<95R(;NU4y_6=f!xkTTCh$!Q)M zNCTC*q!f`MWQt6E+tGD(Kks_ix8C)>f4tB7zO|lpKlgoI#d-dI$FUFFzHQr1G12>R z535pD%LKMX!ga7V|36K*&*!e3hjgx)D#4gZW)1EYafU(Vq32!=zQ zl$@SlIO1`w`_V-ooelVuyZN`SK0WatLv7kt|FL^*o-jI5lyESA!=2M--?WABl zG{<3tI+S4G7}=QBNRPGi6>U{do{J0)KGWcjm~`MAMupk>ZISb1V`>QQl=$M=_1CiQ zVUg2eQCFQf1?XlwUn0!L=zSp%D*@B&*E`1K?_XZ2s)Xj<2TlUjSkeP$1|q%)5e0qM zrvDk5lnz;4LuiRCP}a6(JFA6=^GLM}!;aD=uT+;0kSoB*z%QclbO39kpGBcUh2 zeq%@*_#ilZC-Hi{rUt%vgkH3{Tl*gED?2MaQf!@HV@A&q!j|b)aj?UKBO-o!*b-Dq z=~)Bj*`6r5p}pDpuSV0rqQQpM3d|Adudq_!%KHL#9rMbM4tvgPk)< z?6N){!tV&oUwX2$NIlRS1QVkVX3cR4M`%XWcFxYv!#QbDro*>qB!oO>5sz7O;aOms z^a?2$T6Fl;mr-{}Wq*&94AYv@u?XEK;{7dFRcZzp zZ1#4`9L=m388G_MjXf%&7HnKgXev;Kh=$F~8ft24Lbo9uO(oX*>PDm=3G z-Z+Q)#I(?s=qRK~TLw7+FkGc3ZSt5F-T*b+55dDVgn0C5u_tCR&dPgaloYp$<$M)j zFj^6aLmHk$NSUylesgDc%gSTL2%qDQRI_Sl3YDz_=h{m{=We9)v8aYVnMSzA!iBCb zV{3z3>u71u`b|8!HZv2+#|K>Ibk(#mLKdchi=+-dpY;w&cr*6N{TATlG=*HqU3uT} zmhl^i|Ky8e5_a~@VHiAB0}VzU1ibwG@rz3u^(h=-{+cbB|3r9o%^&l9FpSF-A^Q=j{6$RsNNPQlk=ISbQ_7&tJ=Cy=4V<1hu&Gj`tCr)<_iGnQ9i$~ zaTNtZE2ftmAl;MPguEDe!kwuNCjps~SdsvF5B3|o+zxX1?#Qjm|mIN zKsAi{Jb=@Uzik)-$5F6Tn)k?}-&DJiDD6Z%_1csD`l_r;F3)hPUqSeil#yxg6_e?= zOGYVlxYv(@4~zC7Q+DX2oz}$r4Y%MzLv(1+#9_ZqmE)&4g8p>X5jYE3ksx)fV!5bm zF~4kYHOyjJ^+C2=)b#?0PaiM8L#rUN_pIOGBg9UYI{1kYr`W~DHMGhIvB$zcpVm&w z?NkKzgIK@QpjDR3ch-j6?^*{N#6u*)qqTrE-A?P!4d9W+amj;mPFiOT(B`1?zo+OW zvn0j}3|Rpl#$dtYkB~okCBPYW-aaKWUWIN0 zAU{B`cvYso`ME8iVkTYgNIe_Qql&v_QgljJ>I@1qYb=3 z$UulgW&JBHkW!D)^IM~I!x@ijw{(NR_mLU|jqUP@wknv?gEh@^~=L@S`)( zGKXAaF>?jAgdhaZrEpAPCsF^=o9ZABaSmb)717o6=&JVd659%-;( zjfe5Xi&0lPjsu@~%TY42fr_eGLS1E_;mQX?RdYc-BN&)~fUUxLk^h)!_MqAFsv zp37?+N<~bBOSny%I$K)+5a?#<^Sf~^=4jdPO*jV_2JNG4Xqgk-L{>oPguLBwSMfuf zYm5@P=ZNHU^YapBMbE!SEI&Q%GOa&t$w`f&n65uLIT+!@>kO(jMGqBOMy~-rt6O67 zrR|%WR9VZ8Y4G>&V*AT)$Ac`toC49L!P_ElT?m3&7>D%Bh3p8Ky#4yq*6Y;Ii}?2* zlLkG|FyS4A(<+&|0)3uiF0fP3eGRrcmPZ(H-glHpSlN&uj9!vU%3c@!lI-bEx#?0) zGObfXD*(%!k=UCo-*Y^W%cnupP!{uqx8nBaiGI?;yD@Q1+PL2) z`ly|j-rH#a2~L5u`&jja-o5qby(1sP^duoEKUu(dZ%%bmCfSu6axCvces?tu4b7R# z!Kdeu49RN6^;k=7gomP$G>GO{x~_M|YOS;0K8o^aKyfMNZ)k>Lr!BNx*5LKMJ$oEm zh1@!U9vf%rt6rOgFk%etSzMWVa$bDO3k$-7o42AQK{AtB&N3p4gaaEWIa{eZ#e}cE zYULF-IzoePT_WLY^%%~q;a!aNO!CZ(zFovUu0$FtnK&jZT)owC6n6mnxqZ&5F~Qop z)lw~JGdyQT6(Q4*CR89psu4GY927otXncJjlx;sdZoi0@%lO3SgXi#2f5`S^L$J_kh7fXllkM8=pPBG zzMmipkP6p9rhgn1OIQ5)XHbJ-OUNX|D!G3KMvt8L|Ho=k;t!Dhf9{YlJH7ed%2lh( z_LEQK&A`d&Ouy_=_lEy|+QCc$<`Q_vgo%rKyhz{=EZqaD#uF~c)=3H{m(r6tX>jov zI5S+0h`K`<+f9-Q24rJEg^vEi+g#wp1YRA9Z3LGADtt6XRrN$+fDX3(WS1ZQo*`y= zpx}mW-aUbg(B5iGvu>SlZ@4V_P4lxZ7Qlu!N0+Kiee*$nW%*fAe2foBy~xFk!St&z}p311kl;1F|F)FvBWFwd@Pr)s8*uNZEvjL=_9b zAKYrVA*O5G(vHtZ#)Qlsm_I6h5TNh7d{KVrf&v|j9Z2(z>IfySy%i?Rl5pFXWD~Z> z`*7^W2h^Eu|W@Euy=LUKu^e6kP%eY3n|7!8t_O4)_u#J=kaO3NB#_8UU@u z9Kbq4wRw6egs2m)WV-@e-BV~A z5!m*y+#z^2klRyl6E8j)!}A7uvIC-IR0k*~9^Q1vm|F+XEvD_#xskVnOF3Iz@MW=I zWf%Zb&k4;|aYs(+TGSmxf{JvGeX>?!_8k1%wrMW%ph?1^xr>|uFaiXQq*XZDc^or9 zVajI@W6q2=gGjiHh2~D;gTNrK)n;Mwx0i0tK?g-}Shu7Sl2C(!Y zIL8o75{)?~VW0(vOJBba{6Ixjm0;xn9>}CPatPYkyUoCt{8liGQr!Qm|5gra^ zuRdz3hHxI_k=LNg@tRY=Abct?DmSyU6FX*+XO>VZ;TloGuE0@Hz3v6!Z35B(Mm~*& zEQ7tEZ6ztC9X7jG+|JIyQI1T29t#ePda8$TZ(mM=84wN>11~JUXG@^8{oB2HF?bfp z6%BYS3$x?xVezeV;1(F?K(=FzgN*}XiYXDU_@V1UXMk*xy0idwroqS(tSqwXu&bm3 zB_6W*_pUO7d)cNB(>pEBVJawXA!>NKNk#e;>>Y8LuC8TIX2qG9ha&gw5$PEq;6+@{ z8meTBF^8k~!L@Y{ybRDy;Q10VYK}c_v2eqy#ty0<=V6>I?109LNIj1ls=g-q7+oW2 zlbtNH4Y7I9sKFajvbqQDsfJl34M*)lF@R!2$^d<&7iJAU?F;W-BC1Ho;o739h^J;b zhH_qmSz2RLHjY2~;$-{zH_ZTJu@olz(YwX>IpFY7W54m{2hYxU!8M>7Bq`L0j-3BG zKRk~jTZAPeUj&(5K(N4P2d87F!NS5q5tHOL)cx44P;`JPG4c%r+&(V|vTUHJl7c%Z zgE|}ki+R%~bHE>xe~wa=5M~(P@u={K$;LncV>gju5vhp-ME?sq)jHbSU@6Jqjc3XF z;B*5V1&!t``cTiA_CF_J_6X)phDuBJ4uW3@u_ed1}p&YI_%^s3~P$z zgHUbWj(kr1<@R!xyuqPD^9Qf1IRJUkj<BU@H|&o**Bi_Tup^J~aXS59(MeQB;p7AFGNt>Ie32FmD%*7{0PPok(dBH32*GU{0l->>Z$1&c4_WuExOz6A_*#p#&10^Tl zC!2X}ip^DL|?G#Z%iLE4`N^LFpIdB2cAS1b13{F8NAj{)OHOJBo-%Y*8?zprp zdqnvxLDq@I+RZc0yciHv=Je#B#l=Q>aCg@kW#>giqxf$RiQEu{_H^0TmAY~>U!4L*1*Dal@7;*5CkKn>miMEqc5(%~ z07(w@Yy7W~O%KCX5w-ZtOr4w=0vIwOD9(C-p%KaBPMrG+4K3m_!~>3>D$C|M>BTH^ z8DZ#-vYmYCz(UX* zQ6Ky?^2LCH8~<1!Y^N$uX>oDwePd{hbOC(h*+?9J}s4&gMHVAQ*R5;M#o%%R!vQ;I@SO==LFsU++BJ~u#4Ib{?Qq})2d#Pe(0WAA zmi9Km>Gwn(gVzzKK{|l0Wl$q^typ03H-(S+U+ZmC!035AdFQd9F0h_|DFsX6+iZWN+2lyqRobWxbiotXM zI%2wY){A%wK!SlRMwWl07~QsO*DP_rA`+hu{HPn@dW5?3CBkSqaqG?wRnpHryu+!s zZfdjF1Mn9V7pGc~P!A!CA>eA?RoD%qUQ~qfWj$&0u{X#tocvaR2zM1L4xp%!NAG~@ z3!6(mQgSCbig+Gw#rZ>&3@tv@SnBYvqa=I2dC4fD6~NZpc^EB=+!Wz1yc?c5y#L6N zBT#FQxlSaP51joZ^_cQ#^A=D>d!g(%d|^i7=CcS+GzeyrCOrlF6e4!!siZk0M58C^ ztkVp`MhEB?%?>{0qI^00ExieYSNrgaU0km_4L(L5@rmSR9=M{n*x z7nRD70M>e~NW>{S2D#ZA6AZw8y40_4?|7=ISrp48_E3V}`Sx;vLMHT!Z6;Qx2B*(< zMdeynnN_4Oi{vm4%-jSz&QWy0sKs2zn0lJhi6i>izK}Re9}j?d?%a}w+l`Ll%97!X z4Dn;eILwDQwibuZRA-AP9m+(zg4zyyh0sS-+B{w5Cdv9{+vmqcaWY?;raqNKhiw%X z5IE52GyB7)zFbG1#ZUc#?d&k*(n>ac1J`%0c_m5%SLD@Q- z#b9{OqOhMTke(J8TU{WsFC$U#t_LsTq#SKg8H!F)uybi`4d%LAoa(MD(KnOU#5`ga zd^gh>(imUB1!Toh-l6yw7D|MfaRpZFHO=M~q}PB)1u6pqcQ%~LWKr+eAUx7cOO1b$ zqT$R-ml(`V)1E;69M^K|5OnKYk(@eH>!T_VqpPtJOC-DZ$e6Rpc**eyx_K#kPd5Y` zSacfZjQ@Ve-`O5~x4L%zLGLIeNLPd>x5BW@_{Zd=0jRUTPPiR&D&92KmNUJ}@~X$4 zNzua|DA--U53pp+nbf!)*-h1zQ`*88IH*%7?(W8OyoFnBF}8_6LK^iP+7C+V66M+X zF~ZnxtUpuGeEbl&>#nLsPzEzgR=h$8&5ut>PIl#YoDPmxtlvf)x8bZov3`6hZWj_J zvH~$a?@&ZND@C`F#%+(}3=V2bTctR!NvZwblsNl-j`5B^Ba$CRXR4)p1yrf+ZqiPI zOFzWnih?!78EynfVc#D3KIlk1Rp96VD+`cb^DZbE28ypF&gf{-MC^=w8;GKBBE#309%pV%0A?@9} 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 literal 0 HcmV?d00001 diff --git a/Help/notebooks/images/run-all-cells.png b/Help/notebooks/images/run-all-cells.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac0c405cd5422e2d32a4486d6608f8475b09fe1 GIT binary patch literal 22758 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 literal 0 HcmV?d00001 diff --git a/Help/notebooks/images/setup-environment-config.png b/Help/notebooks/images/setup-environment-config.png new file mode 100644 index 0000000000000000000000000000000000000000..6e7f431a0cb9465e88f254732124f2fee1d544d8 GIT binary patch literal 121324 zcmdqJbySpX_xOt@B2Mxo%K7vzs|ju%QZ81T=%}NYsY8rO}MJEEY1VU2WV($IC8I~)zQ!}n$ghE z-(ufIeWO#d&4&8#p7jf*7iegeu@4bu7^u(pU0&(AqoI*9|N3`FPMzrx4Gmc(C;dY6 zwejwav!bCw#wO0W-Nx|f&}fQ}uQub^7we|{`sSkn_6T9yGNL33hmmKUZJ0uh0uKc~ z@OUlQ6B?SDfUE8(h}Iv%6u7ZD-!`w=N4to%LOYPgo4~|5i+Qk|8ujVI^+REb#)o!5>+JJ=kFh% zGy32W6NR{YO;fT0{{9lphDlZNUmwsEKSTc42gpAzMtkxW^lQ@o9Hw{w@yu`cBJThF z1KOMW#65Pr+fq*J45Xp9ihz)Hv(O&4l8L!b(sGc z9HksO3DMQ%bncFWTfGsR7yW z&D|>ge@OGkD`idKV_~{h@rvs3{}MY(ImBfqRNJe;rs}56y_@X6E?#&Ga@%S(Og#~p z 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 I6*chtUxlLRM*si- literal 0 HcmV?d00001 diff --git a/Help/notebooks/mock-register.ipynb b/Help/notebooks/mock-register.ipynb new file mode 100644 index 0000000..8760d50 --- /dev/null +++ b/Help/notebooks/mock-register.ipynb @@ -0,0 +1,747 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Table of Contents\n", + "\n", + "* [Environment and Configuration Setup - PowerShell](#setup-configuration)\n", + "* [Set Variables for HTTP Request Cells](#setup-http-configuration)\n", + "* [Data Holder APIs](#data_holder_apis) \n", + " * [Get JWKS](#get_jwks)\n", + " * [Get Data Recipients](#get_datarecipients)\n", + " * [Get Data Recipients Statuses](#get_datarecipients_status)\n", + " * [Get Software Products Statuses](#get_sp_status)\n", + " * [Get Data Holder Statuses](#get_dh_status)\n", + " * [Get OpenId Provider Config - JWKS](#get_openid_jwks)\n", + " * [Get OpenId Provider Config](#get_openid)\n", + "* [Data Recipient APIs](#data_recipient_apis)\n", + " * [Get OpenId Provider Config](#get_openid)\n", + " * [mTLS APIs]()\n", + " * [Get Access Token](#get_token)\n", + " * [Get Data Holder Brands](#get-data-holder-brands)\n", + " * [Get Software Statement Assertion (SSA)](#get_ssa)\n", + "* [Register Administration APIs](#admin_apis)\n", + " * [Get Metadata](#get_meta_data)\n", + " * [Load Metadata](#load_meta_data)\n", + " * [Add or Update Data Recipients](#update_data_recipients)\n", + " * [Add or Update Data Holders](#update_data_holders)\n", + " * [Get Identity Provider JWKS](#get_jwks_infosec)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Environment and Configuration Setup \n", + "\n", + "Set the required configuration variables which are reused by all the PowerShell cells in this notebook. \n", + "\n", + "**Note:** This cell must be executed prior to executing any PowerShell cells in this notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "pwsh" + }, + "polyglot_notebook": { + "kernelName": "pwsh" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "# Set Urls to use\n", + "$hostname = \"localhost\"\n", + "$mockRegisterBaseUrl = \"https://${hostname}:7000\"\n", + "$mockRegisterSecureBaseUrl = \"https://${hostname}:7001\"\n", + "\n", + "# Set Data Reciepient variables\n", + "$mockDataRecipientCertificatePath = \"..\\\\..\\\\CertificateManagement\\\\mtls\\\\client.pfx\"\n", + "$mockDataRecipientCertificatePassword = \"#M0ckDataRecipient#\"\n", + "$industry = \"Banking\"\n", + "$dataRecipientBrandId = \"F3F0C40B-9DF8-491A-AF1D-81CB9AB5F021\"\n", + "$softwareProductId = \"6F7A1B8E-8799-48A8-9011-E3920391F713\"\n", + "$mdrClientAssertionUri = \"https://${hostname}:7006/loopback/MockDataRecipientClientAssertion?iss=$softwareProductId\"\n", + "\n", + "# Load the Data Reciepient certificate with password\n", + "$certPassword = ConvertTo-SecureString -String $mockDataRecipientCertificatePassword -Force -AsPlainText\n", + "$mockDataRecipientCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList $mockDataRecipientCertificatePath, $certPassword" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Set the required variables from above PowerShell cell to make them available for HTTP Request cells.\n", + "\n", + "**Note:** This cell must be executed prior to executing any HTTP Request cells in this notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "http" + }, + "polyglot_notebook": { + "kernelName": "http" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "#!set --value @pwsh:hostname --name hostname\n", + "#!set --value @pwsh:mockRegisterBaseUrl --name mockRegisterBaseUrl\n", + "#!set --value @pwsh:softwareProductId --name softwareProductId\n", + "#!set --value @pwsh:industry --name industry" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data Holder APIs \n", + "\n", + "The Mock Register's Data Holder APIs are the used by Data Holders. These APIs do not require any authentication." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get JWKS \n", + "\n", + "\n", + "`GET /cdr-register/v1/jwks`\n", + "\n", + "JWKS endpoint containing the public keys used by the CDR Register to validate the signature of issued SSAs and authenticate outbound calls to participants in the CDR." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "http" + }, + "polyglot_notebook": { + "kernelName": "http" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "GET {{mockRegisterBaseUrl}}/cdr-register/v1/jwks" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get Data Recipients \n", + "\n", + "`GET /cdr-register/v1/{industry}/data-recipients`\n", + "\n", + "Endpoint used by participants to discover data recipients and associated brands and software products, available in the CDR ecosystem." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "http" + }, + "polyglot_notebook": { + "kernelName": "http" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "GET {{mockRegisterBaseUrl}}/cdr-register/v1/{{industry}}/data-recipients\n", + "x-v:3" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get Data Recipients Statuses\n", + "\n", + "`GET /cdr-register/v1/{industry}/data-recipients/status`\n", + "\n", + "Endpoint used by participants to discover the statuses for Data Recipients from the CDR Register." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "http" + }, + "polyglot_notebook": { + "kernelName": "http" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "GET {{mockRegisterBaseUrl}}/cdr-register/v1/{{industry}}/data-recipients/status\n", + "x-v: 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get Software Products Statuses\n", + "\n", + "`GET /cdr-register/v1/{industry}/data-recipients/brands/software-products/status`\n", + "\n", + "Endpoint used by participants to discover the statuses for software products from the CDR Register." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "http" + }, + "polyglot_notebook": { + "kernelName": "http" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "GET {{mockRegisterBaseUrl}}/cdr-register/v1/{{industry}}/data-recipients/brands/software-products/status\n", + "x-v: 2" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get Data Holder Statuses\n", + "\n", + "`GET /cdr-register/v1/{industry}/data-holders/status`\n", + "\n", + "Endpoint used by participants to discover the statuses for Data Holders from the CDR Register" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "http" + }, + "polyglot_notebook": { + "kernelName": "http" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "GET {{mockRegisterBaseUrl}}/cdr-register/v1/{{industry}}/data-holders/status\n", + "x-v: 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Data Recipient APIs \n", + "\n", + "The Mock Register's Data Recipient APIs are the used by Data Recipients. An access token is required to access the Get Data Holder Brands and Get Software Statement Assertion (SSA) APIs." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get OpenId Provider Config \n", + "\n", + "`GET /idp/.well-known/openid-configuration`\n", + "\n", + "Endpoint used by participants to discover the CDR Register OpenID configuration and obtain information needed to interact with it, including its OAuth 2.0 endpoint locations." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "http" + }, + "polyglot_notebook": { + "kernelName": "http" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "GET {{mockRegisterBaseUrl}}/idp/.well-known/openid-configuration" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get Access Token \n", + "\n", + "`GET /idp/connect/token`\n", + "\n", + "Get an access token from the Register. An access token is required to access the Get Data Holder Brands and Get Software Statement Assertion (SSA) APIs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "pwsh" + }, + "polyglot_notebook": { + "kernelName": "pwsh" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "# Make the request to get mdr client assertion on loopback Url\n", + "$response = Invoke-WebRequest -Uri $mdrClientAssertionUri -Certificate $mockDataRecipientCert\n", + "$mdrClientAssertion = $response.Content\n", + "\n", + "# Define your parameters\n", + "$parameters = @{\n", + " \"grant_type\" = \"client_credentials\"\n", + " \"client_id\" = $softwareProductId\n", + " \"client_assertion_type\" = \"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\"\n", + " \"client_assertion\" = $mdrClientAssertion\n", + " \"scope\" = \"cdr-register:read\"\n", + "}\n", + "\n", + "# Make the request\n", + "$response = Invoke-RestMethod -Uri \"${mockRegisterSecureBaseUrl}/idp/connect/token\" `\n", + " -Method Post -StatusCodeVariable responseCode `\n", + " -Body $parameters -ContentType \"application/x-www-form-urlencoded\" `\n", + " -Certificate $mockDataRecipientCert\n", + "\n", + "$accessToken = $response.access_token\n", + "\n", + "# Write the response status code and content to the console\n", + "Write-Host \"Response Code: $responseCode\"\n", + "Write-Host \"Response Content: $accessToken\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "source": [ + "## Get Data Holder Brands \n", + "\n", + "\n", + "`GET /cdr-register/v1/{industry}/data-holders/brands`\n", + "\n", + "Allows Data Recipients to discover Data Holder Brands available in the CDR ecosystem.\n", + "\n", + "**Note:** This API requires an access token. The Get Access Token cell must be executed prior to executing this cell." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "pwsh" + }, + "polyglot_notebook": { + "kernelName": "pwsh" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "# Set the API version and Authorization headers\n", + "$headers = @{\n", + " \"x-v\" = \"2\"\n", + " \"Authorization\" = \"Bearer $accessToken\"\n", + "}\n", + "\n", + "# Make the request\n", + "$res = Invoke-RestMethod -Uri \"${mockRegisterSecureBaseUrl}/cdr-register/v1/all/data-holders/brands\" `\n", + " -Method Get -StatusCodeVariable resCode -Headers $headers -Certificate $mockDataRecipientCert `\n", + " | ConvertTo-Json -Depth 10\n", + "\n", + "# Write the response status code and content to the console\n", + "Write-Host \"Response Code: $resCode\"\n", + "Write-Host \"Response Content: $($res)\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get Software Statement Assertion (SSA) \n", + "\n", + "`GET /cdr-register/v1/{industry}/data-recipients/brands/{dataRecipientBrandId}/software-products/{softwareProductId}/ssa`\n", + "\n", + "Get a Software Statement Assertion (SSA) for a software product on the CDR Register to be used for Dynamic Client Registration with a Data Holder Brand.\n", + "\n", + "**Note:** This API requires an access token. The Get Access Token cell must be executed prior to executing this cell." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "pwsh" + }, + "polyglot_notebook": { + "kernelName": "pwsh" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "# Set the API version and Authorization headers\n", + "$headers = @{\n", + " \"x-v\" = \"3\"\n", + " \"Authorization\" = \"Bearer $accessToken\"\n", + "}\n", + "\n", + "# Make the request\n", + "$r = Invoke-RestMethod -Uri \"${mockRegisterSecureBaseUrl}/cdr-register/v1/all/data-recipients/brands/${dataRecipientBrandId}/software-products/${softwareProductId}/ssa\" `\n", + " -Method Get -StatusCodeVariable rCode -Headers $headers -Certificate $mockDataRecipientCert `\n", + " | ConvertTo-Json -Depth 10\n", + "\n", + "# Write the response status code and content to the console\n", + "Write-Host \"Response Code: $rCode\"\n", + "Write-Host \"Response Content: $($r)\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Administration APIs \n", + "\n", + "The Mock Register's Administration APIs are used internally to add and update data in the Mock Register's database." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get Metadata \n", + "\n", + "`GET /admin/metadata`\n", + "\n", + "Get the metadata currently loaded in the Mock Register." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "http" + }, + "polyglot_notebook": { + "kernelName": "http" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "GET https://{{hostname}}:7006/admin/metadata" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load Metadata \n", + "\n", + "`POST /admin/metadata`\n", + "\n", + "Load new metadata in the Mock Register." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "pwsh" + }, + "polyglot_notebook": { + "kernelName": "pwsh" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "# Load Payload from file. \n", + "# Note: This payload is loaded from an external file instead of directly using a Polyglot cell due to it's large size. Large payload are difficult to read and modify in a Polyglot cell.\n", + "$metadataPayload = Get-Content -path .\\payloads\\metadataPayload.json -raw\n", + "\n", + "# Make the request\n", + "$response = Invoke-RestMethod -Uri \"https://${hostname}:7006/admin/metadata\" `\n", + " -Method Post -StatusCodeVariable responseCode `\n", + " -Body $metadataPayload `\n", + " -ContentType \"application/json\" `\n", + "\n", + "# Write the response status code and content to the console\n", + "Write-Host \"Response Code: $responseCode\" \n", + "Write-Host \"Response Content: $response\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Add or Update Data Recipients \n", + "\n", + "`POST /admin/metadata/data-recipients`\n", + "\n", + "Add or update a Data Recipient in the Mock Register." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "http" + }, + "polyglot_notebook": { + "kernelName": "http" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "POST https://{{hostname}}:7006/admin/metadata/data-recipients \n", + "x-v: 1\n", + "Content-Type: application/json\n", + "{\n", + " \"legalEntityId\": \"f9bde9a1-9fef-4bd9-b7ef-877369e076e3\",\n", + " \"legalEntityName\": \"Mock Energy Company\",\n", + " \"accreditationNumber\": \"ADR000001\",\n", + " \"accreditationLevel\": \"UNRESTRICTED\",\n", + " \"logoUri\": \"https://mocksoftware/img/Companylogo.png\",\n", + " \"registrationNumber\": null,\n", + " \"registrationDate\": null,\n", + " \"registeredCountry\": null,\n", + " \"abn\": \"34241177887\",\n", + " \"acn\": \"241177887\",\n", + " \"arbn\": \"342411088\",\n", + " \"anzsicDivision\": null,\n", + " \"organisationType\": \"COMPANY\",\n", + " \"status\": \"ACTIVE\",\n", + " \"dataRecipientBrands\": [\n", + " {\n", + " \"dataRecipientBrandId\": \"d50b74cf-e992-42fd-86d4-582ac9d72dbc\",\n", + " \"brandName\": \"Mock Energy Tool\",\n", + " \"logoUri\": \"https://mocksoftware/img/brandlogo.png\",\n", + " \"status\": \"ACTIVE\",\n", + " \"softwareProducts\": [\n", + " {\n", + " \"softwareProductId\": \"4754cf30-6cc2-4a9a-a9e1-4fb8f6d42121\",\n", + " \"softwareProductName\": \"MyEnergyHelper\",\n", + " \"softwareProductDescription\": \"A product to help you manage your energy costs\",\n", + " \"logoUri\": \"https://mocksoftware/myenergyapp/img/logo.png\",\n", + " \"sectorIdentifierUri\": null,\n", + " \"clientUri\": \"https://mocksoftware/myenergyapp\",\n", + " \"tosUri\": \"https://mocksoftware/myenergyapp/terms\",\n", + " \"policyUri\": \"https://mocksoftware/myenergyapp/policy\",\n", + " \"recipientBaseUri\": \"https://mock-data-recipient:9001\",\n", + " \"revocationUri\": \"revocation\",\n", + " \"redirectUris\": [\n", + " \"consent/callback\",\n", + " \"consent/callback2\"\n", + " ],\n", + " \"jwksUri\": \"jwks\",\n", + " \"scope\": \"openid profile bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read common:customer.basic:read common:customer.detail:read cdr:registration cdr-register:read\",\n", + " \"status\": \"ACTIVE\",\n", + " \"certificates\": [\n", + " {\n", + " \"commonName\": \"MockDataRecipient\",\n", + " \"thumbprint\": \"f0e5146a51f16e236844cf0353d791f11865e405\"\n", + " }\n", + " ]\n", + " }\n", + " ]\n", + " }\n", + " ]\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Add or Update Data Holders \n", + "\n", + "`POST /admin/metadata/data-holders`\n", + "\n", + "Add or update a Data Holder in the Mock Register." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "http" + }, + "polyglot_notebook": { + "kernelName": "http" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "POST https://{{hostname}}:7006/admin/metadata/data-holders HTTP/1.1\n", + "Content-Type: application/json\n", + "x-v: 1\n", + "{\n", + " \"dataHolderBrandId\": \"bb03be60-5c46-422e-a27e-aefa0015078d\",\n", + " \"brandName\": \"Luna\",\n", + " \"industries\": [\n", + " \"banking\"\n", + " ],\n", + " \"logoUri\": \"https://lunabrand/img/logo.png\",\n", + " \"status\": \"ACTIVE\",\n", + " \"endpointDetail\": {\n", + " \"version\": \"v1\",\n", + " \"publicBaseUri\": \"https://publicapi.lunabank\",\n", + " \"resourceBaseUri\": \"https://rb-api.lunabank\",\n", + " \"infosecBaseUri\": \"https://isb-api.lunabank\",\n", + " \"extensionBaseUri\": \"https://eb-api.lunabank\",\n", + " \"websiteUri\": \"https://ws-api.lunabank\"\n", + " },\n", + " \"authDetails\": {\n", + " \"registerUType\": \"SIGNED-JWT\",\n", + " \"jwksEndpoint\": \"https://idp.lunabank/jwks\"\n", + " },\n", + " \"legalEntity\": {\n", + " \"legalEntityId\": \"667407fc-dc7e-4be5-8795-5189240bcbca\",\n", + " \"legalEntityName\": \"Luna Bank\",\n", + " \"logoUri\": \"https://lunabank/img/logo.png\",\n", + " \"registrationNumber\": \"20032023\",\n", + " \"registrationDate\": \"2023-05-22\",\n", + " \"registeredCountry\": \"AU\",\n", + " \"abn\": \"12345678901\",\n", + " \"acn\": \"345678901\",\n", + " \"arbn\": \"345678901\",\n", + " \"anzsicDivision\": \"123\",\n", + " \"organisationType\": \"OTHER\",\n", + " \"status\": \"ACTIVE\"\n", + " }\n", + "}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Get Identity Provider JWKS \n", + "\n", + "\n", + "`GET /idp/.well-known/openid-configuration/jwks`\n", + "\n", + "JWKS endpoint containing the public keys used by the CDR Register's Identity Provider to validate access tokens used in Get Data Holder Brands and Get Software Statement Assertion (SSA) requests." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "dotnet_interactive": { + "language": "http" + }, + "polyglot_notebook": { + "kernelName": "http" + }, + "vscode": { + "languageId": "polyglot-notebook" + } + }, + "outputs": [], + "source": [ + "GET {{mockRegisterBaseUrl}}/idp/.well-known/openid-configuration/jwks" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".NET (C#)", + "language": "C#", + "name": ".net-csharp" + }, + "language_info": { + "name": "python" + }, + "polyglot_notebook": { + "kernelInfo": { + "defaultKernelName": "csharp", + "items": [ + { + "aliases": [], + "name": "csharp" + } + ] + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Help/notebooks/payloads/metadataPayload.json b/Help/notebooks/payloads/metadataPayload.json new file mode 100644 index 0000000..dfbbafa --- /dev/null +++ b/Help/notebooks/payloads/metadataPayload.json @@ -0,0 +1,1971 @@ +{ + "legalEntities": [ + { + "legalEntityId": "2f596416-53bc-42ad-bd5a-65537a2d5c42", + "legalEntityName": "Very Smart Energy Company", + "logoUri": "https://verysmarterenergy/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12345678901", + "acn": "123456789", + "arbn": null, + "anzsicDivision": "2640", + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 2, + "statusId": 1, + "brands": [ + { + "brandId": "cfcaf0df-401b-47f2-98af-94787289eca8", + "brandName": "Mock Data Holder (Energy)", + "logoUri": "https://smarterenergy/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-12-01T10:00:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.smarterenergy/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://mock-data-holder-energy:8100", + "resourceBaseUri": "https://mock-data-holder-energy:8102", + "infoSecBaseUri": "https://mock-data-holder-energy:8101", + "extensionBaseUri": "", + "websiteUri": "https://smarterenergy/" + } + }, + { + "brandId": "6859d9f9-9cf9-486d-bc85-5d43a7e116de", + "brandName": "Cut Price Energy -- dummy data holder -- do not use", + "logoUri": "https://cutpriceenergy/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-12-01T11:00:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.cutpriceenergy/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://api.cutpriceenergy:8100", + "resourceBaseUri": "https://api.cutpriceenergy:8102", + "infoSecBaseUri": "https://api.cutpriceenergy:8101", + "extensionBaseUri": "", + "websiteUri": "https://cutpriceenergy/" + } + } + ] + } + ] + }, + { + "legalEntityId": "f9bde9a1-9fef-4bd9-b7ef-877369e076e3", + "legalEntityName": "Mock Energy Company", + "logoUri": "https://mocksoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "34241177887", + "acn": "005249981", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000001", + "accreditationLevelId": 1, + "participations": [ + { + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ + { + "brandId": "d50b74cf-e992-42fd-86d4-582ac9d72dbb", + "brandName": "Mock Energy Tool", + "logoUri": "https://mocksoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-12-01T09:00:00", + "softwareProducts": [ + { + "softwareProductId": "4754cf30-6cc2-4a9a-a9e1-4fb8f6d42120", + "softwareProductName": "MyEnergyHelper", + "softwareProductDescription": "A product to help you manage your energy costs", + "logoUri": "https://mocksoftware/myenergyapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://mocksoftware/myenergyapp", + "tosUri": "https://mocksoftware/myenergyapp/terms", + "policyUri": "https://mocksoftware/myenergyapp/policy", + "recipientBaseUri": "https://mock-data-recipient:9001", + "revocationUri": "https://mock-data-recipient:9001/revocation", + "redirectUris": "https://mock-data-recipient:9001/consent/callback", + "jwksUri": "https://mock-data-recipient:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ + { + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + } + ] + } + ] + } + ] + } + ] + }, + { + "legalEntityId": "0d332caa-8cd8-4ac9-8898-20641c54bc8c", + "legalEntityName": "Bank Legal Entity 1", + "logoUri": "https://bank/logo.png", + "registrationNumber": "12345", + "registrationDate": "2021-12-01T10:00:00", + "registeredCountry": "AUSTRALIA", + "abn": "11111111111", + "acn": "888777666", + "arbn": null, + "anzsicDivision": "6221", + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "804fc2fb-18a7-4235-9a49-2af393d18bc7", + "brandName": "Mock Data Holder (Banking)", + "logoUri": "https://bank1/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.bank1/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://mock-data-holder:8000", + "resourceBaseUri": "https://mock-data-holder:8002", + "infoSecBaseUri": "https://mock-data-holder:8001", + "extensionBaseUri": "", + "websiteUri": "https://bank1/" + } + } + ] + } + ] + }, + { + "legalEntityId": "18b75a76-5821-4c9e-b465-4709291cf0f4", + "legalEntityName": "Mock Software Company", + "logoUri": "https://mocksoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "11222333444", + "acn": "222333444", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000099", + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ + { + "brandId": "ffb1c8ba-279e-44d8-96f0-1bc34a6b436f", + "brandName": "Mock Finance Tools", + "logoUri": "https://mocksoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ + { + "softwareProductId": "c6327f87-687a-4369-99a4-eaacd3bb8210", + "softwareProductName": "MyBudgetHelper", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://mocksoftware/mybudgetapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://mocksoftware/mybudgetapp", + "tosUri": "https://mocksoftware/mybudgetapp/terms", + "policyUri": "https://mocksoftware/mybudgetapp/policy", + "recipientBaseUri": "https://mock-data-recipient:9001", + "revocationUri": "https://mock-data-recipient:9001/revocation", + "redirectUris": "https://mock-data-recipient:9001/consent/callback", + "jwksUri": "https://mock-data-recipient:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ + { + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + } + ] + } + ] + } + ] + } + ] + }, + { + "legalEntityId": "93ef5f28-7f30-43f2-8e5c-b1e3cb39ce90", + "legalEntityName": "New Bank", + "logoUri": "https://newbank/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "99888777666", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "6e9cfaf7-ecae-4de3-bbc5-ea9f366bdf55", + "brandName": "New Bank -- dummy data holder -- do not use", + "logoUri": "https://newbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.newbank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.newbank", + "resourceBaseUri": "https://api.newbank", + "infoSecBaseUri": "https://idp.newbank", + "extensionBaseUri": "", + "websiteUri": "https://newbank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "aeca53ab-2a90-4737-938d-987ce195ca14", + "legalEntityName": "Sun Bank", + "logoUri": "https://sunbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "94477558899", + "acn": "99000099", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "f6dfbe5b-c57a-4ec2-bc97-66c1f7fe6c1d", + "brandName": "Sun -- dummy data holder -- do not use", + "logoUri": "https://sunbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-01T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.sunbank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.sunbank", + "resourceBaseUri": "https://api.sunbank", + "infoSecBaseUri": "https://idp.sunbank", + "extensionBaseUri": "", + "websiteUri": "https://sunbank/" + } + }, + { + "brandId": "a2cd9cd1-e3c7-493b-86d8-f9f319ca0732", + "brandName": "Brighter Bank -- dummy data holder -- do not use", + "logoUri": "https://brighterbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-01-01T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.brighterbank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.brighterbank", + "resourceBaseUri": "https://api.brighterbank", + "infoSecBaseUri": "https://idp.brighterbank", + "extensionBaseUri": "", + "websiteUri": "https://brighterbank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "ba1311fb-5cea-4c5c-b4ed-f2a98a0915e0", + "legalEntityName": "Hot Bank", + "logoUri": "https://hotbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12345678901", + "acn": "123456789", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "62f4a113-defe-4f99-bd9c-625277bc0e36", + "brandName": "mildBank -- dummy data holder -- do not use", + "logoUri": "https://mildbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-11T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://mildbank/idp/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.mildbank", + "resourceBaseUri": "https://api.mildbank", + "infoSecBaseUri": "https://idp.mildbank", + "extensionBaseUri": "", + "websiteUri": "https://mildbank/" + } + }, + { + "brandId": "81d3d5cc-cdb6-4253-a78b-b17155dde7fd", + "brandName": "extrahotBank -- dummy data holder -- do not use", + "logoUri": "https://extrahotbank/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-16T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://extrahotbank/idp/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.extrahotbank", + "resourceBaseUri": "https://api.extrahotbank", + "infoSecBaseUri": "https://idp.extrahotbank", + "extensionBaseUri": "", + "websiteUri": "https://extrahotbank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "725c6e62-bfa7-4719-94af-415ae64d4bcd", + "legalEntityName": "Ive Bank", + "logoUri": "https://ivebank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12312312393", + "acn": "099800998", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "9928cf0f-70c7-40ea-b7ad-cad190232f68", + "brandName": "Ive Bank -- dummy data holder -- do not use", + "logoUri": "https://ivebank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-03T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.ivebank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.ivebank", + "resourceBaseUri": "https://api.ivebank", + "infoSecBaseUri": "https://idp.ivebank", + "extensionBaseUri": "", + "websiteUri": "https://ivebank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "2f1c327f-56b6-40c5-8e2e-b2130867329c", + "legalEntityName": "Eva Bank", + "logoUri": "https://evabank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "98765456765", + "acn": "22121232", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "7c97c3b5-fe64-4b35-8ae0-17fa5d4aa0a8", + "brandName": "Eva Bank corp -- dummy data holder -- do not use", + "logoUri": "https://evabankcorp/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-26T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.evabank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.evabank", + "resourceBaseUri": "https://api.evabank", + "infoSecBaseUri": "https://idp.evabank", + "extensionBaseUri": "", + "websiteUri": "https://evabank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "e81ab637-b3b7-4403-82b8-a43077a569d6", + "legalEntityName": "Royal Bank", + "logoUri": "https://royalbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "94477558833", + "acn": "99000033", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "a5252bde-d1a6-413f-8f53-f7e2f6ab3f77", + "brandName": "Royal Bank -- dummy data holder -- do not use", + "logoUri": "https://royalbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-01T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.royalbank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.royalbank", + "resourceBaseUri": "https://api.royalbank", + "infoSecBaseUri": "https://idp.royalbank", + "extensionBaseUri": "", + "websiteUri": "https://royalbank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "e81ab636-b3b7-4403-82b8-a43077a569d6", + "legalEntityName": "Central Bank", + "logoUri": "https://centralbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12398122412", + "acn": "44123312", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "c1ff7731-5843-4384-88d8-6062afde7c5b", + "brandName": "central bank -- dummy data holder -- do not use", + "logoUri": "https://centralbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-03-06T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.centralbank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.centralbank", + "resourceBaseUri": "https://api.centralbank", + "infoSecBaseUri": "https://idp.centralbank", + "extensionBaseUri": "", + "websiteUri": "https://centralbank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "ae4af466-54c6-4ce4-ad2d-580bc6496943", + "legalEntityName": "Fox Bank", + "logoUri": "https://foxbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "31234212475", + "acn": "122341213", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "2192a459-5ef5-4493-afe1-56c3d03fc1ba", + "brandName": "Fox Bank -- dummy data holder -- do not use", + "logoUri": "https://foxbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-21T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.foxbank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.foxbank", + "resourceBaseUri": "https://api.foxbank", + "infoSecBaseUri": "https://idp.foxbank", + "extensionBaseUri": "", + "websiteUri": "https://foxbank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "017fcfc8-1fd3-4ef4-8f08-b697c4c681ee", + "legalEntityName": "Grand Bank", + "logoUri": "https://grandbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "99888777666", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "8aa8e9a6-1dc7-4428-baea-d1f4533428b9", + "brandName": "Grand Bank -- dummy data holder -- do not use", + "logoUri": "https://grandbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-29T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.grandbank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.grandbank", + "resourceBaseUri": "https://api.grandbank", + "infoSecBaseUri": "https://idp.grandbank", + "extensionBaseUri": "", + "websiteUri": "https://grandbank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "7b1a7566-e113-411b-94b7-d3b9fb0da98a", + "legalEntityName": "Kiss Bank", + "logoUri": "https://kissbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12593477455", + "acn": "112122235", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "85168ace-9211-45e3-bb75-f85c54e66f10", + "brandName": "Kiss Bank -- dummy data holder -- do not use", + "logoUri": "https://kissbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-12T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.kissbank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.kissbank", + "resourceBaseUri": "https://api.kissbank", + "infoSecBaseUri": "https://idp.kissbank", + "extensionBaseUri": "", + "websiteUri": "https://kissbank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "667407fc-dc7e-4be5-8795-5189240bcbca", + "legalEntityName": "Luna Bank", + "logoUri": "https://lunabank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12334412233", + "acn": "747553322", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "bb03be60-5c46-422e-a27e-aefa0015078d", + "brandName": "Luna -- dummy data holder -- do not use", + "logoUri": "https://lunabank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-12T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.lunabank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.lunabank", + "resourceBaseUri": "https://api.lunabank", + "infoSecBaseUri": "https://idp.lunabank", + "extensionBaseUri": "", + "websiteUri": "https://lunabank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "7993c227-9252-432b-9b2f-a8666e2fd2f2", + "legalEntityName": "Mu Bank", + "logoUri": "https://mubank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12352345345", + "acn": "112123121", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "52d23611-4493-4a21-9095-44ae9eb85841", + "brandName": "Mu Bank -- dummy data holder -- do not use", + "logoUri": "https://mubank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.mubank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.mubank", + "resourceBaseUri": "https://api.mubank", + "infoSecBaseUri": "https://idp.mubank", + "extensionBaseUri": "", + "websiteUri": "https://mubank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "9c7dec6d-2e46-4b53-8430-5337c7eb93e9", + "legalEntityName": "Noon Bank", + "logoUri": "https://noonbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "11123599749", + "acn": "224435522", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "557f42e8-4e00-4b03-a9c9-d97796b6418b", + "brandName": "Noon Bank -- dummy data holder -- do not use", + "logoUri": "https://noonbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.noonbank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.noonbank", + "resourceBaseUri": "https://api.noonbank", + "infoSecBaseUri": "https://idp.noonbank", + "extensionBaseUri": "", + "websiteUri": "https://noonbank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "b9b45c14-3346-47f7-ad78-3416762cf1d8", + "legalEntityName": "Oppo Bank", + "logoUri": "https://oppobank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12412412426", + "acn": "995543336", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "a5e45351-d13c-4690-93d1-3da515e71a92", + "brandName": "Oppo Bank -- dummy data holder -- do not use", + "logoUri": "https://oppobank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.oppobank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.oppobank", + "resourceBaseUri": "https://api.oppobank", + "infoSecBaseUri": "https://idp.oppobank", + "extensionBaseUri": "", + "websiteUri": "https://oppobank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "b7a18659-eb9b-4130-a0df-402c85f1f216", + "legalEntityName": "Pepper Bank", + "logoUri": "https://pepperbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "87356524315", + "acn": "322342343", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "97e53112-73b2-482a-b352-39d389d67916", + "brandName": "Pepper Bank -- dummy data holder -- do not use", + "logoUri": "https://pepperbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.pepperbank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.pepperbank", + "resourceBaseUri": "https://api.pepperbank", + "infoSecBaseUri": "https://idp.pepperbank", + "extensionBaseUri": "", + "websiteUri": "https://pepperbank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "fe75814c-99ee-4922-a6b0-71913e60984c", + "legalEntityName": "QQ Bank", + "logoUri": "https://qqbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "21111244638", + "acn": "317373231", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "895e54c5-93e0-405f-8072-0a9871bac8b5", + "brandName": "QQ Bank -- dummy data holder -- do not use", + "logoUri": "https://qqbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.qqbank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.qqbank", + "resourceBaseUri": "https://api.qqbank", + "infoSecBaseUri": "https://idp.qqbank", + "extensionBaseUri": "", + "websiteUri": "https://qqbank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "06c595f2-f0b2-4684-90e1-6905e4537304", + "legalEntityName": "Run Bank", + "logoUri": "https://runbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "99888777666", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "975375f7-2bd9-44b5-a188-43d65ca8eaae", + "brandName": "Run Bank -- dummy data holder -- do not use", + "logoUri": "https://runbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.runbank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.runbank", + "resourceBaseUri": "https://api.runbank", + "infoSecBaseUri": "https://idp.runbank", + "extensionBaseUri": "", + "websiteUri": "https://runbank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "350c4b28-132c-4248-a962-1434e00e7046", + "legalEntityName": "SaS Bank", + "logoUri": "https://sasbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "99888777666", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "b648f694-0dee-4f5e-bd2c-9837ac08fb7b", + "brandName": "SaS Bank -- dummy data holder -- do not use", + "logoUri": "https://sasbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.sasbank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.sasbank", + "resourceBaseUri": "https://api.sasbank", + "infoSecBaseUri": "https://idp.sasbank", + "extensionBaseUri": "", + "websiteUri": "https://sasbank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "a1349224-adf3-4678-ba9b-f9ec800b5dc5", + "legalEntityName": "TnT Bank", + "logoUri": "https://tntbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "13123412473", + "acn": "533284211", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "f8bce914-ac8d-436a-b265-19baca6d1df2", + "brandName": "TnT Bank -- dummy data holder -- do not use", + "logoUri": "https://tntbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.tntbank/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.tntbank", + "resourceBaseUri": "https://api.tntbank", + "infoSecBaseUri": "https://idp.tntbank", + "extensionBaseUri": "", + "websiteUri": "https://tntbank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "bc9d68f2-74c4-43d5-9a9c-93e72a2e84c9", + "legalEntityName": "Bank Legal Entity 2", + "logoUri": "https://bank2/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "11111111111", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "e748eadf-4aa4-4e2f-b3da-fb4a9d511994", + "brandName": "Bank Brand 2 -- dummy data holder -- do not use", + "logoUri": "https://bank2/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.bank2/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.bank2", + "resourceBaseUri": "https://api.bank2", + "infoSecBaseUri": "https://idp.bank2", + "extensionBaseUri": "", + "websiteUri": "https://bank2/" + } + } + ] + } + ] + }, + { + "legalEntityId": "3d974478-afa6-4ce4-80bc-6f93e8e92e19", + "legalEntityName": "Smarter Bank", + "logoUri": "https://smarterbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12345678901", + "acn": "123456789", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "9f8df3e2-6866-42af-91d4-5faa3204f0b8", + "brandName": "Smarter Bank -- dummy data holder -- do not use", + "logoUri": "https://smarterbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://smarterbank/idp/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.smarterbank", + "resourceBaseUri": "https://api.smarterbank", + "infoSecBaseUri": "https://idp.smarterbank", + "extensionBaseUri": "", + "websiteUri": "https://smarterbank/" + } + }, + { + "brandId": "81d3d5cb-cdb6-4253-a78b-b17155dde7fd", + "brandName": "MyBank -- dummy data holder -- do not use", + "logoUri": "https://mybank/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://mybank/idp/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.mybank", + "resourceBaseUri": "https://api.mybank", + "infoSecBaseUri": "https://idp.mybank", + "extensionBaseUri": "", + "websiteUri": "https://mybank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "924ca498-0f19-402d-ae07-2cb61088f8aa", + "legalEntityName": "Hall Bank", + "logoUri": "https://hallbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12345678901", + "acn": "123456789", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "cf217aba-e00d-48d5-9c3d-03af0b91cb80", + "brandName": "Hall Bank -- dummy data holder -- do not use", + "logoUri": "https://hallardbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-19T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://hallbank/idp/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.hallbank", + "resourceBaseUri": "https://api.hallbank", + "infoSecBaseUri": "https://idp.hallbank", + "extensionBaseUri": "", + "websiteUri": "https://hallbank/" + } + }, + { + "brandId": "920f296d-5f2f-49de-876c-15a4aa1b4a79", + "brandName": "Hallway -- dummy data holder -- do not use", + "logoUri": "https://hallwaybank/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-18T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://hallwaybank/idp/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.hallwaybank", + "resourceBaseUri": "https://api.hallwaybank", + "infoSecBaseUri": "https://idp.hallwaybank", + "extensionBaseUri": "", + "websiteUri": "https://hallwaybank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "04361651-f485-421a-8e3e-d01dd7ab2706", + "legalEntityName": "Job Bank", + "logoUri": "https://jobbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "13254365476", + "acn": "264284352", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ + { + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ + { + "brandId": "bc144967-d6f8-47a6-8590-07caf522141b", + "brandName": "Jobs Bank -- dummy data holder -- do not use", + "logoUri": "https://jobsbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://jobsbank/idp/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.jobsbank", + "resourceBaseUri": "https://api.jobsbank", + "infoSecBaseUri": "https://idp.jobsbank", + "extensionBaseUri": "", + "websiteUri": "https://jobsbank/" + } + }, + { + "brandId": "7b47ecf8-a991-4dd3-adef-b89564005e8e", + "brandName": "offer bank -- dummy data holder -- do not use", + "logoUri": "https://offerbank/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://offerbank/idp/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.offerbank", + "resourceBaseUri": "https://api.offerbank", + "infoSecBaseUri": "https://idp.offerbank", + "extensionBaseUri": "", + "websiteUri": "https://offerbank/" + } + }, + { + "brandId": "c3176245-4258-4383-b945-cd2f7c828d3c", + "brandName": "J bank -- dummy data holder -- do not use", + "logoUri": "https://jbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-18T11:58:00", + "authDetails": [ + { + "registerUTypeId": 1, + "jwksEndpoint": "https://jbank/idp/jwks" + } + ], + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.jbank", + "resourceBaseUri": "https://api.jbank", + "infoSecBaseUri": "https://idp.jbank", + "extensionBaseUri": "", + "websiteUri": "https://jbank/" + } + } + ] + } + ] + }, + { + "legalEntityId": "9d34ede4-2c76-4ecc-a31e-ea8392d31cc9", + "legalEntityName": "FintechX", + "logoUri": "https://fintechx/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "98765987654", + "acn": "987659876", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR001001", + "accreditationLevelId": 1, + "participations": [ + { + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ + { + "brandId": "20c0864b-ceef-4de0-8944-eb0962f825eb", + "brandName": "Finance X", + "logoUri": "https://fintechx/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ + { + "softwareProductId": "d3c44426-e003-4604-aa45-4137e45dfbc4", + "softwareProductName": "Loan Calculator X", + "softwareProductDescription": "Loan affordability application", + "logoUri": "https://fintechx/products/loancalculator/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://fintechx/products/loancalculator", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://fintechx/products/loancalculator", + "revocationUri": "https://fintechx/products/loancalculator/revocation", + "redirectUris": "https://fintechx/products/loancalculator/cb", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ + { + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + } + ] + }, + { + "softwareProductId": "9381dad2-6b68-4879-b496-c1319d7dfbc9", + "softwareProductName": "Track Xpense", + "softwareProductDescription": "Application to allow you to track your expenses", + "logoUri": "https://fintechx/products/trackxpense/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://fintechx/products/trackxpense", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://fintechx/products/trackxpense", + "revocationUri": "https://fintechx/products/trackxpense/revoke", + "redirectUris": "https://fintechx/products/trackxpense/cb", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ + { + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + } + ] + }, + { + "softwareProductId": "63bc22ac-6fd2-4e85-a979-c2fc7c4db9da", + "softwareProductName": "TestProductCert", + "softwareProductDescription": "Application to allow you to track your expenses", + "logoUri": "https://fintechx/products/trackxpense/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://fintechx/products/trackxpense", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://fintechx/products/trackxpense", + "revocationUri": "https://fintechx/products/trackxpense/revoke", + "redirectUris": "https://fintechx/products/trackxpense/cb", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ + { + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + } + ] + }, + { + "softwareProductId": "86ecb655-9eba-409c-9be3-59e7adf7080d", + "softwareProductName": "MockDataRecepient", + "softwareProductDescription": "Mock Data Recepient", + "logoUri": "https://fintechx/products/trackxpense/logo.png", + "sectorIdentifierUri": "https://fintechx/products/trackxpense/sectoridentifieruri", + "clientUri": "https://fintechx/products/trackxpense", + "tosUri": "https://fintechx/products/trackxpense/tos", + "policyUri": "https://fintechx/products/trackxpense/policy", + "recipientBaseUri": "https://fintechx/products/trackxpense", + "revocationUri": "https://fintechx/products/trackxpense/revoke", + "redirectUris": "https://fintechx/products/trackxpense/cb https://fintechx/products/trackxpense/cb2", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ + { + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + } + ] + } + ] + } + ] + } + ] + }, + { + "legalEntityId": "a1ca85da-7be8-4020-9c27-c9623eca582b", + "legalEntityName": "Xray Software Pty Ltd", + "logoUri": "https://xraysoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "112341234", + "acn": "12341243", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000006", + "accreditationLevelId": 1, + "participations": [ + { + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ + { + "brandId": "fe123396-4eba-4518-aade-b245ceea78af", + "brandName": "XRay Financial", + "logoUri": "https://xraysoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ + { + "softwareProductId": "6a25c22b-0810-4f41-8e41-f48d162c517d", + "softwareProductName": "Budget direct", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://xraysoftware/budgetdirect/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://xraysoftware/budgetdirect", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://api.xrayoftware/budgetdirect", + "revocationUri": "https://api.xraysoftware/budgetdirect/revoke", + "redirectUris": "https://api.xraysoftware/budgetdirect/callback", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ + { + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + } + ] + } + ] + } + ] + } + ] + }, + { + "legalEntityId": "8ff78c90-74c2-4c51-9c04-9d829476687a", + "legalEntityName": "WOW Software Company", + "logoUri": "https://wowsoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "88778877", + "acn": "99889988", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000007", + "accreditationLevelId": 1, + "participations": [ + { + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ + { + "brandId": "8fe9791a-e4a8-4104-b1cb-e0df41189520", + "brandName": "WOW", + "logoUri": "https://wowsoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-02-06T11:58:00", + "softwareProducts": [ + { + "softwareProductId": "9788e6d3-75a1-47eb-a891-dd752ced0f61", + "softwareProductName": "MyBudgetHelper", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://wowsoftware/mybudgetapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://wowsoftware/mybudgetapp", + "tosUri": "https://wowsoftware/mybudgetapp/terms", + "policyUri": "https://wowsoftware/mybudgetapp/policy", + "recipientBaseUri": "https://api.wowsoftware/mybudgetapp", + "revocationUri": "https://api.wowsoftware/mybudgetapp/revoke", + "redirectUris": "https://api.wowsoftware/mybudgetapp/callback https://api.mocksoftware/mybudgetapp/return", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ + { + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + } + ] + } + ] + } + ] + } + ] + }, + { + "legalEntityId": "4a29856c-2634-4fea-bf9b-74c99c337e2f", + "legalEntityName": "olm Software Company", + "logoUri": "https://olmsoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "88778877", + "acn": "99889988", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000008", + "accreditationLevelId": 0, + "participations": [ + { + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ + { + "brandId": "a7171ba3-fd05-456f-a859-be4e1cbcc17d", + "brandName": "OLM Software", + "logoUri": "https://olmsoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ + { + "softwareProductId": "05d7dfd7-1d8f-4abf-b987-cf56c9115e8d", + "softwareProductName": "Budgeter", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://olmsoftware/mybudgetapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://olmsoftware/mybudgetapp", + "tosUri": "https://olmsoftware/mybudgetapp/terms", + "policyUri": "https://olmsoftware/mybudgetapp/policy", + "recipientBaseUri": "https://api.olmsoftware/mybudgetapp", + "revocationUri": "https://api.olmsoftware/mybudgetapp/revoke", + "redirectUris": "https://api.olmsoftware/mybudgetapp/redirect", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ + { + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + } + ] + } + ] + } + ] + } + ] + }, + { + "legalEntityId": "f138d974-0d12-4150-ad0f-c77af745c60b", + "legalEntityName": "xlogical Software Company", + "logoUri": "https://xlogical/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": null, + "acn": null, + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR001009", + "accreditationLevelId": 1, + "participations": [ + { + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ + { + "brandId": "8a3441aa-1242-493a-b466-dcbfffe5a441", + "brandName": "xlogical", + "logoUri": "https://xlogical/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ + { + "softwareProductId": "25ee528f-35ac-4a66-a67c-6166602c9322", + "softwareProductName": "Loan Calculator ", + "softwareProductDescription": "Loan applications", + "logoUri": "https://xlogical/products/loancalculator/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://xlogical/products/loancalculator", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://xlogical/products/loancalculator", + "revocationUri": "https://xlogical/products/loancalculator/revocation", + "redirectUris": "https://xlogical/products/loancalculator/cb", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read cdr:registration", + "statusId": 1, + "certificates": [ + { + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + } + ] + } + ] + } + ] + } + ] + }, + { + "legalEntityId": "f72ab707-a619-4dc1-a90b-177d61bcf574", + "legalEntityName": "HotFinTech", + "logoUri": "https://hotfintech/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "01944123445", + "acn": "123412345", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR001002", + "accreditationLevelId": 1, + "participations": [ + { + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ + { + "brandId": "46b33515-b4a5-4b1c-b5b4-25654d675be6", + "brandName": "HotFinTech", + "logoUri": "https://hotfintech/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-05T11:58:00", + "softwareProducts": [ + { + "softwareProductId": "d3c44425-e003-4604-aa45-4137e45dfbc4", + "softwareProductName": "Pay advance", + "softwareProductDescription": "Buy first and pay later product", + "logoUri": "https://hotfintech/products/payadvance/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://hotfintech/products/payadvance ", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://hotfintech/products/payadvance", + "revocationUri": "https://hotfintech/products/payadvance/revocation", + "redirectUris": "https://hotfintech/products/payadvance/redirect", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ + { + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + } + ] + }, + { + "softwareProductId": "9926a894-cc29-4d63-b3b4-e404066ae6f2", + "softwareProductName": "Track sheet", + "softwareProductDescription": "Application to allow you to track your expenses", + "logoUri": "https://hotfintech/products/tracksheet/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://hotfintech/products/tracksheet/", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://hotfintech/products/tracksheet", + "revocationUri": "https://hotfintech/products/tracksheet/revoke", + "redirectUris": "https://hotfintech/products/tracksheet/cb", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ + { + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + } + ] + } + ] + } + ] + } + ] + }, + { + "legalEntityId": "c70456f3-843f-4407-a988-577c108a7816", + "legalEntityName": "ZeroFintech", + "logoUri": "https://zerofintech/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "98765987654", + "acn": "987659876", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR001004", + "accreditationLevelId": 1, + "participations": [ + { + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ + { + "brandId": "ebbcc2f2-817e-42b8-8a28-cd45902159e0", + "brandName": "ZeroFintech", + "logoUri": "https://zerofintech/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-05T11:58:00", + "softwareProducts": [ + { + "softwareProductId": "5d03d1a6-b83b-4176-a2f4-d0074a205695", + "softwareProductName": "Mortgage", + "softwareProductDescription": "calculate the mortgage value", + "logoUri": "https://zerofintech/products/mortgage/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://zerofintech/products/mortgage", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://zerofintech/products/mortgage", + "revocationUri": "https://zerofintech/products/mortgage/revocation", + "redirectUris": "https://zerofintech/products/mortgage/cb", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ + { + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + } + ] + }, + { + "softwareProductId": "dafa09db-4433-4203-907a-bdf797c8cd21", + "softwareProductName": "Reward program", + "softwareProductDescription": "Application to allow you to track your expenses", + "logoUri": "https://zerofintech//products/rewards/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://zerofintech/products/rewards", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://zerofintech/products/rewards", + "revocationUri": "https://hotfintech/products/rewards/revoke", + "redirectUris": "https://zerofintech/products/rewards/cb", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ + { + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + } + ] + } + ] + } + ] + } + ] + }, + { + "legalEntityId": "de815a93-85b3-4fe8-9513-33ad8f4359d0", + "legalEntityName": "yoyo Software Company", + "logoUri": "https://yoyosoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "11222333444", + "acn": "222333444", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000005", + "accreditationLevelId": 0, + "participations": [ + { + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ + { + "brandId": "f3f0c40b-9df8-491a-af1d-81cb9ab5f021", + "brandName": "YoYo", + "logoUri": "https://yoyosoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ + { + "softwareProductId": "6f7a1b8e-8799-48a8-9011-e3920391f713", + "softwareProductName": "MyBudgetHelper", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://yoyosoftware/mybudgetapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://yoyosoftware/mybudgetapp", + "tosUri": "https://yoyosoftware/mybudgetapp/terms", + "policyUri": "https://yoyosoftware/mybudgetapp/policy", + "recipientBaseUri": "https://api.yoyosoftware/mybudgetapp", + "revocationUri": "https://api.yoyosoftware/mybudgetapp/revoke", + "redirectUris": "https://api.yoyosoftware/mybudgetapp/callback https://api.yoyosoftware/mybudgetapp/return", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ + { + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + } + ] + } + ] + } + ] + } + ] + } + ] + } \ No newline at end of file diff --git a/Help/testing/HELP.md b/Help/testing/HELP.md new file mode 100644 index 0000000..edbbaa0 --- /dev/null +++ b/Help/testing/HELP.md @@ -0,0 +1,137 @@ +# Test Automation Execution Guide + +## Table of Contents +- [Introduction](#introduction) +- [Prerequisites](#prerequisites) +- [Getting Started](#getting-started) + - [Build or Pull a Mock Register Image](#build-or-pull-a-mock-register-image) + - [Build a Mock Register Image](#build-a-mock-register-image) + - [Pull and Tag the Latest Image from Docker Hub](#pull-and-tag-the-latest-image-from-docker-hub) +- [Test Execution](#test-execution) + - [Running Tests Using the Integration Tests Docker Container](#running-tests-using-the-integration-tests-docker-container) + - [Running Tests Using Microsoft Visual Studio](#running-tests-using-microsoft-visual-studio) + - [Setup Local Machine Environment](#setup-local-machine-environment) + - [Run Tests using Microsoft Visual Studio Test Explorer](#run-tests-using-microsoft-visual-studio-test-explorer) + - [Debugging Tests](#debugging-tests) + +# Introduction + +This guide provides the necessary information and instructions on setting up an environment to allow for running Mock Register integration tests using both Microsoft Visual Studio's Test Explorer and Docker. It also provides different options for setting up your environment and running tests to cater for different use cases. + +# Prerequisites + +[Docker Desktop](https://www.docker.com/products/docker-desktop/) is installed and running. + +[Microsoft Visual Studio](https://visualstudio.microsoft.com/) is installed. + + +# Getting Started + +Before being able to execute any Mock Register integration tests, the Mock Register docker image is required. + +## Build or Pull a Mock Register Image +The Mock Register image can be either built from the GitHub [Mock Register](https://github.com/ConsumerDataRight/mock-register) repository, or pulled directly from [Docker Hub](https://hub.docker.com/r/consumerdataright/mock-register). This guide describes both options and their respective use cases. + +### Build a Mock Register Image +Building your own Mock Register image may be useful if you want to make changes to any source code in the Mock Register solution. Follow the steps below to build a Mock Register image from scratch: + +1. Clone the Mock Register repository using the following command. +``` +git clone https://github.com/ConsumerDataRight/mock-register.git +``` +2. Run the following command to build the Mock Register docker image from the `mock-register\Source` folder: +``` +docker build -f Dockerfile -t mock-register . +``` +The Mock Register docker image should now be available for use in Docker. For further and more detailed documentation regarding the Mock Register, refer to the [Mock Register](https://github.com/ConsumerDataRight/mock-register) GitHub repository. + +### Pull and Tag the Latest Image from Docker Hub +Pulling the latest Mock Register image from Docker Hub is a quicker and easier alternative to building your own Mock Register image from scratch. It is recommended for most cases where customisation of the Mock Register code base is not required. + +This can be done by simply executing the following docker commands: +``` +docker pull consumerdataright/mock-register + +docker image tag consumerdataright/mock-register mock-register +``` +The Mock Register image should now be available for use in Docker. + +# Test Execution +Automated tests can be executed by either using a docker container or by running them directly from Microsoft Visual Studio's Test Explorer. This guide describes both options and their respective use case. + +## Running Tests Using the Integration Tests Docker Container +Running tests using a docker container is useful when debugging or stepping through the test's code is not required. + +The [Mock Data Register Integration Tests Compose File](../../Source/docker-compose.IntegrationTests.yml) can be executed using the docker compose command to run the tests within a docker container: + +``` +docker compose -f "docker-compose.IntegrationTests.yml" up -d --build +``` +This docker compose command will start the necessary docker containers and automatically run the Mock Register Integration Tests. The following screenshot shows an example of the Mock Register Integration Tests being run: + +[Mock Register Integration tests running](./images/Docker-Compose-Mock-Register-Running-Tests.png.png) + +Following the execution of the integration tests, a folder named '_temp' will be generated in the 'mock-register/Source' folder. This will contain test results in TRX format and any other artifacts created by the test automation execution. The TRX test results file can be opened and viewed in Microsoft Visual Studio as per example screenshot below: + +[Viewing results in Microsoft Visual Studio](./images/MS-Visual-Studio-View-Test-Results.png) + + +## Running Tests Using Microsoft Visual Studio +Running tests using Microsoft Visual Studio is required when wanting to debug or step through the test's source code. + +### Setup Local Machine Environment + +The following host names must be registered in the local machine's `hosts` file (located in C:\Windows\System32\drivers\etc). + +``` +127.0.0.1 mock-register +127.0.0.1 mssql +``` + +A Windows Environment variable for `ASPNETCORE_ENVIRONMENT` is required to be added and set to `Release`. + +The [Mock CDR CA Certificate](../../CertificateManagement/mtls/ca.pfx) is required to be installed in the local machine's Trusted Root Certification Authorities store. +Consult the [Certificate Management](https://github.com/ConsumerDataRight/mock-register/blob/main/CertificateManagement/README.md) documentation for more information about how certificates are used in CDR Mock Solutions. + +### Setup Docker Environment +Before being able to execute tests using Microsoft Visual Studio, the Mock Register and Microsoft SQL Server docker containers need to be running. + +To run the Mock Register in Docker, execute the following docker compose command from the `mock-register\Source` folder: + +``` +docker compose -f docker-compose.IntegrationTests.yml up -d --build mssql mock-register +``` + +The following screenshot shows an example of the Mock Register and Microsoft SQL Server docker containers running: + +[Mock Register running in Docker Environment](./images/Docker-Compose-Mock-Register-With-Sql.png) + +Tests can now be run using Microsoft Visual Studio. + +### Run Tests using Microsoft Visual Studio Test Explorer + +The following steps detail the process of running tests using Microsoft Visual Studio's Test Explorer: + +1. Open the [Register.sln](../../Source/Register.sln) solution file in Microsoft Visual Studio. +2. Build the solution. +3. Open the Test Explorer. If Test Explorer is not visible, choose 'Test' on the Visual Studio menu and then choose 'Test Explorer'. + + [Microsoft Visual Studio Test Explorer](./images/MS-Visual-Studio-Test-Explorer.png) + +4. Right click the test, or group of tests to execute and select 'Run' as per screenshot below: + + [Run tests in Microsoft Visual Studio](./images/MS-Visual-Studio-Test-Explorer-Run.png) + + The screenshot below is an example of successfully completed Mock Register integration test: + + [Microsoft Visual Studio Test Explorer Completed Tests](./images/MS-Visual-Studio-Test-Explorer-Execution-Completed.png) + +### Debugging Tests + +To debug tests using Microsoft Visual Studio: +1. Set the required breakpoint(s) in the code you want to debug. +2. Right click the test, or group of tests you'd like to debug and select 'Debug' to begin debugging tests. + + [Debug test in Microsoft Visual Studio](./images/MS-Visual-Studio-Test-Explorer-Debug.png) + +For more information on using Microsoft Test Explorer, search for 'Test Explorer' at [Microsoft Learn](https://learn.microsoft.com/). \ No newline at end of file diff --git a/Help/testing/images/Docker-Compose-Mock-Register-Running-Tests.png b/Help/testing/images/Docker-Compose-Mock-Register-Running-Tests.png new file mode 100644 index 0000000000000000000000000000000000000000..cf1004d094fc0ef5b2a50c233e3192bb47192733 GIT binary patch literal 66224 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 Qw11_pqN$vB`qvx(1G0XqZU6uP literal 0 HcmV?d00001 diff --git a/Help/testing/images/Docker-Compose-Mock-Register-With-Sql.png b/Help/testing/images/Docker-Compose-Mock-Register-With-Sql.png new file mode 100644 index 0000000000000000000000000000000000000000..6e45354f8313a76d8be091beefa7015f4c739b29 GIT binary patch literal 51357 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 Q(eIFxx-Xd{Zt(Jd0IXZsAOHXW literal 0 HcmV?d00001 diff --git a/Help/testing/images/MS-Visual-Studio-Test-Explorer-Debug.png b/Help/testing/images/MS-Visual-Studio-Test-Explorer-Debug.png new file mode 100644 index 0000000000000000000000000000000000000000..c3ecf536818c1e0b4f364fd834123f0bfe845141 GIT binary patch literal 68286 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 literal 0 HcmV?d00001 diff --git a/Help/testing/images/MS-Visual-Studio-Test-Explorer-Execution-Completed.png b/Help/testing/images/MS-Visual-Studio-Test-Explorer-Execution-Completed.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3aa125d84bd4155d7f10f0eefdc4f558bce66c GIT binary patch literal 477070 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%0De zPWVvI`C^5eCdTHB@q9IbG%DwivpKSJNjssT4#;-t&bfB7#$k=Pr%>;y&nmjxCS==j zZDdxU5XIe!o~B`-v8hIl8*04KVKnj^KGdRha(rYwYN)xq)R(}-OCRA2d(vdU&m?Wi z$aHXg>Ghuz#ysa}xw#sCR=Uye?y<2Lu$>GfoL1gc9^gcoXP28_$xcN_sv_4C@Vg_s z6OLQ!^l(XT{T9C8?WuVh?3O5x;mue1bCyCtNsXK9awfIiM}*5QF{~a@0m!2hiDH*-)M*AixaGISS^*-!3Yx0R?*a| z%=dnJz=hPSic|AB#=+rnk_=qRBu$hQ?NRB&8R7; zP^yG$IeW{r;Jzi+Ec!mdqM?a-x9U9!;YZNV@U-wWZQ$rGR zr86+E{G9{sqC#il3rc4LCg=ype4Ed?&CT1#0UmmKdHT` zsV5oB_ZQFijH>ME2${qD{6)Y0$O*H-b)e#NML!1RvbC^OzOct=d>^gG?9!CKS;VWu z4 zxI<#bMoU79mdZNnN-3o_rpJnM)XoGji!EnG&l6j>4HDEYKYXB2)Zp`l7qeAH5rtWX zg2x~2;za7Ac~AoV{yPTLAFr1D;=D% ztku7HJBqbvQoD6tcoczl^Hi{qM3BvWcs4nvoV2}v)=VuXuZo(TE{NHwwFoiHp2>u4D5sTe=SEcH%b6>>W77yeeP zW3_u`G_{%FC!XFjR0 zGr6Joth)U#;e4$5)CR8@;*R%x1TF{g+V>uu#wAe&caQLQ;)9#=8*b(LDZl9k1nbnhXGu-*-M{UxDqL^k5MZI+ly3PD04TD}jb)`+?ltLcB4^H>=U3wn zxCiITn!NvgvS2rjKgq*+u>7bE~C}3)!gb<$*JOQMAD9*>G_| z5)-dZ1=&IXewuxoGTfuKWFBpe&7ut))mW*-_E<3kc1)B00)xnQX zJ##Cglt<%`GH`ryd3nDR)g%^#!_#}j%mdkF*=S9b#Q$M?Z@g}^FH7u%#^QzH9BvGw zA3*l1UY>(X_04OPMc1*PEed|rD1M$cHX)O{?7k`fGEs!_rr}|hh@tE6OSXPgIGNE# z%f|{3s@;=2V*(s|Sl_4m{Tsi+JDOQWjj2v$6Mf;mbh;?zZgv5+M~yaOFL@~QuFDM< zW~F&2qdJd>mpsnxe{__{YlUjq{w$;Rg_o4O4zlV`QIVKSwYms-r_EL7{QBUw=ed^j zcAqGQ_>yxR^44T0)m{AkzdU{(rh9FGf>5eyBp)%2vXtW8?F}xY`gom-gA!xYbklTu zepFqyHq53Wxv#Ge@)6*wZx4h?nXYl!Ul{IGM%uX02-BYfT=2RY8Tn~y*M+IN)#Tno zd{z$wZY4<2+S1samXU2poizIiI##&(#&kKBULgufqmSB17 z@y@w5thI9}2j>J09RzCkn7s5t84GrW;L!E#yCS0dVm?fBhpso9JeaRKJ@3ZB&mtXS zHjN<(>a#!GorRHpa0~4x!Q(mB{RMqM8@qIl!OhN!ncPlzL8SdRw|oHG4u=7rZ_o@Qb!O?KNI0sx=Z9l>2~W6;A) zQ;n6g0n$|03xL;ktPkPvC#=@Fn(&3(uDzkNmO|fVupyqQZVNE^NHWs5v!I1iU|3xI z^<`oL2gpEpFCJlf9leE@r?h+6l;c~jS@=!?X@7d@Vm!>w#V9ra$1;1_I=bw}_EHz) zL5`femN~cUdEtIW3R_{De%p3Z-G}hLzk9-Q1I#Q3IJ+Ags`f-lT1^jKN#B7kq~&a1 z(b4%rCqpbu)jFd4<~d%|y=H^NsVUzfs~;CJ7y^Z99+JB=pxdXv%sr!&(^&KjBufV_ z5AZVBVPf8mVy%CbP-Al;LQ<3lZDlJ?i&1fDi?(H@DW3I0S+lkMV7tj7k{890!$COa z4yDm}Jo6e6aGgD_$>5}WVZV}_UZSVQ`_&-az>Ef3R;fK9g>V+ME7a={Tf^C#a2K3p z@jm_KYM#kPZaX4FA}*ei)k`ih*GO_Tw2Mj8>p z3YhOWr`n=ZJoDs3SGdU#5d_~ILz5(KQ7>*VbJHAoH!Avl&~Lv7PrkwJ*Gfx+jj`^b zJ*aiee3)MjgvpRYtNc^T*uj7ho3`20Hf^Yi>53KXNfEy)Zm7TaySxX-21Xhkke~TY zC9U#&XnWkDFUtO{g?|B&DsuTi{jLo!%mU21I_GE0T<+X^JQeTzA!rH{Cm{G=s@Ghy zzwZ(A57PbU9R4beKJj{51@!an6L=zDCmr2l=n14y_33p$ImC z$r&>&{t4-Dan=H7j7xcPaXG9N*(;hc1}XO`>Ri`SWy(vOEr9V0!y;Q7S-9Q=o-~)&-k2j&N&>H@f@N@ZcxZ=g+g; zh|388x;(-&xY%>^a;0pyQ>oLF{eVcDZ=mwZ@L?HK!&#D&8?nTT4^HeFXbCz#*DCT3BsdjVTqcmWPiLp z1ivo*v1^{l(TcM+qMylwrh8BI=N~IAxhL;SgLingNM+q-@i>VmqT9eFO?9mdfjez= zuR_5)*qolwxfD?v1zr{7{$;8-46XBmH`C#hM+=MXBO`icMiC0`uxpH!>>r z4L0Gl8p8CF4{!J8cCVu9@C$X52Y#^pMzR-$!(Ky_1Pk}tW!}>VOb-P1V}BpElv7rm zG3d7_LBSO8m`9+yTYGx8spf)t1k950>ki~O)!uG?Th(S};^ppApN@w- zyt3ajm97-cfC@#Hi-?+oT0g&hRC6(&-F28tein(a?%ht>8mxb=DBsvxWhNKL(NaHS zNY`5VG*`}-GMeV}N9WN2?SxLXy$-c#AeSnkSolg3bPfeH7q~f@EABw&l(%^*F{?bw z^x3U<-Jed8`yj96cd|sH$ytaPda2&9>?9MUvJ$ib0v)TWT%sj0)qECWk#Pz}~`gfc(Eeg1RWIjtIQ)~_xkQA`TnWGie zm&0#hNCrfCOgO$-!JE^&NJJMT;1%%>uP!IEt#fcYh1L5!66b(`H{Bd`=l)MA%@5eq zc(hw{(h`vfP7`u_3aXR(Y>vfnu0_?2#;<0PC@*?9)>{q40F8pNk_^)83NzvI-f~*v zJdOyktL8=rjIjHaNcd!fN0v0!&U=}lN5!0wFu1eOkTcE2zIO(t?-#YwgwF*bhv$m4 z&A9cFFIv-QB#M!Dyc9ORY?k!HtLoo!gkEQ+Sh|BQZyx`^4IOYAwUmq6+)8B*WK?J- z;QjZB`SlTGazN`w*JqxiYkPwz87Y+54l5#Fib<3XCZDRyfR@PNw#+m;_V{#0_Nzt; z|47H2ePJrJ5%K)sU-mAz`&p~!GRz<~nhQ~}k+dpMfGyrz7`gHHoNsJ72-sp%L6pBg zukAPTa%TU@rbOD<$`!(5{c=&fV*N5IMectR0v!x@eGX*=sL%+aA;#<8BI4CG5=V}l zXW&Eq0xe6>3&ttOgzt=#s#aSBsxev8Nz#TgVV{pYFSleZU^C)nc<#AX8S3RqZ|vX% z3y9GXz;%*#f?;A!s0MaOSQFJ4h5KNo$b||Kto(S{@7q(}Yto4+s)jR`SFFsc-;I#D zX$r_Bq`a`I3YT9}B+Nk&hh;Pg2HLZ9X%FICN9j->_DZWV7TGW6LoVcKleDd(=tqar zy4`7$UkawBA)nofca@$v=cCeDC*GA}Yc;gv;9h4lIQER~!w=?Y(_0$u6UsH7YP&$} zhw}gzE|<5Q2D9Ov#J@?&gMQ{uq>B2{z+Sf*>qBi&cO<-vRRqh#$~&%gCZY0aR63j{ zpYA@vK9D1Eiu{atWZ;9a81VD5;j)$$SxM@|PJQ{`jCnlWH{i-lBm)$>EKju=!WM!PlpsdJD8SWB;ofWt4-AFJthjq ztzfx?3lY|t7>`o9GNQ=mi$3tSgMRyehFKBvf{`dZ`CrpKk& zX3u_)`#|nkV%7 z=7nh1T@ChM>JopExPQ7TSt!ZF`ls?wwt_&f6JGMvU0MtTM{8j3CZO@-{_-qxD*RdB;eEPqNdJk{87B|b2C8Wis zQKwLY#U)Qp8}};rl9_lB+^b;!U6)Tz5ADwbUiSSm&|G$-V;jv4WaBiG7;KZb>|+<3 zcO{{P$E_iAIft%$XHFXS`V{eX!pw{Fu!zK^t}dxkE--h%|6A+9wywuLA-H8@3YG!B z*H78}kW&vWL}L_yXrhZM{@kAXnOK|Pj`aI8OjP&K_e|mc9GRL4iztTwj?Zgni85(F z-BN;FRs7m~vj2aMO+Q9We*ah3`&W_5HJ!O{!NuP=6Y&SrbdesYW!s(lzn6NT#rl!!dogRt~^;&ku0?F7Bm2cjoE9CC~@-e9UXxhdYxmsrvs=hzG@F|6QG%{IRO@ z%V*7$&Yx&^JI;F*&)=>7*pcPZXI+3UPyw$w1a*=A8sWR2o*&?V&%5%CEp1(^ zy&RG2Q*+1KLW=kx&AAYI9Upfty;@(d^F>EL;$KSfO4=KoJ&gnNvJRN6@niS)TlkP| zOZSG)i``1s5zPx(xm7zabi4U}65#1H`}V&f86`8Bp~DRkM)!I{P89p?BM0 z42PvQHQot;Q?KQCw+OD+B#I}!TO{SUdNo2bLsp!ncoNd7U;4X%Nf#qhsn)udU4t)j zA*STM2I0^zO#xX_R2~(Spa1f75@BOQ5~V`P{$7v$`;J1+^`s#_3?DWeNuiUNWzsWC z3V5{LAcVcgR;BtPNDoug-SiR#CLh3x;3J6Iis3q3G@vFRDGyedOGh3mi)OIl!N0sW zM0Om~vv`fs&o`XT*F94@&13)~Y)f7~bok^-FOMfA`WJC z9vuX*^&aO}=-=rOhFZsB&xCGV{m{G~*rhMYfz}AhHhXQAUERg6)d#&7y{l5SYxEcKr4I+B92VcQe65-ql3GB`{E}=71)a+gh&5c0 z*XjudjN5l~dWlZ&o*0XNzCN3udBv2Z3p1^E*OI9>=&0OgErI&AL|Ld#hgAY`)ns>P z9eLevvl|9>aUIwAZO&sLSJxka&gbLpK(MJQ@8!|$YBsl+{(nXfU;W>PwTK3ExY^PF zD(WNk@E(mJ?JJ!eZd|$2h9KO9TD>kpT{^mYTd@meM-}06GR1R*4h8_vE0al-(gXc_1P7UMLHRStOAjO(&SlN18!RlyqC`+Nj2xz z<}S?%xTH&fn-ntY$r3VylFutwLW`1rnORjg-#&RdCU=YqUY5&d05zuTyoNsfeAxMI z@Y<{-o#N|rQ6eW}DKXDEQ}qRpG!mfkN)FiqC{DL8XgzQj4djN+LSaEac8fzt*qg>A zSfcm!AWFi*_Itn1H5Zl!{BlC0(%VsN_U7i_hNV=*+e1v;4-k9{?)eH(HneG#D)j6U z#QeSc@FWv>>A87g-Y4M z^PXKKUR=}E_1{OTr}5{@0J%J2)|>gA?a-XD}gPEVk>9rg^@AQ{iAvgw)`j)IySJ85{U(nksMEHE(V}7ko@(nUI(weEpmw!pJLu&9Y$ZTZ%=&W07pZG<~;MV9|0THmtkl z_x-8ZIu62f_?Qke+hu{Hg1`o$)`(6r$fM@SFWT}lj8!zVLX_xmu1;`bw(*KwbU?BB zY6<5zbd10v(r3&f0sCk*X?ZYB~r)JmzL z=jPz^xtASh@PWr@M?NmVjZIu*!2RhUx3@n_V79}4Q3)`bhilBbQ%u^e4*@4;Cu_%F z3vB5wriN!D|BK1WZh4LS(w^o_Rb;b-u;{R8$QiPv&#V1qRcm)waMQwUCgC?8{{ zO_j1;#h?~_UupGTB8#j+>Eaw$s^xhA2#J8i);1DFqXrvTw-XV3$v~Q<2)lkjmUC$@ zNt{x(9$HTeO))=2+U;s&llx;*^5nAJyycQU`sv_&C|fy9btZATbCERdLWPCJ_R6IO zn2GNRNG)YIYD%4|#gnrF1PZ`tgleXGmu|o-hWCWMz}+YUo<^6WZ>bu+xzLgvd;~x8 z%i9%EeSbur_eJ8y8Ve585Me(v&W}DQ_n7z=wswjIoF>#tiy@*N>q4$fg~cHrZo5b4 zCESwa2lWh6>dfPh@>~yS*6b3!(PI*RT+H}HY3*6h30~HqC26L+MK>>+NhD3&BxQ~X zKfw%n*%;Sd9$Kpp8Tb9R3qzM2EVI1X?_ag2+G$5yM;56YAIEx~Cjapt?eCTrp(9

XvLZguP=0mcQq$StxU7W87Hfp}XL0R5eMZ43Da<|QlszHocCJh1LH zB~IIFw|b+W=jQ0!W`12~^OcD`Wv1QUl{US5g^s!#lXm`W{yp)zr0TeIol}4Bh4Rc> z=*Qi&JK@Uh?nIB&S@Wp>w2eO)p_J{}Q%NlbR&}CHo(DS%Ba`zQ>~2Pnqo>XshH|lM zvmQk8U2~=4kiOz8*UhBLL#lw;(AG)K{i9(yky0b-gzJDwVR~?Jq#o0|Xn7{$OI|;l zarYix9!sYFO4+?Z&rpT7v-mnr-zgpH?u}D`A3u+PJK^H{D29JuHeO6S85)%Nn`P>B zm||Li*f+LRwuIDG5=Ck30i$c47D)~-m&PwURa1pSp07mpSj?}zv-1j!ekW6q>o}+;MiadEuRSA;tUTgw ztFZ}szCGp+BR)cHhLZGv7$Xoyq{!#8lc@<$sp2w-keNf=Yvv0$cZRJ2lWRf_rA&gu zg!)rznoC9465%R}ir3(RNJBXi%dOyyFp%Bhob|_|jPKiIuL#n!s%(R|wW?}%jKn|3 z-v!i=Tk7_lLtZ^~Hn{%uH+WLUdG_y3AsA!SY`!Nufso`*L&ZSIU9X*15;Qo;kV3V5 z8<}rItt+eJR3%6AjSf~cs|$>?|8U^P5JaYniw*KgO=(40GvPaC| z0$36~`TdW;S5Q5W_xwqRYhqOCM6 zPeQ!>qKyxqI%>7>geat5_YEG1Nz|LVPxh#>Yem@qxP5KbDp$H9D@xA&vTih-01c%h z5kR9uR~xbwfMQBr0e|L6?M#K3`MH|FgQwbg?J3XM3%peaG)uLu`m3cXtdmjKX!qp$ zRRICx{54rI61r7>zQ4kuYR%{_Q07+mAnlw}Z$8hqU>@U~s=t!=A9uDW@&$XH?I|OW zSX^5i^kp|rKcfS_0E5fD1<=s`Owz@YA5P?hvtn5E9=b-Bz#2eF_~4aaydi9cW=^;!B9<|230Og&_)Tzd84^mFhRa+zpgmT{3#R z^uxg5<;B@bohf|quhZtq%!$~F?w{pPe%1>6>#YVHZIy4E4!RI;zmr)MDm9Oo`+fQjzA zR4ZTc`D4Acwwk~5o%_*8cv05>)AW4iE9g}XUICi|wxb}2Il+cWldEk$(3VsW+_OxF)>%Bsfxsg4+PB5@m}x$Oo) zF+IU2sgfOrc74{3mUW3{F9xXc`9Sm2Rv_Zk3SJqGLj1!3`xyC# z59+8|&Xo4gv-m}2&nsV{a^J8iuHaVf_D;q?yiSDbHm8o`eLYTjZz7~17t58%ny08G z$tZF9W&kYf644~extdyM_QSiOaD}LuT!dG?(tT6hr3T-+=S4wh=cenizb^OwO^q_TvlrWYD!HB9ZAI`2f+l{nVPmR`Eu!MxJ$@z?*c{*PQxMhDR)d@O)BfTJ7!hg{*U6`}>em+A zlf%*1Pjz$X>YHI=N_3`mS5^dPHB~#>vGYFdd~;rylR0y7gqiSS5MV~=iJZ7e(3#SB zGIcF`-Ebf7-v6bX?dj;t-0H-#GdI)QUU13l=Lvrq=;w*fjs# z3qKYFEN@9ly7pOoL{cUprBESrs`}X>*m1@N}D2O!e`WMN~3T@f5Mplvv z$*ic9`Op|b;WSasvMc|fg4o-k`P2~qEhbxApOs=@)O7{ zxWC);ARW6?VIVH`G~8JBOOg=y7{Kx}57GPk863cKPjjnUSr*eq>trj z(WJP>suk`1_Wp}w9ILE{%J;4gv8SkA-_$C8JV+|cKFH8g%mskk#A$s?0GCh`l%Kua@sx)af;{ z8jQkqxFh7G#R=pIB@)dGDbN@9@8Jm(mK>i=WqIb&7 zhA^9K_=h#3XGG5~2`}~aHHNgFX+~W!AYWg0jAA`k!Gpc_`Vn0kLE?EF4(OCw;5$jo zcZ&IpuYjA$mwf<7NSoJ&QLuG>a13Jukk|fLn>zCje0}n`J?wzw!Hu!iRIP2ZZZocX z!`G0=>H=l;-{FQ-#I%hrDBVvz9beUre!c!xeUFPB5#@3IIk}(uuC-k(MZsEH-X>+} zgh#>iL1hC5`ta|h29>6N1sS3Ry)5B=o8maIFLWa}Q zJf-$}Oxo#bm|~k4tr!HWhN^JuLON319SqKy%(fvgwI^*1X$=RN0Zd>ZVy1X%nk`4b zSiH3?IGVZ{hxsk5>{aIN$!_MUMv_Ym9)o1QljDb`x(VlWdj8+wIeUihEC*cv*nNgA z8s5l7tDq7R@Li{nlTs%AS!cKe_g?|WZIqPX^$_9o-!HKs4SJm^jqk_Np_gJBh9${U z{gGh#v(P=YO_wQDqU6uRAf(jTQLis-@^pe>bn5gG=o!x8$)k=gJF}E>&H) zjVDV#vl(V{zUHSly$Ty36qJnJ>Xq$yMqZL{wxl5oL@rf@)l7|h z8`eb8bGSQ9(N46pa?5}%n$aRZ53$&!yMJF*_pciw5kv=GPu*}yfUdm^eUAPHRL(_` zYF>Ow$vTF$=-5612%=-r8#c*;OcJjf3@#>Fi;JyfthZ_RN0c@F>3p6OGrFcxW# z=9{=iFytu&^6mz=j>UTr=6fDfc5Y^h#A~jU)a;Dh{J3+Mvu|A4eGdd!!b1D*ZVs$` zHu!2nf?PSSNBs^q1C_^L%GPJ@v3vj(%e~C_p()bgM@UaesKc!r2OJ?V>ojrAdzt*Iq`1h{_XsL}H_@1Te%>7ram5w8wLm)HhQ-uOcZl`; zSV9LkNG%?5Y%TeU=G*8psPia z-F-RZw=?yGWbDJn>{AHcs?gW|y@cbB0gLd96CTZqmi5*j^zUEseh|VFEFQ|1^SuO4H zw_t&vo4qVa+b+|2N&2}P-NqyfcaLEo%m;G`xp3kRW#dXL-P;G}o5BW_5t_!UR~;p= zKh@OhzF*_&tc}MGjE6{)3cW$Rfp4FHy(=hd68mPXDNb8DLHzFDCekkT01e@!vUSwM zD`Gv)BdIP2q5vt6_0tNqG-0=a^46zw{g{{$6uhsgE0T#|$MH5XQxi0i9b*a+fe)CD z4*6usK-}$$-(F3jL>>bU(ipRz4u2JIQ-V83!{Ld%;M_G zMKW+QzU*wUt{<%2PRW}@c@Zg@tv2*N;XD*d7xcL=b?UbQK2-DI7|~YkNqdJ_pRi|Y zM2miI|6F#$r?^e(S~rqa^>)4@-iv+`J7M<)UPbl$*3_0-2xSMR;dgDV+O&4?a1_!+ zR*64-!fWLo&fRfUC{0kG&aLZ{8ckiCpZyg(x&T}f%o_5Zt7>I|{N%>e?p(^HbWk4C zlyEb+Nl*^T!R?sSn^GuKli|p09@}r$+IQk$ndnX?flHNQw@iFgfkNG(bXXk4edVHY zls0E`>}f~q{)zitd-BeNg_4@#eId8FckRrg?KeK7Aj29}Q`_ggFw_D-s-5@O%I5gh z6zv?8G+7qzIpp;S{-S`p-nRk6G}^S|$hsrpMFes}_>#dQW>sSvvnS_z?p_&UoTQ4{Wl9VFT(eJOcndUy0cRQa0c&yq+m2SH;%EHBgU zRR$l=x7T!~*1Z#>M0$#jXQ{L*gC2gf@s#A&ft7${{MrF5t}vY79U2er%7NwP*h(r}$l6sa z&T3ca)gct)4KH$r>M>PEo7N}MuVXA~%(kj5Sn&2kJLhA4BOOBVv=|!bID+3sIU2e_wOhi&+MI^=V-izrrPZo_&mjjhnrhWBS|B zz4Zk15%SSWj!+n6w$QApt=B(}(5b*WPAm_%I1tZ~N^xnk6t>m6-P=-io{xYb6;n9f zQ3`_i+Etki*jr?zAB#lWnGGs)N+hTJ?(e>EN^e9^>dHX&cF}%y{$(Pma9$|m`HtA_c4=jr%pmWr=TiRco7S^B)%b}^47gXt&Y{vuOQ`pB+ zWIys)+cER)alAE?|BGzovYW<_h*qY4Z{(dnN_pXYTb{k!_~Lj~`D#LJ%8%*rY0Vcb zeuu*c=HzkiUSmUl-#Xr}#%HLiZwbP!2ygcM?AZezW$NXzz(uPJz9hzSk^|7)ttQDT zwj)!~Wdk@SVee~N{rRkqZ+i-N(z$g!*MD?b`AX$z@3M!N7J7Sm=ZGwuoMx*?CXw6U z%Y^Pbq$mb8f6a2XYT$7^AMl{zN-SyZy6thn|MpoiS>D8ds zU&Eo*^zMMojJeE%FTk4`)9BfoYl!5B)`i7J@LSpn7tH0Hs2B{a(dqwWhv*9^;I8B; z6Sq0PNruwV79@o*qI&Jb`Qgq9WJk{9rSv6N%2U8_%s@iEn(sN-l*^=<*7&Jm=J9OD zm@MbPg{1@bRB*delvTi3qW9U)k4-ui<7Q5hE_7(C=*>k=KkivKX^p;uIG8IwBl^VY z(_Qfq5w3E`PEGh)$TA8O6Jd>re+9TP+lhcC9uVp;$&(Z8#+_0|#AiDtG$fkXvj7Ze z+Y@34FXBsMP21mTk=e{abSkwdcFm>9WLU2BwO>^>64oh$O_ z!40?Po@J5v{g&7)%6&8Wy~Vd3{>0%hst>g$se-N_Y81KMF8cXvOlAIR<+m8-PvlId zzOB!w2NtHMxWXt4XUcW=0hNa{dWHDPqxl^~5~L0%16`*>>Eg{|Xv7opaX@Q(P;Y{j z?Slsmkm=a_iF$+{#wpN14Mtk(__X1TbQoqi*R;WQ5z~I*WnsAK<|QE{>{=O9LPD2c z>`;D(=|=3Bv%A6s1C}%Nc|3|66@!s-(ceICmrS0l^9jnbjBA-JT1XO+t;V(7&0rll zrf*i@H#DllJ{BB6rLX}Kb=%&s=lphgQ_!>CnNVo52t3PcmYzc!l^^YQvIK+9jnP^p z%q~_DK|g zabZTLRmjyzNP!A+Wi#Wt z#7e7TdC_%hIzkVV*-_;ugDgO;cUK7$1VMB*Yd4~E_PQ!I!pL3|)aq3XLffuw;#a`z zs*|wE)O2x=_aog4OC6zF8y>F;JX0$s>E~=&CjO;WEM9AEUO0r_t1H&(ntk!tM_D@; z1-C87ck4Z7u=D-c?EF@Vq01DYLb1#cF?mUM^+}gRrGYHRPldbYw2dmH9;$_+!ueNV4 zJ=$VGCCoh>k6dU<`Ko*pC5*&B-+o`ChBrj@qhGDfR%YX^F!yykY(L_6t@YT!a5I`+_Kf~g)#WtZ$XuTxby8=$RJCk9)e#>vYbX=(qc@u zMTk_lY&!>a+kr8DM=6dCBEJ*35XR$uVTm;K~eS zK_t9$FHSugxta|3(EqNS>Uo3Mc2{dJiO`B|@H-qZ5PdBmET7R3$Uad{07`n}?q0mV zJbFw)-L2mCS_kLfFO z^Kthvy@oW_h)lE|qK{q?_={LG_Aur1dvBU(ePq;ojWbm2BW7;#%>|U`)#k`wTob66 z&Rb~ZCdKuhtMBbVb6X2cYAJ;Z$~l>XyD44%?R0Jj+E)M~ip(K4KWVR0&yVS6=JNa^ z+U?>ovVOXniu~86#wlXZL&Cs&xPWIBPt{eG!bD944qINJ{qxBbTt1*{-vVcad)s_& zt=(QGiBa}n3oC#?!~pA^5Uz&3zagD#7a11)kWQ!4p4|AM?n{3v9+M&*)JdJllQj@U))@3XX#WJ{D zbGG|m|1byqBD`8NR~{QiH*K?D+TG^M-CVqya~-9%cq(J@-@1`i7}@fxmG10j54!WY z+(i0lxG4Ke8M4JnK3iFS`VVcDw!h*hbz=@P|9fmp^|_=%hel?8^V)+$pQel{d4VQ0 ziu_RGRv1oiytOBBu%m-EZ1S7Z4;S`(0F5CKVzr*;B)tC1UBkvn$BX8jQ0bXQHO(vfbp(x#zQd>kST5{9&c^^}U|QXL*I% z4GVsmF}L*U+cmT<=g#I4?f%h#dm(@mY&XJ@492;tU3hVVTubLFb)q0vBNcGU^3sED zp?p7|D~)EKa}o|{AN)&>ZEFtoD~eEaDy{(viiNbEJv$Auofca!xdtkWPP86}+^&V) zwOsKKUg2k>#rv1k)?c6zUBs{Ns~_g-$KQO?mQj9Ol4N-HaYVf_1bY0@Lz>^7=Ry&q zOB7-r#p!4ed1q-bW~A|@P>wYJ4Q$~XY>)D%0@<=L&M?IINo=wR`#=FFqJfH(-g~2H z*93br6byp^4*sE!rG9L(&eC!@T}II@YkqLm3WqeWouxXUq$=M0`b9-(Lbq;Ox7o#N zl5OQ+Avn&J`Mz}S@AbSu2D3&yrkm^zoj_ZWNwvDF?kaSgX(#woJ8I%>1S)!ur7+lm(7v}q@hF6}> zJ<%^nIu>v%O(jUr2hrPm2XG~TrOCw9YT}16^-8|DV&CXr3>C{9g z2UJc+Z#LFpD=LtG&JJlgy&l9~7096uuD3ibmT zKd*IdYP9~!w%|}*!hXU=%OufwWERCk4q45$qoQX^!pEGUo3(G@%%Nw)B|p9 zn-08}?E-JttxnIs>>qdxK5Hdq*1mY@ev)DKSknqMvZN~9j%&=NbvBjE>H|pU z%Z?~P9v2uFD(52z?L=yBH<6|e1C9wq_Z6zHJm~o5&ar_{j_{z?D(R>9s|B;scAql# z1&{XZ8RpW{E-D>dc5(lDy-(h(D}GSSX5{O}te6$p6wLXt3|&a&&VgHq={Mwx6i>eK zV@YG7^2|5A7_g3h?z?%H`qmL{r>(0u=b0luV66UNX+yBk#YBgCdS?cNt5PtXC7J;v z)?%=k5r?$l2U0x`I-L%)1?lY<)!}LhuU5k4Kh^NK{)-QUmyIZa{pD-*PP(%mKJfZ; z4N^L4%u`AlP3E=e48p&Uva;4mxrn^j!uNsW43lIx`j_iCzO4QbRK%{Pn@IQNCvL`< zIlXDh@vd6jBJIiARbG>W>QYbK_k*KkGdSH@dm1TlW13>aX&0T4#>#vN+lQ5`uNMuM z4ZIRT&!Wir%f6Q~C~EJ_u}h;nyQ&!fbh_g|a9;XISA1~k8pdV3uwFd-8h13w&|9S;*Z3wmt`V5hERTD+(aXpmMsj zS@qrUwCEidd#jcKH$galqVLVqdU~MU?ITw}(CN%^*g^-j@){XA`Pw1F)-Kz|JB}DM zzt_p49gR8rL0E4&bJ`aciMS6(`>fbhWYh&_tR47P-S2jZ)nsYh@;mqCl_@%*YA)>Wv^r9ul@T<`r<>lI z_PiQr=?O$0_qnxW);}IBcgRTUk-6RmLMSC(u)16S@ zo(t?ZCQK8WOc7R&TRj`*#OX?8t3tZGES^D~+;e=HQXhm=l6cwn2PxTTq2X6c+c zN?xKVmQwDHKfVYMU~L&a61fP}W}_I(;L`B^%*@*NH2YDxv44m-l@{Kc?btsk3iNnF zYxgwhK4LTC`5z}NsK{mX&3)?0RB!MhuD<}M&)E``C4ro5+tl{@S2RJ)v-6z>BZG!L zzxb8oj4$wFZEWP;w^QKZnS`B7-I7Sup3cD04tb)8pC`@YE7GGwD%vg9o&BvOLEu@h zwAEzAJyl1{qr2>HsGAm9hh!e5* zHjEG%@NXj_}_49%(Udv8DgIbMcRdiS!{dv;1OZ;|i)uam~4iw#|b1MBI2 zyEayUKz@d(0B`uWn$j!Ur?6L1seH#a}+yT_33rvp?0J+{UFo--Ka& z1U+;RVGs_n^^InyrJstJbrz2KXp!f{m;0>v)XEHkgn3-+xsX}*_1IH;E zN}#}W$E;^O(M0TCYWuD~ z1q|}I-$vLLDIW~7>$8NJI4Y}s*!n_e?j8{HaV?&ww=&bf{{7Q1?U!)_EIK25W#qDT z!NtOD5&IK`oGfXjN%4yEtV}7}=0AzGMDWDVjoMO(FWzZwZ;%nU6+dV!3%WX`?=0#U zu@#)hBP(q7Tr7GcKmP6~;@LA2W^CWG{}&HdDAnJY;o}vD5DtDMSw`IFJRBj?M@)8j zjG_PZ3ZN=Wp4oTZB&^`ddzW{M&mx~N7UX3e=Ot+{@D--XK8AeO1<0s@ipu0Mw?UMv zf52}jD(`&0zR`S7M26gD3z@rrF^E*oE@^2z?VF?bcRo1{K_)u>vj<`Q`^fISPP&I; zlB16;GZb#aVJ3daG-IEr@(EzCYBG=KaQ`arNmPNCV@1Bk2CHNWX0bRvj~()-!=g8u zo|3isVh#&puN64{sIF=*upa*bPus#B^3~&{*Jlju9O?TxqU1ikYHl;Z0P4ilM;zq> z(9E&orT4pv|2kfUg4&qTH%Ei$luG%PB@i)KiZgt90{#T_UY$BE zm(VVUtI&yOif`uN=09~)B0lYx4(y{;eeLtL3twCj!Jtw0LF^|^Qh3^D_lJGYR4)o8 z?^c#Yq;!+TM=$Bp$XPnsxgABU%lJmlqYBukThD4y4v{4L;zmGkOzCd>YJy>uUo4=q zDu?f-WjQAj1@=GO_YzEw3ZL@6%NX;VK_Td66aCC6=0aNOAfx^%z6U|0E2rENE#A6L z8PAQ0Exugi*@@QPB%p~5e04QuTYcv`J;$Jy$k*(xSF0xmTpRr z(;WeBe3$u`=3@%6ScOyZwoXcziWdN$gxU$VBe$0JUS9k<6if8a>64!!lhbLlcQ{Ce znSwme+Zo-%qNv2gM|54B;4R!-Jbvu zRD6Bc)tlP4m%wg3MlM~wYL)j5eMy@anYGh@n)%s10FTzUE~4J6&VI`Ip0twp`H!^8 zwZK-}gZN|fZ*t!5jkuccAK_-2RCBaQZ-;PERtMj*#B-kJ+qD|Vl1-oF>ACNG6A%*i z`A2!-uSz)~rl<$@+}!1Z7&)i6Z|ciFM`yf;Y^EuMN}AG&Vg};S+w7e7lLCDO_&s^G zlNmy)UjQlAYDumAnrJbRE(CPy6g?+i>Wd^L>^g?r4$T zxAszW>^gi50aPy8w>5{mRFbccHmO&!z7}#s%ICDVy?j&;9h=g~OY`}PZcYjUx0|1H zSUkA@JT$BnBBc9hA~_P_t!YIRj?=%jNR-_+F0EHhd`gv%UmIdiBMKS#)`1J5gpCep>+`a+QGY#p((Qik;u=2+BP7YRjs?=39Ax zbmmY1!;=u9Hl7j}$yKD!8fTt=zO^6PpKAQOG1`K?4;1wH^!yID{q{1p(cX~W=dPqg zXwO9Pd666F4kmBAT1~}WUevS=SX+K^ioKThy&O%VH(fJ}yZ4(iyF5EHGugl2BD@u} zY+PJcCi@djRP-^+d!{mOO-9_@6{)GzRw=>JQVP=J%hiKVw}Z7QjDW`R^zs+c=k;Xy zj0#=3D%;p^p8dq;&4gJDX^4N(6}4jcaqw&5FcDOd!>^4qSKM%&(&cCfPfP_=_BBwbaWRO#~(GJir@iy-N5W=_i#uy8s4 zG~9El8az7XUMAb)=5o5%KmOoH8qo^m;LjUz$1P6J9;1NUT(_}Oqn}6Ij^{_N(6$q` zvJn4K%cOcUF0R2=I^_r92J8DtUyf-vP6Db#-7*)5&5P4s{0zBZihl7~@{CI^pV$}wv3CGF(770oaxmoqI0yRav9moB-rV1tw-wL_*M4^`yr0d$=#Rh=yNig z10~h^f=ls^gfDthImX|eu=<;%L4Ck3Qi&x3;tKOltsr#3YW5udgEbvD876HbE<}Q^ ziO7EfYy)vqwBL{DrqK*hqvO#7b3uvkq)b5TLhO2Qv$!&zgs+V5gq|g%C#7$69Mu0D z$*5rkt>pavj3-(n5Is;_i~j*dE-kp)h;JOxNRnB6KysfurN+(V;Ml6%gymJ! z!x+`u-KB?Hw4SGRlPqG3U`2^Fyj>;C^}wSKp~f%vm!h!0LcmVY=hS(MyEav5&Qog3 zKjC=6M!6|@CiRrpayqia8gH$!*boq$v9qzSw!I+i{!KJ>&rPy$j$qS8-1m6?I15V^ z+Gb%bYxa-994(Ny{><-oo;;DoWL3u4jv-xEQ@I!>soDWt3doc&W%#5nZj(e=qTlz? zUQJ*8*gGHSBfowmYKlKW>gr@M8y|r0sM{Zt2uLA=ScOz3^n0FxQm>eUBH|N-du4j~ z{7vk8wAFDx#_z*Inn<+CjQ-^#oyjZSF*ye*T?NSB7p&&Oxsat`U}H&}&;jtP_eBOX z)vB19qp!I@?Krn1(!^`;G3@I@LA9@JDjuWL@el0A!nV$LI#cyYC{sA|V?lZ(@$m+^yL$5MjfXE% zDecuSgXn>;xKTSFQlqe7Aew?x5WCH}sj`mLQQ7+q(&~vJqC{X=Xh-ikHZbUC0^#QO z%Yp>d&H$v~j=Gpvp(sDXMl*(95<9r1Zz5wO^(-@$p^zTKp5lh6873P>gI3UmWK%nx zaupC#O9DbH`m#nJ8zg+U;GeIi{F1WD}BSNXPO?N|1AFAiqLiF2LUmu zf5gb(BOs-t}KDEanZ3-XHSw zB@M7le;@fX>nGS{^`v^cyP*!? z%zlb2d+<$SUK8I#3_6BR?t~yv{PN_Rj#9aAJ2zh<*l$-7PmJ%U^K{S|*JO;_t9BgIsvO?@9z^3sLF`8ZCluZ& z!{A0gu*!z6d;J)HLW;BRcc-ua&Vqf+gFuoYPkCCETDPH0f0Opu!HPYK$?CWs zP*(n>rsq(51eW;YPdTmlR+2>4fXNN&I%bybvuQuudI&3E0R5o z@Y}xacdMw7rhR#5ljDt#L@bCBU?e&3qvAqquQYh=4F%omJuAp8K)MGaPQ%e>ue z-;s#SS$GQTG!@$k&ET)c@_q`kIX~jF}iu6R%pB4D~!{54;5H3=yZeB z%JMSz@mPEjqJ@BXIpE<}Rs+8>${_VJ%`GNbF%p|q=ido1m4rnc+wR+FFS?2g|EgG5baSi{rT9NUzJfx8)NE}tCbp+9g6;?3E5 zEVgEY@-ppg83xix%;8J%(WN-%oWg5A=>~v#IQK>Y3?Wikqoh>(&AHy8i1j!|&Wc!G z%g!d&05Q_dDH(M|pX4viDnm>DG_4=FX*35V0`HGxghNS2qTPxa@y6CcY?g*>If;h- z^tDdQ@)l|{^_Ynf8co%lBHucdLOKvWynd#9vXC>c67nfyqp#xGXio-yBt&!gg z{zDK0-XBs`sL~WbL)zGgs)*>h+1lFj zx}G+<9HG{p{**7brn6I>rw#P{{7Cua733xPk=)3jn(Nys@Rag|9)1i4K_01M1RRjq zH+rnTz8n3(z&OrtFbuCCb&--37bgpUuc(nJpiVcy1nfGb@&jpb)%v54m#)4Km|5k0 zklq`yXBamvPvi^_ApQ9IiSNYugny@-?C{$Y{#ic1pFm>*7Ag@iwI7{AQqTQR)s$9x zUOUBL96mZKOo4QPk|M-8A{yQ4BSK2Gb5am_L4N)Wx9Br6Mt_sGwP~rFOC22tIXSbm zwn8Df^B9FpazflVKC`y2o0C1E8jqBwZgOdyo_bxsB39jIA*eY{A#uXfXvg(s{*5{AXYx;Jyl{l+`1VfS0x%6+HIqwVA%`NovvmV&gq8?-lP9gGl7ZB%^e&a4fT(t3e=w? zGz}lIgT}|I2$A67^A7IMZ&KP<0x5SN3mzWHA3WS{U2k3IKmb0Jn30`^*~YrrI$d6` z@@p4UV<}Spy3GuszgBo(T$hAiw(lG$=jwMpK1C6oF1QbZp!?3Gz@+QhwUZl77Myec z)zk#Plh2EST?PN2#e|DzR!Q`fB|vUZ?iT9y(7@LRU`RA0)Z;V^%PI+-?C--H8Wovs%ZiKHmNQJ$b~@k% zWSLe>#ej)4XC*JFVnJ=DxyJ)xn?Xd}?cQu&b0?F}+ay=jaqmznS^i(T{eQaYk~^Rv zc)f@Y?eCPiL}8M_E-V@9upQ_Y0Yv>lVG>fwkXJjfh^7GFyr~YE_x@j^yiLqGP~N*x zKHOi;Y>NN*53@1&$WAE(7t{ihc>f#k@YnT!w?^iFbXfm$4Br2E|NIX#)c>68^854; zMF~U~q>v$I`i#FGgau>n3gz0q-TBq!jBe8+PY{d;_xapd`}(r@`^nYm`|6{7ef~{H z=im+Vr?!;674)gsatvNh2A>vqPq_#1G{|!$$zTKTNZ$TmQa2YuK03O{%ndxVyT8Zd zkne_*VR`JOJpz$yi%Xu7XJ|_wlF;Q|#`*k&@a%xvY0GhlU0dySsFJe11LOnU0*kUH za3nyJsnc*aI}uU;gjuC49>rf}Hv>aT~t-h$_z^IL|Sgd)-{J@83 zh5sp|qWEwmWe(1#Azk#MS^;_hvKgj1NE<}=Tx7C?B{$a3LG~cTu&%7Dv7ik|j5O$+L|AE(LZjiHUOaC7UISQ>+frr;ykB4`wJEC$hVi7>Uw<>YF%~1-Q2WW5 zG4$$c7r*Q%wG2qm!2*x^hQN8w;^lQDxd$Y%*I@)BYb#X@z2|YpnVf9+$pE?MZlH?z ztwPKd)*lD4aYk12cXd-=67LWJ!TaBD)gR8ib&KK*M%Lg;OpK+rhujKN9j%2U%p(i zSR0@l)@e|AB&Fc9PtI;>Wvkd3B|LDj`>OOP`hXrnJBu=<|t8HzRJ;AP`pX6KXdFBdi?q3@i-Ep!K!6 zp637c5mqhGJ9><|KdI&U1t%2lhe$_tZH z7JI<*U`2G+oWaAjL z`+6~3G^GgHI&mazuBnSR_aJ}ap#9f3^M7o$t9;iiMs*8ccbEP;`u0xYn)3aG1YpSV z_thUdqMPvwUl9AG-8%j3_jhVH9v(_P?D^hD%Or|qeNE3Yu6z9SW2$}E`DA0g_D*2U zJJOx@YoF!IH8niSJE*;!Mfl@GUe;weBvuNDCVZG5Pk~hF-(J0P#E0tQs_f0O1&OTb z8MK(sZm{ANd}{M^mHTd`fe1K1Pedpflo_v|+iUhC1=>slzE1m0xBPTpO^O&9AMFH= zzRw0I$k1prN6&Hs;8^qZU%qJ7K`yZCuJG;5f}8TY^Ar+7+d{=;c|ZYUvklgbD$bj~ zWdK#O_*{Jb?9!r7QXeFDe=sl|k{?23{_rN%Fc7Hr*g9B&OH?-sft<3R?^R`FP|9j| zx_h`n>yJun=aHyDgS_){S0{-Nx#&J9wiR~gJ(AY)}%vU7ZVYucd_`)?6k6;l}RifwGH7Zl*#svUDR$V zIV_4Hn>^p=YBlPx`}bO>srigrVYrizub<*rHKvqYuqsRmG%T3xELw^Z(>1pM*ALv&*( z*%f6mRq}!V9UoHonVFUj8It(u>H&JhccaR5;C!vs&2Hu9;5wLbgJ966zv>szce(i% zsL_I#X9Q`e8LBQ#;nU)J5He9%$j9>z1gyBmFH6X4^~}CI290_Kn4Ci5NOn4X3I32^o8SOxw*2a9(2Qb}*BP9!aam9vGn4?k;;= z`1uRCqrbMgGj#xoQk$2hpZ3KMQNGpph7 zj>*udb*o_X^j*vcUD2?2|Q3165^5v@EZUQbSPpBflR!sR!T#T+NzrS!!Pk)751Q`DBc zk~f;br^?UnTHdIfIRRdqQlWvIu71{i<54nM=fXhsyUT6>@4}0HkbOTZd{X6#^g5@j zjaKXFS+!7zO!ThrLZrvYyv=&_Ifu^tTg~RuZ~gh`Tw5X5L}vJTGK$a^XC}GZz4j+= z1V_H-!$cm05E&8A8I=#4%hRj0^s_QSUrB`Xy~`V#LE7VG|A_Q$&O5S-mymoG%jeJB zCpgio>pbi(fp0!>Vzg~>F&#*Jp?}1BZ<2horn8L1!I;@OBHV^B$eArT#qr>cgDBa3z=D0KSyNh|o-UQH2z>##OF>#D}`MykxQd^qN? z%bY$kexFVMvX{jejmP2rB4h2CoHv~=Yb*N z29_Krr|leTT$zo*6kO@Msdlmw_s&Kh5JREvX-iQf$Zd0IkP3G6_H<3@U}7R4LME*y zi}Wg4Va+PwYyN85uW-cp`rW-OCOD)yI}>%d0hfKBf3$Q%)-nisUUxFQ5YK7PE6*Jk z6N7l)P;-V|tbOkH`=B#8mv)$f8P#h)Xiog;93yn?jQw=xFq7Eb+OSXXq<9kj*hP#` zj9w$Qobrr!hL;#~V7!szkPDxaa1C(6<8*>6;Q3Qkwpa%pH{b&G7c$2dsi!bqz-E{P z-RX2=Y3~@6wOX+@tl@4@m1w*oj?iEeKHCcBqe3}a(?bySOU zlvO>CoOPP-9bwy z=Ans~l9;r!PslrM!@~Mp{Mkc*ZaHgW0W=uWO}73i^ImL9mb9Ccb=&`Fi&;pxLtKm_ zHT7V7Va}w16{AE_C+&03s-9;j$`Y$`wk2_COhn+PkWOUeA8#;w8@HA({CR=hpP)X@ zUdskjCAQqjW(P~N{3-vL0K>_wumZ0034kR>RZoPCksu{XA&5mi+o$MF-WMCIn6fxs zYp~gZmess8@>BZlZ=2RgI2a!x{5dgOCAnBA-rjoLkxgMA>Cr$U&~5a(1O|=TyKlLPjcsEu8e~cBy+*-EFlrDsu5H1 zCP%dPUlW-T`~Q#M=4vGMGy2<3ew_3fHX^lIjnOi`xU|8+A2Xlj3C?@}sjzGt-dP7y z6nRpOzw+@r-#uqBYS$f(xS1 znb-v9p;d^y9*tQH60Uj_e0<}+lI;?!=+fSMUv9D<{xtBp+1?>Kr#}cr@;RG(|CrwlWc%mxyv_*dJrFKta z7Qnf|!e9$d~T>4UaQ<74MXBbn`6ZsF-U8FNI5P&efXAFqq)buHJ9vfOft}piN0Q}mXiy& zYP5{S?ifUhfThmBnZi6mPFH*(iaxZnzLSOC)i)P4u%Gc{bG^iP!GF6(WJ~zldw$T2 zOJBY9>4T?mC2LkB|J_=6DS#%^rnn49S%14)Z@@ZLC>WFNpznN_NZt?I<<$5hSNJu) z`HMRh)ei->^!B>s6yej=igb>Qz}Q!ZHpMw38@RTsfdDa=@%zjdi|Z8IqD1W+iOPW^ z2on8jEmYrQMb{ssjlC6br=^<#gZH4e6*~8`E8ttxEav1{hb4zsJkO*mpwR4;_hK}e?Jo1E zvXedJS7WXlC_*A1x;?|@1Mn~wN$~zIfavYzRRb)>CYN=l3Bkl{kKN{(Li<3LxJ>P z>B@J&ReE~HLy~vD0jIE?fP(@v0#C04jkkf%kMg+4v`RozpUz_%+LhtC4MOT3GQFo5 zQ*|yOl{7!H2}O<=C6QK7YiUMWbibNoLU$Ys7YgtjufPd5FD`m@33emye4 zQ0cif9DZ~lkfosx>gQ74n58acrpIC+VBf?Y{}e;|ZR1!ke|`5|`-H*jaBhB6X+lEq z(!`=EqUO{|&ezVTKp5N0zT5au+e;M6*KlZ{#A`v<7WUis%}csxrx#itJ&&>9osq0& z1g(pOJ&r5&o}Jr5Nh+_-TPiGRYx zOhOB^iz~zHx-@@R;n%3^)q9vzz*nW$GoelQn+=AO8tvZ}*Jj9K+xlGSe|oZ9~J z?OK*;7iAEzYpQrXmXMA>y8^SL#N-d8qVpd(nN(U_ra`P+ z)|3E8c{6M8o$5nQwvUB6MD(5!6~1)QC{(i;0%9c=Q{S3G=kJnLJ|hmKq3{+#`P!_*p1E78oX(a#(z zS<0cV$gc>fj>|UNf0?yfD81oaytSg6g`_Z_*$l~q#Z|+$uCHlolN(PxYp80fl1id{ z!R+{gza@&$Lg{?`;QM=&1)-eXAk;A6rZuI3Wg~DncwN*ORda#>qUhlcN6=Ccz4m*| z3~UC8Jif2NK427SwZ;LTvNKMrFF!k(ep%Q|z4|uZyhuLd@%A^1?EJ+Nqac2uFgQ8o z7TZw0tILoPDNfkZQdI$q<{3)KT8gi-fRSaUAIC@HO-5y4d^!w4fa)BTb~lj8-+FsT zM?kRySKvEJr=IaaBdd7j`t)(a%wUvfX)zxK@+K_hB@WqGJH}$vwp^t8gD1)YK?Rq$ zenC%D=2k@rBE4NEL%^rK6F*vhw_=Ai33h41#5PcQVdB>~F#!^MQtcCkxG@PzPLZD% zNJOl?DyypXk71`-S)Dbdx3b~*f7)`$EP6Roa?MV1xBnE$a57Rcb{~fB zmLn9|?5zr25AXBrd4|-ac@50`{qtqv`Rs8^=;Kau_&jnDr^a_1xPYv4_G|ba zRVn@rciP1Py6c1F_>@^wIo_w=R6U(-y5!&-0=_5$%2F|%`XsHSY~GbvF@HuE3QQAz zMeemd#kZg9kBQIJ&BiPTvct3w3OiATIW z{OF^x<}-Qd?dM)q;NI^7t*NEz1YxsG)boxXVg$2`kU^|E+N6rKIxmY>h@%-`8|lb+MRmI~wZ}E+xYQM(FfFiKw69*qAv= zRt)y7rzqPfNkS9UCtyVScAe#?cI#SoY@6{42tx*{EcO2tq^hx(Am;f;M~9u{Lee^FlqR+3 zWG3inud`Aao%6{RK{f?!VUnjn&V|Tc{2C+aBSn83PRQwQCo?p1HlU#}%h~esytpafsD4lL8$+{pQg>U2>s6NpsP)1q!Z0Z}KofYNY$` z&-mg#++sGI3l7-WGa^n5sdoW_ z<(@Z2wQk+or6Zup9z$>j)L0j0^QU9Eotarq;*8j?u_OkacfM;ZsMPxE{{&6haaj=avnyAHua`^Rr|{UjeX9%9 z=>Dw^9f4Xs+vY2h2w`vx=XqAV zt*Au!wdWY_8V|475N<^%XXem_C%BCXIO_jeS@E^;5tkOmBxGe`3|KTX*Em-{&8jB` zh(U2qOA9ZKLr<(LUeWk<5;ue}9bO@tQBv`{u1_(Aaj!nL9cswUR3~vxC+P0w84HWg z+jnLILqj@|CVG;QuWDfS!Q2-?D$bQD(gdMmQS<3+SB2J>fd@!wuefFRrVopwq|%{~ z&J^veXD@(mx+RF0tP{3gD5v8_1p3~ z(AR-lud(_yP2mYoo~T*ZoYv?&7-e)uD${Oe8oEvDmc3F{t(YyXpR59Mac6!_vqlWw zuNjtQ@T;>LyPFvwCvX@+b~(YNDyC-(0x1@OMn_u%^rCtQn2QtGm!5tm9rtbkca5|H z&;;)m^d5_Phw>qQDFO>EXT(KYc%PCBp9GX(D=(m1w!6m#)!&-$;c8)iV4Q`^Ybg_K zxPw0LH2rL6lGR$t-}MZlNOR!@Yj|>Yk7QVYM(0AK-BF3|CgS-#pH^aaOLUgm_$q%A zss|Waph^5pd~I+bPVERcJt~xu#XXpt&!)UTf2%0l;B0blibu#-TM3Uh)HE%?^*O+B zD2{Ct?MVV;wKnVQ=bie$IT#oa1L?|@BY5iYHB?KPM-Ad;=PvPy6n?r!mfNM`3rFNFv8>|N?X8DXWjDL6FaryWF1IBsn|ge6&#`-hRCkVbwwgt~FL z-!^Ko5;G*N?e~wH7q77+>{jG7gQEWWBj$M8jKwqS2*#^Pb(j*EdZJV(QaTqq0EBF* zp@_)UQL}HeSB3x<)9DCsKNn$DlnK8N!{gG+HxL>~BAHv1Xs*d}Flgv;3Hp&AoAf{3 z`|3rVjd~*8IrTA%fnJnZli0>LvJ_O$S}z|(JZPsn9%=nR_9g&fmOczmO>Wq;(cYG8 zI4crTB&Fo50eIOwW{p_tS+N)o%Y0HxJw7j728e(|8sysLie~9K@$Y=)+l!@T`?+tg zSEgv}GU@RSdU_)%6EYfLTKdOcG=mPuy}0yE&qudbA~D?zCH>WKUzfuj!VCKgV04qX zMq7hb&mRw&b6)QEoLa9MHJ%FV7fCSd>*EDGXRKfEb@SLeQzL4g{X)8p5i0jtcXJ#C z!9HpN8%cte2r^2$u{RX9l7VYUkd`@^3sDcxqX@mqUhJPa(kgD*OY^)`5`&(VpynRV z-VoaLG5qn77{im!d=Rm$nnz2`DH9yuAzMp-uDFu~k3avvfV-VDM9qW@+M4(L&YYG$ zrp#bcaEA2~&8d!IqIXXa1-|q&sLQ6bEXVetB7k+a^IOZGi_J7X$sG^m)~*375LiR-t(>-p9c z`4$q)DGuZA_vK|;dYUgI6Y-6P$z;Utm){C6;O9#CqPOfJX^snRl{lG6$&d;2yt~^S zY0AS|v}b3e(T`Rn`~q$!v0a+Qz%jI?=bp*+cG-hZwTKAZi{`$-HzmGwMcsAb20nuK z8S0ZER>>X8$g4Vzfy5FmA;KSwCl`3fW^ag2JZN5ZD|>szbKaivZUx%wlNL8>CZYp% zTmt7;#4b`W(a9ouS#n^P^wBvi106Z=i9>1Oc;|zE|C=LMN5Q#rIpQBU?AEVe8G>w3 z%z8RS*bYjyr^33Kts;3byN!(o(K;#lZsJ5uJn7C108l3J;cct}Fw!u9Lb9fcigNuN zay0z|1NZN@S_2V#Z9mTM*LMK?xVv4y)3xa-!U>rVVijF5n{rZWLqvZv$*J8%lhUv; zluD>tVG&haX);JDbnsS}292n3sEwom{xH6EO=V?~?77s^chxdSB69a~SaEaT3kztzFC?nf zd`W>(Q7$);jd7hi=(mI3@%&O=&xIf>CE1S}r^#+SY^<-^TgPtEAD)&aT_;9SIDuGy zlwMiy#E~5oQfuY`ccXZe5-}*vO{Y;kJ;Tmv3D2LVBg>JzXV=9#+mYtbC)=^^S1hbsd+AV*$(=8oKK}AEK67H_X$!b&qEA8v+xmVsCmhXlo^D-Kx z)nrg+oOQp@2c>E3%pod&ic%YMF~=$#2y5@>NFq!s!Q&>k_?{ryfU<^OLl+HtfY13k zJ>{jq&e4a@0G>Uyo%8M9t-Sa(>tu}4j+N3p@uH_3BCC_xTi{@Zb#YynCAi)|o6_f^ zg#qSuX5IBRHTS-z1zt$<{PlDIhuX;WwLUzK7C2JT(FGd9wGU9 zDQ-YzRc+2=KtaDk!@1qqvk-8#l{5vbND(KM^~S|Nrw5>ao}B8&baZg4tkBFLAyce9 zDG%Mx>UFI15x1Fg+tCLD&^~PmE|D2Ta}`^s59|g16>-dZo94VgMA{paVNB;!S&lT+ zov7+v+-$kM?`%s_iy*9I^s`rlKq8gq;J@r8NyBQl7<6-N4|ve6Xb`KIcWNfV5{M}+ z=XHD>;KWPh63T}bcvRQS{#G<&kw{-`4Zk4vg94pIyS8&gzfmbPlNZ`U?v0K{J-`?; zv7Zm^n#$rwlY~Jm)a4Lojy9-UulHkz)JGZ7MunD`@Pi~<-rGM$^gM7A#@!Rlu*!rg zs$a00;DY%wDhjSPTY+~Oqzc5PWZF@=iP>m%=;-C?dOnG3M8kw6yL}ZZ&@#cg87*RS zC5F+tpz`Gx*(+|g%daTcPTuq6bl`4%r;D=B|9Cn z*+QK#zIK!)cEP?EweqnIi)5?m(b`(6{~`Nrr(a%=h1(wA!)%(7%Tjbb5remK$jU`= zbA%(LT=QGaWF!jAxhws4{bku*(1t#&IcE`q*)ByznM;}U8POv9DQV%YOL^e7K| z+F_8w)|x_rs5x$j$3w>?p9Y1u=Y5)9v$ptHTQeo^!Z$+26wC&eS8ep z)ISb@d|qLnd?a$$Jxz?%rb12)I+b$#*`t1*+rQp9BK3s;&FO|nv06Lp1GG~+$YR>$ zO=9S@Z@zuIqr4wmD`3PU_Da^p@{N+M;lk?4&C*S?cai&qxL}H6?o#NF12C^L6t{cNm`DlqqxO4Ip!|cMIl_d+&IIF(|puGD~nO zu|di?(ssttok2x*poX{X~_~g0bSEWSWz|BpsWE!J!&eYSvv)K*OO-cgyY@3d$*2&>g!eL72P2dJ|^K?9l zt(Xcng88Qk{}2d>_ZuluA=L@t-ut7J5CZdpMhSc#hbF%{d8=cJd2GksSdE(KG9qgw z1ERX{Ouiv^lX&IwRq1*5X=HJuNpc;j-0OJqk*bj=Q1TrPqI}e!M)p>5F@;$ZKswLt zaerL4I7y5>4_3TnlE0O>JqN+-_-EcC)OM0an}UX4X_J*d%ah{ei?hC45hYIIy3iY6 zmk6uY)&yviD{K=PR(8&Iw%kc^F#4rI6>5uwBr-ee;}izWaPrq?uJ$e7B(diVmzU9h z1I7$t7NqLQPUiDxuOxeki*mq$6_@{!ThTL< z6#cK~XxP%cBEuD>*<%#m@8EzOECjTJ?%M*^2uB88oO64(%2O2n8YlB)0kiqSws{H_ zdh||WsX?lM-%c=(VXq$P5My|rXNX03t*>{K)Q{=G_w?uA7e%ylnXrNV(F7hEif8?t zg2RqC1jv=ze}+#hUH903J+AW`b}z>I823d1CotmDR0jlouG;4$XzP5X0tZQ>3HZtA zA!(n@R|Ib|JbbK$(j?;=~@x)aVp?rbwq1&Ufc+y?TD7yPXsVO z9w5J@O?<9oCwveR^@BlP32n(LSd(2PmfE2$_k5xm7^7>YUd+W1BHM8AYV?I^v!w@P zM38Qj!B)-r!H5~j+Pb4AFr$kYe}Szc%hz$k(npEhJG!KRrPbuDjE_cEtY8Y5FE)S? z@u(|j{a8&~s^6^s`#f$3LjTEQz0yxLVXhePu}3LK8P zn9DW++|Sc;AIzn3ZS#3NB=>Np-6z3p+622xFiC3h)EP4VM0>;AbItbW@`z3i7YzkJ z4b$~hS{()}0Jg^AKE=r~g{eTEQaNW1?ogUG6Y<=eQ6}cjRq?u3affy0;QFHipg=be zcIsEyIV$12^ySMU6nOD@BnK|pDwA2-=NzvT1+x~S>DT9fmr?f#OufK6C%`$|S2k$( z5|V0;TkXbrmLlnfe0q~?vU5Hfz6fW~sH->PV|FJ0&S!reQTZo@OYuRA!Rk@Fg+W)( zIsQmZwC8HMB|{L1#c5He`$6jqiWWUaNWXqQLv8&=qAp0elzW##fTD8k-Be7BpWrYj zhfT0O+3WI4%daMqLep6q-JefehRHu9^bUlHY1kGpY%zX{7Ag@dFszplKL~p!OV_mq zSS`9$CW9;chhNh7)dLiFId@q)jo7;I7BConwx(kvqRQfa6~&Ok<<@RqG1b5MNW6*I z^LxzI=WXce+7cE%0S8$Q7}Ne-yJBpV}%-!BICdimko0_Dtjfi7L z_F&fzp{fVP-pv(nmpKje>&|qw0+YPGe!6Rm?KO7_WQqiXiqDq&pK!V148x|PNh(?j zIxcs?wpSzq1|s~mt%lpVWYI7HpNDBH@wpr}H-86$VFwdb6OMw>yiapeab>9K5zzNA z^4?#o3tGs%)Edm|isqOwEDv9Dv=d!N%IHUH08bXt?GTY?Y_e7U$8kahEWJu}yu#H= zmRfq|vR*?~&g=&McWfs`!41QT_%M5247AIede-IW`#N-17MW4Rellg<%rX>VV>NaY zu~RZ$0DvkB534aE=3@%}YMTjJ#MzydxClt|VB99Q{UhLzrIetjEFH72;Wu4Ih6r9m z?Xht^2l|T6B6p4c3Qg5mU!B`*(tq~NoBUa%x)PblZ;(;BNQ(|2Hg{wguFbq}!w4PGz=6Ca>BWT^l9WFp2(IwfdfY z$(Cgt}E+DY0iiF4*vZT|3M(pip{NU??bJUX-iv1+wi| zJT0vEwzHRAA6-_8$w)~|XP*CI;b|874R%ZzzAQBb3T`yTu7R#??d&dE7kewa!b}S< z_9RMV0!JhS6WaK|Or0t96>=WYzGd8rNIlvjPgXQWYtW`31sE?YsXkyrB}_{vZQSvZ zzE;A(B&toqNMkPHjQ*4~xxGR8d)i~R-Wf;xP^N`HMsbbLnl^W4d1Ue!CghQu0-Rl4 zBwK8mXo;jM%y4}8H|w=EYa)=~q zg(+!dpT`3vF`D?@Bj4Hix;+j2zF3#6-N|ZYmUnE4KTW-l@A~pKN+AHjI%R)vtEYDH zQ}3stAjxA)fTcRfFT7I%n}#HZd^iSZ@NgE;q9xZ+^+hGt=sbFBGd*ApYP3eq75dUy z^!Q|WfvKlF#e%E-RWU`G>?C&Uy8~C8hjs!r?zb2miZ3|E$(;jZdc8ALX_HM)(K$K0 z#Z&kFvS~?{JdqjH38h_>{<3D@f8I>K^bw z+5}@1xwx?r=8hNA)>Oh;SZ&8ZJ0pW*DJjK%@$@FbH6-3zpPM_!g22#46f-AOB@wu` z?)asnBOxfudGT*HSZTn{+m9<>|&{kxj+4=6P-o(^FL~>&mGloa2>yq75g@ z)yVBiZjz;}@_N*vX5v{GRY#L&YiI5bI<`#KDtTS7?Ky%^l%^py|D^U#l1e6d zckkeuMEhmOqosw3@xPVuf4wPR!34dzeonl`{a-@C)ZlHRzUM&a4?`cWRJMar*`Qf+ z$Z^AQ6Y8aT{Qdn({JIk$on9X?4gk1!FC84&Oep&pGb<^-P}As)71M#*?~|*_;JR*L z#uyk-<@shu+wq;eB80G+H(k7$&e~o+qhEc48J+gJ~joWVY{9G~rPNW zHYu?%7)&}O>{hxHwz`&#(Xc2h2~|S3&ENt#dv(RzJ+-G`jJ3Gm?3#OYi&AJurD&?V z;(vmvr$&{x>o8DI#3R7WxDtgn$2seo9gc=_d}P#-sMxTW77NyVwnJeWCVBu~PAfR? z$8dKX%3(kKM=bhVkwl5Kw6rSCTsQ{pUx+eDA#`($1KZ*F+qeS0bkte?pR}7SD>p%? zhCo<7)FKL};8m3o`MF&#ZjsNoY-=?mv2@0{W5i2?wkf+DBh(?XiZKfwqYu^=SiHt< z)zi}od!{~`{N^S&dCB}oP1>tpeZ-6LVq?0VhFH$~_#QbU6U+(mm?kjxcwLIekkbNN z7H2ZSc2$WkW*)0k5lWi%Xc6t7y?YJ0>U1Num&c;0xL-e>XpwKWcTQCjQqunY;Mgq+qk4 z&qdG+dvkhVs^}L@?i^>|R7elU^G9WUcWKXwx`YH1?WWL{>zisL?vQ3kafwHn_U;sf zdrSOv&TQp1#Q0`nr7Jw znS_qJMT%%Z=LF@6k9%#Ki^&gcPCiCPT#bj4#FUf2aCpt7G?k^Lc``)mkdzF+(AB9o zcuGi&7^x_u=H=g-XtONX)C5UUAC02q^#LgF_mv9bgZhG-X_idItiJ$+;O$aVX&+S| z%P2YQilXuHaAgQdq_qcloRoQHuB*3O&_-iZTEzQQ&VFH!Q}ZbI!rm~mrT6{b?Mv*x z*-Gyw6Nn`>&D&#Y2)-;}Qd?(D zgyds8zoIRadbqWTlN4@^IQ%RoNCQ$2LfMF_l4j)P+FT8PZdBWUOoxhg2E)pDzyQgeGXPsEdQIo@GK1&^`zC+j+P!W`J&6%WC*YNNRP ztF*b+RfXHzng^grguE2DB0wfy$$C=MEctYqxjK0r-Ef8|I8+tl)v(>RMApM z%AD+js1|J<@gYu;LtUbr>}e;cOU%__UUH3I#EzG{M=g&Yx7FA%nBPi%eHv4KS_mA_=JIa z9G`jYjKLTwAxg^yF*3={=XHzQ;0=U~Jf6NNZa9cdGjYG2+%?sW*1uftKijGCI|L9D z6SKd~DgXbhucwdl-T{$?aw?8xBnK1ewSrmvjW4=)L`zH7H4|@6N&2H3NgIl*4wS(l zrdr2WJNv&ojU^BDGE@(du9FAQ+?NdV<{B{7uHsB4sH4VLL;Szo{c2q-jdogFIYm(+ zS80=lg3{ak3$33)v*)#yh+$x%Tu*+J?GQ_UjTwIpN8ZHQj(iDi6LT?ldqN^s`guZ8 zYt6e2IVYR3Hzialmr@|b4cuf>CKrse>i>4~BP`A3rjwTtw}tMvL>HZ5atXzA0|7kJ z9Q(LL7o;43M~%Rmg%V;pxFxmCJ-KF-%McGd7o_`sBlw@OfmqGu0o(}wi@92bK?eQz z!`wxGET3NV&-DAhw?nMneO3M!9`)aoZ+QRn*uQ7r5&muShbt*efXDxNj;x5J?L_V@e(zv{-F`<;~<%-gND1lmQ-$!xSxrjPtv&j4=t zoXlNQQ`5qN>aiq0KS&=CkK6+PH{SHQ)x8;}_akCfp2~@;TuEVgVU38X+Cgcu%ilkz z@#7O7)|uJ!x@jUYq?knh8-g&)5jYA&X61~8-?kd$*z1qNqJWh3RZsziXhAhg_icZr z6mB+So-^XI`TbR405bjEsQ-X6MeUtBAdTlFf^z_n2-Ey`*r^|?f&`0DW5&U753Cc9 z4p8U)&j>*f>~C%TZkvXOhd0*eR@T)WZJW+>X5}MnmU>o&x`jEu6|UTcj`P{^sh74j zmfESWT>wu(xV+`R-*?p=SvubL!L9|%TK(OegWl8>b;(8ovx8CnbAn+(&$ybX^-^>& zJQn?v)jHmUAnVB#_0D-3xSpt#XX6~n=kf{pLwqsoPm`SA`V8;3j5Hh*-~B-F8hXzA z6K;iT{Jz`0S38-St}ohn=j(unyia=Rhk5@Lj{HB=y=7P&&%ZC2Km;eaLxQ_I!7aEB zF2UU`I3YN}-Q6v?ySohT?h@Q#JNfDVoV$DOv-jB-JFkXeTBf_Iy6XEe;DC$LmOY<9 zUFiW;z2GLj=HM#~O%;a^PMXI#QgNk+b&;(k&+7yj{hlEtAq-i%E+3Z!ao-zW{n0mO z!lr(paG4tLmDywFR`~qEyr|w)p_wUD-Y%wflJt2~Hg|R$eDZV>L$>Ya{=?6d+hQ+q zB~&S&esPLv!e9D#l*+H4y~tqMF#Zh0I9+|o^=}Y!HyO+^!zeXbs2X~M9#KpFL;dq& zcHKm0j%e#gapSePykFbY%`H)8J+HAZfBg~VezEHb9i(Z+&HS8gQWyNbBkl3{z@|M1 zCpD#|u5Ck$QS(=!eY<#yEbE$NCdAW(rXKTbLWUP^`|#;dS@-PXC6as-@|LqVire*I znbZ;18WEB$LrF!;Zr|B8@3L*odjYMdTYtHXp4+r43jEQtJIHbUdf3v{8OIfPo*Z!oA3SL*q~Dl){4C&8~e!p7~ER!9DO;9QSjsu05|@ z0{a_Kunh#eySaJkZmvFuRQkUCbpe5w^+My8=yUM*@A_IC9T?|Pc_enP7Z0cAV)7_~ zRq3YzH3J(Zn`7N6GX0gX@bUWNMpsbu<_b;qi$~B_=@qpCYaxWMx3Qq74tk^l_}oMShhQL?}afA?bq1{8ff6 zI!J!2g+aFHHMzyqMXqBrHZ03m$sx|9H-M=X+p*+Wen&vG0s3#IW2wx&#n+mO6$sKx z#*&um!PJ)J@&-pu63f6&Q4&{5+M{KcOg~j$*&=s)<*?tJl>x6s){j-R!E@~*fLD2k z_npk{FvsJJ2Ut5X-0ZDio!kjO=%~B3HpTXWI%%F?Htj%2-nw%U*}V`>yR8`E!YD1p z{pg~AQ0zqe=Z4<+>y?nCbALPcLch2DGBl}o`y$mmA%}a{1ax=X%{0pWGx`hyd7jNT zEdf2;Cp^q2m})3zkEB3oc08P~azNy7qk&fP3w(IY0fSt> z%#fnLGn~`)_3xqWvbBj*?h~?A=U$8ivE|SLuSB4s&j1>)v%s>7f)=c0<6*0MLQ%xRvnwNWC^7Z zF%a7X6sJGwzZ9>*nAZ7-NT6pthQA^PsY?RbOP?q!(VNMVf{I$X<^9AOE(ivTJLre2 zQOqt(tebSzEpy)N1anJz?D%Z3s4si2F9S9qfRHsxivQgrkBpS~)uu6}Ov!@0M45eR z8&R>VT7FVB-KhJ0*B9G>eH2~~alq@IrKFeVdBct9tE=Bt5FZ7yU-k`bb>f*PPg-LQ z6uhC=#=PIR;MA0ldx6gu|IE9*aI(NepsN4D<-fS0C0$F46mbtnz^Ym%k+mWWj%v;b zTNx-`xknAN3#v{xpxuj4YT0}<=h?Gjci*&4DGB(RaFtyhMtzwWgBJvlye&I>1in%_ z>qzHJtaWc5vXDt2TzBl#5->RWF}5)MGD!R7fTn~JYhb~6!sZJB+8;<3aOM&Kk-yJr zj5S)u8lYid`83qTdUn9Y!(=B=m}c;*=(ZyvNXbM+9<>s#jYcez@vOxJ{Kmgt)q^%G zKPsK)8ET15+~aC2hqHs}v$s59Q?Z}xOY4BAYT37$Qg|Zo+!AWz^FVzmC%8o> z#Z8&IS_)7dEV`RfR-P3%Noh(Y>a~{VPMv}UVoAw_XO0*qI1(dU2~&TwqxZh??VH{9 zs+g!1CaTf57=2=_T>M~MT0lWCG6J<(REGbsHt4CAV&RNic4G%F&om5?7}E?JeZDQj zQ-9JZKMcM$423hIlzzuA=b_6JhcR|?MB{pOIPH2wYlS~EH8qGw0s|ij)1NpQ$Ed^e zSEpU&wcfzjqtR@b^!PErG!R9$IfX%=g=%xVJ&FORQ#b&QG4LN(u>0+F{^|G=*$>gg zX|5g#i?gaF4uhSbL*6~Bd`pIePYbD6*{|C;Q90HJi(u?vO!52+fB1D!*8838o3VW% z28?g@_G3+pzFpPV2Y*5vi*3oU zek>{*Z#myWc%ysw9n%c;vd|3e47rb1#=Am@T1K`&*w&njwjeaupd_h0s7Rq#4I5G* zUq6P2O<(1tN!sN#RzVPXRX0VeiutnzEZ^I5u9m2>x!^ZS%JamZ@bNc9$;G9gJBzI$ zGV~rx16P58va`@iyD85#o@-js@vbfPNPSe<)Z*!EZyV@5RjS%mL3`X0I%b8VJeLmS31SpFh@LZst|jSZY#dgnxZVR z|L@hyP1({Ifd-I;0Zk%s)>`6Fvgz6Fu|CRxCUJ`7Dm-S zjD#~%FBYJo()}M0(l(f=Co*-Wa^)Cl{00R9w|7Q$varLYB#jBO3|1^~rGlY6(ZKiy zu3r$x`q)?F91}HCl9cFnxLMJoK4~kos99?bB_+j>@1m)OO5#=G+Mm$D@(GgwQAQHE zc|JZ>zb}NdWA_!o*ETYp?>gMo(<*StMa0BWQpJhm>NG*7upk>33~-hlz=2VvBZ~=_ z7GWIx=Gzdv1@eVg!GZz3CgxP;Y1|E76j9ox|5)}@A7?A0kFZ&IVBVXNl5B`y*YA=q zMth~P}uqoD^OmA7Vx=RqQO6!E1B_#}u;wcMFb#Z_0<`fJ|kKJX> z6BE3cc$$is-FUsY;T(Dc28JG^89RSf`_DZ+o}u)9t%PehYsVW+>tK5OoC*|E+uX*O zbIl4U@0E>uRdjE4d4lNGMp4An|)kLPpY z;95|nh?AqxpZrxPh9VYD+Hv^=*X6zaD%iEii!N_80_ns3(vpv7mrRwOj*eA)tQrf} z>!Wnb$&WXaflgtm4-a%?X7;#Z9pU#V`JyujF) zsMYyxSDuQa(ckM9%WxcS=J1ryF%4Lk(QVGVGWG%zH$AsN;F{3eB6Ht@PXYz9By3nu z-Pjk_X+}kZ0Yr+TF$!N z)2q67gyfHad#qg@mDoU0G(;~%m^d8hp#P{6e0P@)y4V!!Axeri-BPM3jo^U*Q$^9v zi6h6PQL7pz%bBFDtxmFgs#lsRUIug&cNq{Ck=fsIBUW9GUbqj=eQ8m8mgUWV_F>rc^UNPbJ?ALT4~g6kR?lx%I;5yh zu0U8^hkHp$#wEOlYS_Nl3vpj;#H)Q!+JGf-L#up^90 zAgsh`kMMD6(A&RTN4XdR8OIeszr0{2O6}?uF|Kw2Ru||k)EoVh+v&vKKhqd1Yrh-! zaXqkA4sg6$v%6jxoG#V6dU`~v!S;DySFXT&=WuDH5ZP=$Wu(+{vAcj%>iAyLKtw@X zcHXCfcmtE^Zs&<6udI+kY~ov5lbv=l5YVM>#i^9LY3tq~^?Y&rfzgs{^!;CBzqRJ# z?kBXk!OOF=!h-S%ChuQPrNo<_G4KPhMYMHy4M20-#M`i-k`#{g6H6LMiuc9w-J|ts z=)2%MMRB#ki{Lq8uB3V!5%GumeX4Q-{K04xb|tCIlo+E-BJ;m-VJ}OE zVP}_84}R$xsJPmWuYmvz^*J<|f>IR3E;IGk#V2zuSg~j4d=B~05{BgRgF-_&nf6Iw z(kw?A!TU$w4^Gh;F|8n$2VOHI%L!&hJbFwPpi|Q8Dvn5<9(^J0h%IGW@%KM``KOPCM^NA=A}4X zyIbZ2HmuoZJiA8+86D64`rBvM+(xn2HcghdqEw@-jbyw)5IpP(Y1rN2`3bGs<><*&S<)jNQg0kF?tbWRu_wHT zB7B-NNOC-$ZTLE8vy^Lrvy6*5)H%6@ajlh$l5+D0)T=ulslf78ya8QA< zi=fZ0bY>6Q_(Ol_menln-xCaLO#mJS8kzf6j4}cMx&K_{H$;;- zpW5!J5P8=3JY)G2;S7OM;*Qs+k|c?STJl~hthBmdzn65%7@l*$jwtqjL|_wlS3`yT zoRfopoOID`YAJ8}h0uwO6I*8){*A?7mZ&u@jhJ!_2vJDyhFya>xB@`}Jc8=`D^$i$+ z1zkgNxeSeQPllXM%$p4#cR1mu0%b5BJQ{+2ieWK39`5oZS=_hY+-Sg7MoiRQRf0rI z3*8k&L-Ar)GYa*Ta8^NPT7PqdoMZsIe8tgsQa00JWy8r%0mpe$2yvAoaTLt^+Y^V7 zw?mXkbsDK-QXQn|!J0nXcGdH%A3EmMsx<`PK%`VWnJ%}ZowPojW+)ZTvX^o{ZYhkq zJLJ6xUopn8cWHo94pk4!s5w^m|Uce z_vZ^{w&s%BS-s!eYrq56)-HE)7u5I%S?~t^~}Q&7_chgJ?qg4s~N^ap%pcBMo#L7sd%G@vA>)7xpjL zH*?PMYnI@CpFi$as92Z?$ECrNj{CsUJja}a?^=?TI4(IY*SNqLbBCPqiZjLAAt$|> zbW0!E1-kFtcy{J{NUVNNt&#?jBj_j-S$uQ)JVRWkZeMQVRd5CcPzW#M$mM7y^%5wvvDw40t`73gWCC8aO1_}6H>Qb`L(2(v2&kRGV-QU4R z8vFt#5DO~JN$<{Mlu*hepx^jsyl*YMB1{?h;TPh@l@+RZn-RP9;z$_4IvgghOAox? zLm~JJiWc@ga~@I%+cN&4t^Rd)EamX=w~5qzeK~+;ZBu>=N%GtE>Rfa=rOU&L^4r7F zZK9GCfVbY18f(xu7=f-54<&HuRQ(Db6dsBEL==;Y^Bc`i2UTE4BzN_`?OB@{?zXSR zGu-3Si%B?4>D(EXvorBWqXERhF*mu%Z1F5P)OPI2asO1zz~Oy;=@~4}ik|g8D$XzZ zCTb^`%--5>=Yvcy4~EwYvRx?U6ar3ZTq(=PH4|mExpAQ7PH3c3R0WTzArZK#QI?>Ol@Q+nVCFDS}!f8 z{ng7l?jJ5Jdtz?gZh+a%U?`v5#+44l$xUN|(|A?8jwPGbFz1Z)4#PWk^VmS4Q!R0mM(T{1i-!y#+HPPJcR zbH{@NBOLb~FNqd8QluFa&A9AjdNE5{)e`R%uZ}oG{nJCxIcLZcl8*828t0!VJ`VS2 z*nhP|z44Bz!$w2=thFFCT(568Kx+EFAyoL_iNsa(*jO`UK59`7Anha}LeJt~Nt3{` zyo{R&)Pb=e%?2V0_!aVUC-yNb<*=maAsN-IxEsIH`t@78&pgfjh;$~GR`=XiOOjUg z__8Iw<0_T_M+((;l(jBy0Xw?H+wsmqK<}cQG$FHp)bbhfQNP_-#-=h9hD+`%=>jFf zVSlNDLODHZ2qOn74$J3sr@Bhsn3uH}f~y0RoD~MVfAL@dt0WqL;Xp}2Ay=SCrBwXu z>L9(61H}8a6f)Biv1iueve)lR+uX7}GK6Lg1me010yREdPgW=(^ge>K@SoKkIU)@t ztES#UTMX)l*cw7U$}UrV#M<(9?5|4rz(sR8Vedhq+Cy$A!&z#WyaeSyRDr7YOm+eQ%f317yEN;bIfF#U; zzI#Rshr|k^{AcpXz#swPmR(x4i;M;YMsp%WdVS24#)rcU35Uhi7R3`P7%mj+B)#j3 z3hW4P9?)Nd?TcOdzg$ocqmQBf4@^*P1$G_~zif5a??^bWQS5Pp<>ezy*6{ZSz`a3R znA^yhcw2OrFh;E59nLYpdP~xRnXka@cDTE~xcW>)&RQtl)62-+ve`%@{uSP*w5*h> zozb1xGlBIDd2oEks{&ZWltOdiel@D|LFe{zhEtQxyRI&4%kc;S>GTgwjw6vjvZJHz zIsJ_ZGCMGp%}UHKLqlV`bF+y>#18ta^h@XTp`+v{5{N{C52TNWv&6}ugJJDJ6@x+3 znET%7i_9#_X9Z`fGUkiYcpR+Eu^)w^t3n+%v+Z-Y^Z<51JQ0&aNKoGV2Zm$?`|JRe zT|Hy=;BWoGR3Uqv9KNDKb^OJSB2u_$*!Xdgvn&D1soH@F$!{tniT#2SZELJ}T;Pwy zY!#UjZ#gR>%#+3A+Ge}z^zU4q;kD@;0*Hk;Q;JM-*4SWX$Kl7>TrxV4Wtfx23~ zN=U(>=R!&#!t61V=pl#DevP4MhY|3s#q~%fH1ou>jo~B!}PJY+7z|l?U@WUZ(3*kn8Z- zSEb2<6v92H9;Ct;ZD-UL1Z)u{B&7{`U>k09l`p|E5&jJ-R7a7CLvF>yJ#}oUb5Rm; zzH`R23<9#Q$52JdZ6B_@Mp7=C4;r#I`VZYtyAyEU=Lrf#i4ZJ0p4)g$xX(~v#gP@6Qe+SWsts_-aTF*ni5N z^nM@0Ut@t6&i?;o&Dxtd^h;?_XYt#&{m%{SgdO&GJ^zI5>yZA1>3gXw=7|(q?vDc* z8~^cYvw-{4a`m5&S6g33Q2z7h?{_~}{%!R7$3JhZ{sR5~`SJtXzmEFn$4@wHuGug< ztAth&PQ|sJk-WFs7zMDEe?wV+er<96w+L=b_6#H@2Hm_*`oSLK%_ZEK%$3urEmFX1 zTprQ9>4HQ>DKseq|AE30WrjZ-JuF}UHgLUa2CRJle6=AUA|h_bXsM`Ro)1Ky_al<}8~HTe)lnA3(6G=*psO>P%bmtk z!1y&LcJB9yu5R}{i97vggBI`^=nDNx4$X(;9QsbTMYpiGU=KHkEd(cYwir z?l*sIHTU(u?jgVjVUh37c%CUBBqB;s4*l8vuxZk-@siEe!EviV+#>0+{V}?FV7+*K zvDH@a&c_E4&S?6dp7;CoywqXv(a}XlPnN`(T<`xMfk*Ejb0FY;Z+g}XSl(UO*M6>D zvN}{!q|B!o2{(`&fBAR>>cK%DluMQYWpj9r;VDB9F!d9Ro!TS z%}rSn=cOlET-aX|QRAMUEF7cw+gs(OxH?O7fo55cfYf`G%8}f!nffasTqw+i^n?Zp z!X?zSR#69F5B2nt!`e1aS-L!H!ne}9c-d6LYMx%2oG#TrSY4+=D~BizbB54Z0;JW4 z%_|~azF^}zY1t6*5zB83mtL}V9^KxUx_Fbwt~0yK?D?TGI}cp2g)Y|a>HE|pe2{&j z`B!5Ddhb_mMK~J3RoHp!lZ_3-xp>&f@Xs&VU;yk64aH|QkN-q$>)kgomtG~KTw@c=%+606yXu!Oq0A6cf9n^uT%ZDiYvf#Uatqa~UAu3^M%U z37$^|epDt4fkEr1v%ELkVW^tTNTwN>!>^dMT!Sc)CSFfsW8{=8&P>out66|R%af5+ zPxTNzGlkb(#yX-lHA-`n-t_uv(@}&jN2+z*c=xISSxDj%ps`(0QWB!&_i5E1pV;lt z!U(!{<-E1&D-m*+OYPvI{V7Jf2zJ{L!+7BA(p zzwaG9xiFKz$o+A?`f0KBkdqYtCX9pWE-giS|Hm5p-PGR$>5H}yo58RrQMDGg`qtKG zA83?#12dsz!Z7PFfZtK`=8ivtIn1!gH4f+?F3YosLKIAP~smY_tC*w-yPbh=#&DnxF2U@izbG9+w3sI-dxwaaAnqLS^Iz!po1w!OVqoY*aOuph0URdJ}A-ZSC# z)sOtbOHvl9!i*M0DZLzlyG^D8lFb3FwZr5B$zfXU?GE~S(vnpNiKF8w`8o;S7J`sC z9!8>1HYV!z`9(vT!{49$BVACc>km&KHN3M7QdO8z_?(7`h~-E{I$utxzpPVrc9IBo zvgqShnM`GP=z@N1@I5m-I^0@vTI_ns9nYmxTzi(uLxOE$t#V>HsYykv_+?l>oxjRP zD9!RhE3kaI#Ba$9B^m2+RE+)(Ae#UAvdmu4x!{H5;x3vT&Tm8-5tPw_qFKY)NxI-e zUeX>=iVq@=h5^~4Rep|Q?$GWyFpfj|PmyGg9N3)cw@8wMh%cei`E?}7FZCQp1dI4L z=3-cq&1(4@bb*Su$n7)ttCZiKH0g^mUhDt>Z&Xgx93PyWWvtQGO{v#h#gZ%nzYzpJM1_J_EuX`L7x1yc}iBP{t~61QFeHDxF>N= zXGbwpc{8?T65SRhs9lAIEae>y(S5$pbh;TeQD4F6h?7;$`eDDN}8I0S~8NIy&gy}>3UfzU}0vb-tprefH#>=@K8I=tGc;Z z2IBOLHhF(NGW+b~oW@R?EqwjLK(?JXs9}j4lSTs#V28~3c0HGy3N{yt^NU6_9Nv(Z zb*TdQ+D#riepZGeOoKC!j60?RRI^J4&b9$W7rsA*@D>Z)1Pc~5K(!{ulcmHWw?f^OXi07 zeuGk(UP6@m0wE_#ah1wxHES1Ff+R3_&7XS!8IHm$nW z)b=ww6-a7x#8v;ii%Q~u5%FGBka(U8s6NC}*yqNuP^qd;lj^+-;;hSBJGzi9DjKZ# zZd43tG(t_N!sE0Pz${s_95Kc!-0&#MnXDF-<833P`fm&S^g{(e_V$wra&&T%rgn}Y zBE&>=DwSViI2cQ85Q=^k#$rB3G~!e)@{DM=K=lqzeYCV9lQu|UU=@B{Dpb0Bf&7Av z2BRQgG^T42ZJh6Iz)VU>52WiXq7n!8ZCH>8MPX3uO0`|bV7-$>$RGdcNRpYPG0qs;`LR=_TCoFN} zzSuHL2iA~U z5!YpXUpMA4@)-Awd^tf3bT8}XOtxN&CcHpGc{i>;8LGH&?UW9ciEcVrxrE(|c%AJWuNz_G4U&?f*k%o<7rF!XAG7Q+ zi!$T$gcGpu4dr@>cYCh|A0?ARu`_ldSnihNO~8yt!Wgop#h7mx=@o~}v+eEOgha<8 zoY6&d%ea9kJT*p6k;t`SI6i+usv-2Z`AV(JhpFN~-&s;({)oSyuV0&ooDg0Nr5($E zY{m2eCa4@z&R!5kve8H9;*&eG8PR)AuTt`gp?GCUD;(u0z?ac*dl&QYOv%*khdYV5 zq2T==B zfu#&qOLp~;x7Pw}$b!$*7zLmD;vBK~m$Zzt2;27j9H-BA} z>T$Q%A4PVu(we5)vJ6FNuwAwMR7i!R)v}Y3K-YBHA4kw~waCOo&~V-EbS1~67wB!k z&r|wWluPnY+Jw-SHQ;T`NsMY^L^4kQ!w=-~WxauD7zDizy=vJ{Qm=X1w*+>p8S* zBc?&)()(TFuM9(*eBc`b>iZVL9I_{9j&R=$9T@Wt;P6!SY&Jt*$-Vop<$a-c%(Fw; zbB?*A0wEHOz`Onb(A43E$jn+^gnLY{FjRcU2lP=RN@SyH28bMXyJsX+k)YfwF-$$r zMgB;gIv%asQbuKj8MZ*@R34hjFc0Vb0Mv%g=)GBw$P+qN)PR^%Sp~p_t zur7Ro&0K@PdsX;O_-e&7+^X3jujpqRzCwO~exG1<0nPny1J8QSDIS0WCB40aCxO&gbwm!D5wIJ8e+ zr#)|14X{rW0K5!A%9+!=0hGSf_lmK=E8ZuaZbRtAcY@kNOqWnVwC}B@o1^7rxvb+L088Rh&v%zzz7G06dkBK+b#U`ZH??}39u++K-8;!z6@1N_) z|8TLyx(dqGI+{B_^?FgNe&{Z7eK=Q8MiKJ9>G<~M+JdXL^wzu((Fgoj+gUXIZ&7g1 zp>!jZBMZ@F2P6{C>?HZF@035^6?-Qp6#@x~feI+~0>=dgc|ff(9v(q9?3tz!x1W)8 z{;=z74?9t9jKSPdli)RvPLFn$pK#?8l}}8piwP%x7_}a1B^jPF(}<-{1JW&2aT@i8 zmLy!;J1zRK^!S~iGd#}8FK$c-`?@l&q2?u}0KfZ)Dr&z|zb{36B-C{lzE7@QfJc={ zQ0%`$DnxjR|3xa9AXBwP{GXW0K^{626(wh5kMLyY0I{rr$JyRGR&O&icWVuuwwXQ2 zaBe%9tNrV@62N-*2Fc!5>+YwDiNszYq#siVp>nZm(Th40ITVGpuM|U=?(050r!9AL z*u2j;seyvYPii1*(Cr&5Fv0 z-5Xtsi~lGY?6P*@D>6D;$`GiSaaf%e`Lht6h1j%< zUNX$apCyFBUr3eylE~aY~G@7t8AIhH6nk&7+)^{OpENPwk zw+JyXGJP=HS&VHU_`Ok`$d6?;f;`6rY)mLn=}?2f?}AV%q6u?8L8ZQe?$V@-d?z8=9~D5%Y7+Z)yNPbzBvgrm5@aS_Eu+sy1J&+2Ym%?#bTg2AF5SUz~4|t zUOmi}v_6j%&6Oue^yI`;&IoHXd(iQuMG0*3x>#rziEyYMCTLPUhtf<={R8p5_<}Pu z%pzFuDTi|B?W1w)n-4h@U=unzIvE)mdsG}8iAbJTlEacIg`6C(x#r%^tIw*V4!}rt z=Rzp(JBm9x>Ru(OTdiC5 z9FbRh1CQ|Uejja+f?ST*c^78q=G>njuYvTr`DH}|{Q~(8C@T9j)&hy8vl>Fm1F_9Q zla&;SZWb3ft;XEOjic@*!!+>H3%^s$3QH-cFy&S$?3Poc;mL$bR~^B%>aC?bQF`+v zte&;OEgb(lGQ0#%`{CxZPS)bXee6otq4>14BA5%T1`mT7Tfhs8SvP9}PwX`X_~N8{ z$tX=Pp3@EuEm@!KSP!#d+!MNrn-aL@xAwRqzKFmdpAXPis5r9!Odj`90(1RXRbaW@NjZ= z%p|@3_=r9&N#;USze&kz(Mgmz%}(;KGW1W&RX~!xy0z7fheb$A>c=I|C$7+fPjSBV zEH1*Y)jn86mxUm-bay-Lx$xY0f3Vbef4n^J7@Q2GJII+z?(gX5G8*bt$@u@e{5BMI zHqQpB%`#c*#}4^l#cuslCk}U<+9hAVX!Dn}wLP0H*V`FNP}oj-GT|S@KT@a96deuZ zDs4r-t4ghKF@zM}rLge9m%5j^Unzu7aysJuvfGzy`Gl_VMpRnQ&Ybopz(m{qncBhv!!B~DZPSF9I&K!wf6@o=A<*84}lp~X) zBV-ch?rv;%{+bKEc=1#9?5kQKl=Gf*pj;rsj$Uet^VM!wR&O4DYr_-erHLuO)=RR} z{`KWLZeDX)idPDE*0;%bFiqUPG9%CT6J1$0U;0Bpq+3Zo{&i?)dP>03-Yq>lCkG2< zuk!n6#$(GgR+pm{EAqJcC6{{Zf{&PfR|HKiqhVlImg3J6J1v0?ZrfqJrQK+wsYG;r z8y0$b(0WU@$D^)F-!0X=hkq@~uJven7?A@cx!eG3?lt;0QJUBNO7)EaVMWDy z=|*EI@YoTPvJK%p9(^vXpEOKV6oUso); z&i@SLkJB!>PTJ<891Eo?H5ept-Nfx6Adwz#nRhRi;}0DTIG^J;V~OBuw2upc_d^|^6CaKwJ)mdle1LH!b*w}}$#>LwbGc+|$KcZ2>E8s1_#j@64H^z+saPHQ$W zdU)^VTaimE2s~eo6 zDF^g@ru?1Y9c5RT!et!0a-+sox3?BX)HvVEW-}@=eE%UZO0sfQU>@=1D2`=kj+MBj zuP@66@oteD(jyzpmC{;jp5Yuwou7fHbkmz;kZ$ImsQaPb^sdytwMw%DJb zvpAl|?s%=+aVDBhnmASxr{=xG(L}R^N~NDe(HkX;@#^Pv{*12^O=M)P&riA#!bb5k zrYl`D-8tTQ>Ys~f;bA?w3?{0aNeEW3s~_AR3a8Rr%Y>1!7e40)v)BeyruMb0<<`}F6!`_eb2>P;oKwF(>Psv^yJu{ns-`A>iKpHa_ z%n64J9_FIT;4>YzRyGj;@3GNw*A{6NiCZ7BrYx{o$mW@Tw$2J|zDK+*6m^%eahc5U z1z-JWuQF~}73Tj8zI$q!O7y>RzEd(8(-{kxmQLs=Wz8)^^96o5sp*;S6fy6m@^>!N zyrPfb3Xwe4DQ<2^vq{kgY}pm5@SD-m^BV3pOJnG=!-MMleVo~JRWxGRMuY2!M@pu^ zTUPYBf#rl77BkiUrEabt$;wARYM#n>oj~Wcm$$^{z@?V6ov7ONilJnxNps}sLQAholL=4JRvZS~CCxWD zyfDvdw;OwTbF5#b7HSI&WsDRM*{J7j8E98nf5;i%I}UsM*0RyHhRegH;d5FZ)Rp6m z@b*_-SOth1%PsM&UF@UHFh&dOi&CrGU06o8m52mi9nCXaOYoHM_KMy?>Wp)E(qcC6 z)_Q8o(N3KT!@KV_Httx4O|?>eNbxY4>PyXHOAD6H!5dJvK%RaI-scJR-gM1llR4x% z_HQhdHb_%vKKBo{sgFg&PA6r%>Tj$vozvcHk_HbMz_TF1Ak$K7+ffW=@vGclSpdKU z$s$jM`Q)KqG8Kn>ckxN+vb(~r23mCkh-R-+6U=sAE1$hrM^l9Ol*HFK18s5bn?~%9 zu|#>W9^>DC`?{WDeCBC2@}FL@n)UVS?Ck8~LP)f{yqx$CThSNf4t*#X?R`76_R#C= z-NB0-KW#eb9k!3PRG1!X#X8wOLim&Yy^mEQpH>iD``}Z#H4(pL6F468E1m~X}h$0+qZ3(Zt;$Y3) zr|1|OY%BE+*9TSBr__HUWJF2?=49tgXG~g#AD<6y4;IQeIDT*H754J1OPKzw9#+%4 z?#n5m(?5_t@Z9A2QC_|liu%Rb*+$eaATSVkA3hOXCi+UgAeuNQCnq8s@n!A2CFoA+ z)N(xp!Q9=vWU-h!g=Sp4pmuV4Mrof2O$~-=opJNl_V|wh#|shXi6|vvRC5=(%m2!b z@bB|~@q&j9m}fdQMTzGuMtrE!{stUrk6``SlSj(E5V7=lX-Ivah=pOwJY!5?SEHMw z&ei%zu9}1vnHKF|JNfhN&Fsx8HK>$Dlj^$Y@ZBaKm^m&RHZZFzFGpr;ImYBG55s@o zX7$@vXN4j(Ne88S;cRT}*2txv9~dh4Y(|AZ{KXNSZ_V)Eg1P(|7&vb$Bxqf zy!xI{AKpQ5y`IL`RCn#=g~#;c_Y4Gs1~#I>OwvZ(Mr&|HpX0+-xeQtCQLT4SNo4Bk zew=g+Mqj6c1{+`JTab~D2Jz6FEKXy_ET992n>wR?iM+g}#wgzOrc`4&$6F{Jc_e6= z&15kav-w!Jr!Cgp$xdfQSa~@@LbY$`sIrg@V+xFj#i;*D^$}fjEmHgy3Zq?bu}f&v zxMHNW&9XYWmc}Q&!$`WU0#{$Q6njalIU7v0V zNk35P@atjNCf`~=PckH>wb?(?zn9T?MU>V!MiLN=LHF<3+=~|{kRCS{-f?jlPWl1y znAI~QQ1XdqmwjB91%+~1Jzaq)^(dN(#tQA2Oj9MDwU&5|!qPcgIa(nhAW`5NAtBj8 zW@6OHz2kIS$1oRSDV-2U;sjgj2s18qaW%TAY5W5l@yL2cE^GEFYV=yO`q zzRJvN_#Kg&SBCMm=0?riFVQI|>K$JWAJ|a1&E~GvU@`FWqDJ4Xj!3|uFuJR_OEH1^ zE=qb0S*$mk^YixbqPT3c#Gv3)oOoK^U*1Iwb0ot-EaXgm+t*r>u#9VIdFX4KRU*I)3>hT?Hw8&RV`FhRqcovlN6B_8F0ADwD_J$5y9O@PhVui{yV|DIVDkIBK_%$KCx`1Ju2Br8mW(OHu0{)gtxo!36i=SkLBE;^Xm zUtY<7G=56)Mh)|Wrby+Q@zxm&&&=Q_f)-RrbR(_B2IiKNPLeAk(~Hgt?Vxk46+X<_FG2wuZO*;9by&3THIXa^m+&B$wMUbnI>v*b#9i5&2@Hl=5eX;JG<(JhgEKFO{ zJe|^1_5*!qdZ52QdPR>ageb{_Qfln>$TTJTeqfZ#KlbH z*x2082FnVp>njd1+emGm9qC|i9n4Q22aSq^)rT$Hw*P2EWMrgLqBuQb2COE!(jby;D;B_A z!2$s&|PuY#@Xmz!%2KRkY&hqLyJDF%sg!i4bc1F#Tw9v>~ zE7R_OTW9xekE)qji%WWkaK>DtZ<1w2L0)z?`I%Q{UO@?e>=HU%vd_Lj+P`NboNIxz~8y-9=*_)qkt|`mT%p6_{2%n z$CD=xqbHIc0czV9F%0e9WzNPuhfbh7xKcvBNsLXSk;}HCdps`W*ufnu$2AAr+sDki zuv96{RQfTqHsg*cD&tkgxi#lrK6=TWE+m`IagwYkDM7haAo_rx%&UPY6BuK;%q@$z+KBzx7ZD{)1l7VACX2?zux+RCl*EE5hxy7m}DYkVtSz#RTuD zxntjoQ5_ovxJZQh3X#hTax&O2mspe`eD#*^tl9^gK_=O^g4#oMQYhEt8lx^R=gMP4JIyKzI^$2V>_s>;=?dLBUUXP(!|fv z0+*4Vks~mdmaE!n!M1r#l!f>V-?$QqxR_J9sD8>^>eFDz(p4jje+BlTQGe8YG!^HM zs?VL52(ng)+I?zuoVs=EH!X|%N*y%>jm}#(jxuCn}!v>$flMgI1q4JEhan7+Sgbg>+xAb#6meK-6jhT3D4_tht3{#F7KB~&h6HI&G@T-A=V*3PV1%tfKUsqYejz`A0y0m@s)dqnXm zl#wqmckyd7aK(?)N@O*8ujJ(_KU>qYG(KFjva)lz{ai{1?T-lp@3W$q&?Y7O1TEIB zRUj}eVKtuwblkQ{J@LIaeB$vKUVNF7QIM0#jXIC)?7U+90KvP*^d-xeFPYxMxR-^r z&Ph^dB>R~*vJQ7%$}n``kQF<>AJ(Fpr@eV0x_f8J1Y&!i1_S@Ma(JNPca01kG-B=d zLmQU27o+=g7J9mpdWIm05ka)#{>IpZ&R;jZOHEI7kIzJf2qkWnJ52iSo6xuTDHZU3 zDRWDek!C7{EK_xZH!(GNar?!eOF3he9y1jpKi$CBF7k5UJUb!k8JAKlSVt%e#~>X` zoMA#{E$C7q`{plO3>VFW%p|f~WALhDyauj1Fspj<0TNPZ;bp4cELA+AkeS=pb+Nm- zFbrjdh7LbYHEbQA`+K0*z?I8+k_R5**YtSb!cZJdiG_4Pmshqd6&R#AGH1jq7&=~rDmuy3e@Zw%>o2ZReJ^+!Na6v#@4lw zsoseJ0HuYCyVT0kuj@K&{zvSb-I&WzhjYCu?DzdXg^9NaOA^Dl_glH5yW{O8m^clUS_1S>Rj_N63p5df3`Gl5Bd z;4u|!H7Cm}D{?-R|0CQMfRgUi1zTX{ZSrn?YR+5~+>rrqAyjeWnT zVC)Y$Mt*dc5=wyhC9tO9z7#WI1T`-C`~Qn^o0 zO#QNBczD=X>u)3!(zZ2wPHrGD_M?Q}Go>rrG|tlrHyKrjz-{G(2twaly&bt@ojgC) zJDgn0gLQf11WF0U@r(YW$BY@=+N0=C%u3-S$BY@%tyYn5I1CoT@Fch-Ef{4rMHZrx z;F7f9HKd3_N~OPsnpzaf8G;Bu_z1tz;16^ejPG0HVr{8vl9QzcO{KrNru=4S%=-Nx zU>MgC?W)_F3R3^w^krB_r0n+LeHS0Tmzo*(*RQ`Nb9WM<0RNkMW2O4io3NG5MTG=U z>{HjtRFL`L;JD5mJB7C!zWH_vMcaq;pQ`$udPPS&^!N3PzsRW;O$Rph70cy`H&%Vw z4%HLh?#osGyeW{=_O&|o;Y50lY2$AxD0p*aRgdM9OJH}%~k3J4kW0jz0mWpxS<`*PKlHw6MS z_qyFXad{sJG`)2K+XqB=_=y;thPtJ^lMh^csdPVEwLT_TCTuNsEl20fT($Smjs+tZ zTrb@gs)MRoyZ_M7-;A7pjY|REj+E=mxKZcPbJDiBQhKMSgw8xZXU@94ziwVMWyxix zEGLOhtlgcY=7NHhyGIuHZ;x)i9ozR`bLmwcEveA7e_Km(e|GwENQ(**8a=bD9TXlO z-l6Bh$k-fO;@5g)A2+rTimE=Wdu=Dvg7gQ6r*!Iw3K_QbdSbq*Q=ML;>MN~TM#3x48QcBK3&^9L%_Sn*(G0IzmT-{84h7YRcP8rX@)Up?r&LW ztlOD9;o^7W6piP$NYw3jhWewZ85hn4Pr@~0d3G;5)K{)ms0ZV|yPTl$U6gH^Qpxm{ zMMGI*20o^*;L3Gd5;b9%5Ty0&%L|pGfQp)ZK-m_K^bm>enxo5Dg*O{ajsEjIS*_1^%$WMq6Pjk+`}VHxnELk* z3(j-t%a1-}$~W!(1-_>Cj8P3NpD2T1VLz~ONU$W!4ge@>|EykN-3L$k-!IpS`spE- z=r#yR{8REDCth7SvQwviqi1bAnOs=Z$A^!D^sS~b9k*xl{Ac&Das+JU9o?*Zvc6EVoEOMRc(N8 z(Vv*_4*$k2+qG}sx(TNUUDRsU4t-^4QLpGXYK99juA27k+v}^wutaG!#6W)yH{_#- z2^g?&_1bmoI{1ibN?5M__v_ZKUE9=6KvDM9=dD{ivoq@oV9fgcKnSq6qUG|W`w@H7 z$p>rx>(i^pbn851#Z{%@&DT!zTdX>jI#zV0^IK*Yg+4<*7G!%{ZQp zYstU5Y{!ihBoGiX=tJr8flv%fJ>R-m9qrU~y~hTTUQ|e|&t;!{-8l zgLnN(Tn55zM0a9^Iyhs>_J6t6N2gy{Hl%a!Z%(o62rVpkQvnl;7FJX~{``H47S@9T zIpxGHEc)rj;p4}S>os!qg>-z5S4~7T{@JLBiP|1ihSAs5cT0L=Vm@8I)(FL`+z$Xc z{W!iEQIy1`Vldol-U)R6{UblD*`b)&WdyCP2EG-3gvg?g{IGG)MSZa{$_hH|kHr(` zESx@c?5fl8teuRBKf3*5Ob$hxOFdjz8K>s;%3IS+%B?-ijvyJDPCLJR$G_-1mc*-m z`||h_rdDVr7gH)f?#!xnxA0HTnP+=8oPL%=37jj3HZHcs!?A9Qw(Z-uZBe(#AN(1X zpvpIDjh^FMH^L3nO=(qwzEJ3^<{dSp^eID2Rk6%eh|E`+Y0tSwY7>EpPXnJX#x==F z&N;pCv>r1RBH>;Fcl53xj!L1!_dUwBt2a`=!%Z@AEgHTrnw8}&9t;!GJisnl;a|n_ z>Sc1Sxt*J<$_<9^r-gI5Lv?V5UA@T)zm}pPj%EBE5NSF_!&}VQO$=F*qfe_$DGI+c z-EC0py{JoGm%E#GUv;%ixmVuCZUN>*aR#Y}wa%IK6tIDu_{JzT0X-gd1pPyaFE=;r zl|{xv63}gdVut91SlSeZDvZLbO09WhQ$eJeh={q^pR2FR$oKZBjXO_2+yvvb4Wl)b zs0(C6zX*1}zoN!XzgG2-n*6x9o3gWps>c`47SCxPJ5_Oq0Ps$EzGK3~y(;UG26B1k zlZcg^C5g2&WlO7c9pX!JdBi_Y&6d_3vwE=FbBjmQ8s+FGXLqUg4~&a?lSP?1`uUO| zSUIn5oqfz@0l?cp)0ye)OHw^x3FAJ$giX+AOXSJJ8%Fx7-J5AzmSM>Ao`($^cBgWH zi#eB|4&yO!)&AcjPwbf=s`>7Uj=OZ>v076L82n~kAhaN<^}Jj~0zpE|pHJ9RO#boc z7X<==y<1iE^i--JDY7S5?`2RPmAm?J3GW`pqiQWzR*e_qk_*wfoP5e!)@xLg^;lvU zp?|GvWLLC@3CS{fK_UCg7L?qejyq9^5rwc44EpAJi7&yh68H$s4YnG5gsLf|7`7T* zJ6jDt<{E;Ic@p?SEWsX9q#AU)&z@Z&*%(P8& zdj_aifdj9t-nJJ|Q-=n#i6lZJa*TDOu_Oi&%3@;}&F-c*);*nnYT=(x3gmKI zza|Y>&7+1WN>(;RRRZbknKP&%0)YTE*rEig5DSs)5C6EowmXLN0glZLR!yxLeOEKBfZd&9%)NRG+RIG-6+PqJ{NJ`9zV27Zw_+ zay7VxLO;Dv%)=aJUQ!9FJ0mHYOE3ogO+_$@8ISb9D!#w=+e1;{;HAodTKhN8Y*kEK znS%W2zwc$yo>hA4{3*Tu@eQ7_9VMcft2`z#x0vu{2T{BBd_xvR$;nB7h})nFWQCUr z>iLRaxQ_p_2DOIBDwjF?X|-?r8qG*oWLfQ76jo>S8gxCD#JU~KkG*H`R#RH=LjdAt zly+P$G;qCF;W$Pof10S=ua)r`zTq&^+u;qvxqgv5k`n%1NC|IsDny@%VW`4dTc|`F|WT3=KZ3aiih`Y zUp-4BoYK32G~@7wQBAvigYLUrdpFGpWy3NlBVC=@+}+<&Ah7iBzFGBoq>OaMu%&RR zEWgZaz!r~D=AN0~&=Gy6IX0YsMpX!sM9|fg6 zNdFr;?bd}`oE3l|M^DlC3zV3A8S@WvwGjxiUf#N@^iL_gel0cw_07?@60W6u4KEu3 zB~N~IIf@gYs3(6tNXVyXt8z7hxfJ~{j7?z80Bah3p?G@tO%6(s%kgVPMi|hjF82bG zNT7o!JPGuajwOgzX_u-sz1aX-FJGkOU%A&rb4m`4`Hy4eL-bhPV7WG3Nv8Xo-l~7cWD%R4bGDP9J zup%XV$2bJpR1j$fL3YyPGRhV_l-!{%u&dz8{b=X|qPa~V_eHDRC^gZm)l!6E`f?$v z$SWlP_!v-HkGOL_>ZYW)vo~I3i|yRpxpM_H{d~uSZr@zW^y|6~tuLjAmc}-Nh=>J^ zxz7o_w;+|5@bJkyx}^X>F{slh$Vo)e;__8mm-v&yrpAQbKd)YiShM}`;cbh1255Z{ zH?QtzEfAPF1vG4|KejM>j`xt_P0g}WAES>K^p(%U4nJ~dr`#CHCJ2n!tAW9tXvZdhYF2{e7kX!(g{!4cEOLcyEhJYx0RUW zD}r-mW##1+q~kBLifCAwdDxc54|%2?GOZ}+OAGphwrV!#+$)(p>FT$k%@E7~PAMQK zt%k12{-{1{X!_F8+wo{QJ2jZSbM4d)`d&>+>rUUl72j!AuGw+)&{oxJ{ibesUq31< z`3_|k*kS0HF+J*tn3qqI(&ci>QX0U@wDojCe^cXctKPY5aCXCyJL!zH*03KJjOo&# zL6@O()=zKf#AH7_wTYOfh|^V8+6!#I={si3(6*=nf5#`IEQuBQ33DkTt+rx#6A$x( zY(?y!PBRq&u^3Uy1)IjU@^djaEkKhfkFu@QYi2DC&H0HelhLOUj}*5RDOK)S&F)IFCKk;bocAX z-c}KHUGS<&jk$8Yh!w#wO_U1@Th7>pWk#Weg};X?7M2=FY|N_8fg&d9@4XvTVbhI4 zUsKt!Ly9l&A~8cs)v0*KXZWh6-D{Pz6;b)wS=j~V9!-XKFR545jq}kNlt+yrs=Y&1 z=pWxZ$yhm3d;Dt`KPh&`6xn)VFDMr)^bmw@K$l8%e`c)1<~Hz_%QGKdJCKh{zzdkH z8dO=x#Od8CS))&-+yYwcSh2&@`R&MLvlmkAGG}ARNy}AiGH}&4WsET;Qs)kX+XtZQ zQF)B1xl7evOTXR7d$)T|J7CM(ax%EhnIkd^Dc;$F&Y zFFoys*gJ@1WGd#!gkovA;HHDV-#RZ;EiU^zLu_BQ$CvdyM6&EGG)N-b3eCqZomz)R zS}n-SCZnI3hsM4jk00=g7wJl-484}gjb#`%Ml)%2XRaWARH3hR(a z{IYRAuOV|cDJ2l4(cdzqtSnW;OohFx)j>Tb0y=pV@hIb^YAZittZFo>QSJV4UL0Cwc~;+ ztt%>)4|Yl6+b{?^gE^HlxaM3Ef`|{QS*KFf?)N3yL|HO1RS?0F))zPfCYbDku3R`5m<;WK+S= z+2=FMcUsME5{OF3$b3k`P$_BG?#r=1Jt6in0QfMu`1A4q;xiMUo;|vwq|=mFZRuWj!2Cs_LiG>gUB8`snv(S5dgQJ@(6=-$Q72A)>Q@lcRN~{)HyDMa zT%MHlP}XqToUz?Iv>!NqaX)cdPA;lIV(D7?d&!>q^=5ow8SE@*6b$2C)kR#uh#V?} zd^xjAu$e&M8@6~z^FSAgNrAvAxDmGVwJvWbFEEw3RBk!ytA;K@fqm^^)4SAkw>D*D zHlEErjVi>4NZ9&lNSG4|+;^^;avIgxnvrVI7ZW03ttFvo2t_HX(Q1g0R8uPbHKwUp zxo=OENdxOUn=&akHuetd7_JPfX71Z$NE>dtbZA=H4hK~`KDA?;4qSW$%;3e>(0o=# z!%{}VV$TR#A=C8ZqBl&{Tf;C-7AStRuTA8kwS$WeY*t*ZEt>n&jf4Wq)V^Zt(W?*r zw)uZUdEP%N6t|j3FH-Uu+RC%R;Kj2vt96N8Y425L>uL2+Jz|#Fx8<<*ILmBM=eqW^Jm=XTv%+y~p!VTo zkIEc9*vk~qkG>zqO|1@XT6UeZ?`{Sq_H8%5H>)xF(&B+^-pU)P=rr}lO7@JvMUG*Z znp69S*wf6LD=QQs#Ksbyxvz z2&Z}dg(&c9d+5+X1&0o`Rr~75ZFZOc=z79;(8C=ip{5J zkBU7x`;UtiUJ(i})*?a8APZ|;_we?EG!_;IBXVxucg*ain}0pDx~+5Cog=gR&yHjb zDn_HXsoadG@}HfY&T6%T_Ka^ju&KYLK%V&T=HW=6IN;W*`w|aZF1NTG{q^5B$}J9g z7#v^Xnn{}o&}?zHkt8K1GFDPQifZVB-^k&6RB=EPn#|?nzmBacjJvXR>VzM#0gz@F zFt=)Ghw2q`kB`N-g7%{#o)yR`E3aB?kTCkd^zLNlgtu$euJ7veFY?iR?>kv@|3FWd z!lPqxcf#8ZKk_t3E*A&Z@6YBKbE_#8+7D~V4&OiQa_H2)2OF0Qt?>y1j5j2+NNbE& z-2@O@XQ=#Lu*c_?zmpg=T*KzK6xEtJuf30`;LWAY^HkGSack_v-IKIHtJBAfZEDw6 z8mklK8gpyqiz#k>MNst6C<80r-aK6KF>y=6?fO=l)SBAAfs-kY&d3f8YRssE4{|86 zUyBjs^H;~x(`rca;pu(Z{&wovu2tC3m4C*vp^!$@D&F84g>B6#+}IO-nqEhv7OA`B z!CDgAspp!juk+=mE|o(=(6Wl#HmN5bl!?bz)^xW--_Wdl>Y|Tf zg@n6?gbli95(%nOH7AjbvUK!o&}$^N9$Wf{e?8<2KSwboH*>67%ffIW3}Z(mY_udu zL(rE2t{SnOMm2V-YB&k4hFB5_F~gKff6J7zvQ*7xnWY6v)IRUzw5UhCThG}q}mqrJKv9P|yP51l;4Ik@4B@OsO zwJjjt&Cen);i0|_`{-*+X77EN&H89zYn0fvYExa_T4ck(fG>1Ky#j#u3>~*;O25v% zhW+n&hK{E-L+tq$eqg>~&WZ1m{S!~1pZ{J)DY^W?N`^{_sye~bcJc5d0Q?%n!L z`6)_YEesp#*X*TpPc^@7J+i*RemKZ_-8-f+RX4iRtUG1Sy1-81`kG4!mmG zbRN8ftp*E_YR2^L7}kYUgCsh%={$f)u!RtbejUSj4QYp}VH-jUAr0x=rhQ*UL*Bl> zhMUS3{I&$P@^dnwvTpC2b0C3~DSPn4_J3X%Qc{hLC{3-()u>b6rcCeoR%RlaN_}}A zsfcot;K^E8P^!NwljY`ezZ%viD?29#Yr1rx>8Jaq_3p7?|36RD3Mf+>pW0n#@7Ojw zjJGY@?j@5Z4f&G0)eJ+on(wZ>DUj3lwK{2-DlA3BdM!{I4}_-d&8V8Q9hw+#Ufs-N zQ+2>F*6rqO`rp7NUZ$@fMPZ9re6D@<{)@LR?XKJ^io@QF>{~?B$`=Ack^V?pB_Qta zRlJB<5z+Yqft0*~{xZnJR3ON@cXSyW%8RD+qtet#xGb8rsp91`;^@8AI{)>dZ~nr&Fu8a%B1uY8ZtYcc=gFFzSVl1qi+ign84T01UU@6Iyx{R! zZaLt%ToKVZXpI+hz6u1UVk@FF4hwTNUF4sdGvnyfeA>S5u$|MtaG`OSw%H^qTk*iF zGtim07hjoB^w3nQ?~Q$Y(Tv~Ad4rLU336Oopp}I_2Kdn#**UQDW)i!#u3Jf#9xZ!z zWXI*W97r^6FN*i`ujulF-r>sW%YJn2Q>Za z;K}xLvy%I#GnI)}CEHFf=odr3035Lwc_6YFQ82fy$ki_hg4 zE`&&+hKyt-kN|>6^lcYL8bYILy0mN8cLu2j7s6IE7gf`7Fk20l2y54uGz1F}iCF`Y zgt8%T-`_H&tmg8yqTwWTfxaEZoR7Kt>s?uv;TOkgv1vCp-$;x~n}Hx%_}tRQ;)l($gSHb>e&{hEPJRPUn*qgDz0tB zuGVD%Ib|5HK@-9PB#K8WbyQbzFaMQ0jZT6S*d=w~ex2tf!9Z?xWuzM~sCQ^=6@NkrdQRY>K?RUe6Hg z2T!e{hf+<$N~?}mJNXJhCr3p;U|;zE;PSRySwr*J@E*ex6k56FdO>2O9-aZ&QB%}-0vN`<@8YF{%X5?8z3=x^8aSr@x1R)~LZ|zV;obYtF$qj1sylRcV|ER? z_np+)+*18-@`E3|szHOWB2os;+_0h-vJi9= zm?ky6By#zS$0xbBmTZJ6O5|BJoGm9l1J5Xtxxvxk7S`@d*RJf>Tv!D9)r!HbS~Y9a zYvi2ur(+5n0$PkWv_&KzgH1(>M_NUSKg7GGt1I5o+zd^C#1}VsuW0kgqA3YzZfw30 zM_C0l?!=`K43F>24D9hu3xt%foirukTzo2J>-q&gk;{{kiy5#MO=vQiTXi0`_~2t< zV2jZ!w$4!xXe5`Xzr4-8C#30fbGoBh)P2r5tSB5#NfBNMaq9ODy5C;$7KH}J+-gb# zq#pD)HQ~PMmjvACiA1`8cV7f(4qRHGx(OhVF1S1ePuBeJ*y9{iTYGCd=kf2$HnR2= z<3X$QMpB-@60go3$9`9?PA+`4OHUZk zWy=dymgex^Jvag+^Z_(!^dq&SEAf zB_)#)JNs8GCwrr2t}IkYWTvF#C?xQ2trVbdCCM_E3hp*01(``{c_ucV75yb?X=<)D z1`AP26d;Mr0$mNE@)gyjC8ZT8s$uwrC?xXI&^H@SBAqpD5=y1NWk*?As!EJ3TXz58 z{c9VqrN$KLK`PIcKRxyI+WKoR{(fQnRv0w9N8YFd$<=2a=i+a$VScFS)5`tC1da{o zDkA`~0d?B3+l`UjqQEccbBzjDMQk=imP9am?vCS2ks2pE{=1WP?7^?;$4xr$$O5$n zr5``Oyy~r$MF;hcu>}tw){WwArYwEzxI$aiCrf>=;-!${^mJ;m1X8>Zo zBSD6UO^5{3qSzozh=_=dsAgi`z^%f4WN$f&UH*7&x$|d?>a~9CEYga zj@qTslH;?gCm$GP)P8hDqh}~7O6=DKhk-$`bxj(-HHKvH+ljsG#D3_QNV02(0Vk{+y>h{X>b$XU7d|UVBO_ z&6%incH9`fS}lU@w;sxiW2$2J@GFUHRKKczf~R+XR)4z$0A+{RM;SY6V|T~f%fk9B zIL~FN^L)pIiF*?&Pr)B^5kK}qqIl;%ozD~2b*Hn7D5}t#Wv#NM=X+_TohaTjZxilQQa%v+kq%eXJHkrF&LIY>h+~|Wt z`+R>Xfw2ng^394q0la5>!-aSZ)FCmgv2rUC5|&B3n%=xPWWpwMbTtI;(@q2!#zR*_ zrZr;Y5)6Y>80rt01=l*@}2gLNH6@xo{IdR?L3;#ZSlTDdBcvP;} zVdU~(HjJ)VTAL6u4QB6*h+N;+TO<(ph9AYRjpjFT6$)%?jf*&QCh~_d7Nt~CDPm$; zgomOQ`S*`3o7j8)g*Rx`d)6GNxl0v~7isumnD`EyeTg@;r_IrABJb)?bEeMu;X*oX z7T{nn5Kwu!2`I0!Gq$f#UST|kNU}E^-e2o`90|W&4{}ir!G5kKc97+K<&;i-pgAP(_(IERXj*!k?sxrY)#VQ9^e`K z;Ni=(;#xAZ^3WCX^cUJQ{=xm|Xii86X05!P(Ld;W0!1QSbqy(x8$zxvK|@NVkat5e z8;B+^5pPqe!QE)>o!|1aHGlh#q3Kt*K>x=84?1x8%Kr^*QQ6HxmiUzYJbL&nG5als;1hsmF0;X^B;~)rk&R438u)OA zs$$!L8HNrT^4+QtAx?sXhi|Ln{lR14rnprjd=Z7CK0m#KcCbuwA9n-?D@AoBN>1Ny>S0@=0cV zrc zG1rjrGRe4cRjB2%iN>`@1x@d`^{{LA-~r~$28|yeUs*Dc-SWxKuMtKYfA>I-E@fch@GiQR5MRIPdh~$Qp*zVjD@!faQrIu zJnmne7XrY?48t^-vuk!ECwcUqu4A@xZ$B7D=;tUkp{QcnkQmE)6Th9@%Gb&yC-(Gr zrVvk_gq*&llAz8<;WE^!*_xWqXjOxTo7a$(Jc=)IpZm7W ztLBoN<~4-6z*bW#{WaLsQsHq@S|MdEOusp2)TU&uiAS2s9%SA*yzb6ne9TySbe!_P zks*%0je51%H1o9j%XKpgH->qrywF$@1$i*$y1 z^`cD7w)t1L5#wJH1K zbOCnMECN#zy8h+a==jMYwi4fv_SB(cTu!YJFMENYApXf2F2N9wlau6fDPJR~5Tp?; zYZtr2-dXZ{dDI;*DSp*W99iUr_=`N=V2tA21&CHv^bfCVPZvBpK5Ec%5@d_0(Vp+? z#6!1Z&BIjGAc-*b%EU3-w0FlUV%{>0&*;VhVu2v_$>mct{S|Hq6BjXR@QSCLK$H2! zZ3x>N;|tNvUvJPfvHrqvx3N=hkwH)!;&0{Fnaa(86+MR&uTzW_V%A<*6_KyMuJWN~uB9 zuVRw3DIaU2J=F|16)C@v=hv;#=w%Xhxk={IK1OESi$?a>Iq_mc0Y2 z1@g94HDY|(iDoOZsA?}wO^nVvTaY{>z^zdN>REo~>z6upW-Lkh`0j3`mr=w1U-(-J zQm?P+`Sn4veH_CK-*~FCQ5P#Pe5)xP@CSvjRBiaU(JStc0F0pgh&k>2#04oy8CFu? zPO~PS9JHdCZdEj`T%9;b8*g<+YOGEpd=^WHa>k38vx@QMJ|;>P)yKftZR(yW7*wy} zr5DnzQ3VN=dUO3(Qw|Y#dB$hx#+6-*oJZITh@y1glinc$q2%q=X=-kV`l?b$VrTYxBdLhu2*UFx7%y48yjNf=u^R(dPepz=1J^+mBwgEFbwTo&C5neH7(OuSUpT+L_r)m$Le@Fmn6 zLZ441>V5nEmMI^cPZgmcui)j?mr)0zZf?H$_sYMothjP%>7~oxUB15I`hVO1d-VIG z)R@%L`c2=*fnr}jo#C=RG1T`k1b||&egBmN?}pP`74KK@#exZ$-Yg*F`jO40yBiMx z002;87>}OIw*R(!)3h+F;yoPF^rd^Rav4hKA3C?Q1HP6)Uzi3gZ5tq>sKm#oZ}7h? zF~TNOHtpTFec9k3wOY_6)rYP8W$(N;zLxo~{@O5ju!flmaX&KZWdTKdG@ddx7(Kx< zjAg6Y?SrvZ;{G2;jQ+h}G08vh&*L1*Mrv(}U!T2GXgcoT%)zr)ty{L@E{%!XvS8)+ z-}E2*LzL2_A-lO|#P}6!zF&BRjV>lTH-G8sm6Q98otRNc++O=fn1T<%h1NEc(@<*J~g zf1WjV^x2nkih6Nz?5NSBN6)*OgiaFv`5JFox9B(W(&_`@&j;~2a=Elp=h1=KtiUj$ zpfN*gIiVxYw!<(z=B${~rM9#3*XWEWa7+4zLK+zpM7k^r9E~(0mup$OJnD{X$Nh%arrq4o0MwnF_-GvG z=GcQcG=FSs^qo>iU8_n2Cg|QJ%Sw8|om1tzxA&8B8sPP}wD|@Zt&erR(j6fXR z`NswQsu{Jn6=U6K-1=`@d(iTN7uSEqnrH2Qs)jI(kDi7I1l9qq#{_D*4H;dCKJpIS zds-l;Y-{u!hc&NMnrap)U`-7a?Go6Hoo@({wKY3fNb!t7;83IQ)H-Y<@mw8J%a#8z zvGdd&bk}ieIDP%N=5G;ViVsca$49@)kzw~Hei$o)PyZFW4({4GS}|ca~;b?x6MP;@cXB8N2h{$tX0R#Xjx7T{jjrmb)BX>s-4USx0DLy(o~=o@im= zy|QsExA|>@#R4jYEG#@0)%c4SX{6_}?o}nI>Wn0#94?G%Dpov&#;)(wy8Kl`Nhw`rt@N zk=j>ww56!z*Z*=-B|+reaV~p1GSYS}AAJlcR=N^nmY#_~KvRXe zX>aiJ85Xc<+@+R_xh|bQdz6%m3bpZUP={lQ@+#Q0uH*NufTX1)GcZcBa?(XjH?(Vm9_TJBP&OPtAxp)piN@o4pO^j+)?B@If8N~eB0s%iso>2{69Oo`GOM@4 zYCJ!_;-c_9h$}e^12?cdSCb>$Vw)^$C+L10{d_&ne)BmhCcaGl@s!?P;9+LH{ndUp z+DZWRJ!=6kUAno#TNGQLS8JLuuqT?Atr|{>aojzL$K)+pQG#_I`*w69 zC}om@Os^rb<{CPP>BWywYBEw`2&Y$$d0LcNZlPyrWnHxB@sNjAxPZU~8PQDOEXH4w zA2FC8wC&Z020?~)4-bRFb@hh1$Wea~!y+*p_v6x{Sv|LJPU8^&nB(6S_RD~k9FVLl z*PtV|6@Pk)=e+um3!fD5VG{3Y!dG&gquT4Dujqq~Ox)YKRZ`?3Z_L!bAb%t%6Iw8g z(-tB6P}mhVKAKA@+i6hwE4}%QFaV2iN^+jteYUX$(Y5?PkwqCcstBCEk(5Mo0q%q zth`sX>g4f(l8G-TW*E=dc=s;l^eNU8)6M-I%*8Gc>M27o*1vEILv-cK%5fM@1E-X{ zetar7oWvoKY8YA5rW_t$5WR(ABP%7WOoJ z*LAZfXB}KlgQ-7n3r~1KkYkw1{i#fAmFTM!Oe0r>I?!mzP$Oy4VU731!MMiS1yVlv zwy#u{sa2uOecf>HyeLWA=_)?Av_%e8l~YCj$e#=NfGfV_TgWwzQcqm zKvLIKd?kWIYvCibk=|T4V&v&&Eju}}ER384Knw<|jjgk=_Y4AMBV(d8f0*bHWK;Ol zW{zIKMQK05;Jz%G^$1gS1Uh@Pmuo9h3Mp7ga@g3;M;r1yn7{l&92T67ZYe3@3Woa0 z^I-RK0oP+Uh@R|PZRqUgVr!{mxvD`8X-Sh+7ajIFWn`VR*-K!{=X0#3)0ZPUKOiCh z6(p_n_(AglhkSCuuD5v%)LEXO;7;t*cJrZ2o#O5?zLhPD4D z<$Y(i>@+G{{GTS`npC}WAIzHUhikPBC6Xh z-?otRt>GZ}Mk+4bhBTu#k<&Nl6_%Hnhh)aOW6Obq_exX*Chu0|*Ck%4b8%n0Vl&YQ zOPa|~Fc`JJSNasv+zR{KYq7((xhlURAnFr#2dWX2`jInf2dWp_MAMaZv%W1XYL^&& zIkFn7{X;X&G2Ue&Qibk)cAP3IQe+q!XP!Zs?qBZiJL4Zke|XJ;Un{{JjmsDMFm}GJqkccaeANMB=T_WH3b|4<~u$dzPy!}3cnQ`xt!1TKYtF|B78zn>r6m{ zTX&3|6?@*qy1o=le%wCTJ98{n+=cj|9&fF0RnNW;6c-5QALWA?77yjQbTXZ`+ln{O z!VP|gF`+>Ge&}?G)`rKX+!&RI8)|&y&&60umZ-=BUAL!rdG zGSyt;3BjtHcwvbURx+qo6w3?pB5K6}Z$!q&L91~@8^1Z4 z-PF+xjgY$n%|$9!=F8dbkm7vvCPv-uB-+|EV?Y;9DeTGxk$ytDYEbogEV(?gLBN z%hY;wO2A2ILk!*}j(Hsof0%n z_(a_{6nC=ZLUP91`U z8&BV35@KUW*{hk;SRK1LYITVu?S+_W`O^?Aw2Ah-HTXI`PoI@CJf)!i zhFi4?@t(#5DTtl;yO8(I>RmB@WQLzGD$vSz&E?y$aA8UzUA`rcq=>e+mXJ1AIb$kS zxg$If+nDmWkWsfY%R@VNf7?XRuTczPQGB4BG3?{LzpY3qBci@x4V(L(R?*xr{01YL z#qmPh`UyAQD}Zv{mr5YWNr#2RTHnFX5Zw}n&tBTAP%LDMwtU^;qf|!9 zvd3MgI<3471<1<49v64BH5Ro9Snkm7CoC6i7abbN4+NA*UR7=3X)ST4xS)h*W>{de z+8s9rTrM&YL~lZ~*Zo2t?}+p;8LRN?w`diO`a)e&+H|Qmh@u_VY1#C3;9h2y}A&vN%W|sPNW7j8fVjC-On@&E{8g< z!r`8;Dp8^%(ACC_4$E@H5J6DgicB? z+`k!jmwulxC~PSVb_wF=8W3m2mn9peCPC{7Dl8h{_wojf4+#LK3mscn&~W%1z)IMH z{ERJD8pHG~iV&o%vJM6IYwseM>DtT|xV*ko#RbP~zYFI(O$HU}R_1>HUUx=?I+V`| z45En1xY|OMe`DP@5*NiaF6qfDYUXUJw@IkXgseRfwdGF_%8`j|Zx3KPKfKJXme$Wo z@l5JzOO*#sZ5r7C48t9syO0mGdpDr_g`kd02opD z&r4C1yYmQUiYME!kUyBb_*;cc7@Be{qcd#Z9|gM@ew|H#z#V$q3igj__PyFO8+}Kg zsJ)rNyt1BWEe>CGi6N@Fy}7-=t{HQ))jjndhz0j5Ov-g@yy7_v&h}h3P zgp6H4^vD~izJ~V0O!3C-K-Mhu^Ycr(>~t|oesnpU*%f&UlNySJ={>N%(a)-o{V|A% z<~L-ia=?jd`WrYG*c0m$&qV8#iY6phz>o-T3IGV^Y|% zI8m=!DM*F<=bNsik?SqbXqEZ}T$hNK!<%Cv!rhf0!FaS{rDIkaIb0K>s{E-a&jdpd z9iif2bK8*}%EC3?zAvvI2<)wfS{kpa@tULe*-gcp>#TVj_CLdFT^@1MaF5MKPua#& z(Tl$moN3@Ra(SJ9yS3u`46of@Q(caKcd*lGdS;{f;QI{owc{UH?gRPe`;go)7W4zy zrc-rg8I=YD7+40RQ=_Wtp-^O8+OYW;6j%mA)ruK+2w{DRx0HzwX4h;{h{JMZHp&$Z zvpk?B=h9ET_yc;BO-Lb3+ePLMq|Ezrw=+{~elD4{ML6ab^;fz|4FPc<@0Jt7c}r9^ z7Q9W^AHHL?Ph;yZ?b2;q-Vep?W+YZQY&@NB;ODRxg@1uj9nm7mXu9?{6hKL;!Cce- zYT?Y!wLg^2PK0mDHPSI$UQ!5(EvgF7q1=Dbe!%(xi!;EOf%|T7QIxWApX0+ZT|Z{F zV=!njL6)$eyTU`~aJBa=EK&f@^WlFk|1VZ4=aa;bkx+|c}<-T?Ji zrT;FxLj>Xh_`mSt|2bs_{*S*e^?yG4^JWbpBQ`gfC9C&N*TutSe`xHWym2OV_&>h$ z*FQX5f3UM=P>J#J!qGg!BPAnTSWcg8VJ|F>PUY6SOT$x4;goMO+&tZM+;!$ssHFcw z*=}%mu1_rfi{uOL9rQQ$`cH`$?)0qlws6t^&YR8f&K)YPQ;%y?Y)Ns<`3Uk;QL<7> z7)snIA5qud*2X=F`o(vJHo!Wyr8fUntBo`PPz(IWrEL&pOHwQ1z5W-v_9XoO23-r5 z+1k>=#mzlA+5cdpIiFlsD>7e4Z8@BVCZ)r-*^PwouJy=DWY|FbuL^iNK>gdE*)fXq zy#T%9NpSrK4yJZn-djW(H7Iv}Xkiig?r$k(%%Yto;4cY4pt z@HbQDgpitlZhr=glj@;3D1ksDaHE@qmR6bBfW0ch?Ed6Ku}mtD+Y`vyy~2)=<+0o; zz^R1jQPr-dhdHu_@hzxHCUB*m82Av*F-#|V85I>JdU=ua{jb&r0~7BOIZ;4aps2Vz zSX$zIGwz^!ct#w3b7tMO8al+tuimQuB|J%|^--DnTo;7KZ5L8*AVy{34&~r6eo-0& z8}J=jp)XF)`TkvcS9S6;Y1lHR&oOjTqnm|*NVK$Q1DlL0ez)()5`A$NQCp-(+^2#_ z)mtiD9NF1G*?6i1G7YT-he?oNOBl7-*WBaw=k3)uGw1I$&YOJ-vEb{7ATVc*iBmmT zttNKZp}`>j?54$yrla5e@p<-C2si@aT;-W?d{kMmw~n`PsrJm==HwlHK4mGc!m@u# zllaaRnuj#*%c)!P7tA1t;Sfdes~Zr`(6x15ORi(yWxXR}>%)fT=7Ra+k~>Q2Vnj-f zhthrGHK!OYbl>}N#-2LP0nf98N*4C=-Kos>nNn^z5N|lD@ko4(qWEg zA@gqj;qA$#15uU=A%j?J87T4O=WbXPAJTY=bVDP6b>Tl<$W_fXk4KT&WG0c#iqIiD z1lk;cu9w$j_b^wgS3gi#(=t4zi=le*8Peo> z~R(OvU z-@9c@EV`qFNAm_QP5j3|#Ziq0MzDvkI*I9&2q)>BzlH1^)YFuZ1Zj!sP4S~PqJzKu z(TDyQlaY;)Xv0wP31V5V+{y=tWJdm%mV`peA8dOy?kAq;s{V|SnEI4*=s}QN^Ok)YVO|N?k zKBK8lAD80Sfm8PNYPW`ZIiGcw3A#-W0(?`XCEr);z;xK(_RtsV{p`GlpXS>?_i`g= zVHFuQMvvbQoLR7n-~>MTdwSkGx>+()Q`2jvi(P?8zR!*zK-aFDcEoJ`1U|l z#6Qh*+h7LTATYs27PKl(7ThFl4Sk(E)BRbQfes4Xhe>mwZ{|;ctme5)Z{voYZZgy> z-!WCcYn`N*sQd}z$x@;hF0CFs${z27uOdg1=m z%f&Vqo`~{D#WQ?0{*>F^OtIQ}g&oYbA@Pgk6;g&K@9p-C_PO=AG3Jk;ST<>Xtt#$= zk^cjCj=HR78LN5I;YGafEmH6Ia#%=lP8>!W*86>3kmgc=!_iFT_Q9*eG>p+Q=4LnG z>%KeSmu<#ZLj}P7VNjvAJuCvkv&n0iFaJ`V!T2B?M4x-&luMqieoEgW!LJxOJE#>U z=|KFO(pmMIFW zkaCFB`ezHr>}Ed zhe~9nr#0Sk&C_JE)3be3$w9WWdKY45rM?w6<{$-lEid#8=<-U@oO3-NTpt{&BQABU zGw?hW3>k`l>4sp2vyZ#PDdN&R5yJTL-nu6}8`N-vKTVS9_SFFz?EB*8Oig?OG4JM~ z=2>d?T52mQkxkhOaU$ow&apn(U`r(jlkG|p8i>U0nt75jOIh-~LGk{)t45QM{pD{~ zR;;g1SsC_Xp+fs)HA}iA4b>4rXFuPQl06KE#rV!(2&&`(r`|KQ?n*TG!)C`Qv46HX zwvSMWt`vB9G7?Zs;?&|>CQ*LABo9AjoeXX_Xvw&^~rV{6W+8;!;@Azz3D4$$-qi0~= zha(5 z4-DN3;V}GF^$Yfj^vl8tlM#R7^K~_+q9v)SR;%O~bG?lXiJ{3I9Z@hfMggitKUa&~ zdgZ$6g}<9?GbUxXKF)G`QA~0(*5X#g4q@zk_6&%91cw6>$?soHKVJ1O0P7M7`M7sO zt)a^Sw%m=_SyUgGFFP*nR>6s*Jwc>)!tlxzu;`oDA@|BcGmKt=)~{~nbLEr}Ddpti zlcK5Nwcg@;u|DC*L48L>Mgk~9$BPRRs5Ymmm09^6KuEB2jHuF(@RV5}%Yd3=`u@ZP zAnf-0t-;xu*M=pTD0a2zlO>k060muBTQb^@&7X$yEC3&@V#3zIxydUim?ZQWh{(d1 z;U7hYV2OTM%t8QSB1KuWe2xec`K2%T-%O-N4;&na!!EtrJXE>`2GXx;ku%O(WrSY% z1bgFTClsXbjyECTUL9+tMQHmDifRMt8m$R@PQbGx5a00g4(!{vq+$q$xs3_>C<5M3uRvD3MHW(Ryns z?Kec~qhe%VsLq1CY*{p3pUN*MDoLM3PPxStGT<@Se!y!%*T6tb|J^$i>x!3hNEPOk zzuh)wU7}Apzdi=5eP|VC{T~N9XRwP;(PEpmhJb|77eRj}L}R`8yIPy4>^6Y4A9p++ z2Z$_v(M)5quAk^B#`_vBzRXhVEl14+x=0AKYWin!x^cY&O3Z*^oX0=Fpuh6%$fs~HWSRC&V+f=84?Xa) z*HI@6A-S#U*X!=jX6NegVnU(Ijy0JcLhtomy~m)BHs=Y zOWRij?ZSz3bt<73Sv@+JUn?I!1-nt6q)_9Dl_Kcn{Dxh>AIM%S!Kse*&sF7|1A$t_ zxbz13$K@sI8^J;!jTWuxkypwrjl**iO*;wa4`b&{B+`H7L$T zws}^MUjhX%#{DDg7RESvfcW>@sJ;zHO*6NTt%-@H+s(dVOK53vD6I%6Yh{#cMcP9&X{d6?x2^be$OK3DZ`>4Q0;P|^et)uEH z=#*y3H7Lti{bHsdyCEKzLbh@u*5;j$1FD4W3VvdEm=9~keO44AmTF{r#+CWev!=hA zIVRk zXA<4fyY7H`>b(?6wq)h|YE-C^RB%j|x%aU&9ba5|i5shwxF>Y(3I@rK2%IkiX=&E= zvd9zm7YFp*$EtFc>7@E-1G~D$e)9H3*#*t}=eZ1Jiq9;_E#(o1+BAat4B$5J(pdGh zSc{>SkaC1(42In&7s+Svdwz?Dhlh=%sADLY2ru?I{*9AMS+}0>DCUK!B_%KX3O4!T z+B7OGqT&|fAek?#B-E_~VhZZd-28od7CucfR@rI+f?u|@h=G)hiFz1}_!$G3yMHB{>rEa9K0 z^7LjySCyU6M3JSDT}9sqB&p4YA(>B_PxjyKDs*j(7irty6NY4?Gxt88I6m2$Y@P!$ z6C0MF@vJGHTAh+=zD(V6=0Z+Fv)-G>*w#FppIckU~`!_W3(GaD6+58V*KbLJj*5%y#gU6$kk;^!eNEj-`s8pkHvwAWz^Oa3FLGrr3&Uw+V^VoC(lX%@&nh|_C*3`!F> z9H0cAbqxc%8yDO=)R>+CAN3D~cfD_w5<_Cb$F&^&n5`#3C}B4T_Qf*i2)+dd!7V); z*>R~2KkvXr4)=p>%AG{?5dUAws*C$xPd{i!7l&!K=%$YP(j?Hi@ZYr)tlvW?>|uVk;gx_fdq ztfbJiTtv(jiM^Kn4mOx)717iFfD1!Joy}f-C(PHB5Ks9PQSFZ>3KiG@Ti@eb1Clw6^=-?g)8Kgk8}hZ4caeQB9d*C;`g_r~^{tmE8l;ev z+=5NgGt%d!z6DS%u60iVsgq0Sp&;(k=VWA=3t}%S%GR}{RYi47GM->zJEm3cB62^+e(jpXP9YUc~s!9QMWD93xy2Aljz{qwn;_nVpqG zI&Ma24JPiI@yXk>DhOCxN|4X-wD=^KI>k|Eyy&!Yrd}A@D02|VS3)1G<10wiI4(nb zGKc%+P`(AR#SAe<>m?+9^f^fO)8CIyM}KF4ZXqBZ^yoYS7*Cxr*;&3NJ}_N8>T1M* zo}XzLnPYkd0>m?tUn035Dn^;~%_O@|z`9Ou};_(Y}@}Tk$Cxx`{uCDlp3!RDuax8%0l#hF~ zT$E`~;Q_+k7Fhuf<-v)|6Jry&fkWIkDnzlq+F14vy0xXmOtuegMzbLm&JDej`IW{& z0xqol-a49_)Yye0h7O3FsKT36dFZ;en>|T;C{0uwsmr1Gl(0knY^Mou9dz?o`Z}dEH&xW}_hATX!R9DstjQ zjbG)x^>n{%kG)%abM8CY(uaEVgQ1zNPA$Zvg7JVIG;k|C*_|<;c=R)h|KM1CKb?>9 zw}&}ivRpWr%n7(ZUV8LE)7~32UOv)sn`sd=T5QzsZgMzg-OVR=tECI2Gvhb%OpNDl zZF$YkGX@zVs?cDJ6w1CTWHms9vGjQK=V+mce^j@XHBTt@cNx|UfX4w=I+Krw0s#XS zWf+rsD?@<=4^$Y`Rd8nXCXZvx-NnI;Cml-e(xkw-Q#TuUV#Junlg_-;_ZFJpzbzDJ z-IwE>?>9KGS731ZESgY>M6yYHgl7mA6asNAvOV6`;r;k}2?!)lo#OOEuO zH^lE`aJ%t-L*a)RpowTPVNm_B=z}NA%&=Bo6}mrri+5MOE@Z^PXnlEEVCEm~2(J`ML88Q*)s~!n+cI4hLowXw$-5i>B9Si zpLPDfX?R6oA95ipl}AAs<&^}Pk7|rRWAk<)&rt?&XHuA}(*1^VL_daUa2OOf4NFD! z#*_F{e(Ag{VDXph5AuSe2p*pJ%xZH+y!MoTH z5r%#_$VKuu9`!4jY7aqUk@P}90c*iC;?P--JzD^-0LWbD8?2eQew6ta9V&18Io}nU#S4wi1Er}+&)`#kIze9sIs|6 zSRFMW&x)~p-4dSDLD%W1*wvn`$+gK4E>U|`F>hU1h(}9TyJ*)$vwV47zH(Bpk}^h$ zO^d%0tj)DMyj+)2)`KQ)gX1{9DMCyXD{&Gf-ZRjzs4`ykL89!tHCeYiTa!SDzA`HA z7+a@0Ak4MO0D7dwj+~MEGK5V0>-O{~@;$Pxol}TIhwTZ%Fbd;43i~cXas# zqttr13}sXO+_Q@r_#I-C<+v`yHn{qCry2#_MK zBfF)Kzx_0>*?zrI2~|guPiQ!2v*BS##U1uPdq(mH{C}aRJZAI5-yWtS2yyjWfUiZV z=*5^}CctJ7^E3lM&+svA4BipFI{Ad{PdQJxFD7~5JSTltYVJ%+Mkr&doU)zBYtK?0 z{`Fg0-*h=4c??<6fPt4s9{y<#Dlm!Zx_0#mxljQla~FCO7$KrYk1~ZIlPtFCIHB|U zFBYoUta^MiTG0gn53w%_Sq|j7@)yor9h)^TInBPq6`m-BrbxJ3J13pQEGgs=&uTu* zkPn)bkBy?r8ucg#ayV;86{ehe4vD{QlahaZFDgki-Csk;#<2@tlLQTPReraw&g%Q5 zxwpmZbIZ12a_#2ms!=-fy3x}%=}~k*@uk{hF5Oq|Elo(Uj4zjm3!a%5h4iS{AB>Lt zb2Y(9fJ3)dgMt$`xeYt~UL8QQUE$sJ1s;#3lQ2U>@~HNh84&$pTnykW(^S7P z+Ll7kAohJ*xXDZwWRG29HJ#JoD^?Pi|CzAEH-K)$aeXCo?SH@Kj`fTH$$U8a)d9B3L;!^*eaBQF^FY8V8OjpR|Ha6( z-UPg(%F7y}GrK8YT*U%bApLA{?5Nw((GYJlkoce5E1rPRCC{9qACF2N6*D2^Yz7i& zzs2kqas7~lAeC;DR)SXodF&`66fDkLG*x~)+`BWm?b_N_HM-0i9C7v;pI_(sSzN;} z&V)a_9FSw5KN^HXw{@xEG${K}W&M*7%`zYi1v6X~{Z8I2bV|7d7Y4%gunNX#Y@H|E z@;3r?%GL9xlYQ4cN<(13*VLp@B`1ynxjaA*0&*vqwl7l@&{*@q2P#9O6 zQMR%ZQyTe+UAH~v?|>WDH-=ijd?AaILqDHet z{EZqkcBUn^ZhDDBG%UHVr=Jvk-m*;`+b0U;vrQntUFwStC}gZa`MpIeSybwqmfTXF zBo0bA)m`GeQ=g5L_;;0>sPu@=a_- z3Yjdr?hkT8T65ngJE3W1D`Hp!C_iY{}uysj=sX6Fjn6DiGZe zIxs-tE)O;TqPc5jH=F@6hSL3U^J9``v_>hN0^P(pxEJb4yWZO#aInmV4bMlIb{y5H zR%5#G)ppGbKg|_9)43?k2kd6*WfxdZ!OE(>Z1U*X!B3flDPM%&v7Kc4BD8a3dp4`u zxPL{I(VLuu>z44Nxwk@pv5p42z}4Y$rdfVlK9id6DhXyKFn*e9Rc?eOxj{%KXC4myhpUV_9au=kj`8L78ez;I!F1 z923jK#O0Jq)gG3UK+_RO#k7C-y!`G&n&XSIRI0&HQHL`HMXAU|n7t*dItAcve*=G) zgo{|MC_ie7y{pI4VvaZC^m`MKW9~vUo~_-RC<}i88~4J{SqLR}dEFRy9g_51PK)`L zpUByDv@O78)TqQng;*kfpzbgc==B z#YySLORNZPH!(7a(_q$S$4zAPPr^=Y!__|yQ?)gc@7WD3n_FFNCiXCGp7v#kb@4}o zAV=i-P%qJ>kz!Y`6DV;fK|d5x$n19yQ&oxOE4rhHGT%G_tg7|W+xZaW+AF2mOHcqh z4KahOW){r60?{Im)evwGa6D@iAz%5M1XHJ&NzHqs7%HK#AmTt)l?`Kpdb}l0-=roL z7$C#cC#~!Za&6h53{55i$R$eKo$dS}XY%8#eExVche!iT^M{*%`O`FV9e=Y-Kkzl? z_BcncKaTnA;gUh=rK3i>z)6a4|D0HUZ?cf8HvX>fYK~=1m5{%_%wsUr#=3)?rHKp% zrVnA7rp8%O#mqkHWN$n7YfRGb*GZk3c{}tVnZYL9ljDO&tCP@Z!g161o2HvF5_-SI zdfBP+Vsi7iQEX6|=4=Tzd;IXUMaePGz5`8&&P)DFO|~lgS=Zk_PxeotULfs>ZkWp% ze*!*@R?9$|2M|`pE!(nUaa-Utplou5BH?eJ;G*&}sR5z{BcGO%Gw!oA&+A??!L{_h zLT&yPNlzY-&jM9uD^!xX9&2Qcy*Vo8OD`AujPZlBq9*M0_43EnmjPdtU=l(kQeIB= zJ|4Kf*EQ3TJnS3WP5NJ>N4TAHc~{=psUk<&iLu9~0g{~2o$7oep0n-u&`d~Bh_tk4 zjMoTBgdsYhk)63Ys92VURu;7!tlsVo1EU)%Wo#7`JXuZA%hHL=>JQA`bj$txA6ju2 zG=dDhofvcd#Qc=BQIEPjt&2~ z*`n|G1J1TaOB1s@7CAF5;;_T|e-z_yybbD0Qu>J>Op(P*tBhM@aO40<*as%p$}-y; zu3Ubi-b@YqRjM{O-2BY;MhA3j%{CU9F_V720qg52zKP z6c`oqi=?GHrNiT}&E3qT1W65)46ZbsOf*cKHJ(z`Ew?QD@_X|-&mYA7r{r^MxZUvn5-6q$Rw&k_5Ikba?Wf$Q_pZ=b zUy~b-0zpZDn~InKUwx$v-k2U?KC9kD4d$@&%w5K(a_(oRl>VF?Wubk)1C9b`7|EUeq8=D z;fn|1=2UEVGFEH*c_3c29TS+b!P$vcEq5;Jfwh^RRKybdkEahU-6OMDPviGd?@yx}p8uO*|vM zRRA&kl4_F_*(rl^d|7g(Mx`(?V$xF6Vp3xs8LIKiB?%QhNIi3p6bOxWnuN4}zB23` zyIG3!#7a&K+?r9i(o%xT>c9u-F)kieihwj!&>j?y>aPUdbhW@Wvy%IG6>{>j+@qKP zwqpJD#VNP0bXTIi>bl!w^B=F-?&)(A^!x2nt7NCFdH*Y^vXn_uD{8RJ$^dgZbPAFS z0xibU)12-=dV&6Y-1eq7z^ySLu@Iz3puER>)(kmi6kz+ZQN6j=RO>;kbWp#yY#~iz zOaF5eXpV!6^I%b~WcH_$U=v-Ex}}0ts8)p?0U=3AjV2>KO)qOahUk4&^5Z0}MXJ-l zxowH|Ru|A#R3t>MxXxpBVv_j&vJmb^-aoVE2GZvAWg++w)L*hTPx(J%G|%S@0N4Z5 z24r)WT-t!JAH}=H>(eoJWgj+p}S#2%*|Wd!)w-RamDR{Nk&(CKb~SltCO=+BRrWh}B8drle@$#;#cbP@AX zQsO9j9Q9*-d;)3K{`wJ^r_7iCP~3t4hgR+4+lT*S&UP{=m7>23__r6&`;Y&BeB8Zn zT9_?mRN1<)w!YR_#rR}O!@LiYCH}t;PY3Y-4ZhM7n<9$<0Tk3h#%I9Tp8XzS(14(k zJUQja_`tYh(&bC}ez|4)-p*fzh$H-GlJ~dDPP#773VLn3a`jF%5chy}9zNYet#9{# zI~mx;tE;VW*l$Qkp!fK>6xtE4_B@IfwW~+c1?ssDDE-0VSJ+N!W=o)P zQ9dI#8A?jSv`Gn1jr(92pOKPL8uPCjkW)y%wySf{)c801)YjGt>XL3n|J%vHfUa8c zfQ&qz+0V-L_w^ok`_-H-XDhsp@12vMBS2B*wl9;d+UHsCQ@YbHOAoWSit1a0n`M8O z5RA~xW^cM-Xbu2PdbaY-2Bm6t8IbUb|JH&=ml&!=e`)SoE!c8;clCJ@D(hb^SU3wiZ99R1Lt46%>3k&nqQ5H_}>=zotr!6^G znuNS?mu+br%-N#sOnDOR<=AKX!{8QsI1|Ov;Hi(R5Jy5AEyA_Glyb$roQLN7ex<}F zHY;7&Ash6OWBv}xa)m7{Gl5jBN3LLxJFT6Pz=+MeB(A_aA?|lBqds7fKu6cmy%g}Zp(tljj zp+xOw_FGq{=kj<%>EGHLk9u!!ZzT%6aAqN6*tGoX+}aU5!2Qc}XoIFf`8 zU1Jg!YEh3@rZ`SzLTXL4BKhzd9T39uQNzMFjd`+UEYuXFtOR0}p1&M_YXQ z1IqMJgtKUk&51?!*Yy{k%{Zg4pjKY}Xclc*&A59-8M2|Z83syb&v0IqlrX~})xtH3 zge>tx#>~W}yd5nGmc;g=kZ4Q(pWgfDb>{J48)&}Xwz{~e+FmJcMq77T z7u1ZcJd@`ErJHwUc}~lOlsz3wMsYYk{U_VJhF-_{lK!Qf%(PvLd4du`>A5sFZ~2=% z$E`t++?|G6YjgT)<##ngdF2NbgAE_0Vy8#{0fgcwy!F^=)n8$$*&n z5Mpz?wmJ&l?|ruu_4B7(L)FIy9VtbA7?E_A3n0DFdl6Q}%J6asg{nPxdgAyv-ioFY zX@&!%+;G)r%khBKCI`W@l;tRBoC?-1aH)`^ecvD%B3g;xt!iQS*PpfkeVy}4m$pRdjhR^CZXMZVhZ=PkN?&%AcBfzA-~yD zjaYl-(7(h{OuJ&x>?lx>JKuw*BvCvV-yZc}+{-I6=}uKKn**#4W_;XyeE!oJc zi-$fGWl%Khzg;Yt9nTh<;@H?2wR+vlb_B0hySv-#(=Bb=LsxgVfZ+%r0RMA2ZA&(S z@P6*TSSoRxv+|JCpwN4iMq3i#N!C`0A62aWy4t4f$o1Ip4(<4pRk>1*H{IcSF}SG^r7IS+o@JE)B^sBPb`t=xt_dp^xo%;aukYvRWFfD4J_hO)KIP@+TV>V(jW) zR4bVHw7a3bD3W+HK8j729=?zyMv{r)E77l5RT*sUGf@Ldk4^AZh3zrtQzW@8^3lg| zg}CE&;Yn+~ZlA-nKclI^6&iKUi5CI$5jMh_#;6h=!Yl{B5oD4={sF$cTB!m`F>YE} zVzr;9{0e{td3Wr>jHN$U(Izgkvma8t1TbS+67OByVeOcZZ zb|@+ILVlt8S4tb zhjA#*ID$gU2AWVhcbW7IKYYTM(eRbwmR8(O*8^p5{%X+Xd_n$nzRf8usE>R&|ChM` zU)`r80HLRl0h&8qu}Tu-Ng`#7Z7np_3f8)0rJ3O}0Wc)#M;DX4o4;>E=HJo$+p3N1 z2wu*prlKCY-b*bCq-p+X9YD3P@5edgY2!}cH7X>NLI)a+YvB<4V^m0+Ww?HG4RZ!M zUV9DiZ|PM&+B>?iZEw`k-M~zmhtkK9yxGWS0)RUyezb9Q@ zq)q;wrCcQE_c-OUXH~6a+_=8}Y-L*2z$UU{5mr(|craW^o@-10ef2o^h!#M+%28nc zjlhv@Rq)&5>VC}0$JJg9T;Zs3VdiD0vqpXgXew6|_V)0VR`qo)>ymWEGN<51?|Mk! zqgo|j5t9Ka_<3HS57e&BW(ROKaS5`vRO+=Ft3D)O@gsU-fxaIBGe9n*m~%Yq@*KDW9VrT#^QWpU_hogcv)|@q2xSy`x1{>Q z*e~D5ga?`N2ss^tBj>jpDKby%*BJ3-MOgj%8^%jxjnz@AM~eF5j5SG~KXdG-1@gKt zRNycX{))TGm!hXZ;(4duoDT2^^d6y~!+je~1dBGk^@6q{QX7>|$71F@c&F+IzGwa0IN`eI$`KFn`u@YvFd;Ew}STg8sg&c_qJkmz>zBM$sGUD$Pu1iAo*u_~_`Ig%2mxu!<&`XOUlZ zb|B7S3k(H>1f~cBHtgM)jJg;N$ZHBiJA5Prk7io=2%AyXuG?d)#>X=h8R?KqIlT*w z?-Ya#CJPReYN0AfDcab}A?&@uXJhG|+k2~2xJVJlNmst#9L^S}&|pP?Zq_6-ZqVaU zocE~H&|Z$#`(*&%YRc8V1g&Nt7MD&B`;c83N|Uso*P{H(ToN*UO5@3vr@@v$7^f)x z9YoyLhI`S4TL#(HG1;AP{-R=^&qQ&$>D?+fmkUw?#)tvS#6S;eu2$4>k_{mrvg zwoy0^VJeL~tT|eH@_Po0(9@_X-cDpqtR$^yd+HMA-YyHSh{8c?NkmDqZn!5oU9Dd zOiPZ`8_5~tK)Y*w_F>=VFDs2&1E%`B#~V}5%Vme7T}`_U*P|lNbQ7eSsCaF730bZ= z_;t{l=ku!Df-g90ltyuWzUCB$NxE=~V&hvj$de%#Ar1m>#=<_Wau*U>SA=V_Y}izz zZI41zx^~86^`dYmiM{&Ab>)T4w1u*aD_<9WaYNr6hW|+QcBJ>L*v2%B-Wo;HDyl39 zF|Csz)30`9%V0xYZPWLk9ndl2y3pU+VqZkL*oWD#&;P`!6P@vzKSU1DRXD6Ks|Z{i z(MS6{x~Mnf`=c|Yl)7%PSn^i}$->giDv^)PkEdPnGRtz%@~ELUYv8Bmoc)>7_|H?7 z5>~9__b;jVd2J=^>P;4W$$$g{K7cUT6NTksnqb zkf{`(MuAYObyR1rsWys+ShU!9{Kh5G`a=_5bxF{hXnThIDO~KYzMS))-Ak#qIIV7s z(N6HQk=H&7wdyGeT)$G+4g3nAdKjfP&E?246k)|}kjjfSNRcFlj`%cs#Y`V-N!%mX z+gj&84^`(?KoM%5p3QGoj2};-Ti}eCD>-qgwdVM6Mgkftvp8N00(R0`ywENegcpjb zqj@^pka^J5srIY3jAP6kRG7@#R1_Ru%(3iF=JSzq3nfP*{~zAovMsKy=^BlYkf6aG z!bXF;ySq2;?(PkAfB?Zm2<{N9ad&rjcXw#Kn??@%zMuEJ&-nvqe(TlOwLZ)>XH|_+ zRig?xu&dRJW=n%4O{{YhasIo`EJ=JttG1>_*L2ds&{b(BKZeik7k|aoxjYX&msY!0UGGi?m6PCOQuH zCGRPqn)jrtulA!C$GI@Q@2^`63HOR6C{)&5wkFD9ipW#sjKwFZgz=^}uQb&lFyA(X z6W|wF{@$*gC`i;^>Nj8xgyx*2lubabIcDgYr6l>Zt1I#Q{E% zA0gj&jx$y|rh-Ia^-2)zQ`$5S@MyWAos&jQJN=tQ&R*>-lNoIB9OHhl74^-0xi203 zu87a5o~WC0dS|Uubr5m6KkuBza9LkD%yHJ1BfDk$dn6mq z%JP*s!MECq6kTfkD(_*Wyg6%Y0q8s;Vj&494$u&S703#)5+7CPe*UT?;h02S1fG&$(m$M9|NC$8J~i z9r9gHkpA;1!vDzPv)u$5l^y%#O>hh6uSY@U!^DGMkvgU5+8?Si(rqgm;4^xa!q!5| zF}WRzsY04ef~X=6swq8A3hhDg_#MR(3R5^I61r~rxgY%STE!_TgXHDOw{8-sR7 zQh8G1&Ga8nl|Yz4MQP4bd;8+)lV{Ub)_m(IT>*<9Q?|3bq?mJZTSgW?82foRlE^Yy z8Fh9pg(OxUQJ^j0Ozi^x54JX zP>`RCq0r;%=xYbTE!#qOUShY+P;a4&2e%vb-W;QNN>HkUce&EPkq7t;8;Y9@^}_%& z=%|e8=q}$eZ^j1~zD%#lC zP#&3)Gc#Z84#mF~RBVo;s?yRcM9PlH4!M-8xYZAG^R7+ZV% zrY{ew|4&|wi-T`)3B$pKUYvt6l~cTxR%S{g-zRpn#k=3sIgcW%l(U-gg<6@PSBVo~ z&0S@4yGWiz#6Xcg7A~jYVo3+=XTE!u+lFC(f-Jy ze|*b&m+1#bl#Wl8hb5`Be(g(06ASoDdypLKrIvwS)x7KNVr)Q93Hyit5;@6#GKjM5 zjBF0lc_s|`+czYg=EePMJ1?1 z1x2ZafV^A=HoadWR1NP!&YeZ?G^#c2BEE7j48M<-&k5C4JZ<$S?h7fND8K$wFh{{r z(4Lto3Ml#5{CQIUZ!MU~l#Q0vF?au3o>hagz?$He6kjE8-rE@~`?uM{-iS?1W<*eF z8=Y3UF0z$N4|oGsRRqh83obZZ!(RDnF$AEK`CX9}Z3+Ba;~_bUyV^Wlx5yAp6sZ(p zn_^osrdIE^r^ zTJDhmw}VT&Q_5YeL&u@NeG&tfMOl7gEX5PK=i$Q(6*@^IUB+Ir4{L&9OgZNzY((?r zBXq^pEtHBWuXV(#hWUeho^?Mt#aDb0eUq&QR%7=N6jmSUct1_{Zewb{rPt}skgk}j zQr_E?;~X+au4j(o2NhwT8fD?VCL4@*-SC&&Ii4|ROB*F6Ww7?TJVSe;~SCp z|1bN@((nH${@Q;E{m>Y}ZuSC9m7Dqha%*IdWSf|+t*wm|;=R4S&eBLSHp2@PWL3(5 zA=*E9maT&_KEH!rfPa2F3zL82`}QpLcs(*#5l`8b)}1L7vK+Mh_4Qw^YV`~4HD8d7J$5E{euOos_Fz`i8Nl% zF3tMW*K}{^6KGW_OGpT8=tA>C65@DH)R>s-2NsI5`TXVr@pUhtrGEe0bwU@nUfv|B zLxP->viz4Ap`}I>kbSe?OZyznYWO=?bDH-M_#7?}~cE z@V|-g|M{a6{`UWm$DM_5c2@1?x&{Z$(gr@T>rYFIL2k|peNJDD^q9n%QJNXp*f3?; z$#g*SQpGp-Gb)5VJRJDV=GX0J7;$md-RS~Vpj%@yrr3}z*{^{z|6KZv#;b)LHC@rB zvZvAT1ZW_c|G;S;Td#y~hR2)#CSKtyGd!xz!l*TDWoEnDE$2m*D;DW5Kl+ida!*E~ z82$P>n^rfLT~U3df0Ac37h z?Ptb%ycPHgzm}&IXe@tU|9_HEkaiR8mKmFQ`yLjYekUQ(n5NU|U=swi_5^w@G*?dM zAwAxV{i^NdQKT!^X&p9KbNy*x5C?H_>K6i^D`=p@hO+$$Ids!d2b0PTbx-tW{4>E@ zZtY(05E??SQHvzZ{!uG74EhI|52cbn7Mbe~1bV#hjOtvJ7E&|Sas+6Q71K^zS7-5* z8|@i7y{j-i{7&N#Fb7SkGN(DlalFGOv>V)n>s@m$1zpTv>MsTwoK;Sk%~av^^P?ez z&R5Vb1G|E3g3i4v7Th^s{~DVM6Z;Qc@w=OuW5^F$nx$W(b^dm3)djCb;`579CVG2a zN1OaWYwwb|7E;sy)-#*gPNEp}G_tJsC2(5oQ2T9cMIq`~j8g`0i;C4fleL&D28sjD zYQRl5DiE#aPBH*DP!y9iu;|wtD-7T`i^CW|J6~nVtC3#9KgOrF9xceSsw+7)b)Yj#OHD{iBplcy z{DFbsnO0-MZFk#s4TG$YMTX6rh5hdQB#;)XUk$@!2yDKFS3RvHqV6Dn?Va--(~gEm zj{JOl!q@s(@nzmKnCSqE0JaiAikAMSf-v3Vs<$h{uFwPW)od&bV>Y$c<}7(Kf(a9A zdgHWpbhn5jz3{0hi)S|Ha;pyB8dX)oURo)aQ-%->g_0oPo2;lUB zUF{+FbMB092u{(5dYGp89HA!N7{=l4S{9g9yY3cfmUrdsX!;B9244@x9UN3%_~^XP z(l57m*VNSXbbL#ru0QOaTRf?X+QZ|=YqoT?w=qVB`Hz*NoTSOTxADnWJKan_w~=3H zB;8BlGge9n7nmUu-F0Mf2=w2nRM6^O8DAVFu!L#s?DvL;6H}7)TC{A0ZN|3mxK^QT zxY1Vj$t!s=u^O}!3KPFRQ!?S`#lk#Q@j^HwakP0FRX^yt(V-U;DPo4VS*;l&Ybh6v z*I483#!ab;NXcdrcwJMniVu3oX5SF!_wwh?+~9058wmleWxk~qKv|;nDwZ~KFEa#- z=<@9R2nrse96HKLH;OYm;`3F;mvbXnT>eb&3Kt|K0Q9T7w?(s{<_>etcApw ze{?5<_fYs>%Y8N@s5kGa^-LJiNmI9$wb;XrC^PU+L(yxq{O(4uiXf5kk&E7mX#(is z14}xSQRhcDbRB9eFfEy=CP(!r(JoQeR0NgeF*{Rg1Zsd4KmIF*z+LS4j-RNHWmih#Hx`!S}>bF^s zoYKB+K-PKMU6hD=%lzz|M!@7h6U;~#amdp(TJq{b^&6+ zkvLn$;jF;CX@ceIZahJ;#!++xK9`qTAtGtUf|`x$FT_BBqYQSs z>EI-*+H|RW?)$x^gqU&-e=Y zTTetT?=tu+i-Hpd2k;iNt~nqwpJ;6~?1ju;NOt}Gh*hK+6i#d`4~abR(z4w3P zg7B>H{)u)!p2fJ`_cd)7IaP0wcayKDLQz-MQM4Vx)Ai9R{+X+`bJ4nw86}pOlsZE4 z-{KPMOCKGuU+RMfnf}`P#`99v#QABH+v^A*L}@YsAsBS(Qu;oiE$mr7Qt{euM+>Oo z5FYuX<$qi^^egS49J?=^E}J9U#^+`~%Za=!ZTU}0uMV4#|N4}KdPRR(c^ao8j%9~W z=|5VN#DXeH4UMYZE`c^u6HHJRC;pXm&KL*Jjz%F z`p~0cZ8T;efzxaBAPl^JODb8%^~T%MOPwpN+UBnV;kPf-KQ+F^QNQ~~5u_q=nyZD4 zQ(>Ud>Zw{8gopf7wDL;?hbT+7v*_Q@FQ5MY5)peSIHlIx7q;;9s&^8jCEtKUH^`{{nltYG967N-nL1_#AoAt=DtUYXDK@fc=@^UeGcdOW+;(e z5#@v=!3rIP;AkHBST_Q6sy3aIzS zjmW@tP^5&viWY<6%YJD5p_E+DZ^RK^rThCr<<`fn1=4`cvfBe|b&d<2Mwmvt_URcO zZm)}V#(8J=l3Qjnypvu2Zhi|@+h8a{cpN;5Sk%9j9%-={hv6Z0BeQZ;I>}AjH~XrS2_KY1WL(|+i*>v=1?QEBWRMcavIOh z)B#?Za3L$vxy7$(!Or*ob?L&D+g^kr(+TEf&n^08Gfh7D)g(N^(Z~!|C&I)1}5xcq!X+}K6=0gSomRWs%B+Eleo+pY;RlaG*!fL>|1x0Uj3*7 zE50opfA-`mb<#eL($KVr)lmG$gf_Bi*Kf=C1S>5}>l=+#unoBAPgWKRKL;=>CDeG# zG?(_p=BIREV(*T09eD@n)SddLJBKr~@4kI_x{sBX{Ml#v5^xvm{({rd8rlk$a$Q#Y&JioVC&r&#eZlfi``LfLfh34Z$dxEcrT z+adNF{r+@?pV?cAcq3DJ_WE}>MVHJ0vd1D!M|Iz<>BSuk8Vw8e`DA#Ht)UO6?i{28 zJ{IkexrZ{nnhtMg%Ic|JCInj*6ZX-lIQoHA8R=%3= z-dT{MET|c&MkI;B2R_Q-`#+^TA-^dH<7D;NyYR< zlJ+qlWkw@l8=<5B-H7cUIU3HNM>xBEEUBr#ckXfxEO`tfGhYtb66enNjUt&w*W}MF z?PYa}8fcm;Pyrtvkqmo-Bde`lX&y7~j%Ouim=15c&9y@Hwfs_WGWv(=RxmfC!}vG> zcn0REs$|66j1`gtY@t8hXmqo;NB~SN*w zD_C66Ph;2x;;@w;>D~#xD^!{%C<$!$>3-)&iL#)f6~(Tiv+d4Dlu_vAMJ%cYz$2~0 z8Z+^TmaFUW!XB8IuVsnqT^mR;3be&MJ)pv!?>(|XS-cq#HmpP2FnaWw|Bd&-rh$@` zoX1lOc<%JL5G2^QH+QI6bnH<7AMpJ>VVtD+c)gAPWr%<~MQ?eOqpF3+%fk^Syw{Ao zGDBGc2K4dv(SUdfcxl-zwNX0iBY#;%rSSQ?76cj9ZkH0*rqvVx%#|{QJQPB0xDxEX zw1<{x4vbHV)Em4gC)5CEd@e}dY(`8qaOrh0_L_6IH9}HYhjQ9YGn$K=LgMa;L7;-Z z`|#N$&cBCN0LgNti*+P7(p=NMlKG{zxa@k@pE1Hy zYS!U*24>@=TARBfk;49d5@MAKr2x*HVef~TS|M)y_v|q)#CZM_-3^wgQK)~a2?6Rg z{o<_9bsd*(qwB(zU&InZx$^}D)Cucr0v|B47K^JSOWfk6SNSfcrq=RP_xClGwo49$ zuls!b%jjM&B`NxP8tLdESowTiG8d_6ZcAwmT=0 z34L<(UbZgUdTQ<~h!sV3O6>jQhJFeIsXIkTd33^o!)AzrH{~HZht=Kj_z^jtw@pGG8#2;`r1v?Mfbqf*|cj!skU-*MfC^BHxgW8tkW zEujD#iNB3akk|y_-&lx}@R3P_{+_m8Rx?uXM?zp7aO50~QXs>FxJkoZY zR~Nyz2ZV>`wj1?2458CEX)^<(zUNQMG}O&@!}sOS6*@l@hy^|UD&Am>0}3o#gG~{I zp<8&@zB6p<)%0G1&4NWkem$6BW6#hXARh}Ohpb({_e1E%-$LOz6{U+RAi|*P@SSb! zcFc@&Nr1Yg8+MXAq=q@_=zL1I{yq$_w@>6u-h=m4d9x!qn52^yp!4vUY+Q1ofG|hy z+rM&uduf$0zzupziZtuvQCg>G>r`hbXMQS)GFq@KWrD*ul)ic71RKKqx_TOJiMVdV zxrIQLvBFwj?(sR)&xag`@{=%|-pd`w^KW=N@Re?vrxtYJX$>>!ftwfVDZzFi=^;4i z-2sM_fxHEO_pg6_&tU|g%U?QL+QXU&p)?K~%#Kr))x*Zk-AybzC5au={c=e zEE4&s>k$}?UoQhE9G#x(zPoe2D(BcSmMAz98Tjy4{7et+(8HbR!x1T8?W!}_3Om#d zN(=3v|M=L}l)m;>8|$9HYa!V^An;2cTAC@8{{8KStTwY;AvU2P+{kaphu46mo0k@(}caB$+r)lS8A~qL=7DQ=my+2kI7SB9oKp$6yrx%fZ$QToc#q&o%24O_Rg9V1dW%k`B+l13a)`=4~%R zI?>^L$_1G#@)@-P_yPn^|J>$B02oSysXK}<1l9XESry9>CktJ!V{0h&ypJc<@o!Es z5zLzri|p`s?(Q9mFKF+m5G#pC=tbrDXzZtEWwkRhWZ1D4zhb7V?C`R?1S2|@4gRH> z=deG|$f=qXtjuN8y<;~~gi_N{Ra(476GbBE;y6F0y9}|UpzAf=km*1!l67`W=3ie2 z%y<6`o|alwKzjAi2l@g(tMXVCnk1#M_@1BkgDvLpknbHHyQGTU(BL&rzV_J)435RT zX6*7fc5!lO9V8~&o}U#fY60i1c-IZEn_UTcwcZ(dHV(Uc8l z_~E(Z*)HHA@SKSM(pepxKp5^dT?s<<*lGNBaY^y1%wgs3y1V!-4=FBVQbgbJ@yyvV zzlN!9W31AG2C%(%KRrOd|9WI_ZG1eSO4#u&;h>7=n>Q~vvJ#>iKK<(b%=v)G^GL~( zC<=+PEzuaa_$jVZM|hgo2K>2MtbU;qG4lnoaUZ30Pq*^8o>8;DXoKr+^1gdDhUrl_ zJ<(>`!K?LQz$eBfw)yD1_>gRcnBRK+rv2G|Bt$S2Ri>I=bKdOcw5w?KDW~tR?$T0; z)Q-~!msLtL0Lbu8A5yOp~vkf4)DLI7=ZR6MS&j{N~77zR)3L5M05? z53e)XI!B>6@mT;3^_j}=Z|n82_+yC)xbs;!xP-))A5O+mxt#~>wTPo)yg&DT%+Rvj z;9~h}va#@zdN)d^hJ}#zQPB2~!+i;@iibm@_M)ui@T}z`{t2(H)apJ5J?d6ei!h}W za{VQeh%RQcL*R_>`7CW>EbacGn*H#);zHo*&ldZ?R`0t*2G75GbTQAwZ00}dyTH(@ zOVoVSgBPLLfbV-+Iwq3#tBfvH+yl0N<(V{Pxa5PRmDFqD!LNZ(D4Q+k4iTo^&Ml)4 zQ6_19dc4+xvctz&T#?qy*ml)HfzMSTQH=O+U?5 zpUSO^y436d=Tggti~RzCLzW#P&jUzVb9K&d`qCTwx`?=sp4=@GK9xynGP_K-m-|{@ z)`irzIA?c!Fp$OdA(xm^%}n5Zm9!`wuegpF#SYDz6q@mE#Eb86 z3Rnahnj0dC(Bzizxt%VCck?|0ue&Fbjb3h81m5KtpU|w7K#+Mfy=<3~Knc1NUY4C) zq(*mRTXdmuq11mbPnH$Do*SG3m~BlZgjA2ZziswnqNh~+Y6$xQ0z?Er6-X1m&|x$r zJ~yQ+qiNi(6rMP*IPm%;`QHA}}=@(AY?GR0L%nrm7IQ{n{QB`z?z<8F5ZFYBQMBwFH(j`@pWpm#L z-xK#S02PfYBh*98)T=n^!nDyT#fyhI{m&<-E@nLkatgh##CRN!DasolbB%N>MNv{$ zu>M|_EBs`GskI`k@97reL1U1NLjXd-Y?8HLDA9izGYX;00IDp%FzPqh^n{MBR2!0( z@&d~x3uoB)^k&8+qsfRVW^7KzmkF5rT;jZuL+wQLAi^H5jJAB*!=VLI9`eX*qdzRt z+&T>0pt*@I$T4K2VWm5=N@WFD9j#Shlr_;>DYyL+C-gsd1RImHJOT+ie)nI$jW~Ny zfq3Mz)IAPY`d;j^mFHoc7f*&o^G8A5@SLnMUENezs!mr=^z0#%v^)CU^bui6q*5KH z%O6>1F>ZoP<@0V;eymT;1pMK#vx-s8-~R~p7rh^B6%c@&aiCDvy#*wU_Yca>kmPi!oU5dLsjf4U3ZQAF7xn0Nc6>(W#7 z!*~|_;%Bug;sM>6leQ(`VmS^~nN1K7Kz-8L4+PWQu>j`ujz#+gx2MuP;UYDJ=rb?} z*ti%D#pQ(u92BsAbrPz$GT#PdcdM5PiMa8NzTNmpjOTjsUOaC#r9XZ}D|Gu2!}q0bwn`WL63-TzUe+5&gw&lk%dJ&B1C2&Dp%M zd3**!;NxTJ;_c&p@DCOKilt<|y#jo9&h=}fNSUJHF?#Ju!p4%#2KD{743hUE-|}qA zdr4|ItQ_W38Ea!b@vqDq0egCb`h~FCv9YqmE`Fqjw@iC@Z#{IH-&cMg zP#jD5(Ng<Xb|ob|XiH5X1MK{SMIl8PmHa&Cl7IP%ME`z$T-P`7;9G#IRd99G6Fe!O9-T>R z@rb&;=gbnWjx`E|46t-oq1EPWCwhUnsaAELRGRe}Jg?EJ9{H8@j9j4%PlKA~V;KUz zH&8^pgR8ljIZ|z&cShr5c>_wIhZ=)~0B!}J=Xm7FfD2dbspMkc54%^`p0 zMsIac=z#b?DtSvb-ZlEtmin*39N+F&Eh*;>TF~d7It`pfQdjW{jC0*ur#Lj}2SO=b z5+_kSMZI5XKPTZqF<5*%2~7>XvM0~5tH7h0gRimc{_xij()QhSK|4#_RR@xuq!oj-i|s=sJZ}@zU5)36{;DI?_9tID?RiP0q&BjDvFV#ly#-Q$5%eZia7V!Hex}t14Z_g%4R7}Gl8v@&VS~$&&@pq!nA3_O z*)r;jh}|qb%0c#(B9K-OqQXF22Kf@%w#%wkE16YfTr2IrcSPMB=08>k3(7*ICsN?e z4)C}5Xv9in*;d=08GabePUbR(Ljwyd7c}+VCcvHZIGDJkXQ+hZjp8fv4(vmrR3S2%Vfio6s#jm_{0;-;OF7t6jD*o9f(% zNY~|!Z`O0&7eL+fAgC~Iq|dTVd>WMRg??wA9C|Dk_W3&fP|)ky|Gl{60qA8SN+)(Z z?S3+9W#c(d43lej3w9s2J>v4j!Fc;22;$(-w!F9#AKzo~PpBQOu>MHJe@LLiPZ>gL zAq)o1vo4jx!sABU!WxFncpWP`85zgy$x}3AF{h!S zk(Ur!V6M;alG7|cFk%o3F}RnZ!L0xIS!3%WVFnsHiG`sK^!3zJho*v*wjPvpA zQEmivOUHvdpbmVAAC!2U>*rb}_F5O12ukBu9{Ewlu%g}g6pxqqtUl)3ht{;_H!Lny zsHyuzGVWp+6e=7%9z$3bjk6N{VOgcIyi5U@D>3Wg+xth zlIpuNbK#UaVVZ-Bk6+;e$4sJ}R7Vn*8k21#Q6gSF^ObWX#HV+Wt!1 zdLoA*P(8|7KP>Q( zT7Sr?0+T5pGD()?4z$Nw-Jkqa>i)?V);mN{zO_4VaS&BSyf@L2rN&ljw3?0aNNAVK z;zZnYaKmFbS31SQS5_SraE+8cJRvN(%|;^W<=QubzU~8mB}!(iQ=t7x%ux|n_KYjADS3A_Av-WKjaQjA1Of;BvD4Ww%sY2w>5`N6dH<019Y=mN zR^lW2Q`_Z?)xLR#bv3d3p3Ft>SAmp*(t}Z_sQU#Dz^0dz^6wUBP<+@el82QB6;SK6 z>;1?VjjVLW0XmK-jVU1IgA_)3Xyymj49h+KS9BvSubLy&IB?<|8yownH<&{_G{E?H z0-bVag-l@AUm(pS%w6(d5aTYmApRH0g}C$z(l=93Vh4#7(Bam(K=efxSLtQ}1b7Bu zjpIcX+XBwl-7`_}HUsf?6NF;eJ|jw81{S5}=G__I$A5h*>=>e@wNzS#e?5(cb}X?4 z>qQAyD2O?-;cOCM;@%al0yt{DC&5i*nKVg%s|>d^PIib*SL3-Q&5TfPeCIS-&N~U= z`A5|GBUzF#cQaqlXPJah$svjAA`{IMpR@5?bI&g{3&vnlp^RH6@*UTnkMm_%A$n7) zmQ`)3YF}0(s$=PSiTyeM8$FY5RFT+R&YXz7r}ECn`L+;^FsFY` z3WxXOhM0Du7@1lLDS$6?*Ny-yvxpJHrWY^i)SWwVDXMULbNXHia$UZ+^gwwK6?=RsbqYvO-syYt{# zrtBdpOIe?~;ttikX{>hl6&OoS6DV!jO!^!o)`n_S`U(I{)HYbW9AM?#g$iv+kFK!v z0U=()i6lKN;Das*NTo=YvOB_&p&c-BRx|kJ53idcysR`@HR-CA?r|sIN+rlf;Wr2! z^r)*`=vb>tf&OwX$gqBMG>9^P_=RT+J61SU)F1`(sgiy=p)3QAUk09Py>D1d_ZR~( z%0;7*ERV^13ju=^QH7%w5<+-vz0>|rs376J!9q6sVeH`7P24tqMDNTBkJknjRwRR! z6$eHWaFcs+4~|??7e!fgpjbez`OHlnHiBP%^jIwZNJ!3PJFgdu_Q}*^Zh-sASkQdX zw)M{kEis*X#Y{Gq(dgH?l2?Ch&>xY#Y6eL467`&LrI|_{MK-X0hxRxLS;ACW9|7%| zE*Chs-)YR;?zf3DAg%+~H9o#@U)eQ#Aui$tJ5ybr<*MydCasU1?iVD-isu!^!`wYj z3BDr&mv2-Dcw(Ys&~CbJ*_4jLF0ll2!P84mOc{d)_Ae#fV;NbRQ>h!J?Q3hVrebyL zg;n7sh3_U~AOh@`xt+Fh82&+6L%-WAPF#O*w&4KfbAt0QmSsFVJkJpbD`6%h!vCjy z1U{tsj!qtC;X&x`v}&>2wL{(7;JH%oP_jX~!wA(qCn5Xpm{wmmG(L)4*Ow5jJ8Mqr z`l!#_<+2Thh@R-JU}cs+uBXpA?IQhLHFu0c$mq|g@*+%mn(5u}41Q-I z1DML9QrIBvDl%bssNr71BEj=F@=(zFw**jR!7W1q`~|U#PLbkyj4AQ49jkCBC_YHt z>hH91LK_RtHu=3ZpqXzkiIvuz_iIEI&d=%s0B7=(ElQ_RM5FsG=oKQf7eBJ z+BKD%-fqT*8Vvl^k}V9`^Sk@1M!GpXF@P-`lC!3b6Ht~x0N%#hJf-U@>~YF3(?yRx z#!!%z?hd#!C5rism^Z|(_J~s4q3JkU#yX0komzvtP$0XZ5kwT4RTgLOAj4A6I??Ds zw0VC~a3YDQ`bvk?T$5%xr3o}UXexOaE8kRjVTtn&+19&i73Z9xw3@<0HS9-*T{(D( zPyqyC`veaWK0L9M#np!?pEA?YIduW_S)GIKgt8*jjRB)?fAdREg71E%*}Y6v5)0A- z%wweRLeXQ&m+yAJbNTX-G*}3$*}HF9$1RnneX>cq+6f!I#^pIe|DC;iS%hPsNSH~N zYG_U23*HV!sK`7eCTQ@Ur#6cua%4FF6qHvckpYOaA*FOhKF$hs{8a4;kGtcJR<~TR zNU>2KeC#r6LiRYPO}Vr~yf-(SkVem~Y54RV^Od4r?5WuQ!BUWK%La6@M5f_Qr@8BB%`IL`44REu*At}6?SanU%-p*p% z3sDt?o{`fi`9Zcsk!H~8Z}M9UiuVN+AA4MK;?L!fzO>qKSQj~np@(ao79oE0*2Rw0 zsbwzI)VvbE=B)_uLWzb{yL@Sx#BlY>U|Kj{#R_=m^>LLEK=?s0>Lm819J+G>9$5NJ% zF!_2&QeOEM&&BN0eF0(`YOzc2EaXwSM*mP^7P8EhpX|Ejn{o0h7(aUj*JELYe!lc| zG`K@QZx`Qi$eywSb$rfe!77r8GEJayj>~zwyk@}PMyU}Qv5!JGH*ea*ewsOg?9IIh zdWz|ghgzOy^kTA{EGTn=$pYBkb7LQuDJ#fbTHJUPdLdKD7Kyf+g{|?wT+d~Vi)85N zc|Z$e=k*41msxMKN_rdfY|`vhJc@sYW5vH4b9C&w2Tp(q8qOQq;peABLwF%yMr;#> zSu>p+gE1&FHw@=&i6S1Q`J-);4!A zKdQz=fS-NMZfdnWdHFw$xB~Y#`Yvo(OncjOd{Frec8bZYc9x!&XMOLi?=zbghb!BU zyqFsM!knr)<0h2)jkKG=Zit73>V*#s@`;;Ht(;EPtRE$p|0`MhyCzM5mEjv*hj2`B9)Td_6HR(@LKJNR_aq6Kc;!T{lfK%wJ(CAef5k!d%_W z;+9Q2JP^-1Mqk9=xRj4!^hTeQ0q8h)?4M7U!C?#S(6ZNV@jQD#%~~bZH?VzJDtpZ8 zKGu|4_TLWMV0^lnnMks*015J!UwP-GUds9(hB*lbz&t}g*t>ft>G zq1Smj-1UzMxAA^VNX%$d83})fC=ho$hL;ua(04_)(8{X&2hJJ68i@6fjt`ndO)=uf2>)yr-1pr#h*k;di! z^iQVKi1VkHKSyL0MzOZglVOmR^>~t<;ucxG$30x$%fK23P7{-P4Qn=9h@&ufTCF~x zLBxj21)qCcQR!Bh>jvQkGj9reZx`TH#N@W5UCL%;j47Ygo-btKD$8G5@B%K4gfGl} z1)}W|9nw?Koa!HTmIMz2l8d*reuusoE<#G$yHF>bj=m!=j7*(~S_Ca`TA2Ck^T_D^ z9mQXv`KMCvwDZ#IZdc2LiD88Fg%2(hZMaRsZ`s9MBsqDuR_T5hjiKi5Jn4>((DtC)gzk;u-}s z$^_G#!;ecQjGB7F%u3pQPX@5$#wl_)Y8PtiCkKcGHT7z6QCxb^C5a@WpqTe}sCv~K z>9Zq7(`xNrOZ4*0kdUMp#-f%GgeOe zw~r87WhtP`#_`McAz>`)=?hB0HkZ9&19V+T6w_dBD&cxVFiKwg?zB6EXdFx>#F~Q6 z@ZiIKWOu0NJCo>?shA7&`V@nlRtE|5=x|(Xyt)NSQF~p_F5o=YL#wPbQ>gEWSWJ!e zzY;j@WANSB^z`~7WagulDYsuAN$TivJN>0!a2O77vX#qDR!@4o?VL>grEa zWeJE{?U$D}?ryLvv>@G!^Vo&6#j2eo^ovu7(SPb2MGjnFgSlSQ%h!~93-JD25O@bE zK_F!2m`|Dy`@3adm>xsVuj2U##4K&*pEFDz?pf&J?`~mh_-*7lcopJ_7y@RHuK8uc zi?kK#h?qV*q}eOY6EmXIB!8IZsmEL@i(U2zC7;<+#K2Tj7h;oq2bh!GqZ3bM6c`>@ zf^sBnZISE>GNaM+X4qpmDIT;E;!<&Lq>|~Ge?%YMj&vAUV6dd%_{YJFl!QE9l#s`k zf4J@=<|xazPhUPggi9`V;_RpC&6f!NKo8U@S6InUuFTX6mD1swP&euLp%szmyhFv%IFQKoWlUv?t$u9gLTL z@3|fLUBQorsWT+#;(geTmw&%lv_1Apzr40aQ}1nbJk6B{+2VxJ9i5y|O>uD51jIpI zBa%9x=gNr4s&Q!=`+M_h4+jmAo`4i|SKDzP_%m;oy@0lMNjFXR!aq25w!Q0=8jPOO z2U7H~&pn3{Zd^2p6zo}-t*c9k{dD?kO=JhvrM&bV&1))!OtiWwE+_U+=kb5Qiu7QzUkg1r zXsz-EnUtkoiZF&em_}CL99Bdg2s9slA?q|tb6Zcn=UOg6yCpUv<8A|Q_s%OnKmGpt zC11_eF*CjS+;k|st%J$ma=3OtXwea;pgVUUU)q~ZU%V?TjiH6F%SE+-@wEvPHB_+5 z`#A}eUN+|)+Dl1I{X_O7<`MEt)I=xP2Y%@PadN zBlYRj3zS}NJ>Q&DGcviLGSkQ2k|^l2al+5J>wC*+o1i=LbJFYWvG}3hvDntLhtqf} z>jluvmj33$(F!;je^T!b;Gv zHR+BlNu$7E2uQdMHoM}-N1K(nJWM#-bJ$Rhl0eVAd-iab5SBG0ra0}A(YuDlNl{#A zV=5A1h%%C?!{>EgsHgOY9ySaC_@8wZUXHm`QI{QCx`Qqq#LFnBXqnTO;Uj72V}1bu z8$`oMS@%l3a=)Fv4g&)2e-l98Pw1-iH%mHNb^iPKF>r%~7eF$e-g;j-~bti`vE*1!8LFa#O$)xX$g>hnNDK zrqyuks)n3r{YOQ*ltRTf>ogmt-ElOns)aaGL8FVhJ zf}Nez^9j1j=LZ^Q$cXEMV5+p&Qm)SCBjRZn)?f7_@9SGVyD%JZ^jJ#*39c!&v@3Xb z@Uo4?(>&^VKCFiZ@J=#CFT7!}fQZ#|vzwpk44$&>l* zTaAF+{(ZiwyK`U#1BOjaO+C_BMMMs@4!ygv?q8tD2vA7anbMH@podgz>kum|xaz!2 z5nv8DPhC|%QPv477V{13jfoHhLHx#!2m=z{dy54ADBxs!&C2C*q8L_kd-r$tL*HK` z2t|wz?ZgLj}DiX((i%N5iDwCPI`GV`qYa$aZAcunh7mab$66{3%d@kO}AyW{|{Gh9oN>@ zd=FEhlwt*nTk)d7U0U2J?gV#thZZYt#odd$YtiEF5`w!1m;BQ9-ur#tmp_nv!Z~}N zJ(<~iX00{(?192ER*ueE@U2Z{7f!PgnKh!PnB<{!fSUi^NZa7S2J`{ZJR zLmb~pwl6;Y4$WCZ`#mwVk;4Xjo>x|du;YeC4qx+wnVF_pg?SsF*O@k2T4V`bv670` zw(grfqF6o#yfVT1^CVq52~tA@ls6jfXYA7Q!mFrDlJfx?Z55onRLT7n*4;>Hb0KKr zNpb@xJ-#lQtFOFDY1wDPfM3?su22iaDNx8zM5rmg&}tHy>y2>%8eH175`R}-?P@sV z2z<=Pe4Rcm)%RJ|Qt^kE4P08)Ml9f^*Xn4k2}|ZZJt@|V3Tc5Hj<)on6Ilubo=PX& zpM+A|N%;}hYd>4_y~-S+p_%}#TZf@bYqOh~ezDqi`xiKHVnHE&qsyR=#Am^vhhgh;!w3|H&`8wNO$&h2<_)zsxZL^HInn|6r>FzBCc-Hw z&)m(XjI)?p@JISlM~pgB8RlbZ>+8$4nBG_t zYv6+kL&d1?Es8zF>%Iw(8(pow-^duKI=4&o^>0F2oo8NBM)k9TlRvOfPhoAJ9Bkpe zzo>ro+?aEWYUropVkhn{fasHP$eVX-zBt7utZHVhUZ|g1sj*wvWsbOa?+R z+_TeMjX5^$UxGfyM_^gMAH!vJ){d>1WDCR#8OH^c(y`o&4g{cm?LBZRDZ{cxR-V8f ze@PL+p$j14=4~7EI1N`>Qcs)ESgL!5CrE)*OQ_{fKp`16#$Ik5Vy;!c zQ)>~gnsAeGYjpNt!ijD_*)zADlio#xo$=ng8iE|XjE1l)cxz9bA_(peRQzi9qU$v=3Gkdw+w}{%6RF~iV9roo<`p@9 zfBm<8JKU(q%b^uLi9dhAx|TB*Vm_ap+juFLE+H*FG+U-6pU%?@;LV-eJqSC16{t?1 zz@#*!KFmJt`t8+v$@I#z3}vYXS!A@Vv^lmSvOXgr?9_u-iS{0RCPRp#Cj{%>by&gI zICQt{Vp2K{H}h|sYOg35m9R7UG|3_*Pk5Qg`6F;Pa%l=Zi-(W~DPr1UCs`(^rZ8IU zjeT*&Kf4F@_6NQUxMVsG%+G^_M}NoqUb4rrtz9xD>NWVSr%^XgfQC6I$6GX~@_j>} zfg(_oQh60q4RJy{6Ks$Kf+r+ju7_a8Am z`|_iuk;Cr;?w2eL|y2hMSvo}r! zIdV+w#`eR53@28$&FB*qrOYq9M#jl)|D~S3C}&z3z}UY&@hy=vm$#l3 zSVOtIKDes!)e`-6-w4Kmj_0`Y3oy3VN!1ETsjZ&|-Ko5a5MUWa zQPH4B^!|;gevm=1I7h9UjG~9snB6%f_sG%mF>Z3|eqB{sIxLpp0lLltBC^$iZKcda&zVjUl&hJS8`D@1f>D2Xld40ls)lndFSuKK_Yu(<9lH zr<$Y-QugQ-Gmpl9jqz}rBIWXv3!M~}|JPSw@%i}?q-iX*;7q9<7#S*#5?CCN=zht2 z#NH)0)j9RDGyaqBdXApVKb`|N86I>nU`?0DgKgsg{TocCpqzw_%e6PxKK)sw0!?0c z{i~E$ekH+AJ))oT-u#~YpRe@SBE^4x;o-l-#DS0b-*G3hD;jfeVE*&Y|9+^w`sZK% zdj+m@MnC0IK6hgLuhK!5Av*`h-TnOq64O0U{B?4>+d!M74P}SGb!U!t!q%KFLHSnm zvo*5FjjsqYsgt=5jjnR7~1R1BjP2+#{ma|Iy7NCD_^Kq`ro^%SQVx`Kk zU;ZR~qw$71(K;vdc3qD0HW2H_`BHtE4vcJL$lsss46FJqHCoxQ=s5PSnTVQlaFl>q zfy&h_7}ULE6in`#?1)?7Iq>TGk_f7Z6Juux3eq0}MAx%`E5(2%`vy;N=SRCz@x z^*ILB=BS=UH2_%OO@2|=Ys=@>zcSW-G5O&PtAh1Ns8;$t>{ctaHkZ|$$C7Qe_iie< z_Yd{5bh@~mbD5wH=9Tf~%V#3(MK@R=T0pzS=0%eP-u z_#_)@wZwt9m6_gi-D-b?#^D+TKK^48PS1JL#io{r0Zww0zkDziZ^q_OALGqc)0?Y^ zp_#@dJ{~^XMh264;;NZq)N^T|GZr2HVGnQK1u%Y>ef#57w~@?65$IaQF4nK{%fOss z&l!vP!0nhcN!jSr@ro%BRM4Usr@mg!jCdI;iD{dDt2-K~s)`Y7zXTn)og5XTcR|`^ zcSs8Wwu)&Z0L%U?{Tk1>Gr3CXxA;5ht*Y~^j8D7rXo6_%f2~hDtXB3i{-Iw^LPcd} zlh~)b?D1yHvJcBbRdyrL@u7dTpF9`%Jxw8=Xk=AIxw{d88aaGZy4;Yygl_SCW(RcC ziXE$5MXzUTI=a)1t(}Spc!Syh%c9=gH!)-tb&-Ic||dVv{&Z z$iBDl$tv2FTxxs*3pxB_@|m94{_r$xbPr;GN4>AV5K6uUD>O(udb4*7ax_dACYCNV z8uv#MY5D5hKT?lHhP|75o{NB75 zr(&Its{qWxrZL)QEFXmrT~8FWUTn68*?h-S>tP*DP|a`T>fv5g2QW;!!A3K&?gnUH z-zW1U4C-2{iIL`T0jJe%AFknkiinH_9{NlpYkn~mJl4@{@HlI&Rg=hPf01rm)dAWF=AbmKRv!VhE`iF+;@@V-s2X())c||$^JfIAvQc!fdiAqUVHauM=;l$ z*wsVe%Xjc=RN_<)_7>~Kf<8@%pgz9>)-5$*W~gu1-mDp2bHv(DmYFY9){FH=JJ-jp z_E!iGPrIZ~H)qej4pn(|k<{D<@D^6^`uu3@Exhlng7|1;sgSC$ukg1I+qI#3z;z_2 z_Xj1AG5Xg1rovE^m-WQgmf!-~uX#DD z4wzLY&Lyg0oLNMEPS4Wi3RO5`DRYVr&1XA)`**yI*OA z?vf%xlVTmf2aoGBy!ZWsD-biwX{622T4q?aZ=2|+(+eSt*qD7K4b766m&U_xwV7I? z#;oKqqN_|M^hfrJKviK6g}9Wn(_?JU?xdznpR;KcFBN-HI~w;7xcZ_g0SpH7;j>9V znofI#Yx*b189L&RG0TYpi#|;1=)1B0K1_w}sE9&7m$x2PVs(z&ywh#|wmy0yu6TvC zyw#UXx}pb?nlq4q4W%>rMiNv^k6eT>Z6q5-TS$QEsF3{4(Kc8Mf`u;d@RPa74Z5v5 z+RdA{bAuz0w341M@C!48aR1;C(e=x@uWzQ(fPrmuoM1hk!}YJDZdU-)Rgl)iiYH6= zyHX*-Yq&dSNEeZJPAM@#$t`WV55ivu3^Uy_iFku(vfELkUcEruyb5O%y%1%L@9)05 zX&KzL?N#gHbzuK_uQm!b^!~2ZeXPCdfnrFt)Mo?lE*ZdThlXmg!0tO}9Y-af;dIa@ zjizd@anhsUiY6|4OEQ|l=YB5jt80YYU{e&*OxU`RhZt4CpKG9gva3w!r~iipCK(yv z(qVkKa`K>>gMk2P-vHjgJ+Fq*s6c#N`du)7*@>H{t45d{;dhR86UBEtdsk2T$1;{0 zqxUs->{P2)H)A+kFgj|@^^l0=s62x7W&OqUYg(44gsSWI3oX*JUrgY8W1TG^5{cVp zI#h*8W~k|?g8yN%nN`-HDmW4Np7FB7do)0|J-pZ`Ec=s5dqa&fC8|uOTg7|cgencZ zf@R&BoSZ`vhtX+T0O8WrlM5;vKeC3#wI zfq;Ts`ee;XhzkwbwBv7_2bV{T)Vk}9H)k|pjPk0RahqE8R(>eizVXDPSR=NhzJ_MZz;9=2 zATx;NJXiZg|CmPwe08g2CzyI8GJB?pdi{mkh6DK`6;}{*H#y}}K<<5@9OTshD_pqxp)?7B(>>Ml*;RQpb{}NEahSnt)33=Qx_S1} zpej|__X?*PZzy9yM-hN6ja!llQCC%~KS~9KrTls}3?gqxIMS&KH90U}yp`6)T1*l2 z`%Ut})6}ZGi~|)*u-D!WwLg^9ikccSy>axiJci$Kw@_bk_r#irnGpKsJWJh?{ldTt z&-yk~Ivho@&U;{62_@W9&#KtIo_Tiu`w!-qndU|4ORd+r;)N^rW2`{pYG=~XN-M*? z0mJ@t#%K;s7@;Ozy0J+uDZr8|=5ZEn#}59p&PAg4nJag{M_?f&f9bP9X65Q*^Sx_N zt%Hk5)c%BQ7h59nC~29m$4)Y>+-9cT#%IMvbS_3K5s$|2;P3r&49kT=mg*}s%MrEV zy&+s}K_|~g6_K({VC;a@?jIFW!kCjc@rjWejhp(2*%4`C2E|8eu>5BbCC@NxPXOy|BM|c~SZ(VlUSM6ivvVJfEL%hF#;{!v<+sfeh z!Mox0qj|j0)U%%$KBBu$i$Sfb2S7j6FcY}9T_FE-?k6wOsr6n&7VOTN#LI@<{d@GR% zLsBHhpPc;FI^uE*D&y0@mX@oDuihD54^`0l&=q#ph2vt-+Tu^Vli4lLD%i$y?YzcK zV=2d~?zT%s#onL;JmPS?R3jEi=-z*kI&LaQ=(wbGGLgo}3+vZwz0|;p*|uw9GObb= zbwR=);mx;#TTs`0nxvn?`>@^KS``Rn>8@@PB+7EPp!fZNr5r#}T&0AL@S6d}8XgRz zH^7@ms|tQ+#0f)r!N`Nwk;eoKQ71cj90xqauZ1gRu9QYIVfehpQ|h?vUopkMT+ga4 zs$jTxpDH+10ePKg7TPwT8fxc^lS*c1gcl#q6F*_^Ji@lt-yYU&d*T>fqW$ce!u8pl zaYj>ef@%pumRq%t5xH#VyaeR&EUG~DZGyD~z-fD-xUZ*fWDuE6{1VMn;8OS#^%Vr$ zguMnj-zZZ^s}1dW4e5*|_8tmA(ADz(8baW5(gJKV=g!VwLo}Vh6!3tUK>}*%N0&|9 zDnI*ME!EGA`WvsF3(d-N8Jr-xiXQa=<)Z_fO`fR{K4)9yp9HzqULM=00X(eub`8mI zFgl|m>^CX@hOoKfa*U$T(Qs5Lmdsrcw%k}YbQ}RDgb+2rzsQF09=h(iGrJ|xop;Z}>-EniN3d>}j<$aB6qY-Yyu9h-6*N>7o@+AF%Mg7|`Gb&K zB14wNIYC|E7eiM0dlu5izhwa%XcSDgXBb?ZFH{c`~83Ut0*A6~9vd0YTUYrnPkgUx*fsv2K zDC>?;e`tF;sfeor)GN2F!YH^d6L@9(8<@24Cb&|XMo#s>ubQ6AH?sZ!9p@t+*o5Nv zP=c-0gIa=ZiSIDXE>^muQ0~ra&gM6_&ZAKNT{cF{B7AJ?^rXS(g*%bQu*}EK2OUV* z6%xr?Il&eReJ`;OxymfrcpGKiLTouqg6(TF*}|+L*}^A4wJzwvi}>=?OwEpC($=RZ z;Gi(IPyITL$Je<5P3$Z5pqq)g9;1er*p6FqwYwM z9@efR7o)q7MPtCkEH=?ES8z*;WQqXGK%zNM)k6kNjmg+2V$Z`m(BR^ggL>iI9$ud; z@$5=8{Hv&l*OymoiKXA8`Pe7gFyZ~>Ut%?-DjUfy(REG7)6DD!d+IDKHbuo4CJlS~ zhB;>)r_3s zdGKQAr{=)l!>-(nAYom+QhaR#^iBZ{!6Ni7XmYq_#Ei`6r_K!obTv9LDHqPNwIs;} z%y}yk73O{2@o7jIOhvXyE%jb=sY(T_*B@+(`-$&2-S~kPC@MW%)J9t0cT}>ASu#E$ z7JN*H0kQcMC1F5p-}cCC1#>4=|As?me)WbaYOm2WRJSg4ars6^2CuGWr@-vQtP|v) zD=mr3ZQQ6Q87TBi79Li_HNQOtN(a$D7MI6}UKD#L?M z+JF*6OZY>PNUNo0nTNioSFmaQR$%xie3$Doy;kLJhPfGDhf+JIie~j~M3mgdC4AWG zympreif2HNhq}uS>-D*3wvK?1ahcCqLo+sl!{@@GA5Vu1_#Fa{I>?1OsO?MzglD()wG z07#&6OkNxBvMRXm$_yU*o~3K8Oq}d2x8U{{Yg|o>+gdZ)#8Zd+-%5N^`w5SdaWPPm zOHQeMvA{2QxG~2=B?k0IhT&Fc&*_XFPjK;! z^0;%i%?^!m>9GFEdwm%nmd*)p(G?V1Q)f}8!jc!XNX6dm)*I=e_mP+Cl??tn%uX{) zG=+}onX zx{|yZh$bQ2I2dMr!6a{91n)>4XstZHgSfVcFXNx60Z&W7bO_cDmd_B4DA#N$o(K@c z`w+W1QIWF`4(F9XK8-?5c`Q)%c-WFj2Ui%_c{{?;gPDhibqfRyCT%>F+|kwyp!*q1 zAa*t3+{RwMWeg|6hB82)sOGF|A4U**%ZF}E%{c9l)A>x^$osyxFw>{XYb1qJEbKgL zZY{UH-C)lXx_{8Mp;T>g*^X2e?kTbj14RDPZE;x%lD9!CXDpjqNH+}MECLHEeGR4m zgr#woTS*4W4ux!RIt5s-JU&h8;Ar+fh2-vdwI9zp--Id*S!rDFy$I#-MGKH?W@Q}( zand{2Mx05i2@O=c`U+$lEeqd`c)4B%p==t=mM_(s&phZmyt>XejPh^<;w~R@6<^~(#uiW+Ed3>%a=rZL>KQ#LB_{s0T0C`*Oi}u!%P5xm1 zLFPvGNm%ssRV_(KepN2^!&gT0mFB3z!ke1rlx{)qht$!0pd$^mu(CNm#wGIxJO~hc zgj`fqS9fF(skyg)j@UmNM+131oF4_*e54~gixkDm9ucSe8XAst`08=+TA_A3DM4~ zkbv%{xHT0%5lxufAQs-E7a$xEoCl-|ssnSV(?H__3H-swGDT9<5%`fAc20el5JcNG zPBVlA<0z<8mih<)qoCz_MbYUxAsN(WJF!y3>NA!Gu0lNFyeOL?xH0t?;IM}3cRm)t zm%y_5^)S7&O^y?!KW_M=mUDCm=*@fTKG2oj5EA#5}L zKwTIP2s+~h^6~wIj3&O!k#b?E;xxo%bX8L!W^U)$?pB!8)2hJ1ob=BxyUZW;)j^jh zkl3${V^}*dBEDT8o}9PRVV-gz!%(ytG%{4N0WuTiF<-?O5~6J4Gyduj#e6?Oi&!X< zTSGOe*lL!hII`tyDN6gWjDixh7%CNC>5qBd#qzN>~n&SdeUdMKB5HwQW~N)?w{ zYP3raLROep_hb+`iL9tmj3D{S*V@~I#}_@%9)X~?RC!*Lb{tUTS8oQJ&`Omv^b9d+ zH_Z0NqhCdfj*K4MweOg9yC`!QzRHtx3Gj0xxYVrHC>vkdQRHJCHUCPm-N7fJv&kz`i_=!? z>L0NJgek(6GwGBRH>m*5qHpi+2J@`Ksvnd`2NO+JuNQ-86&cT>*U3m|p6ny#R;c3K z-QS1_RXQK&{)^HR(Kh&BlwN7@upnE#=Q|(xv%X+ZH6a6BmJiWU0b~*yNS0JY9_LiEvKP zSnf3jGChE3OZSF&d)}(3VGkwHXWsv!108Yy!4QhfeRXrdPcO{GdEAbtpZMryV$w+r?9Naan4C}r_$ zU)OLfeHc*B19C}ng)?g|@?&^NR!z;rX^0x?vsWlp-GC&){^sCvGJ3wJr;%x_nY;va z2Qdqa)aUnZ5p{}Ez9N5|E!Bksi*6q4$BQC%dO((^+ z;ls}r$CpHfNqii>uWcATSWXS6f*ywWpsxk_IFxjp@3?gS#;#7|9$48{TvRk$9zPH~_`RoawQ&SoQG%JSIcrdQp=roFhyaP!z3dd~kO^cY%b80)0;aQ0?PHNi|NxMt&^0DZ+9h%E$;S7vU0i!3(?Ou;;qQD#y&w zV|tQ|t?6S^!{vXM5feR~Z1a{5YwplD-bUD^f6FOGTl71xQj|-jE9tj0gPq3=zp2fD zgxuzwgB&#x>C?U4oGN8IMy)cOtw?#xQfeDq&!Qyyly8K1fQh49MO6(~j|nzmr7We^ zqMHQ9NtgGRT`gMLb)rR698SpBc!~-hpuJ-S+U|+npZS!1C|1>tA4$Pyfn`$iBE0^m ztc#RS1Nl&s)l6Ab%EL*s2?J^6I}a#adT}%{D5n8d`9u+wdQ4JvVn%f^<8H#99OpRx z+U*#V5oB|s{K>Uz2|v`Voag?|fWm3xi;HJ(?6udGh6Iy$T{kZ! zp{s!&dh2mOf!;Rg>t?9cdK}1yg&FdEA#6j8QTy6~+X`ZPqw%09>z?NF%l)9;k!4 zrgkYGFk5q*?iahbVsLQAqO=$44sO?U&|+jbN1;V}9FK`Jhq`PEBh98a*C$p#b2Lr} zOPL>R06s`#iLgQ!7Jc(hy1(_WJxduM)+;P6N4Rx&#N^l!+wr;e!%~!i4ZvBI7 zi}116Dp)vk1Y(}JR8sH41#94=j27Am>gJE<3DM7k7CL5XC{c>1+})$AAPwZ1gxrHmapgU18M?{;6XAksikmvw3r_eH)y zYXcWm*4wW;&7}}`i<^*RW;^KF92?`=z}DE+8U5-*rYJ`T6FHW{b@NoJS#$`0o!M1x z*o1J8Jvj+6_6XjU!2;2R0Jl0ozU5kS*-?zaYZ z84|^jMxl<8sm1PZwkx%m9~#=Z(m(8BvI~5?^ zlXhWXo&hoOntTo0Vd?X5J?T?AK5H8?Zccfuh&>iTM4(;RBRbM2%4P2`YdO^`(lNS8 zCp9t2><;d~`w5q>3j5^QXz?&N-*)o4_||~6&2>szK^LG=cIcAP^t@X~b1vx3RTqKB zjpzq18wy%W8bL@&jji7APnDBTH5{L_h2>?Skk8*zHC&=n;x}b;<&!r)0ZtC)Fz|1D3z$)5lgT0@%KV>$Q zKVR-5ntzTED=^F2pR>KeI^*c(MvcMt3=W@TK{>)O+5Hsc8y#V@pl-s7V$;^#5d^Ty z@n8Jbwby?WMf43>)i5X5K5ft>7i_PWi$ka^DtqhEK!^T0G1{`qY*YFRe#)jN%Vok! z#r006y6Mh37YxCCdqqSwMUdS1;7d0Xv6#5rio6vn@KT3xxTl zx#Kt<5g<6pkqiFP<;eHE_%atPU(dT1Vl2UrRRo$gM679qH0eQ?{(6Y6tZAXwwf4W8hv+$CSK9$#bF@F1iyy~ z260uxS{5yA&)8LTRF3{5TgB)*;Su$;9g9misH+_vN#VsBQzRV$P=~Ad?x@OxrFih| z4+j<};~RtppnQl5k+$B9r~OXtYca6;J0f=Dn?7bA@`<&ojc00EN^6Zh)Ez5#4kTkW zf*`@$1)T@Ydlx=dM1EOeAgCfT0|Gj{4z|~Rs-neGYOrlz*a%w7jroK4aY7W(Kh{=K zTDir*Rs3tn<=zp|Y>u~g{tR?zVT#t;CT{CcogvxE( zT@Oy}q0cZn5NJl#K|-9e%HXthM2u8fu(Vk{xyZQ9|7^_swvgXSR`Z*G_(MMjtCN^k zl)ToMGtFh=bGtEdHCD8pRi2<7;KtmNkm*h70<_qUL+FjOT)PhPby_A>%*&2(P7G*- zq1A-+f%zIfODIM1V20z#I!A!X0?`;>OL?OTOo8Y5%j9=V`e`HI*nu2}7#(E4J%Qbb z;qQ{@*yg}ghI$H`AjuzufgfFViAXUF>ARxk;n8g_TN4B{26o>DZD{mcB3axT-*egA zkay=;y^2Q$Q$MgY>P_&UsH3QpUc_c&rHOtB3-djXulk)++Jno5A+IX157`aC2$=TS zxdCkCX)`n#8$Q&9X*bUVr-L$-X{nU>z?>_!Qa{psXVOpK(b}564H|y7dwgP>;(5r1 z$44d;6@b5?)onblPCY%*In+BXHNZcdDfli0++(+lB*9XhQ{G_gx9iRLb=y;EC z8nO0$gTo4wP~7W9f82HjD`5nIP2-F;>WG39*Tgob0PP2Lkw|{Eq|z`94qg;BT=8@6 z5UR!gevz}IEmLg@;TA^Hk49!@hK~wL0G-e~R1cT5v>`jsfjChi*Jnq~pN{mgj_dSR zx@vds^H;yG2}xjs81IuyZ^Vb05=N)-evRZagtps%UO8nI>abs2n(D0Ujy4*+UE_)* zxc%91GLeMYPZ@bYv|Zlpw#n9=p$S>3^3Z>x-AJJK+|O;`!128Fj1O00OI3hoQ24D`d za%DTtpG-!LoE=WRdE0DYc%H2@hCqVd>L?yjcz(&=moG6g@g_({cbjm)A^@gPc|C`z zV2N6@WY9>o%KalWMWP{dh~9-;KK=r>Yy!sbx=B!+(Hu&M0x3|IC$@5Q!m9;w1s?pZ z(%Q@}2%NMdoz2E2Y#MtLh@uWBp_ePXuIp~JI(uZW%qXV)66Rb@lal_y`w0fu6J3splV1mMPqJ~EM{XvQht6C2ai<{hU*$SbR2~Q=g8?jpm_mF} ztNVz65iN}ay0r9v7WwZt?f*FvUHlZAdj^x({-O3+&p=Nv>Lcg_Fr=kNcDulGf<4Xl zbB5Y%T4|Hpp@Fc5zqCFrtfbrsCMiuN0akV@MAzkN4>&q=!ODtQnGwbuf-XnYv(Mpb zRSXStJ30hAI+-XbDPf!DaWwN^8T_6%#{Z4MujJ=g1vzHPcrG3=$|;*!1%@+Jvv17N zQ~Gp_))d^q^DveOeRx~|LFpfNc0+TieFZccb3bbo2QXp55h0-oSUKB^Eax}J?(EyS z?aKw_#r?%D{k?%-dG=65QL{}nvP`CI2s@>3juZPm;95lY3|5`6$}twAN-y7Di^uO3 z>PwdikJqFkgoVOl`}5|K5<^S38G_cb&w(IiFWwQm{Jf{^t%FmpY}5{HgqWD3Y- zwETP|m2q&+9K=zPZbk=})%_d(ibRWwbivl1$aLrVWdIB!B67Von~B3_pV z$S7B2n6JYE6$}}Jy|x_OUVjs@Fm>#Gm7XXTS}|djOW5yD=TT5_6&kNKy0@sRz4?L! z;N!7)gw}EP^KgDBS|^_E0hTcfM;Y_o4&&ABuF8+2x+wUR^zTDze*YUA4Eyr4)b8#r zz<$d0E|qXVftnHUfI+qZ?VDBUYsjXWHhz_QS117LN1KRG{NK1K3KpQ+X@P(7XSFXL zL&Cl;K+|A?&UhpM_xHUGSDjr;nY`ZwK&cdEs~4j>NG@kuuh$k%``|NI?2bmC!~r|2 z6b;g2-97f&r+((HM!Qd~d^J!Qve#bLI1f<<#dqhc4v`mQ_o45N$e8VZ&lK)IM)pw+ zt_J$ob!J%?S8NKVOkr8y?q8fR^2^N7RMKnJ`HsZq3j&)cR9p!D8}KeH(f#)VbA$Zc8A|Y8Du>FEY zCYM&Fw~!K%2bs%E9Laq93r7KhOOQAs%V88iR=A~hX353)1G-W{ui4H+KoYF_D&2DC zAonv3f7eNeDSz}j9k#R~wU-R%$8dz~r8Rap6^rpoci=;ZPzwcRWXX6{~E{e@i;Vi_eENd18T&}-aI@i;y2&aN+iv~oc+94v8|K1I&0 zn>*!;ycqNXmt1N!nE0M0RoVZ$V16!sf5{|pjV60qsRXxC3AGHxRFo50lcxuz?g41N zb}|-kODrsGwkTFf2Vk(NHLyCyJ-Bh#6T6+=QqL;u`%IQYM6khWTh03NZX{z|#9usJ zKJ7z(&MZ~Cl6SX?;%i%j`GTrI!{tr%hEY!^C)c6^ zyg4=OS<~&Xi#t5d9NrvZF#GoIme=WSWq^%9Be5)PTT2DmQN4R+t8*#|iRAh^vF^h} z+SwyU^R0)2g|LdkkeO!cF18pdeg+ON7mXrSj2q2lkgLq`ANIiS8S5y|MJQL1sp5Y? zkwHe5MET_FF(})i^EYc;-u!=3f%;;;XTQ z+f=GpHr~eT>Q3+cX|7wpC|RgHLLOwCb|s@q1y+WcQZ9IPw})cP<>^QIS#Kt+e_@xJ zI%%4nHK55QF`2JVUtg=(hf}<_(L;+g+!HGh);RkQQHIpKEV=2hx};Hzflwgd${A=A zYo`T0W>Ho0K21gFTj7bB{*rXH$(dh}r`;E1n&fa0#QFb~2dDYhAl8au0Os@4vu{Lr zyn4re&*V{eFC;RtNK3?CbUa#Gus zb?C%*xn3A%hK(5+X4IG#T>W3iIZ)e7}TfU4MjqhApO9n#$46tz65S;B%kl+Vn;$HqP5(~IkK@20ruftc{2~KC znuDAHCPyNdUjiuVaN9J{QAqzK`)-z+eghny2bG3Re(fIsZF)+xFv2i{0bwSA=-wg#(U+qKK>8Z`<6qqR*SVRGn|8b8`P$%bmJK0dmp_`T8iS4C7I+FGt+(d8y5B}NS8ehy)1&RQ2b z6-s&12I)MNV5UgUH7?aU1v6aE{wSepn~8rAKm7I z+8o8-zAX9oL2Fa$d{D%KJxpiS;&v5ZNK3A1LuMJ5=7jRXv?3@+!F>ACVvF1OHv1e# zYE6GUvQh_C!nzTZ;ubLfao&wSdt8L+XUI}(HC*~n{10t6QT6UGC0A~usOXoHI_w85 zvH!D#-!sayx9a$lOu@sA%}tIT+q+MnUxCVNAn!J=hsRJKN2`I+BMMAuuub= zUXhLnI&Kda8M15|!SnEHrlB^xgtMbef4s25>TjeA5_r%0DP;G63BVl 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�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 z zZ!HLlCP;oFxC~#$X~giD>FW=z%n^YU%pnWW7g3SKx;Fj8i#CV)-p#(1^bTH0Q^RbC z9H;mynJEg-E?k#h=$xZ}HyO!cnAcV%mMH?i*gmN!Yhf^B<%ZuOt-#Rp#6(VV?%qb~zQvuGMM%X)n%%HD?j&pY#$n5+`weVkCV+AW zZ{UQB=KqSjKE+vaPAmXe?=4!E8f9n?D#NYapEBewjU-k)MYI~;D$Q>lrYGiwP234< z3v4fKNkj(YDm0(2$LG8*n8mc=TA|~;AKsQLRJ|`wx~)o_kcgJ0#ife+a%VTH;Hx|c z>r-MH593^si7rjk4H~}bh7Fx}f`a@$t`vqxpk7>#d_9el>kU_78>Lq&3S{yGhUkv$htVtrf9&~+MPFHjl z7xbe*Z|K73t@z(Ip}`hHq%u1@3+b;v3sm9lQU3f?_GUCWSPg4zx4mVLw$~dGmD7uo zWJ01K33?=g*V)tKpzs}bS z<$p%L+Da?(-e3G-w4z>)w#e%+cYK?A;9DrMOa&c^-(5x-XQ1p?e$zh{kS5`M1oamxFVP*+p1PLJ{b+|mRS};0uMChC zbhOt4+hg;i8lt+<6A;V4eHM~>r1gOuJfj0S9{BX+P`YW?pHij}Ktlsg-*VgUBknc+ zcg!6lWMp7qARzcaqoSr(lLi^Pv9S>q1!vs{UoEfk()(~zIt`JZ-B#UJR4z7O&V(s# z*1|1a9-`*T1D~$-;UA`K_51c2kVC<-%+{st?ZQhoc z`l;?wk3U+yXX7|yy+*lSkPuMr%lXP<9nDZ+bjD!}uzhVuEmB~iyi7aM*udBx(>nBj2PsMp!7u#&#e z!Y?W=>2BNQ>P1ZsEAw6HNL*6Ca(CD=iKq&XjdEiZ@`SQ4ItwB1^rIkI*@({m_9jeU6!wSvGO`r|J_(Q`itY#t8;JzK!6XC^(TIl2ljaBftQRT; z%(CK}SyNk|0M879(ZDyX>_R&-(w>k!{rFMAHvIl@_MnD8Gj^N!4q}6B=QKJs(=53? zSA2?ru3yr>O6L!$DU3rf(_|XJBCNh#S=R=Z@#B1J_Hd(-$ZQfvEi>{nVmAtkGuyQ~ zUfLodk>+7a8Bm1lAx<9Uod2I!M0)cyR!Q}{$Q?xYj3w~BrrlBJ&=(a7uAE!_%2;A> zDehAi-gh-BRyD`WlK^^<_ksDUPpb$*EH7)i*8NvG1Cnb_)^8v{F+rxo=h?LF8Xfor zkKufMc+UFC`}Ig}?X|;4*D%X?2%kBD`MGO8vEtEr8s7D(7{8%honCpY05<&t#ZgMP zG^Ft#tb*RM_Ml~+mzhEzh8f$~B9zCF24T>2O`QEHl6ck!&uju=>!SA3j+tf|W}uR^&j2vFy&e_j}lw2k7ZrE06onoI802Rorza>`af_P6cJ zpf=bHm5jo*c6bk;xng_M5v`3}FnA8v^047FCHYR&8DRGJOh9>Y*XA$1z9!|!)VK_> zrCswR-9r}jKq$x&=td+PW2GyBO zFE08HVp1lc{_rRfZ)_W8oZohjf-_qj3{VQzuJ2gn0GnHwCmT*k+{=?vvI21K3)@sl z+E@iVSBHRm^m@imLvFaQa$W}=;b(fQyFWwICf||Ho-W#sgD6*`&_Y}(kD9)1j=`^` zr2%bm6yX`tA^{z3_S@IXO$raniDR$t&jUo3nr;1&vc@-j0foWb50_IZb~+txSL)Zd z=c6(VCm!cd18lZA!n6+lUflfu4gjnOJ_7XlA&P2ThnMO=jmSXnzlg-~%qHNvBWn_p zud%H}HPiA4eC~1BTTABWh^!ZjC6<_Qcanl?5U`u9i#OOUZ%bbwINuqZMvG3eOFJ1E z>74vPp;QhpB*l#Dy*P?KAk`%7!i_pBcNLER@_ke-tKIJT$NfO=;cqF%-28x?qn78! z$r}uZwa3zU1aR0USDfal@^jur4Zt^WV0zlR_iZ8rC2e6KE%!G!Y1M^Jw33&k?J{Q0 z>jH>I?WLtx5r4Cnza-Y5A-(-eJb?X2p2^})Ygi-;SDYF@FMKApPmvc_2-?$mZ@M0Y z)zK!yPQ|<17_b?UO-vaj&6BmP+~9$TOv7t?UCrxyte|-ov!n%U)+MTa%ZWieu6o}SC*bhKzf4o zrwQUT=@Ry*KO`+fGaI+jlMk8oYAmG)~A?KD2o~N-!6G54Q#$ zQ_kwnrAz30UC`w9Q`1Y~qm&j^sMjPBVQgC1nPC}H%A!n_^*P8>BNf>&E@b?y?IgYH zc<%GQx9{C8_4RURpU=ypRkDa_*l5qt@~qv%t&9bq)}e5&$y(K!JS{Erxr7ci&2~Q+ zG%*sEp8NmuQ=sT=`2R~ig0aU?NaT%4OQ1>y2}&NfECZc=9+&dQFAVvJ-EK|?^mMOH zRf5N;e{N<>W}-rF^wOZwTy>#UO#hcb52~Ni=xWJz(9u zzdGtss#yoAiIuHPzGDzxU)KCI5n3--zxYJSFkL+FTgpf&72wd!{)5^9Dt)E{>pwaQx?AgE*&}-R?-`*pG^6lrXqhSSh%n zZ&WH0P5*ZI?1T_5B#y+A5qq7?`#+x?0aTgxd+hvle`Ia{gG4s*UT*Sl#Mmi>5_JN! z5OB1-z6roV`FZ)O#)C_-eEWVe;)a^tl$t3c2b{w|Ln9o ze#c6vOspm={@bD>_=uU9)^jN!m3JyUvrFayN(lI5UY>)^_-G@o5EA+3-T#95Z!C&n z3lvKhHbA%$!~}9Dan#%mzXPW)asLZ6*gk2A<2O@z1BaS6yrv&d$|BKG zW9=Nv29-E3C*ODF5@ev#m}yei%60R`iqEG?EoUP8A_v;JR38nEZ;}r{iC|(8d$E5H zoc~?)$Mkm)xKLD7Y$VYW{xTT?K}61=QeBvDrKSIJjRd*8DWMeC zShmq!0K&2r-(_`i8r<=&oC59K9KP(0{#LOo{qLfGzjyLu_2#_?1_sjTwQJ{1;_$ft zT;5rn&=8t7Da2K`%Qp8xmYH5rMbH0{PgC10i<^#s!^hC>>;lm12UFf1Ydo3?uQmvD zLXC8{PRj$GjnrhYn7S<VxZD*yi{L=zt zfIwXIxpS_g<1Y!Jn4upE=eA#qwd9Nsd@Q*jq^YnrXT*~uGx0dzkOyXgHUdPZ+Fpmn z;QDPsx@N}-O}>$`=r~*yK6fN5i-r_upYJijCR{Gv9NrQqylR`%w4nCE@37Hf{%)=R z1gZ1e$GrC@bYx`zH;+M*q@Df!8m(3g`@Wd7rL(7wqqg7@MLIc|cIw4^rUV;W_%L|M z5viT2mmJ9`Wh8f=oCs;>=?^5dHnIW&x@OCFDy-O2%QAN}t>ij~q$UobAU}!KDs&jh ztP}!EYDyzGZI#CM;zX%SQH(g|Zh&4&BccR>ptV~JLP$@mc7(d^ofczzk7?e0LQb6# z(K0p08%v}^D5Xn3_kgZext46gAC|7WB-YjIKpwGhIkWL}c4Vym95C@aJeaaY%4bD; zr3;`hD0giF5AWc~(EYi&$D*EatY41gj9IhUPPWC7}?5E~o2=C1-efr0wY zjN-FoLcR(u(9cdR3W*>gYMvIK$j<|}$@*(b-a36L4Gql`mSl?maNUA93R*iD`XFwx z+E-(sVp8OEw%8XtKFlpm+d;kOSkmWk_|MHN}VHth7dD4-= z0Da(s#3Kya2p%5k-rQ+2kL7!%Xzh{nNeKfunQ2WHo6a*l%fdX^LHx!F)gCH}w5+`C zG1!mxyqZk)Ca2@M3f&Yp_m8Ncz+78*m|Jl7m1Ui;=+XhV0o=vaO#wB*Xwe>9v!-Y= zcxbr4gm(;b0;T@j`fQhApTtqCtri*2yMP-r-*bc)6b9S)3WdiiAg%O){agJ@d>6y! z;e%67xiGlD&o-d;W}UT+%~j&1{zQy7@_uO9x0u7s|gD zaC)X&QB!e{Hgl7Gq~fHj^OZf%mWaS2TGi6kCcTxieg{`=D~TLuw9q>=zg?&>iJU!nW<#8-huc$={SAo=OYNyf&Y3omNs^8sAZ$ z`3bH~B5LKbQKI>#7fvA@Nc-%yG~mRV@;}->IkH*0H}zeAq(Hbk)_SO1&h)w-Wz%bX z2f2+Ul&JOe|A_cWNa!{b(USCbo?zMYgt016QpUAMpZT=92~~@3 zS`1-U>f)^d2*UW!b~;^SUn2j@B@&1q-RPJj4t#KtU6Kwq4KN)aH}O}=1XX(qlQ0y& z;wnYWL-kY%{akk0Do@u9XFBg|>ifZu$;;jO7PaP)?pv|B0Uc}yj#!u<863_dSB*a) zy>6KCZ011&cd^Ktq{*h{kf!q)1=?+zD6QTe`2|CW5mc`9g?;1ucz$IujiY+{I#bDm z7Xxr*Q=tB_6I2fpzD0UrDg6)EIsl+-7GLxHjy)V2K=6{Y%)J{CyhOF4TUKQTRIngm z!y;_gd^<5PGt|zU9*rl9?s8I5Z*=a#uY)^<)ZemwJ(St+-fUix2{7qfC0Je+b0HVd zfBt#V0Q&$NjT<^NZLvYRtl45bPrFZ3kN9HPgVy-*`v%0muAN3u?I!wOsOGJgL`z-Zw)jjw z`D*NWN`Rha=)>Tht+MA@Iu+x`**GZsw=U7^e;4;@8owAu|@ zvtn7#lb)L0pq2xG_o4ADCbIV-D)hDoof0gsYfPu>@O#+(xba^fI&_E4EkCqD-OU$6 z3nFGQg)aXGV>TiYU}ImkGZX0Brq$4-)EhU;3{~j;gdl37fuG|7Nt;7 zITU!tIev)))ykh>Sq$u0U|R&*Hig9W?JllO+ElOvxrQ+{9#HeH{KjX7kM`eV|CIvc zDHz`duLhVjVLjRMuAvGSQEHjS(k`dB`k=hwbS~)+4VTMzE>o&wO}|jMOCrp$ZHwH=CbSIE!PaV z*l?C#BldX75!L5f^~g0#2bk=i!PQ~?V%c!P-srLuD7R%*LVAIdyUGUD%rvriOXKd6 z$nIv|TPta^iQQjhTdw5FxspBRSGuoYMM0RPm348) zUb6}>)Ag@9t`xjn6v<|McTg>&Gbpctcy$L>g*_^sYsu^i&$0ORwxQ%sHCe9>psEE@ z88w&&cC!>YtH%evtXIWtyQ>*r!PMi1w(EnbQ&>pFMCQlBMK63STmG*nx0(HD6PMTJ zk}L$D#~K|uo!lWY{)O{k8-s30CAs8BlVbR*RfYpL9k2a>twZyJL*Qu`4q|AcIg?I9 z(b@ka?JJ|=SlV@yke~??+(U4Jy95X>!QBb&?(XjHObG7o7J|FGyAJL$+|J%R`#a~_ zT6f+4GefVbrhBHktLlC1bXTI{03bu_P=(07N5&nK+n7E1HG&fN5?=AF*?q3_t)Rtt zrdr0BMS2H*5S*j?JHg=f5#o&sYBv!Ij1}swo2c_XBF8Sm-sq4P_G`VfW%+JCLRx4i zL|u{cUp6S7!5s{@eq0mQC@-BhsX4E!b(}}$eFQFJHy0T3T#wnM0`V~Iq>MJ zG~01lmr_79*X`sDA^7L*@8(jRbE_A$N;l;mesLK0Hro+&ZA%XC$)^vTW!X*7mc?jI zfp2$aaRiKK5(@Cq(KHB_FO_pQLBX3+ic23~R(chS@+?D@*iow zut^nLRxyxrM2Uv9bzl3ew;+FwMHsE)Aj zm9VdMIBc4=Y`BeNQ}P@$!YxR0h8tt71Qc`l;S> zx#1Cnsr|SHQ@5OaVeLl0SD+fz{(N^Y$!oq?_bx+!_#6|%@M6^0j!%qL3e~cbYi&{@ z?P^Oz+v48m({TH4Pqi#+e0b#j-EQur?)dBqfWbTs?f5yTG=-4VwnI*WHgSC4;xR%P zEs612&#se_%I^}n`tPR)L3E-w zL-YS+aH?!u_bs8aHy8uJ9z_=tOkT;!G?vDy-$28>>N)}mDd00p%Q^}A7@c)2yt7`tKFl`U(SBgVr^rYb#?*S=btvPZMh zYR;a)Vs&SAO}B_scoRe^=ud4!<=MlbY#0!lQVuVXDm(eghswG~^{v{C7tEJQID}RA z%`!?86rWdq!r9}hT?2b1DM+mk6N-F~eGw#v2c=9^ouV1SX5Rx|#;8_jI&WU3@{#j%e6eNh0XWom1dk-yuC& zcAKxDcw=xNTYTluOzpzo@k~<-_V(PmIhfneo?7M{^~xni#CKe7=?`JdR?22VkyAYP zU(|9j#etmpN7fTq{H6ie<9v!x+O=pn=;1A1ka$fQA<+x6nES?kSgc=e4S`~6 zW_%D?xc2RW*WCI`8wMMWdH!?h>~#>}xD?^cX8)N8?q{{m^79G|Qsl;);>TvKXJ_-5 zto^7=8@c>C-jeb+;|vPoF(xbcovEQM?RETT&X?@p{j_>PmdJ9(3nk2}QYTtRMo9v&n3d`I?=8pm_t@h!4Kyjk`q>q*=u)=R-@y zJ45~L_XBUr(OIwx#?p&1&x{P-2Z@YxWu|c9N-x_#?2?)?QA*=^kSJ+jx24*%SBh~seqfchdA8TN>%n)=nbuw(8SVkd^O*r+_z!p5Xc<2g8W!{zB zz=Y=J?#bh3f0Jc!XKpz+Jo+T)n)0fsS#@%dHmeG;-EKX{xH45pU24eDucN4-w>7f#w;4;QlDJAgrEE1I&4HxhpeAL*fhVs?$m5c>KUhe2>;7-b^LX&iKc9DR(7Kv+h?kIiBJIg_DSnr)DYZFbuyjnS>4 z&$G@)e*JjHIdaw(g(VX_jS~he|50&&T-=W}vMTPRT<{pp6~3LtWM<@AV2}y8+9rZo zLz_agpaau~psn+n3nT{QuF1A*IDds&V`liv=|ohKJaZ$sJ$$UjcA|lVRLAu3sk7ek za2z9+MBVez`l8a3A1^h1_#uYRDao^0zdkdBJAJ9DSk3P`mttqv?OzWR4K2eSuIN(U z)*EmPV)bB-c;3#2LjX&Q$JA@==wuHDsln7(45{~l3#+`E!$Up#gMt`w9)&Ei0qBN9dMY#2y)P#>&UY$s@dQ+hmd;FwgnL5@!>_+! z9?x&iJ_>yvg3FQH6-!={+m=c*3@c=y+e^9GCSbjJgR38!_U$mZQv<$v4u*#|a34tz zf$wr3?Z~5IwA24Y5R2;weTUd6pI+MNtju zcOq=A{m{>cWtDMxhJndr{VqOKOTF;WP_Ogl-B-{XP|=CmDXC=oA`fRfm_38;ip|{| zzf0F5%0BAn-Jtt{;9eMM37Q(e5E9#<^>Rp?9_1}>q=E6M2z&L>g7*UU*WA3!KGF4u zn2>(Z~aSc;tKMzKG3xc}5NU9Wsc#mL48*ualUu z5?b6Zawp5Zwlni`aAE^4~=tf;qi!e2BRgn4XQF~Okx zM5fR!Rp>t(I#a%&@+0h59IvWm2yp{3S6IC{jp8RJ!;RtUD*Xtd!@Kpj_SUl5;gXv4 zq~gj={Y3Lf667deo$9}k7o$yF_Vm>oWjFkZuxExF-p&kr_|WCd7!T)vqpk!jzemM# zoLjWt;$m#kW<}+HJN9!R$n*8xkCAK^SF^BVyzNVgu>7uv&@kUR1~D7=sFM5^_-XPc zqjMhXDV*wlu#w~qQ`}pTWhFwVpawI2+A1}@6IJ#X7C+z7#s=EfA(HPk1$>YI=LXe? zF(J%V_h$XL_V5VX;P)n@jCyEA@73*lp4YK-=<}gx-;KHrg7wiac zU9%BrfWHV;`&(3>bRxTN=jRu3WB{#wgsWJ7tGf$(Kz=8^c^YL2m7 zzqkzZij6Fr^hJY3C#@f`c6M#qINsexWu^4{}uCBsjeyFF92BA=MvHmAS-%3&jC2RGfZk^y4A8hptS!7gSDtR@h;eD zt9u-Y5x@G|1XgU~Z*@C`{9ls0b4#`dcj<7~oeO1hA*{L2_>N=v>UKBFgtMISGyr23 zAXYgZxm+ytve~3rcT{C|<#%xKw1q6LI!GT{rV>A^U;f0@JQ7X=O!Q|4J@WkvkuL)r z`!osLSlAR7Joe($A&pH;;Et%I5ea$%?VF#PgGF=MOS;mfJeR9NH|58+C5sifD{78| z)~cIybdaaq)s%JQWsH>`@YO;^;X>#Y(kjG~H!m6I%M1p3mr}x{;-6_gEd0S@1<^`n z1S2#rn1YQp-?c&1k`s`IrLTcWh}Q-^|4c2?mz|qDp+sqSaRiES1slT}{s{ks+w%(9 zq`j?05u!COj=IqxR==7mwT`z}VREC9fi1xig(3-bfpW@VrzMeD6;EVjKi=aPFP<;O z1o;&56U^zXIvOQ3ob^8QjI{|oWr1LBCtCm#0y(V9c}@4GyC$P#kf!adI^B?X0?N(| zR9f4SV1iQRaTFCk(btrx$4_2_*}Am7H1;?V^WoA=D=ugT;@;#VjHU~RDMaYwvpai_ zxJ>-_iqEgdwN?vR)4EYiHc=Z=_$YJb7JAD!m@}+52S3f0X(MI?T1kCyy$GZ21me}1fkN|aOWg;rGZO?Yf!0`kj z8|IBwWTE^B;DJV~2PhT3OHUVO|HTb%Z-a=q``esT%U&ME<%C|Ae#$IYL&8Q0!IXCq?X5N!7mGve zi~eb{wDTSOby)s_1RqdRT_dd^H<~ACoA?vYjYsH*3Q`6BK8z@KoQCep$4@7#mnVcF z>yXPreg)1bk-Fo_x$Qy8&;mmk}HBiNi{7}{Yz5R=fkJ^AoC z{-;Kzoansmhu7~z9A^Ow*Y*q!DB0*D+#~ z8uGISiO?dwuMfW>Ip#))=P`qaSx9lU-PTWAqFS_1q-SK1-J$|Nl?I@QZuR(mO-?m( zI)!nI(xp65xHlYcl-?|}X=q+}(zd@M|Fd9WZ_k+FQH&SQ)n#*V;6NgJHDYn!6B_GB zi-^x%xZ}vayBENqIzJC+?S$zA{l~9_4(sqIH%aUnf)H(Hzd7t_v?ad;vNnunx@1Gn zEq5tnrpTi>XWz=njR$`^Hs@kulfvO9VTm{9J>E$jtxTK@3$vrT*@ym+WU`> zD*=dnYoj4cAH_C9@Npq~@DX8e;ozfTDD>Zl_*d;Y95iv`IrMD^Kg2n8NNMJ6N zJQ{1*zX{sLi_?;XAKVi!^0=Q*Ti}pM`yO#tG!`(Ced72?@j-?NHMthd;^pyl9yf@H zHIM%zZ)k87R;0UAuwgaf3x(mV|IQBgp5V-6g^@v2XfpF|C|YhC1S#Dzm+O8|o7-j| zuEPgj$XkO9O|FJ-((|#N5Xoe2Fd<|voHR#vaoX8@SGk<${-8%Kbuf;k`PvF{hlP!e ziQTp1eT|lU$!(FV?#XFd)8j1afz2r?;mR-ioge#y$OB-Ult1rUk?$~@dF&t4x$!G{ z>|0~*_S$T@$5=FzhkgS;1{Sg?Gx+vcFtPlw_D!5C;_)oW*4qfg*soiR*qmRZno7^h z36Y9Rxo!oB`;whyeI=aE>z_TE@&gvB;RfV=3_a&E6fvt;wn!=Ym1 z`Q>q;-fx`QhCuF*N|crwf3*eDF|%pPlpBl}8qyU?8IO?>`#8$B@i7 zJq>e}H*Tb=AG@vjxM8e9CM^F8AprhgLcojOVpr2B0#1d6??L~0I&u6782!mzwY8m= zFAeepZ_U~n=6>zMaX%0;oZaR0XX`^{ST zcLgd%85v|X!0lg`E#rp7C)QsKZeKZ{Tv9R=giL5BD{)z1d`ZX5J*5k%$61y<|7r*o z1So{hFWfLWUl*2@?acg{8v@Y*&;V5L_E7PAxYDrpC;}1!!riQwg71ibF?9}e+9^9I zU-;|*gzi@{A6)J2kHL-Dvj(ECNS9Xr=Toa`thiSom6jy1nGF89_p=C8Z0cEFxGKLY zw=m&Z(pp_r{p9Sn8zPk@f#qf6E@~>OE|gZ;+lT)bH^F+~A8yB=qk8iJJ{s@B_r}NP z*^JcRCi;Q!OCAfW_P@pD2~93en@wR~X}SUm>B@#PfVofQRT55sn!(MRmLqyB`sWz` zyjtVDJr-3I7l*Ik3KJ#5sr>euG*5gcp85E<+_~|!NE7RF|BpD4b{-sFA|4a*_w`q= zew*d~O&mD*tsC=oVX{?RI!KwwXUt^vpz3av-D2vQ-OkJnoD{jG8hMgC*ZejN^u7^w zW*YHU_i^xS_}d&402cgn23mh6W)t6WRmiBRj{u8W^*Zx;wpI5|i*xh2bRE58oa)^t z?piK0lhO9;xK~S2p|LW0mV~ItxE0`ji&WuvaT`dA$KgPpv!L7l3{7{&5~~P6XaK|= z4d}iVD$D>2KFl-)Jw6dLA9-yqE339EF<_F2HT3{IL!3d6jdC3hPJTr-ojKThOk}1X z<)C5%1)>n&C1ry-3UH>aTXjbd8?Udr5&)SFfIc!k_y?yz|EyAZtFavwCYf?c1_GD=W2jJSu#I-+{0?v^p@FOiuFv9tTp$eGF{av5+>!w+hO>U%T1w^Qt`=N* zR*|%VNWib?fvAvmUg|(?^Su7Tx2dQ`)=4X{2)ZiI8Tf`VF{W_<^z#>&J8y;`_$^yx z1ZnAy2Dp43ijK*t^Esp}NY{f#df9s|WMhYfQsVgBqJjo3X=o9av`_P)9j)w{`+WZ0oW$*@){4ip@^UBUEt1KnPJSRyhX{8iVq2@ z?;2_YXL2bpECm*g7)DW%p#@24hQd1n--8rr!H*o8OxK!--DpwO=xkj$W6Z;9&`!Z9 zY^IOKx4O$#SDWD^Zbfdnlw7nh)?!vaSVMe|*nFR-uT(Jm_S(O{`REQ}%W%I35IoHN>Ql;duir`WA#F1$wIcSd^{QPh}sg)~F3PGo!NlU=GT({GbKB zvwrZVie-j1B21 zpwO@UMmW5g$`twU7j6WT`5CU(3eSB+?3Z_IK zVPo@$X!=0$-p^5uGziH=&}W8@wLeW1_)IS))W1@!A&J2Lq#$r+3Aa;;`g>Z_h4WzR5MA+EBgwe|MGlIH$iYIi_sHB+)$k+O(A-*O+2 zVta_l)^fG1DETEDehA#dbP>38Nt}FAv)e=l2 zvyG!_jT&sbeJYN%zdzH69q`5pJ4Q8IQmgTDKo?5U98Q)M$mak;HcFHs5nltf8Fq#C zOPEg0tq|}Nzn>OA%|XE)Yt8BXiVjcF3*nZC0n+oh&?soFMuy(15_9=Ut>@W(BqEhq zigNq}=&K0kYZCemn>|FiXJ4Hag_ct8AkX@`^q{A3MN`@aYctU|Y$MlQ+Mk?$@hPrT zHY>4vSJ_$G9T7}CkkUUI4W5Q#i~JBtdy3O3Y*me8^DaMrxxNCHC7m5RDNuEC-qy0b zJLSSImOP5@rnI8M8jNxBZqo~TbuI~5aY@Dp3pc;$F08(v$>ouhV~5wqOjUCM0J(=V z(s;F8@m8Z0iw8Nk&*Dm6QX1M)+q}D3uge?S9sT%X1Yejt(z)T*VKNH?m9NK0E3Gf= zW+*cnL-c*Bo=~y6SZtn9(&w{|_Hul5Lh9Trz|%}xTp;eZCiMxXied*jTdH`vU|P*@ z9uJFgV@3pCI0)eq=TcG%jq@_p4WfzcUxgv*<~VZ~!z5xwe?2!~us3Zw zmjmPhrj4H(k9UzLw!1$SI41xZ7jGC~Ul9jM0*3jAvw>Vgoj6zwS3AYR{#lI1uEX)4 zKbu`omM?EJeyA8=JRfj61Su0H1`Ss48U^JAxWda56$vUjX|mOCK+(x;lZj7B*Uc^{ z4W&726F=JknV3il>nVD3ca?MKpJ`Jr3N;wAac7Qe-XNHUc~V-i+%l;l@OrON`hPQ} zdkXjzyZOb0ot?aje52~5WLo8(Q9L|hM9b9^#I*bB%&bwHWxK8q>MH4{$0u2facDRD zphjaS{Hyek&ML!7Zn7h55GL)sV}QDaOLfxTlxpN=+4^ZGnFJf(B8dfsOO&1ze^%W< z>RtjbxTKsqPzmYXMf`1(A^DR@;7cFIMW`sG`+ahdgE4r@pJAOteW*{}<>B1_I$Oq@ zSTxhtp-FrY>2u1BrJDQ3XEef60 z{_VV6Ru~K583%NnYE_gtCNVx_CJ5_CKo)N5`KSyDSEWEL4j9G6ZtxV^nw4JqX+Air z?J>3d!fBmt)!L>8%ix@elh4x=vgD?eRA3^>e29HzCbtj;pIfWG9@rw-D_;0_( zaPKd+c0PfUGmH!ZLY{(aPy&_Av?;lkb_2dTt|D^_1-i4~ku7JXeHYjz?o##=j08H* z=x5d;`HhFv<-JX)FuVAxQiSAM`N`j6U|@pOs-0GU&PYfjRS%nQ8y0ylOW{qwc_A4d zSCi!4iST)y@3t)JWT$Bu{dgjOA!t8ac(kE`&V~wb8%R4Hu)*WQC5xHuhWF;z+Aw}DE~GQjr{wuE3bhrDl!W4e6v$8b;ykEP zg>Lfr1a7uWcbXI+B-k4r3P4o7NCYx_qI+gGNrMm-9X37#A7lLI=l8zozC$kj?>+>& z$ZEB3io>~uYu0e`_$SIFP@{bZEE1NQ*lsmTlUE6S;NXyFcwh*2(>LrqzeaEoT8Al( zSZ#Q$2NWgO14O!)h?;0a64j9iy-57dzT~CrfHMQIC?T@m%k|T)3G2LNa&g(oBY-C0 zE!b5VEXW&M7G&ubwv>@%NNdG8{m6t0tr|9!@7CKhm*;N_g|z|uI>}c2-Zr2O2QiLz zlbh>kvhzX17IDtiJDW1HwIkVahhA?<)!;?&^TyEp}(3$gBl0|H9kAF$NGMgcU@w^7v20+2m zdf1;9J3im1yBuXOd_T&f3R)qSkj$#ODa?az>AO8v)id&Fa{3$aouY?v-2k;|WR(YY z<{YMH66BN{^stRg9WRW)nsFUEArO3!7}N#vh8w0Ft4hN?Ux3o=_~d|h=7bBPeqS`%z@A1D)zU_j_88d9U5X>(dzI!JCFmg%`tH-Vd ziV;;M+8$`xuaq~~hfF#V>5^D8UBHKdUnvG9GasD;+8bUBRp2?1)^wDQH44!s+ce|( zeTCrly++mu9R`sNa6QH@Q4aJfAl84DNnQ+qXC5GsvhHk8#hLrq3lRHY892jRdN#E~ z*rAkcEX&3wGp?7dmvV0WK;R)Ff~EWcE|$Ms%>?Txccj3n4;q$^hV-D#H=KKbo0;Xq z*twDxn~ifjj+z&|Lr0b^lWxvJ>PJYj7oH&+k6h8#G8&(*ZgBieak0&Z5d8Pi)lD_a zy89fB9*S9M>G#8OwNHyxQv7+a+pI6>lWR+s92F$vVz8NlJ|%xaUsh>4t6*8P|53Ua z?&)t&=z4YBd}4Ds)hjaWfgK{{X5Se!%Ip3hX=gOtr+vFq9zh21G$Boc=o(c>FbAC0 zDGIWiugtkC8M9NOG_u?5zBEbx0oz^}^#X1bfQ$+EZJ=VY62OfjVwMC^bE?*5QCn(g zjQmPZ9%qP8-k2yM5f^jyyg$Val7DZydhSu0TdLv9=3K*Guk!(dt6|7a^LZyh57YM_ zYXgi$%sfY=_TE<)=d+`5Zbx%6iVE&nI&NYkZH{&AYCZU@Xs=d>y(6|y^ODbYzZkxv zb6Q7$IJ>P>D#kHPtJz3w2R~6*6Rt1jiuP>4z?I6@m7 z?(zYArkk((VP%6M{{>P9JCi^m?Xu}1>h@-82K>fmp4-pS3T+U91W~}yUWnGN zyW2gY`;pMSZOTxR(VtxcOOI_{a!VS&`T0%n7813&%&x#;tplJU2&Ql#W6dzwE znQ=3B_Ba`fhyDp9Dz~UGQ`YT;+zsj(z>Q_LS}Mnfy@uiA}OdJJtj0dK6*!B7;w@#gp_0td$xoJ4|Z0P zX;J(1l1c&v09R;UwQu7Ji*hM~$M4GXT$|+s*~=;LPYmioa~dIzy~MJX^6yUxPt~YX z7k+Sesi?0EL8^r76c9fx*|?b3^lX1|O5ViR8eg2BEQ><}La^8*Tvy9-Mj$X4&Z-#_W~KMG41H$lHeWl=1FE#3j~7TfXK6w2sA7WL zcB2PaiPSSO!m^gjL+wg26AvBJ>n$8fdw(=3z?9>hWzxP2@&Zf9Hj=a~S6Vc5;(@C( zvX~76%tVhv*HzrOX~~TuZ?a$Ap-4iu+1Jpa`6B%5QIp{8!p{25-&{QV)Z*)M52$Bx zYv5EfboCJomNl#phl^dD`g5WWXmLmlFDiY@JIC!EN@rs(DAm70f=OOefZSpsEY|nw zbjKO{8n0o%FqmEfPA~jN79j=<^@%FIuLRwef_YZ4AHh=A!uz_?ie#dhv0jx$-I)h1 zT-5?KiTxR>kui3|KR4PsF;7GPE$^P~M%n%>{Qi7>LPwB-tjjRYpOt&Q$aU;o9yqH? zWe8FKYDGXmoik)8P%a$h#tKJb3)ZHialcoFO0jzml9mq1fz47N$};{fB1RT`lCEEU z@5v)3kIf@Z5T_FS)>z9+~%iy@VMh5sG}Z z$@m9!xuv9_2v)~|HMgvrCHCWzn?~Xfq5nw!@#CkD_9_LR6)YLl{27Tzb87I_EQ;&y zzS!y6=qWp3a@BkQWT?E5V7oPD(P;#eMrCNjPhGsqAfjwAiD?*VS|ul3)OqQFL!m zTDHBsp-XCcfI^ki^^@R$-z9jaR=2F7c$mQ?X!y(|OqvV3Ft_aPezQy0+SKTy|4S4K zuP`*_d57zw8a=};X&JKR#Jx20l7CV!^Y-X&P`7am57el4@(@OFSC=mxLv{UY`e9Z3 za<3jrL*dV?hB{c`-DiM7kA+(Rs~pWQM}a;ethQJ-U3=(y;3m;}q+Je-yn9TZbW|_A zQGcrwf!va}Xs$z>AZ{-cG{vW<;jkp;E26G{K)n|~y#P$kavk$m-TJI~de0OmF&^|) zl?~q55%XFEN6#*&<3^(&FIn0<0(!8-H7~aRRSze*DH3)Gy0dHMWJAk*XS36s?N9PE z<`00i0`Sk$F)ojiW|x`N=4-9?fAq3m8_a$AbMg>BQ2^`nwu{wU8rf{o0EB?QeOY6u zUOoz~O0m0n zpaCkfe{bF$(Eo(J{IdgiSv&Ined_;hW9Rx88~u0x2;!dcv{g zDG-hR`yi)r3Y^ic9)Fn+(>CxZGU(~`aI;%>J)*3qtQ%%D7B>|GcNPFg`iLTPb8_BX zFNGg6lK8y0wEErp#fz4v_0p3%i^aM}knBE&XS1jgOW`bFHf$$)Oljy;^uV3dvHI z$76Q5eC^{k{H*77(NoqqJg*;x5n`d}?%iZ+UQrFFl<(FPZcXwMTuk*G6_Fnl;Vxk-_SW$x-oED zePXlF`z6ZE{jgo``7Nn&i>Yf2D34VFWv-OP9o5@XtJW)-j#{Ud(*?~l57+Ghjbd(+ zK=YN;?(^Meo}F+Q=cT~omfnjNz=$#%r*Z$@>pM<}T}d>PqgP6ifnWHLNeQrE^)luw zU}u!a!PvfDrsbdHr(%}JNgzYZ+*jYx{Mps=0Zyl2X=P^E!Un@y{Z^65^+U>UaBsh7^nCE=eyq$A?zY}N8{ zr{Zy5zwsMsZqBRzp}VkHIxqI80WpuJD|5FUuaVOgIlA+qmP>O$pNa(~ajru^J`WD^n{ZSE6=2u&d)L~J>@N%i# z$s0^|kV%H+)fdkeFdZ~s9^g3W*=$yxL@Gj5u(`=N-8@;v_}ZO+cS-LHVS%KXn@`m* zMPjviZ94Htc)hO1wJfs<3m_htENSo5$f)y_%;3aC&%55xxu2f2_m5nfHBWXZN2F&x zEIvY#u$Q=L_k5du;|7$M#5*z*`$R} zMBX{zRZpXSOqx1!GY#w3pRz9A1NF04l%5SVq-hUoJ*pI>t2+rz>b?4rkkf6>m|ECJ zy{(GNlO1)V{K4C1;Xd3~+-`03f@@9m{L6*W8<>?w&*#N*wz|6q7fNKb5Cf=?2i%WHw@_56@H+gdS9zCX@Mc>9|5XdhVLXs;2Bv2ks5P zOtXPLWw=!s%<*KHZ*ZqaNBz80Y#_~ZuEjDB!VGh0UrLA~*0VFzzL>aH%SZ{ua=2>w zMr(uoQJq(qrOI;HOD1CKw&-{NmfUq_!eRe$Cf|vcb0;V(5D>Gt1xR}^G6{%3ETlSl zmzCWi{( zBs|@$j*gD*&a{eWWa4C^d+LK@>hvtM+Nz>oP3YF7FWFRqMb)n#k9ZKkIY}vrPB#zkbJ*C{Fr*rMRfFGI`Gt{*PzPnbWtc#ggy zF=51eDA_L8hWQ?C0b<3sU{D`AKRsJ%CeAoq@HBr0+eP$%;PK(CrFFDQ~+s6%*?RWQNznKp9w_JNasyT3qz$@p3fNRh}rvTcY*zv~HyW zLqSEpbt`LWXj9$m-LrWZ*%x+LtZ~k1$ZrJrAsKQ*8oNei~fko zK*}?eR&SwfliUt_x^$r2a9Kk~dXTjfBBC9YuNPTjc{qw8rYf;pL1!rLBmaZHVYA>oejfCLz#1--&sGwjxVyY`0`!n}m%W$OIp&hFh) zyOcWz;%LL<)q1-0nN)QOyC(^Q5ggH@r8N|onK}Fd0jRxQ3DA%h1G$c@6|ei{&*>s# z-Y=y7uyUlokpotmu1jY$NANsUng-IZjWGWu8~e5$SRZ~rv2;FcRtHEoyxPtup+rC& z)?=>h!qW+zD^Ox%bpVF0@w`0Hv8tu}XMDBOBqfM>ms|TezfDo(>6}mE@-iu?tkrclf3&qKh1*|flC8yJ zIE*_wiaW-4W2H1@Sh1{myvF?qUwVlZAjDIDq0KvG_bOHN@`Owjr{Rjm+S6c3hFNMg zS&mx^T_J^GwyFi(=nO<>|1{zgajGL&ZQhBPP3cTw`c^~X(4$#Dgr7!$j)V09r3zQ_ zUJn;z`A!R=K8=Fq8FVv>pM*#7Aq&=yj;cpW!GPDH;?5c!7^Ku!P4#a?ZgKB0!|Imm ztvb@4lVg9pk293)^s!oTcI_t07LZky!mesr)y60a`bzM8TKRQzuSgQGCzA>(=aqHp z#+bWfj&h&uWDNmkEo~qDik9uIy%Yv==U>{Q=p0OE&dD`Gh%;Vl_9Z7Tf~11qSF3W2 z6KJ^ZrAeL-J|}Uo#@e!t#pT+Kjw59rvu3&Pkn+0PIiL9G1w6#x%?63|QBIhfmRrt0 zd4gBu)J0x1Lh|!GIZ0RYf@jmkZJA;IhnH?(8x-z{L(Ew`8y*B20(_o} z>wJ}FqV6KFux=sNNkYpHl#&P%o(?FQ z&gRN9X1*3!%$dM8Qb_XGuvk7S@E%4aeA5EQY=&hHen``d#l* zxbcmC6g$gE$*yjClQgcIr+V4ToAAn*gH??0;+xkf`azlw(wET`*!S^Yx{XVXAFpbA z7|UWRFc;l!J*FTQPU-D2Qtq!c!{q$Upt#9M+u!tzw9+za2>%$JjcZpZRsXTyEyBS9 z1u4BDp5==kEr-N!d}TG6zQ5k2X>VWFFJ)-) zyUOlaX_@Den#ZkxavG&e3)%0h%1+Rew*V<$Jsi}vP0agiCs@0fUeBk3%&IF_3KeU+ zYPv2d^04hM70fvs@0jYORCst^CZkr?V^yjwXgUdumg{#tRqBaA2fW#2wVK#Of;Tg> zU(7t~-A{(?j4^;|heTSa)d~9&VEZ*SZtf*H@LFw(bhmg-SwA>GwctcwAKiEQKE2c# zjApq=C?~)o<$+vrJ9#4C{_F*uP`*)X+U!0BNdAShSf{@Ek6V-e*rY%?QBw^zprI{_{mUAuqGAJ~v**_DucC{ccI6fUa+DP3Ao6 z}AQ^3kAe35(Qzzw6i^t@*Nmkx7#i)>Nc5bM&0r1=LTvaof%UA zvH$3*&_Rq8m1FI4Ds?nJ9=YUmeAm$aI);hzlNu4)Kx}n>fDK^o+H2Bxc{?cF{|4GG zFDZ}YrNAy?^Uldoz}$|-MC!0%nAoaWMkU-66VBP8W01X*j3$FbKb{K1ZEwqtuVc?5^c)#CWrKXP7g zz$z|~OlWTM8FLcr>IVvbJNjJH(%YF3N4z51S~iHsfM-q{dtaKXhYwMMynT6yt=3?~@KPfL7VVLt> z+edpdS}(`Gc=Px`r=K^+J~>1&A7ii;n?qy*B~6YJgPaXgFH3Op2^eLJ`VEH3rYV*VpP5-5oyqrl&&kx5*I5 z>Ad`SkazSKmU7lqq4$qjMph9c{FuUs2;?*w_#$5VP@kFc>2gjhZ>`lnzWW;5wiSaC zR&o=`5q1-W(-Kua`f2sibhJebQUhHMo;UxZ{kt^feK7*a&58b(I2nVdYW)Ai$#{L*p`hE6iQadsUI7Z82T>pK;~$k2$iPybK{V&A(;s9ls%1VJf6 z1;ce`$tV5r%}B~Bn#{jm3vooUcB=0&$XS67?VD#dS0$jV`EHK^DY@(3eto@T+?MuNkbAP`&O}N4Sy59$n2}b3 zRobFhEd73-*~7Ie7CIj$H}+sQtd68B=Ec zg0PKDoiv9F$?FV@^WB2o49iXF++>bP5f#TwH^Tcasi(EHtGPf2X^FSS^YuH8K`R_X zt@$Ko5VzIOJIr=vZMv?I`?T$flxg@oUyx#|fDDSFeGFY%g6_1Y=Q6JrmdbOzCvR(?~mz{mL09VzhU(T*-UVe$J{y797pmJjwEC5KD`+yiXw$d!oA`xTG(h^x3An zQaLJbeB(R!qH6DS(N0$G4EH9H@bJf*qP{Q)t&Sty02UGE`<_%n#CA``N*WmZL_&zZ z_QC>KTifY}z+^+Y4jb)@`tkl~j`i`6{PHtZ`TZ7Xp?LxV)l8(XnjYrVq_e1{bL1^U zL(s-E9->;4+6gruaA)yv3#Y!typC!S3wgFgZv4njBk=`?%aP}4_S3Cv>GQEMdx-SR z75G(6(=(WE@$9=_t;66^t?OD?6u8po$c74Aj4i=wU-o~H^^Vb%1zoprY<6tBW83Q3 zwr#7^u{*YH+qP}nc5+WYFYY()cYf|YPVK51OEp)mHSsRqG+DFJ!!L=%pUD5^Hbr* z;js3u&5#+56`U=BB%N99v^$Iv~?Tzj7QPh&bvPISII< zB*IW##>T8@((1mqw=MsSZ2$RXxbb&}Li+vIQ(4+%PP^)sSh}BtMFmfsWdmJrWGaSc z+XQFG#Y?Zl_dChw#4OfwV^5x{S$Nys&zHm~bkC1DTWw=Q_JoATbFYSv7h`UuXG*3e zc1N1;wN}RtT|^s|Q*4y%y>H9V`?^KEUvv)?I^T$@uK9ktIox3~zrFruWa^i&n~vI~ zq^@A%E;HYxhrY}ds9toN5ugCN!*erWQQX-YTXLzvmod9^@%*`)?R+|h&(4}X#|y(N zwlaf{&k~8BuiE>jnD?IIm4<)e>{Rxn=xu@Ix`1BhHCv?1J3>vy=HVX7T3tQ~O@ePju-!0>L zEqiZt9(H&-l=S*>V@`Jrx>EhENCUvmngra7rQY4uP6h|WXA}+X>NR&Nhf4KUXj_G^ z_Tep76R&fG&^m-^U*joFQ9;A_6C1$TaaUuG^vD7S%8nk6SIa$LEQS`#JK1n_MC>h- z(D99N0_zQyPOJ^mm)-L^^E^^E3~?hW`8CBMYJWOl1mkqFI$5=*C{2yQphN)f?XAj= zS(~^TAk=PKG%)rjnVM~H(|$M{GFnCvDCV-RMVCV!_AmUfd*jaNZae_=M6@wf*01FA^fmfu?{oJhz?&px!bHa&)nMLfJoyzvcX zc+@|ZouHqMem;c7d130h=#fTas`%6DM?F2zF^|nLLoD_rDmvIE_2!5UMN3J;l zvh((XRff{gk$m+1ZmO#CrQXf8Y*qTK%X9yj8dOwtAQHhqNe&qRrbhMB$1Fnf`JLtS zUZAQLJe`=uU`({W*2*ES9z*6))@p}Qp&CYP5&ji31vGuEYG)52Ev40IeG-TWLkcdI zc0MyAhL*u$Cx%e@Z3RDpnT#zl7sb8pbB}16L6a~|PjAanMmBO&Q2OX2va66nYbMi~#k7KJa{;P{0blz7v1%|HIe&zSGP5C*F7XRO-3gj)O(wjDYqL9k0rtYTQMWDW=@d2M;WI zY))QLIF*=NXtz>Pib$0oq7-`V&Vv~wTD@cF=H6?OCnpOB7m@p%z7U>MQL-r#9VY zW<^x8vPxmKK?iqOyZe zHELnu`}6aPsa-|oQmz*fA>@e+#Qb6OOcO@;Gy;V=eVNSI;27bUVVU*X*kW1X$KxA} zHc3-(0l&R^RMtRB1=3MJIzONAynO$>s=KduhtOixx04S}n_C`~N7=gqUFXf`hb2v# z+r@6)f=%`kL0Kb`vA~4#cV8&({b;sjs@NYj>?D>X*BmYd5uHD>(*@bogEesAw&Cm1 zcB^9uOX8YqZOxlL`lmjVi6_H^PP!k0G^kVwa{>?azb_WG0{z1uK6-%IX0bLK$_hIc zbvSu_7ak7p$M}nvvL4|JLlE#PFMC7olL1lK@B5w}?{01kcW3}b&<#C#0n+zJ(WJAx znETU*HJkb&fVfLS`A5Lo_H|+tpjn)8uMFW>qU7==Lx!(hbM*IRNs51QG#O3dcZVXrgui zzeoZ{Y7Gwt6;Oz48eHMP?X>hC2DM+9Z%f-|buAr$#td4i)=lf;98R=I)nzMbh6oO{ zDQ4QSt)QvIArGfg-Jl^gg~eVW!!lZpotj3o%FL{T(WmI_#L)oCqKgQ+HqV`4mwrYt zU85ECGF8)w2PCN-Y+0&yI|F1(4u=oDrixQ*&gSL4iC0blLtDb!!GXn<&&lF zQ*^OzPmj($9*^`}E4?@a$5G{BVQicJG}+!vObQXIZ!0Kt@|LaI(R_NIk5))Kc) zOBdAhzH_)#y-pF2*s#j3Bl7MmGqm3ul*!Zfm52exVO}xHZd&5A_?%Zc3gwR!$k5Z3gK1arX5Xd;wHy2fyF@w&uMSZ?lB& z?Q}VSalrRn>*KW(BC4v*)@$JA!D2S)&ez7=x~E?W`cGll3t~Rk^XJ;C5xGjLFw7V8 z*{Ge^)}!EEg;&CC_*bAu-c|H3rN2XCM|pT9f=)OdH{~~BC?G+BP1ZW;{q#&4vr+?gPTx(LRWyLbXj})hfwThz9C0kR}@74K7*!fGuND@I4 zsJ{v%0$pd=>>3}3NJi(j@O@uwNtKlIn(q<4_6^pliO?zEz9M3qT8o3d+D6XUf9a(* z9&egunBJVxrwRn#IXtVcf`yFDEZ$fqlFAI>ckq+N)oX<=(XUy-0cc-KR|Rh!cKzH@PGW6TU#5eysx>X zFyZ+ErO*L1Ks@Wev-bd`gk~D#{}DGPmYh{N;V<@s>gJ5eB$Q;oT!&*x4-7Al_~8}{ z-GHjR=x}iJqqjS@C>%Rdt4*8)H*(ulPg?y~^}#(%FhR*3Y8g{w@>d^P80}vdMBEIN zRTPI+w^}Mkgg4c^wLJJI4oIijE3Pw6Bd&Xn z-c0uv<8?IK#=}Y7ymzAg4b}|TEqWZ;{h3xcJ_-N_;Rc-IF}>YtJC&v+&G&Qp*J3uP zuL;-V7*j)1i`|3IAns%}bG1&v#*4C`1DELvy+AwHM7?7VTpGZg~|I2*+E4%al zcTC<3{>#2477EGR)gCH9P4}E>`s%8%ioV0LdPoUL_Nk zMCkrl)csXD%j2Y-D?U}3LK@U|=u3uGQO8|>+N&GbEY&(3It)ovrHUvaC}j9_CjH*e zryt(6Y7jr-yK2u(Bm$RrRP?g+SPmb8qgao}xSUnH{G27GCQIl2q_18T*!fyPeO^*Z zt>q$$uZ8)Z!O2JLtt#(EwzsMW*JrdQcPev)m2^vfI=m<)qFLaqqB(DF70dcC74O9O zz^goxD^f;DMBqNEe;0SvWPdO43JUvx2<-j-D@k)Q*{h1^?p{IfUY;oSLjJfSH%M|z zU$Di^$wU-7v)GuB3E5~~sq|Sa+&%sKzN21KwF6uO;3zOt1QNY+ zC9M)&eukTj;O63bZMQ^=Fz57{uw&_Q>>E`@CL}W({wK|`ogyE!ld_J&bIEn)J4_a? zIpMx<4uY1lqFNbn!VQUX-A3NjB5c3raPA05!ebNdR_nNxXc;2n1O+j>4P@7Dlw zO8eR|lMSkE!o?-waq)ohJO4?CX49!9+(G^aZ!$+?So+sx>#_%KC_)dEZ}nTvqlvk2 z;{24K$W=>u+g&knjGY#=Pk}(SRdmMOCYw*@5XFS%qAk#5fsMg6UJeN-ohsCTNg&Tp z=Gmq$5rsdLelPWRt|~$O>$!ORwK?nTCl6Zny9jDghhEx#B4mhI11`IdaUC#)sidPj zFX{bWrjF*!DV1PEKO|mPY~q81U`vBL?`^X`cJ}2!vfTI5>uqe=n3!q4zdXKZV)z+e zmu^wW`J2hRCxu>)BeSs~_S10I;82Gs&X*?rHSAM){b)KN6$%w?NG0Xv_+Nkm^XB>v zz2jKYT+}*L!s$(NM0$(ea6eyS zorcdTvsU=;>GZ0jxPijisTeqao7t#ltyn*&I|%VOhjv5NE8{A2wWzpDVqN~}XHV|b zt8;WcEi>cvvn$o)^5U?ip85FnJ&a+NrEj@h!HBTJmJVd0GQM$Xxu-dmQwxOlAr1MAUP&!wvlo*{n{MlXwK!` zRj^S3G=V%BjOKz(e}f;$6D(Dxv*pHSu0)cCN^!uAt_@`tglgK7RXxQAk*XYxyk)FP zfT2fpqE_K&vAF`HEw+{(t45>!kD10MkXTXQ%tCooy&ceZHVf03B}1LB zu-Ej4p0i^FTCAImM zl5>rzF#1cW<Geb?izMv1NcaCF*}%D)fN z<2^X4FP@p6x@dOhDra2zkl?j52CexJ@Rto+IjR-jUw&oy#q3+(o+3n-hU;oyX%iMD zZ`u87x||tg1ys&#(Ovur{RNe9i`(Ix<06VVz&kq5Z2K_tZXe|ttqG9^QVGpsvd%U2 z`6m&ylddknO)_RJy0$h7!I+&PP;0D~@jEnYp{6}rcvyk;S=0)+>Uk)Q7Q-Nf=nK?l@->)Zl zM(+uA&z)fS5k@QGz5Cxg1+ts^>FFePt+aTa8SY>S>)u^e{UXR<*_^yE!|Znam86W{f^t7S zPtgfOaU`QN%a;{W?9N)mL&p78{V^q(@v)F6hbc`Kd%sO5>Gr0ceYM-q*1y|nM>2ab z!je>(Po(DpcaU4@g3*H=J!4q)zQ35s@Sj>hYk@TonQKw$`RpH5x^^bTG}e1pN6Jx* z;uT=01sr(6g7)AMGvAbs`mZ5^+fIS@W{m=T?CUK30w80M01DsWhl*%r!B>~T$zLSC z_!wk#;JxYM(LfAz%XB2@eb3W=XuwND#g^PC^0|X}S5l zliNJRm>%HYEqoqxPFwJE&k`9mgHc(8GFY&g`6kqSCCXnPRzG^VfMnAl`1gaa@ z;s?8j^LCfc?|n$tMN69CcN5-1eFWhjx+shsG6Vf1YxQSa>r@(Aig^@_JeDE{zvVqY z#=M8Na7p_aof63j=x&>rmE%##WjjfD!mxG(ESUTHxVV2rYpqe!Op;Q`cC!8)f+Vkf zR#8c9gK(uTE5p{T=nD~xpg7o>P+EbJK&u(Vk8Wnem1&PN;;7n~Zv(E&1nTAqr<$Rs6t!?>|LI>3M#c8-X zm2IUWo`aKb`fzSYztLrdCt3!XIan$R>X+>P63jT_B>^t*VL%?jh<)RpGq*3%T*2RR z$a)lo9Z=-Y{1+afb#D-K+g#zpFyPOfT$vhBZJ)%9awIhny9m#lE_s3s#VpIIeP4y& zY*P3!^bswo3V7yF+N8#s9a;?@#k>9nL?rQ78AOR5k5E8}naFGODLcpwVNj6Y1_eub z2K*6J-RYo4peG8~$i<~Y>91$R&u0J32_c=D_LkKf_GVfs<}cR-b-1L3uu>4u-3&(6 z!|GA`E#(W#A{aa*Y<}{tEBDN^j&S%hkTtl0ECgdSsje|YEsm!H8^iv|y4rM6XUv6q z_|6LmOmShAg_2$c5S890{LDAuad)B~6(|%vhcoi!#R>v0PSgyn$G0~J=G}k5>{b%ietxeFJSk|#KvC*Cs#7B!9J{U*h>V*Cq(1ME;C<8i#bNI zYVO@iM;F+ZOJ$nPhhfByu3y_vR4&%}oRW^kp(n(;`5%inUJG52TJfaLfKZd|k5WH>koF(`mCyzTQd zdw2dfJkHf6q~96BU4R8pL^c$}bJ1h=mp2FxU3i=6(>I$nXrBO^?YqroNb{_j{OXCf zeSc9D&5<@}c|KpKkq2{<+N^%x3p5I!*6rpVAgFsPe%$6uoJ&!&?ek_f^}g>AiSw-wynzq5SN$6KAvAf zuX^PmU!!wj2~=Kny9gxsNlYv@GejGF!{hO@VOUX0qcYrW`qNkBvgg0M%%Ir4-L13% z!r(jSt}P)LqaicC_UP40y5qyc+0vO`WBQG%<`X2TD;XGkaiI5r7GuRANOjCO3Yz*Ed^?pA@bx;zpd;1&8>dSdFa$khS zz(?)NzLeva)6+Q(IA0V7UlD%cqBA~SZX^SMGj|86H<^A+VGz+xJa)73on&8=ygIY* zxc9r`+gii&LQ$O$3VHN+#OQ0=scIrB?WONnVERfEMFj8Hdws?c;|@F06V9l#J~7CE z-qw0-LKpiC0-i8iA1i2cRR8UpXGp$o(;nDvV?EK*@*LV_x0&M7eR9ux8;$J^D7D(^ zFP?pW(XeMaSwC9`OJg6WD6IR_?3bIkKpYAt?5j4P($M1gEK|!i&z?)Q-l*o@eL1Gj zgY^;Al%oCXOjclGCS{9>I=N%kbF`!mt3t~Te%b~b0Xr~ z-9L&vTonxC5N%c1KOQ|G?`84~Jd8>ql*tq5z$1e;+Qmmi0}D;e0v%tXYNp3eZI}G3Tff;Xyw>!5%CiUVMC#?I8x8`ps))M332iMgj&s; z)%Q~iE`fN3!sBkQyEm-p6BV9H6TFj!pt-0$_D)p=?W4PVX#}7>V{za|BGjFUL;!Mi z)56tFKSBiuHq%~5_5!{5B~u&8&zszB1i_(ktR&Am>0hBKf7n zuab^1x3vIPisX3-9=s)iWF$c){FNCC-|+eI)*Hizi$;{&a7@ECu^g8fB$RF#d+IMq<+Slg2rg<8ve6u8({6Sg*o)H2)o#+AZhpw}vx-yEqOK36fXURZZqm9N z!PCVdw11kl<@0rUBei*ck;;P4F{N+nM4w+e(&yy;0I)*uo%alln9=n6g`IpB7qOv8 z(OnHiyP`DP<8s~8X=!Zo`-86=23pmA!h>8jAM0#X-95MIyhm=gEA8*ogqbYfP{275 zYQRr|ph=mrTP2m%O10UP`ghSUr?=sG0}X@I_<7NWd~Q+2GnmG%!B?Q%8Q@&3cxHi@ z)I+lh^mY0)p8bRBfj#>xxcW}*I|ezLO1kkO+q;7`nvNjWo`-Q)id?)Fx=CGE;09Sh zkB<%yq#}pLY7f55AuMwXdrgJn#D3jp^a(+Je`wHl?fhq1rA`{hg%YcIkcli;$9q}g zBweM9bZk${(<|=i^p~xIh>O-LXSO!QlkVADPh@pGY5X-iOdip)_5KT{8`hu0YvCLf)bbjYc!^%BRU11~lQ7urJT@n8xj;m0=%rqh zUqJ#N&n0g3o2o0}VJ1w-(;K?U-H-jl$5%`Jk5n5S7F+99vP+gfQv`_7uxZ?U7_Y(H zeMq5lSvbhKV0`UUB0ceV)`SrL-btqo&2{@_u^X*zxco{1P0okqdwX;aSo#y@bHJ2} z$!uQnAwuL`j22$N^ujYBK0u-Wby2BJ`Uke0L-%!87h!SbTIK!T;~9 zVvRik7^guEfM@aUK?;Z4zGJ7JJ?R3_C?i7HFit71zwm6{iqG>raw>e+F#GRF0cJ{! zP$*WEs(;|90QtUFLt5L%c6a9cM_&DfoQnPZ_BH>*#2?yX>I6K}Y?;yK6nl#t8_}*lcAsCH%9{B1U=pmE5Pfy=1Z0t}P!i$NuSJKG99m^pavk5mPu(2Df_ur9 zs^F=11 z{K5Ttv8NC$vdE(0^VTh|NBWT}KT%&YcJAj@Z#<1vgt5B>>eB74rL#2R%*I!waP_HN z>T&|ZF!_8xc4ze{7D*ou9i*zHB)C{Tt(s|JBF)XQHTO0STa$o*BKH$zEKoI|?r;F{ zIEj``kpWna5WGGlo*EOHn~2mIThq5RWthZWh{}luEWWirvQAH_s#YCtZ4C5M7H1>T z577958eKEDO?Hs#x@h>)G&c-f$cCotcr5yxqZ7NlqZH@U$nFDD=e)hCE`no`NoZn zOyQc)4{wGvO}RwdP4l|BO)>mk6e#hM#R}$hMxg^xmC5Eb<;BN$e$K~1Ym@wVNB=WE zDt?8kMdnIC4M~HlHsA`oKSQPz8KI&Bhy1rK@-J3EF=I2u%*zw}Eb$h^_)`9e#$xQdqgCMrIxt zIG};FH8Cj8H0Ov#r#XX%ALsbAgy0-Q54)2CvHV>uxPZ$a-?I!)?@^IxFWLx$>!LZ| ze2kODz5mTX=4kb+_;$gSPNT=&Ydg>ZOHio1sZ5G$hZ(`szyYSX{^|lQ+L3c~HzBDj zQ6GKy_mn#(17EInyNvm8*DiE%nbQfe*D;6vxQ!uKQaQiva6s%8>foRg_HsC>r|2W8ZghXkfVZ#a2g?hAbN4JALCgw{_>Zsd7Ma{SYuMev*FXFHqAUejkl-Qz>( z$-=s#2Zx+W(OJpmO!)(PJb0i~KmmX#Qb0&xKDDTBd)zW+L9qaXAK6(w$)%5Ms;OXn z1GvQ$)bv$N;`?EI5pKUGYaKL2n{kSZ7wmwI3j+VprqR;s32zW${k~{^U9|_#cI7z7 zVqi1iDks~`s$_2{aoDZie0qb~Ge9*^I4ZYaTlF;4K^e2-d`M9=ghQQ$&^c#fiE_&- z96?`ezF^{6%=n4~&bIQG05PJ?G19m*kyn;#x#VHup7vwk4mQGl@Nw-dNBCJDLNvC) zujJ_dN^V+e9PoZG{ZhvTT{FJuJjbY5+$i9Tw3PQ8sp0zqN;(F3X5EXLaK}na9pLDx zl{}lqo{YRpYL^)vypxTP_CUHOCA+F%vy{U4LKp%5BMXVOd*@4+s@7hlc6?5D?cNrh zz3_Tvhe;8g9b=X}J5cLMOR_{Ao^4?%w3g_#I4)Thx7i&ZefERjV9EXdM zS=XcKb*x4ApP7R4^6)h~+#SPPzGBSqUvmD!i~bXfJa&PkvaLY+y%6J&K;uBLC)fmt zUzMgbdVLfxfmJHSN@rL^>J?KqF{UBAs+jN zfKjBtj7xvJhLnq`3KB^SfuRKANh{hCi{{{u*ff2l~J zy{DhkKt{|ex)oIIEdS{!^e9fwocbo?_mlD6it(7R8GZWUQiz>eiWExo`yV___JqR`|0F1qlVTy1S|_jiuet}j>`J3E2(aMF}Q3P|NoP+WNZ4dDVL zD3N9cJ8ifT#h`zt<3Cu>KT$yR|M@?o```l%&_8MY-?#tpWg@`#C*BXq|9>C;-vI^& z|KC6S@4IjK|L0r(abW+3d9f2nqW+&5{O{BMI(>lFDHHwQ3GC?w=Kc6{t&_^@rJ-$$ ziE{u#Z)3Z5v8aJK6{~=X69~YofIG0d|9fuVNC08{-|r`L&I!8lfAyr)NG*a9cYLkq zIyIZgbfk86U-Y0{K}W~KP88BooUIayQ&JE42_(ftR@3N~4?3`+I^@c$CtUwc^+h&( z!rui?aL?JUp<)8>-6F9Ds2OrHO~N)jaK9bO{cJVlzqvXv_80+vhK4-=r;LW;9Q6C% zzP4K(oANN?1;B5yUcg!cZ;kt33l*{J?{Hvrf87Gd2fhF#**e7^kixMa#^mfak*KJ* zxm=F^^b&l$9U%GfwfLGFfTn}&Lb*)$O)@i?fVIm@#i2WSDV^@3T~BUr*&|0mO85V_ zgNVT4Zi9OGVY$$eSRDyRPI;IcV>-22c)Splcl8Rkpiu$5I>q_E!=AnQgW~rxFKwRI zl}5|yuC>Pb?R1JEIeGZ$IXqqiL*IG#Bo=-t|NY=8yjJRiZ7vvco&dOQ8FN#E;gx1! zUcsLk4!$Z@Ru%P9slhE_1tS0FpR&?FoN+yh^_Lmh7Q$B4=87Z#o=#`#F%>7a(0t{d z<~lw@fR?Mww|rfdId!UX!@wd11>IIq3mbK6Rf14b^O&ERNrv&MmW%pX_O4cXt%OEI zBwvnG@^B6gm(kGay*1PovU`D`y=brHFTbW)QTwGWDsQKAJ_8ceH{Ivs2g(ZT+fEVB z8JEN}Qj~@g2a&C_2HuLVZnJUC>-4F+_u2c4FP(L}@G0BhM{tZWnRPus1zlOnWWP1r z&C*|qT}i`#L3y3jr!dgE1v}%MkR@FEgdxfyBJ2_g;p@9esYY zAIf|*W^ZBQiS?W}N9Xtl0OU5A)7RJcLdCAFlOX)Le+lcQhNK!hFy~g^Gy<|;PSui@VWht#myV^d9%E4=J6!LlP zqd2wI-ftFYS2JMArcv2KX&Cy@jg7!-tJe_nYr1w72kGZ#lpa{Xq9Fs5Q$lawJv1!- zm-`zpbD+<6e*7?reaCoefoLIXZSsF~@dKr*g?%}+7g;zPFO8LzhJ!a{A>KyCM#e+t z42D&%2X-2M+JlthvWg|Pdbry6zx6k?3sw?)k_*-=;6}vj>-kwGgT-QQK+Dd{Tcs9 zen9H@cZFS^`xi7Hvh_MOr5wfZfBV@VxA zzC;;L?#B82=NC$2?D#*|IRnrzh9co2jY!@}(@YYrx@bOqBzvd7_qmi?hYcAqSEc@A z{^%lU#ud^0Y`mu?GI|nv!aLE-)G}$c_0&6BTOOL{;ws6GeK{e&*2>o6hA9wz4QqZ% z5AppIxPKeg;yu&2oDZMf2|heYwq4CRYu;OvQ&Rr1I>QH5B5`Ubh4J08-p&ixc$ODY zy9E(`>U(+3B;c!N-mSkeSHc5dDQ`^(8NMeKqKik^E3M+!s2eA>Dj$F}2%?FX@Tufv$Tb7>t`|BLV3 zh?Gy&2?*}+Xxif#C=NV2ecIN-R-Pd}@_#1GP?h6U*5}j@$GuTGgj57=Iti0A2n<$O5{JQoaO%Kv`#Y0B8GTj*(XN|VAObS7UoEcm7-HX z!|P1!^C{}Q&p+j|Q<`>eXQ5$;WG&C{*}Qq4hnY>eQk`!qJYsaR(X0O6IE+=OEgsu^ zKiD9xw%U{6J@nkqiupLLA#HiYRX-F z=69?mPKF@+S28fiVeMWm(MHRz$o`jWaj{c+g{tsB1N>ES53t4yEYIyj>E+Ew-#4wu zl!1H(5}MuZ_Q_NiON_udkQ$RiM{&X3e3sOfhCh^0=_LGqdhZa5rgTgEBs|HSsYrTS z^11)@MQ1!$Gr*Vbxa{I+C3;v!koRu zR^i>&O2l}PJH1D|VUE_r%N&{a7R39YAgxdPH&^3Jbttp-Bks`5S67rNKbW(*bYFQk zZ<$3JiliRVivi9nBD0)MG4NOfX(+smwi~uO6&sznt}LQ#iMP7oeDDF--k=e40fZN=Qc*9K+Jy%&P^0_^Pl!`^Au04l0M4g>wM~bh#QZ*;{aATb4lyre z^t>=J-;hF^fDmH`UB_!TxK4&fTHk)Q_{F|muz7f}6+|q`e5c%@-|287#ga>@^Sxqw z;5~p*wmN4Z&VYUxZtRZ*gS<(IQ{;;<-&99#cFw-?tyy*BDo-0FHJ9<5nS+A&b&Qyi z<}jk_su1?tBm8TWADuqS(2gf5em)sdG3dGjw{Pn_@`?VjFCS6&XIP0kKM2L7j7MVn zmbJ|vpRhdCxpGtSW7D^hL9iI&#!5UgZt5nX%>IhgiPzb9;b0vCOtha#(5t1vET?jQ z4zA;LT50;PDQfvl`^J1A8N`z|thD0YReTx455&u(y{_c(si#1?;V=XbI0UZ!13N27 zwdz1xkP=#L<(AysKn5VUe{*o~q2$7TLsyu_w^bdEn6VDSU`cAbNGO~lBl=;YmD#NE z6yC8^BBe8^(pa!s0uad~5~&sv5P>krx0p2CBwUKeME_lAA$`Ng*gg8KhE7`fj}|QC z{AyS@mEX|tk$OJ+t!NKVDIuX>-6l+k zVk|RG94PX2_7RK%Z#$_ByZE6ko^>tJA&o*oFJK>x3XRphRtd* zwz=2NquM32@SpPeI8REor?y z%)1@vzwEw5^x9C(1Rmo}H+UHmBNg)}6jr&f-;UZa&TelZ-m zHFt zL=uaApZOXPI&z%v2L0E7-u z4(3qDF8YR<^TZ7)kqN^I+zxD{cTWHn`zBCY?)?UNrhh}6YWyc0g}ZtDARKA4A^=G( zmED=PcD6?*K`m9-AA%gIFs)1~0E@esSb??+77?5bz^BK3Qg|CkC;rhlCt_e*&1RRQ=^Toy61!T}f3P-Mm=hU zLb14UE@+_zl(hl^Orq%%Jh8;Y_B#m^8rN^H4Es7^Jg!-#8kuR=mp!ubl_fI)iy3l7>On;F^V5PZV zQ%LJQLTnfUW#X3n=>yyAVcgxfh5P&0v@&c@%7^({7MD3i*5n!jJK#&`X+JOKPH{29o`4>Bl5O_+Vg2#~@TLHIy5LA8$?N6bf$rO>&9pCFI7f5Vv#VvT<7tUbq z#6*bCIQJ6L6$@p{ajHV7d>p$=W`zPIHC@-mI*4a9ebPByV$wf$l6lGYzbHhTbOR|m z(wHv4QW`MB5(qDq;7^*-pF%Kp^5?&+3E+MjPCT~SrvymK91w6k zw# z41uTP-EbrT?`~%(tkdIh^B94I9Dt8?fO2~OUfykm)8HJ*PU$!lB?H@|49@MAp)-Vu+n4Q z^~j4KM-TmGPh75p`q!8%k(Kyi7rY;*GZ67}(P$~~LqTs?P)t;4T%QzzYPpKqWd`ux z-ap`hFuN=wn1z~mHd`?%qkMUP!-@^NigNZ#+FQoTX)t&>OHU;LcBrHF;dQsSqpb3I zS{wCd!wq(580l=DpXd3b%o2APJPgs7<2wt^qkWV6IO%zrFO`O({M+5@=^fIhN=my# z;a;_ii790!(uakjG+nj2h!)j^IvO_DInk~CZ)CO~cC$D_9{h*M& zneDeVc(0LJH@6j~>q~hu-^OM*G=)#gSuJjBspYfR^b};CVnRZ!h5Zh!h|1$6$sTe8h+2Q^RMil7!3e9O0<7REf>Q<75rM>{66_XM*Bf~{cX8C0t~;r z9PXbt*J4=-ddkUAQ_}D;Y`Uns zA=SYgw8bY0*piBhOuMX{PX|KTxLdV76wl$<>v|i-j_>h)+|EwEjk(P^ijXpPv`st8 zsXA5t$n8qiNosydjXFk6Aw|S>-|Q1Y9O;q*hCg%sBMraj!!f&Lb9YD~cxZ9-H|#ll zfI@H|TF|+wpdIb)$cF20q*;u#5PsoR6!}R;RcP?lq1kS9OK^IqXsT@=34(G&C9cxIX9%ke=Q zwcL`wJznS(#V;vVZWwg$nAEiTmVFCee-2XkuJ7y9cb{x4+@MUXxjz(cuL5?`>j|Ip zBX3WIluQomhSRY%raP*9%G42woNOM?%&@89QPBz9m)oJK9Ho64PR7|;RHb>2(!ctN zYo7Y5hC4bLL^QlM^ zmcukEF4yEcZ&Jsr>^a@5S#b6)rP;hnVK@!PmUqXp*U-5cq|_Sg?517kW+%xgmmhJ= z(@<`|{~*Z1rDU{1n5JI?Zx};?&&u``Zo^b!#v9$rmT_h`dZV7dwV&=UwxawwaQx;m z+Q0X5CLE;Ku_<^wLy}!aH&k6o({z@=>T<3RYH(X!w9Tw->i<~~>&@gc&!f*_TLZZjY;8}dZ}@@>jr(yef1%w;Oqr8yppxA(oL;c*q0MjL=W22HS5yGhL7~(L>qZ`p2x{Z zZYQ!Ph5mvAAq7dIdH(Q-z0>JR%C#D7*`20X6H_ya6N zti_{oIUV*y$O~ZOhA0}B8#K@6b)S4eI?r2TkjGXB7DhH#*sSkM^I_bpan&rT324Q< zv>ZzbjVFwf`hOy%U{U|t&9WqYV?@jLGaP94b71>*Uj75i0eEE7t$mqKQ7*Tm>> zW@-6=#xwcBu4nya-Aes~%DI1aRkr!lKK*6K!a#!qg3GZRQNCk@V* zWn?rk`Mv_7sgjc<7L(@gV%9!mN^QWJseicb!sAuZ=snH#mMW`?R>JU0C3*sobU@RY zY-Kis!JJ2ZUc>5YcpNF72?sO1)(MI-y|D~M=15{8r_G45fL-dANiP+sXnhDN3_1Uq z0;orbeWm3A-Nnh`CDquyQgM12A@u{vFGKjL3C-N=u$fIzIlU~8$xnWNq|X-n?2d$n z!$Zy+DyKR2odG+kOo%=_Ii^D}*>*prLGUTNt}_HL^DtN%44O@^|I<=F&W#=8jDd&a zN^^=z8BFhjBxHoNWmJFneL%cwrDalI#h3P8k5_F7B^LmBY4QJuB48n&PXDr8^w7lw3V{(O>^SIXE035{V(;M$<$ub$ z=;zPWqh=u^!#sGeM5;Skbdxk?msil_?}Bp+wAIyo>YNJQ|9^Npr|3$fZcWFwZ5tI- zY?~F^b}F`Q+fK!{?TT$wZ1k@B&pF+rM_>1KF0#kk-?#Q!bH2|rgZt8536pet%^G>M z4awJ+ld{ZkH`N-HJcFh>w>@)PUKVR61VCEP?ew4IBpK}SX0+uQ{d`}peTK$ry4 z?JUat{-klLZQUMknA^a1Sz%jucxNUdFpg74lquk`T1{8^ zm4L^ETvck)jv-DYJ-r_$BDK&y_1Yprq;}UppAr5k9zt3>M1ZS25}uU-2e~L)bTxL1MR^x}fX za1(BKclV0 zbp$XN3%W6;_+TMHzBJ{%JJQuZ`X(}xh{|T7FLtpRY`9R5jZH}a#p2j54lp{K?lw8n z`%nlu_FDo^?vI|Rc#zZz;9l|4-BGu345rv%$z3%sJa-mJl^TJ)X@^-~I5br)l?MF3 zUpk(KFP?2nfc(z4r%BlKwN&?-wiOVHd*1ET6>(dsXg{QP_!+)9A7w}-RmEO2SZ#UI|$pINzhBY_0TKh?6TsY+G3Fq~j6 z5R=Fpl7#~;$!a650JsBQPMJC33SbJVj(pGWnmq6PqGydEd_dM8`l%J#;Pq z5zk8Zy?4XDITG9sv7~|kx5CfM3XiXai%FTZ~NH!}0`7!ZyRkxlpy5ECd&TOI2!;N{p zR~w^xQW47xU3K^-w~Sq+n7-;OnBWSiH{7?QpsHU5`j_ z-Mc^v@{C3C=WDi||MPisxZi=9Bp~i}h?#af(`Qqwq<$x&u|xO6V`|z4SN-F9wPR+J zxp$?T4j;D&=yYARINK~b(^AugOfU>=J}1+JCoF2k%IIW=&eXO4G{$T6aB_;<{dN*cL ztJgcdDJRWVrdz~M|YaU?D_WI%VYs0*OwHpsqcMf+PCXjS6NLk^7!8kD!9{csSvIvzzV`i$c) zw2$#C2pP*DMx!X$m}MZO)Ce==~?Vc0ob%m z8MB>`&o=+v7B0P&^X}y#PB~9rd>2K7Ox+xA0tI8hlZ~ zB#q|ZEEX{Qv8HHFL<*`qZkBQ@U|-r7ai_X?6)Vn<33nD;l)nJABt>ldncT%NaO91R zITorcdyIje7mLs6Znd%7GD7(CX<3=yM`N1=5&J`ExN!u_2*BNxwcaE)maf#x-knh@ z#`LJvr&QU{o##P`j=Fqt?6kpynlVauJw?xcYUsP_qg)FOh=N2Nuk*Vgn9X~7Wd+Dz z7u~|Tr`J(MIyWO&ynYZ9{gjtC7yjD@DR4WzOQGonJmQ;8_2c|=xr}=)DfRpdq$h>c zZNH~f;3;t}5&DDqD~Hz9<{$`+QQQSp)U^HDimUQE=Y~{sv9%*hUBU zwu*#HRe!pc6*yQ`yfX4um@DH^wF5zgbXItXOr63chj#l3XcO^uqjZaIU)4R#6-ye* z_(=fZrSz_@f_#zP-t+>kQ%tR{wc!2yst-Y^Id<-99 zLE)~KKdh*zXp}IG&&8eipVqt6nUzakjkU5S7*JBykWC(|&s#eWdpOnDlScp}*@#Vd z-CMX^LDCH4`j_Rsy>82^Tx~dLvx{w1NC+}W6px_l3sdj*FgjZ*?*p+BmSpyN^lBPE zQIN$mKd9&S7xP*5{1vb)Av0X(&?uI+{|l=r;c8LSTAdc`7`pSddGC~nWe{AS_s;cm zgmuPxQ&C;JxCN;{?zxUQae?rKuRTZRJ~5+`=|JnSG9y=+E_v?HdDDT@oiVG zlyX>i#Sd>UCK)8uhn3)3)3QEvnbN!p3lpV6o>PTC}G$S#~y- zJ@(3T$zXEsCSt{tT(LcxT_SZ^=GC?Z_Jm)J+)xoHCIT&FPE*^}?4VjLvy?5o*qO+r zjb&@&(*rRos>d%Q?K->oRtGx+;uB>s1(&mZ#>m_7&3k6-9Le*^E>%`zq&K zN6~t0G!BA`VR>jrMU`LD1W9!0=IgX4CFNy7BXo|vW2~~Yl!SV>KgVu5*-f}95ERJZ zquU-fff0Fz2vSX$0>1k%vNdu>0Do$Z&p64G4!-EFR#y!_GEB?<>-p{NIeq_80R;FJ z6>)S=D;ES;e=#Qh1xs%UT})+&;9Xyeks3q4V>NB;4|fWt7MOY0?>y=%m#khl&S7q>OgLaN zUE{sMd5xblRyIPIm*>OFqNJn`l&9G|F;Sr=HcU(#F+t<99bP$n;32F%z_@a=%JDsZ zjO!;Y9GPr*xJiLuw~}X6mYg6xmcyc~#x$&=NFA)XHf9wX8S`jNn#*yD!wLMcorj1p zzB@cy;LWzo0=Yj}bKp$gJ422@bd2$D@{{$=-*Xamu@xREfDGW4``-9@k?@rB`8%Rd z&Te9Z0#oN8D2gbbiOMLTOMxp%PKbYgb)JZ6ieN?3%%i2(VbtxoS<-4Cr$dM4$-|zu zA~V6D1aGrXi-OkA4BH|uKLQlMJt;%Le+UZUR#ySu=>hgu|gj+n6aO~ymU?{?QobK?x4U8QS&;1V^og#FJlg?zj2MYVhZqL@QNUOsGsacJcqP}iP3?-^B zByb#K(Kv73uoz6wq06@eQWjRz3oe4WZ8W(1i}MjhAV_FLaB|U7A5kPQGvrjxOS8*k zc@;b{hQXt$s5P1r2AaU$Y^FIMwwsnpEdZM)Qy$Mm7%!hnZ#xSPJ9aU9yZq{#yhn8Y zGFk9XH*NJ($|g0>eEwpmhbu8pJgg;CK4jnZyeFl&B9^O zn7(`wdy%Mp9modTE0Ldx(9d8LP`A-fb)b;D1Lx_1!a_TKaLhHTR~as^nUv|8Dp^$z z=7uNj-W|OPMnHP5FE9>7w1ilCUi^f!*;Et!*ZGbmn`OX5P-GF$a*2UtDp1|18nR>? zZm|Ue!FzF^GGroIG<)u@hWN)(*Pd;{IL)=1(P}5cs|730*Y1YQEogKCM4&@)MW=?J zJc&hqS0aLj|0rmP)iukygdjbv5hwTv%O=e#Q`ZmR5&Cu`%5SDJSl>riDAQLRYA)Xq z{@6elY@7!kw3Z(ncZ#x3FLad|@BhKqh7I9%C&|wQX~*r+0irRqSc%`!yF5KhZdg?u z`|MKiZoO+Iy`Hn6dG2<-L@wBxXP{P^(@ z@~2thX;772kd7YSZsNhNq;%Jq{;)fb@~T;k%g<)#hw}=Cn8*g_UU(u4ej%SVn|x#; ztA+0V;DrdaUNdPm2BoHY=t}`q^$9!rbzO!}kMWzQKYTY6e9_pLBJhZ3kVfU~$*XWj z#|RH{l+}D%&8OmPcTw0LLJsy6*@W5#kQu? zu+`_L3$3v%yUrY9r#7Wm7Z%VLkll^-@jCMsWrnGvI?dt-kVTu{ zu(+in8_D$!i4+#gBsq#Dane9t)NHw9hseO78S}QK3dEw}Z8jv$8cLm{dDZ!6{=z!9XG&|T(24y`yB8w&jTeAVoP1nu2IS4Z9 z*;F2y+NwV}6llE1ntp_@`ut(@^vDnY>!K(T+@SID_ z?B2OFNLmZUOy;{ zZIAaJlLPgpL}kR{{7Iz^1ohSKkBQV;hIT*VaDjVXDK&hC1*7*MhdTz@%^`@87@l2_hRO@x1>H{LB z*Qk0rMoRYld5s2+)Os_^FneH~_k{JOlESXUBl`QdeE%zD$4Uq(r(Ar66zoMi=d!6nYnQAw?1EeDtEsE zG(O=_npUyYE8yE5EE9IOy4))?er_UqO(5}T(yc~2Oy`Ta#q*y*db4q>N_-#gJB_1N zSRjRP$>JUp+XN$-+%%Pf;^-wZP=#)HMRm`;R^p@JSjE(HNq&BovO1{2&<7d|pu#&B zz{%`q%S54!nnPz9VreB`D!v|fW7FMh_G*O?#XCnC5Y@?O!<(ZiLc0Zhu|c9xC*E5p zh3_8d5fKU-w>^_1-B9vw?}yp1`W+||IN0o#A+ruYm~Vh4UKTDr;O@qtItU)?A|u{46TVJJpC2EDYRqp@j; z6M4R_6SQwXzaR^FZ6;~=mSn~A4NwsEV5nTm;s)jNMcKoL&s1?S&0*p(+<+9EgNZ}L zwFMoi)Pj|oN*nck-bl-Ds}Z+s1NSlw50yiNF_jfT16D7rdR2R_M8uN5VJ!iBc1uS8 zwqLG7W-dKjH3_!bUQ?`uXj+lRy$x?qNfW|$n$cU@+1s+c31hnWJGrEG6X57DSUo^sX z*?(#P6%`Wd(^eUYKcb{fu&XvDNyI_E=11MJvIrh=5f=(72jaLZb>MX@gvr(b+Hh^` z_l^24-E7lj5FJoUsS%o+d&D^AlNf-umsv$e5OqAIdAkyE0ufuQyiBOY)yJt}sa8vj z_}SltH}Z}b5x}`Lqv1$t(TR)zvLHI<&QmElCVP?9fg02QJ@Sl! z{M^lk$9`z7B5Wh`N;Yu2xw?qOSG6=f0+ZikPc`Dm8<$h-bRRBY{MWJDT_ zO2Xv~da~+yXV+|k0QhEu{#fAmPp^4Hzy4W6KvyZf4!EHwhnp)2@R`T7THfMEFgY4v z^2@B*;iH9x+}6%<{wKvvLVu|BC-=poum#a0{QA|-DMb8i#>;@8A_&Hd;d1WWi(3wz z-b2GTu#i!o&HLj#-p z(eQp#B9=9!thKyGPz&`f;D-<$Dil;@Tlv2X9LfRVRw|hl=vcLKTJh6L@R>vNz+%9Dl$sRSXZYrprtn4W~dg9XdOz!@L5Y+i;YihRb5mG@juFLdSwB2 zO<4M7pbK%uV%4##U>3M5+d3{W3@gm=6iE>xUX?Wkjt_~lY;{U#@u;rb8?EMA)H2D; zO1V9a`X5}dN42dsg4zMGg)~2)^Xt9^Sn)~E_)~~M(U*2H8oaWaNN?G;0EVOQ`SA2> zH+|n`-_z&Z=ydQ|i%wU%W)|d!ZIoJ8&nzr3X}*zGG(1g{pAQiYdO`J4Hv6M+K{>$BoY2ABDEJ#4Tkm}S zMH#PV!y~QEtkD=N1(>TVP<(e8mbCm+eMa>7{A>0Mhx(pQtezGJDO7k`@2agn*OyJ- zvW_*3cy?Vis1P*qwteSGWXoyn5YX&bqB7Z|ZV>CG72D~Ik5-)l>MZp0$$iiHev!)a z9CRsnl&$!98Q=5O3x5n~lf76CJ+Q{oA{qt`V*`%nI_!$78iK@yoQlN#zNA|e;yrkA zVly_-Bw2rqFd+TkD>=geoyBY31!y8tH6Qpox}Fo*PetL(4qdWRE~E;Cq-0zkr}!A; zEnP7ZP0=r1;;<6OUMr@l2Gd7Og5@-;t}D#eeRMrOBMMS@Wdh0cfRiUw6dw0vu8Ym^ zX9pH2s{|mO;;zV6^2$@j$wp){lSZ-r%EKy(QN#%z3f_7$aE~)mZ;?m%hE}W(i2!eo z=?~NbD95#SxF3FT$s?R2%!(!Qz3!H4e?0~y%k$pYG_4?#07`p%2}3h8v0Z2I{|LRS z)S@@MorjIYbeR8kuZeyQM;BSfF6ZbtsNv9E`s(@0o6^K<1ClEXS$~#5sQ1qXpJ@f# zIZZ1lIo~uKbQ0S~1fgog(IZLB@H!arHqIwDF3(RaVP1dd9uNH>S znxxGUu_^O1;c+j!N!#60&b#+#ZxCz)vW`kmrwQw&+s6rpzr(Y*dE=bLsu6X~WMjTM z`Bln@*OJC&e}dRAc3Tzm3V15`H!lg7iglExLw=?c{KyLsG~l(DWj$Zt`09Qe_v4x7 zdau@A!23QFIrW(JUUfoR!SmFHpm{EIM8xAE?mY&<9Vd|O%&Lly*Ft}( z1uMEl;J(X5uJ`NRW-z>F0%QCbS*xU~i}_OK%)BWLm;cZG&X$!d+gVK}e-WB*YFDp@ zThJc--vG2f3zyVhcG*!6e>&S`(-NfAS?@h{Kmo`zMzsR7g4EYD4#(HWr|=BjZ^sIu zRbY{Na;DvRfvmf8>j1__gFPT6Vhfezudes0W6Z-uPTlKOTq?20DZO#xuz zxw*ctciXpC+%i0Qtm(5AcI8}+@2bPip@O_~mT^LrxTLi*6am9ka@H2+oY1H11b=GM zp45H1mJR1qvbVeiYZUx86S-SfAQ6~nw9rKYIZjD{Ph)%-l>}>n~jA*KA z(h`S28o zoP8Xb%I&0(!t?WZ+Y+|?63|CwfHOs<5=mPQg4RciN=7MCTTpv{dr_TP2Si=*>{hJ3 zicdygVq8%f3YuuhtBT?nM}j`y-e8!djewoQb_+JP^ZS`Bvg~LG*~i;!X(p13l6Rzs zTDfYi_vN`@_HUj+eg?@C(aK;705|(+`_%Le0(!gmuwgJomQN|x@2mQK?n3EgbaOK) z0Hv|?%}}0f`glaKVSu>bNV--WymKg+3Im;HeMya!`-lw05g@p00sG^%LBLX zBBzfDh{br%S5-mLmc*@KDB6yg&C>3?>I{o1O`0FiYF!q?kU4oT8S!5HCHxd*cipOw zJEyXD49x|~TAyI%Y9*0>CJl-+piY{7$pgnm$2WOq7Wm71vLy`1m?Jx~uyC<)Zz z?ngrR8#Z5GbcMxY!;k+0SRf+V1zFLvC3VgjXVCDuw&#FLxo5jETucV8IIsbK@Wba6 zV-*W44$3d^cvHtg9oqMg$2vg88+#H`k$6ZwPVLljOkf3_WrZe&HQTe0B$(Om)>~a1 zhr`pFEnVAQwEU)ov|yA9j}K}ql$v>E5;uPXnhfW>eP zpE5ESQG|u)tRI+;40J>^NQYmsyl@Vq);X3|4rH(3b>}e`FBDToGAVRBc+tYD-O(L@ z&1On~1OdmJxAeNL+e96$e|PNsFg@l!#BP7WA0LMJKy6?LUXVjzjf4YnqyV?To-Jtl zkC}9yINVWA&duEpPLCjVQ?uP`9qie9sjNn^g_v|#8;XgzG{2%+RoXKy0WsdnOlKiB z8M(k853ubC7vk`bB065lmivN^5eLRShVt54#UGqv-89)3GV8{VAqP;EbKKzqB<4E~f?7?XV{oRICnkN=lRC(@CJw_lg6_vBWP3<|>ILi}gIeBD97yqt zcD6W=dUv8n2^M;xIs){s2-afS_SI1Npgl@tm$oE!iFk+`~X zK(W#ds@w=T3Coh| zpvQLgUdlOV9oC`3(Ap~b{dhkM)|-(0P@~$obRWInDvg5y;y@XI#$t&?%mT~Po7nw_ zu?qVB@ZwyU!S>w^Ry5kjY^qZDqbZm+$NhDLiyiHskRjc7skCB7t3ucNVaZ{C*u|y< z}Bt&zVkMHQ1*Xg)938 zmI;V8*C$8KGM7HKE!iBV(GF2h?q=;z>zRXtBPAS;-hBNlc$tIF*G-)+BHM*tfwy0+ zRzsYJ?P6RJhsYz2I>l~LEoK@iy^<#++#J1vFjrH-5f{|(96b!=jx{CHA%OK)0*Q25 z(&-?f1aBb{PseIaZ;Nc%?j}X?3{{I{sFJ?nF05z9ospvGj|7 zK5HphjJKb@m)WhfARF}Ja81M|d8&)x#2SPtb8d;={D~j3m4dW(Qfbrf1M;N4I3gG! z2I;(&g{af-A0-ZWZXIqMItuk`g^ha>J#1L!JnEcJDQ%zBi>^Nn7Ia}@zcpT^>$r?B zL;~%>1l;0dJKpWrhdWj{$oFv&{_LSYCWjK;4H(p5=GexgqU4V0RIWS6!krU8aeXI2 z+7bpFzg838=8I(CbTeP4nHRJFo~s;zEs)XbTMSS@fZon}^C77`TLmD#(b@HOYiI;I7=!!q zv*Teq*nob!p6`zNmZOV4AN&6{lJ(Zta<0U8D zf2rs&0;C;E3MQG-3bD_Boc(nGpLKafMFmT`%tR{V(^2R!nyBhkCEc1f8rwITH~)*U z4Je_LRzWszcGa`N#Ys@IbyVGpH%PxyrZzTEhbj5{jH>T|w%5KQlVTwSGjL1^ zo#=Gk0g%(woLnxLt4r$$SjlrBCmf2|rAJT}e86f`0DRuPgDT6kOp3?G}GqY_f z6Y>l{pseIh8&~stP3F*tk-pQI;e26h8a(U)w^|0YP1bEg9b8R+GRMMwi)w@vOF-3Y#y&H4tnq_@PFv_Tiz_ z!`xAczC!A&9jMU@gEg;j99%h`8#tifTUmRVODe*k?C91W%R`6eh}LxY9cKe0%kC#v zEYjRAiX*a^jV@%7!K*WMG)IzXvPChntob*H-3P0cOEw&ANW4iWusm0i#yAj5jPPw4 zP{THEP-~l8P#AsgZOUPE9+;Q?!+A6m%;Lll4V3_)@I#R>mE%@h`B{a-)6R0(U`*dB z&JLL`G2s7zwlzp}T(o^z@uY|GT!8?{>7d#}c&efro?vG&lnEyqFfCTg!GYOx z8(*!Vsrr}fc10`}3UUVa8Rju1V(LVI$uA}i2{nnuy0SDy=J-GoRnZD3tLY_z^5Uv& zGb0Z&%idnHw&I(`cqw>XLvi5{vY}8Kvg%+aIb{v^_K2_vf^T$`+>zwdD;vE$7Uopt zhvKEBCWppmX2n4YO`hL9%>)CKUPq)Kn!w57A=n3L;UKn8o{5;tYdC$DAIYdHr})Wv zzoSaTrDIopcdw)893Cm43;r27kcbipj-T8(iNH|@QT<8%k-(b&&Vbl19M4X~tCF{y zWD|-($1@AK=oUQ6OTi7QWNG7#7ptPCC#1=p)3e5?JCp@r5*TAnfZqOY{4KY-ldUr2 z-Oo$_ltIfpjOn(d(laPCOQoUFX9J1Q2)<5uCZx;Rl;3L<>Go8T794@X?U7&yQLt=^=kqXSB)DdOP=i zRnPSF4-&yAOLIpwHd@wx>xmrn=sC*X@^H3f1>dpLYr)i*V@XAA{R|*cDr-dC^l%tX z;#RduMYFULS(J1v%v94#@FOhQ7H1_D7;_B@VJ&?rL!iFP0Ro@|=8qs^RF=Z5F}612!ED1=1T zR29p8S{gEz1py~z^kwElOa>B$j%kBcH2iv{PMvKsc^U60Vh99M=QOmHzEM?|7Zvp4 z=EcHPE~1L!`kG><3|O2pRRfP+ovn+L=7io;{s}d1@gpDmucDDI$-%1D%bj5dlSCkJ z2<(1xJ65)Quq^!_`){n|0mD;JjRn=Q;;R{&) zS)AyT+kU@%Igr-ssk-dVO7)|!DO#MpJVHJVUe^n_hpc}2bNL!mC;Ouk7opmQt6o@H z$6{!fN?7|8?0AclUDmej^=&2FY;ErNFTJOY5jJG_Sizz1*uWTjzw1=N0M{Kxn1GLx zfQ<5+Q2~dlDWlp8I(G-PT`gO#+-ls)l5=%dZE4t=9^mV%q1uU;;^jX$Rm!)M{zKrb zg1*P{x7aIi{C`?B0D=%M3W&i_ka{Bi~!i1jIr14W?mqkm4_S8%Jq0>HPqtrI$Sawx{pRWbIKYC zWG;2Ld!9J=-|6&!>>J)tfa8=spa`+?JBoyuak z*rLXa(W3HE``rE_d`k0?&3byRNgz@fAMD-mke}E8tuSfj@BKJtYFkYej{|sW z1hn)2TayB0qoRm1S_83__UZ6vh zCaw|zK1KNK=JP*I4*>CpB9cb`$2R@lxS>((vOY)gLA}1_xU!vRNeR7LOcx%rd%iy3 zrnA>MeAsEjgkXKYxX{S)ouBp*qo4~JByE%z*%alivESDacjHsd%<`y$w|nv0YJV$q zOB(5eX7?8Ufs=$nQDUn|9I{5*BlHWEgTnJDj0-Knw9BUoAoO+H@goMyNW?!id{;_R zNV?G%(Bx?~4D>(<4t>+Tv+XHeLG-Yhm~C5!>}sW>;7*Gcey=5E8rw;7?p8aol1jJB*(7)%|MSBb04}uunC*vP4~C~P zKf>IWm3ty~9_rzFJW*%koEEze3M+@@@8Dm^mHz>U&y|QCWIpq8eNu_b%|O+nJ5mGx zNH8FgD5vUq+d@w0?W+=~CqfLM-oNgbT@2clBTHw1*G>V75V0w(oAFWo040J~^P|p9 z5B4O}*@+2(n)eF)Cstk}^_Ybf_%2O7HTP6Q4EA0ns2bQG&Eu9#Sq6tm`QvIrSwcxTJ$C<&T(ko#}+O2-^+g8{>fFU*pLuaGav0S7fU%rnRPs@l(Pz*Bwxq5bYD7zg#iR|IX;;^ z#dY_g$Er3}Shk>DU^8BncPYSzIc=9a=b}BwI$Q(C{H2jMv^ZU4Mj~hiHdY(#9W=G+ z@R!hNIRq?+Q@=T(W8#aZ1%wL2D{fN7ad~EfFtJON!KJuLNh7<9yAEd7bha& zOWxY;9PRN%}nRmvk{~3kw+|P_mM( z(P}3bz|Bg|n|Ii(q`^U$A6@bmt#symTn7}zf2?}Ch3%n`gG78wr}C+@8~1JIH;7$J z9ofHgKRNf3-zCOH$E+P@jBVZV8JJ&}9!{Bv2O)J0nQBC0l z$qH`4?BCz>mHkoDbMB_$PU>>kXI}ni_Sb*;Q;zf0wE(aD-?wHk8RV}Og~JEE^|m8* z>+^ACNw1shIPwfuYXr|pN0Z23WBkdd{j6X67Xwa{FW)fMJjKS%)*m*HC@5_A_05Rx zPSWMAr(=4}Hix0mna+0U5s06|d(DvdT$tr)(m_`2T;+7V4(MpEJlmp!l~uc z8Df2*5F)tfC0FaHwL2;HaXoQ~w;J-^soj+5O|*1t{dz-VQFEC;d}h1wZZLm)op-5K z$+84&CLp3OqsoazUi~V~UHNsV^J*OxKJcvIn?DU#n=z_`OC=BqeupA14Mb;Fu6XI( zzPTOy==QplIU<^{G&lU$iiK*orO;%BN`sL5Q~T$C2={#r!7$_gXWs$rq}FpyD;@k2 z;%?Scsb6moDsRCI#o!YrJ5%lT)>hlAinuG6FXnF43ZZ12%pFe3z1@(u3?DY9dxUNr z?hPns^^o@rfYtgUxS7QT^>&b++ErVFIfS^8?K@QrYAPnTJ14hPL)IflOf<+iYgQgv zcS&O+)A0aI+uGx_pw=todCwg4pl1Bg)7)ttOZy7ET|_os-=BYY9xC^^4F977emIMM zD+Glq@vLSg?&+eZ)X{VV5aPkdQpSUo-o4)1ah46!(?c$wb*&D>oy~IEMF7qve{H?J z$?kH=qv~kPWF+5cRq%)~#)Ei(XDpjD)?_bTF8||z{B`=Tm?1#qf%w<(m96YD*J`#~ zf}O6i8v&W4nQX=XgZ^)&3jH59??Tjua|e*W?#kDHT+w3pP@ zbv1a__SI4{Z151;Znk@boo}RNYB{i^`t79&%zfIFSdT8aM_%MMlON#^gC)D zvNQzzRqENxqk~}HkZP0Xqn`2if*{ptp2i(P2OqsQ@h&LyeZ_0%Wp4M!z6EP3r{Lb; zaZaa=z7Um6Aal6uUz^JQhH}S+3);rhY3);SxRo0}i?8q>iW*dKZ zA)(nks{|zP^?T!7dcB}yy2NOh)c^Ln$WRIH6&>fad7FFH#fAYrEKyA$(q*^kw`7F7 zxRIfA*bBdPJ-QN4v}}Fdhg-lB5W+Xf|8JQLk_l$=G!Us)Y)6j6P-CPMVp>C=g}NAx z;aPyFa)Z};tT)@;lC1U9H9-k!8^!?C!cV!Sv*h1lkOQO#V6kLN$xYnbwp1ZL5dFxx zo?IzE{gA!t_AHCjJ7UKUU9uGYKxei=gr{ zJ|J}>0p)7v91h{XPn={P>s-^3Gb?6da%o9BqkjJ6AcCwwVA91!j>%OF>9!_JJzz^#g-5Hlv*^K*g3PXQ*J$u@B_nHhz8`g zJ^AFNSlHfg?Om9yESz~ML*mnGH)gU*hc<9#uCAbZD9GZ>XmqvIlCj-n+k?y&F{-Gy z>Tnh#PeJ2>6|f?^H-Bp`IXXLd>tY)L+4EA5AhdXACpZ*d_=VhIvr%$UZjPt}$wMfu zP|H`BZGK@IQRbBu?Y!}Y#a@|Hk3W|+aHuGBqrx}MONY_(4C~W zC0c=`ARSNwelT~wBx*E;i4GSs*J8So7n3(td$3{zFoWz zmp$B-|0GyJlmPEZm*n71SpE#cR7M7R7J*_t=P>Iaap763Xs^#cQ`rA)n6o(>Ne%(c%F^CNB(|?{1)FM56Pf zoJ~|z=Ix-Nbod@N5gDUPt+F%-n0esJ`y=rf656_FCC1BqxBr*|PC6nkk~%O2U9xf^ zQ`QCDE!$1R=q?1%mXD|E$*%q1`{God&T6r0F5tgh-@L{OG586@`8Y58wkg| z()^s$Fj)k%(NKByk~LNdlA(aukM?lN_|TH5w8twq!cFAGmsb7B&f4t^u6Ez3o+!Ke z$cn%Alqd)T@8cQYi&q~5J|=%PtKA9Vw`k8B-#f}z_qR9a5*>lexHKN)*YntI0jq5Z zl-sgC<)h9x*c1%uSsu;?`en%H-}428=@gAkjOOnph8(4)99QszW*Ze z#*4zi6k)fFEx?FO{mw!`A)m!iL@T-rD*VTj^5>6c-#Eh9#dX&D9}<-f2dlTONWgkj z5jZEbW`Wwsa2Z%=0zWciIDY=di|Vh1nU+G*$FE4F?b!B@02M_}sN|RHxS{z1qBfn+ zXoQe~LX4HnWEUT9VN+OK7<-xula`Nrg%XHup&k^_yuU7@o!2i(HZ2Nm7TumE%Ud|f zQ?rrSGaBNVpY`ew;5bdTL{WYoG*jZefY=+P0QyNaySwnVq*KAN+Mt`4M<( zo(q%{9A6iRB4L7zt=K{bI9TGCNdX47Uycd1j>)PAJ`QQ|opR8uucX?snag_6$|K`* zy}qD%3evIU5-*UTzEgEATMvVEBNMMoMPnoNi+KPu?mzgr$w5WlLs}MEfn`!WY^fWQ zv}exQqCaC3xYc_v z!Aevrj#LQkF;4wtH_!*$E(&D3l@7!Ea%B2;;_M1aREj-G$s5|gAbjP`#>cBfR+qv3 z4Wn|B(M?LFz_*kds3?8|&-?2R`jnZZ-_Uv`tr|q*KJS@(J67Tmyq?oX&AWRU#MG~q zdA80}c&#=!3Sf;9*X(jK%P$k)+n#g=QV60V;xay|n#8VJV+4xbZ@DA;&ZN<%j+16d zCYf0H77Cml=mT4V^JOqYrklGN=#R=yd+L9xsGrj}C163u@F0nm?X?XF>~D>*HK{Ig z^i?d=NlnM%C#g?v+zq`_%+pHLJCg$at(|eK)j`CbGjmu7dXSh}k;6BRiLS4@v9nAg zKisjhUQ^XRgN@de*XL9Tt;IXZ_2YWyT7b{g_yEk;w6NT%0y;C9^PzjRRRK7=Hz2$y zFHuGpi{Q`06`xGUNuQO!3Yv%bJv^xwxL5}UFA5zQtx-c)X=A5IB#JP8N{ z0HYDl+-jo{_ABMR*gp>G+t;_hUb=nmW3${z%7bDD*i6^g6yDP92(mk5LzN4Us=Z8% znexBC4P2P1s~M$TtgUo=7&y1iDm6PSR}C$3ijwnvOqrpg4psl$4nVVwZIkkRTnFDb zg3^r1wdy4eD8eS3?x7Ukntr|dtyAL6=9$`gf3ysdM&W*O;bsOugy8!yAKIZ+-zNhC zxQ~sFVoLvPZ)aV{=y|g#b;HCIoQ0q9y&i00R$9t;BTVZU5h-mu{AiLt8Xr63-^%&; z6m-iZhoP9(d-xHvq0;o$Wp+$ByTi$V|3On#muERLz>2B1yZNfJsvU1GPTpP8)Mhwf zrSKNOY)9wq;>7NQefNJ+ozR)iw8%*Z2zXVeW zB!G@qp461RH%n42r`h~5FpQ^U+brUuR+M^N)uw(1PK6eROYRhbG0eu*K$T}Jc)ya*aB%bcvHt7$ z;TLFQN9=p^iKkf*IQGSB{Km8Qa2}G>&ocLyb%Dysz?#+vl{#TXVG;swdYZgq)1knJ zJg0e@1op4^FM7|`$n*WENjW}MmDRQPWPT_+jrg1?tBreilMfxa7#vqBDXQ^|M5Zem zy_|->G7hT|W%d02T$yb4Y56jnm%E2wJ+M?VWcXb~F7BPZn(7Y=1JN$}a{9d1qmKc% zs*KIwH1n`c*R-G=ScGq4U-)Z5f>|Ce`%5D%o}SIa^PO#WXSQ*wISF3e_YQ78Q7VsS zJNq|FnYJG0V)=1v>dvMa=-28HOodu>M8am*8dDW<$lJ*uKz*9?A_tE-PkfRjc2Q`fM4yc&~P`iMzQDW6Z{5ohY0zeM#-|b*{+NOa@}q zE9I8fLX&Ib>YiZcPROxI3!pAvZdIL<1S&hTW~pn32c^m&nn_n*olqC1dP%KEU|HOl zz1krVTiI?OPj~Z!j&^88eX~G`d2h>aP2byXz=61zu&mD6yOoroN^pFK24?`7fVvW1 zv#+OkK6{V%gUokp!YD63F&yW|ZIqLlPUZJE?1)=MnOCmw1GP@?Yh2;^JL?TSy}}Lc z*|k4%>xisI!Wko5E`wt0GBB-duB_bG&QDw5Q}#5M{AXw%1&)OxF#m8|CAa=?*=%k} zO2%i;rAb)CmN0iGc}D3kpsRTE7DT;78A&o3xqL46DkYoDLLoB>CHQBqDF7*@laYzT zl3u~AenE)Bfk9N?xYbqq(vP(1?8q+Xnc`P-Y3SZNR^oJhM|bl{-;lRu(3plZpuq06 z2?2^IK)cak=6iiDxSOJw^r`;F9U1-i5*b80T3X=-H3R?0*Vngl%;U9m!K7mXN1nqn zvuT+9nG{VpQ&73uf^$`&v%J+>UE?|L`cwIBAM7~B#IP+eX>v7FBSuH2he(z?PM zSiyIX{Y}|ldf_wsI0@r9&=I6t0#;P%dthvsJW|lCD{bmTksAR0>8haDkMgA zRS2wE>(xx`^05_F6k*~|)_wav5*QhR40K|Lmt+o6@)$|jW23cz2fHtsKU`t^M+tvY z32GYjZ|f#S)>I9y)9#7*EU3Sn7``bpTO@VxWw;z?H}Jh?ue!$eF%-^PGTjX3TX00p z#CLpHe0Tr+*fbG?gN+)6*B|%+wS9d-JO<+?AB~%F5~&Oi$)_g(@M(nE&Uj|Rx?mCD zxmEKgmOx$?SBvunL-6Ij{}pg3Fi*ZcId5#8DcoeQSU19NygyOKZhAg>&*=H3!|cSd z9cM(B)N67tnx(KpplkPNsBTX0-#BzW^~A)xh-aLt>fljMmG;<_%^P$AZ9l89 zt%h%9SL!ZU?qhIYy`rENDGO4l@xK^*$LPq~ciTHo$F|WiJGO1xcG9uYv2EM7opfy5 zHab4l&;QwbpYx9QjB)a%K4grlTI;TLT52Oh=CN~Bd!S1j=)jr$K4oi` z{&8)+fWpTCW1oKXHHG@@g!!UJ{b?^0UYN5B=_9;K7WzIo^&A9K0&TWi7vCTK6ABd% zOx{hwGFBF}1x*G)T<+Lyp(tR0w|vvEd}CgHRGP)o*@se|bB4p(E<2V!Ap) zSC}ke(DDR9j$8}OHI;iK!3l5`d2+p}sTMg>@bOqHq=w%S z4#E*uWh<$1>^D|8A}Q%)L_or@<9D0l{P{$yW}cs~6&RQ6SHN!EdA%X%>SX!SWYU;B z2|o)KLZS`<^)a;Y07!AvZd+ct!-99gqSU%hTXMh?1(aE?cD-H0s^6bW>Y$cT=Nb53 zT+B1EqHvC*d6IW%69PHisFKOy*eq-jJiT7CYW`0J@ssPdxrmC$-@*P0-(NbGg*E~a z`K96>N0vEO^qKeK72W%=d#v9%Xm+4rUv#7{PYp3V)4^3PjhQOE>oUDmA)$DKhfb_- zOP9ujbiYS5rm&S+xZB)GZS$*i|DWgIVYjhDQstrug^$nm{E>OtJE7#e1c1uBa9(XB zIK1^jyuXctQ;3KZD1={}u8JptNbHYFN4x8GT3$7B{(x?=z!F2R+3hfr+{EYocH5a| z)PGT-bBYA)6%hOEYrc8S`uWFbw-pm9SmI-kltDr<6vX&QLz#B< zrGa7&{~!m(FwdOZL~|;rUe^qyp^4(2c>V*qD3o#Vj)M1|99kLdpK(gP^#R>+i>lik z+`kR_w6Le`Fw`-Upbq;TAUZXb-sQ7%KdyA`P3^RU_y!RVprtDS3ppBtt@_wDtqt_) zy6t%z)G1aLw4U1I&j)Oge1k^RPi5Gh%5>)np4yyxKh(}4-a`r`4bX^N#M>@V&S2Cq ze9wXb_yG-iQNE;FFEvE0Yqc6G$b}ukkO2$@zC0sqizSjvIL%0ci;Q^b?Pqw@nw;%N zf+tT)n=5K9ev#nLc0$%M3;jnBFTS8yvD8HtGFBkvlDGq%d;DR3f#{Q*C3&!*^ggNB z_o0k>wu>7yoi#2C3F6C|CO`}gs3U6s8|SQTFx_f_1NY%lR^I0_6Ljlr|uf8$L!8Bt65a!uC3q+ z&sOBNEn~&~rpM;)n4KhVw*8;W+mJ1f@=23fF(v;CV{YCnv!UZrh9;5u{p0?{#uA@1u~<2fBdG7`@5j;&;mi6~bu`!t+x-h)Ins-j9J%BsS@oPerLr$%Mv`?S2gASBCRr>4p=)cP*zxL~cfs~58 z{LJ1^1i5VH=$5O*-pb%kej%=n8VdYQK{Dg3o?%ad>n$n87x7K4xyEqXhfCyvcaDr6nf3QmqkYvGUCpdk_s4ATPOW zwlEm$+OJ>LCkJ?tS{-hPj*#e-ilx)s9*a0g0jqz+&;3q|gknJK%yC?Px+=;p4t9d$ zWFm&I`h6dsz(YsHlzFju{a+3Q%Fqyi1mVG&f*+8PIWiSyB zjV#LO3h(Kwu6J-xK>K36KTq&nc|Ts-yU3+*np6$+jfZP9%qI0d;XE%?Gx|V;S(;VR zX0hx!9J@ms$inY2a~iG~PH{T8twDEL*md(YJ-2_?@bUWoakDB2-g~2rhZu>>$#|R@ z=ixmgGc=S>L}gNK&g4E^IucOe_0dRE446x@?eQzJA2Wo&o35m>qN7yi{A^l6W5NSb zqoe*ZygOy-QO=^gIw6E|7q(woIiQq!`#z`DM0jJgv*KvwFR^ z_Z^iiQ3SRFh!3r01`@9;id>K$HL;~A(LczRdk(DPnutKrI*ibD&O(Aw|$7(u(l%gaIa^sJT4acm!Y5W%*$;X zZ;ZQVKMJZdHotzytQxfdz#CK*-EE5!vZ-2O*^XCWvVI72S7!Kg2k(D15P)8T2|pki zP(-*_Wh0J6%)_Ws5<6!>cV5@Evf7GCWiKl1mTge$A^CoN`c32wphGp;?-W2Hpc?7L zspn?inhfBz;loB-sW)rOq6Mc~Z?Q$>qLS9Dje?(A9-SXvs|5M~aM?aYD~l^dVkAIN zw3kTp{JbKH>o%SSnj$2W1#|gJnA#Fx48-(?P6?==S;XgT&;0$rJ=IAqa^KT~Rw=W6 zH#$B=0^5b9!*o5RP>A(%RxNG&d0pI-24~vaA}jMkP`Qvht2T>tbnk1;xkeF+6=*y|fQB|m zsd9M~=_yX^N}GQ+!d1K#>>ESltwC~|9B-yshd?2Oc(m{(tpzqY5vWG1N zG}=qjKe!frOkZK-*=}?G%iYw4-e{8P3xrGn9s=jRqm!Kl6Mq5_LAxtlDra#H?lO9H zru$oCnlz)_MY)5{^?-xU?$LL9GFE9}1$?+C;sRTBpC>Uc$GP= zCyrt~K{m9HemZ(eHi2u^2ZW`6g=eX{L zY3ftQbT{n4qJ`o>+KZe!jxRQ&tB#~wQud2Aj{dgkT9z!Cp8(rHygji491AjAeWl@* zbORroq;Fv)oG(YS5kxi5_|R+&JqG4fr^OCKeQkk^no?faSr)jHAx~PrDP5dNd;S`4 z4JS`U9GS2lPZ8+#SMM?;tX@T$Zcm9g^g9VuyuGdhn15spOoW6)Po?AB%3JwjrGHwZ zGN%71vM=K?1(-HI>A`@A$M{g@cZ%>p&BhdAurs>;Y z8`|R}RQg_eXG|pDCJ0Cgf7U_|>ih+4HH4UXjILRlc zOz$hV=gTihQxA>0`2Wev(e4MVK4=5=CgXxaLLIEC5+L7w9DEibD|l>PA@wJeDO(D^ z3EL;^EY+*ZM3H$2BRs){xDYxD3A7DIl}Q5hk8Y@{4R!$MerA&3<8Qo-Q%@0D(^P)v z&l!oez(QX4lTK)u(D9!gn$`cLINP$17dl5kDyhW4sqlBRL?i35&&U^1(woodB^Q@( zEue;^1LB3RDi|RPbv#Ydb2`bXsOf+jVhBUM?R5;r9Tf-uj45`cjWHeFhm@~-=l|f0 zLFL!BkWat!#!)|yZ}Qsy%?Wx%V9Ta5`>8sAB?GhL{LCSHu$5XqvzTczeJ)0b_yrF6 zGyoTQle*hbBCLdX+T=)PGU_m)=FY zAHiFlV@v>gKoWd4O@o-LK}K_qYJBQfE;)LamsRFq7G|*#nhZK@1m?p*mqKG^q7!og zvW-z+*_WY6G;*ZdQ-z9^kLHcJ%QOP)DGT<52MnMST(WgY?YQk_3a33t-VX`>40F3M zC_EUuKXMnWitLDb;#ar3t8K;LF99D%=oE2j}h8i1&N@=`R}Nh&q{Z zukHQpFOjn*Q))`tR7A|9jaIh{AU#S^fQIEBedABW3)jQaxrz*#H2x)q%yoqX4i%}x zzBgtI(~C`?gaJtQ{h6=Y4p?l+5Az9DNKE3>WHEhtOq7pbXkO41^`1 z0B=%A!se6U!LdWUgNN)n|ei^M_UB}A6AL`jMY-Y=C`T7*4v%V{j@ zb0TPnuv9^BVqqxb|DmX*T}k2~@xUTrK?&G5B-^<1^i1B*faZYn(|Ra*ayiOLh=P*_ zA=%$G2`OT_k@ClR^SC9WJ1gqfj%O}y{^`P0N3bkk=SR39V9(0Bvd$V*_SHVG_THRO zLtEFxmQI!P*x0P067=Q|G9ZM^y^nT$;Y23Mw-rxi*Eq;JrkKG&dR8~j&tySz=kdAp z`zc`(wQ79H9Vy=+p)xCaOG0e-MnU==I#Gb!saIXgij+~{VHDBhkLwe2g{GFbzggHn zAd}ga|H-ae99m)R!uUNlmd@wmTJvYA8MkN3dCYUF99+ z9<`HWJLF7d+SN5c13=vW4*!oeBsv^PWVBKLj9m z@N*jX54ss`o#|XC`rmhv=!_6oGXwUoWF^oQHpA3z8HSU3P5YIX{lC7CWg}{o(}Dl> zf6#At^pf~}ygfHOhi)A`J^OY~yTGEzkv<~b%5X;czd(6yUWws<_mYP>wK;RW7G7#3}cW z{I@+ma^E^T4>ixjw z5@1@mKOXr$KmPg@?pKNJy7>hV%M~Z$5Q}6v2V#i}dj&K$X8!p(EQJ%<0uWz?X@i@p zE~~IwIBds`B5LU9b{qBr@imC9s=NH@_FSUlcTs;{OarXQr({2O`8Hl`Lj|# zM1>X5&hJxvt@t`aVE(OMdn-R$nJs2sTmJg78#>J-I-(`zGxhaCULvIGhE?;N!LWj1 zKA@{XSlgESXI+iiBNcgpjb}Y23S|21$PKV*AN@rNw^`5 zn6$OHRxo}`PCETz((Igd;_~Dh*bs9sX1twn3hF|WO-~|*b-R!1U?9HY2BlytKlmF3SeAjZ}wc{K9T?Un^E3CG3sFqy? z36tVuIOyOxzv4uUbOYu1v6Y{*wTvx58F+9e_o|Zxbc7BNei-&ag{`Qo4a9__Q$6SC z+;!ti?j;6~q=dS2kEz!;-y9c7m-H)r(cA1XXi<`u*2|B!U|U%&O;*#N=7Qjd=6EF# z@W?oo_mdHk(2KyuxSgaSx1&#BMSf0j4fW*Y6%a}fRjEe(6gv(D?Va2% z?gU_0`WRm|7%GLaWx7WB)~0!VD1T4RKJy`C5gWf^4m*itluGjgg^$5!yogFuOiTK= zFR6Vz*c;(dm*dF^#pLIMTx-O}k`};@Jpp)sH%UPudr2ef0}$Y$u*1piOH4V+1l93T zZ+dIFGgI)r6&BU--=v^wPqa9vzErynux4zQ_m`{Hu|b+)Oidx+gHIPc^~$(ccR0Nn z9V1qjx~+3NK9?j`Dhnx5Kuo+$+Xqgcf*fb%rW*$OGG4~A!xjy3;KB4(6z}&*qN1G0 z5(Rm$1`7R=1bGc|fb~_E6v+z`YNN1A*?1{t)phR2 z=N}L4;Tv6%?PZ?bRefxPPYh4uMOYH3XN z&qi?0xNsC)_FE(@tYgfIg|#%M3JSC+!XtV^!BE-mH1(8{4% z&oDZX=~qLMzN&Al^HSV7ct!Rc-cZ~lyr4PI20|S{OF*#Kg zPtj%6^pRRGBzBB&z5TL2HUhIFB@ z)e;QTUXM<8bc&25kHDIQIt~TC@qyvC0}=sH+8$Y(se$Uu z>6U;uxV4amk%k6<@;XqSG->??NdPov2AvQk%wvyv7L8rE<$bk;Z(C<2_xlTSnsh*h zvPy_**9#4xIGsQdm^y2Y_NO*z`~}^{O6N1%?wD6Dqs%&O<7+LvXKJw-tM8mPD)onY zkib*b-h{93534n+3WUUkrc;KvND0t-WGVL=@sdL$4Qzt{}5%(9v8AD!y(DqS5?c zXp5a+A0gQqwTEs&igI^plE41|2={P}-Y@c>?;tbcJ~kO)$0O zlvJ_PY#Ec>4A!Yujr-6v-=ZpWx;Srv%FHFB07VRTekjZ! zV^r~b;HEUVUpIYHk|}J8XjJ@6lw$k7y;TME4wF|PBVR90}C!J#+^HNH~-icbl{CA zb#%o#E1y;?eNERU02UC4oUNj>*=i=hXj2^E?gmE`P{j2CHDp*^;$KXu-BFa+yeJtu z)Xm$9<BV-+|I*h%d zpC*+XZKHkm1Nvdgvs_M;RLB_qb5LWY6}+n5Yo>3zP%l3;MQ~MCzBdvP_A=-nJ_8mV ze7TiXgFo=y9OP6$lZos{)9J|-LI`ZD~LiSl`GtkwNm=oUl zzXp9ice{`3tG;VJrP0*Z6(arq=?i|*&b3WBS;3mlC`j|2#@Ts&+itf1cMd&NVu(lp zLeteqjZED`P9#F&Fa{H-7)1hdwB(x@GeF+FKZh-^;n7Y)p(D1MeXmcK4;bj0BkI`S zEd+^~G_w{4IVC};@}>-4>T*9AD44nMxf*P>yj6~2fg1Wr1*e{}H==>-`zAD1Q&~4E zZmB_X&LN=TAw?BHZu(YqpVUszmd~tlxcg=ACZ&QPry9$ea;N8i52l8Z7GCHUvFpxt z-VMbk9CB8n!TPfMaHXq=_3)0Y+1fAxb@5O#2?|8me~1x*s6yP3=WknHXl1lVM%yBh zQReEEsi;K#Ct|skU7HM$vJpx?U0!OSusq%4vkcSGYgNK5&uO_up%Za65zbUqRFyrU z>?aU|5RQp@dtasdqAcQo%ZM5ck1yL&-3vBFM{w2OIa-c#T)5$B@7;8*;bO`9}RViJu>P>X5!P*O?4yTX|m%8|H4 z=|tHP=mSiP=ZYl~i|HFz^LjyPz`?mKo;a$@t9YMZp8@jvl}%xBrlSuU&@jTCg*~h= zz>U^xUAoj6irJyT*J63U2|5G-56fC)>iLzzW_w^L%+;5rdKis$>wgzIkc3~2%f z1N07%bX<){EG84xZi?;sj~sH)SNOCTe5`ZxLdI1-@!`~tbpzSVX64@ZxyLo~pXBdB zwCSERCFd9Q@^1ldw?i0Tujlm3i@5&>a%~q3pM(8}qh)cmMoJIWHs9}Uz{1R6`iVIw zZ0l`J?YWHxc;u%lmNx)4bFeEK6*`1AsS~8@pdIMz*s0xNci^0;Bbr-J5CCHBvh(gb z9gZz%egF}3Qz#;0oMfY%1L~ky7>B{+IlY}f4)4ysSAw5TJ1p~B`y}7gMIW8<$8%3p zz1H{tjjaY>Oc}D~0D`OJ0wbM`1m-JureE`uoDM?_D(lcWZaU9ns;r~`txVk5%3n39zc*Go6R^Hp>9V)ZKM1pU9Vu7zv%+rO*T z2q{qZJp-b1Mp#0Qk_o8HgtElFS)9F^TR)V4$6Q;`o}~Oy130Tti}+C3d=hg8S6+`Z z<3aJ;WeEKDhQ@1ri5%oBd$m;ot$9fmy|Z0iKv-@-a6e?v=X?i=kTf{o=KF-4IT@e` z^$iSW?W4xCok0nh^NefFa!s&7u#ZJVu}REox|*FDF8QgariYvB-={X<7@y8k+VnlbBqns80F}}yv4k1{>qh3iM5cozzST&;q-cy*%(~o z<&qT5sul2j0dC;l82Cs;QpNSS7IRgF$yNSyIJ(T#+m*L*al2vM<{z7SI~G7vi7h_O0Dt8g)CX67U44<74;P%!Pc9x_NN}4gmaWYQJk)3_`k{IWgdF z(&Kqg28VGK)O_!6o+|;=fS0jR#5@J*yfcz6cEy~zuj8vcG;Yse$qt&H^QX`y5vv8>7RctLgQlo((#D;q= z%Y)Y?Uu!^ezDt_dj-~#%wY2kb^!s}(iU@QWZyd0T`Fd{t6e8>#ym_lcxt0a$x;=qx z$*2UGXa|h}spOl+wWnas z14RJ01n{<^fcBgMD)=X#)l%i(+)tULqlcK1f%^VA@{))H`^yw!O6MTW?R+!j6(~H! z^nbAz!9rpixX0CKxjvnH<4P3e5w~b+Ao$TEo3P;ktebGy4bUfr-T2gWd>DKgw%g=D(i_Q#t z_y-T+;u6q_mfCpI$EZ6uU$6UXldo6R3x`ST`B{Pf%h<)QO(*Y8zzYZp$3yUTgT*rW z8_42NcQTL+Ku=I5{BHDm`Dqu8RYFk?$UvPv$}i1RSVb@vI}k+_42WtVijPnvFE-uE zkO&P$+0K?nr&tZG_Ujn>4}1cU#R9*O3OK2;b7}*^00+U?)9W$yQqv2xYmhyhH{L)! z)iIS+)SVEE%h_$l;nE>EFJWi;gon?&aTuC$r~J9MxWx%}4yU~OHtlMxFc%ATtdwx8 zaPu%go)K5H>r)>n1l0ZqJRuCmR)&KIs^emvSk#BdsW%eHb|C}fL^OLkHE`6yRc-BwE!U7mYnuw|`Ia-1VBtX1;Mbv--vfvB`e`)M=<#UCEHqT6%F+k9;wo`x z8|jWsVwRND536UvrNE#G2g$=qVpJ^Fp?Gju@u&plv5n~c>@p_1r&Ppro-?(X7c|N2 zdXAv?g?V{}$pl&1$w>)WSxLx(i&xHTA2bw2zMaZ?TJm%H`a+%k`ZrP02*?R%;rnJb zasl;g?@DtCO#WbLX?^LxAlCzoylBQ0Q(M@%DH+vg6ePwk>_M$&&T{7HIZ(!~?{c|N zEkNglz_9@cDD%F4(2qY&-z~oi2l=Ikeh=koYqG>qhMhKU{n&Ry3!!q`6>zEJCXA7Z zxJ-oGl6c%8$K40cZ9_Kla!`|bl$rpGicdn@aM|J4s{P2LV>Ur)Be0g4ndrO|LK7A? z>-0R~J^;Rbx{5;^uv_UcWoofow;!aoGIyM19?UjM5Th6w&eb=(i6Aza$z?xoR8}G<J%tSG|}_K6DY*Z|_VHP3)(YK|3C9>AB`u zl@t)pWoBCUM91^3E`(CU=nDTd71zg{=eaO86~38DX0Ep|*YD>qU*%w?V_{ko({t=) zTmj$UtJZ5&SJO}*nu1~IAOwk&`UlZad=H>EyqOsv{Saayneo_#*Hfbd?16u!TS4;D#-VH)nw2ltq3g~IkqMI z(gJ?D4f|@Y)oh&vV7AJ4Wn@$6`z>JrT%La>yG_~hExraHIc5=Wb6ZCcV3ZEo`G2A- zoS8z_Z;=C3K?>Do>}iQFT&}J7+6$ii;Dv43U4>O^j&*2&bhQ5;#)6cf=NGQPopTF3 zJd4`Z=0nQ}XlbVe;6(9C_+JN&|LxuazRoAmbI!nlsUE&S^1lx5&aG zUv;FZk>4hI!uV=h_dBr0f{MVw`rZ`D^Zhz|eyf;nmjJASpG<&2fd7mb9q6ZuR8oT; z_;`<%g{f6!IDDj1Oe&Gn_)=5#&^=p%T4JwWv3 zZS^rX0L{ox$)&Jx63yqERq$??_J*RFi%M_VON#3QE8>2bod7VHtj+E8)hIn<3<@Pm z%6VSa<72w{%KPXIH~)ngSFbsIO@PBS|J;P|02Kk}c^Gm{Q2L%)=d@`QLs#bD<^q5d zY_-!x%9+7*C{*KKyCZG(L)UOLxxHpKAo$#`(tb^Ex%Y}GTp)NoKfQiWk)rEzRfO^< z6c5Wi0Tl*^AvAQ~Yrwe3_w}Zl)|I~q4-Y3)uO%c5Af`h15ElnI?K-}SKR5Ye>hMhI z7;oa|AG?0L+F#E~%X*o#Gi4olzhdh#26p_A;j;}Y#xQx`&Xiw|OE1B2^|VVV4tfuD z0yg>KidUz}gF*7^hp+&M*0uqFV(>i+Y=%QhY?2c7>9Wl2v5r>`ukdtb^n6Pqx}nVH zZF*O4?H8S9k{agJAzZ&^m+kWzLR-eJU&$y^IFyuK+R%y4%Zpr0yIWzZ*s9Za6?)zo zuF825dk|bb+1KUq&^-%oalX@Zcg z_nakOTznKzfbK@Cfb4s0W4GgclJlEv{^5PhzUv1*3;E((ID8xJ{Sp>5zCrc7+t;yG zn876_kHgC!N2XRBT!T&H%kzt^o_vE5f(IzCw3!DEsFrO4l)3r#qqAboxANOWOhR5= zmWM?0Wgc$c#8N=$dd9Y9>-(EkL(s(II(cmm5D-wWJa7&b;PvkxyQtHT2dWl5*puz^Um-U=-1jTg6+JHxFCF-w3M1d) z*e3b5e}ot;naJ5$&7mkCoJbu}$*yiP$6sjP?#!X-`QAMjDiIxR zn^1};>avtB=DmXcJK`w7QfU9)grnSZD;E2d68gfn*N`MTug0cJFx(Nbv*w=KChSvX zW@Y>DJU>dL;0mh z0)b84_c001)Y^e8FM}u9B=W-9rPKNaFUiSUAcF> z&Ft=*6tROtnSW%9u2}M&zgs1o{&_~Nk{^h^ZdW;>QcRxuo*fQ*sZyZA=BNhv?!9T> z2Fw1ADByCCYPVa}31t_dj6TP=b#uhjygV-PsOM9>?he{!+du5IpL^Lpv{?ma=JGS} zI}ST9FoOc+=1jfi&i!R-=srpZC#=hiw_mPc8sdZ2!sYDR_6t}u1!2hOH0lmEF#RpR zIsgXzp+=MKj}rdjg@fp(Cr>d763tlF-uu0 zqHMQcw;$iF&}GF{zQs{^(|RuRzWQ3>;02=yto7Koea_X9m^EomEN<(# z-dkl!W3gt&kNORW}1}le{bH0VZtCN`BA1_hUiXlG_$MN$l zZLA!jeKuK@bM?vv_CmXWlg)wp*vm;Sf8|ChO6XXNR%t*TYZWFS{?a@eL0)#FDcto<6k+)!+#C z#-RWh=>4|cRk5Z32PlY=eZ8|37Wqs&@TbMSLesTV!X;ahJ&y%j>M_JCi)5Oq< zY$;I~^J$nvKDQ_};rkld4$tg(ORIM`1+9n(NsSvQeJ0)s9F$W=R@n9D%mDcqg*bCg zQuDEaFn0?@@VV5*^7GlmjtB5QDGgMntBaXbhB{?&#@9NHsE>|py02TimQlv36&f@; z#sM-q`t?)7hTm{KHt5}c%E5}2Iyb#^_(tM zCpgA|vDt?rJNED51HKCuLOZ&8zv;Eid@oG`J1Fm$GB2TI(sDCqrsc z*D*YOzQ!nhr%{h*_mTdVJ|T|GJ=txy^4c~4;WsSHYhxiuL=s%4r`1yA;_I|_xIfsW z#~Bbi+o-PkF05z}OoQ1~8H-8h;Qc;ac1B*D+dUY>_$xa3H5l%=(jdFZ~dA4(^<8Nh^YM~FSDtUHOa5@xLa@(UJ1qUQSqM(kA z#)`v{6cxNk*oVl%p%#(fm79Dzs`tl!Qsg{GL5%YaltLPQd9y3C5>h7Z)@N+x?H&l; z3kRrB7WU%Ywu5M(C@WZY=YXYskMWr-k~T3!f)f9%UQ+8>>SOu(EbX@FhS06 zN>&j1k^dpf*(v2dQ^26t!ueTPEK`G;iZ{vF#FA$&l3~#=bkdl5@IwT+l2bY3|1R+7rPi0sm<`! z7N2g_iw(k=f__bU#`fp!9P{NTo7r}c&zT}_L;3S`$uV#HCNB;!5RhL2VyF`MKeHha zAem-0_s&Zhhn1`A@y}rair`SAK*b`qc-;?&_x_S?^-M9wPs9*iZ!ej$;A9h>&x1Yf zL}3`ROzls8*yDV4lxIU9`$O~vbu%oik_Yjr7bX@G>VyXM~ zh(r0~*ny#b$n32O1SZS2`D&)8GAvzwb;rr%p#;1@h{A3Ja{s8aAO5)R^1a6F7 zq?-9r**?I0&nO|Ocvs@yj0qknv3*s6<#Q70js(4yzo=o+P4QECt-nN&as$b8qnNj0 z$g&}Q;we<-#E3c7x-@Xoub9A*i=rGQJ+U{8}jsR+X29(@CnY*;IOX zFuKXydqje*7ln|yZ^Mbwf%TmVL2-1;7X)$d zZ4-u333SQ{STjAH7q69du(WuthVhTM{LzU&X>vu`S%XRXL<6W8+Sn+x{7o8_iTrWc ze8)*A>eB@mNY=@zER4*!UEGb*F*7sTDNNTMz+985bvTT?DrEVwYcisW@jecBf7FlF z(3Fm{GWRxe^@%)WQXf>axjBE{#pAwd!vQ6z#5DGm5|eVDY`iJ{IArCSFSyxAlp=sL zJ+G4k6(X2Bh>e>0mhS7*|Jd@qMEIUE0?Q&2RtbF@8SmiRSJ!E`xiVn9+VdCDc)}2dQpl zvJDf}pGobaWGfx$n4j}Z$?!WfbrLtS?Y z_TiaK0W+DLOdA0A?I(|za%b{9YYoLL@;k;fXFiM^^gFKnedflI$}I=9eV_IVHZHP@ zl@e{5@nIyIJ}Qj+y6j*!TMu<5TiGj4QDDVm%mcwOOgPrh6DoI=PASk>cCyt+#0$bq zM+ofB=ZS~ezxT6EKu8FYD1U)VacWYeeaM%FG;YlCN@~;;`o(h*R{zJ&y%u2h0Rs9c z<2Ldx7sscBN0UlY><+bK)NI7l{B`!g2MzJ}|9-yEPdFGbf0VNr3U4_q@|@Hb^Hh0G zy(W)Lx4ZU=u)-3{4+cE1J}Scoqj{J4zBb;q-3eUM47%bl&!<@2e<}?ejbNzheD>KG zq5io`PI-nMq|7^gfyYQq!CIy^18d09a+Csu_ngnW^0lCN(o2+Zzb|CTV)Upfqu5^BEAleBiOd8p~K9rs;_ z4fBItkg7D@o-CF@w5O5VdAH|ELv6$kSB-q49h-_=9e90)DqNoQ>{L#rM+uimwV|wtw-FSxLa6jF_6f|b_Vl!Wp4-B zvKLj~Q89W_buy`HmzKL6tjq{3o_9+PVC>~QKyZ*hn`kJ7azF2X5Ay(KdKWn)nRPWa zR#i7u?61rgQ5i|Xbk+;Km*gRp<8K5!`THpc+FXpIYm4olPh`WJA(8DIHoKMbNF@ZF zvwXhZ9_=%VJ$crXT3fOYhKqX_sE2^sLm_W1Lnf!iB(TRSblYk$9;5GTiL5t$@jh>U^O8v1Ps??lR-1$8t-l$s z7WZ6!JRT|yMR_9Tas4^VvumCq{XOo^{T5G5X>svtpnHiAGpU#8@Rcb)SNeHhHn3hB z0m0=WNjXFXr-uAf>!^wewXp7a`MU}im4)Eoq)L02#o=QWZKhfXLJn2OF?2<^uD6)o zTgybF+E$wLKKRf2ikEpSEzBD16_yeiwOmwPs&21=>Csdou5qX2P!KP8d0!oAMOIaA*fQ4d*0~uH z94o9^SABle;w*qHGuJINe4V!ln(chLgxvP*8--8qd2RqaA%9FUGfyzFyUHi!@3+q~fRQ-srfw||z7n>XFL zC5}Hk$Nezc7{#Q&lIhMnZ6GfSQ3Ttpy-!-Srf$EaucV)!0pnx5?*CSd2onWv04H9& z9ZQIQq;^Ud@U7@4dfue|URXi>bdCZ=3C{-(J6Ho(Fo6z~1IorcMpkEubG;&zeyokmU$DL;$LFYpo0O8F+Mg)Ts5w8~s-nS)$Wl6|^( z)OKksh+7$v5eHAgez@SQx%1V1v)8+!jpl5$PLpu`iiGx@{7t(Lj40JixcQdq^opQ7 z$eHXwH&uFJK>pVdy1+H$q-)GFTdJFZS<%K%J#A8p>bKY0gtRd}#^c~X6ydK=h+*j< zWN|H#k*N<(TsDUVzirZdSKkaBvv7x^XPe@SbObeo*Wf5q(*Y_*J8l6kKzd#>@B146uI(GIyaC>LK z;N$fS%dPilyja#`hdHQro`EDRvElK#)mLr%&s}%Y$Nz2>rnrOmGnOeuE>>0?Tw`$D z7e_-gzg29N+seD*p2#njxq;|Tq^9=cz%jDIw3V37CsDhEjvpveI=k6RVIQRTGC=^lzH>ojvUyImAnsl~R@bgUV;SHm>FK z8fIm>-mC@vi;_yb9M$oV!JB81XUno$^Zp~-1%)=8<9JDp_to^?RnMz_Z)gNvCgRB) z_fAl;HQ;(FysS(uq(u;1(d-<7u3yKa;OVVm%BWTUDSu=+F-@st<7OhYGV%xTD+qP})*t&b(_x$cT_sdi<&(A!gfx{0%`S=VTq> zYNfQ^U%(sKyd%o}ou)r1dmosYS!y2bWY64%8PXU(<3Mcr=#dmqGEWh+R zCH0H8<7s_1oNuDz{fpRvX|{(sFc?H8I*N88&&+VTOBGhfgqOoc!0DHO)8}TBYfm^M z;>=u3K+s;~Lab}FrxVH>*4N6>`)q89iU1-!R{*-;G+>*RGmU_e{4VV&EUALN<+Snu z#unZswZ?}Z4xEe(GIlPl*}jS8j$8&uASBM;F%{UF8<@D^wRE4_)J5Z|`}S~HLG~m( z+FGG6j9S6}wOEc&-@bzB=nqwiuQ1~HqFT4Mz}tXiPs9!TqekAfwkj3YBVQ$aC>)u| zbT3o{6ko(u$@0P=r+4nb9$gGfp`8XST(Vpf_fug*OC(;o#ONv*r1H|1vqvZHfL_LS zV(sCc)rO8x3~q4vh!0`h;*T&AATnI#)Q0s_2H5oouoiQWJJlcA@BzXPOw|_dxGAo^ z5_HgJ_s%$ls02jff`EM8O9%@nS@q?gvRC4C2BeBad!;9a9Z=KmTLu+rc{uM&Kvrwcym4y^Zm10U^GK zB@JR(n>K_U&w#i?-E7tCZ-}F+2?!34KJHm&lg)c1p?ZB=wRi?kB+R0bx;j zTNUs19r3jUX90_uX=sa01^v>&gyr9!2;4*0a+%Z2%Nx5d#anTL5mZ%F&RP}Rz6OEy zW}tgfC@uWK8x1b3OAaguc6N~3%Y$`Cs%-JKe;t=m@UGmt8e3L}LPtqbahq;^C#doS z++OEuLIxqtZ8+;~e&KH^S?39gO{!ta!jRLtpWl>|M~5Jqt(X0#Kp^0qTVY0=4K6%S zAO3BN53Dg$6nZLSu*(7S+cv8c_5mUh&dCfi?8@r=E^Hf9k-sPAAgT%B2=H;;nbt{m zWW`mEFOy?oWGULDRl zQCk^pDmyE!zif%b3ajq5Ff17Z_xUxw=+>h$7BPTAII@fM{8erq_a^&2o;n&zgmqMu zSH8xL_BEo-Q{C!UB(k4k)R5dDiF8hWumZFK8FypR5hOswJAS_D*A5;&eNCxh14pNZ ztn9>_)FPXoG)-6xO27`ZNM1}0tIKCE*2;SyZc8&aFu?l_Zf<65B5xfj>ezrTc6GjN zz?NHR3Mh4?;e0FZC|_M%vEg{-s|pykB7@Y_y~|Pg*>)a{*(&JM^O#u4e(CwL8>Z{x z!se++x8bXm7 zjWWb%@s@2qPn*%o<*9a~p$hP)3hMLX(wROiRS`$z>&)tmO)+qljpvIqPn2m(zFO?XkzZPKAd*Y?r?tOpbsrs-{-tdLaLktM5q? zP2=z?;Vv723)jQ=bi~3xaCht`3gz`nAx2=f9_W5CiFh@`mYzNbw@9pLx1D^xc6MEl z0Pe42o!fx9_ymT-j1VI_cEtZ)gv~8=-O}@j{^}>y!oinA4hpNXUAElpYM8!!vi5XmrX>asUO! z$Iq{QE5T2hWJI#E4t~P9sBkHx=sR1!gia4;)+)rLTHM!T2_Z&I>5~?$<~Ny(7LDqo zF>0yWu=h)G5D2&qL2$4ZG-Zxh!&;4LZ8zH96j8#o(RLPrgo#8e-J@3Av9?f0iBggY zQ%O=PN25wKh7qP7XN>andBPB$c?*RBFCleb8$)oIkj(D}l)+ zA@OA05W|6W-@Tm7?lTKW5a~*e3}FO^LG9zREr?U8^B z4aCak+xSAMb#y!ao6I{a9F4TfrKNwfMrmW9MCouPpi1i+jjcV`D~5W%)P_#lA0D{Q zsJqIasTg&CY4Z{?s!#$}l@w8PEPa31_AL zyo$Tt#X8L2gLM3zPGhwYi7!`8EHPJdd3-}DfA+GgGu6`HYW@|b=U}cuN!LZkltE~9 z*`~p^4IXz<-|)alhXxSvHq*fM>eX~_t`x`IALXOk1(Y}u>2q&<#+ybXcA)XvTOkUV zN%3783pv6eedu~Bv-xGaxGz;ui|`6r!0DMWpI}a7&lR$hccPPln{K0Wm*6we^I*!n zoH_e4n!40x^JTx6^y`t4%pFX8^RCDxCcPAOA<4qlP*{m?Xbs__#AiW&~a7No|hn`ANzilG&Hm)D`6+RQ=>Lt6w(S+F(wVGcuhn^K%*LT)GW=%c>X* zVJPNQa&D5|r;qdfiu}nG=@fp>ps^vvlKN1nJ4K#^jiN~vqk+SvF!Jo|eq8vP-G5}_ zoy^9(lWizDb$~TYYGmKs{bzAt62-^GA*0+ZCkH`P+uO*=_VxGky&S~5Zn+{{tgQ~bbM-QlIx>Ke<%QYMK!?GsJzld}YwiH6{h`Ws6LLkIP;J+_ zXPY9N02ieq@{g{=RjaikymMC;Ms~{TUphlx-VDx(9A$Q%1Am+J+dm}OQ^G?2hW*e3 zOR(%1A5MyCsGV-xa06jSt$dPChp`gt2*+di95BF4vl8o#VL=NS`Q|*%HT?W+AC$~# z{P?Vx>>PgYKMM`Lg?`nF+)WqF*YN>Fq*|>dv*-|*7Dmq*R!8ThSYSXjVt?^d~Cc5r6F-*v$ zD8~#=mUne~?u6r}2&%O2Ex5{r8O%q+$c~3{w8{r_OzWV!)K=~%8`--T12w5MZb##f zMb96*?Ki(~>(L_$&k7MZN<8^)%Ee7sqfYWf5G03E22{PS2iv$8PDsvyyLR54Bv4Kf z4;amxc;0mRUv0jxh~nXSqMgYIP-dg~BTD%H>q_l%x8K~+@#D&PRs>-cyfqtc|9~9F z)6*woq+otU4qpg5KIFN?a?^9Wk{TE@-ys!qQv+zw*%_#{J#~1Vf9Sfz z0)OS?Nxujht)^|qW#qSfT<=q6%j&7UzSJG)=YqwNron{HhsdeFM2|3BMqYk4&!1^H zI(T&mF}7wN@pz{?jH8+%`y^VH1E7*|8qA?!7<#yVBygeBDO01K~8eUA`$9r zZCPbqdOSAs{!;2n8+GVkT$z+i<2RiyO%mjdxqKqQ z)t49T-yoB{+xnt{HCPRpw{Y=2k8}hG9^B&1G8oZ{~DmF2- zPVS@Znk`DICo$_xwwbv(=jU53jrG%|{#7|;en91uB4XM4*Tl{H8%2wDcbO6>O~e5Cq=eWUC*f6HA2ieD5;pW@_LDgmgJ-6xqy;F1d<%&ReTVBV9oxuK&=XU^@az9Hof)P^XK1%h!+XYe%C>(|Wf z>C*(=G*=z4p42Vlpe!M4VQB~$u1|5my>>MjHB?J^Hzp>qs9LtuGl_>7lZ1kYL4Top zvT{8VN3aG@PD&)r*7nm$Z;*G8``R za7(EfMq=d;fq4vyO>e`56$=uotkRCN#5ag_`%YROT=ladU`kg)(>J{>KN_9tKptsG zsJ)UT+%H1ITh;JM_o)dlE@1MDl-W@a6jG)TuM<2rRD3iu?IRm+_3`^z>Gp$Egd5A# zoV|efx)l#)AnLWdn1zm4PI6)}6=C5zHlNPIlHlAJko)W4mwjyT@$sII1vaWSd}pRmg1ZbiZt*ZG5K9 z&1k11iW)W2LGt3|qPVf{xm)c&Uz1^bT)GJohyg7H9(1d>&w!CDZyjo9h%U*=<${VW z!)+jvy@G&@n75!)(MSd0%=W$UCOt7oqWZ;`?+pi=^I+SYT?<`5J1hh9G5OCvtKS^B z;9S>)B~CKW3Nyp}d$&c(_@A896i>eAlRl%e^QXc){Pn5Ae^K)nA`uZl067}GiEa3C zq=$T&O3ccN=Jl#TBHm;=YqIE>&|B0)S5bEyfPRnmR|*?!lw|%hG0DLvOvIL>?o?b{ zP+WoW6H7jaQX%gkpqGCnUxB*?YY<~vy(UL(wbMJ%AMTLn(N-@*-k~SMN#L zVy!ldin}MMjxN5mylP-Q$WT$HIV*-z@ki^j-nSQY8P7|5rmbgEUS+D8Q|YV&P+4Tu z!1-f*1PTrviyKNga>~z>3b)dIG^6s>&xdTv|D^XKq)vg8i<=8siw-N_asU7r$>ppHL0)z z1fz8gRR8LU7>6s5k8xJUf{NG8fTj#--}}Cz?dP1u9!17ek0RZ-JowJG=NtORCFcjt z7i6VSY4W1T02Zuvo!nv{&!eDrowb_cDkeFK#-bB8RFeoi-XY0Nx!CLpPhySEfiBGqX|H{Kgq|}l@=Dgs-4dGmYIZ)mC zf>WCceaQ66e@a(|7^;=o9za|KD-;tFExE=;9^ab$F#cC}Tm!B_SyQpDF(tNf*w8mDSip(gs2<1jDxZ_ZjS?QrZnM;>0 zPL3*%uB~|mKr;p=oQ*@l3P#PGGn^<6G~v>kwmx)|d`}FD44x&F%j?q~J{q|)CY3M; z;pDM^O1xUJwdSf%su+w}4s$!(&8vcE{oSw@k9~Wp*xSbSNuwa2MTBX?!`$ z+S^u|)CkkXGcNe%_xp+5NIE_w!gQUAcPm3r%jQ7zH7RVjJte=ExKOl(s#3dJnYaRh z#W~>^CGok#7Up&Wo{s&RB{Sou*2d264z=yS+xXo2F*IzwlS1<(;(yK}eM{f0{YnyQ z5*7&cJ=cehvD+uPB`G1J;3e=%29BShsX}238M5`hWgFlhzfNHoRK^%tAD8|3>4G<# z7yP>|hRp@nX6;#glHfra?r-0|{E4=it>q3$1A%8q(9ulLwr4vmSegkFqyEXoCNS>N z=%|c#hy`Wc=J7F-gHymxvl2wAEZ5RhJ-nvuXE3(mY{;+Zo)!)>7KAdMZ*YEpogivY zh1P$$vnfKuqvfy6Y0SASe|f3tf9yxOn;l=1K?D3?hNjXAO4J=X&W$5}3y8hV$WW*e z)3`*+A2hoBRZz8$tS&wt9cjtO@9#&R4pN#106gD_9G$d%8v#5;dp+~g^-nPJ=8EOv zt2=ksr-tpOZ?*Yk@sI2yCB16vY{2o*^Tche-yZ&`oW$0^#!E}fg~TwIQdP0GXvp(T zlQ^hrL8?QnSj?i&F6ZzQE~G3?nZqyruqa&`f-Pa;B!#x^d)Dqw87mCl@-46GP@k42 zt)PRNwkTZjmoWc)Pf*`4C{X?wj<=>&6Rh)ezl_3W#zJ?Tg_-)6=ha%Hj!e>qR$)^jp#T@zD?#xIzhGCmvzl1daUYW>fV ztXIRUtJ986L#%y0Vs8SDkx$@nSKl@PgrtpqW(R>{hDqa{wvdL zA%DU}0u^S(St~R>M#}nconUNsO%}tJ0X+K&+DC$+BaPXgx~xL_0e<$W=jJb|t^XuW zvYN8Mc9Fn(kGxMCjtIQZJFBMIn_F9e{(8y01g*BCx!dV+U^>%I!e4JvDHX$5#kQ*I zy(w<^IP+=39U^i!xV^*o$pM_Jk@OsXN#c$V+!$e__H{e#Ld5pfW$vWxM5aegTPb0_%4z1uM|VCjBm?~ZnyZ% z?|G??%oP#a3Cs})${h)&^)B!S?o==!ri2{_v*1acZx_^Qj9P;yxIW4&#Xskd_Dl}J zhu$P1;gumfWk}jwc^SWM zwu4Pxz5}fhl(`SYr#aQiBqb$n+D^#{hRRmz4W@l}-|^%CW_*8qPeq|9%Tt}Xj_guO z*B%>{eY8t22Pi%>o!8Z84fFZZAFwos2v%79A{oe#{9WEYu#g~dAUpVwQW$&VOT$X% zqjSfqOX$FC;2gv^IpP-Q7*iBMm(H(#`b?7QwFQ@At*q2=Y}kF$M0mnt>a z*VmseRvo7}j!8*Lm6Y7B)1ar}I<_x9Z{NZ6 zcZN;K17q5bem0x#O>=Tli)%I)FGy+QVmFe~k%`h_BKlbenyo)Ll1YZrXE9qE$P4s} z2eF7mcV_$|=b;sx(VgC)hA!6ivgw*DMZVt{j1Rw%JH4N~CX`ZbY>)BRW6`tXS8!D$ znV-+^f0o7TuS6||Nry{iHj$z0BR(vo%2*TLA)X(?*sJKM_$4V75U^%^AH+??WzNsG zu{|5xX|0cP@nAIQz_e3gKRN~4dXHmTudrL30d|*9MQ-dxG@n_q!Y}MnIwL~8A8;W{QGcx)Og`7)`^s7S}_Y7`M6CqcrD_li`na1S2+iZQ3DVr3@%IY6vx?5>al z^FEtD6mV+MtkRwl+()0LgImtiQK}w?MqmY?aXwh%6hyw=Gw%3{3QR1!)nd8tCKPq$ zeXBNLV&R|`sMrT|^h3MlBz0;H{6kMd+V_8R;cq6f_wixk*?=T`vhr#>dBE9=t8uONUEWg z5ntC9J7tC~g<^oY{70YJ&t-P+364m7AnVxh^&;YVs)KVOl@&W9ZI?3vQx$^mD{{XI zgFKav5sx)qOxsqM=-iFRduRfVa&Z<*x{!RMIw0M}_L2dU5X;mzx7u`iIz@-4dV)$6 z^8f?VKU#7MLp~Jh`Lp}kz?0-%1UN^Zi;=?dOluLoTUke4#wz}jO~kqCxRX^Q}mAFlc9+6JK53?J@ik{o)aoQRXIxc=hvip!O)h z5HrN(e|g*3H*{Hjf7^JpF;>Z=$$9AqyWZW~y^w>utW@OcJL%mZ$*7XuldP6TtyOcSqxhNe}WF^EY4m^(fdw-GWIyv2xhQ)xy|@k<^cmP3PR<%)_>L2A3w9t(;D zNfdVE6i~saZ;+_1=0evS4z?93Z1c6okW2rp`Ha+MwH)&tso9XC&*ah3n(QE2QYtHe zioa}J|7c68P`0H0_@w`Jm^whAp30WGIEH$F; z)b1oFj^HP6OYY6@AIS(Hf7s{x5>Q2+Siay*fOO5D`ONuY1rd2AH8nNW*g>#VRpUN*|u!Zc*Xo9f?CzgPHoA(`~l3P78PRZvuJ#wpp??Zd@imH9q zO0NSlkfuUtO_E;6zer>os~cqaN=kbNqNU-P*)N?i8PZ(dwYH4wYT0@1*_7OwmDN4Q ze2;_;!0VEGk`R0O$&)S&Y)3LfA?BbNu6m-++udR*EBOe|?O{8(+r6;5zdu^> z8;Bi=P~W^63+-fZizjfw?c5)-)B=I@ho0{U@2}_8_}@A1n;*;57vxFuXIQNZ(_LAU zea0}$tEQezijYS|1ndPejWaho<*?rcp!@t&<(Q5%(0!>?eSTCmgG1pwHpqLS1bLw} zs0|9zqgG0%&A_O$pm;<}o>=Mfw(Q%0S#aZS6QvxHTh_c-&1&BBEWCpKIs>|332bA6 zB3%?8{y(q}keazEuvnFGJeqiUn(uae0-B`fbo^AW^wzpaFva<32rp6|T%Jhc7jHnn znlXSqKfKrEr|?i97I&O#ePvMl6ZlpY#;sB4qhbm=T}C1f9VzLodjwU_D&-!Ut18~b zW1se#ee?5k|7g)4GAAab|Ae=CCJ^=k9}=IB5S6+ZWFi4dJ=*ZG&q{?66tL5ogQr1_ z5m5a<-W|Ml1rYk9>mLS{$Hf)RSYnG-NDyL+QjD@QKw_h7p%%L)&s|tj`)5*U)EJht zd&egA&MIi+(3!Wd6~e^^!@O2Yf!EVPz+~y?YHePXfBDk0ldgf4c)`lyhP2MuLBStb z<-dlT^*8l=8WH+0Fth9Z>!JQY1N`s9z#{7|m8i>%Cbf93gd`qX9x;y=QUV4OLhJ81Vxv<*b@<_%_9J)huHW4lj2VN7mRD4M zjV_K35x}SWmFNEKab7P4uhtv?%>OtrRg0LS|HqY?dV7@#rw*fH*-=(_A@Ia{Cg0 zlLBZ4K!;X>kKLj``k*g2DZ4Kjd~%K8#f<~jekVsYER(T&3A0}LAC!!5>8Y9DHA1<_xd z+v892PaRPJCny)suj&DeX?+we8TGKf8!Y{!B5kgWGb0+fDp{3pJ!xfmD1DiRQ2Ocf ze^S4{!Hv3o7JsuGw}-Yt9r2e2p_hx&n-Uv&2~w7MRBGSDJcRs?=oYfG8%K6D0OMu; zQy%ER@kQ`;*3-Jl)jo!z4{tXU&~>@{KXc9pZuP$1K^m5Y$--l}HJ@?Ru-@a0)SUDn zK7`N(I=N?iEV68U=Xj54jwYZ7t01&7Iwt{a?d? z{35}6#QQ=C)~M_Pw4H-8D%JvBMA!q`4_;nGT!IWPde?=Ad{HeHVtWGvpj@lr)cghJ z4(3ZS#lYMwVdssig_4^u8QoYWCoz2Afk=rHM%2Uau=DU-hyVbCMUTrMFAWzj$% z{=nFvp7=+g4cvtWX23;89vq^Gvhw)3u|co+!Q`!d(OfZs6JO8p_ZK#q9siR ztq9`5Q_3#>8QD-{CVqmw3jOn$rYF2CwX$OFpGe-scfz)+27?);d&uR5rYK9p_QtM+ z6kzNdYynyHbLjWtyi3LgKTy8l2knZRILe5K8Q6Go$0e%TwDu6fuVYY?k^|Ro zeNR>hwXts4+kw;vg4gx`v1t#5k%EGPfdO%wg_)UNysYgrv5%2}k&#USlN6P*q_qi- zZeQ_pLX~Rq`J6NEiP`#ckLnJ*GMk_^gw4&3S_*()JlxM|e7C1;T+_hJA zyVgtKt#71+sH;4ue7O3MO+HM0H&4bCezcRUSH$UJ=F{cXx7bSr7#{iF1<66-^o|<} z_8EE^wf(@QWX4Icw^lvGTgO(&;3vh&W~M*x0ZXrP!%hhn$^Ycm_A zkjo;VDEs&<6QPgvejHz)hCa+c$I-FbmxTRsr~CQH2VS>Z#^yC^c{L5>Z6X$RHy!RY zBMai4{}zEGou)D>X#OK7K4L22S$KR`U6+qTaoBW$gaaGEK05T9AO>HP$7lg$7~u6T zP$c@Z#1*~qBv&qrn>{VM+!&QlR2E+brR#>PtG9mn=wN)&cT4$ZU!QFd$O^>@ik_cG zmid?la^*+_GB73ODGxoGyaHwGIRLTkYjJ~yM$>b=Mc+n;(yD9d?D6zi>Wj~h8BaM& z5}WA`6Va5F`ouvKOB*j+dClRPho~d5@VK-3M-t z%R}pyPtLF6u!tH?B4d-wqN7xf{mq5c+bo$Ztv z2vHRM==bb0BB8h(7L50*?RZH1=wp3z*+}hcAnh+k96ao8*|HPMt?Q}PCL5X6{-5K- zPQiB?We^ZBNK@Poii+HSV`Sh~s}!xD>e~c%6sU5uI}NMuc01k$;;h#v+m6ULPirND%k8oZDK}~1BXMQWYpIQ(9Gy! z@vfFT7_WM$pX+@mr?Hs@PNEmO*^^~BuE+53HYq&1pcLke1qF4RD(iubw2Z*BrGt8U zV-5h1^g0~x^Jihv1UNduW%HPG&+eOTuI0_0o@SSpJHHPJV;(%2a^6mF#wNFwd_VQP zS4Tg`CC|6MRDfk2UHZSue1@vI=oVobMnUv@{|#@46zt!K|2;ja{#Dfvq+1vR?YnK8 z=UZM+;~(A>A60Y`Y306ZFGFIQ>!3&vU{s$*1l#%~H)kcNSo$TGYv=BoNku}ahQkmr zCqVf0RaP>Q5Xv8U4=g}Zu~BEfjKru`0E!~EKF4&S`~LG&BKsBfc8VK_$~Rdadwk3w z(C}p5H2cUQi?>O%A9rT;%WT14bGs8t_}}cjY5#Cp2Sr?*E5;70NBZaNKrn59`{%zu zKzc&|0QU?~`!ZR~f3D}1yKQgY@=7hW3oKZ6?$UR^?MK(Cn7X-ZNBeu85l>t9*Lexo zw$QTCgX;3eyUK9`1#i2rpF+Lsi!%^Qie;h2^PD$q&Pc|~kGYmutGF`fsX1LNB*0^F zT-VpiC?n9Jl2ZT0%Aq8^%LK>8=drgc1CIg^)I$Td0u^uL`VN^&W4OS_7i#YsMZTKl zgU4rpKML^5o%(^xQ{K45QKkqK7Ld$}WXZ19KLP~so{O?e1JDbmTaT-xh6{zka#f_; zwyM@LsR=yI)59ho2#UilVI)n#S{$$Xl5H~M$`Y<+(u%(8c0ZqtAu~(VF_!EJ!^?Z( z{dDe8KCg0rT8^9yG7(eM}sc^eTM%<;my;*-; z*_Q27pBp8-c|>ayKUs9T=H@xM6*6-EnVd$stDrrr>ZR6XQ;D|NFN{fCuA+=DEz_Y_ zp+!zuN$!2#n^ZY{&*I2NoQ57gyn)Zmq>EpL7)pun=#??KvH19*9r?p^g^6Zigrcq} zI@Sz9snSdBkW2?jM)5XW#RQ!)qR^J$)x&={Q=QXFe(1qbaP;*R!S?dRfxhQaTmKOm zjmkv-9sHO&zi&X?P_#0)bE1_VGA*0H1E3shPQ}zJZI(U#%VT~_Z1ICR9?(TgzT&Tf zG{x9&cH39LWfQumkM(-1JIY1h-|+}V!f zF~27oaJ%rM%%=j1%Qs1(m$~_>RQoOLG-3VMOkRP zsjQ-*D~wi{pxNC zK0XsJm%r9r=Q55EF=y99bZoxEr?o*iQx+@h!EJsKLg*sH`X%43NZ@_yBvL(JkwbEz z2#BVh=rNvI7hjxfJDy2MLdH#mGXauS?R+sr=40UihNYb~P z8jS{-ln`Ww#)~(wlCyup0E-=#H&$yppVYq+)J~M%&7R6U5zXiMN&VYvn|VIlr24K4Y&1!dev;Oz04kT{36P3vN+T5(OT2k ziYn?fG+V*u9$L?zCwM)WbnIVuLoEOnOg0WltRC8|^b)qBg(M(6Vtm3?S7g|nlw;moKxWJ1^KugKo6&m4 zq7g!&0@&*9a^99^s!$8m6;f=1mtID8kBK}>IMroq^Qyz%ksHM|7+w19ic3z1m4kv& zYpU6d)diN^v0I2PUcT74{xve`FWhhRdY$2;GijCbMS~MlXeKjfi26us^ydE(?(B2{ z)`NY?!$&&LJ?+!l$f#z|1f<{|h!XsWx4?DodHzz$R1V)LIcgwE-}2QZFHJ}xid|$+ zgK(FD!A-rDy2qFbjYI}3lg$8*GZF>QHyIOqrzkpjE5qr(B^-u22K7{w884BaYd>H; zmu|&I%{B@PW<95IO{r#j$;iu|YEEg&nf_hU~;?M*U-z$zIbFmL!P^vCK9HvwdP(a;U&`VhzIRbmAp2qok zZBUd~x>HXkftZLk0P=y%y0`8GjBW>2CMvr1C^Vwh zJ$Kh(j5CL&epGPZo?-o7I&Vs^QQg|4GauwtORCiXPVd`x!b79)z1SgHDB>F9{WyNVKyN|_u;>XdZn!h9ll{fk4W{CSZEc&cE;5x={t zu?{zM`kfQ41}m32XV(Iw!B9#VWV8oJx%$@W!Gg6)Gqa1T7Sf+8va{szOM3BS6dA6{ zAznRN0RqNV>X^xxbc8Y`Vk!#g89p{gjdJyltcYge_|y74X>AJn7m11-aO*jo5^SfH%Zo;>O7+(MvqZ{Aq|#I|D8i3-Z7JQoCPm88hmQRxvVc=Q?0N(oDHf8xY_z(}VT-63bVusVjwFyt(v-e3QGl482iE;n+nd9&4x zgL8lsP9_#929jA4gQ3yf8O^_P3^pP5=sMV1W#8|k4C^M)%O_2km|5)}FmapQxxF}! zqv4?9^HiiYNIXP>&?csJ+?odzC#dD@&Zh!C$HY!*~!qRPX>6nkkVaSH76S>X`tFI zfgP1(CX5!t4WkIr286lpjnn&90Zwci2Y8?F!*BOr1d( zPhEa+y6v~4;YuEIre72ueXFEP?*%pYW?>B_Up_9=%#OIMxNe6*Mg0KJV(<1QXD6p8 z)yosg^P@NjBHE0c7{sF>K999lRM&yzpyJ^8rYJxsp9hPvyMK{lU$Hb4((G%PoRm%r zEL7`Npe8)QMP49O?7pdE`>y#h6-i(~VWs|LV!NI1<)-`9KZrU`GkvSK`Hel%fLd#L z>h@dZRQYQm#BvWJi$Oq2UL$Syj)8M~%`7Rm4E~@AL_}+@@g`nkcS0_eWre2Z!_7Et zB{{wvIb>X(blkBqG0{jw&t1}Ci2M8PxEsI(3L{yAk3FgObn`#vZNz0{rS%D%V?whNvzjfxGoLNz3{lTGGcAXkyDmP@T z;mdLVQ}M`}TeUPM_U0JEf|>clM~|Y8i5M)F><&l=V||g-SKeTm6rv2cnl>*I8K~==E-R`j$uJHml(`>rC`lg#FF~_D4^o^+``5^mQOBG=EaLs`I>kb z(-+#VQP}>?fxvB(hDlsbs!Cnwn6%w{=rD z^$L+_=*FB~;nmx@{Zidi`~68(y>a8bl-}Zb#`o0Qww63n-pbPrzu=)8m4dygD7ugV z@b})T_K)!_GYe*<4n&c*5^p@fLl--*^;JFcUdayX20`6zse_7=EWVslwcFm7CxM%V zF%`1wrM~LJ*)}pHRZBfLq6Z>8fsNDChvRilo zy97TyS3zZK--mdk*M6P{;@7pn1IL)G$ za17rvR(U0(ixdVn3?cAg)Qm)=u}wI>`QbwFc&GKLWu3Lrp%!B2_3YOwL9rO5QN`dj z8j;X~PT%e}?58vq+e$NbMN|Tu2T*@fyfIN&Eg(((d$F6o{cx;Rb^Gn{+c5d*e-^zo z9G|Po?*6QJU43)iQpCD(Mt=~7q4#n2I!AqshxYoX2aLd&!7xmUG=wB(5^cBwa+hm! z`gWzass77a^D1*4gi!o3bv-eqrmgEJJ37523YrW&9B~D0d)paADvx)53UM?#N>Eu5 z0k6JXA<1b`R%Um3WPo_8KHp93Uy8(`C^T@qLUQw08uy9}F`zS0&izXivdvPd;YW}^ z(#KYit0(kjSbK7Ik*ss_T9=*I%X1b{!~W5 zcU0+Cu2~TY6NRGEOW+!um0L1~3yLuDIx3Vbtt^Izjm*tr7raUFSsCh>J(s?!YDAks zW(g+wWkRY0GhHTM=RBKg@@7R?zM7j`=0wlCb)*z1vHV056Ze8|8 zsP4b3!Tf($gXr99c|9W7D9UwQA6i>h_qhk{?MNP?Q$NM465I*`Aq8869OCUePS@*c zv9*g%Ru*L*rMdVm{|>g_Oxe%Y?YRBP-YQ=I`K*^_-A{%5+L*8oYJ4BZ&7`YtbzoEH zVnC~v(lrAh5k=UePC*d)y~Ui~77OvA_#ZVbNvw=N$f&Fx+1+TDJYf2yC7S@>^af2bt6USTagQoO%-{^@qwx;G&bA6}x3R9S?FPHmF0wbMI zJ2#UK0+?4sB&tNSd*M^nD0}2aJISBe^pa@|3o?}HGUb+BdQbM;3oo;U?OAEZA^HE2 zvh|qvr&^W@>Vg6VPfUtfi3EY4)GD}_jPw6F8Un8gB(#%<1i`40DM*9w-rC?3oJ&Z< z1~x(n!w4HX#jeerIP+7FdzZ3Rp|n_Ns6h+^ z{JgBd9Mjbz+ zfoF=%sE4cL&r;W70GtB_YY=Uj32kpUG%a^}LFrC}G?K`P1>5~9oYiM-MG9AiSBuGC;sqVT%eR;9+^pEZSIg6JhE7ESOKd31-pK~V)ml+x)r(5 zxc+cigRkVG^~&iO3{nen-&l|uNhDuWMN0S8K3e137%LBiAUakW5658``z>8IdxWS# zIu^m1`B@pj2?Nc%dQQTfG*tL5deHLI^l zbs%9t91@a)wyVtawzD?6h?9It3MtJRz~mzI_wuGG8Kl5=@3Bq$rHd-Qdv{+s5ykPI zpW8QqhGmcI#pJ0p-nX@6AM^T{xPu$jcc~#`gl~V;D%g z7SRUc#2;!4uXJcYIpI%))i*RK0I(3#W;SZ4>l5waU9z!u&u_F~&NJyX>&LxiB{kxOkX|hn` z5-73c&Mz1mrcd!8^3MC04wBVdO)Vain{?T>TkIb(%vz=vTf@Y zPQ|vJiczsy72CFL8x`AD#TDCj#kOtR->O|_@3Y@~pZk0oKaxK)GjokO))>9F)?4d@ zNteO*(F->{H}Q{-CMO3l;v1deXF@w$_?5@^JRQ8UPS~TML{KP8U`1x)m=Q(sV`X@} z0@Af|foZW}J;b;~$)ZA-&UrPMR<3XAX58D|aqL9`>j~BT2hvW=DOF(I1+Z)?W8g3q z`P2CfH?H<}uCreQzG!Dau3U_v&nvs>S1sATe2ZlyA0Z_#!K-Z!@;%+2@PKN{|g0_Xab>$c9j zA1V;UjHQ@^EsW0h3wAjdqSNM9uPp|>Jc%}AD>tV-Z+xe78kA!Db(fH=KBAXTjN@Ko zShe6EN4rPVX{$o*t#${Wgr815;gJV9&$_B+64NLCT9z4h8Fon}i`CUT=lE>bC9y~x zNXqR>Yd_A}Cv!>^u0Y#T7=HT*8SBJ;fxf>q0@OtP9_*QfVzuHXxlm@7CH#{M)f!TY zfDKJgjRBfB=bUC?lTpdyy<`gIb@oVx&u6AD#P>d6BF^x1(H*p>DF9?^>|B6EhOG z{`1)BP95RdGY&b~B~(l476L)%FFxzZI^FFxn{u^>Aqh4N$RPbHEbUP*c3mt!XH7x( zpXBX&3ISM=`4mL@tEiPhq;m3ot{&FERuARG`0)!aXs%qBan^K<80j_E{QaN%)>71I_B*34@ryRvy<@^F_Oow@uJgy*#YSD$sL!hMGUUY)-O#0wH&8hI*sejK#W%p`oTQd-B?3MHvTw7nY%iVt(OMGJa=w~^h4^SvvC@e4x5by_ zL7eS<*+#YSq)5gxQ(CUGOg#jx-TusU@2AKbT@0Q@${D8|j7pliO>Ac>&O+*P^J9V* zuK(=ypZ;fcgMoZu;qK@N5;zpV31W)b{8{5=YT;Y@kT4WwjwS^hpao!9*srKVj#WU@ zc3vwS-s?Xgk*=z4r(HGZV>=Ab_s6rwjV2G>CQA3i9r6h{wtKaZeYy{?LGd$|k6*O<#)U1rq zQVQL*>l4^$(pMCv+WzI(p#6<_#qJ+O^+~(Or$3Jp^Qi*VYXfsh0LE!GSmwukZS{FD zkrxs9tv2Dv>5_|g;Cv%!RkzNT9i{6m%h1%dWAiK3Tldc(JepJ>nYJ?bi3i{s(Tbgo zO(HwrRG9IQ-TPayi1Xh(vP%{pgApo`IFB1fEsQBfgG<(1J5^5PBa+6XTh2Ea^w=|E z^J)|NCY#^)2cS<02kuo&1$p}Spu{N<_3PmRi=6=+Eu9xTU zI8OGbPQqe(r@OeWEhym|UVqCTUy`AAIr=359eB1Pq0;u_Kxz-XAJE?z-~c4foM`$P z(2HETw50uJ;)9i0>-dmgX8I#Ww6ODna-%1@?cAq06q)&OPh+$UsIEd`rlRKB-)KtC z@eJR}Q!b@T_t5%$?ZfgWOL?~J;tEaLlf%I>!(agBDuOLVDk4WtN3QjlAu=gnn072n zjRHm1bS+H^l&fQZ-wKVO^GEF_eAu`fwTt}sy~{zPllhvC6l;O5vCrvPPR=nAG`W1|`NHhKI@w zCG?y`Cg=IRtHaxjlb_*WFJe_TF4F)sD=c42vB&IPf>t$_i8ZWh(bZG^?ZrQlPX)GN z$6dp{r#5*{atv|Nae3Z2PmC}kEM6_T&V^ir9BMReyrU)in60eZ@LlKJ$OHmT5{O@G zieh94QBCT3JZ^vDW2KbntwM+7t1_+8aS@Hu1i^BZg5&uLhe3~7N1ywymon2h=aw)8 z&j5x(W;#NJ=S&35?vJNzTsmD9+)}snF@5vLt;@89TMz|?EZt<18+L3F{AfnDciHzV z#`eg3VvGVUyKnRdMZ#AF`uJxlNy}MQ4=nh*3BBgvZ~X@Dkt*z@=VoeG*{u5$kp^8tA|gKgvj zN{MjK9HL6d#cfV7nXXg$cwaJDpxYf)4C&MD_-3;edRYtk+SJf`e{n~*5jv(QiIgKc zyf?h}?K7{CoTV2g(mL5bz1PiRTw_BbOKB{PCG7@3WI_hT{zi8DRz-5hlEOl1<27l- zPsWaZLGi>@7jOHA8#Y?CaQE_}KnfN9G{B@ z_>BOb7m=97#=uAEs+(x}{4{@|ujJPm;0{1{m$k{7JC#Ij!kAFX<$SBhR`5*H$yQ3T5=UCx4FhwD{xM@3|dsv=`*ioa#9ey|hGFs~>N!pMQpk$Ur#HxE}4q zV^%YlYYK)~-Y_7iWrt43m}(%yd~bGO(YZsnwd?+nF?s*rhA~H`VVnqa#p$(z>5I+={9TM?ObDN{v8A z!n5K%wYc}v!br)Qk`5Y!uTWp{bdczLHZ%r%7Y*RX55zaI2}Fi!WiKaXNFj2n4RaL1DVp0HukETPfhU4%GV1zo!@DDcLvvAE-fBKo?Ya%>TX1wNK&T=pC zl%`Yp4j=AEhI0%dqoLIKB;udGRr++-OHgTUeaJZD$}eBnPtVk^oHqz>->E<4IJXH&7Vu!p)0nRujF-dS|rDBv}UD_~?PI%_pS z;LM^xxY5_o-Y*!6rHp5yrnPC`-7`8%~P{ zJyww7hh!R~GE;=~Id{{2dQuQP3KK*X?~^h$QGIr`Spjn8f4V<_A{e`ZX9*}{ck>6A3O421 z&3@K-?^;&$o$e1o#cPfswPd3+ZwHsN26b9AOyIDdBMd`{W#_VuslEbSw5xuHu)MoH z4b}^;_3@8hlFQWIP#kRXO9~@I5oy`HpWzC~My%-#q3P&N6QPV*QY%0=ph>VmxGeus zKl<*3ahn<5vrO2r0d}%3tRT6y4xcBdRk%M}WS`w#F{c8JlA1$Jm^J0{-9SZQrWEg} zA_>ArLx%3+kfF0pZwUSc*W>9un~Q&MALo7dQs$*A7Q%<~%&gMB zGMGkv%wX-3B=51yW@*mO_@r}nyEz>7?re=Bg8;=;_E)7=dd;=V=*}EH)Nf5Eeqv}% zaLmMYn*J#Mo(o|T@N4q@%)_+Q5X(Vl6>-fL*0LY3PLBi!f-soBG<%Kgd(S#k4S~2e z5OW4b0Yy=)^d45M7BWj|V-QUmWIlqJOzl>0cU&FsbMe-x{Lor?$(Ea-z1}*WUB&f zrs@{p8LMFPBG3oLyDTYYL@?-7Hw`#`_$4&`Vy4&%uxk@Jb~Tt`WpBSyE{C6#bSiQ2 zP_1^x+no(YZCYNFB(+@aHhf+0k)X)pal6dlFOZZ57W%C)LdW!JFTG84E6^#sZWxnF z>$GvVS@%=124|YXg5lYYJ?*!ENs$3SzyoXc7X05M&Pz>SpK2ARIFUWKAS`vD(S77@ ze_;eVgb4`NRUg0XYkkoSReHAk)X>ah`oF#xsQP>X|oPI=0J!cv#f_FQ^8^+|_anRx>K z`ilu-9zoS>QR^87Z$o>`tzTBl)um!|q2oBiw6qF4LuTKu3hEVLEq_kWCN&;?PzvQe z)zQi-blC+lC_&{TNfU>OsQ=n&#;U4<3!y*ZyjrzhuJ*ob*||Usn5#otu_kAiBqER9 z2O^}$gh{BdV>=-?DqX9t>?e$zpw?xC_yG{n6;$y4so=?Iz_g|3!5tSNBa2iQkTDqC zAV_L=v2j_UG;6C%vGQc?h)pq>GOParkenrcG({Y-X!&4Jm=god%J)1#>W|N; zJacB!Wr)|<&~nJN5-jm5uyV(E0@~d5PsXGnyH!t4S;uY5&!?}hXq~Tiw7k3H0cT_$ z=vNFJQzPOD9`^X78hiYT?_RfCtk$aB=K4pHMtGt_<6}LqBVlstejL|cIm&f85LwSx zHgh5~XI8vn-*8ZrUHD+#jVIOQmAN%X-Wu>yTk|8BzQv!SU9yN+dnRz z;RS5@)%63)8gsRKjVWtH_9*UHxE>npzO?w=DMMa-P(PcSY?dHb9 zy1AL`ZecDvAudKH3D-h9`c2iW>{VC-7m z)T%W<``3!PxvAYlu(v_c{MI*X)>x?Jr+hQ>*9Bi%tSYK2@5N5d!pGZJ##do%hGYvC zRk*c%>l;D|XD7<64+G0!?TGo3om^-;*C;WFWEm)_-Z8B`TMM2tE62bX7AI`nVmi?5 zsZ6scwb;ENQ4*=o&FmPWU2!Q9Tu;bA6clucsY7si=FDoi#$@`s+DQ9M=|8`g z*%26Jv{+ScXmgCGu~G>SJFob6nIIdQ+ADuoRneK+tl-za{@Ig2=ruE5;!GR(<0XO8 zZR@i^Wgau#UPduTZi5!rs2o5MJs`k>sXd&)!6Xt`8d-cWmca}jEo4ojral)MXCj5| zZ+&wuKLumDsb)SpN?jDSqfOIn*EanL%NNL&car0e?)eB$5+Jeud-%o^RI83^!9n~b zJZ9>VM?=L*aQ8MJo5%JaCPaj>r=5V3K$u}RgKY=50Vn{scLj^()msV^S|37tcXRa~ z4h?pJgS&OBh=$SHa&XMe_R2(Q+NyR@+o+>wn9apB)%7hwTfJ~~Jhi<=brMxtF~Uy< zSY9Oe=sM@BCpOU&r(;azX6Ens&Z&9>Q3FvJ%YA&V)@(>az`Zq%)!l&`bs{B10tX{P zWG^&>Z?qgz*G|pMz9->jGa;}+&WM-&m+=$T@u#h=}DIaWSrs#D_)sI zMp~{lc#mu}@wMlqs+m#3mj)sDrDvRBz=|?}F$k_yWK(-N8F$GB4p_+I{rrX-XgQ-2 z!OjCsB94X}D6u|D_7G%0G^+g;AgDb;CpkC?lC$*mM4WkwDhZKK^#HB)1w@;9a!Ogr zxymn0O8JnA)yqhwpi~;00z*sREi6I3qS?PaHgB*`0y2F)xgd;5No=${gLzdpuP8HN z$NZ}ktg9AYT=f*~4!X3k&&?#0wiLT-=+Yj}ByL`owvc+RpaUcefJrJYE`c>mky8EG z!7s#@);I-XX&G%Jl2#^Ml4DY0W3wbxD&LO>~GQae1Il#hn?<;9gb4P%=~FSN*#;> zM`MzKvLuwxX)jGUe4D0RQB0$n)TEln}}*5V@+;%cmCgA`+2NntSlgA;$_0?=0 zSS9nCLIZFTw^2-JYq=gQXOGrj#iU4`c+g*R96G=TgfjI5s)OgBc(TUtUWIYQ- z$FRRoWIJNXa?hfB>F~MG5VF;$C>|Klz3n*RXMOdY;O>(pquOV8K28yy-;f{za;@p3 zJe3I1lfL>|X;nx&NcB26a7{AUVzP5QSE{P~v91q0qDAj}T6Ur!gfHH@JNO=c6%=YVrf zQc0EGTlHSCk>MupRKIh_7TsKQA5R7wGeSnoJtlbQE?famT9~7#qAB$lxch{g+Yglf zCWuuo+Mwt)s_c!lcT3MOH5oXI|FD2?hvR_}(Gn1tuS!5N>3Z{U3|uSr0JN_seCn{% zkKDsOT*r~gLfN>qmaowQ2q~PED&rYV23oCPsMRz7Df{c zB-v7M!5yG-=)}^3WmO5Yc0M7vli*3}!HIiX7(~&m0z8Q_W)rEd-Np{|7yRGmQ`qUClpY{1|S^hGr zGadp5SfYo(Hr)&m;u*L_`<|Wnw#P_Bi44Ku8Vg!>=+U-y?Rr!(w(Mwu_YWX#h zMuqh{1ZX?kJuVa(;eF+1(dyNA@ah*CyBIzB`HwX0n@S|;;P}}~{eQI9kL6CJm}P&j#^1kv z^|m6a6p2b$Rn%aUkZMIBQ@mW}Rh1elP64LT5b4Fa!a@a-5@t&?(+>H;64#$nryb(n!b-^^AHj9w^HZo zCyZe3pqSQ+jGHXR!AGA=)>f*QmjeBJJG(~33?quEYz5{B#j1)Ywo(IS0R|NCqsLDYZOZ2sb@x8l`TspzK$jD#`o+`CrsBL*q4-#tOmre7 z7&)lR;-$xm&(Jk7Y0(l@edAa-=>ix1m5`+OQ9gL zL(gkf;C+9TI)!OCt`980kzS&zdeHFASopw@d-EKjMJA*h?WOx6<#Dzk_#QY5|8y4) z&go8D|4aFKF*)+@tmX>1vxw8(n1Ts`p>Ml4ymCNmqS^3@rN*xl)prM!g-TqHuV|vB zQ%guRkuqv)hmFZ3#(x`ufXt)L_bXm6P+fv3|5R&fTTWYPzIB3?`& zxH2;U1Y4({!9LUfQD{H16wpsKa7P9?aFexaVzzBeq+zv_l-|F&fqJOIjV3;B7cY&Y z=-a+Wd?KxSoCQihD>Ei&sgvn~g6FFul0;C3%E_@_mnb8ZrMxk-=FvvS_oUe#wQMf* z9GQBCewt2#2vS{5G??pQh&bI${yu63ji&?d#N~Bt1cR>0&5+R?is`Y{2BwmcJ%ZbO zXz!5L4e;1$=`{%biUfIus$$b#XeY;*Ek^%dD(jRC* zun6EhL@`6V_Ckikhes}Lm$Q3FntxUK{O2_kVF2wNqd6gSR#gjffhCv zo*wID&s+||x7sDg$YAM+@e8(V2CGMeLzzEDVoM zM@N@h@=}|GvGeO*P*xxGg~JhA!sP!?)1GGS*5tx1_zNcRpr41 zkB-cf0@z|UuBk3Xw^jrzQ`RtgI276R_&x#tSHB)TD0zM#g}~#Ol%T%$J%#n^)nzp+ zvYn(cKG(KrgrHbbI#b;&isxxo*X9+Y?vq&zZcpFE~cMMn(M9n$f6^%4+?s_$5mxsvw+Ns9u)%c)e_ zbHq+Gsfi8r?VZ1AE7K&!Uh*Kc`%)`W^@^mtb0xJ}_D=xD`I6t2=alZLYnOm6D=@gw=vayAGWhe>HqGjOP41R~R$CJ; zw6iM^F0KM{rSs47+7;9DO$O|1b>py$Hkve_yf65p39+%Un_ifpEC8kD-q%AS+3%E? z3Yv&`=*WieXD{v8al3!YEdQ)(cE6B*%Y@r4zw)ta9)2=XQc^Oq+)^e(lmNPI5p+S} zePOEF1o?tl3D8fQD*il_**;$c$#;p3?E;Q)2e!o1`+95 zGih=-^t^(-i==D15ri^s*=swor30hi&Ly6XzU}49iUlPqeyPV15Ck%!ux9~6K;V91W;5Tf5QUtas!TbrWD6(-;G**P*sR-)xGCn0?6T$qglp&HQBo_m)2@OUugLD; zBbi^!9FpQfVfN6A2925SaJ}mCW2PiG5sQag=ruYGe9uVDX9As$WGD|nRviV@#W zs_78fliAk7@IaUmrAH^sb!VTth9G|5ghuHTa{cC9W93Ma*?ouol0Q!OKO(c=^F;L9 zeD3$K9sYx_D*67R^W1Oe8VpEF_wl-^F6y+Y`d_;$L7pKoLXfIKSsI(F_pYh=?a38x=BA@j<_-lp#6*+zft?t|9)T2`3&@G}KHU z+JM4lW|e>g?q=hWq%SzitBEJgf3EuTlbq@QzWDFIE!TYTQ{`#Cevm_kg_)p$BVl8F z_pvoRe)Ftx;bUte_jAttl=syGOU&M_B7i(_m~wb=O>vC$fBqX| zwGu%63Mws?qA}HpcQLh=f_inw_N7a3sn5@f=Z@pagWyS#wIAatu?+VO)itJA4}WR; z0Sm1sbX-PSdI&cbnTYJx%0rpwZJL(07cDKRh^kMyw0}`a>8L;9UrAcm&?uJS|9id{ z)zbOT6TdRmdAU#cSU0;|;jxWox?QnID66QqdojcZih+Xa9b1?0{Rf2o>w5MAb^wP0 zoT|Iq6Ppl2rJ*t3&^TsZXOC6!KO0t%rb>VX1?Ad4uYx&*wS&b&Cj6&ig`#caV5}bU zGdyQ=aC`r4 z)&IC!Yrpe2rep<9I|c}qI51>rvCYWo=)TkekWhn(be8I$KY$8M`sJ;a*zre4My};L zL3H5oT>2P}%#gmnKX+l@maw?VJIluulrGztM5pFJo#GioiWL1Oe7Z~-b=-i}AJ~{9 zKG&?>b>&An;+P5_PC>CV;O<3B+;g^GQ2-#rycC3{tsx;-BL)kiA83xN-TY67XH_V_ zNCy2GtUQTIDU#Zl`=_LSqOjpiI0{SY01}pc1QBiRmYT{o>3$=64ihwbHM{TACCZgP zkG?2SfNhNQFPu(LKmf!A0hX+3vn@3*A!(oIgzfAIJlOTW3zMBTq+kEsoL$$#!7@67 zl2_@7Y5FDYS>3tukyWAKjrz;pD{A<hO@nY{d4J=lO{Z? z!d}3gvUd=ZcQGJn_n~x!0x6<1{Fo=N$Ye5E&%99lp8BudO@{y{ zCC3MHUNX^5uJ9|#*T#01_B1l7o<2}kHpHr-{#9k|(kop@z>>;Flwm%zUAtF0TY1HE zsH7MTN592=av-SHs$70Jh{gX*<3`e2j>E^uF}hmkz?2?JwKQkwYzPkif8<_zd;T}> zC1#o=Ky4wE+~v3Z(ZbTf)1|LUlHf+&h!~|5R|n2ID^PTXVC_|%(d_LIR9jM}^gbm7 zRD67I$oeqB{oTX!XRX?! z@$?(IO84(p_KlxDc0_%gT&4s!uoCoF^~R1IXPDe5YP`%8L6x!ZXjmEZ?SE7|YPE<; z=JCH;v{&N+vTdQK;*2;f-(Xk-AbZ340pB*p7K`a4y*_U3lK=h4K%1FNpQV-lZ>W!= zBq@Xu$Z)C<&Z=u5kCWg>xx5*$wU>{Ii{J4vsqioG?OKYzc@K9eQU5=*2Lx~n=3{lL z7*T!&ApB)#Cqaxt?lX2@^K?WYLCs3d{yfK)T>J2ww#F!edHF8#cCuOvU9(ihb0wWq zuDPvl_ZQJ|T3xf6r@i(0AWP{N*wVIHXw0N<5AV}tng#)P*eDBkM@;Bc9NG!)?VwtI zcTOmP;dnsghNK+u`ATFQ6A9-bzQS1+dvr9VXT4`f8YL@c7KUGu&7KM)yu^MRvjGnO4`J~aO@Z+LfTno)UucT< ztN))gMU|03SKRlnVU!_6%g%3_N2N?4K~x|Xcy`4gEFpO@R?lHbMIwHJ#r(OpL+MMq z>$0?|OSRcCzbu{tk1*W{nYs9U^5f6^k9-yPv~x-`yTidbmrI7>S!Jt-ptbr7D^E)t z=fptvawTYFV&z9zT&mdYZ&O^M^k!Z%{K|@l8SKskBD0+3qe?%`F>E?Hi4F+2Mrg2O zy^RS(n;yRi%*>!L!GJG$Adcp5+>w?V<)bu;5uo6s^p>vGybpFxA?6nilA9RjQ_gZ> zq1{nv7A9!lVARWmUGyHj$jKL9zmZ76yVpu}LjCsE0ZE&PU?oSlM5 zZfL0l6+bbCa8dd0-6#?-FDkDb$4EmY-)gbe$R#fBT7B5<$h_nRmtDSL|06#jj9PLm z!o)&_vOP2Mbk z`J=?sC}YMvN58!LK3Ng?N0)ToAO>_~8S!p5b{u|Iil&8b6qoaX(Nd zjlM#RR~bfu?G~cPAA6n___U1+RBj%stl-q0nx|Ok2*Y}lwU5mj>99n+KkB!PReUDv zX3+AQ=+Ci}G}yAif&h|9Vh{APq93KiKLnKzF<1lr=|x8`BawT9n`eiruq6qReL)_X zttfb=)9!v(qEzZ#e1U++;1fiQI`=+Sig5P>l{@T!1dEz)rEj3@`g@KM9mcu2k6IqQ zm)zuvzh*U5PHdp$7*w}@&!mD0pS|se@y6VLb1=Z0`%0LBlvMIQ@9h-NX>N$xQdsVI zQ?WlSgJm!`_q0B$__>*ag7#-^S$yjQRBI!*?iePSLLyHGyg?m(aJ6v}7=~c|Ma3Kg zm?t3YNwiY!uepMZWpMDjDP;PV;*@#5(gQd+9586Q#w5iOn)*=e*94twSYgAe1G|=1 z3lRQGcPtW!pgA6o(()S|pf+&T+V=+bbb&gf8Q4;1b=`yfi|)X<^N@0`-mqhbVaez5 z`ajbhw{YtGrf607C8-r7zL~eGLZ;IruIpqxGgvlAmB6XtfOerYs{xnv=<6P+kgQg{ z&iCcr^t$vs=4T##PLcHSW#zMaYGA;u5;eFf`d-FY?gq%htXrjRVmkQbjyY_a<5`~0(yaCX?~<{x@h^EC6N?Z z!MW88B3K25!!2Xs-Kt>88dVc!(-a(lyTQ{ofOXZ$8Zol6?g!v1k}j+XPN_{+DxJVw z8iAO#emWY^>&7nEx&pdlk087(rjM*i50Hx;@R;IFyRHdsU3$WO`#AeOFp}Otc^Cg1 zMZ(bYH$~Dlxqnsdccx^jFR?vn--4e4cp-~%PLAtDuF`PR*%2eSpS=friUxv8MaY3n z6cQmUC=emX?@7O#mYvKa>4ze>gNaB@K;c}*ZI7w~qB^}Qy0eY8=LKOcQ&t05Fn=`L zpsxqCPp*KZT8En}o;Pv4rEeg!nN6FA#m^o&{cMDlt4O>^a3`7jVR7!jus>jUk1USl>LXUlozU!{2q zd74gOYSJ6=T}Z(zg!mm(J_5DRjl&b+zJnRdko6Xpbipb4lXMsI2AiP&rgS+IBHSrL z={)qO|;!b&1Mz#kXtc9RhNBx%LNpxwrnM z@XIvsKD9$>nyZa!TDeX18Z~-YJ2364y5Olb+zUh7-lp0=9`8u)!ENvylD#)a;l~F^ zh277WaXy)jA>d=*ht&%DK}J9b=1Ss4`U5}l#6>VD!ZDgO4=~twaW=wnGL3OyrSq&3 zI4UO>d3HYHqhz<-PHK0}fbfkZ2Ly?04y2`C_{+->X31Q^cuu!6B{Ux*=r}cJNe*pG z9Oqq3L49%wjuA169Q50H&8&iI>P^Wyoyx;Rj!TrE=k3qfI51Db{)Nkm?eq35i_nl{ z_W)$OdUP_0-8`~Ie!}sDplQRFD@}*1d4q$tF96n+33)(*463GJZy2n$5boky zEjtC7N~*fu;^(`eA}oLEZr5AAtuu>&zOw%C6+y|9A)26-Cj@3HEIHh@_0v&+HekO+ zwH)HWkJqAwZNRTeLZ%xk@$$j%##aV$=y#gr*+Y;-gwMv-t<9V}6-fTcbE=Qd*S!V7 z8gSH2MZ`QiRyV8;oX9wVP8_Aj@WGyh2~jHUj0c-_%Ses}2c`3jLp4Z`-n*Dbv}4o6 zjmgcSpk!$Y6cr8{>voRzn;9aCXbxq!nE#6zqQ-M{0PoH?#Ngc4S^eY*6+cKK3ioBt z<8p%fK6$J6U6^Y%Get7D(O`oiJ2{cw?U@6fyhLtFZ!t8y6~q_i`wQ z(!EdZ!Dy<(P#}i(+iYVn3n-uGEsM;W8~19&D}P)e-iL?b(sCuA+qoZkLk8hV)ZAp{ zK5a0{Y%<6Tjz_t&8h^JT?VtMJ-(ME?HFmj|6!K5Tna%oM{eIC1po0(x<0E)ZZ$FVR zB1JP&Fu7P+t=!e$dtQ4!Pzy7&3oDc^+$>~nbjBPBxnLH%zPhrS&ojni>!C+`Z%s*<&M*580$#lz~Kv~-0?Fdt2TI16bhb(M1AvuvnZlI%D`DH{SG6O$gu6Wl&T1uk8x5T7-f_l}sxpl|1V{waMf&@idy zvu+1dH!wiY^<0gagx@TvYGEj#gb-k8fHJ0UM;Jua1rpim{brG8 z3W~yDzO@T#uxFyPM69p{@(h2ZPtKqQgOTOWq++9AraBnLZVjw*(!*^wA}taRWSd)M zI+wY+Hv}!FuHo%|=eM__A(c<^lu=3tzgpzQP6RNa+wi%G&&DYy86w3q8GS348Z0Vb z&wekPLTsBnb)b7RNr3uizr?lqm7kyAC+I0EE6{731>-o~gK?K1%6^8N;H*JsTQ3;^p-wTe!iS*)@-GnS`8 zy5zb5Mc7c69vJSRS1UH1b`K_)%@VxYtSoJ32jmsrE$1bBHaf{)OdsF7akRe}IGAxl zlhO{y=UIfyl`6R?UObyWm2R-9b9g{yw(iCoDde$u=ro^pM@Aq8MydOj#%|>Yv&Q{= z-<#Q9?6Fq$aH*EzpmIAXxHogjPR>QVHgy2>nvls>eO4ldzw4U|71FphPi;37ZaAqa zNYfgj^)Y0U&WStVcKz7Pi|^U{2_BwPS^L~5lcj!dfMNc9-0LykXl8qL?M=vwbB0?c7g+Vo_5Q6iMafnp_ma_)h2t*)Ut<}c_$GMm zvmSy(Yu+xFtzo`}ztpVf(Fl1M-E{OuY1lt^6xl_9xO?*d(0npDb0aW$Va+f^h7_tJ9af(SS{lu75KW{Q(T;zd}2*tP%a z$W%my`17(Z15?h&z^Huq*mKN?t9y~j+Vyp6L^vo7p|bt#{^81^w^9b}hT@>KFUf&~ zbCZgwjOT^7o_X1y{<<`Ah3*>{z}?HWlcJQy)p^wC55GwKYCkna$(Y z(TdLdh;M!*`^Qu=I>sPkMV2bBR%S+y8P)msm+ZE;RYAE2n~8BB`&NwVb~h=viGmr7 z&Q4F`&ocENc^=7S)|bw%gm|dgnaF^njM9dMT?gQ$bl69o{kD-|_~thk{d&<#tHXm0 zD@CqZd%I<(1|?{|~meze7c0Dw3`LhW}^xa9f5E#&Z{KwH{ZH4z~q>_&1Vw=%QgOx_Z>t)ZbD6P#R zgQL>v0WF9i3C1#rj8Gw^KZQ8zN993G1`Xd^9l&TD`a2@1P`^XL>o`dJk&ic|Tr}>`R4|8eLigWmzm>4>cO=-QKhs*9OAO57seQ5#pBe2$x{SN0LyM z1qie}j#${X$ZcBBt_aej#~8_>rN*{t*Qy#`pNDQF&YPUq`M3fD2Im<6{GOAs+p@1Wz142 zg0ja6Zb*kwg}oD<`=_7`=?9WJmGfT_rxVP=2STIgtRPvic(3-8lgEc)bIY_KSiLJg zi;W@R40D=g*`G>P@;QpN0J?mEV$luca(#;>5t{^;GNDT*)b?G3ThPb;HNbIJYbJ z%+yj@qd$kCIw$BF*=gVqReWV;O0{9@sXzxbhY_PdvZ<`!PY+Z9@ zyZOp>>-y^0d|}gWvy1f?*aHRhJY|!*T$^9O)q7o~$vicw`3}jRHJ0Xe#uwDdJWa7A zsf7*%4dgs^vH5xEG(Imamc?K!-Q1K=NszJ(3KuySS?aI*yp|jW<5Zp}e#H#PVKwTo z0Kx1)0?7$)=UD@qlw`dmL;vYPEMX4GH?9%`P&ZcvigW=?4~;a=dO=%5{)C@yGKrp+ z+95fWrShJft+#ID?)ZHjz zW2BXgYkJQ(d#+K%B46c_-b>&RHXhZnR0Mo?0a(FP9eb&g%FCG-Tf6qq?<1*Dgzx?+ zTtS~1Vx#rEg2lYG;-6*ji}HW5brwKzHBF-?NFX7&yK8WFg1fsc9tiGk!GZ+{?u)wz zU)+PcyUXJ4+NMu0h=Wt#GT>v~s-!Ze zVR=}j+>Q-j*jg2d-+9FeRz;gRP#dzb*bE)G$nYt0?>Ef%tw^&2nPz?Z>f1Z6L_5Gm zXZNxWq}&RnYlndE%Sn~(lG<`X<7H4v96E4N9*%Ai{S#%02`ukaj!59fBVpjLQhT7s zMOhpdQ9+p8@QAdkww1rvzCRc=0!tScB3YEbwRSFnj`ul4pO^tnxhc;^58@Lc-_aHM zW%g7w-a2meUXV2Ya`c6djq=@BxB&#q%y4Y!l>KTb>WcR_7Q1h&oa*dYxwm(hd=-6D z>*|-zaLF8IqFX`L2LdY6xat4xJg5w}?@IqGg}RUi6e?-?fF5mE)A&uQx1aBA4JT^# ze*=>n;xIxQ191PFr#MHg|4)nG{eP`h8G2aD)%VK|nohG%tHsA}H~k9}K)$r$vMGOE zf({pHG9D3yk4J@!f%sJv_}zkiS>Cs>J*geC2l51dx!LKT_Im!NVtgQKPI|&cS=3FI zcF}c5Ir3eu#(!Ny84iDG!UAR51XK-smVI&znCxTV|F`>gy%*u7{8KPx89) zwBnda#Mlr>6P5A{ohAm3)<1t?r0wu3i}QD}k*$#jUNk6=AWDU_%IN4yKg9n*5WRlr z-P#mLj{Xala{7m+_}S`Z<{MY( z7*-TNM~*VkMLdF(mh=dwZ>>eiSLw}7M8a459I}DYBuC3qQak~lloAzE(pl82dB(8eT9ETcoKQ9#ea#KJ|>uvHZiJ@T%2gqZtqPsDOEaEN`D&n+u2Wu+wk z2hyK9StX^9HuQW&CTfi54y;(c{QV_TEX}QWu$}UlqqkVZgfj(pqa0 zPz&O_@@YKf{)Ug#KjSg8DmiLCY($u}JF*(x3jZ_eAkX>|MzN2MB=u$Lkb%k4ueeY`CT{K_Vq%kLiZ+;XlqQKk?mvzIDl0Ti%sdWk>xGk?+)LuBa zKSJFfjEeoO#|7zWQ`Lf5&$4q7?;%GnTxhdU?-O)4X=lr*AxZ~#6;m%*xevBtGH@-v z6%Hp8m1kQiBf+Hao>KeP_C{dhv^HJRw<{2AHzhNgYLpA4iP)Laoh1?$#p19^yHE6D zIBLC_=vMHTYg>y}aCas$q6Mq5Jgv_cky~9FS(=awqJX>tYff%Rz8I(UyHpC9Jb!kp zAhmq{dw@d0FiN$)9PGv2ORi)7wVspS)$tRs{e#M2e16iPp8*eEi@A0ZMJvuWZa zm97MrCM<6M=tsqZToJ!z`W}TIcl9!D&rcoa9|MD)m0GYJGu)blM$Vc$M8y-b6jRMr zhg}6bbn3Hx0i_YGoMoDZg7?&PV%wqX(;f!F%7ZjAk5&bbcfA``A z%E_;;>!(r=8Sr*60JLoHGh=-lzS}^<9VwIGCq#7&3sq0xa9EEFk{k6cKGG#pamCBF zkjUY4E(G%DPJnF{QMA-&6PBP=uBl?*-x-N%Fu@yIVTGbNf3~)sO@meS7xv0yM_~{m zK?!1gcTip2Ys6b(Usf$_tWkhurD9}59$fl=PyLI#3!q#LD-IvsU+uYsv*?<>O+X$f z#1ELy7kgtZSz(zisV|ywwKDftc2f4x^muK27%}HJdAtSF+3-BxHS1>j+omQe}GV5f*^Z7zMenO~dHo<|lK_hx4;jnrGRjAcaTg`Ps zd6{0Q()yWa23$>!rsq@Uzh1+QG9(*?95I5+#Xb~~&;~HP%LJn+=i1d$(6ptrsXODHOX`Z9iyf;k+sgX|#R;)--CABCTq8-S z89U9^N)%J;D%P>zBZF#!NuiiyL3gzu1>xO>xdZslgGexJkSLX`jNd^Squ(-WemNr) znC)PowyEOX;|eJWeh;PEwX=HrJZYsyIqHjn;C4snnXz*(}M9O z#{At{MVXM=7k`JK<=PX0YT}6LO%ehXKkRi7Dpb|;wigv`Ng?^zl)8sj^%w7@Q7a7( z!7`CaFV~qU3_JVv|Jz z^}jVz{<`;-VaT)t zikCoGXK_hOSomN@v|Z)&2FB6H!0ee1FyS!Qy3_=S_#v!f6~iaJ6JTg8$fH8PxhNOr zZ2W7uY5CW!`ljF}+A(~A?q4F@q4PF|eU)3=P5mfC{E=$RZRC@%0~&s2;V=h1S`}-L z%h8-o2=x+C19=r@G+OHBG3my7(|Hgom^i`rqn-}nc(sixEX{Gs z5dC|{FJtj*bN7Rn?ON!ny%=9y_UAv4zmKl1bV}s%GEd4q?R<04A3q>g|WYn4KHVacxlRgJh^7T>kK5>f{(u_HvMo)CRzsJF`aw}?RH{CV#To} zKOyzA6S4*XUsUH?i^@Ba6nsSYT9u$Z3YyZBtBR1J;0EbW(MC3oIC>6pq!XBW!!F2# zM$o0N_RC)KSe`A2CvwQF!)RD`jZ`iC`q^|}=RZ54jQ2<{%yBsB(}Y!Y=6LQ}Eo;9U z&k)r>4xqQkGKpp^r17eg;Dm_Lh0Q&)l!EAEIWpcG4D*^|N2nhaR}kT;bVsN}%A_s|Lm&SI0+TJJ($Zf8ZVn~(VaBx_*+)xwOX8s=AVrR%Qb+H)y9-C(Hg`_PmVQNG85Alw9ToU2jz@t>yjCLrPy!^V5Nf*Vx3p4OSbrZyivuID(wYh4d)u!24)q&DF$BI(aJ1u$SDIqmM@m zwp9-IK`m^fUq5I7R%jVNE3$mtWM~Wu^#~K4;$xQ|sF5#{@Ift7VYvQ|v4_<*>?EEt z>`>@7mJyAwnYAHKbd2Pn_0GZ}nj3l4;gh;&$*;``lMLGW7=ZII+2x>9a~UCu3*z2PQ` zpFVvr8wXVbljWyA<)E8o_O{g^W4_zHFP)IV3Ezq z%}Iu1s?hN^c7U$Sir^9W(aPD5>TQolC(K(e6?6q3;|H8;`An2%#18b7#A+l%LE*fp zB;f}Y=?A^_d~N9+4fHDBi~r`t`ffdT!}^rf?;&*N1JTW21Pn;JvCIDw>+tg|SaCjb zY%x2D#|*}eZCzEZ63C_+2O{)yDxB^8sI3ls_%ZG#!UlX0^NkC82GP`M@?pd&!|yE4 zk(h8h>59Wa@nFo6kjIRKeMb$B*x~Pq4-zer3(24vuIcl5Rx}7`FHU9g;E#kw({1AS5S8 z%a4-oryn%YvgLg0v)U_vPA{S1OJT<-G`O%i(#k0u^xwm|hF#qg!gl1}5m#Mc67@(u z3gJcqF>JAF{SsZHC`qJ9d97($dy#n#%{Gw_)ZB@9ddsU^RInB*^Te_vN|eETs)It# zS)aXlXS^s!qF&!Tf8Eil7b;pvu;|9uwUY&Ch!QXhLw=`!SZp5^4?eky@j%F(t zVf266xvdmb-{nKCG(FfIJBN*8QYlpwtVRf~?WDp?#AV=i=vM$>a=mXTQ{P>8KB`NP z=O=oF-x!*#GdSqHOb3j4xGgtkF)pi|yh;c(eM>%kWT3$NlYfLheVG9J-@9sR2qEgi^k<3aPb4RRtW;xU^g>=8-f$|4FhZZZT&)vG}C0 z6aE%^t>rp_mcy5tYz7~dqzx3ODk>A~-nwv*r@coLt zUQn1p;K5BZp6C<5Z-Vi?X=HL$&UB;A{W_$~&zd|lycuBVkLx?KqL6G<^Qc_z4($sJ z07^X4Y{O2ha>5V;bDi~kOI}`|kDt-oz#JF5jC*^V&nos~hGrg@UM+xfGr|3WO~P6T#NL_HnJ?9`5`3il>V%yIP_cZv zwFk-#dO8iFfKw%(M>yvE5<;UJEzbRXZIv5$1m12SEX|znt4G@KmP|X(_fj&1iXtm{ z>}UHQ=fHR`wq+u2%WuDhWxgq$JRjRrxZfvyHeJk#k5U&u>bO__i~I`A(w1ys$98u<(}1haGgx-Tywv--nAE^XZ;nhw@?IK{9f&+^Q_Z z@n0KIf4eeS8tW1MqPf+%h$|xkk1*cVT~qyyw*8N%Csd8-inVOjHUIR3$?Il8C>RmE z2y1_kLw>sE>1f4EyMj|J)+8x}s>4E{N+;%aJ zJc^c>+Bk33MBRFU6pe`*I+_qgAm6k2>~f0TcybrkUMNz7<`g=~WANFfPr*5Ss|I2# z4zMQaKb?r&<;^!=fglX@h%L+5uy-wSGjm1W;9_vb3G(tE{f(hZjBOkO2%zH#_ljzJ3hgRwHd|C^e}(z zR}+B#v8p1Ef~qT=*S+Ir5kr0?Xz+ZbcWv@xjYP~8V+673-uO{C{Nlo5GM&ksn~A%# z__$%+K}oonmn7YRS4yi@)ZDku`UTBUCmpjv581oHb)uGXh2PkD6T?hDCZ# zbgrnKViY>My6a{?#;x4uI=FeD|N6X#ro0j1rN=wQdkY2}D3ic4P_VuIV?=}~E1C(> zxizr}Y#qD|aq08f45$LzA z!Z9(k;)~{jQS_e-R?#J_c|?9?<&qo(RXo9b#5rNpZaG*q)RZt_K>ip1(h7yLY;JL% z=ZfX*KI4vPmLokQ!hc-IQ1eY-D%B8N&i-6ZiHG5<7t`ly^TL}KsdaqH(h$e|6@x=mF00bJH0 z7zazrH5ngQe=RUUYCw9~6@74N_qj)Rcsf)y;ltDr90q+!1rzszA%lI7YhWJDv3>Lq zY!1=tfUY)(ld0xM>A^Wrkga!(FoT7BsJua&k4<)*Q6%i-qWX6T2(s3k3Mh@V#ej0# z3hQ#8xZBN0r&vO+eD&1Q>Mdb$?ETWP!Mhj%f&qidji8uvZXyjl9uKvIR@P+W;Bh*x zKV7BDkPjLfw3;3z&_U*cpI|M;P)8=W@#RcOBjbveEld2SOph2s?l{HWo@7Mvp6MIp zLv({Bi%YR}5^J__j329lv3?cIXwVCV4`CJH>Q=Hu#Q!L!NPYKf?i6!n}Grj@Lw` zMx*F$Z4r_LoJV4|?yU=?3sNsE`ta&u+b=$|@gSU~l0JG_TyE?H;=~E1yz&#!wj_rQ z587X_C`QaoBcdTMPU{|}8JS}hgQ$q|-%h-%`)bO1cls=-TTRC93Po?CyKVwwEFW&H z10sIA3-k=%)QiXr&y!SqD`kB1?Qx$y9*eHg5JQF6FC~it8~U0mh{OXEB+ZmO?H2b) zlAoO=4d0N1W1)A^XXuCrY-{uc-5Ntv3*`Y_5=7oIlX6D?lZaTXGMnz}mj#Q!WcW)ew?E@^FOnzIFy@ zNNuS$wnyo18P+~Ed#?|1>&XFMyFgFuGAkha^h36icg!1XunO>NE&IDf9>g|oD654- zQZ^(fqt46bz0-d5W@|-;T4-!%7WnX zZ@jJdz^nbbI|Cjh51M^RqLD4Ue(g&9EQ(qawHB} zod9xQpV#QAi@(IZd0S1Tu$t~Mmr_58!+k&yjb(jH2DGHaQvJz=WbhO+#QsGp(Y$Md z#`ni@tsx#qoe2LU#Wr8koVf-7D27glaon4O>n|vXzgN%YN~u?b(~DF;+r{t^HvpG zkif+cI=i=2ZII=yH1eb5t>0G|8_pTuTNZZp@ytVDx4PnMsm6DOr)d)+|m3p%ODKG%_y%x-*+BZ>leG_uCe>s+TLeF3OFtTVkZouP`(_FWh z-x2Y;8H_V;Ok=#YAwT|}Z)fRX91{B)X^lkoF$_A)1*E>;z$#JyIQG#(3q^pK;YX8z z+%HI+?Yuv`!tqK_IgeWvc2X0df3P)EqUO=0j8kHGca%|5YxrXIv|dD?_Q~h%yy-aI zT<~u6$h|P+{$5UWrJ~wfJ-mDC;&I`&Qr78G^qC1|32)PJ6#TxAr?>>#Wx@)-*dlCIG`5EIL?5CO zp_GM%NhpO>w9o6jY+H-QXc&kyRJMK!$i3s%7aS#?HIf45(xnH!%A`?rk=Sj0Tx~d6 zo@dA)yY|tWntr2$#&FJs@l0z##IhnP_&E};ai3FWKcR2r{GZ6=s4IR6h>p@p5R^DC{3}KAPcxWjUb?+clCe1X@0wvUpg%gUWuQxBkY75nO$9--06i z9F~{d!PM=D6Wle|Sf?-PRB^DL0Vuu;`- z4sG`rGuMs<=f8stiDUUX4cH~36h7{!j_Udn_*z=cdUP?yGVn8m*_1w>cmN0r5ad6h zMowro{4k*y`wzgSk6Ho^_z;TNDuH;e=jlP`e-i{ofW+~=9QU3&Wb1;n2bvn!^nPI+ zF$Gr_owp{DVjfNd@$>RcKXvDOpN)rOT~(BQa*fETY$_f79zpRzh^AM4Zo+)?>IFS? z)jz01&UDT`XMh#S<310^PNB2*wC0H)l8L^2P8?MQhPatMiB3dlYq7-gW1R9lCNbwd zA9)1nU^kXOP(m=7$73vrn|k}p>|oYdO}HD{qWgGQ9|^5&|D0**=Z8EjrOtK5UC+pHFgWo>ADKn%2iz_o8bDk{edijngG5%V3 z2yEnc1xkh~!Ii}68>ze6g)y8DJyos+mWQ46dM<-ESj^uH zHp?|<))n9uRPN+XN0KM@3Etb#bMLrJ56GweYn9`Bu_sNJWj|5uLY+WeBJ3|j%cQ8@ z?t0o9GE13ybH88p3B_Xj19Z6lNYPK-sCO}aCSWxbAICm0cc|K28&9%)u+>b0t=DE( z%yInQ2b#8*)t;9i71K}ng^bYQH5;|w1`A<0ndp11-_y`3B;eD^IT0vxBV65u&pq2J z@Q@jcmmJ@EvSv4PEitj2_PfW=M%918#=}@(Up%BuDZF_(Y?9@PE%D_gZh2*tH>!!2dqZEvn|GNir>FX$BS%6rVlw_h0+mVI?zDqv9+i zPE>_@enMk?axd6EFoIeLnw&JLEpeG%@g$jd+0ZszsrmNetK)$$^!Pqoj}9x_e3>sQ z_c!o9unkT*H%q&7Z)e3mfn~c(qDtXJBCASfK%Z!j>lxa$jPX)o&n4@2WO?KkvT{AbgB?2ojt z=JA?&tg50V`n?ngfWgOo93Q8+-g&z%h&8ojI5j7GpB~-nJ0Pqibb0eTJjW|fou2+5 zm7Wn%>@B?LWx?D&{ED192^TA!k)plRusjR=MEwL>EFu!b`b(bPUN&4g{E6oZ|*cB{o2)p zY|T!nOWJ=y#vfPy_IfxVw5X!KYQ7<}>(u-w*OvChbWx7UxYRASzy8`p1G+@rh+gnA z4;)4x_-*atWG|Omlsq}ovwtovx8h7tJhVg^T}HFQ2i^7gjE0wH`0yTi@U3klaLG(L znQ&QU{PalFlfZw~zp%6fX&tIK_Wo9R7W4Rd{OVS*$9Fsf8nisY<=yCb%01=bGe|M= zuvG@R^DYE4NjQZ3st0byl|(HcFT{PAAnspBdmC`y9R%X zBlvZP`%d7(7qMlY?@u@$$@L0f*4_Y2Cq~4Or|oPR_YZUne@HIlasKKQ{C`@{7BiCn zceSqdE+Xy*c=5Oj6X+QXx*o5ew@vwYBQ|mlhuGnJQHT)GZZob`CRl0mu~Q;a^F9Z@ zqWN{E0JrMj;nqY*`foO(FZ-*vw{LURTsAMRCl-iKV?^dg$-_?h5JYY&qrlHEmaWP`S_5$Ur-X z{=jheKQ@I!31G^#v~oZ?alw#~la^k9T_2qiZBRmhY}}*{R~M;5qXO%R-YR;&`r+?3 zLC9B8k?&&Z|LJPTv%UnAW&RN;{e{`eXl8>3-ePR*(+P&vT$MRhnTH49YA6Je-`rrO${VSg$yPRzLYT}5fI0vjC5QuN&S~2I5u1o3FUt~+s zd=}F~J*CqZv;N~xaVWJJ{}+<}`<(SfwcPVdrDBMWi*6DAUr;Pn!6Dyv0yxaCbuFiI zJh2eG`Qg~W0iXtn`m^Y3V;x1#+`it|}^MEyJ}5;dFx-aaSFqRlK@lDwr+vaDx^ z8k4cSP>GA%)T;utjJnF6g}MW$&Y1E1u2a?TQZ)|`Wdal=_S!ux;(pg0WJHXH=Coos zv#A(E5ETsP#~X3p)gtfGpLXNLWQ$Bx%M%h!Nh@gAycV#A;vbT+eIsCg|6U+&yydlG zRK&~JD0nKTj1`O*4YA!9$jl`d;#?b7_n*@f5z=y#*-RR$BUb7ayk#bY?Yp?eNGVD!(bi5= z+WAXzJh8tF->1tTVHl@#MC9GZg~K0Y4=cRnSrKb_LxM z8m+33z9y{SYd5v@y3`bLf444~f- z)!sHoSVBetuSgO*LhUq&(JjNZJd~(6W{EY(twe}BME#e1u~WHh4v%^Lb#o9(7I6BO zBd!Adu)qwl0?2NXSdW>YzT8cmUi}SuJJdHF&6nu5`*?bIG~F2`a%kiKLUni@zXDRf zh^4S-3{}vH)}Y#QC32L|tJm<>$d@uZWDjWrv`d{ZN>w4DZhSHI9p3gWd!gU1Fm0bcwhM1uFLT9xsHgd`BM@wggU>`eg zhM4(zGu9pYu?sH=1RUqe@n9$lTHX9?wh)qEqNrk^G(pFWZsgXIOF ze~c+{V4pRHsw~OfjTBocqa6q6yLb~280peNtz60>YNVvmEB#Inrd?99vE*;TKuMXZ zeOf`M>Zc9y_=44DNMB-_2n?FzJ1&fv6C}` zKr**jZ~fIWJ-Hew@p>Y6eora=VS?an1f{u^c^KkwlK?m7H8jr(ni?S_J{@VTQqy9pT>lB&?h0OU#ruZ zXhl+Jb7OdTa5V-`kC21a$fwAq<(yw?3=!hY+?|v$smAc|j-^t@-vC+)zuF9y{5`if zv>KXT>^GcAVBHQERknC$%C?|*TTYOvQey8Z?WQ_${KLkZOnkxHHwCb27<sEo%>_hM^EzIHF&R|UJR~N38y#r`i=%! zhHIVkYDMyLgl|rl4(_HGE%Be1)gwR;Q6v*eueNW^BrlyU;O(em3$DM@@g)z}qn3!a z!k6`aWPMbd51Y@A4IO+M0}msKIQFO)%>h;COHyB!s4M=A8^tUNz<@I$SbS1H77A^0oO=_YDvF8o(Z0{YB3e8`l9sG8{6 zpN@<2ol(H%iH48~{)6z{1B!CBkxiroM&y?mx`23i9I!5e`*H~jc*phLU*1yQyl&Ly zH{$_A@{!}oTpZEz?#LSD$`2Md`=Z51_)X0bx1u<;%qu+p2G2jJ)^C%cpJL*#AbEHl zOM4t$e6K~2XI)XJtrWYikre}O%_%ZoqHW#Ev*;3JTrKsySEHu|UDdq@Ku*Z&Xg}2W z{a;Dk$-khSD>LL2R{o4f6V=%G7)x6qS_?|W*l|M5U>|(_9wB%k1^rbYkUODK-*tnK>n3N(AY92me2_k^ZCn)5h) zOl6_qWxp?XzLES{&6(6sZ6&CAU0xja#fXve>Se zxh)eJjJq`dWWoD{sZfX2o?yclERoRCrdTq4Lwq4!k8KC+8``4GNiun&Q%p~3Su7P1qvra#u)mQ!Fy+ciAMvRXgt z#R|pcg2G_#7a&xVxbo#_<0vlu=RB>;pLk0T(vg2r>KG6pd&EjU9Z@4W3K@f-$thN_36m=Ib+2>k}1FptG??^8ZrTD=#L18S}m8bHzH zUY(@_P}`$}?)wE9Q@jQ)Wd81~Ej=m@WBE0#NsvOXWsC(49nZ?$JLTWK_6Ek%D56wP zb+uefe%&VAR6CzDdpcmTrQb+KJq^YT*1mZjt;_kpZVFemR@beqZp6t|)o*mTE4W^q zTda}Xf8KBWi|Uz$P(6On1%~y>MFT%U=7t?W!=JthIZ8LgmD!}$ zP7bIdv(Gxd3B<*E&u)`a>{o|x(YCxf6bN$DuhS%BMz=fux8r-mPsfnmJ88I|spJ{q z{jF<$>PUjA z!mfO2b{S6Z^Iq{MIu-&Msv$jU-eUYUAeqvwX;l06uYv*tkHFwXTV(3j{4kAd;rh`f zjPd+F=XQxy5Qh*Qy2;~mGN+%B{NhXv2Ql6dL zW2Tz_+CUwUu)BV`ekDWvDFM$HDWh#Vkw zL9M#7_N_Op86-w`5is53Ti6b9*^#!bVbKF_v<%OAWmSc`e#0JK3h~Iuiq#Q{I>fmZ zSSZ#2G78Q4m<=H77d1}bEMc9vwoLPgnM08ih=W(CFz5x(S_G( zFyJ~V_@JmX5}&{7#SEbl(}skKjizN-@qvzLP#oz+iOC@DTL6;3jj_|v^rOTBp3McL zmkL89xlkrCFIGl;P$^RbW9nC72*DRwcmqvrah9~VarEZ%a5bsvfpLTp#{pcuJ+T;e zQ#WjIA2`}mGoaZ#Ax|zz`y4$2VrK}dg9cmC^ZxQYcaU-yIGQ4!$;_?c^~-na<_hWx;lKi^{r)MPIVF;h!-uSW?p*v zWjFlnz-ShL2MGh1ge)*GRYkY3g;|X7yIE&P9Jmxm==jSPnUafE{$+yHNVw>aZWov1 zf(0xwrbWe}ON9AlgfYq@{tyc@=om+0Hydw>ccy_kB)ju%ZA}~bqo>Qn^~&bN@7Z`p zQ%l;v<0%GJ{0>n%*59|t*Rw;KcH{}B#B-TbwCXUib7uo|8lbz2-5d~Gg^Ga%GYi?l z6AVdhh^g8d-ALOI@VS8$W0j-GAlH*0Pz9JYXlz-VyagUTQ`H_UEfk#iNWzyATD+QW zh-e&3LGhs|wQ}=*P5?P9V1IU+JRk7#`UEc3XhABeHTO&dqExx|X;H54B+x5`sa~q@ zD=zdXWk}Tc5Dde8;TDU7A3jnrcTO+tGIjaO`f=yW#bM~~VO!9MOtIa&+M_}VR>tIn zIMnP{+kJ2NF}})^DV7ftG5YgHX5z%eAvHZE#`N;zI0~NvR!q%=e*Y*q}!E56^ne~n4b%eaIKTF%) zbz{=vZ$@8VyC1*Q5U55{?#AZJ=Iuo+s);myn_M_=lQ-2*D0I<$aR$tW>)apiqn!Rp zz3Yl_bzyDdj6uFE@}32GEL6HnNku+9cfQ6{EcaoCEbx)=t1bU*U;d^$RCkQrNNYTH zWmvV|V7s~>Q*^=44(xBVx-aQs?-=#-+wM%}zV)}V)PEyBke{$KUo9l7sszX5jckWw z2EE!E)`c6yh3Wv|ZIMB~*%<>k!BKyFTtBC8?z)zk!n5{WISGrU`}Xffgtlhgj__qX zKF9c;`beU69(vMi1Fv*rp4!1r$L|YaGfq;eHYbrS6jbtg+#T0(xNp<%5|ZCZ7T0am z37HHP^F7F=hc@<@#iVw{QWh|kzm+Ae?h;)8I*%ujYdYg^7yv$W9qOaX`l+HcV%IL7jag8fJ~%=>vYg>{2#w$QS@m=#&zX&Q1|JGW zT%xorFLm$xkLaH3*o;9&|C@6*0$k{KYzVP#)<$Uy~UZ8!g1x(-xxNOrp`SsKC&*Zt= zwzJiZd%bgXwdlxSvEe8*D~%rk{DpXJMPu>dKDO_jnQXK+2E?fcA4p#ok*+H)6}o@P zC%{(zdli0?Dx2w7Rfpm`$?Fa$kxxsbeYK(X%0eFR+es&j&T<0p zV=- z)&lvjn%@Lt!Y8OuJVD%`6{U`%YX@f5RCs~sv<^-fJXT(lqqsVnbKh>w>nTwAav^I; z`}vysd#Ym$md8;8l-JIcN*7?%OO{9Evf|kt`%|9l^S1{Dl3eefgYkU3$jk8(%Q}l; zuj-8&?0@eCZDOkok%lb(u}o%g$M-W)#y_Hjp?pbiFiNZ$4HIhmQSxg?FV2&)%FNu&Z=v)g%-(@~n0%_{_>&klw9B!~4)+vd1w6o7L2Dg)u$ELMENv z!oxv~m?&mJTltLT4v_r`@l= zry7BI*x=nn8=fl<<|a_2%6L9Vl;eGEYONw#tyQeQGW6pUJ=sE*5-Rjp^|TaHQ7orx zoT$><>?au(2^fr?Ny9ItkZ7}GTY|%kwPCA}w{}(&YDj0kIasyC<-Mt1OUKtO=~$=n z5d!Z&qxc%>K-5Pm6yV(&LEhrsVRr^jvH*LHd$7KdNKt+*t(StIS8(^kvQSplCxW{X z08BURLGSXlfTQxtuf?iXUcq3xVDz>7t*J(fTRDUz46k}!+l`0NJK~$2t-HlfDJo@? z)fNGKKUWXCg>8CQWKzilGIcAsuljN<)eJn(MEELy#55A0wDKfNTDTCC*-gxOoE4NC zTgIXXbTYG=sw1?NVJwyW$a?-}5*IgB7WH11GzOXEO4En>HO^SCQKpJrhrv8P2~hKa zc`1KVS2;GnD>o0v&8fCDe#xxv?e$X(O`PP2JZ>y~jtfY$UV=374i_k}4afT;nV6dp zFfA-YB*el&F8xOguRH`dD&dN`_a2V&78UXSc|zzN@NMwRZIdvAfwZOK+zwWC3!#d- z^2D!pw(b?Tt(GL@=&zeaZ9qO>`ES}#b?mYc&b-qG^ScQ0Rfy>V3HmNE7O;}cew zmB=WNj=QyJix$oD?df1z@RP9Lyn9W)nX*BqC*dapuL$87wpnaTnc70om^1<=tEuwz zqS^X+?)z-}T3cI8;jO|Qv=4uoetG8Ud! zSeI-SdQ)sM_3;oVUC-q#=1h=2T(__~T0L$%f8a7p4da*KA(t^!($DOB*JF%T3*1c`jTUuD+ z7vT$~ac#-0WZO$sxZ9Zp?Ate_bWA}Gyj9Z!-U3+Fj=IH?_`;^=Y?g0T74w7;i>*^* zzcfa@o}kbqW6`TWpZz9nN=~|?(L7KCt_)GJO85l7@FRrP=Ao}SQr0kKeVt8no1l;; z9LQinywcvcETgsj=AXo8O=$HNYi_Q{73x~Bq-395k5%FUvv38l}%l83?$-FYCCj1J+>+Wf#j?2wk%{YOk z`vQxUaU1-TWSldj`Jgnu8_329!Z-9hspVg=S(M@`0Zy)J@hXM#ztDV5Vc=kMtOUTP z?vk|hM{6rU)$0@u!o?nSPCGO6l66oToJKBrzIhpeBiesCw_ocmOf^A~^rXCju19rhN1`rVN1p)$QK8D=imTg{84k_Cn;!MZ*aa{d*8c$9F zBLEGR&z2qV+w7(%QO@|hK_R3gY1@d4Sm_h~ktCHRlrmSqp(?@hqwC4?Er8SkzIN*$ z`BDx$m{3Jr>V=mSo*sp~B${W_meu~Fc z+`zwnv$IjoT+lpw^%exlQN4S4e7v9qTvQR~Dd#wgVNeF=l>2o&DJRijGSgfZzN${m zxZMZ!oNdPowjS(GIa{f&ectNtk|#Epn=ta9`ahJNWmFtpx2*}mHF)sg?!n#N8+Qoq z8k|6aTX2Wq4#6FQySrO(cZXZ#mG6veN_E~$d{rX>D}Q?pG`EzgwhJrTQfN~zD50zXy|K+HD$5syJ6R=9|FcAUUSfGPA4!$ zM`m~I@~M1E5oMA0zdJTCiucD8?9;V(Bb6oh)rXmDuRBkc9Q5xR1K5<7j0~N~)Akpy zYK*H^sOf?DVU+t zs^|orF4U-f=0RDrz3cZ_+oENydNXRi?9tZ7F*BhAa+fJ<%A_nIVW{hvb4sthfK9@+ zMFgFuivWe(IX=Fatmw{wF}IP&*vN|^j>@oBwa$PZq#G&|u`CaxLC;zm311$vd4bhy zaemi3?YQ7IDsS0*)KU>`O#?RbCD3A&6^}+C6t5R2Hrh>dXu3`F27$7`0QDV!i%Ja{HD8`zFnb*!R1l4|&(L+F(_wN$- z2SC>1el^KIzN2%J-S%#G^fjhYKUB5>NDK(VpS6GL3pN2kHI*{1+Cy~_6OoK0uP(U9 zkwj+YVdLQis2vSHKy;KpEF=67SHYvw2pTeumCF`=Yb+_VF+mqu`HtmiEcB zOnKrzZL@zYowgWa*=%H}{dn2sP%%0y)0t5jVvIE1I&x}p5%pL;CST5rNhm>^ymCvu zj~ox~hj^n8c_RzAWj`Bu4p=2%Bs*KL_^cJfdoMeeg~OVS$AAxXqAk&%`EKe0X^^@q zSn#nlb80yPeqC3=&{Ye2{)fDhOhhkSkQl->;X7PPGcILynoDFgRAwUY;d$++gu&>% zSVr@G+!L97Dx!k@ud7c}9bN~$H<3d)v4?jzA8tK;yX4!+Vqnr*OO$tR7@nVbg0XLG z_%&=h%FFJY^6WM2QT@i!=Nnu-&|=nyeA*s2n^PpBuVq$t9zaNLeWy9=t~}9Zo+do^ zmP*csPx%j;oY=RI-w7JNinO*Mnij&bKSE>q@u_-0m}1|j#6{fQMSPsepyTjvu1>NE zdSXej5{*{jZ*jW0cg59zaL=F{ zTlC{PvZ_FKw<`DiqNu~&51lGYoU!md6>1>DcPjimEhl5nyX(Ty?bL>q-DXd>sAPt$Frnn?7whBA{?C6jf^ZQZRik@Go4{0Az*-WAe&G>jo@`83tp zNdumAUXIU9yF{ONE4UP^C|1`iDzhkqiJ26`j=xN#VOW*Vu)Q=k^-Ijzl3qOLRdP91 zL6HxC`by}{^44fPTutR<{mdMz@Tuwfl!{IeuEYJ|y|L5S%EducLwf;{>l*`9AtJ>A zR^xoi^$q$>@gLTP{~8(Hy*gYmsLqLkXrnZ zI6mI7Zn~+8%RN)L%D5#Uk(8=CdEYwWNx=6@O2zx}Hh9umtU2=GuN2Fq3SJ>K0|Wbe z1Rw)z#SVB|pgYr_EEOW=8$$JdT28~5<_}@0d?CgVE_rv8JVEm`;?$bxF#ZE&EHKjlFNyXp7zknPC-^so1D>Vd3F}|42A@gR{R|5|yozMnW$;ux@8WQnH(?#!!i9Tqi46<5@(YkjX(H> zDI$L-J}+_Q>&@9(^BkD>wQ19$p58edFIp*LM$bKz!{HL}L_;d94>MVLKe@ex z#R4Q@{0L)XOn`OZ3%ldb)Lx3;zC${nIDg&=)x@KI6PNWQc}Ti?B6zVKs7?@auLym6 z7c|SFLr+4>+D*+CuezwMA$xAv$$QxC(9To2W6XdjO3V3zh33bQm8+=MbEto!@+e7b|IF^YauQPz57Wlsg_?a% zQEu*5y2tSunM^mMMVP2%$a%ufL+>pxdLKMQwzk+DVI-hou`*JdYb*7nh8;ds#)whW z#Ma_zIux9jOPLI*a_^2~9}Dw46;M+W#kig6M%9^Y^?+N8&^Mh!v+)E7i1)n80#VI4 z4<7Yzjrq|+rK~BIuWeer>LtnRq(KI+UlW^Gbd0U-)sU%(-8EV}84s9d2 zG-2q|>LGBw2v%K}0;=Ni`R=)RuH^6fln&gd2s(W{cmW2Opk&tX0xcWPSJt?`o76In zyOd;F71rUo8U!>hzDUav4DTH&mwo)NphhSKxWqc0%8i1mJMmNvgq?@qCzOWui~2L$ zQ>S(_efZ{X?wBcMaFh$%?+4}HDrx(4SVIGJ6|cH2Cns*iI2EmvixHj5T0bt8Kp_=Z zKYrxRJfM1G3gi~O4Dka^WXMlR`}#|iim)OYgWJax9#acdfu}d_D|~ggZ~AAp3VM3g zt=`t2#(r5G!M2(P5*|`MSNB9xMY z-ny?I@}%r>fA6^iDG>YD6>MAAD%(q+csb_QlZKj#ExB<>eXC+8;i%{B6B2_nNi%DX zDU5-68UHmrb;5GL?=wCr0W*h!#A`9Y?6}(cuH9Q*(Vitu4WGQey|$i8!|ek;^Sc_0 zz01zQR(ehcq3IloPX@kT0c3IyjE(`5l`;gtnjgrn?VP!-cLI8!w5u*;FW?~=MFb^> zlB7%f_|=v2Ty=%;}(_sd$!0zO$qJ| zrti>97d2%)jX`$XeZM(r+{60?M-fu?vZ6kjZ$?%jdo>o^{#xH&zzh{AJY=GD>1eCm z;Xk+tG5a%1PX2y&c4lvHzpL!###wc+0F)ATRCaVsbohBd5BeEnW{ZBnIED0-jS*8W zFB~o}KJi92U=AVyODI_1o`I~m;Ylig6*L4VAJk=~NY*Y53kg`>uH_hAI*kstB z+-VIT!-;mhlOEP~uFzT6x-rTlBQO(el6id;Sw(aCo~Iws&_wbsxOKhOmcJh7A!ku) z9MX+8U-gBf_-%KFp12ug2V@=J+I8|zkWqs!91rH!iR82w#SmQ${GDeT*&ObnEl);c z*NLsL3#Re`EfZ6eHSU5VAp5>C?q7t9UwzuG8~RC|&ogv4f!J>Bz%um=6q1%7GTG^d zG4G62e_6Bway_?J19c;5bw86!{W%4jEfra{z!$xZ#y@}NZ!DSDwW?*Te77i}du;mFcHe-fW#bgNIFT2fOiAX>_T&;w=Xqlj*T>j}i^!ubovkz@=k8ab z{EIQ}x@w>2R-&UX5~dY9b_q7}cT$`v~XfB_mJ(CyBk+O8@Ap^ZW95H-;Ha4xjcPH{^BC z>tW(aLg3!r`0yEf=1pmPd3QJOOI=guY02ca;pv>^&Q}zo$Ki3lbly_38@bX3IPSFS zDrm_!>QWIuw6vn#!-R{Pu6W^$M)z|_(FqZ314$Lct8~{lSp^^0IIr z6XLzkB)s5lzFcWO)Zu%^a9{R5T-BU8ag6W0Fy~)m9E6T|-#U>j12yz`%pT^EBEIXt z)$S~3ns~?dP=79~G%enRs4MzuZ4kOME{!U*d5P@_UJo$eyp>P$x$jKSB)z;-s=-)Y z^;l1>`PSu=H;hAE<$|+yqh8+I3z2x_W_44v_ZYvqn@8NydGciISzTe@dt~}zXqox@ zW%usXTJRI3qxo(&kCQ)qU1TPME4%l^NuEfEV<;D|s%v|G;mc869%IJc^XZE!voB$7 zp(jv`fxQz^HC-VuJD>bm0|J-I9f^P5sc^564;MT_PHUoOnwh#>%r<@2_emMqTWClp zvCtX|+oEcDO7jMd6Ng9tH<}bC70cn4mywJ-de~gZ}yf2O9@)N&y}}dP18)|ulyMj-m~h?ZMJtU zic>@0-4?}Zw!FC;Ce3XWLBt<@1j=8C4V<9t=N(NQqNB@GrT}Bk=}repkjBCI9#I=cv|fjK-W7mo-5=2sh~|b z;6A#!t-+v({#OY&xh$Rwe_81AygfPw>r<&QzgOF3MvSmR=zL28;NvlK<_c~BlRhKw6t#%39Km^O0ynGM@%JJX&S=hV_ouwp9iz%#Cnv!r!Dw(V$wHw^5pt>XK z$ta`_D7%dWt*V7R>@t z=R@C`bd>@gJ`%l`tbKo=xtIIhl{Ei_w$!4fdnl9uFMXr(W5O!s3u8wX9i_MBlAdjt z>GR^t{pAJ=m(aV+U5tPWby^cA*QsCn?sM2=LvVw;MBC10eq4N!;tEi4>)v$OE~mzkI#e-2L1B^XqG_t*~?{e7-P2IC(StV~#Rcs57krC1{w5cgl230rvH zZ?SVW>Y--*2-`v4$S`YMwq`|dM@A&P{`rld){om-U60=;zs5#U=f?#?+Ncbld6U}o z&gU_HGMs7WD+nTx3E$w1kUy1pBn&z#NXx&c)9fTvFt}HIxrzCSu$&sdJgi~Ys@Q)G z5;2S*z1yoK5%i7JxoAR(w{a+##Aw%JXa#hXWHN%~I$2>vC+0^Ohs^^f|71%4vUqfF zold|@5ZUz=adD0)1U)KiNFtU4si<;oT-xtTtVfcO+xUg>hOta^IKybUnpljk{ORwk zF)#z^(v=)F_L|e!Jve^93HIG3-Q?OW4DsUetLwpL8d|^QogwvHTb0c!d+kTq%%GLm zq;;dMqI%W?VOXm$)}Xqctr&ld1VKA!^7!c$Y5Jvjz?nU7Klv+#L1+wj+a}`_mNq|$ zW#T+6e!N+S-sSXViS6OGv0Xz7N{ol4`@us?~qgP;Vw*l=n~o$j+^C+g3+Gs z!OP(ijxv@GP;0T!;kjw}E3xRff3iOJomX*i!QgvbOE4{2a zlZn)xFl4EZBcG9P)S~yZP6#}mG+6t?m{9kpxwb#Ix)~;cKCE5HB0@i3MDEPiWC|q` ziN`7yugh%>{w+$X;m!*IluPxO-6bMb{u*^aT$F0v9Z65 z&d2D+Q=iY;q2obos|Q#s5(&gx7l=4Sf>8cT}r}Gq|koa8JV0lrw}+b=K8rqL7fI_sk9Xc;fO-7BSd6@2a2O z&WmrXvJJv=^Rcr306zEv>&MmlDZ<^GMXd0Z(|y;s3XMfys(!quswD! zYY7r6P1=i4%}N2Bqmny+Nd!5D3(Lz>>Wg;KlXDf`30`Y>*l zY56JG&dFi2s%!hKaHT_~*}fQ@&5(L-ktv~!XkXw?5?$*0Z6Jm>oOCBL`gU6}S~_u* z3v_VbEJqQl#eC%-B8Zbo*V_5G6q50v!A6}#KrDQ>+^LJ6J@bPl>tWgTJ~2~X70j5K zEw%0EL6qh*?on7FSM*n$cNjv+TE!q|i%?R=53~x7%o#(66tl&w&RgLR>4j81H69JE zI6}Mp>lZn?&oc0mnKG2bbnZ35&%OezM>Nj>-LE}n=~6Po02cg`0VefZIYZ=+OHCWq5ZPJYtEqJL`x5g-fk39z$CwwsvgOIy3 z7Q*bf0|KfUlU-d8jy*p(wli;)urtH~h%>|e3AcrbfcoiE|BW16?TnwC1}%!ZOwoOs ze8RJi;8|er(uICdn~|EjR*+Wc!z9CHM0s{;8%sbk(YtrGxINmn_gxDad+1@j_ER{$ zXa1MJ!!z=7ptFSbjPAg(%WEo`80i0b01cfK||d*hvN8^}GA78t@l7J*b)$*V+A@yV>Yl!Ot2U|4rk=nLdt)N4JE zZBGL=vZIgKzksxS8tJm+!MRFn2UbVRZ{PF(JmPKBPWSe_BE&Q`n}oq}Su>?L8Xl5t zam6hBaaIR@KkkU5>_3=EDEx??s`c5bJ3&k+%(nZZ&vjIet+}Tc9r@GV37o3Ws24$! z7D(z{-sIr8(crQ3dTrt1k+qkS0;^C`P^33?Edl?-bd~Jom)h$S)4#-PPJn+sWOG5E zR+U9===7}emp2S{)dLM^s-=x32GqYD*t1Kg&2(VklKwD3mgWc6=p9DwEOthVpFg80 z=7rJ&{nM{4j1MSWKAe0Csx)75-*fDjDY!@W zVOoigX7clH6+x+O0{N_GT@H}4^qEfk0f5Yl)*T_RaIO=^Zxl=7F_9Lj3kkl{Lj>o= z^`U$8GrCH#EKiaU(R!g=sn+cgHqS_BaD(e!2tUo0P*R7y)i`_nbH!n9uU#S>S!U0P zm&bD`KOViM0-9liHhpFF4EoXSDHE5BC?Q?!z-hELLQ>GEb?s2iTi#CmtNl=E7fh8} zGXKbmU!IaiK)FB8ktK*tN+gN&KwK9J~xD!xlW=)q%<{s0o?pWD<)kb}?a71(u)T;EfbVU=`Fqy3R8fy$WzkPX8Z(W&6mgTCzljY*8Gpm9Q(LVfO z7#P($*q_F1l^|U|7=3my;XXzo(4$2Nj-pB=X>LbUugYqa679D|SRXW`?y85~YB-?&IX)Cqm zZ=90_sH1}mdq~K%6McRo^}p4rPSB9io^nHcdoHv^WMyG1zigeITI zB`R}`mvK!aVl8%4WC5ioMH_!$uflv(SAX&rLz)m)L~E}Iu~cMo<6ief+ej6s8EK&< zmre=A9eC82iF9+WeV6*o2k}T!S!=BoPRGaQ^m8@xYork5&FMo1-G`)=Zw&DtOT-n_ z(FaUcUIzABx(f=O)XQoNZXPh4>o?tq`P&LOGHpl8vtiN)1;~qP1*N|e^Cx9CAnB=<8xCYEI)V>7=JuZ6i0oc_`O#hzE$Iah4r-Y zE>DOy*Qe%VGOUrKaKDX9f`?7ARNpOxdve#I^%nw4Wi7|SVA*`t=B{sr-+{FM>xvv8 zXa6N({I&J#uX%z^kj8g&PrNqI$)!8O*`FTebVG^Mi>C~0IubJlIg;`KXBA-I(wWXO zl#H&n11J=rUw}?=mE~|+lUp5m`ovTeTE;kAFPru(w4qe7S)3q{vsRfh z$eEMJYpIKjH+t*7V>Gn($l!)6EB1zB7=KSbPVMm~3F@E#(r!76GKBE6?NW|;rj(F} z(|WM%v298*q$riKu&zuar>xXRm8XyS(do5k7VAKEP*@Swpkt_ysZLC^PqwB>XJ_Y- zuPh62L;*Hmi9d3fUn-HWT15#J_NYH%?a27SZeqT4gHbD`G>x0`UVd(iX0g>+!JMMS zMg%~8=qZTw^ubYq_9BWQ4i@s#(5U7?zT7?g$^u@Oi`KFs^-xbiPFBd_xRq{fMw6u!@ z8g<;zw=Z;bbVFsuQGm*mowjWDw=OIRs$pP{7-C4sAy)7+{4s_VlloMR1smb(n}1<+ zq>au05mQ27qW!Ig1$M`gMLBJaeRx%0M_C%ks7(DTXqQJCNln9EpqMIQt&6Rj+MZ=g zV7>U(-1i(ce`A`zl1_b%Rn_n}z~Y}16S%RPjx3bIi%N7;%k##$-?c83W&y0C+|1<}t257;z6akfK zSOYfZ*R8n_BQkC&i-_rhgQzpb?_TR>T)#NUU7P(*UwtHJdD$oz5#`I&I!Fy8{@M&Am zq|8HzFF+ju2s_a>^lqeZ+4t$cjv*6bnLU=mG?X2U=Ki$v1!=;3Jb|}CC=)^Yko|c4 zW;K;yfc)PhtStxubcEjS?o9b*1H+{6-@jwfsJ?2$EN9D%KfBF%Se(2;M&dY~_YLvF zh~3evB6D-a!_XTdw0i+-Giys@I0C5^@1c(ZJo%m+sp5;7-zq;n-n;rRD>i!_M47nA z15Ev;_neW4w;Bjn{xc%6%sg^(Cnkl1H+FDc;ywLmzDwDu0KfznKgOC&i*_GwhwUCz zfMP$+&e&2x^I$ zS#-w9>f##h_Kg${leJxSZ0qD@%}g4e)3pFmTKk0N^+BUotkD}l)(JO~^pQ^(mGEL{vIQF`CY%_=Fy=F=e5^AkdQY*T{*ZWQ-d#~j;k7lwK)?vM8ag=!Z?x#nm)b{_3C#@F@O ze5O71)7Cv+TYIVoYBAN`N_wg1SR(S9-eqmzYGit zr|ySdskDg8iaARe(Us&lkAZN(LK1o}u;63mn2+_nqEp`%nk;I{jdHkR@1ms!f{@2l z2n?Wv$8n84N`$jVj``f%QKMsx(_*PU{i1tIEbEFMH|TMB|5dbRsRRsc6=ElB2yVhf z-xXxHnxjzR+{^%`#u^fWi<$p1B{JQoV4Yx5k zR~Ri+aNNJT)HW+JAj_I;$P>Y?d&l2b-5syybAN&ayCr{B9c5m}j#k~SzfsA8r;t_w z7zk=Lx3C)Hs2w1^%f&Y?$p3t0!0_#vs{~x(xj#a9zmCpMKw;iu)EkkUoGcuOwCpq~ zTTxLVDk^HlEG}Uo@hE$iKa)C9e0dHydLBCI#2`KO<~aPVBdi$QfFOhRH}&7~Ng1_r zCk;MKLZ`OkR&yFTVt6WL~+Wwgyye?%P<46w0UQA+avC6mJoY#?kz3KE9 z1G3sxrn-qw+0<$IzZ`jYaha?)l zFu+R-K6r@3?xttnAP<;~z_X^$hc>A8?%BCO^SMf}d6m=%;0BufEWDk9qWFn@Cf4>d zZ~sT;F}!_Wm|IbV@;eUAJ0gXP``>y=O=c6fgQmgCoGH4Xjj*j zL@lqU@mSxEx$ZCNQQTJWVt|bH_NZ^7ew z#BdKDRf@Y_#!!-4Z{S(QU*HIiWS1@g+VyLaydi?<5(SN&vrRKThb)|F&hJ!+rtr+F z89$9J^XEc|rSVw4bNmd^jkPoq%w`PGWeoM@lb487WjWw1UC@^4x>_62Dj1SOHtWkq zn>Pxa&|IP^1BssfHcgDX!pJ(RN9)hdS=%1 z)4{$<3j97|z&$vq-dVFHap--PD@)Uyx~_kn8-$UAc#Z>iDzEMKR4OJ^wtQz}*861y zX=iF}!Ttwk{I_r{A@;B(=yn}XL64#kOo>2limg8EZnrJlBhq-*_c7oB zn!;ad=P*fgC6<$aB&zDNuUh=Z@A-&FXgPFu#c6NU+c{%SE7cYgGr+Z^tbLTTzV&Oo zxq{v$l(LNYC>3Ly&N0S?5G{u=kzPsQGV+W?3ziU4D{Ay(3~TQ6xvuMsmqGU5j_ymb zT3rO_?C$Z$k01B6~wGNuQ~4=>ah7< zK-XXO9ZxR=PUXYt@PE!(kvH2r4ISWzH&(d1|5v<;~ z^U0o5nfD5asngxNZV;s?3^?*5PHbX<`&Rf7qbXHNNu3?~GVh`q)Pa;4z6}E<(U1L? zTGk)Lwx2Ttr@Na~ddE}`t1zcVJcBNmVy}~kY0his?g#PlJPr8`T`Qoc zwx~gim2g^#pQD(`9csRiG05`LQ}kR`Zk^suC^kBu>vIQzcLz3Xt9EcvN3pSemKK;c zIjKgA@pQ5dw0vr*716PZ2dsR@A+^^x}2}RpVZbvmo zr;#1HsCAqb@orfJN(8*k|K;oW8*&sw!UyoQc~4RuN$IeWy3bSAV^oo#^bpteTP}^o z)R0+m2x3k_yaKlDRG-j~B?Pv;f`o0FB~VbvY0ezHC^Bi%R=y#AWRn1G9N>cVWwUI4 ziS_#U9-2F1$lL$SZS$0LQO3$OHP!8hohFt)Olh;qto?4la+vsiW`s*p@&vo-=a(TF z$Oeb4$VGXWB&wGZtauic4-UZ8LH?Jg512N3FHBTpNzpt|1kc%%l|&@p+Ew^HfPbcZ zu$&|tdNYH(_Dlmc7eouX#*uyrGYFIa^rG9|`BQ;AnMeVWo~7spP0#aw%9{NWJzeYO z+7Ej(pSKNLwfN5>`}G=@(JeD6P1_`f*qa<+$Bax_N-<>01hM@;sQZVV6DR3VIcsLV zipo1|AyX^gEZJ<}@;6xu^ugs%d#dPc{nzv%R`SH!sd|^t#BkfTSJ@YS+tanFk?d?R`Hz9}#}BzhEiMZVD>yMpe$( z)H6jY{A+j5yW=Wg+TJKns9!}P#x*YoEeCxVtl5MU|Lt|_x1E4Vv?v45PyKd3AP5jt zr0r}qUlBAE#K-awgke}6_)qmP(Z_YKPJjfR`P8dMP?xwAk!Y`^IPn96vI7lY4`G63 z(k)|RSlJbt&;tKrQ>os%jDyYfS4Fam~Vtpa)3dV@Lu65yKHLe<@b z@>Z8?X)na88_=PCn1?)uyUxbt_^>HlKl&z}k*RN&(fC8)&3&q?b%Qg4*7-ZU8GFYS zwv~xg&NMo&{Q8DaE~QW6j7Htf^5t_QPF_TB-2*k=stmzU8wh~1ctQS~>Je4YT(aaa zV5cDjf@E+J74lPo6nkh~h_)T}6bBOGJ@HC${z%;8zT}Z(zD*-FOqq=CN&;@KeoenH z@tGXWpuiGDodum~?%gS2CFM*3@8`d_HJr&7VwJ6}EvT;sTLW=N0fp~EvPQPjxNFuy zLu-j8O;uU<;%A~G!mM3z_T^M96DKk|p?84^1Z4~*rf3Ua14rK>!QTOMNW^fI1uVFb z{%ieYg%kYz5D zFsG5l5|p=V);o_DC#1zJ$q_HnS=tQ^TRJ?C%0P91;lnkev4fuMu$X?9o}b^z@{~Ch z!n62;GU48^-j_Q63-U^JZ%C@>R}djD0acTTQzJz#C)?DsV` zWZDTjz3p_(U||A&MA+Fo+^WvaoZp%K*J`tpBt6JAHe})TRAd5bCRzz0x`_j*(aA9* zT}9Dim*MEeG?A%4kqSF}X+~gZzyz9h{R{j0Xk8-s+!n_8GH0f9URQe=TLxpXSm)I# zy>k(nK*gq*87m&ImZ`mZ+dz7Zb&tTJwy%iYh-a%P0kKGCi|t|i@xLLL zUp4+=k&%(1p~4vhgM&#rYO4DB`pU{^P3v#Xe|`i^2!Uu2PxP$%#GLAUp7m5R0(rF_ zCUH#Q;8%BuX@YXPc@3qz&t%3uMzx-pG2E=Pn5q@;_u=at^E5kynH=OmoeFyT@@fDD zC>l`<#%Tb~bc8&JF@p|s8B)vmJw2;pJ3&G5V`vK0LN^e~y}fOL$M?Gh7)P_zAzAk=_sh_o zBr3gajXP&2T1&&v6pedV#tg`?Y_YcP-YdP3jJzNIxvj>o{tM|i2M9@V3I2D$+5SnI z@0{==>PgYMk3?An0vn(b8;j{f83ci4v>oqjebxu1Es~JvaPNZ@tiW$((zE>hC)wbi zql!*72z|Wefj;jx+kDhEz#mwg|FwOQUW*nhn$rtyElRq~D{3o-^PwMlVSAZ7H-hBH zL@%N5(~BRqN}qSgyVGX*RtQ!PV;Y%Z86{#`#d7bAqdO6z=EFwV@oEFHAZpBWw~htS z*6!OP5n+G@K4Sih9d4eG(8gN~&(_w=4cexE13h4BF_uLCU!E{~1!tMoA4kq%d#34& zeR(jBLjK!X4O#u|Z%k>(s{RP|#-Bn;3Qv(AKwp5ve-TH)hJ_8LYC#ny`&N5DHc*F2 zppS;97@HNSWXP6sd1Wfs{)PIl4-LeIsh#MCo}uZP5}!_#8r)4@*`{NViMHAZiBIJ^ z=-tRi^At);F3%vzs(B-rkSyYpyWjj(9`I7L{8ej{%7?oDGz8{EmH33LtpQB^%5)J8 zill*=@Gvz%r3PMb{5_}P`S5I$Lb~N!p_!nf6sO?c!6 zr;Ys&tMK2$gQ-FN-TZ%c{fZl3CQ%`cjD?c^s_fUv(lMTan)~fPA=JNLsm967$Hzxc zkK_eZ=$pDYqZ#_xPyHx39kP@B4mh8med7roH#B3dR;^JzEH2>G?cDzJ-PhwV0`Xox z?-QZG53iH#x;ORD3g{SIuE)ZkBZtGHFCNK&_4muAq=+Es0#>-Y)`$1rjVR@Bt1z%N z2Ur*weST-iKVfSdt~~1h8L4p1UC4j*-gWpoO?8o--is&PaFU*(k?1;p46%WkZau5u zyCBPPo23YC8}7$#;^4sM+vDQT%TwIU3Yp&rjfs8z|Gf@&rMnSPMO`St^B0xCbsF@h z;XZo`2Am}F*;DzNjt-M#P34|lQJ-d&R-$?M+}1kZZlO3_|7FW#hnTsmKQ)rZ?c;6= zE_&r@xM#8rh-28yrY$gL^4OE+)6~G1-!+oe6CGCh?++WUl9%WK`ODKr} zu5USAi$v&T15dNP0Fldk*72m7N9xyc&3VPUlSG!RPKOY!RUPZ6r7J}yCwlg!=(rDC zxcf-n&Z7VX-A3nhkLn+QKiIFDETH=#eh@bq8vgm7wpSI8W?oUru|!NKf2M9XTr;~& zG@q*+h`xEbKkY^9NfSeh0P%+pccdPqe|`z|Y&A1QSBK&_8ZVRZj(Nn&1h<*$oyX0@ zC5TB2Ho`LQ166wE&6P}PTCnDmbP4FMilqOI%R$nJS%s75kS*ici zT-;d0Z$jSHPi%umRRI+bf7$~6Xj|S&~e<9eti`UkZO=J|T1-Yl%@Z+|RB`9Aj zOH6U-I9#^DQ$huIM0um)(pO?QI~rr?z`h(PSRGGEc0w`A%brl`b|+Z`W>T&Vtkd)E zZ{E;5!5C`kU2<(EaC#fIF;#dG85_%jWEf>|b~nYpDe7kJx0bot5$2@jT5P(h>()9GFJnaj52HErE6{iFEBo zgWkK~-j~oXwmR)#vo%PYGu$HMaerVIpfAyBYRWmFc>h;E2k5KegGD;L_u>9jI3{?? zsDMD|_ZL05wyDg6;$4s@1CaCFcZrQaCBG99-i$tQfXbNI{4}qv58L3upi` zb0l@W9np=(8ZaJn@SdE?qF?PK*LRzqs19~C2^&ktwW1 zNt7!?Y*35JHnH~)6`ait(P}+v_6=_hg9cjK9s~3Sui+^|N|w{r%3u$9Ej{_kaWNA- z7Q;ChMt&Aa;ChjyXr|u`uD}ty|B|(LVgoCq@SWc@MF<^BpZmqbPNQba3x}d*7f0Nm z{J5`LrBQBfuK(E?PxK5eulaI*AcM^Yz|uU_4j=evUazBN3mvYqC76euV`Eix#Au=WQ_r`0ZBFEi$$IV$X0X{BX;xk8 z)peimnJ`+<)mWYtnDJ#0a-8nz$i%#>lQrg`^P9FI0xc-(*{-yDT~zKsaio6G4S}mM z8y5cz@$=zel(lfk#7Har=0u=!39C)F&3bWx3^|_@eU3>MT6*6JVwAr~-uBK{Rl~(Swm3X|=q@G@=ky2h|JarzGy`S-1L{@5q+KS?UZ-c){;K zz_+;CS4j(r)DA2w90>uOJBt)BY;;?$Bv_i@g+K4JI&xo1hemyj8wcujPUGnUljJ#` zoqh_5Lj)`esc;mRoqtHVIgQUECuZ~wmy6qpW0lOBsM>vCOVBTZ$_ynV$(o9Pg*b&{iIc|$A22;Q-oPA+=c3>g!UU;2{VQ>D@KsqDg2S8Cs$O0e*V$#pN_Ds zc@Vu&sP%RO{-nL=SB`+M`WR@U%j(?UbNg#Jos0_L?6M*MsJUWTSsh#R<82bc3T0Iw zDKs_>lGClTcXtKz$$0KISNNzhvI{8#*vKn+6$Ur-hFhetjOnT4ZEzlrmeYWuTT1-X zx9&ShSfNFW43uKs;k4&dJ6SaL63AayAJ~}Gi(2gPIzVg5ikH)E8Q%8|>niFc zmo;R@`#?a=u*h^L4ruZ#!~-v)e~0t{Ss9HosyMUJ69DfKtk}lF!{5 zdm;S+Ke6#^v|uFDU)*-6Fxugza6dO$FV)=!MD@2rOsl%+htkojv^+my0Us$Y@^j`W z1)tmAIz_rZA2;XOa(o*NE{@cV?W3MJJzjX0;fcFf|2ZN1Q?;3Uh`QJM7;=WEN4o4k zQ)@fxhTjJu|G+?CmaAlF=^E}YNg;dx5ug~yf}v2sN&MoTuc@DF9&*s$+iS@_f|p;9 zzl6862qok+p97Qgj{h4*9N#};Qig;xFf~XO!k3MnTVpbUBj-euMAoW}dE;Oem+DcL z8ZSGvmoOf4Oy=QjWA22Q6y@+n4>R6yk)hoKf2MGw8p2-PIKg{XR}b+rcDNLZyqI ze;PIQI|}jiqFT1pehj{0(SjxKtsgNt$&9?~lCS}owuj-vwKOVFGTYP~x4f>Rf9?8! ztQ5FaVt95j@;oI4XGXgbzhf6GO>GAK%I!V?-T6&?oSvCsJ=i^yPaQ?#DObi|yiadv zi1OQCUGX^%bl~a|vXGLKf(q-8h)pS~wc#w2ZoNo1r+O2g?3K}4dCilu{=WPq@p;|Q z1%o0G9HpoxXYM4R!mBgq8?{ebXO{9&nQ}K;P!}G!l1}5`j7hT#s99UD!g5_}(Q=H< zoYr!e_c}gZ3V-<>7xKmhsxlIGnu9xyh==N|sgsTN525xK%SocgCZ>(dn$VZh%%n}kXtB@5itbMU zLl*1bsG|ro+JpJ2gl~P25-Y#?b$#hTQtdxvA?}88OV?^0FL>!DR8-9ssgY@F#Dp@- zBGQ$|DbyXd{+l*ucDdsMbE24vN!mh#qRmL!SaoC}EMX3(Q-@0OJu_tr$FKgAa2}i6 zL?B^xi6i8OQA>q-W+9iFT|jC7V>c|~6*3EWgI}8nD4FC#e^kd37ryz*XhP}be#xa(OVfFsQ?qB) z;$%A}`x@o7??rue59blhcZT-P0TSm_`}&PSmOeJLKh@O#igzCAggS^x)U2dq^2iKq z1{Ha4o@Ie%0GewjBnDToH7l^g1A3nto&$Q5Nma>5y%09r4=Q25)EHv-p4~DjtSg0x7&YneW1C1~~M zZ^qKTkwHFWo`f(Ntu7nuecuawsEqY&9b>?I2`7&afq=*?1nPb9d|A^hCVmn!HBU^J z%D2{C20EwIWp>utu3jIdqGPAbF)d77MJ{_@NE9=n?f7V~p?@Bq#>&v=*QL5|&OlO0 zgfR!LG6kc@yBjINNJbW%uP@qQ5%>Gm?L=U+TojhSCt=M_wf?&V#c^mL z0nm#4l#~Unt?A3#`Wx~g>X7%!izU2gPp}#Vv_>vsb`C!QkF%^WwOUo(?_b8?}r(VC9TzA(u7CYx~Jhx7T^s5Wjisi$^pb3f~Y|@NA1dw}+bmhbl$8^5qvm`BOp+aq$K0MZ@ znZoRiakkJ9U4im=7gDyQObSS3osC4(pF&gs__@;|q|<}S?f)X}or5cjzHZTUlJ2(XnmY#))m)wr$(C^G^T1@4Izx)vbE<>h1sc+2`!D)?9PWF~=AlMohE- zBnTHtNxopQ)!iI_&&gp_V5Xe(;8{<-8pJW(d9QvKi@c!jJHHjZ;dIz?5|u-Noy@?( zY+CU#4yEW?iQtUeWPajP^P%lXDs+hih#u>R@D;oAz+>C54?r0e;`gASDuT-;Y=Y1 z(`Q5i4IP~Gu0@8-oZ<}eA`>#YA0YJoYY)*6iNzkSn=!R^%c%hhvJuB`%!C-wnRBj~ zQwKbf8@`^Xek#mRYH>4kT9;>)bi(4eygJybMXv6}m8$T@5v2^2=HCcf?sUFgEaoRjvs`~=}SsmxogLS|+!m zavlzV8DNV5>Kn|Y#wop=1-or1-ewS`V`}qM+jIS4A`OSmX^ql>f{k>#Lz4u%+m7og zOR1imD$dm5BN?OMbR>m=knQ05&Bxl#(1~o(xTnJ@GwoX99?jjsa%v93a-!;Q7%j(o z^5+`^mw$J1iTrYR#y7qGEe*7%iNYoS69hO%pa6%cu}T0`@4Y6nxW8yZd}XP47$rNt^?w00uK;lHOF$twX?=Rl6714gS=AM>Q_ z3!p!^yBSp~UEg;^u(>}zm9d@a6;S>l#KjmGEl{ZIR`E^7l+3FUDxe0u?$@>zO=xvv zzg6i_u9Prr*e=D;3<1d6Js59dj|4_f21>zqR^kUC<3yf9QDiFy+`aa_RNC4>YZZF) z!3(TQOphe~r;zk1n?DFwbcI(S5RSa@*nGJzzxHu?-yQ$Invrwg60C2h%$cBby4^=N zZm6P8u+wsdDJE*O>y|<>X}$bCdO+rmhBx zqTw(ehWB}VJv`VVW#WkVPZS-c##xB5*gRG1#|;~(0_G6N>w>L9+R8JQRs+0Y1e4gz zHg&~{B&>=M;w(0sci2u_vg>W(rDdX#WGjq6m(TYA)FO)O8P>EqA0OznTbQ#iUXaZv z!uJPz(Br&7udn}H+jcFIv86zmFM?5HD%k<(J?RE@;sc6YPNAx0*nLr zB53@()d08j4SEXYmDV#)hjU?{mL^F^bDzIclI zp2%0~!Hh76d#F;|u<7tgoCMCtszg_$=Q}b%$gt{t0(y%k)e)83+E)?|1N80l-fbt7sinYQk0`M}xIp1ulCnq_$<^IG9k z8JBBL=JF8UznQz1fv2+Wr&RGrSJX%H4d0oDN8C}FrBrHTy` zOGp@;TW@nY7@%CPB?^x2-FLC1FKcr>2^g_kR$kQp@Rbtv+H3qNmX#B4xh`ykTMLSZV{@ zWS_wQp&Zqs(>?O7&OrJWK}SGblfH#e-aq2!T^_qGK=ZalH@Kb6ZIAqPo1`*m>rP{+ z)kUbPW#4v$#C$!+pL_ay`@;H)eZ!fklXHhO-W30f!KegFqNFckJBY>zc+=-qJfP#*oS7&;Yt@zH>9Xd@?z|{ogGbh`g z%C}Dg6GR0;4D-?R{iIcY!3>$;Mq$_xI2><$Sm%vldb{~KM3`m4rMQ~U43lpcC_n(X zg%$49p_3*SyIrpZY<`@`n))Xpi61cJbnZr51F{+d4aI6*FS>Z24^$h1sv;!Bq@q+( z#hpEGyvxoa1Nf-mBQ946e-8Qo%HNThk0DH?Kqk0XAj8J;%Mp|XOCL6rKjX8=Vyf^w zc_DTWqhZ2uMe<Bd=Q0lA%EfdrhnV^0eCL7w@`5CL4ap%KsoJ+o|>=g#YjOb>oVP>fgZT zr3CF0=fb;z_dW^uCG^*4+*GfRD~^3K66ew(@|9~QGqQ@`Q)k;a93J?P;=}y~(~MQF znR}7(fJhFTB>=FYG=)3Tzi?g#WcmvcjK53JoQu@(qpwN2PU=A($=kN%3A@79G}zN@ zI^-KUA7K*hx^^--4ppx05dy1y2gCNwK**nrP^dkNe2Hl|m8j}Rj`g{M zN{CPdnf@BsF5`;2&6Xu4&FgE;XVMQ?-h{@TUAOJEB)_YhxCOgzI>4Z`1j%uRdTqAD z;LN|-Xl0`pA`SlR?aPbdyT7B4F`?pC7PICEnZTJkv-lF7 z4YWH^$n2-b%{Z{pJs5?}Za2OR6<;W=Q+V3Emr9Tv*$0+H2z31T+ zfDrog^K{^akt7O>(P(^Gqj18TyGsW9RbnC^*wqB~m+?6DZp%fs)_^+Z7cI?X2Cpz_ zCz@2|+UaJNkd?*T7cG)rD*CdBM1Hl|XxngwWC84>CD3t9fC|sE9rii7@SB}yk4q0H zB{=Eav1|#)L&aKvfW;`F^Gzal)nai8TkWf?g%PY2L27gDjwCX}X3akf)u9$VPVu9& zs(#ZT=`p$83>PYzGELI~zLQbb{n_+24D4;Ri zIOS>N&e1VZKe`$0;95-oT&J*Q_uBKf*qKX(HPQAiPuhOmN@n0s&JV=&$-g%00#DRM zOInnD?#;$QEh|H&NPpWB?yVlZ>?_A|GTuT79@nBR*(XJt7TDFpobA8_qKMZNZXUS# zU>!Oc*b?o_ww;>GQV->MI|PqsO)b20$4)hK8jzRWJGnmwr%t6%D*ool*|s!o{36w# zn*Teac=>U_8jPp-6NBmKu6ZQt&o`S6$Z=d=4(6DbnmnE+ESdEqVIXp$m)-?4`7t;$ zME&i{g}ue{Om3~1Dj19#0Kfjf$&|b};@R8)`Ayunu>joEm|QxY<(t!utCc>jCDeKN z9M2-|>th_&!56uIjO%U*EOibH<5MIQREFIYR$Pn~LRl)hw1%|{G+s{{u{razW9fXB9xqxxN$!WaP}o*yt@GT;8fdb z6C{=|mw#lsKGsm-rZf@%os4eQitRwE_?{XZtQ0A0`%Axf)UxtLYaH1qEekV!OgSx& zTEW?TuG;^6Wtu@CFRG>sZDS+({|)57dq64toqqVx)~F?OA(y$W9s;Ghd6Nv!PHf2WR>1d4C4C?eKPNR^y`Z~xELDP)ZqmaZ;5+%#P zeCosF?fN=S7ikp(5-3L+!*chAU}*XN*Kk%P_lASyf+H=-)8hT&mZiR|W}$9dk|yx+ zIJrfi_Q@VKo-X2Dzj_S|dAGD2fZNbU?BBckKUhPtXSR=BXSiM+Q(8=8woql}FgT;t z71#Ui$;i!SGw3X$d?p0v!1NIIpGo2G|H%ygQMCRWDc>#~0?u^&@36T_tORDsY2lgT z|7`sKew#k#xc?W_{M-M35Wf2%1oOK0c4Ez0-SX?CW5f$3&B=8JuBIu#YB|PR_9BaaUFMh8-V9Oh1Buq@bmL?b2Hn0Nqc+x%0fj9mpl?#?DsM7 zzrJGD@=K+T6CD2qFK?gr{I4;Y^M6(I4;&#mFm277*JBgg6QD6U+E0(8Bat89p{I{t z!b@$<7WZ`88MxA;d7z2x=ye?bW5>QEJR7X7tQPHkIUCbpnJ*~uU&iL_Z9Bu7t)~A> zVWVESbI8;z)aCKJF5YY6jHZHR6^Gwtx-wTJ#E+*wZ@0m+RM__KYY=2CmI5~pf!?Ug z59=87KIqErUiJZlUMcN5TQp4Dfd|D#{4dJ$Q_ZQL&~cyV`dNf1#IP4BNaTAtG?bPk zDM^f^ck8VzB++!HqYBYmENt}iG7*>G>$H`0TCdhr&@Xk}l1=@Sqpguu8ob-Ro+#b# z`!n#Yo<)+@+2Na1Hj?yN0J(Q+ic(J$8&fmQa6eny^-G3rWq5fhi;R=yDVWmkTNhgy z-MhZ7Yw@O#pcgl-6l1L)=W2>o4nneWOWxNNiW^b*xJhc$tW&ctN~F`i@0xp zXBm0d%JRr4ZYKk?Hq$W3w$tt{F+09r%%fAc?F}>>gJCdV#ts!8(kmrtvz-iVN8IXlizy9k_4u`rY+&zfG|2?XE_>8{abWGO}yQDRyta zOl|UVfGH97Oqf_!Qmo(Zlx?B?vNc<;E8elit*k29nS!_W#@O(Rl43s7ID=;OeqWvS zS3fHdX@G6Mn`t9`l!8?r7V@aesVKSKe)Teed7?gukEa6V(UoxD)`c=$W!&wDsE?C&Oh7eyVbs$i&#F?(jNy7aw*&7I>^C?2qw(*l^#QCnb z&OeZi(To|h@W#^3WAKNQM8OQkjr;MWO=l-S)VM6=y|))0oyNnkC-Sl{QgQy=dCSvA zQoTNFI9I7`!A+nX@{0Sig?1~W7f1KV11$TJk+5Na^NUG!iy>{I@zS8>u~dP*n5W2n z_}s3{@tnpSKG9}sS0<~Sm~d6cL>SdHg3DD`@-<*+^R3I2pz&_PWq%?X_`JKDwR1Ty zW3~v}voW12t(V338h?3x&;um#BF6A_XSXq=g6QN=Z^}*&v(fH;eDW!uEX;6K#0~fRzN=2B@R+-K*#t84O?S#gue;vy zv|40BR6AcN?tTH52Cd`ko+)Y%$HQ#4R?PePl;_%*e*U^mty{&$4zxP4t9zT%>poL6 z_6}zl{^c|Z0>^tW8U^8}jF&5!EWBQ(L?k$u^E>OUR}m|9gY1ym+`dRI@>0V?b3C5( z-LnRBbPj;812f_5Z`9w=%&O-5FM&jlA`4uz;S>8p_N{@D3IACug=J41VZbG7GMbfs?WnQX7ubfD(9kbkAQB9q8ua2W2^H$7_7A>=dI zucynh!0$SMwZ9m1M>#5HJ-gCg3JVbBgTWMY;#eVBRY9M4f3>WOKI7)j;n-D&G9~y+ zUxK2bGJV8`o{0N)K6cN(#81CScN$Kbo69uF`)!YFTw!z@!Hk7m6GBOtFN7+bO>(A%)*UAtha-xMQXEau|H3Z<5Tsn|i=x5kWse#tir@FIgY5;K&hj=4GcB6PImx zL*MX%>2zya{~T(k<448+Eqf>nU z9AG$#l?M$KGBM?;+lzlA-3ZG{<@{`@TNk(IO)w~wMq-A+};m;qUKyR_$^c;SQu%1hu<1M*0S`p z($Qd2)biP1r2#2`jf_EMoZ70(@Zqy{vszW~Ls4k*T&-vPhAUK76!R>)+|6qASM|cEhJ5w*=z^R@E3%Mp-|J38<>rX|hWIbyZO{IH zAEeWIKePLHFUWRkp=k$*g4kQYJhtXX7OgkWs<@NmuXFiU$)%>eg%AdPzwh8P@+u+5 z{`PsmGj{xlHC^-R&b3`EE_LJTiY@#U0n+f8&za1uyO@XIxcF27ONP$2uKbt}KE-lZ z(B{v1kOrBEd!Qzj;p8@3;L3bL*Y3f>ku6mK(V4f-`$G<97{ZSy?1&*J;1FXLHd6P| z8P-%*4!j+q*`fz#>0NDBWYR%BZLz{7-j~7cJ>+G*=5g#{-_ATzWmbh>bT!)uaGdwa(E`lu+W1H*2MqtYfIfK=E^`H1=^;oyee z>Fu_;7tQPOrGYhiP31wf64!KV0QcIzw_;^0_qYdR6%`*BbjSJWdBm&z%uqGTGL%sT z>IO~;*(>|GRLXUzI@Xe?gIm6H_x*2ZFhLwjB3FY9idZt1%ts>x^SF)f%^vN?R@r*t z=jTDxoaON-8Dac2LH^Fw6Rz8PP4Jc1;hEr~`r?;%ke7ChN9WXD*Q&qzExN+QoP->+ z3%pWPsj0w|8RtUsnwj`Y^nd;3B-aaWSi&yextj2$Nqr2pIvB6_Q<)-hsXHOJ(@Q15@g@Z2q9uQ1Plek1F}`cyr4~?k^2Nhz zmwM~sZ)!lZC53-lK)ptY&1f5MPL%51OvbmLq{;WkfHc|gq^|UVr;~m;F)`=PPKO6K zkKb!7AMX=gMc-@1Sb(-Iii-c6J=cqJTRd1Xrr)$%<&P$((K|dZ|0|?*pzOEZ70CR9 zWYD)7wt)N!&NP{5PdmrLMm1}eaDyBqCkXy~*w{S%c}w);lBVl`P_u?UE-x^V2Pnkk ziNqq7OghdE5A;Bi0z>>z@#v#7Jc%RG$ON}m)DQhPRr_l9a+*i4BywT_KRPCrL>rMp zr3~xE>@tdN#xJ4B3CJ79vv5~!^~;R zw56~6hc)}Ti;Z<2+bRSu+>*m}8l$zqF455=8tM^QpXzoyzwpzsVQLH=tkV5&7dj>#j_tU2k+c z?wu0L96Vz~)DiAox;UP|V;z%v+@)H7TDyU#Z6~dqbA-hbjU?qNtRL*Yzk%l@B`Zpe zhnb-qu-YB^sD8`gZa6$}e!}WlC(5^b#TxTk>3>K0a(!{XdtI}7ON#q}%71MD{dO$; z)el17%D&=8#c}w$`wL|ZxA--(GJyy#unndorxnS~fSpx$+p0yPQ)4)rY*? z0it;Y6rC^{Pff+@`;Wi9kKR19vqdQjR@grmr#Nq*U?~<^&h?lm4mp(cc*|SGRHp7< zT*)9~lE*0J5NfvsE4lk$jNZyJ-jl_sVPOyG$H@f}^$DVgXaMfdm8wp!R$kKe1;h6~ z;qi3R(v*Q*}Y^uN=LW$5%0SnO1W{aOXXsgV=Imknl32z{wiL#Gn~ zTnB~hwvqv`ImIz)3V8wGN?Im3A9I<<>{p%cQ!)Lz>{G=`=CHXTSeK~_bA7VePF2>6 z)%Bt+eE3r1zfgNGPr+ptw%xY_r+7VV42(1(TP0*wOeR3Ps{09?J0ExEzygZVi(~GS z@#(X+RBzIXUg~~QeY}WfjPU9|<~nC~>bp!BHG-lcA+%d$7pLAu6Jvem}{EoOO@(!N-~PVVV`Bxrl2UTlg??db)gk zB?iwQ{~D69Hr||UH*EvBvR-v`KC+TsU%+EIovVKh1PB>v;z5$%aFf?K4OKekgD1|x z-l>%>fT>juvnIH@QL;t2UWy>B_2Ow#j55&7kSEn&Zg7P7mx$A1&q%%gJ-}OYzFg_B zUpv%6i?A})i#B+3#F*#tfgogM*7dj=CLQ#88H3os!KKn?z+cCEZz?=@gL1SCl!jLc z3)X=!!gGQT!UYqv@pyneMz9(*%ggcOk}H@SNhU2-mwdY%17t|}W{7f8V1 zebazIOA5P4 z4eKCOmz8a+ih_ACjtc{4I_|lmyPfjTJ{xU7m-!JX?b-V3WuKo70hff zUV(q_R>-RgnuDA1Jim(D#~b^cH3FP47Kt?t7-mimzL%^igm2S$XSwJojBEI4Q%`U? zY%{zJ5x^yc-5t2CCX+#%AJnx%=&E{EknDi(#^*>j;!;^hX`+=Lf?H#<=F{$omO13;Oqge z;LD2J>XrxWdpww=_ww08s=5onPYxs_kZ+xMzy5wNehQCn&Y&sk!j_|hCVZPT$nZdG(Tf6-Qg&0bxWlQz?O)jcGF`!=4>vs!!F z6%XQ1FQ(;P=5Fom08m`F;N? zTZSr6)lZ|x_a;6mN$qqnz{R$Nf4UYm3MMqI2I*04<;Gd(^PR$#&Hvi-p@^Bb-$rjX zx6Ejfwp7d2eMnkcJj2fiL1@(d4E_G+j!KdBtHI*v8D=_yQ`*0cEqgai|1x9&QJKQm8BGv38N2InFKwbzj=ZyhF6%aSDQ}u zRegSX6Z=+`v?-`7uXW#E!{0pF>FWzk6yWKkh?ogPwpoU@B+Vh|a%Vw!)Ho`Olp)&? zab!^0Ps}&5xJ{@(NOjpX)^6|1WO=w|%ZgOz341bmJBT-jX&ZmOil6qzZB75a^Y24UhIjb#p4G`e$tvA47Hm3QEEuPfhVrdvj z>ZHK`_Xs8VBP>9MNap*5)2 z|4K&Pj`{P$am+2~xV8!2 zhpp=2SZ2$;Mk>Z9_~3oP{d7t>V=(P??(!(l_9YQ7crs^F5wRU=>x;ROStg~<{Bmu} z*e?w7#y+dcr7RB|h2CU!%IxoM?T5bl+TFV9%hhhp-J^N8R)EIsvg@3V3xzmrg-`42 zZe5r6>qsHiJ*?@+Vd;Q>@5^oaMz|3*CxlV;8Zskb;tK0xGPa<~^<%=Z09FYqcME;Z z$O!?EmCSr;ZwE=X42Je`;{;Jtx!XIsa%D-`Lnr-QJk^=HyqPsc!~Qxck)=c0O0|63 zCEe+ySTVJFzgVx+V!uRlh2yudwf@-?ku}GhuV*yUj=RGp>1sK!t){^p?D5z)cC)`i zhbBX|y~~l<-lH3nT7=+i6r&VH8wc01>;8LF?qVcC#2x&IoEc#c<76w9n1>wq$>`T z&1lnqoyWV=V+Y@P=%=hJ{CSBD^~E%8dIq%H(`q+ag9~p~BjRIw++fajd<|33iFgU% zP%!+)Zxg@u@p8AR_v*L7NJ`yi8bbi7C;27kpCxLt)F_p$p|$hix#iK!u^}6NbX}z) zWlA|XA2`&R-U-?Io5%yg>*ga3he&mzYb)Y?>zf~>w=EA-Mp7cVp=%)HhPuZZ;^x`|#Q_$lP7;F0W@XT25dK^TTf&{fV7m?iF{GLR zyW&7vI{|BQ>Fv;c*j1KNzZg-ETWgd}=J-}9H7}Y;76S|d_uTUfK_nPKmnoSOe#jS? zd0gqRTFK!w4IvJCce=mByjvq@M)%jmHJy_d-QE_UxsF2-H}p;Tp`{)o{p-7fq|!d| zui}dEHk}*9mv=*>BCd}h`#12zV7u?&=ccm!n-X`IalvpVX~m9u_FhF==2Rg2_o8yi z_Ff+(M;&_J&wtZ*?E0}KbJ@QM%u0TjXJRi~N~fIpyW1UL!ty-2N=v>D=dm}&(+Znf zLguR@jb2(VO^6|9P_bp#AP{c*uI}K}^i{A#g3ano4;DKeY5wV`T~s!?{;|jFD2v=~ zaKZaR!II{`q2s)QarQML_t!U6sk_CS|l>k_GYm5HJ3OqO3L{ce~4I z2%-WS9`S`FeJs+qD8z+8?kYQ&0VkQs`O+Mn-Eia;{wwkLNMgs`>^V zsBb46_%qRYb7;m4T3=dPFC*zqq+Gn$0|1>Y9?#c(K#-I+K)GV!hLAJTE$GvAqO#!5 zND6~_`^7eXE1Ac0H2^)x+pSzNa!1?pE%L5_f zN1`EBF4CBruk8J^&NvVAa9B?vHBr{|JygU)gi`EHFqjm4qnmf{ZzGo|960!8#~O7z znAqf%3jF38v_QD9mDJo)7!+3UFV6f^#97w3ORt7B;CmL&)gE)nu713e6X!H}As`4% z*P|T2R$U60&OG3uo`;dKHTnQQ7+kaQ=|g`7Tvd$v2j4d(e*v1J#5#czMKDA^9G3gM zES{8W2QphH2gSiXzjpqoqg;ZON zjTB}?4OlWdZ=L~bYlL|?+_CU=78Q7!y3n|uy=V$?B+=NJ)v48N>31xVlhFyY6Z|_gm9xUYe@}(3Kf%z)JOveuKYC>8xY1Op?l}sD~W=gL5ASm;mU>KViDEN^48r*R#)oV)?MF3xPds>T zM_i82CRz3lEd!4#DVio+--7p8M@vyDBBhsPGaIko4pyu#e-&0yinV;kqYXMaAhh|Qw0{|$_7Cv6LdpVG)53MR_b zhU@YnnuHg*mz?uvU>Q*8tH$Ix+KdPj4X6R-?6}=QdES$*X#;uxpzX3}9Me_lwbhDM zwBnH30~Pp|HDBe1!7Ag28{MEwL^G!Jbn#%BbcxhMY3qd~PQcBP5)Mj{X_B5&%mJXNvu*koOxDY#sJ zBL}>|z*y;M7YdG8ES9q%IwS}XLfS-fW)XfV>o~z=%FrDRMq*WBBNq~CMS3&Uyo!cO_u)Rl6Hu=0gmc%?~+=s*JKzB zMZIKvu+g0)KAfS!BIs?bHrWi-+?HWsOhSdLe8n$y9|qK)V;Sw(_~ExMGbpZr4B1nh zI!aG2BrXady&&Y~G(0e^SXDs3e z^N;iAX0u@7Ex!VA!e%_~h5RB&mhS05w^Vynmng4o7WUOUO^wquLKhu7*v7(|tl9ci zB}&V4EZ7k~6oLdsbnT5eHDdwv-v4$-ue8IPCKH3p z|E>8ls{~3V|+|#8H`_QM|1veHOT30Ku)KvTD0?__xIue+5~4&@sPnkV}^vD zE~~^`0#aalRv~-t{6I$YFF#{26t5uu7Lz6j}6i}9tmnfRc%YRj$fwU=R)5ur~j7Ct$a9< zfmeL{%2U_(N|h>u+F@dJZB+P zm}y~a&0bKu-%rVca^>6gi7wpLUP=nS2&DrZ^WL7+)ONcRLWM*?R?OL{a(g1xeFRIC zK}2F3*Rh@@YzAkoPLcHXD87JE%6>|mzG#s}LROy*q6Eq&97*cfY+M2v+(mVCdn~y% zvihf`l`i^P~Mi=c&~(SC}Tk6c!v;?=>kp zfQ)N`Wik_S?+Rdz$+95BGalC0jiDW_P_zTW5F943b>6=!f>3>tdc{!r)wJBz76eZJ zwgeeRhKF(iA(cb~4p676jnWj8DI@iY1f|({h z>q^&Q07BS0G&>UHucr7)Cc*1Z7e5Lbp|=^t#|7&0EEH!fp1iNJctRJU;rubiy3LPH za;IX*-xjVc(@Fv35f@P`Fhddoizvuwpjw2FE9Z3EcSN3L;iEHWhI1abCZE5u0|okv zg9Y&|F#Y{bpau=O;hcj8`|Qb}9zq&Ld&Om709ommFgxMhb*ND~@phma%*8p?SChe3 ziQI|9?sh&)<0lybq?INDm&1UA&JToJKBW6YQ8%0Y<*-2UzC$O@Hw&64RJ6^&~&T}|hB@=6upe8gV=eb@V*8idIl;b54MUH45g zba2X81;H_k*ITyUNA@sl(*wNq1Sa&>H@tg&qkuCD>^0(w1PS_uN)p(x#c|c{q5ic& zXtFVjw_dEWxb`{lga7&dbXB0&h%#(;a>n%M2{Oqy!R|vyE)!z>-_HeU6X>BrR?0eE z{HX0bFuYe-L1(9R(v|IeMVLU-+t^UOY#hfX=?gtoa`Dl#L=GGgd-sNgJfp#;2!D|% z-5Pe5aaWc zQlKks=-!?FTIsPR|GF2!91Ja;J5(m~>-LB6ZZ;YylXg&q-*3XMs?nx1a zq{A>)Mi{kb-%VoK6tO>?;?#bekAt3W*RFi&*;I+plC?)@Xt;akYxodhCw(#FM0-~J zU4aHn#1#2SJuf&~6sYXxc(64K!7bKP51zjj)sJfEuOEN0A73UIdeAhA;gamZT8nX9^zSE~ zJQxRxVh@ z#S~+wGXG!Lv=5#yGjU^HH;u&z3z?%Z zpD?4N7P{>#xca=j{%k-dP!tokT-tP^IK1x$3nS`w64=J3zmt!EJw@cNWSg6b&3cid zYEnG9Y_=4c#;h`VpmesJUR-1>BTXbY*-auE^=!k>JwR_i~!CLjcg-{q+*uvIz zX9x9* z(e}e)Jon$6vEs-mr(oUMrAn1r^5%F%ljZtA|{oP2jO z01Y~RgnK7EcU0dzlgEpNbTnzCa#Z+P#t@$^oU|<*{S689*d-&uq~F5{n!nmJK4|LQ zY+=xK!>>7j>uGq3*U--aJD6wsc#>gSe?8S9MY?Es?PIZfWXo93S=u;(l72mJ;?Djp zu;&%3w`nRp^un|IsXFd#2;=h;7U8^DF3XdXUanjrQG4^FXnb;#2l@T_J=U|F>E(`O zcy{BxPA1Egmk}Ch5seev^)?YiUB@YABVcR(wbYfQuB12ifM?LRQ_n#cp6Plu)a3qy z?Tet0+R6}Z>5Se>@d_heeFkhdiSFc}$j|i`0p%3MKsDA;EhY0W+-2Ka4H@W>8&s~B z$6+TPP4}c<8tHBFvLd><$zIk!;e$50p`4zJOEw6%Yj6PM5)+gVcT~?MVhVdXq2c&k zSs6UPYhsg-tW*W$t4p*&;c;(2HDsRkla-aVgh^%|z`0*;v2eimJqG)RCfsS1eGnbl zzi^2S$9sU0>HeesaWlE|b@dZ&nptPzfuThD2yM;#Gk}c31bgSDf1Xtyl#jc?kaeQ{ zX~pqFaB@c>(uX{Q49|WaWTA=6j0)e{f4858T{Y2qy*5ub+v*QG1Uw>(IN>yl$iSqH z1vN(A_mo;?6g*9oz2 zVh9CI^d=8!u?5`M`WGhW0npRwEnYe8V~>lCG%Ts(;=80-^m0?YPbgRt6 zTg^4CIR+O>#d!?_%c$kyN97|%^1 zAzDtlNRvhxE@4zXe54Qw2kG4*yM;~p<;oSVSNaz_!GWhC<@*X)>s=l%CVq5M_W);M zk;=&q?<3}gBAwmz4lg+t!FIQ0fw9FE;s%CDadsVFWA{dUrx5<-&%Ku-J=;}Enyl2? zXfoO1rIE3_6LKwAH(sTDvQE$Hwp9~ILa_Ri0Ys?%5puDkNkq^UAWQ{I+2eu*dUKt( z=}ps?*)3EdT(JzM6?w7VWjyiq+M6}HH>(uhm_GvPWiwhF&4Rlu#s0P0a)r;;EMP^h zT>kcvCC@wvb;4nNhwE}RiKmk=k3u0;IZ$~B@O?)E16XRdya(ecS8mnZP9zod7(a^}CuI7C)s*20no%F6bXUUwTq49*2n=vxr^iMqWV zRqSi6MJCDu{uL)k;88`D>j1Ti1=peI7dHqh@2SQoPP4Epx(fyxK?L$Wh$fhaM|f|i zY1LmhMJ*%GdJjA6ZlD07cHLB>HRmhddOM?Ri9Nr)6yEbzDy5SEIZxgd&|t5j$_(Dl zO>&`bWz_c$ud)^AUw+3cgwnl(R5B$yE|XK{Uo`Rz(BC>188t)7prhVjCBBi@pS@k2 z=qk3ac7hH@rdHBAUmuxL(ptS7RwG3qbf(48MN!Eb*g<%+$k~4v<;yaSOrH9Q&-Ln6 zYc;g#|MsQ&`f88!`%iQ2d2edV96-w#qEr)f2!`d|wo=i*P2?fH#coM@I=KVu&=KYU zX|!FRQklN@UKiK0NbbySD~wzw@Y=DqTuaB>sa!06uLRyPE3qx4lpzYO0PYvSKBw@JqHk9cgZJ+AP zi8{(O#?1m2FRQh@#iP!W<}i3XUNW@#^()s0qR(rIs~1?GlPXBqT?r*+PnYX8`b(9G z@x7G=yxKwo|klP>LHhM^Ersz2c*qW+jMK+6w69E3P(pE6Udi z%T0$DGz46d8X1k&sD`BS3J=xod%?7?Ff?IW?p~e+8LU4Ag*=$yg3+f(c)^XQSY`<96ng_X#)Bd zlXTXMFJGt1%(tSb`?*-K`d)meCfEC2BCKCdCcx?X+Z*+bs6RbvKR{M$%(s$cf`{Dg zAq{)BuvnGo&33?@UJy1r-@3E1qQvhF%`ek+-fnKw#sk6B!N#^4uDV~F+JYd97ta^A z*`{Mkjk<0O8v`w1lpHgDy1Qz@|o$A1F`q*~W`S!Hs zoyB3;XKe2YbhMYV>MJqT%epDD&y~O;iVCqGume}d=~zSPIl5gn zCSYo#3!HiV+0Et(xnHz52351tb7M0%9gm&3r@BxHv2aUsd4D4~!`+`kY!PFzV5R2QV)+Qfb?0?I|m69?%rY9;)C`vbh;nyRRI1U#@;bH((U=?mfHo0U^ZNo~ z_ZboJb;X;I1z$9nUn;(&s_vB_p=j0n!>J4+LvgHjjC-fOYh+U+%?yl55f(sE$2o`HGJyCcoEvZQc~Amoc25Zk-hVsMN@EzX*xk8sDJRL&*3rIc<5? zoHj~MAqx%3PrU0`Z9g5BuebadC$QnordLMcacKuq9Uq%Vr1Nr`iwj4m>vQ8>8%qyN z#rdRQDeg}B&6tmrrK7HH=X^)boTN1q6UU)br+>Mg9c7ZZSgsC|Q_NjbMDo7PZacX` zRu~S#i%2pTZs`j~0Y;&q9p?omZdK`%R53JRDmEgi)Z$Z^q>8cC;o>-d6rWA-`Ei&| zmtIP-Kg^fjcwFs$S0IT8Ndxy)RaG&;`8=7k+S@(#TVRo5X@UmGk)KvXY+_;DGODRANA2MrMv(NIT{t{5ngCd26e1`=nJq52exc9Hb?}$X zkDcws-82Zi11mYOv4t9*5q|Y5pQGxmo8Rp1)##&2Dd|u>!`NkaAMXx33C&CU{ii+k zHfx{XG`!imB})zc0|%ES=xv|POd01zpu_1|c)->-wuybDsEJXaM;61*syw(qUp>tW zov?9@pnu)2`}2MLKx+$f#OpYJe8jN%AeSwhbI2iDt#df*`sPw>-_1{&pscL?gB5|C z%14Z%JbYep*_**00q+xfVtH=TVN=7IrLzH><~t#=9;^7>)YZ#w^9{4i}9We+5**`kbyqLPD;u?XF96d|q<3ndh6V*XX<7eq64%o}8Q@ zOemq^6*-1nV!S^VdoOPWtqpSEAf8~N%#!AH<$ZIPZ3;|c3N|!*WjqC(H5P_62C9c^&hMXp&nu%44No z^~*E8&QTy#NAw#f6xB_V!ZRplHb(T(M0RX!%3-tkfw*;MFe>VmrDiqcAR*-0P&2?$azGefc<=k_9IVEJ$}G;iJ|Jx&e%f;7v}JP84}sqeWbI4?dknVKHx7g z9nC)Ns*yLg%CR%a${Kz1f!BM%? zU~AoJepMQ6hK{gIRcUlEu1r(eG0u|)FPIfX(^NG=PG%nSatv3GOe*U+XWE3(j+8$E zK1`vx-%Q9zj&wd04R+fejq4r>G`%+?4NI+lsmw$S*&i2>WTQlPyS5b6jqTiA=fIO> zs`~<$r8L+G7ix?^*#e!l=s*OepOsxV=!t)sHg0Y#d8?Gz4{oRiv42BdcXTWiEPakx zadMutVqbBXu7|MkAmHtla+X_c#qmX$FfAAY6MS;A6Plidc{^30MxjZUZrGnIipXEy zH%>VXTL_aX4UqTuVPm{?L<8})gAstzjMifKD$>`t@A`S}Vl}ChLm=4xUA^wGv&t7& z`6E=fc|HD$;7{20X&R~NK0u6OQMq-w6ztzdK1;K#M6Oe@NZQ__2xJ7tXn9Eo)(YpB zi4sm1=EqF>3^MC8>zE`dsUAs=Hve0RON^Iizf%=)gdjI&eNYz-uRS|>3Yu+9-lgtBm;UB*`Kd*Q2 zEcq}~aVg}Iv$fwpnolC{PlEunFa#3Mw>k#W^E2@)0m|PI@ic#Tn^GzY3c2z{95ySv zL3?-sq-I6itzVwR_oFif&=S3Pek(ju)vq3m-HS6S(D`3}dHgO+OwM?DXXdy0)Fj}9 zxnP>u#3D&yAKI^;#^2xM435eIwZ$@Q<}adYJg`C6rD~A!evuigG6}N*i$+#|P0nZ7 z5J{(sKz60M07@$C`{DjjXKCOthc3oa1UPgy?jTQru}J9+%}Ll7<&Nbp`mvz@kTA7( zgfR}I;o2&ww?d5ynyU!j;UqL1poQhVfLDAV=dS^(W3NoQHA(=0#z0TT}U?!uwh)7j@5hXiBVKq&6ajh<-iciQ%~x1~xH?hVrF(#65UH)aqgg;zC-)6u#ko z!MyqkDkq;*Jx0xm=2ritOeW#_k{SWSQ<6_9ngm7zYSbb~2-HX=$Uj`&hrNHx4W1lb zoxyEBv^oT_;VQg+1CCpnaUM)uzUghe4(W{rLiqL1mNDDQJF$j`S1R~dAavGh{f|4;&0dK<%hTMM$I8PDR;9+0(wWPO?!Fox#7Ci;a%o(c74}7 z92$?O{(x&K*S;i&LrJEini7VkCuYzGnIc#QST4{4uzMUe`K;YGSdWL&h?CMsEP-=X zAUFve%D)^xoR&@09{^`Y1Tsn?TrgE=a^RJ(@SvcWljZEHrtaeRk{CV_g*%@0hzvFL zz$&H?t@TZmNNlIgjV%NlxeneXuzY<@ znmt=e>_s&hCuEz$qyml*k|3MEo2;W_=AAakl%AhP`VQkk;?&5Uujkh(AqZmo)3YVj zn#n?@ad1PWsWd+IaV9>!Pa4=Kl_#{8=sI;pgki(Pg|ben#Y9^|uxKqs&l$FEsQGUD zn}Ac0oFYSrtOC&1jCCS3*+g-3(ILd0mq`Ov_$f^SBSec}3)DkoILP2XV{>!8yY%cmZu;|@g1brY zw60;8gNXRA@J=+^Ba6)9dyNt+FhcfT_Wl*Y6}>qvvSff;WESyu4X2ezqu^KN^;WlH zKz`I(fc8M+`X&c??E;ZET2YgL692>3lI<0RNeM6^H2-K~V+vvZb`Jgt9tjQbHY&~X zg?r7+lr@lkCK=g`ceEXzHaacOeM-x2#d$ehD4#O9dpl2Fqz#Ws2dY0kxHq_FtiFgN zud>ZS#wQ-}4uFz(#wq%~Hd|B>vq}lyjP`;s>-zkYG5fENnn_TL(mc6Qr8()7i-oo4 z;oJI0<0ITD%1$+nc-4GmbMsKKq!~JY%v$%J18qn}H@iRWQ0ygUAW_K8A(!B5=n-a7 z>03n~rP);EWzS7@TKA$hW@QU2~0{r{|l8xA>*a)z~!{%S9F zrvZkZnQ0kSvy*{OFn^-{45~cql3>l$!x81Op>s=wtmnZvQmMmk6k%O%-^hCV7h-== zbc5)gCgOJ3lW9bd6|{%Pej{_`Nc(tf{!7KP1(+9yrL84R|aFrT&@KV7vAL#fs*rpQXyDmnBl47lpY(qwmrXwlvi})@t#W5V*-z8SQol zQI*u2*>^&~nZM3!R=O%*?p=|z@Y3?lOXTMXu1JS0BGMOt+_KxAo>=zyqd)Dk^HPVK zv5u2bFM}v;3$tjK4S?l&g^u^dFmYwI?{}KdJ~bW}*RBZUH?NQZ+0?7&>PPdPsPZv- zt2Azd9z6zD2t=&cL0>ENhlfnQqO$bYuRbnjzVtAsJH22X6vuCepvhGr^kLTCZ%{g@ zfu9?29uxoiZ%jPLNmLnuup}T7QWE?IKu^`_$vBz+-sV`aMYPR9-;sBawCwfAqr0uz z6@s_Y-^DVkG^mtA4cifK^Azzh_gUF5ZMng3J}kP1$oXf zby4phJRv(J|5}PJMm@wtM1bo)dyD=2+<#k+lJ!1rL-HZx&am}N4o8yj*0#`eidI)C zE+;OaWl~ag>&T4%vxs@%{u^g-3hNSO$-+p!bR+d0`RhQzcvY!8Lo8=+{5$ZO;i_%JU?ChW zGRleGx66E-UrZjMXgC?X=Hi%s2w|1nSj0hj%#@Hxq17iJ}8n!TZ*r^T;<`!*TZ zORLzsgM|#=MWaCk3Vd!(@%kViEpSfH$|RYhDmC74It37OUdr~*fko1FDhFL23KOZN z+`gY+&<-6Ge!l%4B5yCz*%d|1eExkWEBf4er|&&d;A*<$(XubzIQu55yg)1`Y4IDR z5EHYt@NfyrZ~Ghb)ln<2U}%TuRrif`+Z4?*8bx5_qL0nQ8n^T9923_X&<3I$xMH&+ z5S~HMY$fvTFAEXY#k71@GDiKe0QJ2#QsJjC5fA*60-0h()vQ;qxzFEY+P{@Y=hrtY!nZj|xUOoixBp_Os+k=}jJZ^;uE{x&AFU5fck}3_h$LVih<#g~!s5F;K}P|G97)i6+4KK=mp9Uh z;!UAGE_**YdU7>RxeyiUaN#eCQYe^dplF#53N>l6D!E~GqRe1ZRE0A2yfo&L6}uB}{9p@!oCD^b5*D(K1Y9gGkNR0#(0d4~I|$hYJYDV9ouu;eyUx z>8*7a#YZJ5=+WGaS~#Ovq((XdKC6Rs2_}8m_r@R-6ybZ#ZaN(73l$G5G8dWC4A!lu z68mc^V1uZw?gcQr7pkuTluhVMtdSC~7WSO3iGP{xo0`4<63QbUrn_*rllemoU^|ix2F@b=l<&>|KFa2UXFQ*dEPLeS+>hnakN+i z;+-=w_Wlo7&`Yw=Q=Xl>gR6n~n>9+`6;RFKkY_ivk>zmB`&1sXA^%!2F(iHb31U_K3WRm{?Xr>n?$@VYYfp84^~5OJ`*4E$Ue)Tx{TxB}BXe_`AxLaN$i`pg9|epZ=g-3w$U zgoYwhj}US*_+#{$wC$%Oe#@YidC$I!hn+BR!*v;+^7$*5# z2>)R?V`5t?nu?TS4RH=N<76v4d>vObv4U_5I>s38M zQYyijbF;Reg`MypXW0*7hi~9=ijdWlaixjv`NyaBdRVY8r4oVAzLqzt2oK2(P>90L zjl#8L9#v|wlo=Kbz$*e%vW^pTbX`Rl4~3Zx(2_^F6$OeH1HnS=xdrfWo|Ff6f>*WD zSbjP0?`2R|*NA#|J-v4|?kNe;Dji(!=#vmRX5a%umX>K)@>LlRx~&pL%oc>lXa8nR zK8-csi^yZkFQ8R@{B52OUkK02zQar3h%Lo*Prv}Cc;E3o4&)2Bn8dmocA-}8A^5k4 zxfIMb(WLgiKTG2aw}^x=gve@i+Q!DRR=nLcc1{tI3w#L4HY>y3vNAKb-O2fD_;a}5 z6$T$_2Zi9yaSICz8KXjs4D;@}y#F5dP`FDwj2*i#*FI=gGG6?(XaIXnDZe ziiLjQPi#nZ6_B+$(c*vHA|z*5BwA(pjr=%rQYj6|TiL^6Ynk!YEGLJ@$qawa7594P zj|rep3s?)o*I{Rm{CtX;-}GGnxSdE)J%50K$(QYPAtw$m{gv1H(rL#m>W0*hAISh^ z7Qi}4fI=YRv0078EVJvDFWnMnXEMaB(;mPRd?+Cy&ZB3)8Qk-0v#X2wO|%(j(<~Ku~lo>9_s`P0X5k)`s+MK@ApZxC<2%h zd`1IfrAqjXW&s=`n7R^8L2d+xc!4NMgt+QZj079#D>p6Ju;OQjT*V-Vylj-^aIQ@s zL%06u4o?Kd^tx%+Cx!M;7O9~qNw2SdG7NruV(1YBGH5(CTMqeM99lU&9jlQp<>@QY ziwi4jTNzyD?kb=`i$&FGAAm@+UA!D&LQAjqtG+E_IL2OBhrd!V93IEp-Iqd(b!yic z%blW&!E$Q8RA$R1)9ysS>9ud!jQ!Uua17o{7i|hkp2gc&8#uJn0<8fethSwZQIQts zLUzG%mGTF8Z(HIV^Fh8#xU>p!m7zHie(!Eg4@Y`sZ~X-DSL`7G6df8?4~h8g^rxa& z&p5z`^^swUc7-t1mq%+AobVYyq9dd3a6y*#4>L?9#g@js5hh<<*g=(y%@z6{HlqOq zC(sI&H@**SzlrPou$ZWK;akXTFdIr#h(ME}x^s*bG`$3;SHH0XN67d+U*J6(r~b)K z2ah$<1x)`OIf$s}S(*xjmC-39_l$-RYU_r+uNdgu^+ypeAKo`ojyMEj(-f>cp1uyL z%6$5uGTan&dTOLQ+QDuz+o~>!C$blxhMVS3&oHq`H?wP=h-LmVfKQ7 zeHGR8a$1qYp0SUa?`f~Ged=9rNnp?19e@D79JgP9hkVL1ig+i*_LIzN3V@%Mr-xAu zg3v<+RqLkEa$Cq?>7V z=h*hGR|0o}lElp}Q9Y}!>`rngX@1ja?GUUgQ#MaX3tELx&#gHBu`;R6?tpj%Q3ysF z^?hI^@~QG4=?BLS{cAre!>rpW; zF;+6a{SZRWiuZbV!^iyg2hSB4U3w&sz~p_N&s5NCm0?7;zFAS0uH+ONrclVJv49V_ zKu)+9u28+R^`6I+8KIP#lU?eU8Gj~kRtR@(KE4I3#-jFoNyW5nl1cx0xb{84o9Fpv zaBbcgYzSJ`WvXHL+zvtwsA!gmA(BDbfHCqCMdz~#83ZoA@Z!Zc&3q^r=o~f3JduK@ zJ;Ec-C)N2>E(o;(0zG`ApnD|r2;*HQ{VU=4mXG%Co2y9Pyt#zPwyBl_HU)?hD^*{L z*^DKHxO~Rb`jW7JNUh&ixBnNEVJSMap8E17_#ZW1c)LdL0B=Q+mc)at{rt9!b$Ouy zh*c~NqgX1M$Dm{$4OE1JKAgX&mZ*iuGV_LY`&M5V19;lw4kPf_sR*zMwTt}BB&80h z4k~}~>q}nGjdVB$xJ%71PkD~vLRILV&DZ5#f3OLby}p;ukhHM0^Q{Qj@T!>yRp`Gx z7I&5tcY9*<**x&~Q7kRw=8KjlD}3(v==(Y;W3Ks=AIu4fV{4_&^&ev}?p!o=nk0Xc z5SL$cM&CuF09g3K%U_QP5rZAuOX9G<)%|mqOihC>NA@JTn<$J=K*)4IV+GNt9;*{1 zNxst1x+yUfz$^aeARpXw0l0NWYi6+9obR>zzp)l&y~?yYhe%EqXZjK!K3j5ztCY)3 z@arDnW>r89`>Bt7x7XYTDk26OJ-_EIQZV+mD^1e~M*5nSx8tc@Tfsd+IoDH@|hl}Ii z(m6XaAu&Ojx>Nr;m+P;_MReX5@Ogi0R*9A%$_}+$ZD^7RsK%hEtfDFolj*VlF5d|9 z<~gzhqg??x!Mn$j=XTDYUmOcd66hinIFW?^jHj8#Ft1RS{%`@`@+nbO3ZmQ-LAcMm{)xmdyx0J zSrSj4>fM_}>;OuIPHLPnb3sYbp@7rA>pq7lDGRF-jjkHSEOu1Rf4(0d#BH!ey5KJlHkWVrk0wX(j+?i-{aZ72S|!| zczPz&>wa@QmU~(KI_sJDzWdJ9WTdoN;dl*+Hr4ll{eIDHt7@V|7WLh#0I}x}BN}0- z_scN&^};dEmy!6DRMD#`GN%33ku4M+3$&mjwZ?O0$o|tBv}QR?>h)FH!3q5wq<)s= z$CjvHnmhtFsH4%T!{^Z`vA-$zj1%!|GyA(uf^;rIQeS4z$U?dJZZtD&czgQI3s}(h0RR;~uy35^R zWgnGteHsEjjhzr2$`u=Eu%B&o$5CAW#`y)`?$fMcYGNB8dIR4r4JjAH%aJ0+W zYqyNf6lL<6Yh28e%=Gu?AN|$!3N4dn6?s$0b^WiOlH7UgjJzvf;H>zSrja!Efq_L4 znWXb+>Z-B%BJok_wz~3r8KPsFMhgZZKRpk(0c6kb^XD^V&Q!$K*CRC6Sx2_y?}tuj z#)ixg+r&*?+UjmHJI-0AZt&|J(3hSAx}bDEmd=2fLl#)Ci@e%2<_S@wf!X!CqURV7vXf}w`Y%8pydC7bdZg};|R zG_&-xkhLp1kk@?Ihp+wv0*A-w=-By9`4l7poXb@Pdd7m^Mq>l^ptzWz|6+hyD&N>m z!al1^#<(10tt>=J*VwJ|L~n(CwW^bfu5zo`tYm5PjIn#Qk13&~Yh1Hce+Ux3NT@n& zuUwWU?Y33)ztYckqawIEA3InF7#ANy*PK)@fLyDdC4xdS8{so%##F-CMTO+2ZBddQlL~b;zVmmGzd7J=-U<*)qcOR|%pd}P7lOZ+T81+s7^MMk6h{e;MyPunuDd%* zWVX{9OEE(a>zp(aj(31VQ3i) z&D0B8-)h#XGIIeadC(Vd?Ch3H=Sn)(WPB0w9NV0jW|9qqqHELHGG~OcV;GBUs-pXWTj?q{ z6X1SoQNl~;+k3;{sd?mz+Ohd!+vR!@;8?atkkWb8_xyo-R=~_cw#dgy9)Jtjxe);A zb;4-xMO;arKA>Wh3HQqOW-YAGuH4x9kN7+|3~nIO>$!1C-=oPsKCT~RtHmiSjmd2| z4GN#5AToM#QYnbY5vDYx(k)#kP#U3&7L26xUeIh_%2^@gD+DxLG9N&D-tw7J`@oiI zE;8hMk5c(-Jlyo0h3;8GTUAR++i-n=Jq!Bi_+0F>4r2J{6}fj!_U%x!1EdJdWgCva zm`9iM*UDXp>v_(bq)Ueg(!;r>Y`8X6Ft9*@ zqt(u6pAq`ypw3!selJI_br!KIuyHqh6v0+3EEQo3V>O)gb?rz07pgv!c2JS5+Zu(v ziPCcmy!0;*_uPghoMflpOw~F7ATdCp4sR=Q|sZw zvU#+)XZu7+C<4*0mKt?Dt%9xsUQ zyu7gTiuchJ<;_2Y@2O4$wD=4>Zzn79Yk~yfU|$Q4#P4<;Pqcl*dRn>Me-L3DqV(CI zhpBZyKoPmbbS?uK=Rd&NY-Q;hDO6sr+@pM4g+TE);F|7oRNRw~!>_Bu5*LWIONJ3?igB5R~Mj)eut zrHLsjo753gu3T%mHS)jP+lK7MA zcRFc>$N7CUdQ1WavIBGaepGh`Exll|5XQ^xY_-+p@R`N>c?KITw*7y^$lPnKSKEi+ z+OGS~%7blNpOngm88KCNY*)UImv1*B65n&@8pz#QyW#emF$_0XQ>1|0(A$Pb;&xO^|eeBc&v$t2xv z7F%?;ADOQR6&~C`N&GzjQX^xjk^PSvnNj>NH8S^#cYsNy!*c{asArNq9K-;(@z5$O z-^X>otYx#+s|64_ccmoa!n6MSSalKKAk>Fpc6_)Ok9ygVh`i^fdZYi6!|Ua{yLZ~D zlvE3xKtTk-I^Dt=-`k3SA?V4#D|A$`LM8I>z3Uyu47P<_$B;Yl z_TN{}#%eT(#1?h31jYjerD_h_Zt%V6q7N@du$(*kjGA4T6pqH|gFK6ZeZ2{!C*+fP z>qejPnx%tay*JuBjvJ|I>Oy)MH9FZBzZwnyXq^#Ejt<#;B4RGLsy@sL$kmafq=;Z>GQdI&bzH7JA*K3sD$)rh7)n;mLouO0d{jGfVwRB%8GH*!B5cOs%o()pA z!H$)a}%R4Mubm%ug*@8He#04B)z%lr`@!>qGH z;LI0z{>NZf)f9XLq~+x+-8_&9B`}Xl=Zm?nJ-WN2;# z54!8=%Cq(4JLJf;SODRZ3*AE#KFdV4EUD}s17B>zSRFaRI9^vtPAMJ=Of#mJ*JWrZ z8khB%kT_`KK9ByLoZcG2SHcyDICvJ3?q`5Ht;tVDuH_%An0mhxl@U`O5bspNodxv- z;E?MfRU+%L$ql{^WtWmsR{&ZGhT2M*c=pRfF1D2ji8zO_n2Hf@o88fU zp4ffX8oUnjh}Ix#)t~hTYE~su+D*r(*xSc`d)fW6<^86bs1bb=unD|F+xM9JfafSqKxrvv|?Z=iw5HtD7}LPXajQFLL`5 ziOmBfz(fgC(jq-`?q{#WCxc8s&e!dols8Y{vnSMk$nV8n43|Kpi0)MGYA_Wcrz~#v z$`6?fOM-~hg;}EIi0K70xPh_sHc$lc)R0At%aIghV)x~`UPa$MC&C*ExxBQ+-TQBK zu$rbfxB`TuE~8n9Wb$|Fq7Rr_KjG`*I>wjj7vz|tvQ?}2zs+ygwWiR6e~Gl9GR*7! z@R5k9s&V0H>GImyL;fZX^Ib9RhS0vv>n1MJ0f2+FYfqzv1n@Ym@SPpu*~S%)J>?i0 zuyy@T#?Ns9mD^YFDqJrZDY7c+CFy^{hKjZxb%F1}zekML?|`s->x&y)qr({Qfdk8= z{?U(ZEI(VKH(D>(Vk0a8+q^ zNh4i90fktk*d~Br&#vHx`paTr#{;s}28`>Cl{p_7SF!&x{fLk*!otEX9P3836g8ek z+jQn@O&7_4%*fBnb<5={c}jqgkdmGr5Rry-GAC&OIJNZd_*tGUWYwY+$j;9-;du)7 zo_i0c85Zs)RQzLSl)aR_-H0EVT}_dyKf1r!`_(ClMa`U#|5bKRF4gt8=K!0UG6e%> z18kLIC6p$WHc9?K!z4{taMndPOGk&FltGHEdXTzR6~=i7iYAsuNWq)}*+8Yt>D|}G zU*VQE*1gs7(>2rRtMTs$$NQ-6i9-hDzusQunHwtcGvN>R4m z4=&>SsI`8TPi;fJ8u|DTS30>-P^p+Sr^y9jVZ?V9>WK~`NJG$STxpy;DjKFysdCgOB(z`;@#_6S$-&JT10znVyU(1ZCY$R){Ama&xWTYuv9A>M6**)P4@-0uDuME2X54L*CI^RFo>C#1nzE zK6R%$d4*mwrp9}dISC=A_s4dW?7f~wTk3@DBxYvZ-4?4lMPF(5ptWRfv3F2xZfd=T zJfaB{bo^CH(7AW>Ccc}xSn;oXh>Oehz2k{+UAWvI$?h=$@CN%okes?FrmfuV(?7A!e%z= zD>qNYwI4B%Ej<$z5;FMmfP)~8*!>r#hbOYuvmw+YuX2b@8ZBo+g(Ej?6M>I3TBD9R zABh_rqvJe->TrMS$GouA?SK&)Wzn>_M8tWrwiys;B2wB8uRNdV5a@Ln>~PNCHo~07 z2P9HD%slB1EZt3%tSP#yM=`4CSa-{#v683cPKJ^UE|H@lT_^!B{d28viYIr&AkA$c zX3w$dSMTVrU)gMQG*GKcV1%ZjjBAXMXBso|HrJ-U5Ipa~JQK9{spL0O>1_N_7-gNB zkC$7UF5C4@f>no5>sV2#NFj&AE+6J<8Nb8Ei;K>Q{}d9qz4ds}Q#mkS-6RRKB{;7F zMAB6WW%=Ueb1}q7V#te0GP#)nCA0Rdp}_jU{(ne>F}ra8l6k=k*m-hyKihAa;fp31 zUrJcUG4~CF-HO~i04lsf-3CAwS{8CXx?{lp(UgQhX1`jL8q}`<_@K)z?@#Ny;@*eC zhenY`U~AAGQ$aD*YR9%&z8(8;6($j1+YO8B1_G}0_Iv&g|8G<%v)!crw~u(xq`@y_ zEhhtUgE}`L8Y!k>`N^ur#Uztl2wgkSJx@-hVa~vFr=ndT>c^-^Gpx}3+<;~WkKH!z zED|7!k-NyBbmIC|4UG^>zp}`U9yNbM4Ln=fgJI%~IbmYr;74<^Idd8|`v0PZk_mz&G^EzCmT191^!<=)4Ih2`xszm1a7TzO=9)gA)Y42t0P*!&_s^Yv z?j$0??ewO>#6FsoPt1C{NT+Taep0Ih9l;pP zHEiDr?~4}eq?p4G@7i^RcI6Nqk(^Gqw*Fg81GLU3m1xL}#-BffT7(Wk0`4N(W2h@? zm{_C(`b{mp6sUH3u+C29a#rhQl`e9{sJU-fJP7(lE0|dmEwqq^X2Fpy9L(l4-gW;5 zBe_yEXP>rI1Us9-r4cwpXwpDr@rm*fF!nf-kYD zz%Q%mFYOyw9!DCOz2^v;Sn+8QJBQX&Q(Jnzu(4d#Jf4xGI_I3(S6=+t-!3}t!G zH&bNh2?|^Zj}GMLIb0}%0>(pxu#6eMLe=`#_2aSt%hL8+)*%)?fk%5x{JWje;%jxp z>vpvX{GvZ#Ss-E$!gS(1p!>{%A1soxe{Os%mhbWL&H7|{HRbA{GGTehS3CoCP&7#p ze2Ldl2w{JkNB>8f+=u=+s&KF%EfVWVsJWJ7&DwyL%t9eIRCZ5$!v1rkflU#-0XF0m zP5DP{!Kn&brV&B%w62=r9ZxXun0Knww~+~Bi8U-wws2n|F~8rGfG#zk4}vGp`D)

S?eBG>0v+=~X;fJ61Pgl&4IIsHi ztuT&RKmc6iRNULslkfrk_;o!-zhAV2<)V`SAt|>w+p|IkHTt_QKe%W84YAUL^d)TVQ#_Jj`^qVx=Ic)EI5(7{V1<7nL_1YsTQqDqby%%p}8fTX% zVyx_qm1Nk&Hs#BsuhyJB4rpRRqd7r5Do1|lf~w%7oU~D4u#TtC(;!1UwcIR|%$nGY zY*B8rMNBi=gm)GBD;>e9_hMvKj+KSdKm0EqjmjSfgv zRc;q@`6lx1egCk{vSJeb9Ayp#;oPA;?SH_Be>8zNDSia%3|>z)`nEJ;e0zThcKg!) zhhzXiAxL2M+z-DaH`oQU;l8KEpss&SnKYbtg?KXXD$lJ%5hbsAK9{1VmtZb*4Ei#{ zYjH*_ma84K;sgodf8o=SrxXk+EY5C)n?2H0gUa+R+Vj%@PJPThU41=ghVK1@o3cHP zvJQc#%-}k}B=m%Cl|k=5!L;?!R-KBbS(Uz>jE&sdUf2*|omB|%$3G?lOkgL}xG1Ms zf;d=eV}=Cj%u?mQjG?MKcFi8uOLJgL*5i{|Q$wh_qr0tsab$t1F^Ei0w=`knzAK=3 z;L$?&j2Oc~HQ%?&tpRjyP+aI9xPGN^cd<|_z@Jb+=bGCzufqs-KEb47TC((pvjRbs zZ+#ZU&X+RljcH6n-sTs@r#%9aJ#j$O2KTs49 z9%9}>0fX3Vaa4+1+cSbyN|p{O7ja4P#mKSaCd@s`JYSt6^_W~!8~A-kF=tb?Ffl1tK_fHuckBf}~nClRi@n?9`d z`@=k-i;<9#7Rr$hJfV=1wQC5e`vZj44aN!zf(@#yG2n$opzvSf6^^kDg_SX)w+I`* zhz*E9B}!}Sht<+v_i0m4j*>mp(^`#@TiRf4q9`F>C=Zr!G6r5gC*_sFI!-!j=C8%P z#~_W4@ug40+_E}nC>z(U8IwJWt8A`#I5XsD>tl!oiw%*IHXt0LnkMU;^y}qH2)5+V z-SuQS{M^n2GNlDvlnR<@WJ zy6f7tcm?%H*{y{53I9|og}(M-?}q942@g$y_N$uLL1VqBIapq+Jk^^9U+i40PG}_v z$Iq!x*W)(7vHfSUVF;K8Wmk5oV^kP@mvT%*CkfFm>&F(J&y)c+iHlMu!;M7tXaPuX zpzk6!qM;l`o`Pab<<^4KS8eyiCrXr#ChcGvscHgFhm_o`gjRx{dwF&@?ielLa&kQ( zNx}ak@3-HwcW}t(V}(>QAG$#1AtEB;!Nn(V$zc=V@QCt`>-O&GE@%{{Kt5%4i}L9| ztU+6Z2~@H_I?b#bH*N%POt9=72Cd%r@-(Q`lwn&TfX6RxBEshv%)(n;tUg`PEv4i6 zf7|KjApX4d^LM$Z$Z5)Q1GPTg+|Vh<@|UAHSHWK z&~f^9HX{9hNrvzHz>P}sB}P={Mfc997jK5oE3b792uBGzG?k;}vtV^%m%Z{24Tl!gVS*NPWZ~kPDo@&bYq}`@i6=90VK$hZ37j%#R?1VM{=gE>T{<})_ykdy6bf$gVjb8( z4PG?K3wL}!UJi^8j>@ce)VKYbY2-uo5K}7#mwj?>;-|7%hRwCc3I$^7+UN{xHF>bM zAxi$F|JK9iK_3lC9bnya?1M?KrA*RkFf1(+G9c@SatCd^xr2>0ba8Lp{_LLhrq?~` zjaNL0!Df55ZnzGzcD>GdUq~C`b3%K>pU5?(iG_Ka{ZJXcC-o#7nfW9do>kq9&lWbn z&Mfe>&NYL0G1M{fE_;NzbNA!Ef)~%!llq3SRG)cPM9un}&HL^XI_RP3ql{|@5kL2! z$2*FJt57D~n<6XEEh7}RKp!{tqtDSxo2xz8>|Oj8BIdXGm47-e67t`}j1&!8*a*Yy zfa>+oUP>GU9OUKPwi~(QfF=Rr;-CFEs8pFc#fr=G z$xcj8{%x*5y#uxRq}`k(td>z@rs%JNGGiHlXFi4bIo#rQg0(>y_{In?%x?KMRO- z5fvIR4h!QoceZthPCRC0SNlA%wjv4?s;YDQQ?k;^@Bmcx#%&622;BBxF0gxAeyIpyd z|HYu(2*|6x9NQM{q-FS9CROt)9F9TUd!EJ)=k0xcBY$~y+i9DFO)NkggLwP)0lj18 z`F*i*1MygegHHsPq;FrOQFUr@(NODiiRdTSQ7;(2)c6_^Z#w~a=?^^Iu3NJe*6Aftu^l{-5blvyLRNJ7fA?)Z{O0Q z+!)e-cCH8Zi!asS!C@;jg5=}$ybU!Z<+#K4HpRAk?nBq=Y#DJUXzV{!yJ-h?LS0>3 zs%MgXbab2?Ri;+fw(GB3oo+6`7Rk{Qp>?AyFen}OjY_0&UPY>y?wPrl%GZQH zf0@M=hfL=Sv7cB}A5~>4DqEg@@w-OlYbIf%!Rh}MRVQI3N5q%~zTvGl_?<}jP*tk}hwQj@B8+;3p zm$kPA#rqwi^YpbTvB~4r5*+IX6~?`VfqVChRQCVF)>{SCfoyBHKyY`r;O_2Da0nJ0 zg1b9};4Z=4-Q9w_yE`o0-Q})y_ui+^`R^02EU2ngHRl}P$iLv1DNy8bEPI#wxKa)@ zcx1zoG=86id~{%6UUj_wPSQ#N%Z+edPSEte0FP3rC~Ra zca)s{S7pvAif5tDcgGMJ+j(5+vUm5z^o zX8xf)RTBn#v}|jW)gnPH+Mu3L*Y6>gT%D_naI&F;O1$r|w96(#&r>U+E14z!$?#y| zsCS4GH5=E%S#&tiZ_Z)!Aoz*uP@dG-PIsm)WMVi|R|Hcfua?77p*u&A`UY?Q8xbAe z*vANsCW1+BJqv0*IfW+p%r=Y0OG_&-VqkdN3$ZW>D~aHx?eN$d+nM^ifFtfV`1Ww* zQ?cQ$qtEpICG4tc9R>M?T2>F(;|U6pb$(ldXPo*XitzE%mI(-ZDaIw6>n#viT*CF& zSwMLwC;$ zuY8H*Iwao*=h$(3)1368KwOc5bGt>vXXBuf?SUZ8EiP_t{(8*Z;LQ8kaRzlmR5TOs zn1}>)k|d*5Uc;;9v1>=pNSb=KV2zcKy+ezND?b@p8_bzXYa%uR+~sB+fbV z5c}YB0LE|~((d`U0+#zUS^)3i=$S2rqeEi{vvc4Cd7f%C{2k>_7LdY*yf-{qN}jNjy1GIW&Sv6!3?X2Q>!Vd4aDaJt__@+T+*IX6u#% zwf&@CQa)z+T?%zjjff~WcS701j5gDz*U8vO1BAT7;L$H8%W3VJP+?1&1=^KlZUWmG z5*Nnr6sDcEwXA=GsjFdAAQlf7waPV%0sF=ja>DBWbV4SrE2`huQ@TFn16~? zIHKc?xJNr3P0fV&?mrFit;;PLP1?$rcCUY>2nuRFN^pq81bFlZAil9t;lI0ok66wB zYI)~Tp(ZS8KFAd?TlRE%09R6_G#VB zlM4F=yO#!`poW8IP`lp4L(f@_mWa$gt| z^k@p=#y(dgcAR~8OKv+JfwW{z_yi4h;Hrzi*jd*k7E-on;r^-n=33gVcc-Tf8> zMYw8EHW~ldl*r+^1h7A>ZqXuAq$&i{t|@b8@yRN!(s$Y1fgS)7%ETkxHN&o=J-vl7 z5=O&xz?T~vDk1-=sTh$&ye1bE&<`Ifb+4wnaHIjIG{(B&Yt%S}wfGfx;e;E^K+)^a zF&qGSZ=lrB%+(>m>`*!t3ZLz5zr|Vcn>@5%8~CZ!EWYg^e=x9q&tg>(1MF}7@cI(L z30atn3uuOVa`j}a6-CZC0xMU$(Tc=J#oig8p&iByZAT5NC%ox^B3clM)HxwMYi|Qj z)+|vwZthl)bW*Sfe03H5l2Txuc|vz}*VQ1+)RCN4<@y3+PkPjH494SkO0|T+r(iI% z`ir248yCXrm!z0oR?9nRe!KxL2tRv7!VVAk!ieqehbCD-^A%I1cHwl3J4G~N_+8F; z8yR?~>r$U<9$L>j7Z1iaMa@d4eDB>$#vaYyet!U`g$=qHlQ#0kd`1m)fVJlDI%b`t zz)}*Per9k`!mqd%U_WUd1wQ{!kd;n<6)as%`#F1Oi8Odt05Q;pfR#Q&Z(bYAtAknw1%MBw2>br`h}VyNzJE zh20Ux5$q+5X;6?<|#>xDmEYumkFTkh$VW&Drl+(0?X^fwOyIOxdA5=65!Sly(3QGeb zQpou}Tz}+ z{8*=cq+#H9=i>RYO^nQbP#2q7BXPiO$)2!NyaKN^MPF&j(Q{j=X)Nxx!AC zk7hUYo7oP}(|doFu%TY_W3Pg^s|wu*BIp?@HHv|VC*xFVm?LK*LP!1FRHCh9f$e5x zuYH@{6~gtki3B^cnh6~ZO15@8tT#NU&%Y~?3b_D(Q5Vze;$7TnG?JAXdM(tOx!-CGQCo1?4eM;{+MwONT zOLSIQ3|cS=sDY=t>Y!tlC3E$}h_)XrS{1<<5MrtC$R;&w>*ROhmJ(eh&2BF8mFfLg z_ZIWPE6uL3*sfAVh~Ejd5}IzF7xgjQ?aap+%rg@AUc}56DRbOGE>5%1dkv3v&C9A7 zg241oXmm}40{V+YTix6A124!pAqeWZ8fWnCQ33w$ zVeb&5>AFN$=lO?xRK(UJl#9En5bnm@k*Vb#_BqDMx*s95$Bw~q>l(mfF_W81mvogq zG!8 zpwBqBg%W(H3yGxv_G@)fU%bY6;8h_0yUTmI#!csjH&k!s$7?r!ujxPEh7>njnx&6~ zuf>^43LS5|aTk2c1{T3Uc(U7vcl>b9KsxxR*zv=k7VBT%ssW_v;y8;{rinD$jifhq z;g`=%k;wYVbk>VVrpI_-uPw7B!be#zm*1Mc%LGQ_Z zqTcYVzD-XT2bUx1svHS?xMAGjX{w06DRXkwU0{RwE_2yV-CYAXgZUYb$bKtg4yRf6 zj2ib!cMxdY42Nnwo4ysJ61KIoCFWy|wU}2#ajUkp3vO}o_FN(FSAv228>{6gOh09% zvbKhXTyS}3{NGAx%K0-VOly0pdoK}1j0#osNtqhLPYR^cKj??4D480m+ThsCf}I>5 z`k0-EGgy7hzMw(l|At#e$i^f!Q1I~B{wAuse6+4vOv|sXL02O=S9dyqO#?!g7^34? z8=rpvt=HL|J=vOWiiGFooH%;T*Vwu8l*EbBOj8XKIyaDOjfn3CT|?_!vAy)SuKjZx zzEi0^$#9e!mTv;pRm6#G)?Mi7(b?$0Zp&BR(LwHcPg)jOHtf~$s*KS=RU9s@&U?ER zUB64TK*%eN)1Y*ISBD(;DK?DAE$Yl1J4h8h4LLy!gt!2#_|uJKA$yPZuZb;z4B)?& z(>#i$qqcYKkb?T-id)oN!ZgtXXl`Knu={&TV0N6ms4s(NWG}TDOM^)wCY?C`UbJEW zcOiP!ZUX*)A-8a(OoQ#BzS^uyz#C(M!al%sAA(wYMb<03$i>eb?P)T?x z1`kKtB*w~Z@h-Ocb_uG5DDt3B7I(8kmOxxmB7ek-|42|S{xhImOx0f4cuBDTibb_O ztbgaSO{>=sR@`T!MWduwEVgJ<+RM{3SOZTpS_3=z8hudJ$C3h?WU5G6(zQ`Ov!Oy$ zf>INen}JC>V7Trgy?ttlUMI5(e2mlPF=iJDiSMcV$FW|pK*bXshZgo1Inw@qfNSYo zG8N7D$JqOebE}7ek;9xi@7!0sz2;~v4ANbL(iuzGkwgjYO8Nu?Doq289HgJ{lb8FtlZVCw><(B#CRzenZ`TL)u0>-c2 z4TU+`UgJ}Lawl!P%ufFn->lPO-uE;q@lEW~f`u!3(4?j!3F9uMZ&Qx0`gFckx&g9x zi4T!m!@ez-gI}hkhyVl?oWW{dvu|Lo0PFaao`@FOuUE#4@;U+GZ2ugxt{CvTE~S%~ zdie#Sx&Fu5PJO!wM|8#FD26dkfYQ(Ouv^og3UFNEOo63rS<)a=aRK9|oHq7zwAZso z(I6TfkeW2&enM`=Q9V{l$$*~6e~J}rXoO-iswxk~yHdlkiLtM7PrzxB+D6m$HE-4f zefj&1(+EM>=prYQrV#%dnJoeJ%(x7h7=PNTpX|m_SB6`rN%#0u{QH5z;zq0?xRVo-meDFPB@Q^a2vU%IBQIA!v&ja;75(H z0NY5qb3*|*TCp2XdFv6InquM55tQ)mwbTbHR>F`yPi&3Ke!+^QjBOC9iV0ba>MSJ2 zpHF*g*;~q|PgD|v^$FQ-xlJu{Xy>`IxLn~c4k2_t=GF8z<#3kLMI>$TmPQ$cip$1= z>!>(?OO)o<;f2@T0c+)dT@RZV`Ro!)f!i+>fOco`)^NAz5WSnIN1LQRq}o6e`E^!t zm6$d@L5JaY%ZbVP_F8s)HgE)|($o0AmGx5~TVZ}jT3pt@tFY1zmUWwr%H$UUhuTXt zY>8_zx8)yq)6s=WTQ z?$gRs6KjT`9V{Qp3`2jMLh-eNTGDK2VhGfeg!}f&*P{Z_LPrdSyo7Fl4?1W0qkUHg zj!FIZ-`>~tHA47{7PX5>XKs|1PjFZr9(x|g^a$Yx8x}vYFnohR!%wXDS!4XNND%$n z$6XvZ{6R^TD%;W56cm%VV2Vp)l`@!l9B;# zUIf_{KtYBx{-nO!*uA|LBd+aU-g{}cnqL@MF>Rqx(oDJ2v^6^+n|Bh`l=9LW)g`-d^cjTY z#h+P!;_Ar`A+d0Gn=2;#k~hrQ{@1=tz0c^huQ!|ad*6kx z3|V#2*5ZiHc$f58E?~J#h?roK)F^4o@ZdeEDz7f;CHc)>MC%9+X1@u2#$q)#^kZ1< zg@OUhmS`a`qSZR?Hyz=hJ5V%Qd=4~_Dv8K$M1iUNy@c>X@uJg3E7V{opnEp!9>g7- zb3b7bC}VTtF}FGHWIFu_9TWMg|2QU~yW75YnB)t7bQZq<7lRQLEciBo-7F`C+;i?2 z)E{mys}Uo}E=047G-MEuM0xgLg5({AeN^xXIX8Buulb9kyW|}B zNIT7HTB?PsILssL`-iXdx#fv=blZH)7Chus)?pVgV&L z(Nb`!4sKu4ew4Qcb-iVU65bUCr$qJ&tiU=);;Wg22#MyDC0X9`{4mm!s-E8pYJ9K* zO7oP>;a)Pdma?8*UAkYIfD$1p6?{-R)j5eq;&LSC(}+vAi6&>{B;y603H|M@NkwOR zCuxZu8|Jye%>il-^?^muQY{<@jGz}XDE?K<2%xxgEfWWDF*@Lc(ZE?XCE^-=t5Tsd zz61U!z#pg(1l8-WhhT&D(~!qqxD-q~Nw+i(C0R>FaZyQoriSdW{%1Tkr%4e;W?6+V zi*E*$eRgGGi)PY86QV55PLMXuAQR(oT-DbGVD+qXf!DPvT)l)*q;y(^Z9)r7QSJQ7@gfu5|J~Qdd}?l15*_A!R)F50%VbohDtLQ_k00&D-&0C8 zSOzS6Q;ii^mxo=sJerjz<2cQ|g+lysSc-Rbdm+E~fWm?fShw zItQ5GlA0?>IvF2K+H!^SG8f&U&3b%XoxM27U%ExFD|;iJ>LQSUQ56!*$ktsgKoBb7(i^y_wi?1FHuiR-i>ua5wUKPJk0FN}`O)1`}4!JB=1lH&qzi_ZlYlEy&yCv^)P zYSioD?8Q+y1z={S0lB}>8U&C@{S^E9xXWTrCC~&Mm#0}50FKMQNI?J5QFANU_>&TX z|4+|WK7&VGkMtY?e4F<^O^<@C8IUYbZaejzu0t{I9`Gl%3GJ_{VaFormoAesj9N(g zLAgFtpyN0}PdBShH4LBzwx!EyZjhtk##Ob|^(ZAXk}Z4LY?~OVfDFLSQKFf{)}z|m zN-o{%8l3$T8jY9N!T96tX4JZ!+sazBU8DkP9@^b1g9IsruD$qkrrzzKOvRHTvmIpt znVRd{VhPcyD)zlN?fChZq8Udi_{-q-Rw zvVjc_e46_7?gQdUCBeq6idN?^F@50!c7n`yMC(1PNgt(bJaS`$YC!);6Nm_K zfM5a-Z`?H-DD9VqrzF{@jPR7sR

qgiEG@aH0!MQ+qy&WarVdtlJ0}?J+hKMEq1)#c$=({qpOJ>SHNl* zwn0Pcrp2N1ckIi7sc+fU?`ro|7Yjor87xI)|;k$MdHZKFJ1HYXJjL^dWC0C zcyL*w2x0O%RZ0d{puYuZlNJjbgsNa>;B#~&crq@uaVv0~J}=UtfPoz5+t8nI3)dOSoQqzXMPLnEuM;wW)`3?0 zrPd&iNJ!}B5}B~eDW;}UpBbN5^m0Z^oG78L?1Sx6irOZosZl|6VSr=Bt;z+4u z2llteGcyFNVK#H9nTB}-@b|lEu7Sd$(t3V}$hRZEK{Mwt;0}jPPzGRTW8UW@d$ES; zpy%z{J1UQdWC3BHgbpI}u*4dXeW7sMu;^$zMAX7OgP*V$8M`kCIIbd*eFWGCnJj2< zRSHHxk;T$}CJ9DDe?Nh_#3*VryD2MZqUQuXrRN7ez<(H+%hED0D3a5b&21C*WP_+p zi>KIzi4|KF)0MTqi*_%k^$5_e@S#|xf|SpMiP-DQ=;??$dr#!7S(kPDIk*0xhR#ar z#=pmyc|$5BQMVWH#}zO=Yd|LMYIjR0mpH}IPxTD=$UkHjedFuu35e#s%mo3!Wr{zg znMhwGJHxSyw_tznY(}Qj;+daP7Z#YGf8wdKW2OpP5UYxP`^|KM3?FU!7Lc>D=Wl#a z`2&ydRvSle@iX5bofa>%{I{$cj}hLqY4xvv)lmpN`1p^iV#mQ$Q|&$b1{UmYQ1S8M z-(SX9C*cWr;-&3{WIvKybAeG@D_SqM?m_MnKdTZdQC5tXn(f!g z5=!tQPNgW{=%x<$ASe&vzgVOY|JdR>F~s?=@R^eLKd`r1WiKl*qzOoS&*ZXRXQt=> zHG_%99!m+k>(RjGjpW>rBV|%LaIE3@)P>pF!GH9%!MxOF8qkYkh(lv~o zRXETYXF+hH;+Cx7rciG6gJGchc=QFybRkqrV7`(&Yb#_B4QO>1jpZvi7&ZpFp(<<# zfo|v{KHiX>RjAdg=>Q?(^6vj*Ac)CRGGjXQKr%9yr%!#|AWFKX-NV)+L%q6n-qVom za1Uow#sS}W0ZvTS$o7MQ+0ZRVX2?X1CTp$yiQOO2+9VpLi96u}`}O5#SsCnv&AU-h zw=6`=y8zyoe5}P%4X~PTW3#juyBQmo0&L3NR)l&~sGdz>4fwZFswOjC&8*##j?5gT`1wW@K zbQIqFjwRFN6_=)#Z8cQ`PD0!TIAX?hYBLEa-f(=`w8CI;LW5yyD5p59Do2=-g{WOR z=MyOza043|Cy1V$8L_lrLE2bh3N|k!87^@wp>$<9}TZsJ&yKflE8H zcDz}6NOIe5jjeNKN&E3A?gOYBQ|;WCFk-``DmQTaVu&E@X1|0Ri3&+OlzX6&k-L1=5UZt(z#yyo?d^M%g**r&uA2kOiD`4gHu6$)E2ZG31_*mrnkBEKIV!n1hEZ0 ziDk*$cbjY%#06r;j`*g2{TG9qC6OiZu}UTjv!A2({w%wKt_;BlWO8Vbt!1p!F&X5R zQ^&?lWwt5qk-ar|7(U)fSxRd{@*E7mbM|{iW?)%ushW@Nwo|JdW?*rLxCbC6=XPYC zR`)SXQs@csCyR%v=WCYm8G>U>=6AK0!9D}wFBRzNnUHAxCVCx59d*GnB?hX_7O zL23;johhEDLws@`HTTTvN@UlcHovuEa2q@IdWn_>xgzU1v&+EU91iI3(_M zK~!Cx_Vby$YPAKkX42U?F_#8wmMT0wMvCp*4bpy3-Mq`^c?OT$IJMhmjMwgClcxnZ zo3au(WR+Mz#-h96Pk~2ZoMP3=3ECDz#Ss2XXC@V ztmERnH9?Iiej=Ygc)8`5PM^$~8~9+K30YMp zLHRW0<7pn1XgXCS^nWJgR6au+tQ7;%zzg)DIAC}Dal$063aZb$r%*fHOH(8g97DyXCrGzK%xx9{#zpv|cH7lS@c7-g>Z5OW3@xKq z2%cwyL=t_?354#BuSuNK7aV^rD7QydY6Vzf49Pt!QF@rExF$<}{$6DA5qe@kVI-s+)H2{{0d|8IV-7P$a%|tMHhB?`S z9llWC(BxMPHhtb*4F<$W8z+@4LKD7pvM7{6Zf)h$@=P5hEUx6Z2efR=b6P`)JnICe zG8bE`u+ar50X!+hC(-E@7Fxf8E|}E)>Gk4JjSr#hn39|ETef+VRPp_G>yk8OnFPQp zLfzCtTP;ndQha|km{O7l;S85328-(Fb3)!kns72mNZtj(wxVaAT9xU8%3?T^Q`%ZL z9*V@m{UCQxCRXmB3Oa{)VP{mn)d+v5WD}ADUlqI&pCNpwbKI;N<%=q$Rv$aLEp3md z2G)Fry{mzl)Rn}CZ_1-?MAxL@q{wz$OiRf;J|7i=NwkCt42-LSRhODLvet;H{a@$X0IN0&rIXJ=)Z4#G1*wu+ z{_Z9bTAY^@gl*)u+LnK-Apxe1n2gcL@!$4DJ8msviAX;7KLK;pZlmslLS2C8RtJ_I zz49!U%T*XGvLjmHkskc(t?CL$n(J2ap7#;gm$r)_=8ZqhlDr;xXSO1S%3 z7c&y%Z_JU0gZ&&5&z9yJdE#!XhoVkB&YqgF#=pje>mG zTvG~O!w>1gHYaEDOl6C0^V`}3j}$qY9jHeD@&6KPV1(21D&M^apgoXJ^&L}z2KSSw zg1m5GnMnLup*(_7a6~RCps@LP2@KVU_wbVmY}~13!*!QC8=p(x+-wURQ$bWzJL292 zM}}GU5Er#}S6%5&E2H298pxl_Caw@}9`?Tnw7tTzDF00@*p0k3s?;o75fKrUs7ULv zW}hnTFkyez(8!ZrO{cg;1LkDK_euZJ%<7`(I`=!@_P>dsZ;V&d%4ve&FFS)nF56?) z=2(+@SC?v;nj1RHGK zBS~4QWXMB+!r1n~Z7Q3T=pcLD);aHS4mGkrE8@*^tcg954e`177e5lc@~tE^o3=r2 z$T@Xi=iJ2GCXkuq@WvS^wJ6cuP;w_P5@C!wTj5V^O?3J}^YfF>ioqwW zGnM3jyo~0+Jf4@5IHlaj`|k7OnX+4MYM>_rUeQ$yOrs&+@c`O4!v4$XA1`CG<1JwN z?fLd-xz04}-9HEckK=i7IlNK3MD(`<5=dA(V3Phc8d2r*yQ2zak!$a^MdwH3QD0$4eMe(4N47P{qwHbG&P~5Lo|NIdOz8cXiWl=He_uPv`f!wX zo#?+Db0T8@am+!-o0!%dpTuigNUkoRFeS_QutAwX(?$0$fhC3k4dkrWy;_-=vot5i zN6{0^8iOE+lNsFQ%MFbyGjwxyVaEDxjDzCJAj>DR{h;jbdn~MmDx{hcJ7!edXZY$- zD8j;-wqAJ?cuHJE>L&g}9nNlTF$N8vnb`*#&g)p!4B-v?E!&m{-p?>smhk8$z2_b? zn=Ep4f4u1VJ9hTW!HG*pDX6R>ALF{{i?V(ogt?u@6cKH>Hh>|yqcZq28@Arqq|>QS zyPJIBd60GJmlr3P`_5Xf$Cf*!&zN}Xk~;j_$2CoEPH%7et?9qhKfkx!mY%5f z)`4B|NnGMDEi0cMc+u;@Z;2-@v>}{K>UK0AG@>ySzkHSYy)Ki)b2mS{%V5j7Wd_O7 zeh|sj4*LC@fo=h+==(eJcm&_uW!5guQnmT)0)YHdOhvT4|5F;z^=?=OtfITeqI}++ zWk9$7|3*7knSf~L(JuRt;{QP|%yiG=3Pws&!bo0(8XJXIEzD>cT1e$_{{K}{6O*x6 zdup1GT#h)`TtW1r7y%B5rk9cX*sK~eE)rSe-?yZHQsJQ&*aRzu3~}*)Iz4OXtz%Zv zC!^r-=VoWEHmOh@$4mWI_a_(W(6184Tm0U`5#U6XL;oubrN1HK$ml;ZDKp4J9iA-= zf4Onq%6R&kt98jpjKj3T@sq-Jo8GNsD@cyYgOsAyY+FGs6Y9ve+{AaYZAN6@X3wEG zg~Z^rFP+}lvtx6D(qkl5k||(v%sCZ$tBgqiVFK!uAlw3JWkYCDAQ3uCG_^_O-ul0s zD8PHVnF}x>FN_%aauXQrz{Rc%Y6MYhX;}r)h+xH9il8?JMI8`TJY1!uMners3VH^% zBiZkNdxBSa($M&cD+P31ELp*d63g`?GT^W41GD3q2_(Vgz+b53M$12_WE|fgRFaF| zr58k)R}`(n*)=pTHEl%=EfS?^{$%$pQQ!>MKQG5fh@i}|`z~YD4}F}!vQfgH<9*Hf zf!)E3zNTYc1n)3&Y5|5H>t!e*v*~sZNulrnz>mmT=Uh^nMY$9?>FLnWg#V@eEMEYHbZl_SVc!4-~Y_z{4<`@ zx9%`WuL=PHVbS2x8-(zO9Q7l%Dcb0$d677b%aKBh_2UJvbGPD|1koF_Wv^H5IRxj( z@;2WiH!lolh#rnnwB~Wt<{IWKnzQlw=?8C0zmArZUnxpeP z>-yD&UD=7$t+6l3)U#UFHAM@f{0#R0wLRT!*PKquUK>T%IDJhwZ?`jxCyor%o?^+P zh^MYS^opB!Rs0K$wq;-j^fNf$9P^nmIWYF2(-rf;R(>F`Yi($1==>i_N%dPP=&Ld0HL-yyD)rJuZ zW8jkz6b3Z&SLP0J&5!~aEc#Q^9nu*(?glv@8F~J(gz7+I#2<4LKhWHSTf3^U2*>?P zidun;lDwfHkFbt|pFu+< zS$;CT`6fKjlT02?iW(RDwHWogS14+nPDM_+Fe)0_3JW#$=an+tA-}J)zCoc<)J~Di zxuxNQwlOQAq&p-5(uI{w{Y#i`+m#9XMsd%}m>hd?>`m~tFr^{)rQhe$lSLl9WR&J1 zT1{Fjrmcs5da;7y*MtPaoXB?ZKyYC<`N)r~UM z8B|Y^eb!b?a@U`1;k}gqS(m8vtz9s5wqYxfY%P3wG-96)?y41kOrYlHYtX^09VEa!P+NM+EDp zbdg_R8bNvId4r|whoC3sR?CrOCZQ8HNC)vc6Ig|}#Oh8mKJpC(ECaEplR{i#jUF3> zEbTtB^^Bb~W!V!k4!mU&vB}rq^M=`yz&Nr+x1Z$YIxl9Gwf1E^L4w; z`EPcM-JU+r-@V2E97^r}PoLI)2mkps946a8*byqEwXSWY_8Z5_EGu=jTWjJs40R8ti))qc>0>I%fqI>iX@eydA;B>{Cr|Th*?u#)ge|;NB z03(Zs7AbFGy~H{OaW!wMIfB2WG}&zCh-!7>?!0ro8DD+-uc;|o5>Pc1?0xj#t&GW+ zZCXm`De@a$y7*<)tu`paZ|hl3utA&Ewo3v1-_j=_n_yL0y`KH2_h_q)i z9KL@9GVD_Mvlv;xTpLq$XW~F&-B*(bS{R#J+EL1m-?PFh!xBRIV}G$vVCdYYrf>YG zUqR+`kHbePCZs%{7L7&o)`uo}kJB19fym@1gdKEzY=!Yh#P8{^+9tX(e>*RGjO$c6 zKkxhYI%<`FW05vW)^(yCOpaoRLjmTk_j2~J@JbI=?kn3L!%j! z)8=^bss-u~K23IK?2#qh-Ta%W>@}V;g02G5<7%{}1@0dV@LdpxF>MVklWqM78VJqJV5U?dt(c9=Wp2Zxbpi(#bb3wM( zqpnaD@*ngEu`%tO!I6p+)NC^v?!ocqI}Gp?%_}vidruq?My+4*wc3SMk797|rQ>KL7r={crs*n7S=18~V~a+ofT`i0t| zD<${yFq1Wro^ac;n9Y2Dgno3xE5|a8*p+ZqP1#?PPV?oh{4)Vb`+5jui*{wt<4(+d zp1`w-8f+3>z?Ms9%lBSW!z^pGo#9zp<5~~;@C&SY_ghIlIk>!$pY@)G+lw-ZUi_B% z$@0~a@)g+!w4vISW>bepe5f`%`Q&MhA6zF-mBZ8B8{ebUD*O5DC5Tc@_{7_#%Ra5O zINuVnNBJW@9RW}XNWCGNagAu4@m)WPwAvB3>}z0>~+>~|$1z&G;s1Z(SSaZaDDRU6C}O14xW@z~KR zevktHRXa)&e`durpLaU^0VUxAuP$$TCmkLyZv%wI9?0A!%))kFiyx&xSkTAQ9D6)lYIFjl%;|N= zloHPJ zWl^abzFwN@;cknEUqSF`tNt*UT|@aKL@yfD_AaSefeC2(f5-;od@qc3~z+ z=m|Fon5;L_zzQ0fRTpW9R93G?A`OblxZgnXl(xo)2g|UtI7%a; zf4tmV?8x@o+y-hDc1XGPTf_N!hvNL2_iuBDZ9DHKXdTscvR^?h9Msc>9`mw z;IdIria$H};x2-+reP@}_dfIEocS8omf;C*Xn&D2><=Vb&;}uK z6LR9zqxzoqa#Jk)&w!@PzXW_{egLfN0?mv{T_y8g9`QfJCeDXc!#N48p90rSKI)Ap zyG4QVteYM8;V_}v{>e;x4UB4UHI77MJk72L`w4IZln!#gn}o7gwMG}LDQ_Mw-rtIr z`8~(9nl6y(;?``*L(uKyRK;rU%0ADjmH%1358fwr7$;4!cZ%P$8?y>ue6`&^azqEC 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∈)&+|O@bH}>Z`mNtu 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 BXZQdB literal 0 HcmV?d00001 diff --git a/Help/testing/images/MS-Visual-Studio-Test-Explorer-Run.png b/Help/testing/images/MS-Visual-Studio-Test-Explorer-Run.png new file mode 100644 index 0000000000000000000000000000000000000000..1e8ed4742214e5525a4b8032a4fad03965fc47d4 GIT binary patch literal 116691 zcmbrmbx>SQ)HjH`y95hv87#QF1P?BQ6WrY)I0U!g?(VJ$!6CT2yZg+}^F7b*_iokJ z?jL)rZcX=@zJ1$HANlpUkt#|u=qMy8P*70la;URfsM_C;gC@2Eje{N_wHJU3ZC~&cyq}W$a!?SE; zU%dTyut(BFeS2f(YY!$8au5_W%?A|c$UIHGp_ZJd%IcOCZ@trd^?>U4dEM7E&6!-v zY9#R#J!~|sHZ%{6#Q03n#EI;Q_Sb-#?CjAsNXcD@&VsL&L~TfAjJP@yKpLf|0esM#L3CX zCb*&h%^I=b;Nypaf(haN&9f;%!=wG1i~)#3|M#9<)c^fB3?AEmMSB99DgRAE$v9tj zKi23phQXs{i3EU-OLHxPj4f?z;GKpMrKEgv<>pUyi2g0xmTyaAyV;W+dTw^U(%gy6 ztW{&CDy||p5$N2&kZFuU#Q0|{m4WGH3qxj1{+*1X?k_spFV%ma4J7?z`5l^h%k6Yw z#xJ4oGhshN7z!{Mala^`Wf1QwEsl;J2S?LayJYq}fG!9jDT(4;?Nh0jtz;bDr-UXJ zTjcDTvqAhbtO)22|I8=kB3g}z+!7lFes9dprC2S3+i=~C_KDA-&sKTNjAI4T++`n^1T*U6Av;-8_de|P7a=<70dO${j z*X_r7TR06Frso;JGdmK=2n@oVhp)<;#o0?r^ag?a-kjxw|Gml@$P(u$|Ncc_0l$|I z+~-mTmn_M2Z@&Yn{a5`>dlr(bzFLv&y6bDMg6-MU9lnL{oYOo+(+e z+Vbk^>f++?02VAe0wsb81LPME(x)g`(0|vcb4t92SD&t??%do49>yf*v1BNWDs27U}iMjlb} z^ctAVtfupSba9gq^e_Tt{(8-k`)uJJ<@4>ez>k6PS+i&`=;ol9n3(u@ zECNbVG*m3gFnA=aK^V9QV`!M6Iw)up?La7Y7STW=0?It17IX9>>V%(W(BvTry%Iys zHj7KCjy^`Rj7Bsrx$k4J?1(uM1DNppH^Hq7WbqR~g(5R++nBRHehaLWv0mRf^7_;7 zlKWb;wzLsrY0<)MA-^3AUe|)s5p&vbnJ=4V!602DN1>~%8C%U*3zM>?_2M-N$zrn{!{;mis=?5@vPNUkf$K3H zH0q)}dckZsOk5aU0?(ZXJ+b|H>P(-Dy{t64Xr)Y87M%YM?FkWM|Lck<&GEMWTO=m} zexA}?q0XDY0gxA`?^;Ere)|RcpIPpd( zW{JW)1OZJ1u0Etr>TMbTg~5uTU^FEsOk3cvpWySP+v@e0O{$^FVCQeaI=|d&TE56} zq)3aul>fe*ZJbiI^E;(QhV(U8h{m(c4}1X9Gi1{iY|On)U}f~uv(N^Maf1~}BDeJ9 z_HO`-!XA_t`L!xt=>c^kx>!g>!u8E={?9KS^-8}g?iRISsj1{W`cXNmx*A&A(hr8^ zb)HNt}a0ewpYbEqa}CQhtK{}PO7IEesA!zPcq zSpO2B*q}DN4zm*|11A0-1!45eHsXKs5egRJE%0A48t8=1VDw*&zR)QDNjf56APmC4 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 K;e#9`=>GvIZ;+z^ literal 0 HcmV?d00001 diff --git a/Help/testing/images/MS-Visual-Studio-Test-Explorer.png b/Help/testing/images/MS-Visual-Studio-Test-Explorer.png new file mode 100644 index 0000000000000000000000000000000000000000..b21d7407310e6452bdafd55956fa4f5b32e710e4 GIT binary patch literal 57294 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 TpNEl%FD4}>FIx88(Eon`C5HM- literal 0 HcmV?d00001 diff --git a/Postman/README.md b/Postman/README.md deleted file mode 100644 index 5de823f..0000000 --- a/Postman/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# Postman - -A collection of [Postman](https://www.postman.com/) requests have been included to demonstrate the functionality of the Mock Register. - -In order to use the **Postman** requests: -1. Go to [https://www.postman.com/downloads/](https://www.postman.com/downloads/) to download and install the Postman app. -2. Once installed, open the Postman app. -3. In the `Collections` section, click on the `Import` button. - -![Postman - Mock Register Collection - Step 3](postman-mock-register-collection-step3.png) - -4. Ensure that the [mock-register.postman_collection.json](mock-register.postman_collection.json) file has been downloaded to the local device (`git clone` or downloaded). -5. Browse for the [mock-register.postman_collection.json](mock-register.postman_collection.json) file from the `Files` tab. - -![Postman - Mock Register Collection - Step 5](postman-mock-register-collection-step5.png) - -6. Click on the `Import` button. - -![Postman - Mock Register Collection - Step 6](postman-mock-register-collection-step6.png) - -7. The `Mock Register` collection should now be available in the Postman app. - -![Postman - Mock Register Collection - Step 7](postman-mock-register-collection-step7.png) - -In order to make the mTLS requests (https://localhost:7001) in the Mock Register collection, a client certificate needs to be added in the Postman app. To add the client.pfx certificate: -1. In the Postman app, click on the `Settings` option from the `File` menu. - -![Postman - Client Certificate - Step 1](postman-client-certificate-step1.png) - -2. In the `Settings` window, click on the `Certificates` tab and then on the `Add Certificate` option. - -![Postman - Client Certificate - Step 2](postman-client-certificate-step2.png) - -3. Add the `client.pfx` certificate for all requests to `https://localhost:7001`. - - The `client.pfx` file can be found in the Mock Register repository at: `CertificateManagement/mTLS/client.pfx`. - - The password for the `client.pfx` certificate is `#M0ckDataRecipient#` - -![Postman - Client Certificate - Step 3](postman-client-certificate-step3.png) - -4. The `client.pfx` certificate should now be sent to all Postman requests to the Mock Register mTLS endpoint - `https://localhost:7001`. diff --git a/Postman/mock-register.postman_collection.json b/Postman/mock-register.postman_collection.json deleted file mode 100644 index 2458a82..0000000 --- a/Postman/mock-register.postman_collection.json +++ /dev/null @@ -1,1126 +0,0 @@ -{ - "info": { - "_postman_id": "cf100180-4947-4912-99ca-a7f7fb3bca67", - "name": "CDR Mock Register", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" - }, - "item": [ - { - "name": "Discovery API - Get Data Holder Brands - All (requires access token)", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "2", - "type": "text" - } - ], - "url": { - "raw": "https://localhost:7001/cdr-register/v1/all/data-holders/brands", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7001", - "path": [ - "cdr-register", - "v1", - "all", - "data-holders", - "brands" - ], - "query": [ - { - "key": "page", - "value": "1", - "disabled": true - }, - { - "key": "page-size", - "value": "5", - "disabled": true - }, - { - "key": "updated-since", - "value": "2022-04-29", - "disabled": true - } - ] - } - }, - "response": [] - }, - { - "name": "Discovery API - Get Data Holder Brands - Banking (requires access token)", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "2", - "type": "text" - } - ], - "url": { - "raw": "https://localhost:7001/cdr-register/v1/banking/data-holders/brands", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7001", - "path": [ - "cdr-register", - "v1", - "banking", - "data-holders", - "brands" - ], - "query": [ - { - "key": "page", - "value": "1", - "disabled": true - }, - { - "key": "page-size", - "value": "5", - "disabled": true - }, - { - "key": "updated-since", - "value": "2022-04-29", - "disabled": true - } - ] - } - }, - "response": [] - }, - { - "name": "Discovery API - Get Data Holder Brands - Energy (requires access token)", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "2", - "type": "text" - } - ], - "url": { - "raw": "https://localhost:7001/cdr-register/v1/energy/data-holders/brands", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7001", - "path": [ - "cdr-register", - "v1", - "energy", - "data-holders", - "brands" - ], - "query": [ - { - "key": "page", - "value": "1", - "disabled": true - }, - { - "key": "page-size", - "value": "5", - "disabled": true - }, - { - "key": "updated-since", - "value": "2022-04-29", - "disabled": true - } - ] - } - }, - "response": [] - }, - { - "name": "Discovery API - Get Data Recipients - All", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "3", - "type": "text" - }, - { - "key": "If-None-Match", - "value": "789B87B2DEC172259FA95607BE5EACFC3E520229DC9DF0A754286B9EEA08C466", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "https://localhost:7000/cdr-register/v1/all/data-recipients", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7000", - "path": [ - "cdr-register", - "v1", - "all", - "data-recipients" - ] - } - }, - "response": [] - }, - { - "name": "Discovery API - Get Data Recipients - Banking", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "3", - "type": "text" - }, - { - "key": "If-None-Match", - "value": "789B87B2DEC172259FA95607BE5EACFC3E520229DC9DF0A754286B9EEA08C466", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "https://localhost:7000/cdr-register/v1/banking/data-recipients", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7000", - "path": [ - "cdr-register", - "v1", - "banking", - "data-recipients" - ] - } - }, - "response": [] - }, - { - "name": "Discovery API - Get Data Recipients - Energy", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "3", - "type": "text" - }, - { - "key": "If-None-Match", - "value": "789B87B2DEC172259FA95607BE5EACFC3E520229DC9DF0A754286B9EEA08C466", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "https://localhost:7000/cdr-register/v1/energy/data-recipients", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7000", - "path": [ - "cdr-register", - "v1", - "energy", - "data-recipients" - ] - } - }, - "response": [] - }, - { - "name": "Status API - Get Data Recipients Status - All", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "2", - "type": "text" - }, - { - "key": "If-None-Match", - "value": "0713515C6CDE452120ED3F545474EB78C45D3130C4011D24782614E94E2C7C17", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "https://localhost:7000/cdr-register/v1/all/data-recipients/status", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7000", - "path": [ - "cdr-register", - "v1", - "all", - "data-recipients", - "status" - ] - } - }, - "response": [] - }, - { - "name": "Status API - Get Data Recipients Status - Banking", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "2", - "type": "text" - }, - { - "key": "If-None-Match", - "value": "0713515C6CDE452120ED3F545474EB78C45D3130C4011D24782614E94E2C7C17", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "https://localhost:7000/cdr-register/v1/banking/data-recipients/status", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7000", - "path": [ - "cdr-register", - "v1", - "banking", - "data-recipients", - "status" - ] - } - }, - "response": [] - }, - { - "name": "Status API - Get Data Recipients Status - Energy", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "2", - "type": "text" - }, - { - "key": "If-None-Match", - "value": "0713515C6CDE452120ED3F545474EB78C45D3130C4011D24782614E94E2C7C17", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "https://localhost:7000/cdr-register/v1/energy/data-recipients/status", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7000", - "path": [ - "cdr-register", - "v1", - "energy", - "data-recipients", - "status" - ] - } - }, - "response": [] - }, - { - "name": "Status API - Get Data Holders Status - All", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "1", - "type": "text" - }, - { - "key": "If-None-Match", - "value": "0713515C6CDE452120ED3F545474EB78C45D3130C4011D24782614E94E2C7C17", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "https://localhost:7000/cdr-register/v1/all/data-holders/status", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7000", - "path": [ - "cdr-register", - "v1", - "all", - "data-holders", - "status" - ] - } - }, - "response": [] - }, - { - "name": "Status API - Get Data Holders Status - Banking", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "1", - "type": "text" - }, - { - "key": "If-None-Match", - "value": "0713515C6CDE452120ED3F545474EB78C45D3130C4011D24782614E94E2C7C17", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "https://localhost:7000/cdr-register/v1/banking/data-holders/status", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7000", - "path": [ - "cdr-register", - "v1", - "banking", - "data-holders", - "status" - ] - } - }, - "response": [] - }, - { - "name": "Status API - Get Data Holders Status - Energy", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "1", - "type": "text" - }, - { - "key": "If-None-Match", - "value": "0713515C6CDE452120ED3F545474EB78C45D3130C4011D24782614E94E2C7C17", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "https://localhost:7000/cdr-register/v1/energy/data-holders/status", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7000", - "path": [ - "cdr-register", - "v1", - "energy", - "data-holders", - "status" - ] - } - }, - "response": [] - }, - { - "name": "Status API - Get Software Products Status - All", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "2", - "type": "text" - }, - { - "key": "If-None-Match", - "value": "E8138BDBE459BE6B5651281CCA5988E6F9933053348812956E90604C6895D765", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "https://localhost:7000/cdr-register/v1/all/data-recipients/brands/software-products/status", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7000", - "path": [ - "cdr-register", - "v1", - "all", - "data-recipients", - "brands", - "software-products", - "status" - ] - } - }, - "response": [] - }, - { - "name": "Status API - Get Software Products Status - Banking", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "2", - "type": "text" - }, - { - "key": "If-None-Match", - "value": "E8138BDBE459BE6B5651281CCA5988E6F9933053348812956E90604C6895D765", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "https://localhost:7000/cdr-register/v1/banking/data-recipients/brands/software-products/status", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7000", - "path": [ - "cdr-register", - "v1", - "banking", - "data-recipients", - "brands", - "software-products", - "status" - ] - } - }, - "response": [] - }, - { - "name": "Status API - Get Software Products Status - Energy", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "2", - "type": "text" - }, - { - "key": "If-None-Match", - "value": "E8138BDBE459BE6B5651281CCA5988E6F9933053348812956E90604C6895D765", - "type": "text", - "disabled": true - } - ], - "url": { - "raw": "https://localhost:7000/cdr-register/v1/energy/data-recipients/brands/software-products/status", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7000", - "path": [ - "cdr-register", - "v1", - "energy", - "data-recipients", - "brands", - "software-products", - "status" - ] - } - }, - "response": [] - }, - { - "name": "InfoSec - Get OIDC Config", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://localhost:7000/idp/.well-known/openid-configuration", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7000", - "path": [ - "idp", - ".well-known", - "openid-configuration" - ] - } - }, - "response": [] - }, - { - "name": "InfoSec - Get OIDC JWKS", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://localhost:7000/idp/.well-known/openid-configuration/jwks", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7000", - "path": [ - "idp", - ".well-known", - "openid-configuration", - "jwks" - ] - } - }, - "response": [] - }, - { - "name": "InfoSec - Get Access Token", - "event": [ - { - "listen": "prerequest", - "script": { - "exec": [ - "var softwareProductId = \"6F7A1B8E-8799-48A8-9011-E3920391F713\";\r", - "pm.globals.set(\"client_id\", softwareProductId);\r", - "\r", - "pm.sendRequest(\"https://localhost:7006/loopback/MockDataRecipientClientAssertion?iss=\" + softwareProductId, function (err, response) {\r", - " \r", - " console.log(response.text());\r", - " pm.globals.set(\"client_assertion\", response.text());\r", - "\r", - "});\r", - "" - ], - "type": "text/javascript" - } - }, - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Body matches string\", () => {\r", - " pm.expect(pm.response.text()).to.include(\"access_token\");\r", - "});\r", - "\r", - "var body = JSON.parse(responseBody);\r", - "pm.globals.set(\"access_token\", body.access_token);\r", - "" - ], - "type": "text/javascript" - } - } - ], - "protocolProfileBehavior": { - "disabledSystemHeaders": { - "connection": true, - "accept-encoding": true, - "accept": true, - "user-agent": true - } - }, - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "urlencoded", - "urlencoded": [ - { - "key": "grant_type", - "value": "client_credentials", - "type": "text" - }, - { - "key": "client_id", - "value": "{{client_id}}", - "type": "text" - }, - { - "key": "client_assertion_type", - "value": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer", - "type": "text" - }, - { - "key": "client_assertion", - "value": "{{client_assertion}}", - "type": "text" - }, - { - "key": "scope", - "value": "cdr-register:bank:read", - "type": "text" - }, - { - "key": "client_assertion", - "value": "eyJhbGciOiJQUzI1NiIsImtpZCI6ImdQMzJHVHYwYmU3aEdlazFPTk1QZzBUNlA0UnJLdFJMbDRsMGVtN1hDdzQiLCJ0eXAiOiJKV1QifQ.eyJzdWIiOiI2RjdBMUI4RS04Nzk5LTQ4QTgtOTAxMS1FMzkyMDM5MUY3MTMiLCJqdGkiOiIxZGM2MWU2YS0zMzhjLTQ0ODEtODgwOC02NTgwNjc3YmE4NDIiLCJhdWQiOiJodHRwczovL2xvY2FsaG9zdDo3MDAxL2lkcC9jb25uZWN0L3Rva2VuIiwiZXhwIjoxNjQyNjU1NTc4LCJpc3MiOiI2RjdBMUI4RS04Nzk5LTQ4QTgtOTAxMS1FMzkyMDM5MUY3MTMiLCJpYXQiOjE2NDI2NTQ5NzgsIm5iZiI6MTY0MjY1NDk3OH0.LU0RnvoYrX9s_qDBWjNUQCSZU0luc0FX0UkG9TR3qPR0iFOtO1FVpj_0c5-uBA7xzWrKy2yTF9VyHhjzWmMRGy1eLy2VL68zBmfJ1AQtlnMEgh4iIrVSfmoQz9kQ9A8vU-XKYOjr28Jo6Cwj-t09WYr87txLc1eqm5iKNdYS7qfXSwXpmBWo26oS1Qp3x9M6dsct6cRRSwyrQVEc0Np5gVvEfPXX-DRurI0LQUOQ4vCTm9rqMsf62eQUStdbuMEPjsgNuxkMoWX3kXBXQvE-AaU0rshz0Xr02w0jTdIrdpKRbN_q8cgr4MjXtfOlNcGLBgLxBZyRB1bNJltqh4sShQ", - "type": "text", - "disabled": true - } - ] - }, - "url": { - "raw": "https://localhost:7001/idp/connect/token", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7001", - "path": [ - "idp", - "connect", - "token" - ] - } - }, - "response": [] - }, - { - "name": "SSA API - SSA JWKS", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "eyJhbGciOiJQUzI1NiIsImtpZCI6IkFBMjRGMTg1RUUzRjY3NTA0ODA4RkM0RTI2QjEzNUI5OUU2M0JEQTkiLCJ0eXAiOiJhdCtqd3QiLCJ4NXQiOiJxaVR4aGU0X1oxQklDUHhPSnJFMXVaNWp2YWsifQ.eyJuYmYiOjE2NDY2OTA4NzQsImV4cCI6MTY0NjY5MTE3NCwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NzAwMC9pZHAiLCJhdWQiOiJjZHItcmVnaXN0ZXIiLCJjbGllbnRfaWQiOiI2ZjdhMWI4ZS04Nzk5LTQ4YTgtOTAxMS1lMzkyMDM5MWY3MTMiLCJqdGkiOiI0MUVDMzg0MzIwOERBMDdGQjBBQ0I5MThGMUEyOUVFMSIsImlhdCI6MTY0NjY5MDg3NCwiY25mIjp7Ing1dCNTMjU2IjoiNThENzZGN0E2MUNENzI2REExQzU0RjY4OThFOEU2OUVBNEM4ODA2MCJ9LCJzY29wZSI6WyJjZHItcmVnaXN0ZXI6YmFuazpyZWFkIl19.vU7eApD_DLTgec8gY7eq8Ren55oORjNxam4KJcyASAQMG6iKIjGFyXaU7N1OsmEyEztb9kolftlVw36AIh9nvyCx8-nFyB7lm5162RCwT6yERNDicV5uNfcNUwvm-qAnF0cs5SzrUjKyPWR1UZWzLjzGRnV7yxapNh4WgjZPsE5_3j3IWg_JytU0rkzwnYKLMqxt9wfER_mVTQaPVwlCjh8zkOw46akms91S4MWZ-LybsK63MfUVPgxWbdss7TqZOp-aZhPmjeqcz4Y1_lTFRkHLpSPMhceTzpvqNkJEUxLWMxLi_QJIVWfak01Yp9gNhGColYg3RJtREwwUmLUO_g", - "type": "string" - } - ] - }, - "method": "GET", - "header": [], - "url": { - "raw": "https://localhost:7000/cdr-register/v1/jwks", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7000", - "path": [ - "cdr-register", - "v1", - "jwks" - ] - } - }, - "response": [] - }, - { - "name": "SSA API - Get SSA - All (requires access token)", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "3", - "type": "default" - } - ], - "url": { - "raw": "https://localhost:7001/cdr-register/v1/all/data-recipients/brands/F3F0C40B-9DF8-491A-AF1D-81CB9AB5F021/software-products/6F7A1B8E-8799-48A8-9011-E3920391F713/ssa", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7001", - "path": [ - "cdr-register", - "v1", - "all", - "data-recipients", - "brands", - "F3F0C40B-9DF8-491A-AF1D-81CB9AB5F021", - "software-products", - "6F7A1B8E-8799-48A8-9011-E3920391F713", - "ssa" - ] - } - }, - "response": [] - }, - { - "name": "SSA API - Get SSA - Banking (requires access token)", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "3", - "type": "default" - } - ], - "url": { - "raw": "https://localhost:7001/cdr-register/v1/banking/data-recipients/brands/F3F0C40B-9DF8-491A-AF1D-81CB9AB5F021/software-products/6F7A1B8E-8799-48A8-9011-E3920391F713/ssa", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7001", - "path": [ - "cdr-register", - "v1", - "banking", - "data-recipients", - "brands", - "F3F0C40B-9DF8-491A-AF1D-81CB9AB5F021", - "software-products", - "6F7A1B8E-8799-48A8-9011-E3920391F713", - "ssa" - ] - } - }, - "response": [] - }, - { - "name": "SSA API - Get SSA - Energy (requires access token)", - "request": { - "method": "GET", - "header": [ - { - "key": "x-v", - "value": "3", - "type": "default" - } - ], - "url": { - "raw": "https://localhost:7001/cdr-register/v1/energy/data-recipients/brands/F3F0C40B-9DF8-491A-AF1D-81CB9AB5F021/software-products/6F7A1B8E-8799-48A8-9011-E3920391F713/ssa", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7001", - "path": [ - "cdr-register", - "v1", - "energy", - "data-recipients", - "brands", - "F3F0C40B-9DF8-491A-AF1D-81CB9AB5F021", - "software-products", - "6F7A1B8E-8799-48A8-9011-E3920391F713", - "ssa" - ] - } - }, - "response": [] - }, - { - "name": "Admin API - Get Metadata", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://localhost:7006/admin/metadata", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7006", - "path": [ - "admin", - "metadata" - ] - } - }, - "response": [] - }, - { - "name": "Admin API - Load Metadata", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{ \"LegalEntities\": [{\"LegalEntityId\":\"017fcfc8-1fd3-4ef4-8f08-b697c4c681ee\",\"LegalEntityName\":\"Grand Bank\",\"LogoUri\":\"https://grandbank/img/logo.png\",\"Abn\":\"99888777666\",\"Acn\":\"888777666\",\"Participations\":[{\"ParticipationId\":\"ccf43046-699e-48fb-9dbf-57be49622b56\",\"LegalEntityId\":\"017fcfc8-1fd3-4ef4-8f08-b697c4c681ee\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"8aa8e9a6-1dc7-4428-baea-d1f4533428b9\",\"BrandName\":\"Grand Bank\",\"LogoUri\":\"https://grandbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"ccf43046-699e-48fb-9dbf-57be49622b56\",\"LastUpdated\":\"2021-04-29T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"8aa8e9a6-1dc7-4428-baea-d1f4533428b9\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.grandbank/jwks\"}],\"Endpoint\":{\"BrandId\":\"8aa8e9a6-1dc7-4428-baea-d1f4533428b9\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.grandbank\",\"ResourceBaseUri\":\"https://api.grandbank\",\"InfosecBaseUri\":\"https://idp.grandbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://grandbank/\"}}]}]},{\"LegalEntityId\":\"04361651-f485-421a-8e3e-d01dd7ab2706\",\"LegalEntityName\":\"Job Bank\",\"LogoUri\":\"https://jobbank/img/logo.png\",\"Abn\":\"13254365476\",\"Acn\":\"264352\",\"Participations\":[{\"ParticipationId\":\"09caf4b3-6048-4fa6-af16-0cb8b2bbc18a\",\"LegalEntityId\":\"04361651-f485-421a-8e3e-d01dd7ab2706\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"7b47ecf8-a991-4dd3-adef-b89564005e8e\",\"BrandName\":\"offer bank\",\"LogoUri\":\"https://offerbank/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"09caf4b3-6048-4fa6-af16-0cb8b2bbc18a\",\"LastUpdated\":\"2021-04-06T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"7b47ecf8-a991-4dd3-adef-b89564005e8e\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://offerbank/idp/jwks\"}],\"Endpoint\":{\"BrandId\":\"7b47ecf8-a991-4dd3-adef-b89564005e8e\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.offerbank\",\"ResourceBaseUri\":\"https://api.offerbank\",\"InfosecBaseUri\":\"https://idp.offerbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://offerbank/\"}},{\"BrandId\":\"bc144967-d6f8-47a6-8590-07caf522141b\",\"BrandName\":\"Jobs Bank\",\"LogoUri\":\"https://jobsbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"09caf4b3-6048-4fa6-af16-0cb8b2bbc18a\",\"LastUpdated\":\"2021-04-06T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"bc144967-d6f8-47a6-8590-07caf522141b\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://jobsbank/idp/jwks\"}],\"Endpoint\":{\"BrandId\":\"bc144967-d6f8-47a6-8590-07caf522141b\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.jobsbank\",\"ResourceBaseUri\":\"https://api.jobsbank\",\"InfosecBaseUri\":\"https://idp.jobsbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://jobsbank/\"}},{\"BrandId\":\"c3176245-4258-4383-b945-cd2f7c828d3c\",\"BrandName\":\"J bank\",\"LogoUri\":\"https://jbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"09caf4b3-6048-4fa6-af16-0cb8b2bbc18a\",\"LastUpdated\":\"2021-04-18T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"c3176245-4258-4383-b945-cd2f7c828d3c\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://jbank/idp/jwks\"}],\"Endpoint\":{\"BrandId\":\"c3176245-4258-4383-b945-cd2f7c828d3c\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.jbank\",\"ResourceBaseUri\":\"https://api.jbank\",\"InfosecBaseUri\":\"https://idp.jbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://jbank/\"}}]}]},{\"LegalEntityId\":\"06c595f2-f0b2-4684-90e1-6905e4537304\",\"LegalEntityName\":\"Run Bank\",\"LogoUri\":\"https://runbank/img/logo.png\",\"Abn\":\"99888777666\",\"Acn\":\"888777666\",\"Participations\":[{\"ParticipationId\":\"8b326b94-bfb9-4f7c-a756-5ca1c4e24627\",\"LegalEntityId\":\"06c595f2-f0b2-4684-90e1-6905e4537304\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"975375f7-2bd9-44b5-a188-43d65ca8eaae\",\"BrandName\":\"Run Bank\",\"LogoUri\":\"https://runbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"8b326b94-bfb9-4f7c-a756-5ca1c4e24627\",\"LastUpdated\":\"2021-04-09T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"975375f7-2bd9-44b5-a188-43d65ca8eaae\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.runbank/jwks\"}],\"Endpoint\":{\"BrandId\":\"975375f7-2bd9-44b5-a188-43d65ca8eaae\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.runbank\",\"ResourceBaseUri\":\"https://api.runbank\",\"InfosecBaseUri\":\"https://idp.runbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://runbank/\"}}]}]},{\"LegalEntityId\":\"0d332caa-8cd8-4ac9-8898-20641c54bc8c\",\"LegalEntityName\":\"Bank Legal Entity 1\",\"LogoUri\":\"https://bank/logo.png\",\"Abn\":\"11111111111\",\"Acn\":\"888777666\",\"Participations\":[{\"ParticipationId\":\"bfcf2f5b-5c36-4eb5-8e56-8cb92e9f70cd\",\"LegalEntityId\":\"0d332caa-8cd8-4ac9-8898-20641c54bc8c\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"804fc2fb-18a7-4235-9a49-2af393d18bc7\",\"BrandName\":\"Bank Brand 1\",\"LogoUri\":\"https://bank1/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"bfcf2f5b-5c36-4eb5-8e56-8cb92e9f70cd\",\"LastUpdated\":\"2021-04-06T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"804fc2fb-18a7-4235-9a49-2af393d18bc7\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.bank1/jwks\"}],\"Endpoint\":{\"BrandId\":\"804fc2fb-18a7-4235-9a49-2af393d18bc7\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.bank1\",\"ResourceBaseUri\":\"https://api.bank1\",\"InfosecBaseUri\":\"https://idp.bank1\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://bank1/\"}}]}]},{\"LegalEntityId\":\"18b75a76-5821-4c9e-b465-4709291cf0f4\",\"LegalEntityName\":\"Mock Software Company\",\"LogoUri\":\"https://mocksoftware/img/logo.png\",\"Abn\":\"11222333444\",\"Acn\":\"222333444\",\"AccreditationNumber\":\"ADR000099\",\"Participations\":[{\"ParticipationId\":\"db6fad53-9123-4ce4-824a-1d1eec219998\",\"LegalEntityId\":\"18b75a76-5821-4c9e-b465-4709291cf0f4\",\"ParticipationTypeId\":2,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"ffb1c8ba-279e-44d8-96f0-1bc34a6b436f\",\"BrandName\":\"Mock Finance Tools\",\"LogoUri\":\"https://mocksoftware/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"db6fad53-9123-4ce4-824a-1d1eec219998\",\"LastUpdated\":\"2021-04-06T11:58:00\",\"SoftwareProducts\":[{\"SoftwareProductId\":\"c6327f87-687a-4369-99a4-eaacd3bb8210\",\"SoftwareProductName\":\"MyBudgetHelper\",\"SoftwareProductDescription\":\"A product to help you manage your budget\",\"LogoUri\":\"https://mocksoftware/mybudgetapp/img/logo.png\",\"ClientUri\":\"https://mocksoftware/mybudgetapp\",\"TosUri\":\"https://mocksoftware/mybudgetapp/terms\",\"PolicyUri\":\"https://mocksoftware/mybudgetapp/policy\",\"RecipientBaseUri\":\"https://api.mocksoftware/mybudgetapp\",\"RevocationUri\":\"https://api.mocksoftware/mybudgetapp/revoke\",\"RedirectUris\":\"https://api.mocksoftware/mybudgetapp/callback https://api.mocksoftware/mybudgetapp/return\",\"JwksUri\":\"https://localhost:7006/loopback/MockDataRecipientJwks\",\"Scope\":\"openid bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read common:customer.basic:read common:customer.detail:read cdr:registration\",\"StatusId\":1,\"BrandId\":\"ffb1c8ba-279e-44d8-96f0-1bc34a6b436f\",\"Certificates\":[{\"SoftwareProductCertificateId\":\"e4239733-481a-4bf4-bc64-0c3df65ee101\",\"SoftwareProductId\":\"c6327f87-687a-4369-99a4-eaacd3bb8210\",\"CommonName\":\"MockDataRecipient\",\"Thumbprint\":\"f0e5146a51f16e236844cf0353d791f11865e405\"}]}],\"AuthDetails\":[]}]}]},{\"LegalEntityId\":\"2f1c327f-56b6-40c5-8e2e-b2130867329c\",\"LegalEntityName\":\"Eva Bank\",\"LogoUri\":\"https://evabank/img/logo.png\",\"Abn\":\"98765456788\",\"Acn\":\"22121232\",\"Participations\":[{\"ParticipationId\":\"76e57077-a5aa-4c51-82c7-638c4291d687\",\"LegalEntityId\":\"2f1c327f-56b6-40c5-8e2e-b2130867329c\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"7c97c3b5-fe64-4b35-8ae0-17fa5d4aa0a8\",\"BrandName\":\"Eva Bank corp\",\"LogoUri\":\"https://evabankcorp/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"76e57077-a5aa-4c51-82c7-638c4291d687\",\"LastUpdated\":\"2021-04-26T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"7c97c3b5-fe64-4b35-8ae0-17fa5d4aa0a8\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.evabank/jwks\"}],\"Endpoint\":{\"BrandId\":\"7c97c3b5-fe64-4b35-8ae0-17fa5d4aa0a8\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.evabank\",\"ResourceBaseUri\":\"https://api.evabank\",\"InfosecBaseUri\":\"https://idp.evabank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://evabank/\"}}]}]},{\"LegalEntityId\":\"350c4b28-132c-4248-a962-1434e00e7046\",\"LegalEntityName\":\"SaS Bank\",\"LogoUri\":\"https://sasbank/img/logo.png\",\"Abn\":\"99888777666\",\"Acn\":\"888777666\",\"Participations\":[{\"ParticipationId\":\"ca2a8879-9ada-4f20-bb45-f899be056a9f\",\"LegalEntityId\":\"350c4b28-132c-4248-a962-1434e00e7046\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"b648f694-0dee-4f5e-bd2c-9837ac08fb7b\",\"BrandName\":\"SaS Bank\",\"LogoUri\":\"https://sasbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"ca2a8879-9ada-4f20-bb45-f899be056a9f\",\"LastUpdated\":\"2021-04-09T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"b648f694-0dee-4f5e-bd2c-9837ac08fb7b\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.sasbank/jwks\"}],\"Endpoint\":{\"BrandId\":\"b648f694-0dee-4f5e-bd2c-9837ac08fb7b\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.sasbank\",\"ResourceBaseUri\":\"https://api.sasbank\",\"InfosecBaseUri\":\"https://idp.sasbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://sasbank/\"}}]}]},{\"LegalEntityId\":\"3d974478-afa6-4ce4-80bc-6f93e8e92e19\",\"LegalEntityName\":\"Smarter Bank\",\"LogoUri\":\"https://smarterbank/img/logo.png\",\"Abn\":\"12345678901\",\"Acn\":\"123456789\",\"Participations\":[{\"ParticipationId\":\"462d0178-6ad1-4c99-b27f-8ba416506e9c\",\"LegalEntityId\":\"3d974478-afa6-4ce4-80bc-6f93e8e92e19\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"81d3d5cb-cdb6-4253-a78b-b17155dde7fd\",\"BrandName\":\"MyBank\",\"LogoUri\":\"https://mybank/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"462d0178-6ad1-4c99-b27f-8ba416506e9c\",\"LastUpdated\":\"2021-04-06T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"81d3d5cb-cdb6-4253-a78b-b17155dde7fd\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://mybank/idp/jwks\"}],\"Endpoint\":{\"BrandId\":\"81d3d5cb-cdb6-4253-a78b-b17155dde7fd\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.mybank\",\"ResourceBaseUri\":\"https://api.mybank\",\"InfosecBaseUri\":\"https://idp.mybank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://mybank/\"}},{\"BrandId\":\"9f8df3e2-6866-42af-91d4-5faa3204f0b8\",\"BrandName\":\"Smarter Bank\",\"LogoUri\":\"https://smarterbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"462d0178-6ad1-4c99-b27f-8ba416506e9c\",\"LastUpdated\":\"2021-04-06T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"9f8df3e2-6866-42af-91d4-5faa3204f0b8\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://smarterbank/idp/jwks\"}],\"Endpoint\":{\"BrandId\":\"9f8df3e2-6866-42af-91d4-5faa3204f0b8\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.smarterbank\",\"ResourceBaseUri\":\"https://api.smarterbank\",\"InfosecBaseUri\":\"https://idp.smarterbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://smarterbank/\"}}]}]},{\"LegalEntityId\":\"4a29856c-2634-4fea-bf9b-74c99c337e2f\",\"LegalEntityName\":\"olm Software Company\",\"LogoUri\":\"https://olmsoftware/img/logo.png\",\"Abn\":\"88778877\",\"Acn\":\"99889988\",\"AccreditationNumber\":\"ADR000008\",\"Participations\":[{\"ParticipationId\":\"9263f2a1-107b-46fe-ac57-e0151a4a8f8c\",\"LegalEntityId\":\"4a29856c-2634-4fea-bf9b-74c99c337e2f\",\"ParticipationTypeId\":2,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"a7171ba3-fd05-456f-a859-be4e1cbcc17d\",\"BrandName\":\"OLM Software\",\"LogoUri\":\"https://olmsoftware/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"9263f2a1-107b-46fe-ac57-e0151a4a8f8c\",\"LastUpdated\":\"2021-04-06T11:58:00\",\"SoftwareProducts\":[{\"SoftwareProductId\":\"05d7dfd7-1d8f-4abf-b987-cf56c9115e8d\",\"SoftwareProductName\":\"Budgeter\",\"SoftwareProductDescription\":\"A product to help you manage your budget\",\"LogoUri\":\"https://olmsoftware/mybudgetapp/img/logo.png\",\"ClientUri\":\"https://olmsoftware/mybudgetapp\",\"TosUri\":\"https://olmsoftware/mybudgetapp/terms\",\"PolicyUri\":\"https://olmsoftware/mybudgetapp/policy\",\"RecipientBaseUri\":\"https://api.olmsoftware/mybudgetapp\",\"RevocationUri\":\"https://api.olmsoftware/mybudgetapp/revoke\",\"RedirectUris\":\"https://api.olmsoftware/mybudgetapp/redirect\",\"JwksUri\":\"https://localhost:7006/loopback/MockDataRecipientJwks\",\"Scope\":\"openid bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read common:customer.basic:read common:customer.detail:read cdr:registration\",\"StatusId\":1,\"BrandId\":\"a7171ba3-fd05-456f-a859-be4e1cbcc17d\",\"Certificates\":[{\"SoftwareProductCertificateId\":\"0c6c4ce3-0f56-404c-9c6d-abf40680ade5\",\"SoftwareProductId\":\"05d7dfd7-1d8f-4abf-b987-cf56c9115e8d\",\"CommonName\":\"MockDataRecipient\",\"Thumbprint\":\"f0e5146a51f16e236844cf0353d791f11865e405\"}]}],\"AuthDetails\":[]}]}]},{\"LegalEntityId\":\"667407fc-dc7e-4be5-8795-5189240bcbca\",\"LegalEntityName\":\"Luna Bank\",\"LogoUri\":\"https://lunabank/img/logo.png\",\"Abn\":\"12334412233\",\"Acn\":\"77553322\",\"Participations\":[{\"ParticipationId\":\"24641df5-3667-4394-b5a5-433e0846152c\",\"LegalEntityId\":\"667407fc-dc7e-4be5-8795-5189240bcbca\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"bb03be60-5c46-422e-a27e-aefa0015078d\",\"BrandName\":\"Luna\",\"LogoUri\":\"https://lunabank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"24641df5-3667-4394-b5a5-433e0846152c\",\"LastUpdated\":\"2021-04-12T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"bb03be60-5c46-422e-a27e-aefa0015078d\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.lunabank/jwks\"}],\"Endpoint\":{\"BrandId\":\"bb03be60-5c46-422e-a27e-aefa0015078d\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.lunabank\",\"ResourceBaseUri\":\"https://api.lunabank\",\"InfosecBaseUri\":\"https://idp.lunabank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://lunabank/\"}}]}]},{\"LegalEntityId\":\"725c6e62-bfa7-4719-94af-415ae64d4bcd\",\"LegalEntityName\":\"Ive Bank\",\"LogoUri\":\"https://ivebank/img/logo.png\",\"Abn\":\"1231231239\",\"Acn\":\"099800998\",\"Participations\":[{\"ParticipationId\":\"49ad2931-8ba6-49b5-b075-39dfb5a8733b\",\"LegalEntityId\":\"725c6e62-bfa7-4719-94af-415ae64d4bcd\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"9928cf0f-70c7-40ea-b7ad-cad190232f68\",\"BrandName\":\"Ive Bank\",\"LogoUri\":\"https://ivebank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"49ad2931-8ba6-49b5-b075-39dfb5a8733b\",\"LastUpdated\":\"2021-04-03T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"9928cf0f-70c7-40ea-b7ad-cad190232f68\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.ivebank/jwks\"}],\"Endpoint\":{\"BrandId\":\"9928cf0f-70c7-40ea-b7ad-cad190232f68\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.ivebank\",\"ResourceBaseUri\":\"https://api.ivebank\",\"InfosecBaseUri\":\"https://idp.ivebank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://ivebank/\"}}]}]},{\"LegalEntityId\":\"7993c227-9252-432b-9b2f-a8666e2fd2f2\",\"LegalEntityName\":\"Mu Bank\",\"LogoUri\":\"https://mubank/img/logo.png\",\"Abn\":\"1352345345\",\"Acn\":\"112123123\",\"Participations\":[{\"ParticipationId\":\"11683a14-ac67-4302-8838-a0b604d2ae9a\",\"LegalEntityId\":\"7993c227-9252-432b-9b2f-a8666e2fd2f2\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"52d23611-4493-4a21-9095-44ae9eb85841\",\"BrandName\":\"Mu Bank\",\"LogoUri\":\"https://mubank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"11683a14-ac67-4302-8838-a0b604d2ae9a\",\"LastUpdated\":\"2021-04-09T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"52d23611-4493-4a21-9095-44ae9eb85841\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.mubank/jwks\"}],\"Endpoint\":{\"BrandId\":\"52d23611-4493-4a21-9095-44ae9eb85841\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.mubank\",\"ResourceBaseUri\":\"https://api.mubank\",\"InfosecBaseUri\":\"https://idp.mubank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://mubank/\"}}]}]},{\"LegalEntityId\":\"7b1a7566-e113-411b-94b7-d3b9fb0da98a\",\"LegalEntityName\":\"Kiss Bank\",\"LogoUri\":\"https://kissbank/img/logo.png\",\"Abn\":\"123477455\",\"Acn\":\"1121222\",\"Participations\":[{\"ParticipationId\":\"de1d6075-c74c-44ea-93f0-1c88a90fe79e\",\"LegalEntityId\":\"7b1a7566-e113-411b-94b7-d3b9fb0da98a\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"85168ace-9211-45e3-bb75-f85c54e66f10\",\"BrandName\":\"Kiss Bank\",\"LogoUri\":\"https://kissbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"de1d6075-c74c-44ea-93f0-1c88a90fe79e\",\"LastUpdated\":\"2021-04-12T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"85168ace-9211-45e3-bb75-f85c54e66f10\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.kissbank/jwks\"}],\"Endpoint\":{\"BrandId\":\"85168ace-9211-45e3-bb75-f85c54e66f10\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.kissbank\",\"ResourceBaseUri\":\"https://api.kissbank\",\"InfosecBaseUri\":\"https://idp.kissbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://kissbank/\"}}]}]},{\"LegalEntityId\":\"8c31bb93-9469-4094-979a-8530a85a6aa1\",\"LegalEntityName\":\"Non-tech Software Company\",\"LogoUri\":\"https://nontech/logo.png\",\"Abn\":\"98765987654\",\"Acn\":\"987659876\",\"AccreditationNumber\":\"ADR001010\",\"Participations\":[{\"ParticipationId\":\"419155ba-3b94-4841-8d14-8616aea321cb\",\"LegalEntityId\":\"8c31bb93-9469-4094-979a-8530a85a6aa1\",\"ParticipationTypeId\":2,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"fb88befe-b1d1-4b18-8182-78d4130eaa0c\",\"BrandName\":\"Non-tech\",\"LogoUri\":\"https://nontech/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"419155ba-3b94-4841-8d14-8616aea321cb\",\"LastUpdated\":\"2021-04-06T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[]}]}]},{\"LegalEntityId\":\"8ff78c90-74c2-4c51-9c04-9d829476687a\",\"LegalEntityName\":\"WOW Software Company\",\"LogoUri\":\"https://wowsoftware/img/logo.png\",\"Abn\":\"88778877\",\"Acn\":\"99889988\",\"AccreditationNumber\":\"ADR000007\",\"Participations\":[{\"ParticipationId\":\"ac95402c-ecbc-4dad-9323-dedb1ed1763c\",\"LegalEntityId\":\"8ff78c90-74c2-4c51-9c04-9d829476687a\",\"ParticipationTypeId\":2,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"8fe9791a-e4a8-4104-b1cb-e0df41189520\",\"BrandName\":\"WOW\",\"LogoUri\":\"https://wowsoftware/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"ac95402c-ecbc-4dad-9323-dedb1ed1763c\",\"LastUpdated\":\"2021-02-06T11:58:00\",\"SoftwareProducts\":[{\"SoftwareProductId\":\"9788e6d3-75a1-47eb-a891-dd752ced0f61\",\"SoftwareProductName\":\"MyBudgetHelper\",\"SoftwareProductDescription\":\"A product to help you manage your budget\",\"LogoUri\":\"https://wowsoftware/mybudgetapp/img/logo.png\",\"ClientUri\":\"https://wowsoftware/mybudgetapp\",\"TosUri\":\"https://wowsoftware/mybudgetapp/terms\",\"PolicyUri\":\"https://wowsoftware/mybudgetapp/policy\",\"RecipientBaseUri\":\"https://api.wowsoftware/mybudgetapp\",\"RevocationUri\":\"https://api.wowsoftware/mybudgetapp/revoke\",\"RedirectUris\":\"https://api.wowsoftware/mybudgetapp/callback https://api.mocksoftware/mybudgetapp/return\",\"JwksUri\":\"https://localhost:7006/loopback/MockDataRecipientJwks\",\"Scope\":\"openid bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read common:customer.basic:read common:customer.detail:read cdr:registration\",\"StatusId\":1,\"BrandId\":\"8fe9791a-e4a8-4104-b1cb-e0df41189520\",\"Certificates\":[{\"SoftwareProductCertificateId\":\"afc0264d-7637-45ee-b7ed-82fc07274f2e\",\"SoftwareProductId\":\"9788e6d3-75a1-47eb-a891-dd752ced0f61\",\"CommonName\":\"MockDataRecipient\",\"Thumbprint\":\"f0e5146a51f16e236844cf0353d791f11865e405\"}]}],\"AuthDetails\":[]}]}]},{\"LegalEntityId\":\"924ca498-0f19-402d-ae07-2cb61088f8aa\",\"LegalEntityName\":\"Hall Bank\",\"LogoUri\":\"https://hallbank/img/logo.png\",\"Abn\":\"12345678901\",\"Acn\":\"123456789\",\"Participations\":[{\"ParticipationId\":\"ae0306f3-3cb7-4b91-9828-0e947c940a1e\",\"LegalEntityId\":\"924ca498-0f19-402d-ae07-2cb61088f8aa\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"920f296d-5f2f-49de-876c-15a4aa1b4a79\",\"BrandName\":\"Hallway\",\"LogoUri\":\"https://hallwaybank/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"ae0306f3-3cb7-4b91-9828-0e947c940a1e\",\"LastUpdated\":\"2021-04-18T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"920f296d-5f2f-49de-876c-15a4aa1b4a79\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://hallwaybank/idp/jwks\"}],\"Endpoint\":{\"BrandId\":\"920f296d-5f2f-49de-876c-15a4aa1b4a79\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.hallwaybank\",\"ResourceBaseUri\":\"https://api.hallwaybank\",\"InfosecBaseUri\":\"https://idp.hallwaybank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://hallwaybank/\"}},{\"BrandId\":\"cf217aba-e00d-48d5-9c3d-03af0b91cb80\",\"BrandName\":\"Hall Bank\",\"LogoUri\":\"https://hallardbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"ae0306f3-3cb7-4b91-9828-0e947c940a1e\",\"LastUpdated\":\"2021-04-19T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"cf217aba-e00d-48d5-9c3d-03af0b91cb80\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://hallbank/idp/jwks\"}],\"Endpoint\":{\"BrandId\":\"cf217aba-e00d-48d5-9c3d-03af0b91cb80\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.hallbank\",\"ResourceBaseUri\":\"https://api.hallbank\",\"InfosecBaseUri\":\"https://idp.hallbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://hallbank/\"}}]}]},{\"LegalEntityId\":\"93ef5f28-7f30-43f2-8e5c-b1e3cb39ce90\",\"LegalEntityName\":\"New Bank\",\"LogoUri\":\"https://newbank/logo.png\",\"Abn\":\"99888777666\",\"Acn\":\"888777666\",\"Participations\":[{\"ParticipationId\":\"ffc38262-7e65-4550-a2b4-c22110f44b1d\",\"LegalEntityId\":\"93ef5f28-7f30-43f2-8e5c-b1e3cb39ce90\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"6e9cfaf7-ecae-4de3-bbc5-ea9f366bdf55\",\"BrandName\":\"New Bank\",\"LogoUri\":\"https://newbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"ffc38262-7e65-4550-a2b4-c22110f44b1d\",\"LastUpdated\":\"2021-04-06T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"6e9cfaf7-ecae-4de3-bbc5-ea9f366bdf55\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.newbank/jwks\"}],\"Endpoint\":{\"BrandId\":\"6e9cfaf7-ecae-4de3-bbc5-ea9f366bdf55\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.newbank\",\"ResourceBaseUri\":\"https://api.newbank\",\"InfosecBaseUri\":\"https://idp.newbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://newbank/\"}}]}]},{\"LegalEntityId\":\"9c7dec6d-2e46-4b53-8430-5337c7eb93e9\",\"LegalEntityName\":\"Noon Bank\",\"LogoUri\":\"https://noonbank/img/logo.png\",\"Abn\":\"1112359979\",\"Acn\":\"22443522\",\"Participations\":[{\"ParticipationId\":\"39b97d97-d526-4b99-be63-fcc445b145b7\",\"LegalEntityId\":\"9c7dec6d-2e46-4b53-8430-5337c7eb93e9\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"557f42e8-4e00-4b03-a9c9-d97796b6418b\",\"BrandName\":\"Noon Bank\",\"LogoUri\":\"https://noonbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"39b97d97-d526-4b99-be63-fcc445b145b7\",\"LastUpdated\":\"2021-04-09T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"557f42e8-4e00-4b03-a9c9-d97796b6418b\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.noonbank/jwks\"}],\"Endpoint\":{\"BrandId\":\"557f42e8-4e00-4b03-a9c9-d97796b6418b\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.noonbank\",\"ResourceBaseUri\":\"https://api.noonbank\",\"InfosecBaseUri\":\"https://idp.noonbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://noonbank/\"}}]}]},{\"LegalEntityId\":\"9d34ede4-2c76-4ecc-a31e-ea8392d31cc9\",\"LegalEntityName\":\"FintechX\",\"LogoUri\":\"https://fintechx/logo.png\",\"Abn\":\"98765987654\",\"Acn\":\"987659876\",\"AccreditationNumber\":\"ADR001001\",\"Participations\":[{\"ParticipationId\":\"1facde46-1ab0-40a2-92e5-51bc5eecb35f\",\"LegalEntityId\":\"9d34ede4-2c76-4ecc-a31e-ea8392d31cc9\",\"ParticipationTypeId\":2,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"20c0864b-ceef-4de0-8944-eb0962f825eb\",\"BrandName\":\"Finance X\",\"LogoUri\":\"https://fintechx/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"1facde46-1ab0-40a2-92e5-51bc5eecb35f\",\"LastUpdated\":\"2021-04-06T11:58:00\",\"SoftwareProducts\":[{\"SoftwareProductId\":\"63bc22ac-6fd2-4e85-a979-c2fc7c4db9da\",\"SoftwareProductName\":\"TestProductCert\",\"SoftwareProductDescription\":\"Application to allow you to track your expenses\",\"LogoUri\":\"https://fintechx/products/trackxpense/logo.png\",\"ClientUri\":\"https://fintechx/products/trackxpense\",\"RevocationUri\":\"https://fintechx/products/trackxpense/revoke\",\"RedirectUris\":\"https://fintechx/products/trackxpense/cb\",\"JwksUri\":\"https://localhost:7006/loopback/MockDataRecipientJwks\",\"Scope\":\"openid bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read common:customer.basic:read common:customer.detail:read cdr:registration\",\"StatusId\":1,\"BrandId\":\"20c0864b-ceef-4de0-8944-eb0962f825eb\",\"Certificates\":[{\"SoftwareProductCertificateId\":\"16a9f620-b344-462c-b2d1-06e1fdaa415a\",\"SoftwareProductId\":\"63bc22ac-6fd2-4e85-a979-c2fc7c4db9da\",\"CommonName\":\"MockDataRecipient\",\"Thumbprint\":\"f0e5146a51f16e236844cf0353d791f11865e405\"}]},{\"SoftwareProductId\":\"86ecb655-9eba-409c-9be3-59e7adf7080d\",\"SoftwareProductName\":\"MockDataRecepient\",\"SoftwareProductDescription\":\"Mock Data Recepient\",\"LogoUri\":\"https://fintechx/products/trackxpense/logo.png\",\"ClientUri\":\"https://fintechx/products/trackxpense\",\"RevocationUri\":\"https://fintechx/products/trackxpense/revoke\",\"RedirectUris\":\"https://fintechx/products/trackxpense/cb\",\"JwksUri\":\"https://localhost:7006/loopback/MockDataRecipientJwks\",\"Scope\":\"openid bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read common:customer.basic:read common:customer.detail:read cdr:registration\",\"StatusId\":1,\"BrandId\":\"20c0864b-ceef-4de0-8944-eb0962f825eb\",\"Certificates\":[{\"SoftwareProductCertificateId\":\"f1cb3f25-890d-4bfb-a13b-94654cbc9a14\",\"SoftwareProductId\":\"86ecb655-9eba-409c-9be3-59e7adf7080d\",\"CommonName\":\"MockDataRecipient\",\"Thumbprint\":\"f0e5146a51f16e236844cf0353d791f11865e405\"}]},{\"SoftwareProductId\":\"9381dad2-6b68-4879-b496-c1319d7dfbc9\",\"SoftwareProductName\":\"Track Xpense\",\"SoftwareProductDescription\":\"Application to allow you to track your expenses\",\"LogoUri\":\"https://fintechx/products/trackxpense/logo.png\",\"ClientUri\":\"https://fintechx/products/trackxpense\",\"RevocationUri\":\"https://fintechx/products/trackxpense/revoke\",\"RedirectUris\":\"https://fintechx/products/trackxpense/cb\",\"JwksUri\":\"https://localhost:7006/loopback/MockDataRecipientJwks\",\"Scope\":\"openid bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read common:customer.basic:read common:customer.detail:read cdr:registration\",\"StatusId\":1,\"BrandId\":\"20c0864b-ceef-4de0-8944-eb0962f825eb\",\"Certificates\":[{\"SoftwareProductCertificateId\":\"2c53cd80-e845-4249-92f2-17cd87bef190\",\"SoftwareProductId\":\"9381dad2-6b68-4879-b496-c1319d7dfbc9\",\"CommonName\":\"MockDataRecipient\",\"Thumbprint\":\"f0e5146a51f16e236844cf0353d791f11865e405\"}]},{\"SoftwareProductId\":\"d3c44426-e003-4604-aa45-4137e45dfbc4\",\"SoftwareProductName\":\"Loan Calculator X\",\"SoftwareProductDescription\":\"Loan affordability application\",\"LogoUri\":\"https://fintechx/products/loancalculator/logo.png\",\"ClientUri\":\"https://fintechx/products/loancalculator\",\"RevocationUri\":\"https://fintechx/products/loancalculator/revocation\",\"RedirectUris\":\"https://fintechx/products/loancalculator/cb\",\"JwksUri\":\"https://localhost:7006/loopback/MockDataRecipientJwks\",\"Scope\":\"openid bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read common:customer.basic:read common:customer.detail:read cdr:registration\",\"StatusId\":1,\"BrandId\":\"20c0864b-ceef-4de0-8944-eb0962f825eb\",\"Certificates\":[{\"SoftwareProductCertificateId\":\"8b5ba952-701b-4283-bc90-3df744408852\",\"SoftwareProductId\":\"d3c44426-e003-4604-aa45-4137e45dfbc4\",\"CommonName\":\"MockDataRecipient\",\"Thumbprint\":\"f0e5146a51f16e236844cf0353d791f11865e405\"}]}],\"AuthDetails\":[]}]}]},{\"LegalEntityId\":\"a1349224-adf3-4678-ba9b-f9ec800b5dc5\",\"LegalEntityName\":\"TnT Bank\",\"LogoUri\":\"https://tntbank/img/logo.png\",\"Abn\":\"1312341243\",\"Acn\":\"533211\",\"Participations\":[{\"ParticipationId\":\"948797fe-bcde-447f-9fc7-f520dc6ffd03\",\"LegalEntityId\":\"a1349224-adf3-4678-ba9b-f9ec800b5dc5\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"f8bce914-ac8d-436a-b265-19baca6d1df2\",\"BrandName\":\"TnT Bank\",\"LogoUri\":\"https://tntbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"948797fe-bcde-447f-9fc7-f520dc6ffd03\",\"LastUpdated\":\"2021-04-09T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"f8bce914-ac8d-436a-b265-19baca6d1df2\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.tntbank/jwks\"}],\"Endpoint\":{\"BrandId\":\"f8bce914-ac8d-436a-b265-19baca6d1df2\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.tntbank\",\"ResourceBaseUri\":\"https://api.tntbank\",\"InfosecBaseUri\":\"https://idp.tntbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://tntbank/\"}}]}]},{\"LegalEntityId\":\"a1ca85da-7be8-4020-9c27-c9623eca582b\",\"LegalEntityName\":\"Xray Software Pty Ltd\",\"LogoUri\":\"https://xraysoftware/img/logo.png\",\"Abn\":\"112341234\",\"Acn\":\"12341243\",\"AccreditationNumber\":\"ADR000006\",\"Participations\":[{\"ParticipationId\":\"a6707b8b-0164-4910-86f3-acb22c00f49a\",\"LegalEntityId\":\"a1ca85da-7be8-4020-9c27-c9623eca582b\",\"ParticipationTypeId\":2,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"fe123396-4eba-4518-aade-b245ceea78af\",\"BrandName\":\"XRay Financial\",\"LogoUri\":\"https://xraysoftware/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"a6707b8b-0164-4910-86f3-acb22c00f49a\",\"LastUpdated\":\"2021-04-06T11:58:00\",\"SoftwareProducts\":[{\"SoftwareProductId\":\"6a25c22b-0810-4f41-8e41-f48d162c517d\",\"SoftwareProductName\":\"Budget direct\",\"SoftwareProductDescription\":\"A product to help you manage your budget\",\"LogoUri\":\"https://xraysoftware/budgetdirect/img/logo.png\",\"ClientUri\":\"https://xraysoftware/budgetdirect\",\"RecipientBaseUri\":\"https://api.xrayoftware/budgetdirect\",\"RevocationUri\":\"https://api.xraysoftware/budgetdirect/revoke\",\"RedirectUris\":\"https://api.xraysoftware/budgetdirect/callback\",\"JwksUri\":\"https://localhost:7006/loopback/MockDataRecipientJwks\",\"Scope\":\"openid bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read common:customer.basic:read common:customer.detail:read cdr:registration\",\"StatusId\":1,\"BrandId\":\"fe123396-4eba-4518-aade-b245ceea78af\",\"Certificates\":[{\"SoftwareProductCertificateId\":\"05a1d419-409d-4d30-8756-6e188f6d9074\",\"SoftwareProductId\":\"6a25c22b-0810-4f41-8e41-f48d162c517d\",\"CommonName\":\"MockDataRecipient\",\"Thumbprint\":\"f0e5146a51f16e236844cf0353d791f11865e405\"}]}],\"AuthDetails\":[]}]}]},{\"LegalEntityId\":\"ae4af466-54c6-4ce4-ad2d-580bc6496943\",\"LegalEntityName\":\"Fox Bank\",\"LogoUri\":\"https://foxbank/img/logo.png\",\"Abn\":\"3123421245\",\"Acn\":\"122341212\",\"Participations\":[{\"ParticipationId\":\"bd76f939-ec37-417e-b9d2-da5565f312df\",\"LegalEntityId\":\"ae4af466-54c6-4ce4-ad2d-580bc6496943\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"2192a459-5ef5-4493-afe1-56c3d03fc1ba\",\"BrandName\":\"Fox Bank\",\"LogoUri\":\"https://foxbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"bd76f939-ec37-417e-b9d2-da5565f312df\",\"LastUpdated\":\"2021-04-21T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"2192a459-5ef5-4493-afe1-56c3d03fc1ba\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.foxbank/jwks\"}],\"Endpoint\":{\"BrandId\":\"2192a459-5ef5-4493-afe1-56c3d03fc1ba\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.foxbank\",\"ResourceBaseUri\":\"https://api.foxbank\",\"InfosecBaseUri\":\"https://idp.foxbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://foxbank/\"}}]}]},{\"LegalEntityId\":\"aeca53ab-2a90-4737-938d-987ce195ca14\",\"LegalEntityName\":\"Sun Bank\",\"LogoUri\":\"https://sunbank/img/logo.png\",\"Abn\":\"94477558899\",\"Acn\":\"99000099\",\"Participations\":[{\"ParticipationId\":\"546e5237-10d7-4b0b-91e1-448517d0f75b\",\"LegalEntityId\":\"aeca53ab-2a90-4737-938d-987ce195ca14\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"a2cd9cd1-e3c7-493b-86d8-f9f319ca0732\",\"BrandName\":\"Brighter Bank\",\"LogoUri\":\"https://brighterbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"546e5237-10d7-4b0b-91e1-448517d0f75b\",\"LastUpdated\":\"2021-01-01T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"a2cd9cd1-e3c7-493b-86d8-f9f319ca0732\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.brighterbank/jwks\"}],\"Endpoint\":{\"BrandId\":\"a2cd9cd1-e3c7-493b-86d8-f9f319ca0732\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.brighterbank\",\"ResourceBaseUri\":\"https://api.brighterbank\",\"InfosecBaseUri\":\"https://idp.brighterbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://brighterbank/\"}},{\"BrandId\":\"f6dfbe5b-c57a-4ec2-bc97-66c1f7fe6c1d\",\"BrandName\":\"Sun\",\"LogoUri\":\"https://sunbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"546e5237-10d7-4b0b-91e1-448517d0f75b\",\"LastUpdated\":\"2021-04-01T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"f6dfbe5b-c57a-4ec2-bc97-66c1f7fe6c1d\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.sunbank/jwks\"}],\"Endpoint\":{\"BrandId\":\"f6dfbe5b-c57a-4ec2-bc97-66c1f7fe6c1d\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.sunbank\",\"ResourceBaseUri\":\"https://api.sunbank\",\"InfosecBaseUri\":\"https://idp.sunbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://sunbank/\"}}]}]},{\"LegalEntityId\":\"b7a18659-eb9b-4130-a0df-402c85f1f216\",\"LegalEntityName\":\"Pepper Bank\",\"LogoUri\":\"https://pepperbank/img/logo.png\",\"Abn\":\"8735652435\",\"Acn\":\"32234234\",\"Participations\":[{\"ParticipationId\":\"788452ac-ea60-4634-80f3-8c62891ae008\",\"LegalEntityId\":\"b7a18659-eb9b-4130-a0df-402c85f1f216\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"97e53112-73b2-482a-b352-39d389d67916\",\"BrandName\":\"Pepper Bank\",\"LogoUri\":\"https://pepperbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"788452ac-ea60-4634-80f3-8c62891ae008\",\"LastUpdated\":\"2021-04-09T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"97e53112-73b2-482a-b352-39d389d67916\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.pepperbank/jwks\"}],\"Endpoint\":{\"BrandId\":\"97e53112-73b2-482a-b352-39d389d67916\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.pepperbank\",\"ResourceBaseUri\":\"https://api.pepperbank\",\"InfosecBaseUri\":\"https://idp.pepperbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://pepperbank/\"}}]}]},{\"LegalEntityId\":\"b9b45c14-3346-47f7-ad78-3416762cf1d8\",\"LegalEntityName\":\"Oppo Bank\",\"LogoUri\":\"https://oppobank/img/logo.png\",\"Abn\":\"124124124\",\"Acn\":\"9955433\",\"Participations\":[{\"ParticipationId\":\"e1f5b948-59d2-4667-844c-47d0d1cd36d3\",\"LegalEntityId\":\"b9b45c14-3346-47f7-ad78-3416762cf1d8\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"a5e45351-d13c-4690-93d1-3da515e71a92\",\"BrandName\":\"Oppo Bank\",\"LogoUri\":\"https://oppobank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"e1f5b948-59d2-4667-844c-47d0d1cd36d3\",\"LastUpdated\":\"2021-04-09T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"a5e45351-d13c-4690-93d1-3da515e71a92\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.oppobank/jwks\"}],\"Endpoint\":{\"BrandId\":\"a5e45351-d13c-4690-93d1-3da515e71a92\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.oppobank\",\"ResourceBaseUri\":\"https://api.oppobank\",\"InfosecBaseUri\":\"https://idp.oppobank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://oppobank/\"}}]}]},{\"LegalEntityId\":\"ba1311fb-5cea-4c5c-b4ed-f2a98a0915e0\",\"LegalEntityName\":\"Hot Bank\",\"LogoUri\":\"https://hotbank/img/logo.png\",\"Abn\":\"12345678901\",\"Acn\":\"123456789\",\"Participations\":[{\"ParticipationId\":\"b8b176b1-a09b-4478-ae57-edfb8a1b67ae\",\"LegalEntityId\":\"ba1311fb-5cea-4c5c-b4ed-f2a98a0915e0\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"62f4a113-defe-4f99-bd9c-625277bc0e36\",\"BrandName\":\"mildBank\",\"LogoUri\":\"https://mildbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"b8b176b1-a09b-4478-ae57-edfb8a1b67ae\",\"LastUpdated\":\"2021-04-11T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"62f4a113-defe-4f99-bd9c-625277bc0e36\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://mildbank/idp/jwks\"}],\"Endpoint\":{\"BrandId\":\"62f4a113-defe-4f99-bd9c-625277bc0e36\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.mildbank\",\"ResourceBaseUri\":\"https://api.mildbank\",\"InfosecBaseUri\":\"https://idp.mildbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://mildbank/\"}},{\"BrandId\":\"81d3d5cc-cdb6-4253-a78b-b17155dde7fd\",\"BrandName\":\"extrahotBank\",\"LogoUri\":\"https://extrahotbank/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"b8b176b1-a09b-4478-ae57-edfb8a1b67ae\",\"LastUpdated\":\"2021-04-16T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"81d3d5cc-cdb6-4253-a78b-b17155dde7fd\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://extrahotbank/idp/jwks\"}],\"Endpoint\":{\"BrandId\":\"81d3d5cc-cdb6-4253-a78b-b17155dde7fd\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.extrahotbank\",\"ResourceBaseUri\":\"https://api.extrahotbank\",\"InfosecBaseUri\":\"https://idp.extrahotbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://extrahotbank/\"}}]}]},{\"LegalEntityId\":\"bc9d68f2-74c4-43d5-9a9c-93e72a2e84c9\",\"LegalEntityName\":\"Bank Legal Entity 2\",\"LogoUri\":\"https://bank2/logo.png\",\"Abn\":\"11111111111\",\"Acn\":\"888777666\",\"Participations\":[{\"ParticipationId\":\"893aff64-eeda-4583-b012-1060cd5d4295\",\"LegalEntityId\":\"bc9d68f2-74c4-43d5-9a9c-93e72a2e84c9\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"e748eadf-4aa4-4e2f-b3da-fb4a9d511994\",\"BrandName\":\"Bank Brand 2\",\"LogoUri\":\"https://bank2/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"893aff64-eeda-4583-b012-1060cd5d4295\",\"LastUpdated\":\"2021-04-06T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"e748eadf-4aa4-4e2f-b3da-fb4a9d511994\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.bank1/jwks\"}],\"Endpoint\":{\"BrandId\":\"e748eadf-4aa4-4e2f-b3da-fb4a9d511994\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.bank2\",\"ResourceBaseUri\":\"https://api.bank2\",\"InfosecBaseUri\":\"https://idp.bank2\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://bank2/\"}}]}]},{\"LegalEntityId\":\"c70456f3-843f-4407-a988-577c108a7816\",\"LegalEntityName\":\"ZeroFintech\",\"LogoUri\":\"https://zerofintech/logo.png\",\"Abn\":\"98765987654\",\"Acn\":\"987659876\",\"AccreditationNumber\":\"ADR001004\",\"Participations\":[{\"ParticipationId\":\"aef93cf6-3f06-41d8-8bdd-cb7a4be3810c\",\"LegalEntityId\":\"c70456f3-843f-4407-a988-577c108a7816\",\"ParticipationTypeId\":2,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"ebbcc2f2-817e-42b8-8a28-cd45902159e0\",\"BrandName\":\"ZeroFintech\",\"LogoUri\":\"https://zerofintech/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"aef93cf6-3f06-41d8-8bdd-cb7a4be3810c\",\"LastUpdated\":\"2021-04-05T11:58:00\",\"SoftwareProducts\":[{\"SoftwareProductId\":\"5d03d1a6-b83b-4176-a2f4-d0074a205695\",\"SoftwareProductName\":\"Mortgage\",\"SoftwareProductDescription\":\"calculate the mortgage value\",\"LogoUri\":\"https://zerofintech/products/mortgage/logo.png\",\"ClientUri\":\"https://zerofintech/products/mortgage\",\"RevocationUri\":\"https://zerofintech/products/mortgage/revocation\",\"RedirectUris\":\"https://zerofintech/products/mortgage/cb\",\"JwksUri\":\"https://localhost:7006/loopback/MockDataRecipientJwks\",\"Scope\":\"openid bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read common:customer.basic:read common:customer.detail:read cdr:registration\",\"StatusId\":1,\"BrandId\":\"ebbcc2f2-817e-42b8-8a28-cd45902159e0\",\"Certificates\":[{\"SoftwareProductCertificateId\":\"4a468463-1d04-4256-85ea-158937458bea\",\"SoftwareProductId\":\"5d03d1a6-b83b-4176-a2f4-d0074a205695\",\"CommonName\":\"MockDataRecipient\",\"Thumbprint\":\"f0e5146a51f16e236844cf0353d791f11865e405\"}]},{\"SoftwareProductId\":\"dafa09db-4433-4203-907a-bdf797c8cd21\",\"SoftwareProductName\":\"Reward program\",\"SoftwareProductDescription\":\"Application to allow you to track your expenses\",\"LogoUri\":\"https://zerofintech//products/rewards/logo.png\",\"ClientUri\":\"https://zerofintech/products/rewards\",\"RevocationUri\":\"https://hotfintech/products/tracksheet/revoke\",\"RedirectUris\":\"https://zerofintech/products/rewards/cb\",\"JwksUri\":\"https://localhost:7006/loopback/MockDataRecipientJwks\",\"Scope\":\"openid bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read common:customer.basic:read common:customer.detail:read cdr:registration\",\"StatusId\":1,\"BrandId\":\"ebbcc2f2-817e-42b8-8a28-cd45902159e0\",\"Certificates\":[{\"SoftwareProductCertificateId\":\"d0da1480-9662-4537-83b5-b238dd742cad\",\"SoftwareProductId\":\"dafa09db-4433-4203-907a-bdf797c8cd21\",\"CommonName\":\"MockDataRecipient\",\"Thumbprint\":\"f0e5146a51f16e236844cf0353d791f11865e405\"}]}],\"AuthDetails\":[]}]}]},{\"LegalEntityId\":\"de815a93-85b3-4fe8-9513-33ad8f4359d0\",\"LegalEntityName\":\"yoyo Software Company\",\"LogoUri\":\"https://yoyosoftware/img/logo.png\",\"Abn\":\"11222333444\",\"Acn\":\"222333444\",\"AccreditationNumber\":\"ADR000005\",\"Participations\":[{\"ParticipationId\":\"0fbc379d-8e48-4dcd-90d3-c13862889e83\",\"LegalEntityId\":\"de815a93-85b3-4fe8-9513-33ad8f4359d0\",\"ParticipationTypeId\":2,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"f3f0c40b-9df8-491a-af1d-81cb9ab5f021\",\"BrandName\":\"YoYo\",\"LogoUri\":\"https://yoyosoftware/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"0fbc379d-8e48-4dcd-90d3-c13862889e83\",\"LastUpdated\":\"2021-04-06T11:58:00\",\"SoftwareProducts\":[{\"SoftwareProductId\":\"6f7a1b8e-8799-48a8-9011-e3920391f713\",\"SoftwareProductName\":\"MyBudgetHelper\",\"SoftwareProductDescription\":\"A product to help you manage your budget\",\"LogoUri\":\"https://yoyosoftware/mybudgetapp/img/logo.png\",\"ClientUri\":\"https://yoyosoftware/mybudgetapp\",\"TosUri\":\"https://yoyosoftware/mybudgetapp/terms\",\"PolicyUri\":\"https://yoyosoftware/mybudgetapp/policy\",\"RecipientBaseUri\":\"https://api.yoyosoftware/mybudgetapp\",\"RevocationUri\":\"https://api.yoyosoftware/mybudgetapp/revoke\",\"RedirectUris\":\"https://api.yoyosoftware/mybudgetapp/callback https://api.yoyosoftware/mybudgetapp/return\",\"JwksUri\":\"https://localhost:7006/loopback/MockDataRecipientJwks\",\"Scope\":\"openid bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read common:customer.basic:read common:customer.detail:read cdr:registration\",\"StatusId\":1,\"BrandId\":\"f3f0c40b-9df8-491a-af1d-81cb9ab5f021\",\"Certificates\":[{\"SoftwareProductCertificateId\":\"d3451e00-fe15-46c2-aec1-d82506110ede\",\"SoftwareProductId\":\"6f7a1b8e-8799-48a8-9011-e3920391f713\",\"CommonName\":\"MockDataRecipient\",\"Thumbprint\":\"f0e5146a51f16e236844cf0353d791f11865e405\"}]}],\"AuthDetails\":[]}]}]},{\"LegalEntityId\":\"e81ab636-b3b7-4403-82b8-a43077a569d6\",\"LegalEntityName\":\"Central Bank\",\"LogoUri\":\"https://centralbank/img/logo.png\",\"Abn\":\"12398122412\",\"Acn\":\"44123312\",\"Participations\":[{\"ParticipationId\":\"dd26b2a0-7598-4426-9316-4b6d7d0e3bf6\",\"LegalEntityId\":\"e81ab636-b3b7-4403-82b8-a43077a569d6\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"c1ff7731-5843-4384-88d8-6062afde7c5b\",\"BrandName\":\"central bank\",\"LogoUri\":\"https://centralbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"dd26b2a0-7598-4426-9316-4b6d7d0e3bf6\",\"LastUpdated\":\"2021-03-06T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"c1ff7731-5843-4384-88d8-6062afde7c5b\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.centralbank/jwks\"}],\"Endpoint\":{\"BrandId\":\"c1ff7731-5843-4384-88d8-6062afde7c5b\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.centralbank\",\"ResourceBaseUri\":\"https://api.centralbank\",\"InfosecBaseUri\":\"https://idp.centralbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://centralbank/\"}}]}]},{\"LegalEntityId\":\"e81ab637-b3b7-4403-82b8-a43077a569d6\",\"LegalEntityName\":\"Royal Bank\",\"LogoUri\":\"https://royalbank/img/logo.png\",\"Abn\":\"94477558833\",\"Acn\":\"99000033\",\"Participations\":[{\"ParticipationId\":\"cc5f0af7-1dc9-4bd6-9ec7-b961a9113c9c\",\"LegalEntityId\":\"e81ab637-b3b7-4403-82b8-a43077a569d6\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"a5252bde-d1a6-413f-8f53-f7e2f6ab3f77\",\"BrandName\":\"Royal Bank\",\"LogoUri\":\"https://royalbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"cc5f0af7-1dc9-4bd6-9ec7-b961a9113c9c\",\"LastUpdated\":\"2021-04-01T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"a5252bde-d1a6-413f-8f53-f7e2f6ab3f77\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.royalbank/jwks\"}],\"Endpoint\":{\"BrandId\":\"a5252bde-d1a6-413f-8f53-f7e2f6ab3f77\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.royalbank\",\"ResourceBaseUri\":\"https://api.royalbank\",\"InfosecBaseUri\":\"https://idp.royalbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://royalbank/\"}}]}]},{\"LegalEntityId\":\"f138d974-0d12-4150-ad0f-c77af745c60b\",\"LegalEntityName\":\"xlogical Software Company\",\"LogoUri\":\"https://xlogical/logo.png\",\"AccreditationNumber\":\"ADR001009\",\"Participations\":[{\"ParticipationId\":\"cc63c1a3-d25c-4b3e-af97-84850c864b9d\",\"LegalEntityId\":\"f138d974-0d12-4150-ad0f-c77af745c60b\",\"ParticipationTypeId\":2,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"8a3441aa-1242-493a-b466-dcbfffe5a441\",\"BrandName\":\"xlogical\",\"LogoUri\":\"https://xlogical/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"cc63c1a3-d25c-4b3e-af97-84850c864b9d\",\"LastUpdated\":\"2021-04-06T11:58:00\",\"SoftwareProducts\":[{\"SoftwareProductId\":\"25ee528f-35ac-4a66-a67c-6166602c9322\",\"SoftwareProductName\":\"Loan Calculator \",\"SoftwareProductDescription\":\"Loan applications\",\"LogoUri\":\"https://xlogical/products/loancalculator/logo.png\",\"ClientUri\":\"https://xlogical/products/loancalculator\",\"RevocationUri\":\"https://xlogical/products/loancalculator/revocation\",\"RedirectUris\":\"https://xlogical/products/loancalculator/cb\",\"JwksUri\":\"https://localhost:7006/loopback/MockDataRecipientJwks\",\"Scope\":\"openid bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read cdr:registration\",\"StatusId\":1,\"BrandId\":\"8a3441aa-1242-493a-b466-dcbfffe5a441\",\"Certificates\":[{\"SoftwareProductCertificateId\":\"e6b29df2-26fe-4f37-9bb0-603889154777\",\"SoftwareProductId\":\"25ee528f-35ac-4a66-a67c-6166602c9322\",\"CommonName\":\"MockDataRecipient\",\"Thumbprint\":\"f0e5146a51f16e236844cf0353d791f11865e405\"}]}],\"AuthDetails\":[]}]}]},{\"LegalEntityId\":\"f72ab707-a619-4dc1-a90b-177d61bcf574\",\"LegalEntityName\":\"HotFinTech\",\"LogoUri\":\"https://hotfintech/logo.png\",\"Abn\":\"01944123445\",\"Acn\":\"123412345\",\"AccreditationNumber\":\"ADR001002\",\"Participations\":[{\"ParticipationId\":\"6c39c648-c0ef-4ddd-98d2-70e5684484fc\",\"LegalEntityId\":\"f72ab707-a619-4dc1-a90b-177d61bcf574\",\"ParticipationTypeId\":2,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"46b33515-b4a5-4b1c-b5b4-25654d675be6\",\"BrandName\":\"HotFinTech\",\"LogoUri\":\"https://hotfintech/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"6c39c648-c0ef-4ddd-98d2-70e5684484fc\",\"LastUpdated\":\"2021-04-05T11:58:00\",\"SoftwareProducts\":[{\"SoftwareProductId\":\"9926a894-cc29-4d63-b3b4-e404066ae6f2\",\"SoftwareProductName\":\"Track sheet\",\"SoftwareProductDescription\":\"Application to allow you to track your expenses\",\"LogoUri\":\"https://hotfintech/products/tracksheet/logo.png\",\"ClientUri\":\"https://hotfintech/products/tracksheet/\",\"RevocationUri\":\"https://hotfintech/products/tracksheet/revoke\",\"RedirectUris\":\"https://hotfintech/products/tracksheet/cb\",\"JwksUri\":\"https://localhost:7006/loopback/MockDataRecipientJwks\",\"Scope\":\"openid bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read common:customer.basic:read common:customer.detail:read cdr:registration\",\"StatusId\":1,\"BrandId\":\"46b33515-b4a5-4b1c-b5b4-25654d675be6\",\"Certificates\":[{\"SoftwareProductCertificateId\":\"e7ade53e-8aeb-49fa-907c-726a12920b4b\",\"SoftwareProductId\":\"9926a894-cc29-4d63-b3b4-e404066ae6f2\",\"CommonName\":\"MockDataRecipient\",\"Thumbprint\":\"f0e5146a51f16e236844cf0353d791f11865e405\"}]},{\"SoftwareProductId\":\"d3c44425-e003-4604-aa45-4137e45dfbc4\",\"SoftwareProductName\":\"Pay advance\",\"SoftwareProductDescription\":\"Buy first and pay later product\",\"LogoUri\":\"https://hotfintech/products/payadvance/logo.png\",\"ClientUri\":\"https://hotfintech/products/payadvance \",\"RevocationUri\":\"https://hotfintech/products/payadvance/revocation\",\"RedirectUris\":\"https://hotfintech/products/payadvance/redirect\",\"JwksUri\":\"https://localhost:7006/loopback/MockDataRecipientJwks\",\"Scope\":\"openid bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read common:customer.basic:read common:customer.detail:read cdr:registration\",\"StatusId\":1,\"BrandId\":\"46b33515-b4a5-4b1c-b5b4-25654d675be6\",\"Certificates\":[{\"SoftwareProductCertificateId\":\"a527d0ff-0202-4df7-81ab-cb64657a3126\",\"SoftwareProductId\":\"d3c44425-e003-4604-aa45-4137e45dfbc4\",\"CommonName\":\"MockDataRecipient\",\"Thumbprint\":\"f0e5146a51f16e236844cf0353d791f11865e405\"}]}],\"AuthDetails\":[]}]}]},{\"LegalEntityId\":\"fe75814c-99ee-4922-a6b0-71913e60984c\",\"LegalEntityName\":\"QQ Bank\",\"LogoUri\":\"https://qqbank/img/logo.png\",\"Abn\":\"21111244\",\"Acn\":\"31231\",\"Participations\":[{\"ParticipationId\":\"3787613b-c1dc-4ddd-b808-82d82cfeb8ee\",\"LegalEntityId\":\"fe75814c-99ee-4922-a6b0-71913e60984c\",\"ParticipationTypeId\":1,\"IndustryId\":1,\"StatusId\":1,\"Brands\":[{\"BrandId\":\"895e54c5-93e0-405f-8072-0a9871bac8b5\",\"BrandName\":\"QQ Bank\",\"LogoUri\":\"https://qqbank/img/logo.png\",\"BrandStatusId\":1,\"ParticipationId\":\"3787613b-c1dc-4ddd-b808-82d82cfeb8ee\",\"LastUpdated\":\"2021-04-09T11:58:00\",\"SoftwareProducts\":[],\"AuthDetails\":[{\"BrandId\":\"895e54c5-93e0-405f-8072-0a9871bac8b5\",\"RegisterUTypeId\":1,\"JwksEndpoint\":\"https://idp.qqbank/jwks\"}],\"Endpoint\":{\"BrandId\":\"895e54c5-93e0-405f-8072-0a9871bac8b5\",\"Version\":\"1\",\"PublicBaseUri\":\"https://publicapi.qqbank\",\"ResourceBaseUri\":\"https://api.qqbank\",\"InfosecBaseUri\":\"https://idp.qqbank\",\"ExtensionBaseUri\":\"\",\"WebsiteUri\":\"https://qqbank/\"}}]}]}] }", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://localhost:7006/admin/metadata", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7006", - "path": [ - "admin", - "metadata" - ] - } - }, - "response": [] - }, - { - "name": "Admin API - Add or Update Data Recipient", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{admin_api_access_token}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [ - { - "key": "", - "value": "Bearer ", - "type": "default", - "disabled": true - } - ], - "body": { - "mode": "raw", - "raw": "{\r\n \"legalEntityId\": \"f9bde9a1-9fef-4bd9-b7ef-877369e076e3\",\r\n \"legalEntityName\": \"Mock Energy Company\",\r\n \"accreditationNumber\": \"ADR000001\",\r\n \"accreditationLevel\": \"UNRESTRICTED\",\r\n \"logoUri\": \"https://mocksoftware/img/Companylogo.png\",\r\n \"registrationNumber\": null,\r\n \"registrationDate\": null,\r\n \"registeredCountry\": null,\r\n \"abn\": \"34241177887\",\r\n \"acn\": \"241177887\",\r\n \"arbn\": \"342411088\",\r\n \"anzsicDivision\": null,\r\n \"organisationType\": \"COMPANY\",\r\n \"status\": \"ACTIVE\",\r\n \"dataRecipientBrands\": [\r\n {\r\n \"dataRecipientBrandId\": \"d50b74cf-e992-42fd-86d4-582ac9d72dbc\",\r\n \"brandName\": \"Mock Energy Tool\",\r\n \"logoUri\": \"https://mocksoftware/img/brandlogo.png\",\r\n \"status\": \"ACTIVE\",\r\n \"softwareProducts\": [\r\n {\r\n \"softwareProductId\": \"4754cf30-6cc2-4a9a-a9e1-4fb8f6d42121\",\r\n \"softwareProductName\": \"MyEnergyHelper\",\r\n \"softwareProductDescription\": \"A product to help you manage your energy costs\",\r\n \"logoUri\": \"https://mocksoftware/myenergyapp/img/logo.png\",\r\n \"sectorIdentifierUri\": null,\r\n \"clientUri\": \"https://mocksoftware/myenergyapp\",\r\n \"tosUri\": \"https://mocksoftware/myenergyapp/terms\",\r\n \"policyUri\": \"https://mocksoftware/myenergyapp/policy\",\r\n \"recipientBaseUri\": \"https://mock-data-recipient:9001\",\r\n \"revocationUri\": \"revocation\",\r\n \"redirectUris\": [\r\n \"consent/callback\",\r\n \"consent/callback2\"\r\n ],\r\n \"jwksUri\": \"jwks\",\r\n \"scope\": \"openid profile bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read common:customer.basic:read common:customer.detail:read cdr:registration cdr-register:bank:read cdr-register:read\",\r\n \"status\": \"ACTIVE\",\r\n \"certificates\": [\r\n {\r\n \"commonName\": \"MockDataRecipient\",\r\n \"thumbprint\": \"f0e5146a51f16e236844cf0353d791f11865e405\"\r\n }\r\n ]\r\n }\r\n ]\r\n }\r\n ]\r\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://localhost:7006/admin/metadata/data-recipients", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7006", - "path": [ - "admin", - "metadata", - "data-recipients" - ] - } - }, - "response": [] - }, - { - "name": "Admin API - Add or Update Data Holder", - "request": { - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "{{admin_api_access_token}}", - "type": "string" - } - ] - }, - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\r\n \"dataHolderBrandId\": \"bb03be60-5c46-422e-a27e-aefa0015078d\",\r\n \"brandName\": \"Luna\",\r\n \"industries\": [\r\n \"banking\"\r\n ],\r\n \"logoUri\": \"https://lunabrand/img/logo.png\",\r\n \"status\": \"ACTIVE\",\r\n \"endpointDetail\": {\r\n \"version\": \"v1\",\r\n \"publicBaseUri\": \"https://publicapi.lunabank\",\r\n \"resourceBaseUri\": \"https://rb-api.lunabank\",\r\n \"infosecBaseUri\": \"https://isb-api.lunabank\",\r\n \"extensionBaseUri\": \"https://eb-api.lunabank\",\r\n \"websiteUri\": \"https://ws-api.lunabank\"\r\n },\r\n \"authDetails\": {\r\n \"registerUType\": \"SIGNED-JWT\",\r\n \"jwksEndpoint\": \"https://idp.lunabank/jwks\"\r\n },\r\n \"legalEntity\": {\r\n \"legalEntityId\": \"667407fc-dc7e-4be5-8795-5189240bcbca\",\r\n \"legalEntityName\": \"Luna Bank\",\r\n \"logoUri\": \"https://lunabank/img/logo.png\",\r\n \"registrationNumber\": \"20032023\",\r\n \"registrationDate\": \"2023-05-22\",\r\n \"registeredCountry\": \"AU\",\r\n \"abn\": \"12345678901\",\r\n \"acn\": \"345678901\",\r\n \"arbn\": \"345678901\",\r\n \"anzsicDivision\": \"123\",\r\n \"organisationType\": \"OTHER\",\r\n \"status\": \"ACTIVE\"\r\n }\r\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "https://localhost:7006/admin/metadata/data-holders", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7006", - "path": [ - "admin", - "metadata", - "data-holders" - ] - } - }, - "response": [] - }, - { - "name": "Admin API - Get Mock DR JWKS (Loopback)", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://localhost:7006/loopback/MockDataRecipientJwks", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7006", - "path": [ - "loopback", - "MockDataRecipientJwks" - ] - } - }, - "response": [] - }, - { - "name": "Admin API - Get Mock DR Client Assertion (Loopback)", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "https://localhost:7006/loopback/MockDataRecipientClientAssertion?iss=6F7A1B8E-8799-48A8-9011-E3920391F713", - "protocol": "https", - "host": [ - "localhost" - ], - "port": "7006", - "path": [ - "loopback", - "MockDataRecipientClientAssertion" - ], - "query": [ - { - "key": "iss", - "value": "6F7A1B8E-8799-48A8-9011-E3920391F713" - } - ] - } - }, - "response": [] - }, - { - "name": "Admin API - Get Access Token from Azure AD", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Body matches string\", () => {\r", - " pm.expect(pm.response.text()).to.include(\"access_token\");\r", - "});\r", - "\r", - "var body = JSON.parse(responseBody);\r", - "pm.globals.set(\"admin_api_access_token\", body.access_token);" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "urlencoded", - "urlencoded": [ - { - "key": "client_id", - "value": "{{client_id}}", - "type": "default" - }, - { - "key": "scope", - "value": "api://api-cts-mock-register-dev-api/.default", - "type": "default" - }, - { - "key": "client_secret", - "value": "{{client_secret}}", - "type": "default" - }, - { - "key": "grant_type", - "value": "client_credentials", - "type": "default" - } - ] - }, - "url": { - "raw": "https://login.microsoftonline.com/{{tenantid}}/oauth2/v2.0/token", - "protocol": "https", - "host": [ - "login", - "microsoftonline", - "com" - ], - "path": [ - "{{tenantid}}", - "oauth2", - "v2.0", - "token" - ] - } - }, - "response": [] - } - ], - "auth": { - "type": "bearer", - "bearer": [ - { - "key": "token", - "value": "eyJhbGciOiJQUzI1NiIsImtpZCI6IkFBMjRGMTg1RUUzRjY3NTA0ODA4RkM0RTI2QjEzNUI5OUU2M0JEQTkiLCJ0eXAiOiJhdCtqd3QiLCJ4NXQiOiJxaVR4aGU0X1oxQklDUHhPSnJFMXVaNWp2YWsifQ.eyJuYmYiOjE2NDkyMTg4NjksImV4cCI6MTY0OTIxOTE2OSwiaXNzIjoiaHR0cHM6Ly9sb2NhbGhvc3Q6NzAwMC9pZHAiLCJhdWQiOiJjZHItcmVnaXN0ZXIiLCJjbGllbnRfaWQiOiI2ZjdhMWI4ZS04Nzk5LTQ4YTgtOTAxMS1lMzkyMDM5MWY3MTMiLCJqdGkiOiJEMEUzQjhBQTJDOUYwRDE2Q0EyQTFENzQ5MUE1NEY4OCIsImlhdCI6MTY0OTIxODg2OSwiY25mIjp7Ing1dCNTMjU2IjoiNThENzZGN0E2MUNENzI2REExQzU0RjY4OThFOEU2OUVBNEM4ODA2MCJ9LCJzY29wZSI6WyJjZHItcmVnaXN0ZXI6YmFuazpyZWFkIl19.MlHlUYoYouMc-7sOTW2yomb3qMzQOYCjZUpPi5Vo_ewZhBG9qQRjBmfPGAQHkCPl2F0WUO3jMbz5rOzmli3djzTYKvH-6D79joglrsv3EbY4t7T19AprMpibmN9Vyj4CbfCqoe3ayqxqrk3ljb6xTMgPiuKwKe2xyLL6tymUp-XFPC6boz_vCqbSG6-t2aJRvPPP6KSVaoBVUeDGFerXvECrEXUeoY7oWmNUrTzZiCPQFBncGFcvURkKEKdk8FnVYofY9cvsC-ff982zdOt8eNkB8zDF1wWB_N-eBHJgOaoJiik242tX50qTV-ndEPmm3XbOgUmzb_6LROdzaI7M3A", - "type": "string" - } - ] - }, - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ], - "variable": [ - { - "key": "{{access_token}}", - "value": "", - "type": "default" - } - ] -} \ No newline at end of file diff --git a/Postman/postman-client-certificate-step1.png b/Postman/postman-client-certificate-step1.png deleted file mode 100644 index 0160e8fc680017599b48d587b6983c81b33442ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9284 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 diff --git a/Postman/postman-client-certificate-step2.png b/Postman/postman-client-certificate-step2.png deleted file mode 100644 index 8b29bd5fded9ec101f2d35e0c1adce5c1f4ae9cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25486 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 diff --git a/Postman/postman-client-certificate-step3.png b/Postman/postman-client-certificate-step3.png deleted file mode 100644 index cec35608cedd7a502d49922b2af78cb9b72993b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23711 zcmdqJbySuAw=KMBq)R|rLQs&FZcq?uC8ZlArMpWMP*7S*KtVPjN{4`oN(utfAR-{$ zxi@!hzrWu&=Z|~Gx#!+@jQ1Tc19b?`e&Q2r%{Av-PlAq?Dk%{I5dwiAy{V?6hd^Kt zArM%;g!u52*S$1b@Xt99HDfOXg6sq457tv&GDi3zf%i?#>jVpUL;V9^Kf{ptK-$m!2|vRlaMB{sMMt3O{|{Tf5hPSHQPbi^5~B zvfPQozyChgE#8XJ#KTJ=f~Bf}k?+TQnn{w+1HDgwka1_3ZMgL!7ujmgseaUuxV)Zq ztJ+_nxapj#k2rRl%gXAc{FO4J+Fz^-d7iDTgi|BQWp&e6^koD81XzSPczSNt{ZQQh z)fX3!`I-)5zl4uYay^Su6s3f(Z;mMc2G%=q?QbctB{>ML6)Pq1It)p%!&jkK&&Khl zn5@w=yvueJ8r{!T`aUa;?$x-l{{3J>@rUy~fhqn-dE|T(>dw0oCxx%Yh{QcDR zT{FawW8an66N)PEwW~FD?3Hl@i2g|?b;bF%g!W^VRDU@*ubHs!Af1j76 zBmr|Jc56XR%mFl%QGZVnxcJWEUGl=UxbxC|F-K;sk8a=ym^UL3wn)2_?gh5!aMa|D zweoS~!7um4ZvkTwcE-x-PW1SQ)uU#y0;`2Z-i)j)C9&-5?@aIzG(>oW7ZHf{lEkNZ zm27^zal6Cbn;9#G-yGlX$UJ=XsJ-5aEmuqVL*&8d=h3L1SUck%t&(!-%iO}Y{%>(Ee^FT7uD?jBUzl@zB5YEoAi5NF=IprNHz zIOftJs;PE4f@StZj%xm#Belt)wr*NPm#wzazU`r(wM_NK&JtFx7Pk?3Wd3xhTc^nc zZFpM%X<&QaO8-dp?gCYFI?LO0q)LQ$%Jt#Kh+n#xIE{fGfeens7)o?voQrq0xwsNl6I;aU4zN&>1na z*ExDYJaTm-oF=6;D>jYlY20~)!rcDEYvHPc9i%j8{Tg0-m0W@H5Pn<1VJrE);m8uF zj3#M1{!;VGB6zfk-TbmEOkEMk6&~6|3ZV#%OE}$c*qXK-bFX72u}l4yla)e?ta6KN zid@2D8JsL~4Pew7mSA1FaK!rWxcs?+rdfiLh%wIs3 zUi@K1c!<3{eqv&x;wCdrG=+z_>5qOFwabs2pL|$Vtr_q^y%qnvU-qkI^L@pqsL5YM z*z{;{r{09AzSCA_?c{VW9xrn_ST5Oi+f~pt%l`08iLj@)ckL?^D*+|l=c%6dU|akP zf7Y-($SH)duInOjeZ)|WjmB z@lAn2;x|@&BeE#Cjb!HF+p#9`NZI*d#`?P?7Pon5@Uibw(sk1M@QG?hS$<`tcb*%*vE7W4DoO!@J|bM8IoN znU5+Xy{>CHDVWl~_-)xcG9t{KkkU5#6d7kuG~*M|rFACMcBHLasehDnM`{JrL}$fxk(UJ_Jyg2PueXz#A`xq zD;?$nSQyGlUtT_ctdb&mAST=FzlF_yDTQA9{TseRGuE=Q=SD%8&CQc#b#1T{pNpl` zhPY(!9P`mcz<1|sY29`R#Y`2nFYKY4{@IFxEncll*46$$xv0O`QVp?c#qDV0D6AWh zvGZG2m{jGBDL$%0lJ`*Q@z7Yx3G2SX6^UmPvlgTJyE$(c;WH*>EzH*kmzwgQ`L0Y{ zP1{IMb}a}Ujf+o+$Q14qXA%v!(Wd(hG$OsT9a6L{> zRQEYmG;*>Rn65WX#X4m{RL4fZa{WY#(-^whDn&j~o!fMQiTI=Rb)E;p+dgZ)LH+&R zU%wKObSemE%DgIher_!Fr9ru)CKDw+6i#X!tdXK zg>N+}Xi5JGO)PJ%wt<>kpK>6V&T z^C3IduHl&d=))Ae zbf*AD4D#SeR?Pi|;H90|)thPZ0!99%gqlMTSdKz3e0@55>!BT9_Zop2aULJj@`Ea` zkVXAPAA-!4%uR-27ct!cqxQ+E24YGbKXX5}pIrx;V=FcFUd$y#m; z6AA){!Fz4*yPrqT>_xeDY_08JMobF*$cp|T=xjV{tBsle@TqJ<98c8&NzCmZo~_#0*x)2|pF3R;I1~P1el_NYpN&-*64lEv zGCKP0so9HA`SZ>F2UajOC+RGqTj^~I8y10T54o%MEk>%)ek<{3T1*Kl>@IOl%RlMD zwi3-yf@SjB<27f;B!4!_>z_9y!5MYJw69-z+OZJkC%IH^F`>pu<&R!j^tYFn-rSc+ zigK$<+;dp*-_x%2SRUkhjXt^}c9y64_UzT8?;E8sPbd0}Ad&uCPC&fs;M zTUc}z-%6)Q?jk_1`!*@3&r9@8platOWG|!TPyEp{&pA$1jd?ur5>&89D=oTAyhzj0 zy<9JyJv7Lr_b1l&H`nO5Bqd4p)J4y3QIE-g?LfbKv~t$H7qK`|IqrX&$7-{~D&~1K zV;*}#?&iS~u+w0H+R>M($-}eIGNYrWrk+DHHMUaby+ZZLLQvl`qsdk>+_0=GuA7{fiTFkr3&(K6uVe3kx zJ`zbdXKg2Qo(qlq2Ce4pI~MX?2W@Al%^LRN5A&aFMA6MyM*>vithkDu^YTH>_d<%s zCpH$3^MB2C_aB%Y}4 zTyv?LFuI4dI`!+aGN%1B>>0m-7m?Mp45P-pKYY`D1{SN()&_S+S0Jo)*NKdbjQ2m< zm^*9Qf?{u_^UrzC3yGmONME*9#=7F|AMv$Hj`)Tm4bGg;_jwVlg*nfM1)s>LsN*H) zee@}HhZUK7RvEQ5!`!t}F=}azIUK+ z^z7PO@+IpU^rr{rB5MIGDjEu!q|Xu8G&@^@4m#Wqd3kvOvC+q3UAD{ce5}{;h7W3# z`5T+23szjOXQV%$05FOtHhLBl*pl>$yd-}`N@GanME``)%uBdglRRnO(%G4)b)!>M z6XD+4D<^ufINFNdLp(B(p2GIRbD02a*n8gzZacmf(>Zz*`C$Qf_Z;(Y4(c`Es)}0I zBDBu{`FJ$#ZfEu)L}1g=>-_0aGkdxrcVwTs8g%LZsAaCjAxxs=LhsXtg<1Rwtdi}E z6}cY-h+e_NQ&vn~M^U-o9;mA8mMP2wY(4^QYe z%>%6%kHg6CCcU$7hr~pWuVPBVRO)as^~-zDNI3?dRr0AM5p<3OBUv=XXItSEJu)Wh zzSyXR1v?1Ru1d-%Pv#}O{+pMp-@e5~2)fZbie+z#wOExClA<&!UPpH``m8VK-Gl0Z zJ~rZ$vj_L=i!aYVB+>~8Uc2^grQv?V!`)%FM2lB>WEX!61GwI2iBiQAAMG- zpq)HV?Fj%eKdJn)X?HYMp6kS>#ZkN0<@1fmI6GzJN{3HW|LAdz58u_R?e$ic_wQ4A zvG%u5dC#55{a#$W*hCehgaxCyU4@NM9u+TZ2_02^bw^1!Q$;Q>?&$M}cp*XMaaH5oGI(dh&8{9)mn#i>?m8WrRP$YvUv znu^SZx<_xYXAZDdQO3JXa?e^#iR28$2`cqX)H{DH2sviO{vwamd!jqKH8dDJuJYRi zf0=x6PEuqw4yjV~P2t!%@NjRT_npn3sLS8mka3F0&DmRg0bsvpPh+4fD|W=)4O>4sl%qaPUl-E7{XXhU(LdBqVDRpkK$fGG- zy_kyMQ2m1Wk7GOiz8y9Xa{1e=z4>~t-ow%vf9a)tcKQ^mM+)o%xmLd`AsluTmTqml zHK{do?}L^Lpfo}NIQtkyKt3x$CaS5-{`h?dH}PDB3#u#$HW&<4(^r0o1kVOj8lH{m zM+pQ`y{mN2IPvFa>aIGBy8h6NA*zt)aI8O+w$=Byfd}%5Y{R{fpm&D4H1S58AJr3h zjnLLdOS%4pC^UY!K{?*cK|%4`+1j((mBiIAvi-_1TYx4Zx=_t0Y##QS_G3yNZz|E z^{ACbj>>s%+1PW0)--S}O(BrZ2BI`oeO^M@!Jp)THNz zC~PEuZhuQ<*pZkKf9|szg@(JUYrBsbP2xvE9lodPb0;s-KAZNFxF%3w-@SV`E@&ou zk)iyNC8{#&AUSX?li}OM^eu8=6$C6pZ6!8c7EfY__ikREYuT-8KHV?m3=(eE zVGt+DC`o`wIJhkOF#FT1VYkwu<=I;b+8v?xHUR+_cFsIQ4;3<8FR&xj9=4J4r}3(1 z#7v;at&S^KM&q!<3weUb0vSIFlJK1^3qL>oNDVZL<)kRS@QTB-U>DjrR0|S7)6|X9 zp$OLrifXpmHG+dT+ywiN;@f&@_X&`(*7PsWRTz|8-MIEx&C<<{Z2Fe_EHX3x97F-! z*YncYBd&`qSI^^S7VBMR+H5d%J@BNgW)p&<_6AE4N+WCM)HSwu%A0_IhozHw7ab51 zl;=)Pa%^MgG7-D_^)af(Fz8(xE!k^!Z_X4lf9are6jTiGEo=J6Vp8sUTUgol#uGr70kY$VRObO&s{O| zHryy>!M%u?%y}E0sn}Y1@5Y(z{r!a8jrR7W#LUbKnAJJuR%B4#zSGRn`_hv_Dc&P| zy^qAcSnph$_phC!h#t$C(8VF;I_^uc`+4&cf~=W}37?*FnvPEGNH7eWBY37S7XqU9 z8zNn2aH%g9n|N$R|9MJgT<&}|+r)AJ%P0Ovq$Fiit@0M9C}N-ql8eR&o~UughML8Y(?wqcRb_FfTkzO-Q2S@FZiiR~n#fzYCZ z-|MCunjVt^sp~B$J?XC}q5%kItzTJATu6nsvZ7=CYch{FUNa8qnWQ`pyp3cFq5|$@ z^=@fE#zD*lY)xWqx3w^tu)V>cZ``~2>+8LB<}(M?+k0ONTJd;2@zhN(e8x7uM>~>N z5rNjDdK??PRP-x7$gS!NZJBi4Y$C;?JKN!ZdH_Y@bbO(v7W*g(Rca zCOk*-sJlD`A>`K7)IgBDzNJMu=0Xd^-$iTd(bhMv(k@MM1)ZU8ao2LEO9=WWn(PA? zF$e`J)R}oCOrJS<(x|O)g2p9k{`nWZ!J;@jk1veu;V4#ApeAFp^r9}LinUaYnC?fK zY^=RooY=$p*~wC_ZmMW4LpeQ85KchOVi^*`tcRcZIn*g-UcySuZ}E8F*}d)3c|y6; zhU|t2A(F+9p^F#q^(tA*s977`8+l(Xyw`pwBX{JI*2c3oBst3o%9lM>aAJJfyW?TS z>P^w?UXT4(Epmx^>O7uYlV`}4*!~!o|;Qd`%3Pmg&o_vWql87*alm`dE67 zCP86974;+~H)Oy?tl-0W!i$2wP9$%5JLjhZ)*r6o1cos!msp-*%}c2~VQAmLie>Ur?c%)SYfp*u_@fnbte9MoztH=l zqgjeyzD6fyCf^thx|fCDa7DM#qT}>b=3zE|S#sH2BlUbjRcNI}<2NH$g}i}+q;ih* zBB$~9mfwbQX6kp|L=Bdf@G?J*$v?j?EO{L4JSnQv%-Fmrc$>3t zDp&c{9io*2FL5umFbZ3vAf&Rt5V_)ryw*AR2%VM~0?`yo`5;+{MVXIBw^B!rHF;WHX*{bcympY7&(f0HQ}pI;Gll^&h& z#9n;NGZAFkrE%wEzw`2%@?|@n+pS*64a($=cR2+%vPmB160UKwmySig{&LHm%IWOf zPn{vPe{zL35hs;!HE@Ha%QCH1qLPa$$XuZRP)1=Rb`Uk_Nn&_z)vxNhEIs*7tKVF7 zbKd-qSlN56eJ_)1wdKz*x2T#O2ubvJjarTSBJ1XH`#5xK4_*sA|9cOex+{{a$Ey5` zgo`mlz8N+hK4wPu42*<54E86qbyuRuPmUy3`iIPoI5fNFm?a+pk=w#yt$1$4NdwEz z2(`@C-~CWUg$@g&o)p@6PcPETB`eB(YvS8>VZqSKDjU-OT?yttagVI77ulum<=OT% z;w^U4Rn)j)QGP2B68T55(ap%*Z$cZ_M#V3o^lLGP;8ZHB?2-{hL4?k+lg7vs@zaug zJ8XZM)c;EP`A?VqKNXMuUpqxe?29y@GarPXU__Z?E!hlTGdc)KN5L%eM_;t7T3gZk z4VrW@(s)1mU4e+{*(2fWmfDs=A=?&r^wa^vL5$k2+ku>$(z1k=y80!;$K)A6b`qv8 zEW~U1yQ;qf@l!`HRkyY#4Wg)s{D@S^2KOiWhJcKN%RtG7Tvw?P*nGCH)yQi^wEOhDD`h&CV-;Wk%RR;ot!(ZZZf zRMREm+X3!FQLF1@2HMtbYpb2PU9;C`++po{`&SQ{Jf7LBKK&?sU)&2A``CCqtj}Nf z&SUWE{f5c+D|UvkW1y_&LL&SbUnFF_-`y1jc#p_8uT=hk_ucb6+yy+)WG@pS*|ls2 zMEok_ev_L>35F=T56SW0S4De__(C9|$ z1Y95}fCqRqj1M>u3Th$+>Q3@0+9OY=C0+BgRjyCzWli`!>e3Z`1HmC1fD-)tk{1O2E{B z(#D?MyKdfJ>pE7hNigMp!YqP9J?pji+bbw>nv<(~ephwez4KW5YbXco`kjUE!b4El z1Kk)VEl)uYR2WE{(O9|`r9cR4NV%q*iJ})oMnu)&cu!dkgR(TpnkhGeh$k} z^{TkAYxgQz-R`%}j{m>C0Eb%*qyLQEB8=S<79gZ;_4}i@PwZrh(_Ric^MsgmtgiAQ z*dD9lCNFa#0AYOmxtNFuhtYtlmgc%5RFMXut&tsT9mv;jS8sksPM-hl?w$(jbj?`w z(Lgki4o!*!--E}2!g3#NsizOU3F_k}%KRazlOy3{n1cJkcByJzYIJyl_W9 z28ugRJRo#Baytt4@2>xzonpjHf}&%d z&(pOQ@2aG9PO zTCZdEKU~*QVz;YzMUAnnPc;!-Ep8XpjIURCb!Xg5vS|FOHFjd2K;fM$P!Pc{K*0vx zI;r`VrF_kti-aIu&*K#!&-l7KM(XYgvf@{!ZfgqG&nfBagR6lwP25EwgmR0`Uxj=w zD6TinGX-ToDX8@;P{C9KrKtVU$h{b(2Uv4PmnwuXs zG&Fc1W(3z`iMu>8jIc>XEPVel9QM#Dxqn?zD)&Z(LDUL}OT;m^3v^tFuV_S!%GVk?N6 z6AeA=WVN=l!z~vjMr^4W%V$AimSpG_&1RfiO?cx|EvHa1FkaT*f;cDt)T65tJ$Jo2)|0igl}D=Ub;|pD*MEouM4+2`b(SLmsF?EG_4fa7<3=9e5mGjW>-(Go zK|2=gftB$Y2y1tAkeZAiQ;+U(M*K8bp%$N{x${Q~DNueL6N`=4n%WOHijN`)fzXM2YWD&?~qz=_!FZgRc#oAt~+2fkr$J#l$n$X@Y)c zO6J1k1V?fFA#Z-6aut>LbNzU5HkOlzOOF2?m%{S*)ttbD+d`OuZd!+E*tSx1=L+Zs z1T22yW_%$H-oF+^1Sfhoj{P@hu}+clyGK?bzIrG}`8rT`&z-q}uw`N*^^BG1rOay( zm^lO-=tq5`eAN?f6h+)9@_gNW&?J{^Rwx2uGr-#nv`65q#hD0yF-Fyp%j<&bJBQR^ z76m%W(NO^C;u*<35&hMxH@~xvVz6#-*x^xnJb%*dUX8j5*ZjKqc9wxo`OE9+S4)aNjr?Ep(zSo3SAkAHxa@s+kk}T65r4Xb+g@$tnJQcXi5nbR z+M}#TA34i%Pr~E1;_sP zD+uuLJc`k#9dLff*7T%}Pi>b)BE9XrU4=1Z<*bs6>D@6{>3`ASK){$H@E20Ku}#Z` zfK4HqQPS~D@+;`3iA+cCeDpCB&DI1X&Y2)Nc!G>+Vef(m46qPD5^(yo)1?aVW*j-< zgSPxObO_vQRR&iv$10h+t#o!SpIX`ezyvcqyBeYAt?j1+K5!vdolT!u$C=;JF-gYll(VG&|4-)~^zv$4N) zsJAV+gfr^1HQSD(VV(`Z5puL5TgqU5nfpQe(W&z-Z}efPhpYs$N$L%^Zsn*D5Q%_X zft)Yo!AZyjD@r}1+h*pphmhovnB+j1EBr>TfP6BBqcCyfj=&5&=FZLz4pwEFFd-+! z_x!zEq$(PgzP_~Np~r}Q5ox}2Fm5_OiJr9?k)=OwcouQ?mAnRb_gPsPxcxx6a#jcU zDgZW}f2%j=PUInF7?hv4zbh>u4Q>P23 zMYOeOl0PVnzF^wF6HcH1A^CtT5_W?B=$7MBu-XxubwL8fUm~t2@I}`1@YNlHGIy?#=a3A<3w!6-e(t&Kbtxg5B z72!q8Ec+jHaPPl=Y;j5PKw2yxPI3)^WjM4P?bm&3DEEm!nbfo#xHibxVBLhj zJANS$7-BMj1kKBuAyI2j`Az!gov3ASE%wWuxUg|7H}dzWD$?rsa^2Bq=HY3TKeVoI|Y(*Tdu=quue7QSr}qGT8v_M|9}7ip^J}?k1bQfIxsNM@SK_jz<%I| zH{BgNFYsVV^6TO6B_wRA9A;$cRol6O>Q}SUu+~+8n*5Z?tqqE=t)WtzRAI=(vHR+v z(cu}GQ^8|ekNV5;Vu3tmF$~)hYB<20N5RkAMZQU11cA+jw84~LW;CJx{m9BywacC1 z;|Hj^o8k2M__XSmtM>wl+54o6R5psd41ZU9RmHA;5e&Z!b=;VX_4>RdnD$=3ex0L8 zJR=}Y5a(;|*MWMhRk}4Awl&&5+s{%3UqNR#&p{2JrPtZzGQq<9nq{~T3yGj$BnkF= zlQ#igDp)~KR~ey)795RtC|3-A63Lyc)>N6=dwL4-kzXvVS&$&JH6(jDr$b{msv-S+ z5tQPK(cx0a*qeB468%SJdGkK;)3+C|WQ>TCuE#PaWvr7E4f!yymoSc0J6|TnaMzhv zKofNs{OxB#GN*AK)n;c%h8qLMhiUtP{?-i}hz}4P_BpSR^Fp1XoWLvShF?ssr+(PV zI&wMac^nX|Afe)SFCG5~Y`G@Lvsn)+7Rj?<>X%=itIT`iWR-xdtH8_}jP!29?S2y} z%|3tS?VS{3U#7)@8s8U{C051;f;ObnX?(8r1A6V2#bElnhzm##Bz`M{TOV*Cy%8Sc z;3r!f888rjoddWVx9mKFlDy z(h#*bzk`}H-@h*2R`{IekfpIfy}3i@If1VYrewF|&6Jiy6LvJInFl;c6_}nq#rMs- z1tIo+-TgWL#I?Kw39mHmmTZohmy2!s3w+MG zKa!L>TInG0R2?C>tt8}Zfz`gshk7;pm-cBWd|z+%(6n-9FIh(7+s1MGcSGgzYkwMA zroD9DaD&5vo!@tF)RQl7Da3ogtHU!#I`-=A_^CXH+1^F7uQnEo#u5pw9D%H9>*;+P zwx&hcV64kgS|wS1>N&dc57C_$86@Zoh5r?D)Ni(niX_8FRlN1ILJ-zXQ=hiC zg~5rQr6&Zojz%O70)Pilp>G&*-vho1lTL;*b=EH=O`Xd>dm3r?`@STI?-(CG2BYom z`G9$ofD35}#Zq^7H&}Y0B(6W$YDt}$^@~rVQp%Z841gT6Xa^7`*XK6o$q_mC1zW&1 z2=;U%Bct~nrNmImg836R8)V{3%?quEAKAgdDwRw2EVMBikPGCduM5J6_daGolR?y1 zAQbX8z=t@QMuj06D6rpf3rR{|z)h5eJOrKt2X6#Kc;}h#kpe@KdFjRp;2KCLRVEGk<2%RZJDhQ)+H>k0~GS8@j5wZ%bwqjFlXh$EYOIf2bpR8RQ$@j6&$3yOV%BND6(KQ-l%3QRNeEsxzp zVb&q{G894Jfb|V8cSmulpRfL!mGRsB^(ECT z!X5bQXbRv3I(K9;k~JJJLzf7~VOJ8dy2t1Ij^VXFF(?d}*x$2TB~01nIk1d-qQPt! z^>CNs4Yw+?EsP)<*74Gd923E-Ke6vt*6ml^er9%VqBiPviCw{+D^`D^UQs)xuHFP7 z11Q*IHaCr`5!oib_Z_+@rgEb&pl*#Vwb{M^d;lLJ$M16?^9_iFzv!vIwRqQg0LI-} z*Fb=QFGFq+aYJ>>RQ zyS(-DBeB|L-3kLtRlJCPCY#W=()ai`Hr>{@mA`?{sZ{EkdDwB2DSupbwGeRYI()Q# zy_8ej(F$`~Si`FN05r61$$n)f+gI%labePbWIUcoH2AGqPXhaR%|v1!VW@vzi4fy8oX7uTG1`e056v7J zmmb&WgdYv4z(tQ$-aa9rq~;ja#>C&j*4zB)VNH8$v|kUj#lvNiY_`*efD{(s(S_Wy`jXzehCkTQP59WiZO z_mk-X7W<{X#`AF1-6R|PW9-x?5xZ(F;wWYKi8tLi~McwByPxS4k)H}=Zjbomt z>K@`#o7I31kFLdv+O&XK0j=Oh5!R5X-_;s0Yj(f!t?WM7O3gdPg%%o& z8uKhB@AMZp=myo}3O4UN3nz||QX3X>r%3WqpM$WAmlT0ckM8V(65udg#moFiY0rhDrYO_b=U^|MFbrXh#^+&L)>Z#LC(v8mq#N#U)3d z16=z@Yf7*IgPer`wo|wHb~Hs4R^Gqal*F%{Kxao;mJd4v>$2vYxY7s)Vjx6@hK9iL z*wxaon6(%H5lb0ZnEgOn7*>-C{Hw(mbG7n*1cG@-yEPyZC?`TYzX3OT{5NARhjsD9 z@#WZKjK(99FkjyqJpZ)6O``(N6%rp1q+YWJ#X}goMAd6${o#UkbLgu=u7DVk`bB{d ztAA$zL?O>1djB=ZUV0Z=ScZZ=j{R--$>U3oN7*k_Aml3)t6%_HmT z_=e;~1mdZ>-I7#VePqu&l2b#p!blMJSgQYaFLj!Fu^?j$RF2T0>E*Y`?mpjiV@MRb zY<_cy97f*1_NZrX_7)(iy+G#FFo}doB{HbQ0QHQWKOAX&rAQdDjS`mWk2?As{cI50 zI_-?1W(Cv$JbSyzyU6jwi6cP~+1DB$Jej8s2!gnuAbK%GfxzW??<$z`q_Qi6{^C-f+14&t6g zn%e$5rQt_i8|A}jmx(Mm0NvnGO|E|Cymk3o=rGyLOu$q`-SS1)1F)j`+Ls&>VkqXA zBU4|xKQoiOkNVpHw)7&`Suj_P6XWa3Drv8E1-`zgmzke9r#|P$*>!>!Wmf=sJ;om} zqxs*-VAJpKgA`GMcVPwg6u1n3^sjwh8-)5Qo8Zh^#N{9GvDWiD^LaM$n*vBy{kBm3 zN0gO;w{gw}z~bw7Q@7X5Z2wcTYX9y9+)u(5E}&Cz>70ilIB(oO> zp~A-_V07q>1(Fpu!W?7%L)vwWa)za-?CD>yK z_>;T>fJlMQzo*_xfiMD68f@Tir*AK4WvA1J1^HQmYY?`4kLo3mH4j7e^??zvqIZ;W z%SZdjGKKS4V?)Ov5TBUlrgfTpZ57@x6hcDx|20Jap-G&fh}i2^9Bv2WMW`3O65Isv>)LYMtR5v<^jb<8wmhg|4&M*|B}PUs1Et5T*V~ly#weX2K?u}_h0_sl?Lw5>6Qa_UFzqqDY_CQ?_9 z{vBNOn$w=n^z9#mnmsS=Cx#4z{0o}vB@F@>&o2Yw)yb@{N86%qlfcN`n^ zLq~K;0VWS(NrZ=F4LzH1HpxLBCsg;MrlWVJE1&mpRqZ0}fGO^PPkxb7n#@VS9 z>B20$Mk4W_YTSGhxqRP<4ErfxH>Ron2x)QcnxO_PZsbbSh^|Fhr%9a-G@)dHrd!2w zH^|`Db=CaZJIY&H)urm8=9#>gV1Qm;9o~1b0};6|milxOy8QUlbsO(S&acY28Pl$k zGVU!%f$@m18+$gHMK44r#?F{$>T>&-ci=OD=y0bj4>9Jn^=Fu8Uks4l8D|tz=L(w! zvaEl_dIBw#d<9t4xkNm$pw3o1zaw%O8ry04i?vL-$3)& z%bN#Hd>0HT!o=4N-%GO-&h%3=W7+hDJ3`EII7Jv;X*tx&)tef~1`G{=B}U0=RLGNw zo3IzCVjUjK)hVH+bRQrR*hHn1aBTV%ektKLB5mM(0FSyz)t=yjMSz4izJ*SilWN(x zbqUkM4=b7z$(heXbf0x`VA6SAvQn(9p!LqdU2hrk;wCP~EZ<)tNjHi<&wM3_Xk>g* zT3VWHb`4VrjCaGt)V58;j_#j6Um(K_f>arPMC1Lo$l>AP*`t^SZ0q^z*~QgfK4@ut zBmPE5->2Wlah{>jU6nHNV}9A6R@Ao<8{)6=k+9ql3hVY{@DcDYAZx>G`lhQ;h|^50 z%bXXpdx5FXuQ`*!)c(m{?OXi|_kpU7|9G00I{E}U%;4n_j8OcH9LXF>Mjc0N(%5@9`(vDqMerm(=tM5i}2)c9)^cF>gEU@bHX zJs$qP zvQG@2l3P!R^_-_Jmgc&%ZU`$Jm=3bMEd<1}+pJnG1Hyd|=E)8&-K3(Wr9BR;Ao~f8 zaHzQ+aGcQpa*&;D%NNL8W&AQQ-suHm~k zx)~irbo6x7jW}V65W3o;13*W;QoBU>J^fEcvuMM{Pk2Fu-YXjLv4J5k*+*{^#j?C{ zpo1wbT3(7!maN?JQDJ|auWI&>jQRX2+c{TLV)N0Bdyv2P-r|{!QZgok2KYTaNiIv3k9K01 zV~X@U1WgrzPR3ZP)6kP9S9-5cH{H7vB$Ml=-Q2EGw$wL0EyxQAG4ATR7X-#aL6Xjm zZ24k3>~+6Y3?_VTn8BO#=<9B|?{ws@;_=w1p=Yqxy_CN+7+LJH*B{YXeMvqJKM}t_ zcb&B6t1;G|p#-broF|;GHbS=zmnFo_B+o5YFJN9WVa^PnC}S+qw#k>PXzWU~!qB%# z&iV5iLzZ9OkX%#|tQA?)COQ(Q3Vh6ng~{_Pad4`YY1b#1doh=*4WNLZQtl=E{bc-0 zZIXY$LWuQ0??U-Q-TBWuR`TfosZftU{PQl9@7zfuA$y2YAW6`IOQ5auH;AB+aMrgG~~q{ zLBk%!idNMI)7W=zxt|-gYd{(4-cC+*$^xHc`#jiJ%_kfTkHW>6F}k4C<*wrWfwycelVIl3 z)EmAG-b?mjVnIu27+7$gLMTE2B}ff+ARsUG^~rO?1Rx|2h^`H+eZO%H44ullX{{qT zhuma4dA%H795}9bh*{jlvgrfw5h7+?11OX{9-1@oRIU|xm*N^fv!ciURrT<4IA0F?nYFet&G-hFB;~b z8YxOJ#g>&}oFDK>9-2tk34fiS@V&EY&`5r96UKG6pFXoIFesnfI2)a@+09F4r`hhu z0V~7$Oj|O{b!?dELp4t9i@2a-g;VIDy046cwIs=-9m1FR#e7e=I0h2hL36qzXYVz_j2pGBW-+ z%wvo{OOy!D9kl|b^6?xYdl-GhyhOd<2Ft3&1iZtdLp$vFc66uJnQVdo zjP&R&K_&Ukx`HV;z;qFCmj$gwpxYJ>En9kfi~3s(J6{6>2@i+5$HRl{->9g#uCN38 zKhjrN?k0ajx4FuMp3;NOkAfL%A(zZ;l`hov zlr!U{qEZ=oB>wx0dANkAC=Ko;TotIEV>{+8f2O}s<`UwpeEVaYi3)6R0I5gb_=OzM zQKXx}%NBY$>BCc8A}_ojjAAOP`6d-$Ab|mbIY~K@h=ZkW@?TGO97}8660q&0B)D6>g(f=@1x$YQT+!_1Q!k%0K=2lzr8cT7-Q;@#1LfW zv+;qT1Nvxf%@qL{8Om{>?<`w~RmD=(u5`(Kao>b79Pe4a7YU58Y>z!d_^ygEP7Ymo^@Uq^5I&;Stc(^iG)Jz#0A zRoK5F=Kp#>KNjkJ0I8p+KeKzuMvX_A2+D$6<{PbGZ>kd>C%aTqL~VdeSRHfp74Puv z7GcOK5R-kb#e5&WvuUcYKi9}#_>BkJLPL!Ka$aZ8Quz5`MtC5Xg)tcmapmCD^5;8Q zHr!wC3zUy;6qH>7%=P=tg|}%ij~}ej!N3rK>wQQxAIH|+K4|;`EgfCd|ET25!=c>U zI6juF#dMG*Tbht1M3N;-lT;|uBC;IB#L!~NzAq;&ma-&E6iJMoXl4$PYA`g_SYj;2 z*d5Er{@&Ah&w0;v&UL-l`~K(RddBbhJ_Bfs%F4+(mZZIXZcTiM zFTVxtc;ZsK*rSkfXqkrcZ>3wUQzE4$Um^`S;xz zCDc{~Y`KZ889Vu4su_GiO`i#fz;K%zMZf&Qy}5Y*n2VLd1BVT$Eg0u*uY6pa;n_i& z@zAbTKm6dTk+dNonUBkIREuyRnFug1=Fr;5inM=be+g&y9p zkdDb^REge2cwQWXyCL8I-pa*VnvdDw{!-y16n~U!7o_#e*|8Ut+~!T5T7p{Z&ai%4 ze%rDz%1Yr|EH;Qh?d?^T4v3SQkV7I}_!2`a~JOXmjO800Be|n$73}(1W zkGVB1bS*yQoPF}>5qA&W81ReDJmd^~&7VkK`srj6`(BjeYA<#mcQXyinl-xX`Yu*? z(%h-6ED3v1xB_Ahaweh6-%?w~$Aqxq5KI6_&+3NSGgjG@v_rPk+R^;=lEGcu=d;e^ zS@elV;a#Vj;N9T`+nnxT&$-Aap{#1++$%ay69gX(yrdT+{Ak$-X%g97gMeLp6b7l% zvoAPyTA24er={GJdr@0jT;1H{yHvRGEv8&7z(3aeG^=aYHvzhJ_%nhSW)v88w<;`C zly_xTwA1*&g%qKnjh%OlPh}IS3cXCa)%HRoaCw2c0rTM-SB|-wxsEpnZe~#hR4>x1S9*G-u7er`3hlmzsG&m5?t4!hvppF8$0OGOiDVl^D zWRSgPh`4<2iL&VQQ?5w7$kDt`y69P12-`4u4Ln;S9G^dbj&MpKq`aA&oaPnXd2i=x z$;@h&*MadY=P98p^EGpUc4@s5Cng~%yaCuP-eNdqsH|nkd{xa04zY`FLo4lwgm=fg zK+x7IZAJClX8Yy?seEM;(=8L0886h*FEMebTUJK9*u2@y2Hk?|x$=->?^pYvDn?P2 zLjWWb3XkEixs{uon5t}YeYb9-MBX4FY25eZiO#syk1BPl>Zq3GT@ z{=R*naaQc>fkrD!_{UWno_uNv(f@6KE7-ln1U4_TLSsN-QQ;+_p!HkKrj|!$oWI?C z<$5RyWk~gbr?xf54Js9I$;Lr$GC_jQXtbGNwj@Oif57gsh!MI!Gp!etLH{0nA8ZIZ zhQwjwMiL5oL3RD-oLys(rFguA5@}u+rt8t0<b@nYEFqbU*OJ(1_2pIuW|E;cy>Lvmn0uIQ_1O1>V?I~)2@^t*6C z%891~qp#zti8x3>0lYG&wLuNV{?rjF)9@zp1e240_>s}Vl>7-l-^1#V)jNgmk15j^ zoj=wp`kTHJ2x>I#ZdUrw?AtpFYccVHNzDBCSj}NTPmkq!WQ2WLV_@9iva_t49`wop z1{=II3li3XFj2$V^s|~Xk7(%qD90`QQir2{OAp;O@R67?KGvzDaEYp>t{(Ybk4V-G z*(=H3x?ar-(e)>g2}XRR*&fM!{j9@PuXTM?0^-p!NC~3y5kl=!wXX_2BP}gViBzx9 z#yn=V?$US!SQkjz;0RXr8oJUrlg_u=(vhYfaF@AMe0sE+D;&e{n4miTl`}*!MldA- zsK36xl(;)Q%(Y_OC#CF1Eh0Y0PHQVZ;Mq@APumQVgg1zypTSUB<89Dy=ovkegAs%N z9>8+zyid!m;lNs_)+@tgmo0E5mam@|8x9QzfZ;ZGCXT)>r;RH0*FU zcupd*gXb5V4{2F{Il1I4yL4?|mmSq-dvGs*dvQUruvox7`cY>uXUB(^XO+Kx{pvic z)7@WMR$IqKDo=n2KH+x&>WlubRd3V0LTk1;wQG%GSxW0qEy+`&kRgf<6$uknc!!_? z&%lP`9#lt)-5%UjrrS;amB6I{yf$mDvUIe4yE}!vUysZiuyl{)9vDc#@%6?`x5)!? zh(g8^4&#QjpvpdSPN1l$NRKuGY64=?Q0h?23f|`faWpQD=SDQeB0Z$vaPTq_!`VKc zWMrb>>(f;^KUqpeC)rP5J2bsNo2a!|%UB%_{)kO5vOJxxzu>R3%=}z>vm5y>6nS0y z3VA6ik>V+d_3!FkJI5MvB|zTWvu}vzhxhM#8)wdTcghq1?8c*8ow`gt9@j4O4>|iE zVLsYr=ZAzWg#SBqaGLXi@;{M;%DM5u#t^-5%iE52ZS5Djw`1Djg1Uo6+l@*ij-W?l z=y91kFXq~F(B3?cdavcb!}Y|0WDk>jmE125phq?uCEX-#hA!X)xh=dl$g(-hF8UyGW&Fv(aOO?hAr=1y9VjQ==Wj~d zh%nxq6JY|W`RE7#R{8j(_X~tcj#66=TTWzgc*)9xWSOvB*7N0In%6$qFu5w4O||xY zWglXC1mQZhwgvMmP0qCq288_O&#HJ^$*$+-UnVMX%nNX34bd2?=-+-bHs94#mQBUj zGm9m5PU3ApoMrzHAo*j5qRj)??B160d_55+zC}r(_F%=*{CCgAj zH{#s+bC88XIAldYBDJun0VAoP+9{ZF`sMlXDo>W1=c)*aFjM8iD`MPDT|UsV5MpW{ zhJ{#jBA|Kzc!iF5{#+(do%fK^Yg;v-?MIk;a;?Q>xrvbtyGB>iu77|zFwN;iUbNAb zUc0&tAt0)+gvVE7!4bGYZbUMo-_i=$Zq1QOd>(!B8lD%qE;&6(+7RB}g$oV3HICN(gdG zID3jdMdZo@)vCORLhABFt9R$H~l_Mg@KG1sX# z?%~akH+FT2JV_8-Q;O{#VGb?!7I&>^J3?8H-&P~;FcLhFtaVzE6&a?Xr!cmZx#AVXgY_JO$v%KAYTG033~mp8OKuYE2NEtQ!a zm;jVumyEdJhA$|^z^&FUvLvoa3-Fwqs&R!6tktC2`OqB)}F22 zc6(wYG^3im9${Y>2p);b&ipq_fH3{soGA zBvmxN89Gv-)Y7me4sQPX1!I{+1AsR!7R>VrpD59V3}SBFX!Bp7Dz7r#Z-ywfw%Udx z^sGmn8d9lTBgl&(SZdpU%g1lc#!Us#JDj}Pb9YC4zMZOOPb2{67aa7{((L%91ym-6` zZ@zj0{?mfkPTRE4vSAr}4DMu;HM#Z<&Gfb<5r0G*@9Av}-=QA%NLeO$&D{Bqz!IYu^y55zh4w95b0@~86p zH-oV}AKiQZ_uO-z=eg%R=lLFUeCO-yv%J^W>-~9$K2=wwqGYBdAt9ksdLpk$LP8n{ zKC~2M;7L+vmmc`_kJA%fR}vEHUuPfExO>zr;32u2lGOg&OZ%KDlb2GbQdBo{~jsDuAATN_)4d^ zu@+TRMf!-=X$D4r^6)V|ZFGgltG3j}TACeQ9lg=hq-Jv`S8)moTH2bv+Gdl9kQt7n zX}0yTjM0y&FK!?Z22K;MWW5!oGfm>&r&JKRm9|W)(iyT|TH5GK_V*y;7hh|c_}ZVM zY=s34OS2nKS*|**dfOqp8}4cU7&r)vk+H~oBrh+WS_IqQyLgn+a7t!}unPER&WkC% z*G>w*IxbzuXpZk81KX%i3hJ;(pPiRY@}{JtjTR`oN~UsYs)C5Eq(x{1m^NWJk6s4B zZS|wr1;^?;)HP!D?r6RY;)M=8uWHJytRk|?wg;r#-AtZ(Q>ulnQMbi;dc$|*tEp~H zq-;n&l& z{*EJy2!sz$Rg=jC_JAB_B3nbk`1D?&KE`|E{Eq{kpfV0;mdx&k)!6W(dyH~_JO#RD zj737;EwJ+)jD?vTw35k8hVRU_Ued(f%wwNP(Kj&JzDX}4Ji4#_p~<-9V-BO_hVk8N zob3I@_*ogdb*tHn`E6tN&1#oak?Es*Vo)f1SP^XL63%XmDDA@*Qm5+~AEIDSn0#dX zI>XSeYN5nn`f!foL4ma$$;hi{dO8si?TSHFtZ^pt0wjdVThb5l@{qBjr3W{WdZUH0 zTq#{3_g{S| zd2uKA21WAvuzB6_V>(4_g}s2>JI%V!@Er?w$JM(e9<`k*V|>>V)JL_93o2mOT1lO{ z=xIc-_o3VUqm<{ZAktwMWnoJ{3n_=ViT)(^X;Wg^ZPqqz2U|TnVg3`TLk&h82bL9! zFqBZ1x3A0lYO%LVepE4p46vW_nip%Tn z#m3k}?_K6iWsVY=&*%lzM*OCF32gdpa%vTq#~bcBVNRzRYyL#3y7?aWU1$-p(#>hW*P%88Md(FN z4gKBHwu?k08KovCo2xZB(nsFFYH@JpdP>({9VsU2N9{@M=V+s8o;1tXF-633e;S*_ z6S!afxc!uoX> zJr}Uy^G%s@oCC!=)L(xZ$;=$?h&oQzPxqvV3^^nyvDdX?UZIRa=j;;v#AoUi#=)98~Lg&N#+51zjgZ3Op%(?v*U#=9!9 z?jO8uUSea=h?j(MwL4-@Ttmi(o<2 z9LMPW;KGZ{s%F)uroAR&*Qd#aTu@w9J$Kjm7&aMFT1Qe=UJIe&CiI8Z*IpJ zKRUTUw+3~oS#kv)_W8`!sOUlw6e~=?%_z^)(#o3NfI|OozWD#}(vn0(#6FVdttsO~ z*NCqVwhaaemo~4?GxG9gOOcBAE}RUFOhBzSAEI%}8{57zqK+xj3#;?r>-|+R>N}%G zRkpZarc*^;b1q_XS(lgHYF8g>b6@T3?fT`|5{eDaaMNbc+{%OQd8N6DM+mHuOx5xp z_@qC*^J{2GYq3Ww{lRlTBg>htf6PS8+Azjth}BvPex`2Hogt%;R4Vw`?NeXmpy=xg zp0J@~`oIiG`ty#e{Z;7*h4WqIUY{k&tw)q5*(W30n*6C_Yg5GIjt#(qw7kg5tD~c7 zS5U*whVXlkctam--fx?JJK-{W37z#?#^C+~l#k?^Y26^nYaXGmFAM22=#~7_qzOiH z6=OO3IZxIs*W`p&c)Fk-0>kb{-5R`pxxO!@JsH8&aR-!pBkrn$93HoVXGPQ6I_LR^ zg~A#eWtDTU#J{3NU9BhWn&Jcx* zOtplubG|QBYR`ftSPQ4TFAgf@xkS;FC28EcBgxu!(@$V>`LQ4~)k?`~`0<S_7g*VWjva0Uba|0fUS=kehOSq~NvJ`R0+@B4zb%b~Rpisw-jjCS3jVWU` z%62T1Ef=M(Q-@er>itl0=+haMtn$8IK`2RasewF{WW)BCjv^zRL{)bczCYLH<>Be` z!Emrr168(`^L*~VGw;IWKapotGE0=+@?_0^;Hd#@0xUZK7S`fbuxJ8deBV56*!&&r z)p)|^e(<~Mm5Un$jR1lz@$kb0;#uMEuc%`3k*Nh+Y?pJ%*l}?P&3s_+yTvziC(+G2 zl500p7F=SFW+k^gVc~N`=}JAS;lRCPclHr?-6LNJ)Dy^efIXkDWc8PlLaIHgj!aFqE-a>`2+f`E<940 z=U;fMbcg=4X8zN{-|arJje=@moIi!kVW|5vB}CcGdJ%=%^75v&HJ)ABqm&y@ReDvl zxZ~6lP>1Epv+jZU`FHg;^oERnJ0%!^o5qW%wE-QQkLr14A$H6vRNDuV3vWa1F+eo} zdrX@7^wa(8JEqi$-}UZqM@Z6DbBdep?k+zsC@Ij14>Dz>4|{A=$-GRo_Q7&x^v?3u ziADyZR^YX>aAbYOMwtT*jjEqe$CL>?_xstJXet=KsGRx*x%TlD{@NkTDJKk#erwTm?nzL#MYy zA`v)ZD=Vx+20i#%P`uZgN9c|u?^9yYweKdvbbdBAl-_r~UcMA{35YuLg%dhfLctie zHfZ25;DtH&(|9j5TrnV1-(c;10BU_!R6TFr9^id)$l)$HfSXBqt-WOUY=L|M(+4Bf_gcmUf%X)B!nKA+w+>YAOTDX^^c{dz6 zH4{3CFr!XPQ zZ#%fDDe0i(k8>jAs+_1~3w+2}@x#~TjdR+u4J;Q@sICuZ9Tq4byI)^T4s!3I435By zS>n<;Rxg-ZC4c+&?ITe!QaLw3U}dVd(HSdkIhmea@Uk%NCb$0tm$O9wZ+^82jp$Qp z_WBWF0_w*PM8DNX<=oN`JK%9TN4{I*A>XSoMe53vYBLat_lnKnN6YwSS+Op#O@t5I z@`};{GD=_t=4^ZJZQd!Q>HAh~zYsquD=}GWX}l^VUgrJtOJFOdA@+x-6{w1CLl5g> zvLZ@_?F4fn`*{Z=N16~M1tYFMM6ya!=6oBS0GCT-RZBMgFZT-;S3 znb$o!FQ3ZRs5mSN6&-uq6I|^WRn^qot0va}sVVLn%+nx!-C*k;|2X>@$Xg(cGC2l= zfHqgrp4CKR;^b6%@ABL0(|uteR_=K*6ykLl9I}jSWh)QtTz7sK-KzlNP#bc2`rFz|uAt&z@zcnO zaG)=ZX(iG@L3novqry{}%An@y8<2R9VA(n={~=p^rmOeO=AY#}F&!4#U73=`>u!96 z0e>OUXB${G=PUS+5%w5Et`kY!mrl{b%v3k-V5hhOW!tF|hm1!+Hc8vlnS6E2S2k)H z)@Dt#ci%H!HFW$c0bhsh=gD64)6E1yEr}*L{Lh5B=f=w#q{Qi-9hE1;W@|%Bv zu6YUtE_htYD!lnQLlMNQZqnG@5o?g@KzV`xfZQpRmMx~~VrRr9Rv%a|Cmm}UQABE(2u3?xd-@M2^EdRh~ z;ucKj-RR)1IWjxKBbW6Qrp-X;O#9ZMRf}|g%)j@){$7DJ zW%QgJ-i#n9_F>9G*3KIzSSPFc33P;6J@|?&Fr&ff$42;-W_a8yHlS`5v#r$26GHix zV~EY!2f`HG!+|$hy2=v|#edu$HuR8~{q3DL3*51K#hr8YMk4*>2yFPE4<<*i2>5+k$ERD4 zI|`rVvL0?JMax5FckE+pG8UFLHa2QQPV2=YAI-YMIFSu4i{WGpC;0i{k3sert-{~v zqAzg=%1@)Q2)6o)o?#zo^iM;Nq?D9PdJ|tdx(NaxUBz^8#J`&6B{v;sf(N6;n31l5LBdJ11ul$WvFzj4<+yr#nKpomEGwA0vEgKJcX=o+utk&gyqc*>ql(0o zlvP#D^K(0I>@b{3sslEaz(HwinZ;cKr{&)N{2v-L67U{h8v&%6`c>s{qetRZ0Y+5IMFW&yxe zO)i*7G0xzw_E^T6m5mCiT403D&CMIfe|K?D_rp3Yu56UGg)uyE3Qj8`=(2Z9rL68= z01nXlwz1txqIu`X$eQdTUXGgXx`L-*_pe_U<`-X42FY2iNxl(T>O5eTf>b#Qq)>5& z@pMsgN_cZnnAk?%pr>?yQD1joFHJSbs;G~e*L z^+$+)6!~MpFL_lG%jEHdGgdZd)KtStIVafLC9XRvcD-_I(ergJviO^h(o*0b~xsk(GX~ ze|&)cTSs|`28_{E$>ESc2p;-G0`r;taMivrKks^1Dxk;Cc^50ufh7S%TcAY5(F=C- zpA?ZJyl|E4gk-7iz0E9xvC+}d{Y>xiIbx&yiZ%6oYKw3$M%Q=Fw;ETq0kQG_(QZs2 zNXCaOx3alOQ+wGbZ26=QIkbKARVlK^4DDhF3>`y_Sx1nrJAvbH}9 zwvY5yMH6+>Fa#gYGskiA6$e2%VzK%p+^U2iZLJE`OEW>y%%$DmpM-#OsFhR)omzjOoY!gjJ4 z_5fW+VYMRTcXIG#wa^N%!n29`VbO?GQvZoI!toBT0z)$lb{KBRP9&g=b`9P{eLnu9 z&cB21^w6b zkxXRii_!k6T+vTHKH<1SPw81WX`Mg?#*y53S}_Mw=-dQH@#=bA`f4r51}76r3cZhW zUiWp68rT^q<20tO)1U>+dJeYfn_(xcQl`Vf7DZRbl)ahraJ_Ckzjr7hJpqCJz+OaGG%Z%^a%`mS9b%2vuVWAV@rZi(eidDe-i*L@zVy@$S=`mrCPzVIn@Eb$ew5a;x8^9g8 z<0#RkfqbPzavgaK|C0iZb#^fq>^z0xr8Ky+*YKY|%mM-es=iY03vJ8oQUG~T7*cHk zDga0WNYQ0wd;^3*h#!A@C;L4R3OkN(DXtoZjmx-Luv>1ulmeiyT?QSio_AO3LD_a2 zC1BftiTGfxrbjNWA7i}*rIHVVB%Y^-(SFJ5Q}*36gR zc8FQPaIU++a=w?Al02M$6=cD$RP-`?yIf8>LuO@~j`ru#uV2LG*=3oGrbBewy`8Hd z7RgJ8eMDw_sTt3y8Ru}8kj1^A8ors*6NAiXHQuXZmw4pr>S}@P_}Dd%kPj%2%SZq? z9HanHD*)hb5UU=0!1?IVFS*@{mOn`~&mHT9fyQ=#@Q#p&0+E|u*DJc#VG*wF?2@Gm8}c2g6YF$+}JfY*rGQORt0c=*QykQP|AYAdyc0Cxl7 zADBVY?75!m#!$O1%ZhqWd;kD_{7E@FJlj(nG@hFTauPs-s`QS(C~Z4j!Bo*S;Ks&u z0aq(}31H=f|Lhxk`-n46jVgYAhrZNaf>HcKOCr%aa;=#MY+)860pKjCHXPNf3Nqi$ z=#3@vDoV2b6AN$vyugIJj|JP(B;X)vX7BNS-A!>!u|W20 z&a_<8bJYK&d|M|3WD*jY(<6Zvv*;O($J`I@rQwK3jjX38M|jca{uxb7?)zJ9>`EM0 ztPX1S0+i$kR2nOD~W&ZOg4A0j3X7`kh_E=JR#slExcIj@jWKNJE0O{=9-xme$ z1t9fFEvPm0>rl!SNbv}5FSk2WXCN*^dM6KL-~kGTu7$GN#QU!g0Ihm@=R#Da_x`j@ zi1S3|HjUvW+OQV!tf_GEwAyK&v8o6_TL7Y!8<7)@e6*xTfvKunDPCIa&qOkp15cc; z7;L#q&BvrEEo9;4|i^!;QTp%zqj|Iq|`WI2l%ho(yX7~_Y zIqgTP8XD(ioszzc{mwPi*O%D#du;KXJ^a)?^{~XfoTg%zK!CIHtI=5vHNqfG)39LE zJ}kDky`3UgGhe`QQIr~#O|XQ(^jf6X&S<2N)l*MR6TlSJ3Ey^m&q_;_K?sFx!4x&4 zde6qrPRbUp$5%ox^i=nxvFL{k*IkR8HA&{I)GM+L$Fjl#F)F8sm%Z4cQ?p|<2FD*U;G3XMCcdFJQuZ|1aW)5M@SHB>d7!p6$676&DptBWR&KYY(UW~qVQ9bZrCo=pA^%lA|B@{k7ot|w+6#Zk|Sa%%% zySUAl{ZKU4H_X5-4^KL@H>D?m)Bk}P*~4#~_!HK4x%IGw4&Wxb*Op5L8*N96A`K?K zDXKd=Os(LGlokm7_yPSr{I|iW_qXhb_M?CUbvHM(XS0Q$%>jzFSdpoa^ikS_JA2M| zrMoJ$efw=o)CTWEp?U4FaC8J0Lnt_`nftV-S9l8BEz14Ryq;Qaglznr(B+}Y%5kr`P!JZ8GXk$WSPMO!Tl#s;0R zI|*GRzh<{+s(L#*I?SaUJv{KARG`qsT&^aPr3<7#0ni}<2u0>((|p8yqvRe}p0c65 zmk0VR*aFY+HlC2!_zVu0y`%;OM%6fDZxUfDyE{v780H6dB%^F9y}r6<_uu)F&%R4r zqv|CNA^F0tE^zErYpd&x2Dg#*W z*&mwc1J1sFm?&ijau@p#d1wMA?ZL*=@uRp7z&aH5Jd)33zt~=dyZ%Tz#PICv0Q=Em zB?$?I@mViG3zNstA;STMHCU&-SDsZV-T~JK|EH)yUt)Hk9T3E{n)BZKc6E7BmlH22 zL^FRVT1MofvLSNgcEC=Gs9y%Re{__JZ|$y$H5c-{KYelP$)@L!GpHNsQ{ z#&1H-wnF0zrbwt+L?zzF);4ul<@WG6bLAtPw!A#v^)u`>T7z#(E&4Imsw~metU%5c z#Z_MfOEbP;!Y89PkLxFlc_roUV;1~}rIHI3vBAJ%CHxo#7u$!g(6d`HMkz4$&ULgI zee|yx)AV1|^nPaHFq!M#S2bCyweX?-YmH$;(6DAu&CDg6^ngu33+sBX@RUDv^25}r zTa#l5#wSe)jd?Cv#W@(}y0~84I?XWW~ zBtLYGbgK&XH4likj8uF;6Mm02S_Nm}O6KjOY+7X0s;0^(%?cHiL=VYF)cjdrt$kp8 zxkloh6v@Ktm?4{_Ly3gWFp8uOis2VwOVu(l9*6JzRGZ(v^E)Kgc{~|Yg9$m%)mjRi z>|Lm|N|Eqku!Pd`L`?`*c~NNx5;t*MOyweST;hNjF-(-nxLF$D+IEIB3mr>a|LDp1 z6^06ZuavaV6+C_2*oVe_tKqH8Jy(Qx>NQDZwAJDZbszRB+4jfUgnfDC7&n(3RJn$e zl6-Z$J-6Ufh9p$q_!b_f;3W@2-|3?0!mMOi8Yw}@rbbEmlqyT(mf(tm z)qz>Atc53Gxcc~jB8%lNCl^;zs%rEP+D4=eU4vfMiGypdWn9f4=|^HC3JAfKw5+d{ zSZ+b->aoHG6yAe&1QFA2ad+;sRys}$aT~h*O!Q>r*{-6JRf=S70)%^7==@?K&tNkN zohmAsQ^MvZQ)!`Z-s@-Dp#`l$79P6dZV9p2}(W; z7li{CHk4eF*gM=fqwG16Mf_>WtuC2mYp~-qD(_vYL-I_1vBzR|)4x-GA#oAxpJ-{t z9%v7nmqp74E4=VZ+?#b=06nSSc|W=Sj29m_kgnq#mQhq zd&pdo7jgK7)zLq5&18*}t8A6U(gTNW6yTJ->xr@A&3_}G&(3-Q{wKQow_)JFy!4*n zH*QHJ?1mxQ+a5^)68m?Y-Q%`inG84+Z`F&9dKI7~v$Hc$#97b5-%RkY=7aw-*53|= z%}Ivedoci^-?0#E{(43p#{i1Y?VQcPsInxQt8%93p4HwcE2uLV1Q{rV-ApejG- zveE$qr(^)9K$=NzFh_tY$JsnqIaZ61KeC%AD9}Z*yJrVt4{G(_?&o07c&?dydDRM7 zfl~##uoiTU78IH=5*Gok9o}CKyqy#BlLaASCh2fK5N6z;8vYhAb$U9FEu02T6wzT* za_<|7)iLp1^Tql~G+sxNppR(|D*Cl}B~&ah(Bby)qAy?pg;wjF;!7_zCv3Q(E*@T- z5bD}Et?J|th}5)n#{c|Fm6zE$CO462M7wV7WjLLo1&~V(1$9B8m*rVlMo0aJxlO2`fr-X)l7A?t;5xNVF*@C4Vp>NFW)p|_I(IL{t)3%&&E8#^k#x) z)kE_;%08p>)<~Du+gE98#?fU~eVHdjifIXxkk6j3R7XyUneR}+bvk*I?_XxCwuB4V z%Vn<~knO%R)z~yyk?ec`b$OF&%vfLibkE>g9s?x+`Q!dX9}aqU~l zQ%AgjaI~deQ|@jl z-~+@?k-NyenT{!>$ zUh0ESUL*l{=Tp}_fJ&f56V=xH71W~G6Vm?)G~f*}Wefp$)t5gh92nKyr`>K?ziHsq z*VPY*_C{c!XDxYu0hh=EWHO<{V$&C8o5W}Gk;n^IzkLNL(2E}eiV+?jRkmYub8}*G x3i5N?gJ(&5*RuB~Ed06@>4Yo?F!mFfBEg2;@2IsR(1}Q*^jKZKSk5Hie*s{KcOd`( diff --git a/Postman/postman-mock-register-collection-step5.png b/Postman/postman-mock-register-collection-step5.png deleted file mode 100644 index f493c74055082888d26d8e1b98af50175e63c1fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18027 zcmeHv2UL^Wwr(tlTTnznK$=@n5Rl%aZbU$o-a87?dzTVWQPfD;AWfQ^7CJ}?p(X-C z1cV47AS9uR)PVFFcq@4CIrqGA-+1@EcgMKn-EkNy@RyZU=9+VU-~5)Z^>j4Op1FJm z0)d>>ynDw00y%jN0y!>n`V_dLs`{`OeEZG&uDKrsa_$rL@3ADobL`+Et-q$W8tpXA zZ!B^G-+FJ0K_FKkns-!;9%n3)be(xMpDpj$ZrwQxS8IR#;lgv(H|;ao$8d5=kmj0y?jG{-z7{z4#DuZmK6xGU%nUWgt)x)5yuA-ZlKXR*tv1)N=Q4m#?{Oy|f;iK6(nW{G^5cS^R~gUp~_P>$^1BCx7+f znclB)K33uX)mGD$#9uGkoWJ+$2a(fYwZYdDmgm2kY08z8&x~*Sk)wX;UY=!<(&4_J zRCbO_|9|^&Ba{y8+|Dar1DY( z58=C-nH!?2Dkmw4dD-Ep1LN>w?Sb{56RKsUr5tQppnVe)6YB5y>#n8-QD|4m%euRV z5w&X(ml1eZ{JSW%4f!+D4UiDf(J75u)eq}PVgSm zfHHHq`rdeF0d}x(NU?S3h_N}`b3+_9m)TSl?4xJWc5UI04o0kMvyR66c){opUOcOO z$HLrPf1UfP@gZEmMfT5E@SON?$F)P(`DS#8?rx^kN z-Mgk?TW1Z$rXz|A=}&7-d+VK7^K^<_`2+Df4cI^f!P-utKx?~KSd z7Uy)P>*gO!c09k}!?7@2?L=KXS+?R8eO0(!&CfNOc3fo^bVIAVySr-8bs_~*!TeA_ z-OtZ&-ZN;UeHo>PdTYD(YyG|DIf7DR7S3D`uW4%9Pa$y!BK9BcbSZu3bxE72wrpi( z6eg3rD<|�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 diff --git a/Postman/postman-mock-register-collection-step7.png b/Postman/postman-mock-register-collection-step7.png deleted file mode 100644 index 944d3c75c3e1e7b87ec33986a321c375d560540b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45897 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

f!yabMIP+q1dhF#JtPVl4A|hu{wIh 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](./mock-register-architecture.png?raw=true) +![Mock Register - Architecture](./mock-register-architecture.png?raw=true) ## Mock Register - Components The Mock Register contains the following components: @@ -202,7 +202,7 @@ The Mock Register contains the following components: - Performs certificate validation - Identity Provider - Hosted at `https://localhost:7002` - - Register identity provider implementation utilising `.Net 6` + - Register identity provider implementation utilising `.Net 8` - Accessed via the TLS and mTLS Gateways, depending on the target endpoint. - Discovery API - Hosted at `https://localhost:7003` @@ -227,14 +227,17 @@ The Mock Register contains the following components: ## Technology Stack The following technologies have been used to build the Mock Register: -- The source code has been written in `C#` using the `.Net 6` framework. -- The Identity Provider is implemented using `.Net 6`. +- The source code has been written in `C#` using the `.Net 8` framework. +- The Identity Provider is implemented using `.Net 8`. - The TLS and mTLS Gateways have been implemented using `Ocelot`. - The Repository utilises a `SQL` instance. # Testing -A collection of API requests has been made available in [Postman](https://www.postman.com/) in order to test the Mock Register and view the expected interactions. See the Mock Register [Postman](./Postman/README.md) documentation for more information. +A [Polyglot notebook](https://code.visualstudio.com/docs/languages/polyglot) has been created for the Mock Register's APIs as a tool for demonstrating how these APIs are used. +See the [Mock Register Polyglot Notebook](./Help/notebooks/HELP.md) documentation for more information. + +Automated integrated tests have been created as part of this solution. See the [Test Automation Execution Guide](./Help/testing/HELP.md) documentation for more information. # Frequently Asked Questions See the [Frequently Asked Questions](./Help/faq/README.md) page for answers to some common questions and links to help files. diff --git a/SECURITY.md b/SECURITY.md index 64bf693..b434d53 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -11,11 +11,8 @@ Visit our [Responsible disclosure of security vulnerabilities policy](https://ww | Version | Supported | | ------- | ------------------ | -| 1.3.x | :white_check_mark: | -| 1.2.x | :x: | -| 1.1.x | :x: | -| 1.0.x | :x: | - +| 2.1.x | :white_check_mark: | +| 1.x.x | :x: | ## Reporting a Vulnerability Visit our [Responsible disclosure of security vulnerabilities policy](https://www.cdr.gov.au/resources/responsible-disclosure-security-vulnerabilities-policy) for steps required for reporting a vulnerability. diff --git a/Source/CDR.Register.API.Gateway.TLS/CDR.Register.API.Gateway.TLS.csproj b/Source/CDR.Register.API.Gateway.TLS/CDR.Register.API.Gateway.TLS.csproj index a87404d..c301e8e 100644 --- a/Source/CDR.Register.API.Gateway.TLS/CDR.Register.API.Gateway.TLS.csproj +++ b/Source/CDR.Register.API.Gateway.TLS/CDR.Register.API.Gateway.TLS.csproj @@ -1,38 +1,32 @@  - - - net6.0 - - 1.3.2 - 1.3.2 - 1.3.2 - - - - - - - - - Always - - - - - - Always - - - - - - - - - - - - - - - + + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) + + + + + + + Always + + + + + Always + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/CDR.Register.API.Gateway.TLS/Program.cs b/Source/CDR.Register.API.Gateway.TLS/Program.cs index 89c9afa..3d0e612 100644 --- a/Source/CDR.Register.API.Gateway.TLS/Program.cs +++ b/Source/CDR.Register.API.Gateway.TLS/Program.cs @@ -22,9 +22,7 @@ public static int Main(string[] args) .Build(); Log.Logger = new LoggerConfiguration() - .ReadFrom.Configuration(configuration) - .MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning) - .MinimumLevel.Override("System", LogEventLevel.Information) + .ReadFrom.Configuration(configuration) .Enrich.FromLogContext() .Enrich.WithProcessId() .Enrich.WithProcessName() diff --git a/Source/CDR.Register.API.Gateway.TLS/Startup.cs b/Source/CDR.Register.API.Gateway.TLS/Startup.cs index 00ef8d7..729b5b3 100644 --- a/Source/CDR.Register.API.Gateway.TLS/Startup.cs +++ b/Source/CDR.Register.API.Gateway.TLS/Startup.cs @@ -1,5 +1,6 @@ using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.Http; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; @@ -41,7 +42,7 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) PreErrorResponderMiddleware = async (httpContext, next) => { // Send through the original host name to the backend service. - httpContext.Request.Headers.Add("X-Forwarded-Host", httpContext.Request.Host.ToString()); + httpContext.Request.Headers.Append("X-Forwarded-Host", httpContext.Request.Host.ToString()); await next.Invoke(); } diff --git a/Source/CDR.Register.API.Gateway.TLS/appsettings.Release.json b/Source/CDR.Register.API.Gateway.TLS/appsettings.Release.json index 2ee147b..34cac20 100644 --- a/Source/CDR.Register.API.Gateway.TLS/appsettings.Release.json +++ b/Source/CDR.Register.API.Gateway.TLS/appsettings.Release.json @@ -1,7 +1,7 @@ { "ConnectionStrings": { - "Register_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True", - "Register_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True" + "Register_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True", + "Register_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True" }, "Serilog": { "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.MSSqlServer" ], @@ -16,7 +16,7 @@ { "Name": "File", "Args": { - "path": "c:\\cdr\\Logs\\cdr-mr-gateway-tls.log", + "path": "/tmp/cdr-mr-gateway-tls.log", "outputTemplate": "{Timestamp:dd/MM/yyyy HH:mm:ss.fff zzz} {Level} [{SourceContext}] {Message}{NewLine}{Exception}" } }, diff --git a/Source/CDR.Register.API.Gateway.mTLS/CDR.Register.API.Gateway.mTLS.csproj b/Source/CDR.Register.API.Gateway.mTLS/CDR.Register.API.Gateway.mTLS.csproj index acde472..143d4f0 100644 --- a/Source/CDR.Register.API.Gateway.mTLS/CDR.Register.API.Gateway.mTLS.csproj +++ b/Source/CDR.Register.API.Gateway.mTLS/CDR.Register.API.Gateway.mTLS.csproj @@ -1,51 +1,45 @@  - - - net6.0 - 1.3.2 - 1.3.2 - 1.3.2 - - - - - - - - - - - - - - - Always - - - Always - - - Always - - - Always - - - - - - - - - - - - - - - - - - - - + + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) + + + + + + + + + + + + Always + + + Always + + + Always + + + Always + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/CDR.Register.API.Gateway.mTLS/Program.cs b/Source/CDR.Register.API.Gateway.mTLS/Program.cs index 8b72d5e..cea2a9f 100644 --- a/Source/CDR.Register.API.Gateway.mTLS/Program.cs +++ b/Source/CDR.Register.API.Gateway.mTLS/Program.cs @@ -25,9 +25,7 @@ public static int Main(string[] args) .Build(); Log.Logger = new LoggerConfiguration() - .ReadFrom.Configuration(configuration) - .MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning) - .MinimumLevel.Override("System", LogEventLevel.Information) + .ReadFrom.Configuration(configuration) .Enrich.FromLogContext() .Enrich.WithProcessId() .Enrich.WithProcessName() diff --git a/Source/CDR.Register.API.Gateway.mTLS/Startup.cs b/Source/CDR.Register.API.Gateway.mTLS/Startup.cs index eadc311..a08c311 100644 --- a/Source/CDR.Register.API.Gateway.mTLS/Startup.cs +++ b/Source/CDR.Register.API.Gateway.mTLS/Startup.cs @@ -112,12 +112,12 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) var certThumbprintNameHttpHeaderName = Configuration.GetValue(Constants.ConfigurationKeys.CertThumbprintNameHttpHeaderName) ?? Constants.Headers.X_TLS_CLIENT_CERT_THUMBPRINT; var certCommonNameHttpHeaderName = Configuration.GetValue(Constants.ConfigurationKeys.CertCommonNameHttpHeaderName) ?? Constants.Headers.X_TLS_CLIENT_CERT_COMMON_NAME; - httpContext.Request.Headers.Add(certThumbprintNameHttpHeaderName, clientCert.Thumbprint); - httpContext.Request.Headers.Add(certCommonNameHttpHeaderName, clientCert.GetNameInfo(X509NameType.SimpleName, false)); + httpContext.Request.Headers.Append(certThumbprintNameHttpHeaderName, clientCert.Thumbprint); + httpContext.Request.Headers.Append(certCommonNameHttpHeaderName, clientCert.GetNameInfo(X509NameType.SimpleName, false)); } // Send through the original host name to the backend service. - httpContext.Request.Headers.Add("X-Forwarded-Host", httpContext.Request.Host.ToString()); + httpContext.Request.Headers.Append("X-Forwarded-Host", httpContext.Request.Host.ToString()); await next.Invoke(); } diff --git a/Source/CDR.Register.API.Gateway.mTLS/appsettings.Release.json b/Source/CDR.Register.API.Gateway.mTLS/appsettings.Release.json index 27a0749..3a0b986 100644 --- a/Source/CDR.Register.API.Gateway.mTLS/appsettings.Release.json +++ b/Source/CDR.Register.API.Gateway.mTLS/appsettings.Release.json @@ -1,7 +1,7 @@ { "ConnectionStrings": { - "Register_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True", - "Register_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True" + "Register_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True", + "Register_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True" }, "Serilog": { "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ], diff --git a/Source/CDR.Register.API.Infrastructure.Tests.UnitTests/CDR.Register.API.Infrastructure.Tests.UnitTests.csproj b/Source/CDR.Register.API.Infrastructure.Tests.UnitTests/CDR.Register.API.Infrastructure.Tests.UnitTests.csproj index 7e261d4..5571ba6 100644 --- a/Source/CDR.Register.API.Infrastructure.Tests.UnitTests/CDR.Register.API.Infrastructure.Tests.UnitTests.csproj +++ b/Source/CDR.Register.API.Infrastructure.Tests.UnitTests/CDR.Register.API.Infrastructure.Tests.UnitTests.csproj @@ -1,32 +1,28 @@  - - net6.0 false - 1.3.2 - 1.3.2 - 1.3.2 + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) - - - - - - + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all + - - Always @@ -44,5 +40,4 @@ Always - - + \ No newline at end of file diff --git a/Source/CDR.Register.API.Infrastructure.Tests.UnitTests/Certificates/CertificateValidatorTests.cs b/Source/CDR.Register.API.Infrastructure.Tests.UnitTests/Certificates/CertificateValidatorTests.cs index c933b23..23d0d01 100644 --- a/Source/CDR.Register.API.Infrastructure.Tests.UnitTests/Certificates/CertificateValidatorTests.cs +++ b/Source/CDR.Register.API.Infrastructure.Tests.UnitTests/Certificates/CertificateValidatorTests.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.IO; using System.Security.Cryptography.X509Certificates; using CDR.Register.API.Infrastructure.Exceptions; @@ -10,6 +11,7 @@ namespace CDR.Register.API.Infrastructure.Tests.UnitTests.Certificates { + [Trait("Category", "UnitTests")] public class CertificateValidatorTests { [Fact] diff --git a/Source/CDR.Register.API.Infrastructure.Tests.UnitTests/Versioning/ApiVersionSelectorTests.cs b/Source/CDR.Register.API.Infrastructure.Tests.UnitTests/Versioning/CdrVersionReaderTests.cs similarity index 52% rename from Source/CDR.Register.API.Infrastructure.Tests.UnitTests/Versioning/ApiVersionSelectorTests.cs rename to Source/CDR.Register.API.Infrastructure.Tests.UnitTests/Versioning/CdrVersionReaderTests.cs index 8b51eaa..9efecaa 100644 --- a/Source/CDR.Register.API.Infrastructure.Tests.UnitTests/Versioning/ApiVersionSelectorTests.cs +++ b/Source/CDR.Register.API.Infrastructure.Tests.UnitTests/Versioning/CdrVersionReaderTests.cs @@ -1,7 +1,5 @@ using CDR.Register.API.Infrastructure.Versioning; using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Versioning; using Microsoft.Extensions.Primitives; using NSubstitute; using System; @@ -10,35 +8,33 @@ namespace CDR.Register.API.Infrastructure.Tests.UnitTests.Versioning { - public partial class ApiVersionSelectorTests + [Trait("Category", "UnitTests")] + public partial class CdrVersionReaderTests { - + [Fact] - public void SelectVersion_DataHolderStatus_NoXvHeader_ShouldReturn1() + public void Read_DataHolderStatus_NoXvHeader_ShouldReturn1() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(1, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); + var expectedVersion = "1"; var mockHttpRequest = Substitute.For(); mockHttpRequest.Path.Returns(new PathString("/cdr-register/v1/all/data-holders/status")); // Act. - var actualVersion = versionSelector.SelectVersion(mockHttpRequest, null); // apiVersionModel); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. Assert.NotNull(actualVersion); - Assert.Equal(expectedVersion.MajorVersion, actualVersion.MajorVersion); - Assert.Equal(expectedVersion.MinorVersion, actualVersion.MinorVersion); + Assert.Equal(expectedVersion, actualVersion); } [Fact] - public void SelectVersion_DataHolderStatus_EmptyXvHeader_ShouldReturn1() + public void Read_DataHolderStatus_EmptyXvHeader_ShouldReturn1() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(1, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); + var expectedVersion = "1"; var mockHttpHeaders = new HeaderDictionary(new Dictionary(StringComparer.OrdinalIgnoreCase)); mockHttpHeaders.Add("x-v", new StringValues("")); @@ -48,37 +44,34 @@ public void SelectVersion_DataHolderStatus_EmptyXvHeader_ShouldReturn1() mockHttpRequest.Headers.Returns(mockHttpHeaders); // Act. - var actualVersion = versionSelector.SelectVersion(mockHttpRequest, null); // apiVersionModel); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. Assert.NotNull(actualVersion); - Assert.Equal(expectedVersion.MajorVersion, actualVersion.MajorVersion); - Assert.Equal(expectedVersion.MinorVersion, actualVersion.MinorVersion); + Assert.Equal(expectedVersion, actualVersion); } [Fact] - public void SelectVersion_NoXvHeader_ShouldThrow400MissingHeader() + public void Read_NoXvHeader_ShouldReturnMissingVersion() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(1, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); var mockHttpRequest = Substitute.For(); mockHttpRequest.Path.Returns(new PathString("/cdr-register/v1/all/data-holders/brands")); + var expectedVersion = "Missing Version"; // Act. - Assert.Throws(() => versionSelector.SelectVersion(mockHttpRequest, null)); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. + Assert.Equal(expectedVersion, actualVersion); } [Fact] - public void SelectVersion_EmptyXvHeader_ShouldThrow400MissingHeader() + public void Read_EmptyXvHeader_ShouldReturnMissingVersion() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(1, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); var mockHttpHeaders = new HeaderDictionary(new Dictionary(StringComparer.OrdinalIgnoreCase)); mockHttpHeaders.Add("x-v", new StringValues("")); @@ -86,20 +79,20 @@ public void SelectVersion_EmptyXvHeader_ShouldThrow400MissingHeader() var mockHttpRequest = Substitute.For(); mockHttpRequest.Path.Returns(new PathString("/cdr-register/v1/all/data-holders/brands")); mockHttpRequest.Headers.Returns(mockHttpHeaders); + var expectedVersion = "Missing Version"; // Act. - Assert.Throws(() => versionSelector.SelectVersion(mockHttpRequest, null)); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. + Assert.Equal(expectedVersion, actualVersion); } [Fact] - public void SelectVersion_NullXvHeader_ShouldThrow400MissingHeader() + public void Read_NullXvHeader_ShouldReturnMissingVersion() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(1, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); var mockHttpHeaders = new HeaderDictionary(new Dictionary(StringComparer.OrdinalIgnoreCase)); mockHttpHeaders.Add("x-v", new StringValues()); @@ -107,20 +100,20 @@ public void SelectVersion_NullXvHeader_ShouldThrow400MissingHeader() var mockHttpRequest = Substitute.For(); mockHttpRequest.Path.Returns(new PathString("/cdr-register/v1/all/data-holders/brands")); mockHttpRequest.Headers.Returns(mockHttpHeaders); + var expectedVersion = "Missing Version"; // Act. - Assert.Throws(() => versionSelector.SelectVersion(mockHttpRequest, null)); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. + Assert.Equal(expectedVersion, actualVersion); } [Fact] - public void SelectVersion_InvalidXvHeader_ShouldThrowInvalidVersionException() + public void Read_InvalidXvHeader_ShouldReturnInvalidVersion() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(1, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); var mockHttpHeaders = new HeaderDictionary(new Dictionary(StringComparer.OrdinalIgnoreCase)); mockHttpHeaders.Add("x-v", new StringValues("foo")); @@ -128,20 +121,20 @@ public void SelectVersion_InvalidXvHeader_ShouldThrowInvalidVersionException() var mockHttpRequest = Substitute.For(); mockHttpRequest.Path.Returns(new PathString("/cdr-register/v1/all/data-holders/brands")); mockHttpRequest.Headers.Returns(mockHttpHeaders); + var expectedVersion = "Invalid Version"; // Act. - Assert.Throws(() => versionSelector.SelectVersion(mockHttpRequest, null)); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. + Assert.Equal(expectedVersion, actualVersion); } [Fact] - public void SelectVersion_SetToZeroXvHeader_ShouldThrowInvalidVersionException() + public void Read_SetToZeroXvHeader_ShouldReturnInvalidVersion() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(1, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); var mockHttpHeaders = new HeaderDictionary(new Dictionary(StringComparer.OrdinalIgnoreCase)); mockHttpHeaders.Add("x-v", new StringValues("0")); @@ -149,20 +142,20 @@ public void SelectVersion_SetToZeroXvHeader_ShouldThrowInvalidVersionException() var mockHttpRequest = Substitute.For(); mockHttpRequest.Path.Returns(new PathString("/cdr-register/v1/all/data-holders/brands")); mockHttpRequest.Headers.Returns(mockHttpHeaders); + var expectedVersion = "Invalid Version"; // Act. - Assert.Throws(() => versionSelector.SelectVersion(mockHttpRequest, null)); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. + Assert.Equal(expectedVersion, actualVersion); } [Fact] - public void SelectVersion_LessThanZeroXvHeader_ShouldThrowInvalidVersionException() + public void Read_LessThanZeroXvHeader_ShouldReturnInvalidVersion() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(1, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); var mockHttpHeaders = new HeaderDictionary(new Dictionary(StringComparer.OrdinalIgnoreCase)); mockHttpHeaders.Add("x-v", new StringValues("-1")); @@ -170,40 +163,41 @@ public void SelectVersion_LessThanZeroXvHeader_ShouldThrowInvalidVersionExceptio var mockHttpRequest = Substitute.For(); mockHttpRequest.Path.Returns(new PathString("/cdr-register/v1/all/data-holders/brands")); mockHttpRequest.Headers.Returns(mockHttpHeaders); + var expectedVersion = "Invalid Version"; // Act. - Assert.Throws(() => versionSelector.SelectVersion(mockHttpRequest, null)); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. + Assert.Equal(expectedVersion, actualVersion); } [Fact] - public void SelectVersion_GreaterThanMaxXvHeader_ShouldThrowUnsupportedVersionException() + public void Read_GreaterThanMaxXvHeader_ShouldReturnUnsupportedVersion() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(1, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); var mockHttpHeaders = new HeaderDictionary(new Dictionary(StringComparer.OrdinalIgnoreCase)); mockHttpHeaders.Add("x-v", new StringValues("99")); var mockHttpRequest = Substitute.For(); mockHttpRequest.Path.Returns(new PathString("/cdr-register/v1/all/data-holders/brands")); mockHttpRequest.Headers.Returns(mockHttpHeaders); + var expectedVersion = "Unsupported Version"; // Act. - Assert.Throws(() => versionSelector.SelectVersion(mockHttpRequest, null)); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. + Assert.Equal(expectedVersion, actualVersion); } [Fact] - public void SelectVersion_ValidXvHeader_ShouldReturnValidVersion() + public void Read_ValidXvHeader_ShouldReturnValidVersion() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(2, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); + var expectedVersion = "2"; var mockHttpHeaders = new HeaderDictionary(new Dictionary(StringComparer.OrdinalIgnoreCase)); mockHttpHeaders.Add("x-v", new StringValues("2")); @@ -212,21 +206,19 @@ public void SelectVersion_ValidXvHeader_ShouldReturnValidVersion() mockHttpRequest.Headers.Returns(mockHttpHeaders); // Act. - var actualVersion = versionSelector.SelectVersion(mockHttpRequest, null); // apiVersionModel); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. Assert.NotNull(actualVersion); - Assert.Equal(expectedVersion.MajorVersion, actualVersion.MajorVersion); - Assert.Equal(expectedVersion.MinorVersion, actualVersion.MinorVersion); + Assert.Equal(expectedVersion, actualVersion); } [Fact] - public void SelectVersion_UppercaseXvHeader_ShouldReturnValidVersion() + public void Read_UppercaseXvHeader_ShouldReturnValidVersion() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(2, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); + var expectedVersion = "2"; var mockHttpHeaders = new HeaderDictionary(new Dictionary(StringComparer.OrdinalIgnoreCase)); mockHttpHeaders.Add("X-V", new StringValues("2")); @@ -235,44 +227,40 @@ public void SelectVersion_UppercaseXvHeader_ShouldReturnValidVersion() mockHttpRequest.Headers.Returns(mockHttpHeaders); // Act. - var actualVersion = versionSelector.SelectVersion(mockHttpRequest, null); // apiVersionModel); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. Assert.NotNull(actualVersion); - Assert.Equal(expectedVersion.MajorVersion, actualVersion.MajorVersion); - Assert.Equal(expectedVersion.MinorVersion, actualVersion.MinorVersion); + Assert.Equal(expectedVersion, actualVersion); } [Fact] - public void SelectVersion_InvalidPath_ShouldReturn1() + public void Read_InvalidPath_ShouldReturn1() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(1, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); + var expectedVersion = "1"; var mockHttpHeaders = new HeaderDictionary(new Dictionary(StringComparer.OrdinalIgnoreCase)); - mockHttpHeaders.Add("X-V", new StringValues("2")); + mockHttpHeaders.Add("X-V", new StringValues("1")); var mockHttpRequest = Substitute.For(); mockHttpRequest.Path.Returns(new PathString("/invalid/path")); mockHttpRequest.Headers.Returns(mockHttpHeaders); // Act. - var actualVersion = versionSelector.SelectVersion(mockHttpRequest, null); // apiVersionModel); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. Assert.NotNull(actualVersion); - Assert.Equal(expectedVersion.MajorVersion, actualVersion.MajorVersion); - Assert.Equal(expectedVersion.MinorVersion, actualVersion.MinorVersion); + Assert.Equal(expectedVersion, actualVersion); } [Fact] - public void SelectVersion_WithRange_ShouldReturnMaxVersion() + public void Read_WithRange_ShouldReturnMaxVersion() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(3, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); + var expectedVersion = "3"; var mockHttpHeaders = new HeaderDictionary(new Dictionary(StringComparer.OrdinalIgnoreCase)); mockHttpHeaders.Add("x-v", new StringValues("4")); mockHttpHeaders.Add("x-min-v", new StringValues("3")); @@ -282,21 +270,19 @@ public void SelectVersion_WithRange_ShouldReturnMaxVersion() mockHttpRequest.Headers.Returns(mockHttpHeaders); // Act. - var actualVersion = versionSelector.SelectVersion(mockHttpRequest, null); // apiVersionModel); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. Assert.NotNull(actualVersion); - Assert.Equal(expectedVersion.MajorVersion, actualVersion.MajorVersion); - Assert.Equal(expectedVersion.MinorVersion, actualVersion.MinorVersion); + Assert.Equal(expectedVersion, actualVersion); } [Fact] - public void SelectVersion_WithUppercaseXminV_ShouldReturnMaxVersion() + public void Read_WithUppercaseXminV_ShouldReturnMaxVersion() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(3, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); + var expectedVersion = "3"; var mockHttpHeaders = new HeaderDictionary(new Dictionary(StringComparer.OrdinalIgnoreCase)); mockHttpHeaders.Add("x-v", new StringValues("4")); mockHttpHeaders.Add("X-MIN-V", new StringValues("3")); @@ -306,21 +292,19 @@ public void SelectVersion_WithUppercaseXminV_ShouldReturnMaxVersion() mockHttpRequest.Headers.Returns(mockHttpHeaders); // Act. - var actualVersion = versionSelector.SelectVersion(mockHttpRequest, null); // apiVersionModel); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. Assert.NotNull(actualVersion); - Assert.Equal(expectedVersion.MajorVersion, actualVersion.MajorVersion); - Assert.Equal(expectedVersion.MinorVersion, actualVersion.MinorVersion); + Assert.Equal(expectedVersion, actualVersion); } [Fact] - public void SelectVersion_XminVGreaterThanXV_ShouldBeIgnored() + public void Read_XminVGreaterThanXV_ShouldBeIgnored() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(3, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); + var expectedVersion = "3"; var mockHttpHeaders = new HeaderDictionary(new Dictionary(StringComparer.OrdinalIgnoreCase)); mockHttpHeaders.Add("x-v", new StringValues("3")); mockHttpHeaders.Add("x-min-v", new StringValues("4")); @@ -330,21 +314,18 @@ public void SelectVersion_XminVGreaterThanXV_ShouldBeIgnored() mockHttpRequest.Headers.Returns(mockHttpHeaders); // Act. - var actualVersion = versionSelector.SelectVersion(mockHttpRequest, null); // apiVersionModel); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. Assert.NotNull(actualVersion); - Assert.Equal(expectedVersion.MajorVersion, actualVersion.MajorVersion); - Assert.Equal(expectedVersion.MinorVersion, actualVersion.MinorVersion); + Assert.Equal(expectedVersion, actualVersion); } [Fact] - public void SelectVersion_InvalidRange_ShouldThrowUnsupportedVersionException() + public void Read_InvalidRange_ShouldReturnUnsupportedVersion() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(2, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); var mockHttpHeaders = new HeaderDictionary(new Dictionary(StringComparer.OrdinalIgnoreCase)); mockHttpHeaders.Add("x-v", new StringValues("5")); mockHttpHeaders.Add("x-min-v", new StringValues("4")); @@ -352,20 +333,20 @@ public void SelectVersion_InvalidRange_ShouldThrowUnsupportedVersionException() var mockHttpRequest = Substitute.For(); mockHttpRequest.Path.Returns(new PathString("/cdr-register/v1/all/data-recipients")); mockHttpRequest.Headers.Returns(mockHttpHeaders); + var expectedVersion = "Unsupported Version"; // Act. - Assert.Throws(() => versionSelector.SelectVersion(mockHttpRequest, null)); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. + Assert.Equal(expectedVersion, actualVersion); } [Fact] - public void SelectVersion_ValidXvInvalidXminV_ShouldThrowIinvalidVersion() + public void Read_ValidXvInvalidXminV_ShouldReturnInvalidVersion() { // Arrange. - var options = new ApiVersioningOptions() { DefaultApiVersion = new ApiVersion(1, 0) }; - var versionSelector = new ApiVersionSelector(options); - var expectedVersion = new ApiVersion(2, 0); + var apiVersionReader = new CdrVersionReader(new Models.CdrApiOptions()); var mockHttpHeaders = new HeaderDictionary(new Dictionary(StringComparer.OrdinalIgnoreCase)); mockHttpHeaders.Add("x-v", new StringValues("3")); mockHttpHeaders.Add("x-min-v", new StringValues("foo")); @@ -373,11 +354,13 @@ public void SelectVersion_ValidXvInvalidXminV_ShouldThrowIinvalidVersion() var mockHttpRequest = Substitute.For(); mockHttpRequest.Path.Returns(new PathString("/cdr-register/v1/all/data-recipients")); mockHttpRequest.Headers.Returns(mockHttpHeaders); + var expectedVersion = "Invalid Version"; // Act. - Assert.Throws(() => versionSelector.SelectVersion(mockHttpRequest, null)); + var actualVersion = apiVersionReader.Read(mockHttpRequest); // Assert. + Assert.Equal(expectedVersion, actualVersion); } } } \ No newline at end of file diff --git a/Source/CDR.Register.API.Infrastructure/Authorization/AuthorisationPolicies.cs b/Source/CDR.Register.API.Infrastructure/Authorization/AuthorisationPolicies.cs new file mode 100644 index 0000000..e56990d --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/Authorization/AuthorisationPolicies.cs @@ -0,0 +1,43 @@ +using System.Collections.Generic; +using System; +using Microsoft.OpenApi.Extensions; +using System.Linq; + +namespace CDR.Register.API.Infrastructure.Authorization +{ + public static class AuthorisationPolicies + { + private static readonly Dictionary _policies = InitPolicies(); + + public static AuthorisationPolicyAttribute GetPolicy(this RegisterAuthorisationPolicy policy) + { + if (_policies.TryGetValue(policy, out var res)) + { + return res; + } + + throw new ArgumentOutOfRangeException($"Policy {policy} doesn't have any Authorisation Policy attribute"); + } + + public static List GetAllPolicies() + { + return _policies.Select(p => p.Value).ToList(); + } + + private static Dictionary InitPolicies() + { + var result = new Dictionary(); + foreach (RegisterAuthorisationPolicy policy in Enum.GetValues(typeof(RegisterAuthorisationPolicy))) + { + var attr = policy.GetAttributeOfType(); + + if (attr != null) + { + result.Add(policy, new AuthorisationPolicyAttribute(attr.Name, attr.ScopeRequirement, attr.HasMtlsRequirement, attr.HasHolderOfKeyRequirement, attr.HasAccessTokenRequirement)); + } + } + + return result; + } + } +} diff --git a/Source/CDR.Register.API.Infrastructure/Authorization/AuthorisationPolicyAttribute.cs b/Source/CDR.Register.API.Infrastructure/Authorization/AuthorisationPolicyAttribute.cs new file mode 100644 index 0000000..cd1ec0a --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/Authorization/AuthorisationPolicyAttribute.cs @@ -0,0 +1,23 @@ +using System; + +namespace CDR.Register.API.Infrastructure.Authorization +{ + [AttributeUsage(AttributeTargets.Field, Inherited = false, AllowMultiple = false)] + public class AuthorisationPolicyAttribute : Attribute + { + public AuthorisationPolicyAttribute(string name, string? scopeRequirement, bool hasMtlsRequirement, bool hasHolderOfKeyRequirement, bool hasAccessTokenRequirement) + { + Name = name; + ScopeRequirement = scopeRequirement; + HasMtlsRequirement = hasMtlsRequirement; + HasHolderOfKeyRequirement = hasHolderOfKeyRequirement; + HasAccessTokenRequirement = hasAccessTokenRequirement; + } + + public string Name { get; private set; } + public string? ScopeRequirement { get; private set; } + public bool HasMtlsRequirement { get; private set; } + public bool HasHolderOfKeyRequirement { get; private set; } + public bool HasAccessTokenRequirement { get; private set; } + } +} diff --git a/Source/CDR.Register.API.Infrastructure/Authorization/DataRecipientSoftwareProductIdHandler.cs b/Source/CDR.Register.API.Infrastructure/Authorization/DataRecipientSoftwareProductIdHandler.cs index f138526..196cad4 100644 --- a/Source/CDR.Register.API.Infrastructure/Authorization/DataRecipientSoftwareProductIdHandler.cs +++ b/Source/CDR.Register.API.Infrastructure/Authorization/DataRecipientSoftwareProductIdHandler.cs @@ -20,7 +20,7 @@ public DataRecipientSoftwareProductIdHandler(IHttpContextAccessor httpContextAcc protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, DataRecipientSoftwareProductIdRequirement requirement) { // Check that authentication was successful before doing anything else - if (!context.User.Identity.IsAuthenticated) + if (context.User.Identity == null || !context.User.Identity.IsAuthenticated) { return Task.CompletedTask; } @@ -30,7 +30,7 @@ protected override Task HandleRequirementAsync(AuthorizationHandlerContext conte { using (LogContext.PushProperty("MethodName", "HandleRequirementAsync")) { - _logger.LogError("Unauthorized request. Access token is missing 'client_id' claim for issuer '{issuer}'.", requirement.Issuer); + _logger.LogError("Unauthorized request. Access token is missing 'client_id' claim for issuer '{Issuer}'.", requirement.Issuer); } return Task.CompletedTask; } @@ -45,14 +45,14 @@ protected override Task HandleRequirementAsync(AuthorizationHandlerContext conte return Task.CompletedTask; } - string requestDataRecipientProductId = _httpContextAccessor.HttpContext.Request.RouteValues["softwareProductId"]?.ToString(); + string? requestDataRecipientProductId = _httpContextAccessor.HttpContext?.Request.RouteValues["softwareProductId"]?.ToString(); // Token ClientId should match the ProductId. if (!accessTokenClientId.Equals(requestDataRecipientProductId, System.StringComparison.InvariantCultureIgnoreCase)) { using (LogContext.PushProperty("MethodName", "HandleRequirementAsync")) { - _logger.LogError("Unauthorized request. Access token client_id '{accessTokenClientId}' does not match request softwareProductId '{requestDataRecipientProductId}'", accessTokenClientId, requestDataRecipientProductId); + _logger.LogError("Unauthorized request. Access token client_id '{AccessTokenClientId}' does not match request softwareProductId '{RequestDataRecipientProductId}'", accessTokenClientId, requestDataRecipientProductId); } return Task.CompletedTask; } diff --git a/Source/CDR.Register.API.Infrastructure/Authorization/MTLSHandler.cs b/Source/CDR.Register.API.Infrastructure/Authorization/MTLSHandler.cs index 14dd65e..f61aa43 100644 --- a/Source/CDR.Register.API.Infrastructure/Authorization/MTLSHandler.cs +++ b/Source/CDR.Register.API.Infrastructure/Authorization/MTLSHandler.cs @@ -27,7 +27,7 @@ public MtlsHandler(IHttpContextAccessor httpContextAccessor, ILogger(Constants.ConfigurationKeys.CertThumbprintNameHttpHeaderName) ?? Constants.Headers.X_TLS_CLIENT_CERT_THUMBPRINT; - if (_httpContextAccessor.HttpContext.Request.Headers.TryGetValue(certThumbprintNameHttpHeaderName, out StringValues headerThumbprints)) + if (_httpContextAccessor.HttpContext?.Request.Headers.TryGetValue(certThumbprintNameHttpHeaderName, out StringValues headerThumbprints) == true) { - requestHeaderClientCertThumprint = headerThumbprints.First(); + requestHeaderClientCertThumprint = headerThumbprints[0]; } if (string.IsNullOrWhiteSpace(requestHeaderClientCertThumprint)) @@ -53,7 +53,7 @@ protected override Task HandleRequirementAsync(AuthorizationHandlerContext conte return Task.CompletedTask; } - string accessTokenClientCertThumbprint = null; + string? accessTokenClientCertThumbprint = null; var cnfJson = context.User.FindFirst("cnf")?.Value; if (!string.IsNullOrWhiteSpace(cnfJson)) { @@ -74,7 +74,7 @@ protected override Task HandleRequirementAsync(AuthorizationHandlerContext conte { using (LogContext.PushProperty("MethodName", "HandleRequirementAsync")) { - _logger.LogError("Unauthorized request. X-TlsClientCertThumbprint request header value '{requestHeaderClientCertThumprint}' does not match access token cnf:x5t#S256 claim value '{accessTokenClientCertThumbprint}'", requestHeaderClientCertThumprint, accessTokenClientCertThumbprint); + _logger.LogError("Unauthorized request. X-TlsClientCertThumbprint request header value '{RequestHeaderClientCertThumprint}' does not match access token cnf:x5t#S256 claim value '{AccessTokenClientCertThumbprint}'", requestHeaderClientCertThumprint, accessTokenClientCertThumbprint); } return Task.CompletedTask; } diff --git a/Source/CDR.Register.API.Infrastructure/Authorization/PolicyAuthorizeAttribute.cs b/Source/CDR.Register.API.Infrastructure/Authorization/PolicyAuthorizeAttribute.cs index ec289d3..3b25665 100644 --- a/Source/CDR.Register.API.Infrastructure/Authorization/PolicyAuthorizeAttribute.cs +++ b/Source/CDR.Register.API.Infrastructure/Authorization/PolicyAuthorizeAttribute.cs @@ -1,4 +1,5 @@ using CDR.Register.API.Infrastructure.Models; +using CDR.Register.Domain.Models; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.Filters; @@ -12,16 +13,22 @@ namespace CDR.Register.API.Infrastructure.Authorization [AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = true, Inherited = true)] public class PolicyAuthorizeAttribute : AuthorizeAttribute, IAsyncAuthorizationFilter { - private readonly AuthorisationPolicy policy; + public readonly RegisterAuthorisationPolicy policy; - public PolicyAuthorizeAttribute(AuthorisationPolicy policy) + public PolicyAuthorizeAttribute(RegisterAuthorisationPolicy policy) { this.policy = policy; } public async Task OnAuthorizationAsync(AuthorizationFilterContext context) { - var authorizationService = (IAuthorizationService)context.HttpContext.RequestServices.GetService(typeof(IAuthorizationService)); + var authorizationService = (IAuthorizationService?)context.HttpContext.RequestServices.GetService(typeof(IAuthorizationService)); + + if (authorizationService == null) + { + return; + } + var authorizationResult = await authorizationService.AuthorizeAsync(context.HttpContext.User, policy.ToString()); if (authorizationResult.Succeeded) diff --git a/Source/CDR.Register.API.Infrastructure/Authorization/RegisterAuthorisationPolicy.cs b/Source/CDR.Register.API.Infrastructure/Authorization/RegisterAuthorisationPolicy.cs new file mode 100644 index 0000000..7324949 --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/Authorization/RegisterAuthorisationPolicy.cs @@ -0,0 +1,12 @@ +using CDR.Register.Repository.Infrastructure; + +namespace CDR.Register.API.Infrastructure.Authorization +{ + public enum RegisterAuthorisationPolicy + { + [AuthorisationPolicy("DataHolderBrandsApiMultiIndustry", CdsRegistrationScopes.Read, true, false,false)] + DataHolderBrandsApiMultiIndustry, + [AuthorisationPolicy("GetSSAMultiIndustry", CdsRegistrationScopes.Read, true, false, false)] + GetSSAMultiIndustry + } +} diff --git a/Source/CDR.Register.API.Infrastructure/Authorization/RegisterForbidResult.cs b/Source/CDR.Register.API.Infrastructure/Authorization/RegisterForbidResult.cs index 37ce89e..0251492 100644 --- a/Source/CDR.Register.API.Infrastructure/Authorization/RegisterForbidResult.cs +++ b/Source/CDR.Register.API.Infrastructure/Authorization/RegisterForbidResult.cs @@ -1,4 +1,5 @@ using CDR.Register.API.Infrastructure.Models; +using CDR.Register.Domain.Models; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; diff --git a/Source/CDR.Register.API.Infrastructure/Authorization/RegisterUnauthorizedResult.cs b/Source/CDR.Register.API.Infrastructure/Authorization/RegisterUnauthorizedResult.cs index 02a8110..6b82300 100644 --- a/Source/CDR.Register.API.Infrastructure/Authorization/RegisterUnauthorizedResult.cs +++ b/Source/CDR.Register.API.Infrastructure/Authorization/RegisterUnauthorizedResult.cs @@ -1,4 +1,5 @@ using CDR.Register.API.Infrastructure.Models; +using CDR.Register.Domain.Models; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; diff --git a/Source/CDR.Register.API.Infrastructure/Authorization/ScopeHandler.cs b/Source/CDR.Register.API.Infrastructure/Authorization/ScopeHandler.cs index 6d3a59c..c7868f3 100644 --- a/Source/CDR.Register.API.Infrastructure/Authorization/ScopeHandler.cs +++ b/Source/CDR.Register.API.Infrastructure/Authorization/ScopeHandler.cs @@ -18,7 +18,7 @@ public ScopeHandler(ILogger logger) protected override Task HandleRequirementAsync(AuthorizationHandlerContext context, ScopeRequirement requirement) { // Check that authentication was successful before doing anything else - if (!context.User.Identity.IsAuthenticated) + if (context.User.Identity == null || !context.User.Identity.IsAuthenticated) { return Task.CompletedTask; } @@ -34,13 +34,13 @@ protected override Task HandleRequirementAsync(AuthorizationHandlerContext conte } // Return the user claim scope - var userClaimScopes = context.User.FindFirst(c => c.Type == "scope").Value.Split(' '); + var userClaimScopes = context.User.FindFirst(c => c.Type == "scope")?.Value.Split(' '); // Succeed if the scope array contains the required scope // The space character is used to seperate the scopes as this is in line with CDS specifications. string[] requiredScopes = requirement.Scope.Split(' '); - if (userClaimScopes.Intersect(requiredScopes).Any()) + if (userClaimScopes!=null && userClaimScopes.Intersect(requiredScopes).Any()) { context.Succeed(requirement); } diff --git a/Source/CDR.Register.API.Infrastructure/Authorization/ScopeRequirement.cs b/Source/CDR.Register.API.Infrastructure/Authorization/ScopeRequirement.cs index e9c6006..9dde007 100644 --- a/Source/CDR.Register.API.Infrastructure/Authorization/ScopeRequirement.cs +++ b/Source/CDR.Register.API.Infrastructure/Authorization/ScopeRequirement.cs @@ -7,14 +7,9 @@ public class ScopeRequirement : IAuthorizationRequirement { public string Scope { get; } - public ScopeRequirement(string scope) + public ScopeRequirement(string? scope) { Scope = scope ?? throw new ArgumentNullException(nameof(scope)); } - } - - public class AuthFailure - { - public string Scope { get; set; } - } + } } \ No newline at end of file diff --git a/Source/CDR.Register.API.Infrastructure/CDR.Register.API.Infrastructure.csproj b/Source/CDR.Register.API.Infrastructure/CDR.Register.API.Infrastructure.csproj index e429331..a332dc1 100644 --- a/Source/CDR.Register.API.Infrastructure/CDR.Register.API.Infrastructure.csproj +++ b/Source/CDR.Register.API.Infrastructure/CDR.Register.API.Infrastructure.csproj @@ -1,31 +1,31 @@  - - - net6.0 - 1.3.2 - 1.3.2 - 1.3.2 - - - - - - - - - - - - - - - - - - - - - - - - + + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) + enable + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/CDR.Register.API.Infrastructure/Certificates/CertificateValidator.cs b/Source/CDR.Register.API.Infrastructure/Certificates/CertificateValidator.cs index a915557..11eb189 100644 --- a/Source/CDR.Register.API.Infrastructure/Certificates/CertificateValidator.cs +++ b/Source/CDR.Register.API.Infrastructure/Certificates/CertificateValidator.cs @@ -1,9 +1,8 @@ -using System; -using System.Linq; -using System.Security.Cryptography.X509Certificates; -using CDR.Register.API.Infrastructure.Exceptions; +using CDR.Register.API.Infrastructure.Exceptions; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; +using System; +using System.Security.Cryptography.X509Certificates; namespace CDR.Register.API.Infrastructure { @@ -23,15 +22,17 @@ public CertificateValidator(ILogger logger, IConfiguration public void ValidateClientCertificate(X509Certificate2 clientCert) { - _logger.LogInformation($"Validating certificate within the {nameof(CertificateValidator)}"); + _logger.LogInformation("Validating certificate within the {Name}",nameof(CertificateValidator)); if (clientCert == null) { throw new ArgumentNullException(nameof(clientCert)); } + var rootCAPath = _config.GetValue("RootCACertificatePath")??throw new ClientCertificateException("Root CA Certificate path not configured"); + // Validate that the certificate has been issued by the Mock CDR CA. - var rootCACertificate = new X509Certificate2(_config.GetValue("RootCACertificatePath")); + var rootCACertificate = new X509Certificate2(rootCAPath); var ch = new X509Chain(); ch.ChainPolicy.RevocationMode = X509RevocationMode.NoCheck; ch.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag; @@ -48,9 +49,9 @@ public void ValidateClientCertificate(X509Certificate2 clientCert) throw new ClientCertificateException("The certificate chain cannot be discovered from the provided client certificate.", ex); } - if (ch.ChainStatus.Any()) + if (ch.ChainStatus.Length != 0) { - throw new ClientCertificateException(ch.ChainStatus.First().StatusInformation); + throw new ClientCertificateException(ch.ChainStatus[0].StatusInformation); } } } diff --git a/Source/CDR.Register.API.Infrastructure/Configuration/ConfigureSwaggerOptions.cs b/Source/CDR.Register.API.Infrastructure/Configuration/ConfigureSwaggerOptions.cs new file mode 100644 index 0000000..ca3fb79 --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/Configuration/ConfigureSwaggerOptions.cs @@ -0,0 +1,35 @@ +using CDR.Register.API.Infrastructure.Models; +using Microsoft.AspNetCore.Mvc.ApiExplorer; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using Swashbuckle.AspNetCore.SwaggerGen; + +namespace CDR.Register.API.Infrastructure.Configuration +{ + public class ConfigureSwaggerOptions : IConfigureOptions + { + private readonly IApiVersionDescriptionProvider _provider; + private readonly CdrSwaggerOptions _options; + + public ConfigureSwaggerOptions(IApiVersionDescriptionProvider provider, IOptions options) + { + _provider = provider; + _options = options.Value; + } + + public void Configure(SwaggerGenOptions options) + { + foreach (var description in _provider.ApiVersionDescriptions) + { + options.SwaggerDoc( + description.GroupName, + new Microsoft.OpenApi.Models.OpenApiInfo() + { + Title = _options.SwaggerTitle, + Version = description.ApiVersion.ToString(), + }); + options.UseInlineDefinitionsForEnums(); + } + } + } +} diff --git a/Source/CDR.Register.API.Infrastructure/Configuration/ConfigureUnversionedSwaggerOptions.cs b/Source/CDR.Register.API.Infrastructure/Configuration/ConfigureUnversionedSwaggerOptions.cs new file mode 100644 index 0000000..89db471 --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/Configuration/ConfigureUnversionedSwaggerOptions.cs @@ -0,0 +1,31 @@ +using CDR.Register.API.Infrastructure.Models; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using Swashbuckle.AspNetCore.SwaggerGen; + +namespace CDR.Register.API.Infrastructure.Configuration +{ + public class ConfigureUnversionedSwaggerOptions : IConfigureOptions + { + private const string _defaultVersion = "v1"; // This is what we are using as a default definition title for unversioned APIs + + private readonly CdrSwaggerOptions _options; + + public ConfigureUnversionedSwaggerOptions(IOptions options) + { + _options = options.Value; + } + + public void Configure(SwaggerGenOptions options) + { + options.SwaggerDoc( + _defaultVersion, // This name is used to direct to the path + new Microsoft.OpenApi.Models.OpenApiInfo() + { + Title = _options.SwaggerTitle, + Version = _defaultVersion, + }); + options.UseInlineDefinitionsForEnums(); + } + } +} diff --git a/Source/CDR.Register.API.Infrastructure/Constants.cs b/Source/CDR.Register.API.Infrastructure/Constants.cs index 65823d2..7a2b03a 100644 --- a/Source/CDR.Register.API.Infrastructure/Constants.cs +++ b/Source/CDR.Register.API.Infrastructure/Constants.cs @@ -10,22 +10,6 @@ public static class Headers public const string X_TLS_CLIENT_CERT_COMMON_NAME = "X-TlsClientCertCN"; } - public static class ErrorCodes - { - public const string FieldMissing = "urn:au-cds:error:cds-all:Field/Missing"; - public const string FieldInvalid = "urn:au-cds:error:cds-all:Field/Invalid"; - public const string HeaderMissing = "urn:au-cds:error:cds-all:Header/Missing"; - public const string VersionInvalid = "urn:au-cds:error:cds-all:Header/InvalidVersion"; - } - - public static class ErrorTitles - { - public const string FieldMissing = "Missing Required Field"; - public const string FieldInvalid = "Invalid Field"; - public const string HeaderMissing = "Missing Required Header"; - public const string VersionInvalid = "Invalid Version"; - } - public static class ConfigurationKeys { public const string BasePath = "BasePath"; @@ -36,6 +20,14 @@ public static class ConfigurationKeys public const string ClockSkewSeconds = "ClockSkewSeconds"; public const string CertThumbprintNameHttpHeaderName = "Certificate:CertThumbprintNameHttpHeaderName"; public const string CertCommonNameHttpHeaderName = "Certificate:CertCommonNameHttpHeaderName"; + public const string EnableSwagger = "EnableSwagger"; + public const string IsServerCertificateValidationEnabled = "EnableServerCertificateValidation"; } + + public static class Versioning + { + public const string GroupNameFormat = "'v'VVV"; + } + } } diff --git a/Source/CDR.Register.API.Infrastructure/Extensions.cs b/Source/CDR.Register.API.Infrastructure/Extensions.cs index a40f641..efd4ed7 100644 --- a/Source/CDR.Register.API.Infrastructure/Extensions.cs +++ b/Source/CDR.Register.API.Infrastructure/Extensions.cs @@ -1,5 +1,7 @@ using CDR.Register.API.Infrastructure.Authorization; +using CDR.Register.API.Infrastructure.Configuration; using CDR.Register.API.Infrastructure.Models; +using CDR.Register.API.Infrastructure.SwaggerFilters; using CDR.Register.Repository.Infrastructure; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Authorization; @@ -11,12 +13,15 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Options; using Microsoft.Extensions.Primitives; using Microsoft.IdentityModel.Protocols.OpenIdConnect; using Microsoft.OpenApi.Models; using Newtonsoft.Json; +using Swashbuckle.AspNetCore.SwaggerGen; using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Net.Http; using System.Security.Authentication; @@ -29,7 +34,7 @@ namespace CDR.Register.API.Infrastructure { public static class Extensions { - public static string GetInfosecBaseUrl(this IConfiguration configuration, HttpContext context, bool isSecure = false) + public static string GetInfosecBaseUrl(this IConfiguration configuration, HttpContext? context, bool isSecure = false) { var basePath = string.Empty; if (context.Request != null && context.Request.PathBase.HasValue) @@ -83,7 +88,7 @@ public static void UseBasePathOrExpression(this IApplicationBuilder app, IConfig app.Use((context, next) => { var matches = Regex.Matches(context.Request.Path, basePathExpression, RegexOptions.CultureInvariant | RegexOptions.IgnoreCase, matchTimeout: TimeSpan.FromMilliseconds(500)); - if (matches.Any()) + if (matches.Count!=0) { var path = matches[0].Groups[0].Value; var remainder = matches[0].Groups[1].Value; @@ -119,7 +124,7 @@ public static IWebHostBuilder UseRegister(this IWebHostBuilder webBuilder, IConf public static void AddAuthenticationAuthorization(this IServiceCollection services, IConfiguration configuration) { var metadataAddress = configuration.GetValue(Constants.ConfigurationKeys.OidcMetadataAddress); - var jwks = Task.Run(() => LoadJwks($"{metadataAddress}/jwks")).Result; + var jwks = Task.Run(() => LoadJwks($"{metadataAddress}/jwks", configuration)).Result; // Default 2 mins* var clockSkew = configuration.GetValue(Constants.ConfigurationKeys.ClockSkewSeconds, 120); @@ -128,7 +133,7 @@ public static void AddAuthenticationAuthorization(this IServiceCollection servic options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }) - .AddJwtBearer("Bearer", options => + .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options => { options.Configuration = new OpenIdConnectConfiguration() { @@ -144,76 +149,43 @@ public static void AddAuthenticationAuthorization(this IServiceCollection servic RequireSignedTokens = true, ValidateLifetime = true, ClockSkew = TimeSpan.FromSeconds(clockSkew), - IssuerSigningKeys = options.Configuration.JsonWebKeySet.Keys + IssuerSigningKeys = options.Configuration.JsonWebKeySet?.Keys }; // Ignore server certificate issues when retrieving OIDC configuration and JWKS. - options.BackchannelHttpHandler = new HttpClientHandler - { - ServerCertificateCustomValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true - }; - + var handler = new HttpClientHandler(); + handler.SetServerCertificateValidation(configuration); + options.BackchannelHttpHandler = handler; }); // Authorization services.AddMvcCore().AddAuthorization(options => { - options.AddPolicy(AuthorisationPolicy.DataHolderBrandsApi.ToString(), policy => - { - policy.Requirements.Add(new ScopeRequirement(CdsRegistrationScopes.BankRead)); - policy.Requirements.Add(new MtlsRequirement()); - }); - - options.AddPolicy(AuthorisationPolicy.GetSSA.ToString(), policy => - { - policy.Requirements.Add(new ScopeRequirement(CdsRegistrationScopes.BankRead)); - policy.Requirements.Add(new MtlsRequirement()); - }); - options.AddPolicy(AuthorisationPolicy.DataHolderBrandsApiMultiIndustry.ToString(), policy => - { - policy.Requirements.Add(new ScopeRequirement(CdsRegistrationScopes.Read)); - policy.Requirements.Add(new MtlsRequirement()); - }); - options.AddPolicy(AuthorisationPolicy.GetSSAMultiIndustry.ToString(), policy => + var allAuthPolicies = AuthorisationPolicies.GetAllPolicies(); + + //Apply all listed policities from a single source of truth that is also used for self-documentation + foreach(var pol in allAuthPolicies) { - policy.Requirements.Add(new ScopeRequirement(CdsRegistrationScopes.Read)); - policy.Requirements.Add(new MtlsRequirement()); - }); + options.AddPolicy(pol.Name, policy => + { + policy.Requirements.Add(new ScopeRequirement(pol.ScopeRequirement)); + if (pol.HasMtlsRequirement) + { + policy.Requirements.Add(new MtlsRequirement()); + } + }); + } }); services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); - services.AddSwaggerGen(c => - { - c.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme - { - Description = "JWT Authorization header using the Bearer scheme. Please enter into field the word 'Bearer' following by space and JWT", - Name = "Authorization", - In = ParameterLocation.Header, - Scheme = "Bearer", - Type = SecuritySchemeType.ApiKey, - BearerFormat = "JWT" - }); - c.AddSecurityRequirement(new OpenApiSecurityRequirement - { - { - new OpenApiSecurityScheme - { - Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = "Bearer" } - }, - new List() - } - }); - }); } - static async Task LoadJwks(string jwksUri) + static async Task LoadJwks(string jwksUri, IConfiguration configuration) { - var handler = new HttpClientHandler - { - ServerCertificateCustomValidationCallback = (a, b, c, d) => true - }; + var handler = new HttpClientHandler(); + handler.SetServerCertificateValidation(configuration); var httpClient = new HttpClient(handler); var httpResponse = await httpClient.GetAsync(jwksUri); @@ -234,7 +206,7 @@ public static LinksPaginated GetPaginated( int? currentPage, int totalPages, int? pageSize, - string hostName = null, + string hostName = "", bool isSecure = false) { var currentUrl = controller.Request.GetDisplayUrl(); @@ -271,7 +243,7 @@ public static LinksPaginated GetPaginated( return links; } - public static Links GetSelf(this ControllerBase controller, IConfiguration configuration, HttpContext context, string hostName = null) + public static Links GetSelf(this ControllerBase controller, IConfiguration configuration, HttpContext context, string hostName = "") { var currentUrl = controller.Request.GetDisplayUrl(); var links = new Links @@ -299,15 +271,15 @@ public static string GetHostNameAsUri(this ControllerBase controller, IConfigura hostNameToUse = hostName; } - if (!hostNameToUse.StartsWith("https", StringComparison.OrdinalIgnoreCase)) + if (hostNameToUse!= null && !hostNameToUse.StartsWith("https", StringComparison.OrdinalIgnoreCase)) { hostNameToUse = "https://" + hostNameToUse; } } - return hostNameToUse; + return hostNameToUse ?? ""; } - public static Uri GetPageUri( + public static Uri? GetPageUri( this ControllerBase controller, string routeName, DateTime? updatedSince, @@ -315,7 +287,7 @@ public static Uri GetPageUri( int? pageSize, string newHostName) { - string url = null; + string? url = null; if (updatedSince.HasValue && currentPage.HasValue && pageSize.HasValue) { @@ -376,7 +348,7 @@ public static Industry ToIndustry(this string industry) public static IEnumerable GetValueAsList(this IConfiguration configuration, string key, string delimiter) { - string value = configuration.GetValue(key); + string? value = configuration.GetValue(key); if (string.IsNullOrEmpty(value)) { return Array.Empty(); @@ -389,9 +361,9 @@ public static string GetClientCertificateThumbprint(this HttpContext context, IC { var certThumbprintNameHttpHeaderName = configuration.GetValue(Constants.ConfigurationKeys.CertThumbprintNameHttpHeaderName) ?? Constants.Headers.X_TLS_CLIENT_CERT_THUMBPRINT; - if (context.Request.Headers.TryGetValue(certThumbprintNameHttpHeaderName, out StringValues headerThumbprints)) + if (context.Request.Headers.TryGetValue(certThumbprintNameHttpHeaderName, out StringValues headerThumbprints) && headerThumbprints.Count > 0) { - return headerThumbprints.First(); + return headerThumbprints[0] ?? ""; } return ""; @@ -399,12 +371,12 @@ public static string GetClientCertificateThumbprint(this HttpContext context, IC public static string GetClientCertificateCommonName(this HttpContext context, ILogger logger, IConfiguration configuration) { - string headerCommonName; + string? headerCommonName; var certCommonNameHttpHeaderName = configuration.GetValue(Constants.ConfigurationKeys.CertCommonNameHttpHeaderName) ?? Constants.Headers.X_TLS_CLIENT_CERT_COMMON_NAME; - if (context.Request.Headers.TryGetValue(certCommonNameHttpHeaderName, out StringValues headerCommonNames)) + if (context.Request.Headers.TryGetValue(certCommonNameHttpHeaderName, out StringValues headerCommonNames) && headerCommonNames.Count > 0) { - headerCommonName = headerCommonNames.First(); + headerCommonName = headerCommonNames[0] ?? ""; } else { @@ -420,7 +392,7 @@ public static string GetClientCertificateCommonName(this HttpContext context, IL commonName = commonName.Trim('"'); - logger.LogInformation($"Received commonName of {headerCommonName} in header and parsed commonName as {commonName}"); + logger.LogInformation("Received commonName of {HeaderCommonName} in header and parsed commonName as {CommonName}", headerCommonName, commonName); return commonName; } @@ -428,7 +400,7 @@ public static bool IsDistinguishedName(this string value) { try { - X500DistinguishedName dn = new(value); + _ = new X500DistinguishedName(value); return true; } catch @@ -453,10 +425,11 @@ public static string GetCommonNameFromDistinguishedName(this string distinguishe { try { - X500DistinguishedName dn = new X500DistinguishedName(distinguishedName); - var cnAttribute = dn.Decode(X500DistinguishedNameFlags.UseNewLines) - .Split('\n') - .FirstOrDefault(attr => attr.Trim().StartsWith("CN=")); + X500DistinguishedName dn = new(distinguishedName); + var cnAttribute = Array.Find( + dn.Decode(X500DistinguishedNameFlags.UseNewLines).Split('\n'), + attr => attr.Trim().StartsWith("CN=")); + if (cnAttribute != null) { @@ -471,5 +444,71 @@ public static string GetCommonNameFromDistinguishedName(this string distinguishe } } + + public static IServiceCollection AddCdrSwaggerGen(this IServiceCollection services, Action configureRegisterSwaggerOptions, bool isVersioned = true) + { + var options = new CdrSwaggerOptions(); + configureRegisterSwaggerOptions(options); + + services.Configure(configureRegisterSwaggerOptions); + + if (isVersioned) + { + services.AddTransient, ConfigureSwaggerOptions>(); + + //Required for our Swagger setup to work when endpoints have been versioned + services.AddVersionedApiExplorer(opt => + { + opt.GroupNameFormat = options.VersionedApiGroupNameFormat; + }); + + } + else + { + services.AddTransient, ConfigureUnversionedSwaggerOptions>(); + } + + services.AddSwaggerGen(c => + { + // swagger comments from project xml documentation files + var xmlFiles = Directory.GetFiles(AppContext.BaseDirectory, "*.xml", SearchOption.TopDirectoryOnly).ToList(); + xmlFiles.ForEach(fileName => c.IncludeXmlComments(fileName)); + c.EnableAnnotations(); // https://github.com/domaindrivendev/Swashbuckle.AspNetCore/blob/master/README.md#enrich-parameter-metadata + + c.DocumentFilter(); + c.ParameterFilter(); + c.SchemaFilter(); + c.OperationFilter(); + c.OperationFilter(); + + if (options.IncludeAuthentication) + { + c.AddSecurityDefinition(JwtBearerDefaults.AuthenticationScheme, new OpenApiSecurityScheme + { + Description = "JWT Authorization header using the Bearer scheme. Please enter into field the word 'Bearer' following by space and JWT.", + Name = "Authorization", + In = ParameterLocation.Header, + Scheme = JwtBearerDefaults.AuthenticationScheme, + Type = SecuritySchemeType.ApiKey, + BearerFormat = "JWT", + }); + + c.AddSecurityRequirement(new OpenApiSecurityRequirement + { + { + new OpenApiSecurityScheme + { + Reference = new OpenApiReference { Type = ReferenceType.SecurityScheme, Id = JwtBearerDefaults.AuthenticationScheme }, + }, + new List() + }, + }); + } + }); + + services.AddSwaggerGenNewtonsoftSupport(); + + return services; + } } } diff --git a/Source/CDR.Register.API.Infrastructure/Extensions/AttributeExtensions.cs b/Source/CDR.Register.API.Infrastructure/Extensions/AttributeExtensions.cs new file mode 100644 index 0000000..c5a5eca --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/Extensions/AttributeExtensions.cs @@ -0,0 +1,55 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; + +namespace CDR.Register.API.Infrastructure +{ + public static class AttributeExtensions + { + public static IEnumerable GetAttributes(List types, MethodInfo info, bool inherit) + { + var actionAttributes = info.GetCustomAttributes(inherit); + + IEnumerable controllerAttributes = []; + + if (info.DeclaringType != null) + { + controllerAttributes = info.DeclaringType.GetTypeInfo().GetCustomAttributes(inherit); + } + var actionAndControllerAttributes = actionAttributes.Union(controllerAttributes); + + return actionAndControllerAttributes.Where(attr => types.Contains(attr.GetType())); + } + + public static T? GetAttribute(MethodInfo info, bool inherit) + { + var actionAttributes = info.GetCustomAttributes(inherit); + + IEnumerable controllerAttributes = []; + + if (info.DeclaringType != null) + { + controllerAttributes = info.DeclaringType.GetTypeInfo().GetCustomAttributes(inherit); + } + var actionAndControllerAttributes = actionAttributes.Union(controllerAttributes); + + return (T?)actionAndControllerAttributes.SingleOrDefault(attr => attr.GetType() == typeof(T)); + } + + public static bool HasAttribute(MethodInfo info, Type type, bool inherit) + { + var actionAttributes = info.GetCustomAttributes(inherit); + + IEnumerable controllerAttributes = []; + + if (info.DeclaringType != null) + { + controllerAttributes = info.DeclaringType.GetTypeInfo().GetCustomAttributes(inherit); + } + var actionAndControllerAttributes = actionAttributes.Union(controllerAttributes); + + return actionAndControllerAttributes.Any(attr => attr.GetType() == type); + } + } +} diff --git a/Source/CDR.Register.API.Infrastructure/Extensions/CdrSwaggerMiddlewareExtensions.cs b/Source/CDR.Register.API.Infrastructure/Extensions/CdrSwaggerMiddlewareExtensions.cs new file mode 100644 index 0000000..f1abdb0 --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/Extensions/CdrSwaggerMiddlewareExtensions.cs @@ -0,0 +1,54 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Mvc.ApiExplorer; +using Microsoft.Extensions.DependencyInjection; +using System.Linq; + +namespace CDR.Register.API.Infrastructure +{ + public static class CdrSwaggerMiddlewareExtensions + { + public static IApplicationBuilder UseCdrSwagger(this IApplicationBuilder builder, IApiVersionDescriptionProvider? provider = null) + { + if (provider == null) + { + provider = builder.ApplicationServices.GetRequiredService(); + } + + builder.UseSwagger(); + + builder.UseSwaggerUI( + options => + { + // Configure swagger Ui for multiple versions of the API + string swaggerJsonBasePath = string.IsNullOrWhiteSpace(options.RoutePrefix) ? "." : ".."; + + foreach (var groupName in provider.ApiVersionDescriptions.Select(d => d.GroupName)) + { + options.SwaggerEndpoint( + $"{swaggerJsonBasePath}/swagger/{groupName}/swagger.json", + groupName.ToUpperInvariant()); + } + }); + + return builder; + } + + public static IApplicationBuilder UseCdrSwagger(this IApplicationBuilder builder, string name) + { + builder.UseSwagger(); + + builder.UseSwaggerUI( + options => + { + // Configure swagger Ui for multiple versions of the API + string swaggerJsonBasePath = string.IsNullOrWhiteSpace(options.RoutePrefix) ? "." : ".."; + + options.SwaggerEndpoint( + $"{swaggerJsonBasePath}/swagger/v1/swagger.json", + name); + }); + + return builder; + } + } +} diff --git a/Source/CDR.Register.API.Infrastructure/Extensions/HttpClientHandlerExtensions.cs b/Source/CDR.Register.API.Infrastructure/Extensions/HttpClientHandlerExtensions.cs new file mode 100644 index 0000000..00b3874 --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/Extensions/HttpClientHandlerExtensions.cs @@ -0,0 +1,37 @@ +using Microsoft.Extensions.Configuration; +using System; +using System.Net.Http; +using System.Net.Security; +using System.Security.Cryptography.X509Certificates; + +namespace CDR.Register.API.Infrastructure +{ + public static class HttpClientHandlerExtensions + { + public static void SetServerCertificateValidation(this HttpClientHandler httpClientHandler, IConfiguration configuration) + { + httpClientHandler.ServerCertificateCustomValidationCallback = ServerCertificateCustomValidationCallback(configuration); + } + + public static Func ServerCertificateCustomValidationCallback( + IConfiguration configuration) + { + bool isServerCertificateValidationEnabled = configuration.GetValue(Constants.ConfigurationKeys.IsServerCertificateValidationEnabled); + return ServerCertificateCustomValidationCallback(isServerCertificateValidationEnabled); + } + + public static Func ServerCertificateCustomValidationCallback( + bool isServerCertificateValidationEnabled) + { + return (message, serverCert, chain, errors) => + { + if (!isServerCertificateValidationEnabled) + { + return true; + } + + return errors == SslPolicyErrors.None; + }; + } + } +} \ No newline at end of file diff --git a/Source/CDR.Register.API.Infrastructure/Filters/CheckDate.cs b/Source/CDR.Register.API.Infrastructure/Filters/CheckDate.cs index 29da017..a1cc67e 100644 --- a/Source/CDR.Register.API.Infrastructure/Filters/CheckDate.cs +++ b/Source/CDR.Register.API.Infrastructure/Filters/CheckDate.cs @@ -1,6 +1,6 @@ using System; using System.ComponentModel.DataAnnotations; -using CDR.Register.API.Infrastructure.Models; +using CDR.Register.Domain.Models; using Newtonsoft.Json; namespace CDR.Register.API.Infrastructure.Filters @@ -8,9 +8,9 @@ namespace CDR.Register.API.Infrastructure.Filters [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)] public class CheckDateAttribute : ValidationAttribute { - protected override ValidationResult IsValid(object value, ValidationContext validationContext) + protected override ValidationResult? IsValid(object? value, ValidationContext? validationContext) { - if (!DateTime.TryParse(value.ToString(), out DateTime output)) + if (!DateTime.TryParse(value?.ToString(), out DateTime output)) { return new ValidationResult(JsonConvert.SerializeObject(ResponseErrorList.InvalidDateTime())); } diff --git a/Source/CDR.Register.API.Infrastructure/Filters/CheckIndustryAttribute.cs b/Source/CDR.Register.API.Infrastructure/Filters/CheckIndustryAttribute.cs index 29ad15e..338d18e 100644 --- a/Source/CDR.Register.API.Infrastructure/Filters/CheckIndustryAttribute.cs +++ b/Source/CDR.Register.API.Infrastructure/Filters/CheckIndustryAttribute.cs @@ -1,4 +1,4 @@ -using CDR.Register.API.Infrastructure.Models; +using CDR.Register.Domain.Models; using CDR.Register.Repository.Infrastructure; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; @@ -26,11 +26,9 @@ public CheckIndustryAttribute(Industry industryRestriction) public override void OnActionExecuting(ActionExecutingContext context) { - var industry = context.ActionArguments["industry"] as string; - - if (!IsValidIndustry(industry)) + if (context.ActionArguments["industry"] is string industry && !IsValidIndustry(industry)) { - context.Result = new BadRequestObjectResult(new ResponseErrorList().InvalidIndustry()); + context.Result = new BadRequestObjectResult(new ResponseErrorList().AddInvalidIndustry()); } base.OnActionExecuting(context); @@ -51,7 +49,7 @@ private bool IsValidIndustry(string industry) } // Check that the incoming industry matches the industry restriction, if set. - if (!string.IsNullOrEmpty(_industryRestriction) && _industryRestriction != industryItem.ToString().ToUpper()) + if (!string.IsNullOrEmpty(_industryRestriction) && !string.Equals(_industryRestriction, industryItem.ToString(), StringComparison.CurrentCultureIgnoreCase)) { return false; } diff --git a/Source/CDR.Register.API.Infrastructure/Filters/CheckPage.cs b/Source/CDR.Register.API.Infrastructure/Filters/CheckPage.cs index 2c0f2ac..947a714 100644 --- a/Source/CDR.Register.API.Infrastructure/Filters/CheckPage.cs +++ b/Source/CDR.Register.API.Infrastructure/Filters/CheckPage.cs @@ -1,6 +1,6 @@ using System; using System.ComponentModel.DataAnnotations; -using CDR.Register.API.Infrastructure.Models; +using CDR.Register.Domain.Models; using Newtonsoft.Json; namespace CDR.Register.API.Infrastructure.Filters @@ -8,7 +8,7 @@ namespace CDR.Register.API.Infrastructure.Filters [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)] public class CheckPageAttribute : ValidationAttribute { - protected override ValidationResult IsValid(object value, ValidationContext validationContext) + protected override ValidationResult? IsValid(object? value, ValidationContext? validationContext) { if (value == null) { diff --git a/Source/CDR.Register.API.Infrastructure/Filters/CheckPageSize.cs b/Source/CDR.Register.API.Infrastructure/Filters/CheckPageSize.cs index ae64a6e..23cd18e 100644 --- a/Source/CDR.Register.API.Infrastructure/Filters/CheckPageSize.cs +++ b/Source/CDR.Register.API.Infrastructure/Filters/CheckPageSize.cs @@ -1,14 +1,14 @@ -using System; -using System.ComponentModel.DataAnnotations; -using CDR.Register.API.Infrastructure.Models; +using CDR.Register.Domain.Models; using Newtonsoft.Json; +using System; +using System.ComponentModel.DataAnnotations; namespace CDR.Register.API.Infrastructure.Filters { [AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false)] public class CheckPageSizeAttribute : ValidationAttribute { - protected override ValidationResult IsValid(object value, ValidationContext validationContext) + protected override ValidationResult? IsValid(object? value, ValidationContext? validationContext) { if (value == null) { diff --git a/Source/CDR.Register.API.Infrastructure/Filters/ETagAttribute.cs b/Source/CDR.Register.API.Infrastructure/Filters/ETagAttribute.cs index 3012e2d..53f29c4 100644 --- a/Source/CDR.Register.API.Infrastructure/Filters/ETagAttribute.cs +++ b/Source/CDR.Register.API.Infrastructure/Filters/ETagAttribute.cs @@ -2,6 +2,7 @@ using System.Net; using System.Net.Http; using System.Security.Cryptography; +using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using Microsoft.Net.Http.Headers; @@ -28,9 +29,9 @@ public override void OnActionExecuted(ActionExecutedContext context) var etag = GenerateETag(res); // Fetch etag from the incoming request header. - if (request.Headers.ContainsKey(HeaderNames.IfNoneMatch)) + if (request.Headers.TryGetValue(HeaderNames.IfNoneMatch, out var headerValues)) { - var incomingEtag = request.Headers[HeaderNames.IfNoneMatch].ToString().Trim('"'); + var incomingEtag = headerValues.ToString().Trim('"'); // If both the etags are equal, so return a 304 Not Modified response. if (incomingEtag.Equals(etag)) @@ -40,7 +41,7 @@ public override void OnActionExecuted(ActionExecutedContext context) } // Add ETag response header - response.Headers.Add(HeaderNames.ETag, $"\"{etag}\""); + response.Headers.Append(HeaderNames.ETag, $"\"{etag}\""); } base.OnActionExecuted(context); diff --git a/Source/CDR.Register.API.Infrastructure/Filters/LogActionEntryAttribute.cs b/Source/CDR.Register.API.Infrastructure/Filters/LogActionEntryAttribute.cs index 0ffa1ac..95ac3ee 100644 --- a/Source/CDR.Register.API.Infrastructure/Filters/LogActionEntryAttribute.cs +++ b/Source/CDR.Register.API.Infrastructure/Filters/LogActionEntryAttribute.cs @@ -17,11 +17,11 @@ public LogActionEntryAttribute(ILogger logger) public override void OnActionExecuting(ActionExecutingContext context) { - var controller = context.RouteData.Values["controller"].ToString(); - var action = context.RouteData.Values["action"].ToString(); + var controller = context.RouteData.Values["controller"]?.ToString(); + var action = context.RouteData.Values["action"]?.ToString(); using (LogContext.PushProperty("MethodName", action)) { - _logger.LogInformation("Request received to {controller}.{action}", controller, action); + _logger.LogInformation("Request received to {Controller}.{Action}", controller, action); } base.OnActionExecuting(context); diff --git a/Source/CDR.Register.API.Infrastructure/Middleware/ApiExceptionHandler.cs b/Source/CDR.Register.API.Infrastructure/Middleware/ApiExceptionHandler.cs index 291096a..07a9844 100644 --- a/Source/CDR.Register.API.Infrastructure/Middleware/ApiExceptionHandler.cs +++ b/Source/CDR.Register.API.Infrastructure/Middleware/ApiExceptionHandler.cs @@ -1,5 +1,6 @@ using CDR.Register.API.Infrastructure.Models; using CDR.Register.API.Infrastructure.Versioning; +using CDR.Register.Domain.Models; using Microsoft.AspNetCore.Diagnostics; using Microsoft.AspNetCore.Http; using Newtonsoft.Json; @@ -35,22 +36,22 @@ public async static Task Handle(HttpContext context) if (ex is InvalidVersionException) { statusCode = (int)HttpStatusCode.BadRequest; - handledError = JsonConvert.SerializeObject(new ResponseErrorList().InvalidXVInvalidVersion(), jsonSerializerSettings); + handledError = JsonConvert.SerializeObject(new ResponseErrorList().AddInvalidXVInvalidVersion(), jsonSerializerSettings); } if (ex is UnsupportedVersionException) { statusCode = (int)HttpStatusCode.NotAcceptable; - handledError = JsonConvert.SerializeObject(new ResponseErrorList().InvalidXVUnsupportedVersion(), jsonSerializerSettings); + handledError = JsonConvert.SerializeObject(new ResponseErrorList().AddInvalidXVUnsupportedVersion(), jsonSerializerSettings); } if (ex is MissingRequiredHeaderException) { var missingRequiredHeaderException = ex as MissingRequiredHeaderException; - if (missingRequiredHeaderException.HeaderName == Headers.X_V) + if (missingRequiredHeaderException?.HeaderName == Headers.X_V) { statusCode = (int)HttpStatusCode.BadRequest; - handledError = JsonConvert.SerializeObject(new ResponseErrorList().InvalidXVMissingRequiredHeader(), jsonSerializerSettings); + handledError = JsonConvert.SerializeObject(new ResponseErrorList().AddInvalidXVMissingRequiredHeader(), jsonSerializerSettings); } } diff --git a/Source/CDR.Register.API.Infrastructure/Middleware/ModelStateErrorMiddleware.cs b/Source/CDR.Register.API.Infrastructure/Middleware/ModelStateErrorMiddleware.cs index c6cb08d..0ebc291 100644 --- a/Source/CDR.Register.API.Infrastructure/Middleware/ModelStateErrorMiddleware.cs +++ b/Source/CDR.Register.API.Infrastructure/Middleware/ModelStateErrorMiddleware.cs @@ -1,9 +1,9 @@ -using System.Linq; -using System.Net; -using CDR.Register.API.Infrastructure.Models; +using CDR.Register.Domain.Models; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; +using System.Linq; +using System.Net; namespace CDR.Register.API.Infrastructure.Middleware { @@ -11,34 +11,36 @@ public static class ModelStateErrorMiddleware { public static IActionResult ExecuteResult(ActionContext context) { - var modelStateEntries = context.ModelState.Where(e => e.Value.Errors.Count > 0).ToArray(); + var modelStateEntries = context.ModelState.Where(e => e.Value?.Errors.Count > 0).ToArray(); var responseErrorList = new ResponseErrorList(); - if (modelStateEntries.Any()) + if (modelStateEntries.Length > 0) { foreach (var modelStateEntry in modelStateEntries) { - foreach (var errorMessage in modelStateEntry.Value.Errors.Select(x => x.ErrorMessage)) + if (modelStateEntry.Value != null) { - try - { - var error = JsonConvert.DeserializeObject(errorMessage); - error.Detail = string.Format(error.Detail, modelStateEntry.Key); - responseErrorList.Errors.Add(error); - } - catch + foreach (var errorMessage in modelStateEntry.Value.Errors.Select(x => x.ErrorMessage)) { - // This is for default and unhandled model errors. - var error = new Error + try { - Code = StatusCodes.Status400BadRequest.ToString(), - Title = HttpStatusCode.BadRequest.ToString(), - Detail = $"{modelStateEntry.Key}: {errorMessage}" - }; - responseErrorList.Errors.Add(error); + var deserError = JsonConvert.DeserializeObject(errorMessage); + + if (deserError != null) + { + responseErrorList.Errors.Add(new Error(deserError.Code, deserError.Title, string.Format(deserError.Detail, modelStateEntry.Key), deserError.Meta?.Urn)); + } + } + catch + { + // This is for default and unhandled model errors. + var error = new Error(StatusCodes.Status400BadRequest.ToString(), HttpStatusCode.BadRequest.ToString(), $"{modelStateEntry.Key}: {errorMessage}"); + responseErrorList.Errors.Add(error); + } } } + } } diff --git a/Source/CDR.Register.API.Infrastructure/Models/AuthorisationPolicy.cs b/Source/CDR.Register.API.Infrastructure/Models/AuthorisationPolicy.cs deleted file mode 100644 index 1d3f99a..0000000 --- a/Source/CDR.Register.API.Infrastructure/Models/AuthorisationPolicy.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace CDR.Register.API.Infrastructure.Models -{ - public enum AuthorisationPolicy - { - DataHolderBrandsApi, - DataHolderBrandsApiMultiIndustry, - GetSSA, - GetSSAMultiIndustry - } -} diff --git a/Source/CDR.Register.API.Infrastructure/Models/CdrApiEndpointVersionOptions.cs b/Source/CDR.Register.API.Infrastructure/Models/CdrApiEndpointVersionOptions.cs new file mode 100644 index 0000000..024c813 --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/Models/CdrApiEndpointVersionOptions.cs @@ -0,0 +1,57 @@ +namespace CDR.Register.API.Infrastructure.Models +{ + public class CdrApiEndpointVersionOptions + { + public readonly string Path; + public readonly bool IsVersioned; + public readonly bool IsXVHeaderMandatory; + public readonly int? CurrentMinVersion; + public readonly int? CurrentMaxVersion; + public readonly int? MinVerForResponseErrorListV2; //any supported versions earlier than this number will use ResponseErrorList (v1) as per the CDS standards + + /// + /// Constructs an option set where multiple versions of the endpoint are supported + /// + /// + /// + /// + /// + /// + public CdrApiEndpointVersionOptions(string path, bool isXvMandatory, int minVersion, int maxVersion, int minVersionForErrorListV2) + { + Path = path; + IsVersioned = true; + IsXVHeaderMandatory = isXvMandatory; + CurrentMinVersion = minVersion; + CurrentMaxVersion = maxVersion; + MinVerForResponseErrorListV2 = minVersionForErrorListV2; + } + + /// + /// Constructs an option set where only one version of the endpoint is supported + /// + /// + /// + /// + public CdrApiEndpointVersionOptions(string path, bool isXvMandatory, int version) + { + Path = path; + IsVersioned = true; + IsXVHeaderMandatory = isXvMandatory; + CurrentMinVersion = version; + CurrentMaxVersion = version; + MinVerForResponseErrorListV2 = version; + } + + /// + /// Constructs an option set where the endpoint is unversioned + /// + /// + public CdrApiEndpointVersionOptions(string path) + { + Path = path; + IsVersioned = false; + IsXVHeaderMandatory = false; + } + } +} diff --git a/Source/CDR.Register.API.Infrastructure/Models/CdrApiOptions.cs b/Source/CDR.Register.API.Infrastructure/Models/CdrApiOptions.cs new file mode 100644 index 0000000..e6a20b6 --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/Models/CdrApiOptions.cs @@ -0,0 +1,45 @@ +using Microsoft.AspNetCore.Http; +using System.Collections.Generic; +using System.Linq; + +namespace CDR.Register.API.Infrastructure.Models +{ + public class CdrApiOptions + { + private static readonly List _supportedApiVersions = new List + { + //(?i) is to make the regex case insensitive + //(%7B)* and (%7D)* represent the possibility of a { and } in the path, to cover the value '{industry}' for OAS generation purposes + + //Register + new CdrApiEndpointVersionOptions(@"(?i)\/cdr-register\/v1\/(%7B)*[A-Za-z]*(%7D)*\/data-holders\/brands", true, 2), + new CdrApiEndpointVersionOptions(@"(?i)\/cdr-register\/v1\/(%7B)*[A-Za-z]*(%7D)*\/data-holders\/status",false,1), + new CdrApiEndpointVersionOptions(@"(?i)\/cdr-register\/v1\/(%7B)*[A-Za-z]*(%7D)*\/data-recipients",true,3), + new CdrApiEndpointVersionOptions(@"(?i)\/cdr-register\/v1\/(%7B)*[A-Za-z]*(%7D)*\/data-recipients\/status",true,2), + new CdrApiEndpointVersionOptions(@"(?i)\/cdr-register\/v1\/(%7B)*[A-Za-z]*(%7D)*\/data-recipients\/brands\/software-products\/status",true,2), + new CdrApiEndpointVersionOptions(@"(?i)\/cdr-register\/v1\/(%7B)*[A-Za-z]*(%7D)*\/data-recipients\/brands\/[A-Za-z0-9\-]*\/software-products\/[A-Za-z0-9\-]*\/ssa",true,3), + + //Admin + new CdrApiEndpointVersionOptions(@"(?i)\/admin\/metadata\/data-holders",true,1), + new CdrApiEndpointVersionOptions(@"(?i)\/admin\/metadata\/data-recipients",true,1), + }; + + public List EndpointVersionOptions { get; } = _supportedApiVersions; + + public string DefaultVersion { get; set; } = "1"; + + public CdrApiEndpointVersionOptions? GetApiEndpointVersionOption(PathString path) + { + foreach (var supportedApi in EndpointVersionOptions.OrderByDescending(v => v.Path.Length)) + { + var regEx = new System.Text.RegularExpressions.Regex(supportedApi.Path); + if (regEx.IsMatch(path)) + { + return supportedApi; + } + } + + return null; + } + } +} diff --git a/Source/CDR.Register.API.Infrastructure/Models/CdrSwaggerOptions.cs b/Source/CDR.Register.API.Infrastructure/Models/CdrSwaggerOptions.cs new file mode 100644 index 0000000..7f73362 --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/Models/CdrSwaggerOptions.cs @@ -0,0 +1,11 @@ +namespace CDR.Register.API.Infrastructure.Models +{ + public class CdrSwaggerOptions + { + public string? SwaggerTitle { get; set; } + + public bool IncludeAuthentication { get; set; } + + public string VersionedApiGroupNameFormat { get; set; } = Constants.Versioning.GroupNameFormat; //default for group name format + } +} diff --git a/Source/CDR.Register.API.Infrastructure/Models/ErrorResponseVersion.cs b/Source/CDR.Register.API.Infrastructure/Models/ErrorResponseVersion.cs deleted file mode 100644 index a56a41e..0000000 --- a/Source/CDR.Register.API.Infrastructure/Models/ErrorResponseVersion.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System.Net; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Versioning; - -namespace CDR.Register.API.Infrastructure.Models -{ - public class ErrorResponseVersion : DefaultErrorResponseProvider - { - // note: in Web API the response type is HttpResponseMessage - public override IActionResult CreateResponse(ErrorResponseContext context) - { - switch (context.ErrorCode) - { - case "UnsupportedApiVersion": - return new ObjectResult(new ResponseErrorList().InvalidXVUnsupportedVersion()) - { - StatusCode = (int)HttpStatusCode.NotAcceptable - }; - - case "MissingRequiredHeader": - return new ObjectResult(new ResponseErrorList().InvalidXVMissingRequiredHeader()) - { - StatusCode = (int)HttpStatusCode.BadRequest - }; - } - - return base.CreateResponse(context); - } - } -} diff --git a/Source/CDR.Register.API.Infrastructure/Models/JsonWebKey.cs b/Source/CDR.Register.API.Infrastructure/Models/JsonWebKey.cs index e415717..0e4fb54 100644 --- a/Source/CDR.Register.API.Infrastructure/Models/JsonWebKey.cs +++ b/Source/CDR.Register.API.Infrastructure/Models/JsonWebKey.cs @@ -1,15 +1,17 @@ -namespace CDR.Register.API.Infrastructure.Models +using System; + +namespace CDR.Register.API.Infrastructure.Models { public class JsonWebKey { - public string alg { get; set; } - public string e { get; set; } - public string[] key_ops { get; set; } - public string kid { get; set; } - public string kty { get; set; } - public string n { get; set; } - public string use { get; set; } - public string x5t { get; set; } - public string[] x5c { get; set; } + public string alg { get; set; } = string.Empty; + public string e { get; set; } = string.Empty; + public string[] key_ops { get; set; } = []; + public string kid { get; set; } = string.Empty; + public string kty { get; set; } = string.Empty; + public string n { get; set; } = string.Empty; + public string use { get; set; } = string.Empty; + public string x5t { get; set; } = string.Empty; + public string[] x5c { get; set; } = []; } } diff --git a/Source/CDR.Register.API.Infrastructure/Models/JsonWebKeySet.cs b/Source/CDR.Register.API.Infrastructure/Models/JsonWebKeySet.cs index 091cf67..f81669b 100644 --- a/Source/CDR.Register.API.Infrastructure/Models/JsonWebKeySet.cs +++ b/Source/CDR.Register.API.Infrastructure/Models/JsonWebKeySet.cs @@ -2,7 +2,7 @@ { public class JsonWebKeySet { - public JsonWebKey[] keys { get; set; } + public JsonWebKey[] keys { get; set; } = []; } } diff --git a/Source/CDR.Register.API.Infrastructure/Models/Links.cs b/Source/CDR.Register.API.Infrastructure/Models/Links.cs index 3924e9c..beab1de 100644 --- a/Source/CDR.Register.API.Infrastructure/Models/Links.cs +++ b/Source/CDR.Register.API.Infrastructure/Models/Links.cs @@ -5,6 +5,6 @@ namespace CDR.Register.API.Infrastructure.Models public class Links { /// Fully qualified link to this API call - public Uri Self { get; set; } + public Uri? Self { get; set; } } } diff --git a/Source/CDR.Register.API.Infrastructure/Models/LinksPaginated.cs b/Source/CDR.Register.API.Infrastructure/Models/LinksPaginated.cs index 59c3089..2fe6344 100644 --- a/Source/CDR.Register.API.Infrastructure/Models/LinksPaginated.cs +++ b/Source/CDR.Register.API.Infrastructure/Models/LinksPaginated.cs @@ -5,18 +5,18 @@ namespace CDR.Register.API.Infrastructure.Models public class LinksPaginated { /// URI to the first page of this set. Mandatory if this response is not the first page - public Uri First { get; set; } + public Uri? First { get; set; } /// URI to the last page of this set. Mandatory if this response is not the last page - public Uri Last { get; set; } + public Uri? Last { get; set; } /// URI to the next page of this set. Mandatory if this response is not the last page - public Uri Next { get; set; } + public Uri? Next { get; set; } /// URI to the previous page of this set. Mandatory if this response is not the first page - public Uri Prev { get; set; } + public Uri? Prev { get; set; } /// Fully qualified link to this API call - public Uri Self { get; set; } + public Uri? Self { get; set; } } } diff --git a/Source/CDR.Register.API.Infrastructure/Models/Meta.cs b/Source/CDR.Register.API.Infrastructure/Models/Meta.cs deleted file mode 100644 index 7c43817..0000000 --- a/Source/CDR.Register.API.Infrastructure/Models/Meta.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace CDR.Register.API.Infrastructure.Models -{ - public class Meta - { - } -} diff --git a/Source/CDR.Register.API.Infrastructure/Models/NotificationMessage.cs b/Source/CDR.Register.API.Infrastructure/Models/NotificationMessage.cs deleted file mode 100644 index 8f39f3d..0000000 --- a/Source/CDR.Register.API.Infrastructure/Models/NotificationMessage.cs +++ /dev/null @@ -1,24 +0,0 @@ -using MediatR; - -namespace CDR.Register.API.Infrastructure.Models -{ - public class NotificationMessage : INotification - { - public string Type { get; set; } - public string Code { get; set; } - public string Description { get; set; } - public T Content { get; set; } - } - - // Default notification message string content - public class NotificationMessage : NotificationMessage - { - public NotificationMessage(string type, string code, string description, string content = null) - { - Type = type; - Code = code; - Description = description; - Content = content; - } - } -} diff --git a/Source/CDR.Register.API.Infrastructure/Models/ResponseErrorList.cs b/Source/CDR.Register.API.Infrastructure/Models/ResponseErrorList.cs deleted file mode 100644 index f8b7f9c..0000000 --- a/Source/CDR.Register.API.Infrastructure/Models/ResponseErrorList.cs +++ /dev/null @@ -1,151 +0,0 @@ -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; - -namespace CDR.Register.API.Infrastructure.Models -{ - public class ResponseErrorList - { - [Required] - public List Errors { get; set; } - - public bool HasErrors() - { - return Errors != null && Errors.Any(); - } - - public ResponseErrorList() - { - this.Errors = new List(); - } - - public ResponseErrorList(Error error) - { - this.Errors = new List() { error }; - } - - public ResponseErrorList(string errorCode, string errorTitle, string errorDetail) - { - var error = new Error(errorCode, errorTitle, errorDetail); - this.Errors = new List() { error }; - } - - /// - /// Add invalid industry error to the response error list - /// - /// - public ResponseErrorList InvalidIndustry() - { - Errors.Add(new Error() - { - Code = "urn:au-cds:error:cds-all:Field/Invalid", - Title = "Invalid Field", - Detail = "industry", - Meta = new object() - }); - return this; - } - - // Return Unsupported Version - public ResponseErrorList InvalidXVUnsupportedVersion() - { - Errors.Add(new Error() - { - Code = "urn:au-cds:error:cds-all:Header/UnsupportedVersion", - Title = "Unsupported Version", - Detail = "Version Requested is lower than the minimum version or greater than maximum version", - Meta = new object() - }); - - return this; - } - - // Return Invalid Version - public ResponseErrorList InvalidXVInvalidVersion() - { - Errors.Add(new Error() - { - Code = "urn:au-cds:error:cds-all:Header/InvalidVersion", - Title = "Invalid Version", - Detail = "Version header must be a positive integer between 1 and 1000", - Meta = new object() - }); - - return this; - } - - // Return Missing Required Header - public ResponseErrorList InvalidXVMissingRequiredHeader() - { - Errors.Add(new Error() - { - Code = "urn:au-cds:error:cds-all:Header/Missing", - Title = "Missing Required Header", - Detail = "An API version X-V Header is required but was not specified", - Meta = new object() - }); - - return this; - } - - public static Error InvalidDateTime() - { - return new Error("urn:au-cds:error:cds-all:Field/InvalidDateTime", "Invalid DateTime", "{0} should be valid DateTimeString"); - } - - public static Error InvalidPageSize() - { - return new Error("urn:au-cds:error:cds-all:Field/InvalidPageSize", "Invalid Page Size", "Page size not a positive Integer"); - } - - public static Error PageSizeTooLarge() - { - return new Error("urn:au-cds:error:cds-all:Field/Invalid", "Invalid Field", "Page size too large"); - } - - public static Error InvalidPage() - { - return new Error("urn:au-cds:error:cds-all:Field/Invalid", "Invalid Field", "Page not a positive integer"); - } - - public static Error PageOutOfRange() - { - return new Error("urn:au-cds:error:cds-all:Field/Invalid", "Invalid Field", "Page is out of range"); - } - - public static Error DataRecipientParticipationNotActive() - { - return new Error("urn:au-cds:error:cds-all:Authorisation/AdrStatusNotActive", "ADR Status Is Not Active", string.Empty); - } - - public static Error DataRecipientSoftwareProductNotActive() - { - return new Error("urn:au-cds:error:cds-all:Authorisation/AdrStatusNotActive", "ADR Status Is Not Active", string.Empty); - } - - public static Error InvalidResource(string softwareProductId) - { - return new Error("urn:au-cds:error:cds-all:Resource/Invalid", "Invalid Resource", softwareProductId); - } - - public static Error InvalidSoftwareProduct(string softwareProductId) - { - return new Error("urn:au-cds:error:cds-register:Field/InvalidSoftwareProduct", "Invalid Software Product", softwareProductId); - } - - public static Error InvalidBrand() - { - return new Error("Field/InvalidBrand", "Invalid Brand", string.Empty); - } - - public static Error NotFound() - { - return new Error("Resource/NotFound", "Resource Not Found", string.Empty); - } - - public static Error UnknownError() - { - return new Error("Unknown", "Unknown error", string.Empty); - } - } -} diff --git a/Source/CDR.Register.API.Infrastructure/Services/DataRecipientStatusCheckService.cs b/Source/CDR.Register.API.Infrastructure/Services/DataRecipientStatusCheckService.cs index a9cc63c..baa0df6 100644 --- a/Source/CDR.Register.API.Infrastructure/Services/DataRecipientStatusCheckService.cs +++ b/Source/CDR.Register.API.Infrastructure/Services/DataRecipientStatusCheckService.cs @@ -1,6 +1,6 @@ using System; using System.Threading.Tasks; -using CDR.Register.API.Infrastructure.Models; +using CDR.Register.Domain.Models; using CDR.Register.Repository.Infrastructure; using CDR.Register.Repository.Interfaces; diff --git a/Source/CDR.Register.API.Infrastructure/Services/IDataRecipientStatusCheckService.cs b/Source/CDR.Register.API.Infrastructure/Services/IDataRecipientStatusCheckService.cs index a4517d7..c7a5f45 100644 --- a/Source/CDR.Register.API.Infrastructure/Services/IDataRecipientStatusCheckService.cs +++ b/Source/CDR.Register.API.Infrastructure/Services/IDataRecipientStatusCheckService.cs @@ -1,6 +1,6 @@ using System; using System.Threading.Tasks; -using CDR.Register.API.Infrastructure.Models; +using CDR.Register.Domain.Models; using CDR.Register.Repository.Infrastructure; namespace CDR.Register.API.Infrastructure.Services diff --git a/Source/CDR.Register.API.Infrastructure/SwaggerFilters/AuthorizationOperationFilter.cs b/Source/CDR.Register.API.Infrastructure/SwaggerFilters/AuthorizationOperationFilter.cs new file mode 100644 index 0000000..f10f252 --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/SwaggerFilters/AuthorizationOperationFilter.cs @@ -0,0 +1,61 @@ +using CDR.Register.API.Infrastructure.Authorization; +using Microsoft.IdentityModel.Tokens; +using Microsoft.OpenApi.Any; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; +using System; +using System.Collections.Generic; +using System.Linq; + +namespace CDR.Register.API.Infrastructure.SwaggerFilters +{ + /// + /// As this filter is used across mutiple solutions and we haven't got a common library to draw from yet, the 'latest version' has been copied across and we have kept all of the code to ensure consistency across solutions. + /// The lines that could not be included without significant work that would currently provide no added value have been commented and intentionally left here for clear alignment. + /// + public class AuthorizationOperationFilter : IOperationFilter + { + public void Apply(OpenApiOperation operation, OperationFilterContext context) + { + var typeList = new List() { typeof(PolicyAuthorizeAttribute) }; + var relAtts = AttributeExtensions.GetAttributes(typeList, context.MethodInfo, true); + + var authAtt = (PolicyAuthorizeAttribute?)relAtts.FirstOrDefault(attr => attr.GetType() == typeof(PolicyAuthorizeAttribute)); + + var openApiObj = new OpenApiObject(); + + if (authAtt != null) + { + //Get the details of the policy + var authPolicy = authAtt.policy.GetPolicy(); + + if (authPolicy != null) + { + AddPolicyRequirements(openApiObj, authPolicy); + } + } + + operation.Extensions.Add("x-authorisation-policy", openApiObj); + } + + private static void AddPolicyRequirements(OpenApiObject openApiObj, AuthorisationPolicyAttribute authPolicy) + { + if (authPolicy.HasHolderOfKeyRequirement) + { + openApiObj["hasHolderOfKeyRequirement"] = new OpenApiBoolean(true); + } + if (authPolicy.HasAccessTokenRequirement) + { + openApiObj["hasAccessTokenRequirement"] = new OpenApiBoolean(true); + } + if (authPolicy.HasMtlsRequirement) + { + openApiObj["hasMtlsRequirement"] = new OpenApiBoolean(true); + } + if (!authPolicy.ScopeRequirement.IsNullOrEmpty()) + { + openApiObj["scopeRequirement"] = new OpenApiString(authPolicy.ScopeRequirement); + } + } + } +} diff --git a/Source/CDR.Register.API.Infrastructure/SwaggerFilters/CustomDocumentFilter.cs b/Source/CDR.Register.API.Infrastructure/SwaggerFilters/CustomDocumentFilter.cs new file mode 100644 index 0000000..5399790 --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/SwaggerFilters/CustomDocumentFilter.cs @@ -0,0 +1,41 @@ +using System.Linq; +using Microsoft.OpenApi.Any; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; + +namespace CDR.Register.API.Infrastructure.SwaggerFilters +{ + /// + /// The purpose of those filters is to get the auto-generated swagger into a consistent order to aid in comparison with the json schema defined at https://consumerdatastandardsaustralia.github.io/standards/includes/swagger/cds_register.json + /// These orders don't neccessarily match yet, but we have the aim to better match them in the future and until they do, it's helpful to order them alphabetically to aid in searching for property manually. + /// We are also exposing properties to the swagger auto-generation that are already set within the application, but don't show up on the autogeneration without this code. + /// + public class CustomDocumentFilter : IDocumentFilter + { + public void Apply(OpenApiDocument swaggerDoc, DocumentFilterContext context) + { + var paths = swaggerDoc.Paths; + foreach (var path in paths.Select(path => path.Value)) + { + path.Parameters = path.Parameters.OrderBy(e => e.Name).ToList(); + + foreach (var op in path.Operations.Select(op => op.Value)) + { + //api-version included as it is currently used in some places in PT instead of x-v + if (op.Parameters.Any(p => p.Name.Equals("x-v",System.StringComparison.OrdinalIgnoreCase)) || op.Parameters.Any(p => p.Name.Equals("api-version", System.StringComparison.OrdinalIgnoreCase))) + { + op.Extensions.TryGetValue("x-version", out var value); + if (value == null && !string.IsNullOrWhiteSpace(swaggerDoc.Info.Version)) + { + op.Extensions.Add("x-version", new OpenApiString(swaggerDoc.Info.Version)); // just to get it generated in json + } + } + + op.Parameters = op.Parameters.OrderBy(p => p.Name).ToList(); + } + } + + swaggerDoc.Paths = paths; + } + } +} diff --git a/Source/CDR.Register.API.Infrastructure/SwaggerFilters/CustomParameterFilter.cs b/Source/CDR.Register.API.Infrastructure/SwaggerFilters/CustomParameterFilter.cs new file mode 100644 index 0000000..b71871f --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/SwaggerFilters/CustomParameterFilter.cs @@ -0,0 +1,21 @@ +using Microsoft.OpenApi.Any; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; + +namespace CDR.Register.API.Infrastructure.SwaggerFilters +{ + public class CustomParameterFilter : IParameterFilter + { + public void Apply(OpenApiParameter parameter, ParameterFilterContext context) + { + parameter.Extensions.TryGetValue("explode", out var value); + + if (value == null) + { + parameter.Extensions.Add("explode", new OpenApiBoolean(parameter.Explode)); // just to get it generated in json + } + + parameter.Style = ParameterStyle.Simple; + } + } +} diff --git a/Source/CDR.Register.API.Infrastructure/SwaggerFilters/PropertyAlphabeticalOrderFilter.cs b/Source/CDR.Register.API.Infrastructure/SwaggerFilters/PropertyAlphabeticalOrderFilter.cs new file mode 100644 index 0000000..5007fe3 --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/SwaggerFilters/PropertyAlphabeticalOrderFilter.cs @@ -0,0 +1,18 @@ +using System.Linq; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; + +namespace CDR.Register.API.Infrastructure.SwaggerFilters +{ + public class PropertyAlphabeticalOrderFilter : ISchemaFilter + { + public void Apply(OpenApiSchema schema, SchemaFilterContext context) + { + if (schema.Properties != null && schema.Properties.Any()) + { + var orderedProps = schema.Properties.OrderBy(arg => arg.Key).ToDictionary(arg => arg.Key, arg => arg.Value); + schema.Properties = orderedProps; + } + } + } +} diff --git a/Source/CDR.Register.API.Infrastructure/SwaggerFilters/SetupApiVersionParamsOperationFilter.cs b/Source/CDR.Register.API.Infrastructure/SwaggerFilters/SetupApiVersionParamsOperationFilter.cs new file mode 100644 index 0000000..efdf4e5 --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/SwaggerFilters/SetupApiVersionParamsOperationFilter.cs @@ -0,0 +1,33 @@ +using System.Linq; +using CDR.Register.API.Infrastructure.Models; +using Microsoft.Extensions.Options; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; + +namespace CDR.Register.API.Infrastructure.SwaggerFilters +{ + public class SetupApiVersionParamsOperationFilter : IOperationFilter + { + private readonly CdrApiOptions _options; + + public SetupApiVersionParamsOperationFilter(IOptions options) + { + _options = options.Value; + } + + public void Apply(OpenApiOperation operation, OperationFilterContext context) + { + var versionOption = _options.GetApiEndpointVersionOption($"/{context.ApiDescription.RelativePath}"); + + foreach (var s in operation.Parameters.Where(o => o.Name == "x-v" || o.Name == "x-min-v")) + { + s.Required = false; + + if (versionOption != null && versionOption.IsXVHeaderMandatory && s.Name == "x-v") + { + s.Required = true; + } + } + } + } +} diff --git a/Source/CDR.Register.API.Infrastructure/Versioning/ApiVersionErrorResponse.cs b/Source/CDR.Register.API.Infrastructure/Versioning/ApiVersionErrorResponse.cs new file mode 100644 index 0000000..aeb6561 --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/Versioning/ApiVersionErrorResponse.cs @@ -0,0 +1,50 @@ +using CDR.Register.Domain.Models; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Versioning; +using Microsoft.Extensions.Logging; + +namespace CDR.Register.API.Infrastructure.Versioning +{ + public class ApiVersionErrorResponse : DefaultErrorResponseProvider + { + private readonly ILogger _logger; + + public ApiVersionErrorResponse() + { + _logger = new LoggerFactory().CreateLogger(); + } + + public override IActionResult CreateResponse(ErrorResponseContext context) + { + var errorList = new ResponseErrorList(); + int statusCode; + + // Determine what the return status code and message will be, default to 500 - Internal Server Error + if (context.Message.Contains(Domain.Constants.ErrorTitles.MissingVersion)) + { + errorList.AddInvalidXVMissingRequiredHeader(); + statusCode = StatusCodes.Status400BadRequest; + } + else if (context.Message.Contains(Domain.Constants.ErrorTitles.InvalidVersion)) + { + errorList.AddInvalidXVInvalidVersion(); + statusCode = StatusCodes.Status400BadRequest; + } + else if (context.Message.Contains(Domain.Constants.ErrorTitles.UnsupportedVersion)) + { + errorList.AddInvalidXVUnsupportedVersion(); + statusCode = StatusCodes.Status406NotAcceptable; + } + else + { + errorList.AddUnexpectedError(); + statusCode = StatusCodes.Status500InternalServerError; + } + + _logger.LogError("Error detail {Detail}", errorList.Errors[0].Detail); + + return new ObjectResult(errorList) { StatusCode = statusCode }; + } + } +} diff --git a/Source/CDR.Register.API.Infrastructure/Versioning/ApiVersionSelector.cs b/Source/CDR.Register.API.Infrastructure/Versioning/ApiVersionSelector.cs deleted file mode 100644 index 6fa41d8..0000000 --- a/Source/CDR.Register.API.Infrastructure/Versioning/ApiVersionSelector.cs +++ /dev/null @@ -1,130 +0,0 @@ -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.Versioning; -using System; -using System.Collections.Generic; -using System.Linq; -using static CDR.Register.API.Infrastructure.Constants; - -namespace CDR.Register.API.Infrastructure.Versioning -{ - public class ApiVersionSelector : IApiVersionSelector - { - private readonly Dictionary _supportedApiVersions = new Dictionary { - { @"\/cdr-register\/v1\/[A-Za-z]*\/data-holders\/brands", new int[] { 2 } }, - { @"\/cdr-register\/v1\/[A-Za-z]*\/data-holders\/status", new int[] { 1 } }, - { @"\/cdr-register\/v1\/[A-Za-z]*\/data-recipients", new int[] { 3 } }, - { @"\/cdr-register\/v1\/[A-Za-z]*\/data-recipients\/status", new int[] { 2 } }, - { @"\/cdr-register\/v1\/[A-Za-z]*\/data-recipients\/brands\/software-products\/status", new int[] { 2 } }, - { @"\/cdr-register\/v1\/[A-Za-z]*\/data-recipients\/brands\/[A-Za-z0-9\-]*\/software-products\/[A-Za-z0-9\-]*\/ssa", new int[] { 3 } }, - }; - - private readonly ApiVersion _defaultVersion; - - public ApiVersionSelector(ApiVersioningOptions options) - { - _defaultVersion = options.DefaultApiVersion; - } - - public ApiVersion SelectVersion(HttpRequest request, ApiVersionModel model) - { - // Get all the version supported by the API - var apiVersions = GetApiVersions(request.Path); - - // Matching api was not found. - if (!apiVersions.Any()) - { - return _defaultVersion; - } - - bool isDefaultVersionFound = apiVersions.Contains(_defaultVersion.MajorVersion.Value); - - // Try and get x-v value from request header - // Return the default version if the API supports it, otherwise error - if (!request.Headers.ContainsKey(Headers.X_V)) - { - if (isDefaultVersionFound) - { - return _defaultVersion; - } - - // Raise an error. - throw new MissingRequiredHeaderException(Headers.X_V); - } - - var x_v = request.Headers[Headers.X_V]; - - // If it is present, but empty check if there is a default version - if (string.IsNullOrEmpty(x_v) && isDefaultVersionFound) - { - return _defaultVersion; - } - - // x-v must be a positive integer. - if (!int.TryParse(x_v, out int xvVersion) || xvVersion < 1) - { - // Raise an error. - throw new InvalidVersionException(Headers.X_V); - } - - // Do x-min-v validation if it is present - int xvMinVersion = 0; - if (request.Headers.ContainsKey(Headers.X_MIN_V)) - { - // Check if the x-min-v is a positive integer. - var x_min_v = request.Headers[Headers.X_MIN_V]; - if (!int.TryParse(x_min_v, out xvMinVersion) || xvMinVersion < 1) - { - // Raise an invalid error. - throw new InvalidVersionException(Headers.X_MIN_V); - } - } - - // Version match. - if (apiVersions.Contains(xvVersion)) - { - return new ApiVersion(xvVersion, 0); - } - - // No matching version, so check if a x-min-v header has been provided. - if (!request.Headers.ContainsKey(Headers.X_MIN_V)) - { - // x-min-v has not been provided, so throw an unsupported version error. - throw new UnsupportedVersionException(apiVersions.Min(), apiVersions.Max()); - } - - // If x-min-v is greater than x-v then ignore it. - if (xvMinVersion > xvVersion) - { - xvMinVersion = xvVersion; - } - - // Find the largest supported version between x-min-v and x-v. - var supportedVersions = apiVersions - .Where(v => (v >= xvMinVersion && v <= xvVersion)); - - // No supported versions were found. - if (!supportedVersions.Any()) - { - throw new UnsupportedVersionException(apiVersions.Min(), apiVersions.Max()); - } - - // Return the highest support version. - return new ApiVersion(supportedVersions.OrderByDescending(v => v).Take(1).Single(), 0); - } - - private IEnumerable GetApiVersions(PathString path) - { - foreach (var supportedApi in _supportedApiVersions.OrderByDescending(v => v.Key.Length)) - { - var regEx = new System.Text.RegularExpressions.Regex(supportedApi.Key); - if (regEx.IsMatch(path)) - { - return supportedApi.Value; - } - } - - return Array.Empty(); - } - } -} diff --git a/Source/CDR.Register.API.Infrastructure/Versioning/CdrVersionReader.cs b/Source/CDR.Register.API.Infrastructure/Versioning/CdrVersionReader.cs new file mode 100644 index 0000000..0f68f1d --- /dev/null +++ b/Source/CDR.Register.API.Infrastructure/Versioning/CdrVersionReader.cs @@ -0,0 +1,95 @@ +using CDR.Register.API.Infrastructure.Models; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc.Versioning; +using Microsoft.Extensions.Primitives; + +namespace CDR.Register.API.Infrastructure.Versioning +{ + /// + /// The purpose of the reader is to check what the client has put in and return what we want from that. We return an error string if it is no good and we are able to handle changing min version. + /// + public class CdrVersionReader : IApiVersionReader + { + private readonly CdrApiOptions _options; + + public CdrVersionReader(CdrApiOptions options) + { + _options = options; + } + + public void AddParameters(IApiVersionParameterDescriptionContext context) + { + context.AddParameter("x-v", ApiVersionParameterLocation.Header); + context.AddParameter("x-min-v", ApiVersionParameterLocation.Header); + } + + public string Read(HttpRequest request) + { + var endpointOption = _options.GetApiEndpointVersionOption(request.Path); + + if (endpointOption == null) + { + //handle any endpoint that hasn't been defined in options + endpointOption = new CdrApiEndpointVersionOptions(string.Empty, false, int.Parse(_options.DefaultVersion)); + } + else if (!endpointOption.IsVersioned) + { + return _options.DefaultVersion; + } + + // If x-min-v is passed in, we expect it to be a Positive Integer, the x-v value is parsed out of the header and will be validated by the Package itself + // Refer to Standards here - https://consumerdatastandardsaustralia.github.io/standards/#http-headers + // When there is error in x-min-v, we return custom String x-min-v '' this is then manipulated in ApiVersionErrorResponse for a user friendly error message. + if (!request.Headers.TryGetValue("x-v", out var xvValue) || string.IsNullOrWhiteSpace(xvValue)) + { + if (endpointOption.IsXVHeaderMandatory) + { + return Domain.Constants.ErrorTitles.MissingVersion; + } + + xvValue = endpointOption.CurrentMinVersion.ToString(); + request.Headers.Remove("x-v"); // Added this to handle both the missing header (just add) and the header with a blank value (update) + request.Headers.Append("x-v", xvValue); + } + + if (int.TryParse(xvValue, out int xvInt) && xvInt > 0) + { + request.Headers.TryGetValue("x-min-v", out var xvMinValue); + + xvValue = CalculateVersion(xvInt, xvMinValue, endpointOption); + + return xvValue; + } + + return Domain.Constants.ErrorTitles.InvalidVersion; + } + + private static string CalculateVersion(int xvInt, string xvMinString, CdrApiEndpointVersionOptions endpointOption) + { + if (!string.IsNullOrEmpty(xvMinString)) + { + if (!int.TryParse(xvMinString, out int xvMinInt) || xvMinInt < 1) + { + return Domain.Constants.ErrorTitles.InvalidVersion; + } + + if (xvMinInt < xvInt) + { + if (xvMinInt > endpointOption.CurrentMaxVersion || xvInt < endpointOption.CurrentMinVersion) + { + return Domain.Constants.ErrorTitles.UnsupportedVersion; + } + + return xvInt > endpointOption.CurrentMaxVersion ? endpointOption.CurrentMaxVersion.ToString() : xvInt.ToString(); + } + } + + if (xvInt < endpointOption.CurrentMinVersion || xvInt > endpointOption.CurrentMaxVersion) + { + return Domain.Constants.ErrorTitles.UnsupportedVersion; + } + + return xvInt.ToString(); + } + } +} diff --git a/Source/CDR.Register.API.Infrastructure/Versioning/InvalidVersionException.cs b/Source/CDR.Register.API.Infrastructure/Versioning/InvalidVersionException.cs index a173bc8..360e041 100644 --- a/Source/CDR.Register.API.Infrastructure/Versioning/InvalidVersionException.cs +++ b/Source/CDR.Register.API.Infrastructure/Versioning/InvalidVersionException.cs @@ -3,26 +3,16 @@ namespace CDR.Register.API.Infrastructure.Versioning { - [Serializable] public class InvalidVersionException : Exception { - public string HeaderName { get; set; } + public string HeaderName { get; set; } = ""; public InvalidVersionException() : base() { } public InvalidVersionException(string headerName) : base() { this.HeaderName = headerName; - } - - protected InvalidVersionException(SerializationInfo info, StreamingContext context) : base(info, context) - { - } - - public override void GetObjectData(SerializationInfo info, StreamingContext context) - { - base.GetObjectData(info, context); - } + } } } diff --git a/Source/CDR.Register.API.Infrastructure/Versioning/MissingRequiredHeaderException.cs b/Source/CDR.Register.API.Infrastructure/Versioning/MissingRequiredHeaderException.cs index 06a93b8..3f26229 100644 --- a/Source/CDR.Register.API.Infrastructure/Versioning/MissingRequiredHeaderException.cs +++ b/Source/CDR.Register.API.Infrastructure/Versioning/MissingRequiredHeaderException.cs @@ -1,31 +1,19 @@ using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; namespace CDR.Register.API.Infrastructure.Versioning { - [Serializable] public class MissingRequiredHeaderException : Exception { public string HeaderName { get; set; } - public MissingRequiredHeaderException() : base() { } - - public MissingRequiredHeaderException(string headerName) : base() + public MissingRequiredHeaderException() : base() { - this.HeaderName = headerName; + HeaderName = string.Empty; } - protected MissingRequiredHeaderException(SerializationInfo info, StreamingContext context) : base(info, context) - { - } - - public override void GetObjectData(SerializationInfo info, StreamingContext context) + public MissingRequiredHeaderException(string headerName) : base() { - base.GetObjectData(info, context); - } + this.HeaderName = headerName; + } } } diff --git a/Source/CDR.Register.API.Infrastructure/Versioning/UnsupportedVersionException.cs b/Source/CDR.Register.API.Infrastructure/Versioning/UnsupportedVersionException.cs index 42486f9..79c07fa 100644 --- a/Source/CDR.Register.API.Infrastructure/Versioning/UnsupportedVersionException.cs +++ b/Source/CDR.Register.API.Infrastructure/Versioning/UnsupportedVersionException.cs @@ -1,9 +1,7 @@ using System; -using System.Runtime.Serialization; namespace CDR.Register.API.Infrastructure.Versioning { - [Serializable] public class UnsupportedVersionException : Exception { public UnsupportedVersionException() : base() { } @@ -13,15 +11,6 @@ public UnsupportedVersionException(string message) : base(message) { } public UnsupportedVersionException(int minVersion, int maxVersion) : base($"minimum version: {minVersion}, maximum version: {maxVersion}") { - } - - protected UnsupportedVersionException(SerializationInfo info, StreamingContext context) : base(info, context) - { - } - - public override void GetObjectData(SerializationInfo info, StreamingContext context) - { - base.GetObjectData(info, context); - } + } } } diff --git a/Source/CDR.Register.API.Logger/CDR.Register.API.Logger.csproj b/Source/CDR.Register.API.Logger/CDR.Register.API.Logger.csproj index 2ac6816..f984908 100644 --- a/Source/CDR.Register.API.Logger/CDR.Register.API.Logger.csproj +++ b/Source/CDR.Register.API.Logger/CDR.Register.API.Logger.csproj @@ -1,20 +1,18 @@  - - net6.0 enable enable - 1.3.2 - 1.3.2 - 1.3.2 + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) - - - - - - + + + + + + - - + \ No newline at end of file diff --git a/Source/CDR.Register.API.Logger/RequestResponseLogger.cs b/Source/CDR.Register.API.Logger/RequestResponseLogger.cs index b08adf6..74be6b9 100644 --- a/Source/CDR.Register.API.Logger/RequestResponseLogger.cs +++ b/Source/CDR.Register.API.Logger/RequestResponseLogger.cs @@ -1,9 +1,9 @@ namespace CDR.Register.API.Logger { - using System.Diagnostics; using Microsoft.Extensions.Configuration; using Serilog; using Serilog.Core; + using Serilog.Settings.Configuration; public class RequestResponseLogger : IRequestResponseLogger, IDisposable { @@ -14,7 +14,7 @@ public class RequestResponseLogger : IRequestResponseLogger, IDisposable public RequestResponseLogger(IConfiguration configuration) { _logger = new LoggerConfiguration() - .ReadFrom.Configuration(configuration, sectionName: "SerilogRequestResponseLogger") + .ReadFrom.Configuration(configuration, new ConfigurationReaderOptions { SectionName = "SerilogRequestResponseLogger" }) .Enrich.WithProperty("RequestMethod", "") .Enrich.WithProperty("RequestBody", "") .Enrich.WithProperty("RequestHeaders", "") diff --git a/Source/CDR.Register.API.Logger/RequestResponseLoggingMiddleware.cs b/Source/CDR.Register.API.Logger/RequestResponseLoggingMiddleware.cs index f6acc8f..6629c37 100644 --- a/Source/CDR.Register.API.Logger/RequestResponseLoggingMiddleware.cs +++ b/Source/CDR.Register.API.Logger/RequestResponseLoggingMiddleware.cs @@ -281,7 +281,7 @@ private string GetHost(HttpRequest request) return request.Host.ToString(); } - return keys.First(); + return keys[0] ?? string.Empty; } private string? GetIpAddress(HttpContext context) @@ -296,7 +296,7 @@ private string GetHost(HttpRequest request) // The Client IP address may contain a comma separated list of ip addresses based on the network devices // the traffic traverses through. We get the first (and potentially only) ip address from the list as the client IP. // We also remove any port numbers that may be included on the client IP. - return keys.First() + return keys[0]? .Split(',')[0] // Get the first IP address in the list, in case there are multiple. .Split(':')[0]; // Strip off the port number, in case it is attached to the IP address. } diff --git a/Source/CDR.Register.Admin.API/Business/AdminMappingProfile.cs b/Source/CDR.Register.Admin.API/Business/AdminMappingProfile.cs index 4bcb2ba..d81f5e6 100644 --- a/Source/CDR.Register.Admin.API/Business/AdminMappingProfile.cs +++ b/Source/CDR.Register.Admin.API/Business/AdminMappingProfile.cs @@ -27,6 +27,7 @@ public AdminMappingProfile() CreateMap() .ForMember(dest => dest.RedirectUri, source => source.MapFrom(src => src.RedirectUris != null ? string.Join(" ", src.RedirectUris) : string.Empty)) + .ForMember(dest => dest.RedirectUris, opts => opts.Ignore()) //Ignore this as it is a computed property with no setter .ForMember(dest => dest.Scope, opt => opt.MapFrom(src => src.Scope)); CreateMap(); @@ -53,7 +54,7 @@ public AdminMappingProfile() CreateMap() .ForMember(dest => dest.Industries, (IMemberConfigurationExpression> source) => source.MapFrom(source => source.Industries)) - .ForMember(dest => dest.Industry, source => source.MapFrom(source => source.Industries.Any() ? source.Industries[0] : string.Empty)) + .ForMember(dest => dest.Industry, source => source.MapFrom(source => source.Industries.Length > 0 ? source.Industries[0] : string.Empty)) .ForMember(dest => dest.LegalEntity, source => source.MapFrom(source => source == null ? null : source.LegalEntity)) .ForMember(dest => dest.Status, source => source.MapFrom(source => source.LegalEntity == null ? string.Empty : source.LegalEntity.Status.ToUpper())); @@ -62,7 +63,7 @@ public AdminMappingProfile() .ForMember(dest => dest.BrandName, source => source.MapFrom(source => source.BrandName)) .ForMember(dest => dest.LogoUri, source => source.MapFrom(source => source.LogoUri)) .ForMember(dest => dest.BrandStatus, source => source.MapFrom(source => source.Status.ToUpper())) - .ForMember(dest => dest.IsActive, source => source.MapFrom(source => string.Compare(source.Status, Repository.Entities.BrandStatusType.Active.ToString(), true))) //TODO: Check + .ForMember(dest => dest.IsActive, source => source.MapFrom(source => string.Compare(source.Status, Repository.Entities.BrandStatusType.Active.ToString(), true))) .ForMember(dest => dest.DataHolderAuthentications, source => source.MapFrom(source => new[] { source.AuthDetails })) .ForMember(dest => dest.DataHolderBrandServiceEndpoint, source => source.MapFrom(source => source.EndpointDetail)) .ForMember(dest => dest.DataHolder, source => source.MapFrom(source => source)); @@ -82,7 +83,7 @@ public string Resolve(Model.SoftwareProduct source, DomainEntities.SoftwareProdu { if (source.Scope == null) { - return config["SoftwareProductDefaultScopes"]; + return config["SoftwareProductDefaultScopes"] ?? ""; } return source.Scope; diff --git a/Source/CDR.Register.Admin.API/Business/Model/Brand.cs b/Source/CDR.Register.Admin.API/Business/Model/Brand.cs index 1230548..c67fb1a 100644 --- a/Source/CDR.Register.Admin.API/Business/Model/Brand.cs +++ b/Source/CDR.Register.Admin.API/Business/Model/Brand.cs @@ -9,12 +9,12 @@ public class Brand { public Guid DataRecipientBrandId { get; set; } - public string BrandName { get; set; } + public string BrandName { get; set; } = string.Empty; - public string LogoUri { get; set; } + public string LogoUri { get; set; } = string.Empty; - public string Status { get; set; } + public string Status { get; set; } = string.Empty; - public virtual ICollection SoftwareProducts { get; set; } + public virtual ICollection SoftwareProducts { get; set; } = []; } } diff --git a/Source/CDR.Register.Admin.API/Business/Model/DataHolderBrandModel.cs b/Source/CDR.Register.Admin.API/Business/Model/DataHolderBrandModel.cs index 98c10c2..e7b249e 100644 --- a/Source/CDR.Register.Admin.API/Business/Model/DataHolderBrandModel.cs +++ b/Source/CDR.Register.Admin.API/Business/Model/DataHolderBrandModel.cs @@ -1,7 +1,7 @@ using CDR.Register.Admin.API.Business.Validators; using CDR.Register.API.Infrastructure; -using CDR.Register.API.Infrastructure.Models; using CDR.Register.Domain.Entities; +using CDR.Register.Domain.Models; using System; using System.Collections.Generic; using System.Linq; @@ -12,7 +12,7 @@ public class DataHolderBrandModel { public Guid DataHolderBrandId { get; set; } public string BrandName { get; set; } = string.Empty; - public string[] Industries { get; set; } = new string[] { }; + public string[] Industries { get; set; } = []; public string LogoUri { get; set; } = string.Empty; public string Status { get; set; } = string.Empty; @@ -38,20 +38,15 @@ public ResponseErrorList Validate(DataHolderBrand existingDataHolderBrand) detail = $"Value '{error.AttemptedValue}' is not allowed for {error.PropertyName}"; } - responseErrorList.Errors.Add(new Error - { - Code = error.ErrorCode, - Title = error.ErrorMessage, - Detail = detail - }); + responseErrorList.Errors.Add(new Error(error.ErrorCode,error.ErrorMessage,detail)); } return responseErrorList; } // Validate against the existing data - var existingDataValidationErrors = ValidateWithExisiting(existingDataHolderBrand); - if (existingDataValidationErrors.Any()) + var existingDataValidationErrors = ValidateWithExisting(existingDataHolderBrand); + if (existingDataValidationErrors.Count > 0) { responseErrorList.Errors.AddRange(existingDataValidationErrors); } @@ -59,7 +54,7 @@ public ResponseErrorList Validate(DataHolderBrand existingDataHolderBrand) return responseErrorList; } - private IList ValidateWithExisiting(DataHolderBrand existingDataHolderBrand) + private List ValidateWithExisting(DataHolderBrand existingDataHolderBrand) { var errorList = new List(); if (existingDataHolderBrand == null) @@ -70,17 +65,17 @@ private IList ValidateWithExisiting(DataHolderBrand existingDataHolderBra // Validate all the parent IDs. if (existingDataHolderBrand.DataHolder == null) // This ensures it is a DH Participation { - errorList.Add(new Error(Constants.ErrorCodes.FieldInvalid, Constants.ErrorTitles.FieldInvalid, + errorList.Add(new Error(Domain.Constants.ErrorCodes.Cds.InvalidField, Domain.Constants.ErrorTitles.InvalidField, $"Brand {this.DataHolderBrandId} is not a Data Holder.")); } else if (existingDataHolderBrand.DataHolder?.LegalEntity.LegalEntityId != this.LegalEntity?.LegalEntityId) { - errorList.Add(new Error(Constants.ErrorCodes.FieldInvalid, Constants.ErrorTitles.FieldInvalid, + errorList.Add(new Error(Domain.Constants.ErrorCodes.Cds.InvalidField, Domain.Constants.ErrorTitles.InvalidField, $"Brand {this.DataHolderBrandId} is already associated with a different legal entity.")); } else if (!string.Equals(existingDataHolderBrand.DataHolder?.Industry, this.Industries[0], StringComparison.InvariantCultureIgnoreCase)) { - errorList.Add(new Error(Constants.ErrorCodes.FieldInvalid, Constants.ErrorTitles.FieldInvalid, + errorList.Add(new Error(Domain.Constants.ErrorCodes.Cds.InvalidField, Domain.Constants.ErrorTitles.InvalidField, $"Brand {this.DataHolderBrandId} is already associated with the same legal entity in a different industry.")); } diff --git a/Source/CDR.Register.Admin.API/Business/Model/ErrorResponseVersion.cs b/Source/CDR.Register.Admin.API/Business/Model/ErrorResponseVersion.cs deleted file mode 100644 index 80a1e61..0000000 --- a/Source/CDR.Register.Admin.API/Business/Model/ErrorResponseVersion.cs +++ /dev/null @@ -1,85 +0,0 @@ -using CDR.Register.API.Infrastructure.Models; -using Microsoft.AspNetCore.Mvc.Versioning; -using Microsoft.AspNetCore.Mvc; -using System.Net; -using CDR.Register.API.Infrastructure; -using System.Collections.Generic; -using Microsoft.AspNetCore.Http; -using System.Linq; -using System; - -namespace CDR.Register.Admin.API.Business.Model -{ - public class ErrorResponseVersion : DefaultErrorResponseProvider - { - private readonly Dictionary _supportedApiVersions = new Dictionary { - { @"\/admin\/metadata\/data-holders", new int[] { 1 } }, - { @"\/admin\/metadata\/data-recipients", new int[] { 1 } }, - }; - - public override IActionResult CreateResponse(ErrorResponseContext context) - { - // The version was not specified. - if (context.ErrorCode == "ApiVersionUnspecified") - { - return new ObjectResult(new ResponseErrorList( - new Error(Constants.ErrorCodes.HeaderMissing, Constants.ErrorTitles.HeaderMissing, Constants.Headers.X_V))) - { - StatusCode = (int)HttpStatusCode.BadRequest - }; - } - - // Get x-v from request header - var versionHeaderValue = context.Request.Headers[Constants.Headers.X_V]; - var invalid_XV_Version = true; - var apiVersions = GetApiVersions(context.Request.Path); - var invalidVersionError = new Error(Constants.ErrorCodes.VersionInvalid, Constants.ErrorTitles.VersionInvalid, $"Expected '{string.Join(',', apiVersions)}'"); - - // If the x-v is set, check that it is a postive integer. - if (int.TryParse(versionHeaderValue, out int version)) - { - invalid_XV_Version = version < 1; - } - - if (invalid_XV_Version) - { - return new ObjectResult(new ResponseErrorList(invalidVersionError)) - { - StatusCode = (int)HttpStatusCode.BadRequest - }; - } - - if (context.ErrorCode == "InvalidApiVersion") - { - return new ObjectResult(new ResponseErrorList(invalidVersionError)) - { - StatusCode = (int)HttpStatusCode.BadRequest - }; - } - - if (context.ErrorCode == "UnsupportedApiVersion") - { - return new ObjectResult(new ResponseErrorList(invalidVersionError)) - { - StatusCode = (int)HttpStatusCode.BadRequest - }; - } - - return base.CreateResponse(context); - } - - private IEnumerable GetApiVersions(PathString path) - { - foreach (var supportedApi in _supportedApiVersions.OrderByDescending(v => v.Key.Length)) - { - var regEx = new System.Text.RegularExpressions.Regex(supportedApi.Key); - if (regEx.IsMatch(path)) - { - return supportedApi.Value; - } - } - - return Array.Empty(); - } - } -} diff --git a/Source/CDR.Register.Admin.API/Business/Model/LegalEntity.cs b/Source/CDR.Register.Admin.API/Business/Model/LegalEntity.cs index ed93911..757f469 100644 --- a/Source/CDR.Register.Admin.API/Business/Model/LegalEntity.cs +++ b/Source/CDR.Register.Admin.API/Business/Model/LegalEntity.cs @@ -1,10 +1,5 @@ -using CDR.Register.Admin.API.Business.Validators; -using CDR.Register.API.Infrastructure.Models; -using CDR.Register.Repository.Entities; -using System; +using System; using System.Collections.Generic; -using System.ComponentModel.DataAnnotations; -using System.Linq; namespace CDR.Register.Admin.API.Business.Model { @@ -38,7 +33,7 @@ public class LegalEntity public string? OrganisationType { get; set; } = null; - public virtual ICollection DataRecipientBrands { get; set; } + public virtual ICollection DataRecipientBrands { get; set; } = []; } } diff --git a/Source/CDR.Register.Admin.API/Business/Validators/BrandValidator.cs b/Source/CDR.Register.Admin.API/Business/Validators/BrandValidator.cs index d204f8c..8c669d5 100644 --- a/Source/CDR.Register.Admin.API/Business/Validators/BrandValidator.cs +++ b/Source/CDR.Register.Admin.API/Business/Validators/BrandValidator.cs @@ -3,7 +3,7 @@ using System; using System.Collections.Generic; using System.Linq; -using static CDR.Register.API.Infrastructure.Constants; +using static CDR.Register.Domain.Constants; namespace CDR.Register.Admin.API.Business.Validators { @@ -12,22 +12,22 @@ public class BrandValidator : AbstractValidator public BrandValidator() { //mandatory checks - RuleFor(x => x.DataRecipientBrandId).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.BrandName).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.LogoUri).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.Status).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); + RuleFor(x => x.DataRecipientBrandId).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.BrandName).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.LogoUri).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.Status).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); //Field lengths - RuleFor(x => x.BrandName).MaximumLength(200).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(b => $"Value '{b.BrandName}' is not allowed for BrandName"); - RuleFor(x => x.LogoUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(b => $"Value '{b.LogoUri}' is not allowed for LogoUri"); + RuleFor(x => x.BrandName).MaximumLength(200).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(b => $"Value '{b.BrandName}' is not allowed for BrandName"); + RuleFor(x => x.LogoUri).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(b => $"Value '{b.LogoUri}' is not allowed for LogoUri"); //invalid field - RuleFor(x => x.Status).Must(x => Enum.TryParse(x, true, out Repository.Entities.BrandStatusType result)).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(b => $"Value '{b.Status}' is not allowed for Status"); + RuleFor(x => x.Status).Must(x => Enum.TryParse(x, true, out Repository.Entities.BrandStatusType result)).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(b => $"Value '{b.Status}' is not allowed for Status"); RuleForEach(x => x.SoftwareProducts).SetValidator(new SoftwareProductValidator()); //duplicate check - RuleFor(x => x.SoftwareProducts).Must(HaveUniqueIds).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(GetDuplicateId); + RuleFor(x => x.SoftwareProducts).Must(HaveUniqueIds).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(GetDuplicateId); } @@ -36,7 +36,7 @@ private bool HaveUniqueIds(ICollection? softwareProducts) return softwareProducts?.Select(s => s.SoftwareProductId).Distinct().Count() == softwareProducts?.Count; } - private object GetDuplicateId(Brand brand) + private object? GetDuplicateId(Brand brand) { var distinctIds = new HashSet(); for (var i = 0; i < brand.SoftwareProducts?.Count; i++) diff --git a/Source/CDR.Register.Admin.API/Business/Validators/DataHolderAuthenticationValidator.cs b/Source/CDR.Register.Admin.API/Business/Validators/DataHolderAuthenticationValidator.cs index 00fdd68..e1c244b 100644 --- a/Source/CDR.Register.Admin.API/Business/Validators/DataHolderAuthenticationValidator.cs +++ b/Source/CDR.Register.Admin.API/Business/Validators/DataHolderAuthenticationValidator.cs @@ -2,7 +2,7 @@ using CDR.Register.Domain.Entities; using FluentValidation; using System; -using static CDR.Register.API.Infrastructure.Constants; +using static CDR.Register.Domain.Constants; namespace CDR.Register.Admin.API.Business.Validators { @@ -11,14 +11,14 @@ public class DataHolderAuthenticationValidator : AbstractValidator x.RegisterUType).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.JwksEndpoint).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); + RuleFor(x => x.RegisterUType).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.JwksEndpoint).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); // Enum Validations - RuleFor(x => x.RegisterUType).Must(x => Enum.TryParse(x.Replace("-", string.Empty), true, out RegisterUTypeEnum result)).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); + RuleFor(x => x.RegisterUType).Must(x => Enum.TryParse(x.Replace("-", string.Empty), true, out RegisterUType result)).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); // Length Validations - RuleFor(x => x.JwksEndpoint).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); + RuleFor(x => x.JwksEndpoint).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); } } } diff --git a/Source/CDR.Register.Admin.API/Business/Validators/DataHolderBrandValidator.cs b/Source/CDR.Register.Admin.API/Business/Validators/DataHolderBrandValidator.cs index 13db4ab..ba11069 100644 --- a/Source/CDR.Register.Admin.API/Business/Validators/DataHolderBrandValidator.cs +++ b/Source/CDR.Register.Admin.API/Business/Validators/DataHolderBrandValidator.cs @@ -2,8 +2,7 @@ using CDR.Register.Domain.Entities; using FluentValidation; using System; -using System.Linq; -using static CDR.Register.API.Infrastructure.Constants; +using static CDR.Register.Domain.Constants; namespace CDR.Register.Admin.API.Business.Validators { @@ -12,22 +11,22 @@ public class DataHolderBrandValidator : AbstractValidator public DataHolderBrandValidator() { // Mandatory Field Validations - RuleFor(x => x.DataHolderBrandId).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.BrandName).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.Industries).Must(x => x!= null && x.Length > 0).WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.LogoUri).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.Status).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.LegalEntity).Must(x => x!= null).WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.EndpointDetail).Must(x => x!= null).WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.AuthDetails).Must(x => x!= null).WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); + RuleFor(x => x.DataHolderBrandId).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.BrandName).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.Industries).Must(x => x != null && x.Length > 0).WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.LogoUri).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.Status).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.LegalEntity).Must(x => x != null).WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.EndpointDetail).Must(x => x != null).WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.AuthDetails).Must(x => x != null).WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); // Enum Validations - RuleForEach(x => x.Industries).Must(x => Enum.TryParse(x, true, out IndustryEnum result)).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); - RuleFor(x => x.Status).Must(x => Enum.TryParse(x, true, out DhParticipationStatusEnum result)).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); + RuleForEach(x => x.Industries).Must(x => Enum.TryParse(x, true, out Industry result)).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); + RuleFor(x => x.Status).Must(x => Enum.TryParse(x, true, out DhParticipationStatus result)).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); // Length Validations - RuleFor(x => x.BrandName).MaximumLength(200).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); - RuleFor(x => x.LogoUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); + RuleFor(x => x.BrandName).MaximumLength(200).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); + RuleFor(x => x.LogoUri).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); // Child Validation RuleFor(x => x.EndpointDetail).SetValidator(new DataHolderEndpointValidator()); diff --git a/Source/CDR.Register.Admin.API/Business/Validators/DataHolderEndpointValidator.cs b/Source/CDR.Register.Admin.API/Business/Validators/DataHolderEndpointValidator.cs index 42b8d3e..b948f31 100644 --- a/Source/CDR.Register.Admin.API/Business/Validators/DataHolderEndpointValidator.cs +++ b/Source/CDR.Register.Admin.API/Business/Validators/DataHolderEndpointValidator.cs @@ -1,7 +1,6 @@ using CDR.Register.Admin.API.Business.Model; using FluentValidation; -using System; -using static CDR.Register.API.Infrastructure.Constants; +using static CDR.Register.Domain.Constants; namespace CDR.Register.Admin.API.Business.Validators { @@ -10,19 +9,19 @@ public class DataHolderEndpointValidator : AbstractValidator x.Version).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.PublicBaseUri).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.ResourceBaseUri).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.InfosecBaseUri).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.WebsiteUri).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); + RuleFor(x => x.Version).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.PublicBaseUri).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.ResourceBaseUri).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.InfosecBaseUri).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.WebsiteUri).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); // Length Validations - RuleFor(x => x.Version).MaximumLength(25).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); - RuleFor(x => x.PublicBaseUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); - RuleFor(x => x.ResourceBaseUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); - RuleFor(x => x.InfosecBaseUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); - RuleFor(x => x.ExtensionBaseUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); - RuleFor(x => x.WebsiteUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); + RuleFor(x => x.Version).MaximumLength(25).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); + RuleFor(x => x.PublicBaseUri).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); + RuleFor(x => x.ResourceBaseUri).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); + RuleFor(x => x.InfosecBaseUri).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); + RuleFor(x => x.ExtensionBaseUri).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); + RuleFor(x => x.WebsiteUri).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); } } } diff --git a/Source/CDR.Register.Admin.API/Business/Validators/DataHolderLegalEntityValidator.cs b/Source/CDR.Register.Admin.API/Business/Validators/DataHolderLegalEntityValidator.cs index 99b316c..24753f0 100644 --- a/Source/CDR.Register.Admin.API/Business/Validators/DataHolderLegalEntityValidator.cs +++ b/Source/CDR.Register.Admin.API/Business/Validators/DataHolderLegalEntityValidator.cs @@ -2,7 +2,7 @@ using CDR.Register.Domain.Entities; using FluentValidation; using System; -using static CDR.Register.API.Infrastructure.Constants; +using static CDR.Register.Domain.Constants; namespace CDR.Register.Admin.API.Business.Validators { @@ -11,24 +11,24 @@ public class DataHolderLegalEntityValidator : AbstractValidator x.LegalEntityId).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.LegalEntityName).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.LogoUri).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.Status).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); + RuleFor(x => x.LegalEntityId).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.LegalEntityName).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.LogoUri).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.Status).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); // Enum Validations - RuleFor(x => x.Status).Must(x => Enum.TryParse(x, true, out DhStatusEnum result)).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); - RuleFor(x => x.OrganisationType).Must(x => string.IsNullOrEmpty(x) || Enum.TryParse(x.Replace("_", string.Empty), true, out OrganisationTypeEnum result)).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); + RuleFor(x => x.Status).Must(x => Enum.TryParse(x, true, out DhStatus result)).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); + RuleFor(x => x.OrganisationType).Must(x => string.IsNullOrEmpty(x) || Enum.TryParse(x.Replace("_", string.Empty), true, out OrganisationType result)).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); // Length Validations - RuleFor(x => x.LegalEntityName).MaximumLength(200).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); - RuleFor(x => x.LogoUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); - RuleFor(x => x.RegistrationNumber).MaximumLength(100).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); - RuleFor(x => x.RegisteredCountry).MaximumLength(100).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); - RuleFor(x => x.Abn).MaximumLength(11).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); - RuleFor(x => x.Acn).MaximumLength(9).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); - RuleFor(x => x.Arbn).MaximumLength(9).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); - RuleFor(x => x.AnzsicDivision).MaximumLength(100).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid); + RuleFor(x => x.LegalEntityName).MaximumLength(200).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); + RuleFor(x => x.LogoUri).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); + RuleFor(x => x.RegistrationNumber).MaximumLength(100).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); + RuleFor(x => x.RegisteredCountry).MaximumLength(100).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); + RuleFor(x => x.Abn).MaximumLength(11).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); + RuleFor(x => x.Acn).MaximumLength(9).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); + RuleFor(x => x.Arbn).MaximumLength(9).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); + RuleFor(x => x.AnzsicDivision).MaximumLength(100).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField); } } } diff --git a/Source/CDR.Register.Admin.API/Business/Validators/LegalEntityValidator.cs b/Source/CDR.Register.Admin.API/Business/Validators/LegalEntityValidator.cs index 167609a..a53627b 100644 --- a/Source/CDR.Register.Admin.API/Business/Validators/LegalEntityValidator.cs +++ b/Source/CDR.Register.Admin.API/Business/Validators/LegalEntityValidator.cs @@ -1,10 +1,9 @@ using CDR.Register.Admin.API.Business.Model; -using CDR.Register.API.Infrastructure.Models; using FluentValidation; using System; using System.Collections.Generic; using System.Linq; -using static CDR.Register.API.Infrastructure.Constants; +using static CDR.Register.Domain.Constants; namespace CDR.Register.Admin.API.Business.Validators { @@ -13,43 +12,43 @@ public class LegalEntityValidator : AbstractValidator public LegalEntityValidator() { //check all mandatory fields - RuleFor(x => x.LegalEntityId).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.LegalEntityName).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.AccreditationNumber).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.AccreditationLevel).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.LogoUri).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.Status).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.DataRecipientBrands).Must(x => x!= null && x.Count>0).WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); + RuleFor(x => x.LegalEntityId).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.LegalEntityName).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.AccreditationNumber).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.AccreditationLevel).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.LogoUri).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.Status).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.DataRecipientBrands).Must(x => x!= null && x.Count>0).WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); //enum validations - RuleFor(x => x.AccreditationLevel).Must(x => Enum.TryParse(x, true, out Repository.Entities.AccreditationLevelType result)).WithErrorCode(ErrorCodes.FieldInvalid). - WithMessage(ErrorTitles.FieldInvalid). + RuleFor(x => x.AccreditationLevel).Must(x => Enum.TryParse(x, true, out Repository.Entities.AccreditationLevelType result)).WithErrorCode(ErrorCodes.Cds.InvalidField). + WithMessage(ErrorTitles.InvalidField). WithState(le => $"Value '{le.AccreditationLevel}' is not allowed for AccreditationLevel"); RuleFor(x => x.Status).Must(x => Enum.TryParse(x, true, out Repository.Entities.ParticipationStatusType result)). - WithErrorCode(ErrorCodes.FieldInvalid). - WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.Status}' is not allowed for Status"); + WithErrorCode(ErrorCodes.Cds.InvalidField). + WithMessage(ErrorTitles.InvalidField).WithState(le => $"Value '{le.Status}' is not allowed for Status"); RuleFor(x => x.OrganisationType).Must(x => x == null || Enum.TryParse(x?.Replace("_", ""), true, out Repository.Entities.OrganisationTypes result)). - WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid). + WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField). WithState(le => $"Value '{le.OrganisationType}' is not allowed for OrganisationType"); //field lengths - RuleFor(x => x.LegalEntityName).MaximumLength(200).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState( le => $"Value '{le.LegalEntityName}' is not allowed for LegalEntityName"); - RuleFor(x => x.AccreditationNumber).MaximumLength(100).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.AccreditationNumber}' is not allowed for AccreditationNumber"); - RuleFor(x => x.AccreditationLevel).MaximumLength(13).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.AccreditationLevel}' is not allowed for AccreditationLevel"); - RuleFor(x => x.LogoUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.LogoUri}' is not allowed for LogoUri"); - RuleFor(x => x.RegistrationNumber).MaximumLength(100).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.RegistrationNumber}' is not allowed for RegistrationNumber"); - RuleFor(x => x.RegisteredCountry).MaximumLength(100).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.RegisteredCountry}' is not allowed for RegisteredCountry"); - RuleFor(x => x.Abn).MaximumLength(11).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.Abn}' is not allowed for Abn"); - RuleFor(x => x.Acn).MaximumLength(9).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.Acn}' is not allowed for Acn"); - RuleFor(x => x.Arbn).MaximumLength(9).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.Arbn}' is not allowed for Arbn"); - RuleFor(x => x.AnzsicDivision).MaximumLength(100).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(le => $"Value '{le.AnzsicDivision}' is not allowed for AnzsicDivision"); + RuleFor(x => x.LegalEntityName).MaximumLength(200).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState( le => $"Value '{le.LegalEntityName}' is not allowed for LegalEntityName"); + RuleFor(x => x.AccreditationNumber).MaximumLength(100).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(le => $"Value '{le.AccreditationNumber}' is not allowed for AccreditationNumber"); + RuleFor(x => x.AccreditationLevel).MaximumLength(13).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(le => $"Value '{le.AccreditationLevel}' is not allowed for AccreditationLevel"); + RuleFor(x => x.LogoUri).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(le => $"Value '{le.LogoUri}' is not allowed for LogoUri"); + RuleFor(x => x.RegistrationNumber).MaximumLength(100).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(le => $"Value '{le.RegistrationNumber}' is not allowed for RegistrationNumber"); + RuleFor(x => x.RegisteredCountry).MaximumLength(100).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(le => $"Value '{le.RegisteredCountry}' is not allowed for RegisteredCountry"); + RuleFor(x => x.Abn).MaximumLength(11).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(le => $"Value '{le.Abn}' is not allowed for Abn"); + RuleFor(x => x.Acn).MaximumLength(9).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(le => $"Value '{le.Acn}' is not allowed for Acn"); + RuleFor(x => x.Arbn).MaximumLength(9).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(le => $"Value '{le.Arbn}' is not allowed for Arbn"); + RuleFor(x => x.AnzsicDivision).MaximumLength(100).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(le => $"Value '{le.AnzsicDivision}' is not allowed for AnzsicDivision"); RuleForEach(x => x.DataRecipientBrands).SetValidator(new BrandValidator()); - RuleFor(x => x.DataRecipientBrands).Must(HaveUniqueIds).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(GetDuplicateId); + RuleFor(x => x.DataRecipientBrands).Must(HaveUniqueIds).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(GetDuplicateId); } - private object GetDuplicateId(LegalEntity legalEntity) + private object? GetDuplicateId(LegalEntity legalEntity) { var distinctIds = new HashSet(); for (var i = 0; i < legalEntity.DataRecipientBrands?.Count; i++) diff --git a/Source/CDR.Register.Admin.API/Business/Validators/SoftwareProductCertificateValidator.cs b/Source/CDR.Register.Admin.API/Business/Validators/SoftwareProductCertificateValidator.cs index 1f9a08c..ed20f36 100644 --- a/Source/CDR.Register.Admin.API/Business/Validators/SoftwareProductCertificateValidator.cs +++ b/Source/CDR.Register.Admin.API/Business/Validators/SoftwareProductCertificateValidator.cs @@ -1,6 +1,6 @@ using CDR.Register.Admin.API.Business.Model; using FluentValidation; -using static CDR.Register.API.Infrastructure.Constants; +using static CDR.Register.Domain.Constants; namespace CDR.Register.Admin.API.Business.Validators { @@ -9,11 +9,11 @@ public class SoftwareProductCertificateValidator : AbstractValidator x.CommonName).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.Thumbprint).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); + RuleFor(x => x.CommonName).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.Thumbprint).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); - RuleFor(x => x.CommonName).MaximumLength(2000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(b => $"Value '{b.CommonName}' is not allowed for CommonName"); - RuleFor(x => x.Thumbprint).MaximumLength(2000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(b => $"Value '{b.Thumbprint}' is not allowed for Thumbprint"); + RuleFor(x => x.CommonName).MaximumLength(2000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(b => $"Value '{b.CommonName}' is not allowed for CommonName"); + RuleFor(x => x.Thumbprint).MaximumLength(2000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(b => $"Value '{b.Thumbprint}' is not allowed for Thumbprint"); } } } diff --git a/Source/CDR.Register.Admin.API/Business/Validators/SoftwareProductValidator.cs b/Source/CDR.Register.Admin.API/Business/Validators/SoftwareProductValidator.cs index 7a1f885..e40eb24 100644 --- a/Source/CDR.Register.Admin.API/Business/Validators/SoftwareProductValidator.cs +++ b/Source/CDR.Register.Admin.API/Business/Validators/SoftwareProductValidator.cs @@ -2,7 +2,7 @@ using FluentValidation; using System; using System.Linq; -using static CDR.Register.API.Infrastructure.Constants; +using static CDR.Register.Domain.Constants; namespace CDR.Register.Admin.API.Business.Validators { @@ -10,35 +10,35 @@ public class SoftwareProductValidator : AbstractValidator { public SoftwareProductValidator() { - RuleFor(x => x.SoftwareProductId).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.SoftwareProductName).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.SoftwareProductDescription).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.LogoUri).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.ClientUri).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.RecipientBaseUri).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.RevocationUri).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.RedirectUris).Must(x => x!= null && x.Length>0).WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.JwksUri).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.Status).NotEmpty().WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); - RuleFor(x => x.Certificates).Must(x => x!= null && x.Count>0).WithErrorCode(ErrorCodes.FieldMissing).WithMessage(ErrorTitles.FieldMissing); + RuleFor(x => x.SoftwareProductId).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.SoftwareProductName).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.SoftwareProductDescription).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.LogoUri).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.ClientUri).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.RecipientBaseUri).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.RevocationUri).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.RedirectUris).Must(x => x!= null && x.Length>0).WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.JwksUri).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.Status).NotEmpty().WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); + RuleFor(x => x.Certificates).Must(x => x!= null && x.Count>0).WithErrorCode(ErrorCodes.Cds.MissingRequiredField).WithMessage(ErrorTitles.MissingRequiredField); //lengths - RuleFor(x => x.SoftwareProductName).MaximumLength(200).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(x => $"Value '{x.SoftwareProductName}' is not allowed for SoftwareProductName"); - RuleFor(x => x.SoftwareProductDescription).MaximumLength(4000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(x => $"Value '{x.SoftwareProductDescription}' is not allowed for SoftwareProductDescription"); - RuleFor(x => x.LogoUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(x => $"Value '{x.LogoUri}' is not allowed for LogoUri"); - RuleFor(x => x.ClientUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(x => $"Value '{x.ClientUri}' is not allowed for ClientUri"); - RuleFor(x => x.SectorIdentifierUri).MaximumLength(2048).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(x => $"Value '{x.SectorIdentifierUri}' is not allowed for SectorIdentifierUri"); - RuleFor(x => x.TosUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(x => $"Value '{x.TosUri}' is not allowed for TosUri"); - RuleFor(x => x.PolicyUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(x => $"Value '{x.PolicyUri}' is not allowed for PolicyUri"); - RuleFor(x => x.RecipientBaseUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(x => $"Value '{x.RecipientBaseUri}' is not allowed for RecipientBaseUri"); - RuleFor(x => x.RevocationUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(x => $"Value '{x.RevocationUri}' is not allowed for RevocationUri"); - RuleForEach(x => x.RedirectUris).MaximumLength(2000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(x => $"Value '{x.RedirectUris}' is not allowed for RedirectUris"); - RuleFor(x => x.JwksUri).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(x => $"Value '{x.JwksUri}' is not allowed for JwksUri"); - RuleFor(x => x.Scope).MaximumLength(1000).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(x => $"Value '{x.Scope}' is not allowed for Scope"); - RuleFor(x => x.Status).MaximumLength(9).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(x => $"Value '{x.Status}' is not allowed for Status"); + RuleFor(x => x.SoftwareProductName).MaximumLength(200).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(x => $"Value '{x.SoftwareProductName}' is not allowed for SoftwareProductName"); + RuleFor(x => x.SoftwareProductDescription).MaximumLength(4000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(x => $"Value '{x.SoftwareProductDescription}' is not allowed for SoftwareProductDescription"); + RuleFor(x => x.LogoUri).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(x => $"Value '{x.LogoUri}' is not allowed for LogoUri"); + RuleFor(x => x.ClientUri).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(x => $"Value '{x.ClientUri}' is not allowed for ClientUri"); + RuleFor(x => x.SectorIdentifierUri).MaximumLength(2048).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(x => $"Value '{x.SectorIdentifierUri}' is not allowed for SectorIdentifierUri"); + RuleFor(x => x.TosUri).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(x => $"Value '{x.TosUri}' is not allowed for TosUri"); + RuleFor(x => x.PolicyUri).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(x => $"Value '{x.PolicyUri}' is not allowed for PolicyUri"); + RuleFor(x => x.RecipientBaseUri).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(x => $"Value '{x.RecipientBaseUri}' is not allowed for RecipientBaseUri"); + RuleFor(x => x.RevocationUri).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(x => $"Value '{x.RevocationUri}' is not allowed for RevocationUri"); + RuleForEach(x => x.RedirectUris).MaximumLength(2000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(x => $"Value '{x.RedirectUris}' is not allowed for RedirectUris"); + RuleFor(x => x.JwksUri).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(x => $"Value '{x.JwksUri}' is not allowed for JwksUri"); + RuleFor(x => x.Scope).MaximumLength(1000).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(x => $"Value '{x.Scope}' is not allowed for Scope"); + RuleFor(x => x.Status).MaximumLength(9).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(x => $"Value '{x.Status}' is not allowed for Status"); //enum - RuleFor(x => x.Status).Must(x => Enum.TryParse(x, true, out Repository.Entities.SoftwareProductStatusType result)).WithErrorCode(ErrorCodes.FieldInvalid).WithMessage(ErrorTitles.FieldInvalid).WithState(x => $"Value '{x.Status}' is not allowed for Status"); + RuleFor(x => x.Status).Must(x => Enum.TryParse(x, true, out Repository.Entities.SoftwareProductStatusType result)).WithErrorCode(ErrorCodes.Cds.InvalidField).WithMessage(ErrorTitles.InvalidField).WithState(x => $"Value '{x.Status}' is not allowed for Status"); RuleForEach(x => x.Certificates).SetValidator(new SoftwareProductCertificateValidator()); } diff --git a/Source/CDR.Register.Admin.API/CDR.Register.Admin.API.csproj b/Source/CDR.Register.Admin.API/CDR.Register.Admin.API.csproj index 390bf35..e5327f9 100644 --- a/Source/CDR.Register.Admin.API/CDR.Register.Admin.API.csproj +++ b/Source/CDR.Register.Admin.API/CDR.Register.Admin.API.csproj @@ -1,62 +1,67 @@  - - - net6.0 - enable - 1.3.0 - 1.3.0 - 1.3.0 - - - - - - - - - - - - Always - - - Always - - - PreserveNewest - - - Always - - - - - - - - - - - - - - - - - - - - - - - - Always - - - Always - - - - - - + + enable + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) + True + ConsumerDataRight.ParticipantTooling.MockRegister.API.Admin.xml + + + + + + + + + + Always + + + Always + + + PreserveNewest + + + Always + + + + + + + + + + + + + + + + + + + + + + + + + + + + Always + + + Always + + + + + + + + \ No newline at end of file diff --git a/Source/CDR.Register.Admin.API/ConsumerDataRight.ParticipantTooling.MockRegister.API.Admin.xml b/Source/CDR.Register.Admin.API/ConsumerDataRight.ParticipantTooling.MockRegister.API.Admin.xml new file mode 100644 index 0000000..8ef1134 --- /dev/null +++ b/Source/CDR.Register.Admin.API/ConsumerDataRight.ParticipantTooling.MockRegister.API.Admin.xml @@ -0,0 +1,34 @@ + + + + CDR.Register.Admin.API + + + + + This controller action provides an implementation of a JWKS for a Mock Data Recipient. + + JWKS + + + + This controller action produces a client assertion for a mock data recipient. + + Client assertion string + + This client assertion can then be used in a private key jwt request. + + + + + This controller action produces a self signed JWT for the mock register. + + Self Signed JWT + + + + Determine if EF Migrations should run. + + + + diff --git a/Source/CDR.Register.Admin.API/Controllers/AdminController.cs b/Source/CDR.Register.Admin.API/Controllers/AdminController.cs index 4a32561..de21902 100644 --- a/Source/CDR.Register.Admin.API/Controllers/AdminController.cs +++ b/Source/CDR.Register.Admin.API/Controllers/AdminController.cs @@ -1,22 +1,23 @@ using AutoMapper; using CDR.Register.Admin.API.Business.Model; using CDR.Register.Admin.API.Business.Validators; -using CDR.Register.Admin.API.Common; +using CDR.Register.Admin.API.Extensions; using CDR.Register.Admin.API.Filters; using CDR.Register.API.Infrastructure.Filters; -using CDR.Register.API.Infrastructure.Models; using CDR.Register.Domain.Entities; +using CDR.Register.Domain.Models; using CDR.Register.Repository; using CDR.Register.Repository.Infrastructure; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using Newtonsoft.Json.Serialization; using System; using System.IO; using System.Linq; using System.Text.Json; using System.Threading.Tasks; -using static CDR.Register.API.Infrastructure.Constants; namespace CDR.Register.Admin.API.Controllers { @@ -74,14 +75,24 @@ public async Task LoadData() [HttpGet] [Route("Metadata")] [ApiVersionNeutral] - [ServiceFilter(typeof(LogActionEntryAttribute))] + [ServiceFilter(typeof(LogActionEntryAttribute))] public async Task GetData() { + //We need to override the usual default settings so that the FK Ids can use their int values instead of their string values + var apiSpecificSettings = new JsonSerializerSettings() + { + ReferenceLoopHandling = ReferenceLoopHandling.Ignore, + NullValueHandling = NullValueHandling.Ignore, + ContractResolver = new CamelCasePropertyNamesContractResolver(), + }; + + JsonConvert.DefaultSettings = () => apiSpecificSettings; + var metadata = await _dbContext.GetJsonFromDatabase(); // Return the raw JSON response. Response.ContentType = "application/json"; - await Response.BodyWriter.WriteAsync(System.Text.UTF8Encoding.UTF8.GetBytes($"{{ \"LegalEntities\": {metadata} }}")); + await Response.BodyWriter.WriteAsync(System.Text.UTF8Encoding.UTF8.GetBytes($"{{ \"legalEntities\": {metadata} }}")); } [HttpPost] @@ -99,7 +110,7 @@ public async Task SaveDataHolderBrand([FromBody] DataHolderBrandM // Validate the incoming data holder model. var validationErrors = dataHolderBrandModel.Validate(existingDataHolderBrand); - if (validationErrors != null && validationErrors.Errors.Any()) + if (validationErrors != null && validationErrors.Errors.Count > 0) { return BadRequest(validationErrors); } @@ -136,13 +147,13 @@ public async Task SaveDataRecipient() if (string.IsNullOrWhiteSpace(json)) { - return BadRequest(new Error { Title = ErrorTitles.FieldInvalid, Code = ErrorCodes.FieldInvalid, Detail = "Empty LegalEntity received" }); + return BadRequest(new Error(Domain.Constants.ErrorTitles.InvalidField, Domain.Constants.ErrorCodes.Cds.InvalidField, "Empty LegalEntity received")); } - var legalEntity = JsonSerializer.Deserialize(json, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); + var legalEntity = System.Text.Json.JsonSerializer.Deserialize(json, new JsonSerializerOptions { PropertyNameCaseInsensitive = true }); //This is inconsistent with other serializers - var errors = legalEntity.GetValidationErrors(new LegalEntityValidator()); - if (errors.Errors.Any()) + var errors = legalEntity?.GetValidationErrors(new LegalEntityValidator()); + if (errors?.Errors.Count > 0) { return BadRequest(errors); } @@ -154,7 +165,7 @@ public async Task SaveDataRecipient() null => Ok(), _ => BadRequest(businessRuleError.ToResponseErrorList()) }; - } + } catch (Exception ex) { _logger.LogError(ex, "An error occured in SaveDataRecipient"); diff --git a/Source/CDR.Register.Admin.API/Controllers/LoopbackController.cs b/Source/CDR.Register.Admin.API/Controllers/LoopbackController.cs index e5d4697..e155ade 100644 --- a/Source/CDR.Register.Admin.API/Controllers/LoopbackController.cs +++ b/Source/CDR.Register.Admin.API/Controllers/LoopbackController.cs @@ -1,11 +1,9 @@ using CDR.Register.API.Infrastructure.Filters; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Logging; using Microsoft.IdentityModel.JsonWebTokens; using Microsoft.IdentityModel.Tokens; using Newtonsoft.Json; -using Serilog.Context; using System; using System.Collections.Generic; using System.Security.Claims; @@ -125,7 +123,7 @@ public IActionResult MockDataRecipientClientAssertion() public IActionResult RegisterSelfSignedJwt( [FromQuery] string aud) { - var cert = new X509Certificate2(_config.GetValue("SigningCertificate:Path"), _config.GetValue("SigningCertificate:Password"), X509KeyStorageFlags.Exportable); + var cert = new X509Certificate2(_config.GetValue("SigningCertificate:Path") ?? "", _config.GetValue("SigningCertificate:Password"), X509KeyStorageFlags.Exportable); var signingCredentials = new X509SigningCredentials(cert, SecurityAlgorithms.RsaSsaPssSha256); var descriptor = new SecurityTokenDescriptor diff --git a/Source/CDR.Register.Admin.API/Data/seed-data.Container.json b/Source/CDR.Register.Admin.API/Data/seed-data.Container.json index 2a8fcbe..3cfb74d 100644 --- a/Source/CDR.Register.Admin.API/Data/seed-data.Container.json +++ b/Source/CDR.Register.Admin.API/Data/seed-data.Container.json @@ -1,66 +1,66 @@ { - "LegalEntities": [ + "legalEntities": [ { - "LegalEntityId": "2f596416-53bc-42ad-bd5a-65537a2d5c42", - "LegalEntityName": "Very Smart Energy Company", - "LogoUri": "https://verysmarterenergy/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12345678901", - "Acn": "123456789", - "Arbn": null, - "AnzsicDivision": "2640", - "OrganisationTypeId": 2, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "2f596416-53bc-42ad-bd5a-65537a2d5c42", + "legalEntityName": "Very Smart Energy Company", + "logoUri": "https://verysmarterenergy/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12345678901", + "acn": "123456789", + "arbn": null, + "anzsicDivision": "2640", + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 2, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 2, + "statusId": 1, + "brands": [ { - "BrandId": "cfcaf0df-401b-47f2-98af-94787289eca8", - "BrandName": "Mock Data Holder (Energy)", - "LogoUri": "https://smarterenergy/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-12-01T10:00:00", - "AuthDetails": [ + "brandId": "cfcaf0df-401b-47f2-98af-94787289eca8", + "brandName": "Mock Data Holder (Energy)", + "logoUri": "https://smarterenergy/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-12-01T10:00:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.smarterenergy/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.smarterenergy/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8100", - "ResourceBaseUri": "https://host.docker.internal:8102", - "InfoSecBaseUri": "https://host.docker.internal:8101", - "ExtensionBaseUri": "", - "WebsiteUri": "https://smarterenergy/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8100", + "resourceBaseUri": "https://host.docker.internal:8102", + "infoSecBaseUri": "https://host.docker.internal:8101", + "extensionBaseUri": "", + "websiteUri": "https://smarterenergy/" } }, { - "BrandId": "6859d9f9-9cf9-486d-bc85-5d43a7e116de", - "BrandName": "Cut Price Energy -- dummy data holder -- do not use", - "LogoUri": "https://cutpriceenergy/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-12-01T11:00:00", - "AuthDetails": [ + "brandId": "6859d9f9-9cf9-486d-bc85-5d43a7e116de", + "brandName": "Cut Price Energy -- dummy data holder -- do not use", + "logoUri": "https://cutpriceenergy/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-12-01T11:00:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.cutpriceenergy/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.cutpriceenergy/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8100", - "ResourceBaseUri": "https://localhost:8102", - "InfoSecBaseUri": "https://localhost:8101", - "ExtensionBaseUri": "", - "WebsiteUri": "https://cutpriceenergy/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8100", + "resourceBaseUri": "https://localhost:8102", + "infoSecBaseUri": "https://localhost:8101", + "extensionBaseUri": "", + "websiteUri": "https://cutpriceenergy/" } } ] @@ -68,52 +68,52 @@ ] }, { - "LegalEntityId": "f9bde9a1-9fef-4bd9-b7ef-877369e076e3", - "LegalEntityName": "Mock Energy Company", - "LogoUri": "https://mocksoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "34241177887", - "Acn": "005249981", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000001", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "f9bde9a1-9fef-4bd9-b7ef-877369e076e3", + "legalEntityName": "Mock Energy Company", + "logoUri": "https://mocksoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "34241177887", + "acn": "005249981", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000001", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "d50b74cf-e992-42fd-86d4-582ac9d72dbb", - "BrandName": "Mock Energy Tool", - "LogoUri": "https://mocksoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-12-01T09:00:00", - "SoftwareProducts": [ + "brandId": "d50b74cf-e992-42fd-86d4-582ac9d72dbb", + "brandName": "Mock Energy Tool", + "logoUri": "https://mocksoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-12-01T09:00:00", + "softwareProducts": [ { - "SoftwareProductId": "4754cf30-6cc2-4a9a-a9e1-4fb8f6d42120", - "SoftwareProductName": "MyEnergyHelper", - "SoftwareProductDescription": "A product to help you manage your energy costs", - "LogoUri": "https://mocksoftware/myenergyapp/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://mocksoftware/myenergyapp", - "TosUri": "https://mocksoftware/myenergyapp/terms", - "PolicyUri": "https://mocksoftware/myenergyapp/policy", - "RecipientBaseUri": "https://host.docker.internal:9001", - "RevocationUri": "https://host.docker.internal:9001/revocation", - "RedirectUris": "https://host.docker.internal:9001/consent/callback", - "JwksUri": "https://host.docker.internal:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "4754cf30-6cc2-4a9a-a9e1-4fb8f6d42120", + "softwareProductName": "MyEnergyHelper", + "softwareProductDescription": "A product to help you manage your energy costs", + "logoUri": "https://mocksoftware/myenergyapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://mocksoftware/myenergyapp", + "tosUri": "https://mocksoftware/myenergyapp/terms", + "policyUri": "https://mocksoftware/myenergyapp/policy", + "recipientBaseUri": "https://host.docker.internal:9001", + "revocationUri": "https://host.docker.internal:9001/revocation", + "redirectUris": "https://host.docker.internal:9001/consent/callback", + "jwksUri": "https://host.docker.internal:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -124,45 +124,45 @@ ] }, { - "LegalEntityId": "0d332caa-8cd8-4ac9-8898-20641c54bc8c", - "LegalEntityName": "Bank Legal Entity 1", - "LogoUri": "https://bank/logo.png", - "RegistrationNumber": "12345", - "RegistrationDate": "2021-12-01T10:00:00", - "RegisteredCountry": "AUSTRALIA", - "Abn": "11111111111", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": "6221", - "OrganisationTypeId": 2, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "0d332caa-8cd8-4ac9-8898-20641c54bc8c", + "legalEntityName": "Bank Legal Entity 1", + "logoUri": "https://bank/logo.png", + "registrationNumber": "12345", + "registrationDate": "2021-12-01T10:00:00", + "registeredCountry": "AUSTRALIA", + "abn": "11111111111", + "acn": "888777666", + "arbn": null, + "anzsicDivision": "6221", + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "804fc2fb-18a7-4235-9a49-2af393d18bc7", - "BrandName": "Mock Data Holder (Banking)", - "LogoUri": "https://bank1/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "804fc2fb-18a7-4235-9a49-2af393d18bc7", + "brandName": "Mock Data Holder (Banking)", + "logoUri": "https://bank1/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.bank1/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.bank1/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://bank1/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://bank1/" } } ] @@ -170,52 +170,52 @@ ] }, { - "LegalEntityId": "18b75a76-5821-4c9e-b465-4709291cf0f4", - "LegalEntityName": "Mock Software Company", - "LogoUri": "https://mocksoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "11222333444", - "Acn": "222333444", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000099", - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "18b75a76-5821-4c9e-b465-4709291cf0f4", + "legalEntityName": "Mock Software Company", + "logoUri": "https://mocksoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "11222333444", + "acn": "222333444", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000099", + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "ffb1c8ba-279e-44d8-96f0-1bc34a6b436f", - "BrandName": "Mock Finance Tools", - "LogoUri": "https://mocksoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "ffb1c8ba-279e-44d8-96f0-1bc34a6b436f", + "brandName": "Mock Finance Tools", + "logoUri": "https://mocksoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "c6327f87-687a-4369-99a4-eaacd3bb8210", - "SoftwareProductName": "MyBudgetHelper", - "SoftwareProductDescription": "A product to help you manage your budget", - "LogoUri": "https://mocksoftware/mybudgetapp/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://mocksoftware/mybudgetapp", - "TosUri": "https://mocksoftware/mybudgetapp/terms", - "PolicyUri": "https://mocksoftware/mybudgetapp/policy", - "RecipientBaseUri": "https://host.docker.internal:9001", - "RevocationUri": "https://host.docker.internal:9001/revocation", - "RedirectUris": "https://host.docker.internal:9001/consent/callback", - "JwksUri": "https://host.docker.internal:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "c6327f87-687a-4369-99a4-eaacd3bb8210", + "softwareProductName": "MyBudgetHelper", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://mocksoftware/mybudgetapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://mocksoftware/mybudgetapp", + "tosUri": "https://mocksoftware/mybudgetapp/terms", + "policyUri": "https://mocksoftware/mybudgetapp/policy", + "recipientBaseUri": "https://host.docker.internal:9001", + "revocationUri": "https://host.docker.internal:9001/revocation", + "redirectUris": "https://host.docker.internal:9001/consent/callback", + "jwksUri": "https://host.docker.internal:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -226,45 +226,45 @@ ] }, { - "LegalEntityId": "93ef5f28-7f30-43f2-8e5c-b1e3cb39ce90", - "LegalEntityName": "New Bank", - "LogoUri": "https://newbank/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "99888777666", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "93ef5f28-7f30-43f2-8e5c-b1e3cb39ce90", + "legalEntityName": "New Bank", + "logoUri": "https://newbank/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "99888777666", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "6e9cfaf7-ecae-4de3-bbc5-ea9f366bdf55", - "BrandName": "New Bank -- dummy data holder -- do not use", - "LogoUri": "https://newbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "6e9cfaf7-ecae-4de3-bbc5-ea9f366bdf55", + "brandName": "New Bank -- dummy data holder -- do not use", + "logoUri": "https://newbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.newbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.newbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://newbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://newbank/" } } ] @@ -272,66 +272,66 @@ ] }, { - "LegalEntityId": "aeca53ab-2a90-4737-938d-987ce195ca14", - "LegalEntityName": "Sun Bank", - "LogoUri": "https://sunbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "94477558899", - "Acn": "99000099", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": 2, - "LegalEntityStatusId": null, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "aeca53ab-2a90-4737-938d-987ce195ca14", + "legalEntityName": "Sun Bank", + "logoUri": "https://sunbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "94477558899", + "acn": "99000099", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": 2, + "legalEntityStatusId": null, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "f6dfbe5b-c57a-4ec2-bc97-66c1f7fe6c1d", - "BrandName": "Sun -- dummy data holder -- do not use", - "LogoUri": "https://sunbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-01T11:58:00", - "AuthDetails": [ + "brandId": "f6dfbe5b-c57a-4ec2-bc97-66c1f7fe6c1d", + "brandName": "Sun -- dummy data holder -- do not use", + "logoUri": "https://sunbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-01T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.sunbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.sunbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://sunbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://sunbank/" } }, { - "BrandId": "a2cd9cd1-e3c7-493b-86d8-f9f319ca0732", - "BrandName": "Brighter Bank -- dummy data holder -- do not use", - "LogoUri": "https://brighterbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-01-01T11:58:00", - "AuthDetails": [ + "brandId": "a2cd9cd1-e3c7-493b-86d8-f9f319ca0732", + "brandName": "Brighter Bank -- dummy data holder -- do not use", + "logoUri": "https://brighterbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-01-01T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.brighterbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.brighterbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://brighterbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://brighterbank/" } } ] @@ -339,66 +339,66 @@ ] }, { - "LegalEntityId": "ba1311fb-5cea-4c5c-b4ed-f2a98a0915e0", - "LegalEntityName": "Hot Bank", - "LogoUri": "https://hotbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12345678901", - "Acn": "123456789", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "ba1311fb-5cea-4c5c-b4ed-f2a98a0915e0", + "legalEntityName": "Hot Bank", + "logoUri": "https://hotbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12345678901", + "acn": "123456789", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "62f4a113-defe-4f99-bd9c-625277bc0e36", - "BrandName": "mildBank -- dummy data holder -- do not use", - "LogoUri": "https://mildbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-11T11:58:00", - "AuthDetails": [ + "brandId": "62f4a113-defe-4f99-bd9c-625277bc0e36", + "brandName": "mildBank -- dummy data holder -- do not use", + "logoUri": "https://mildbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-11T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://mildbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://mildbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://mildbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://mildbank/" } }, { - "BrandId": "81d3d5cc-cdb6-4253-a78b-b17155dde7fd", - "BrandName": "extrahotBank -- dummy data holder -- do not use", - "LogoUri": "https://extrahotbank/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-16T11:58:00", - "AuthDetails": [ + "brandId": "81d3d5cc-cdb6-4253-a78b-b17155dde7fd", + "brandName": "extrahotBank -- dummy data holder -- do not use", + "logoUri": "https://extrahotbank/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-16T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://extrahotbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://extrahotbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.extrahotbank", - "ResourceBaseUri": "https://api.extrahotbank", - "InfoSecBaseUri": "https://idp.extrahotbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://extrahotbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.extrahotbank", + "resourceBaseUri": "https://api.extrahotbank", + "infoSecBaseUri": "https://idp.extrahotbank", + "extensionBaseUri": "", + "websiteUri": "https://extrahotbank/" } } ] @@ -406,45 +406,45 @@ ] }, { - "LegalEntityId": "725c6e62-bfa7-4719-94af-415ae64d4bcd", - "LegalEntityName": "Ive Bank", - "LogoUri": "https://ivebank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12312312393", - "Acn": "099800998", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "725c6e62-bfa7-4719-94af-415ae64d4bcd", + "legalEntityName": "Ive Bank", + "logoUri": "https://ivebank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12312312393", + "acn": "099800998", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "9928cf0f-70c7-40ea-b7ad-cad190232f68", - "BrandName": "Ive Bank -- dummy data holder -- do not use", - "LogoUri": "https://ivebank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-03T11:58:00", - "AuthDetails": [ + "brandId": "9928cf0f-70c7-40ea-b7ad-cad190232f68", + "brandName": "Ive Bank -- dummy data holder -- do not use", + "logoUri": "https://ivebank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-03T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.ivebank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.ivebank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://ivebank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://ivebank/" } } ] @@ -452,45 +452,45 @@ ] }, { - "LegalEntityId": "2f1c327f-56b6-40c5-8e2e-b2130867329c", - "LegalEntityName": "Eva Bank", - "LogoUri": "https://evabank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "98765456765", - "Acn": "22121232", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "2f1c327f-56b6-40c5-8e2e-b2130867329c", + "legalEntityName": "Eva Bank", + "logoUri": "https://evabank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "98765456765", + "acn": "22121232", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "7c97c3b5-fe64-4b35-8ae0-17fa5d4aa0a8", - "BrandName": "Eva Bank corp -- dummy data holder -- do not use", - "LogoUri": "https://evabankcorp/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-26T11:58:00", - "AuthDetails": [ + "brandId": "7c97c3b5-fe64-4b35-8ae0-17fa5d4aa0a8", + "brandName": "Eva Bank corp -- dummy data holder -- do not use", + "logoUri": "https://evabankcorp/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-26T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.evabank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.evabank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://evabank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://evabank/" } } ] @@ -498,45 +498,45 @@ ] }, { - "LegalEntityId": "e81ab637-b3b7-4403-82b8-a43077a569d6", - "LegalEntityName": "Royal Bank", - "LogoUri": "https://royalbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "94477558833", - "Acn": "99000033", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "e81ab637-b3b7-4403-82b8-a43077a569d6", + "legalEntityName": "Royal Bank", + "logoUri": "https://royalbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "94477558833", + "acn": "99000033", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "a5252bde-d1a6-413f-8f53-f7e2f6ab3f77", - "BrandName": "Royal Bank -- dummy data holder -- do not use", - "LogoUri": "https://royalbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-01T11:58:00", - "AuthDetails": [ + "brandId": "a5252bde-d1a6-413f-8f53-f7e2f6ab3f77", + "brandName": "Royal Bank -- dummy data holder -- do not use", + "logoUri": "https://royalbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-01T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.royalbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.royalbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://royalbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://royalbank/" } } ] @@ -544,45 +544,45 @@ ] }, { - "LegalEntityId": "e81ab636-b3b7-4403-82b8-a43077a569d6", - "LegalEntityName": "Central Bank", - "LogoUri": "https://centralbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12398122412", - "Acn": "44123312", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": 2, - "LegalEntityStatusId": null, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "e81ab636-b3b7-4403-82b8-a43077a569d6", + "legalEntityName": "Central Bank", + "logoUri": "https://centralbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12398122412", + "acn": "44123312", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": 2, + "legalEntityStatusId": null, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "c1ff7731-5843-4384-88d8-6062afde7c5b", - "BrandName": "central bank -- dummy data holder -- do not use", - "LogoUri": "https://centralbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-03-06T11:58:00", - "AuthDetails": [ + "brandId": "c1ff7731-5843-4384-88d8-6062afde7c5b", + "brandName": "central bank -- dummy data holder -- do not use", + "logoUri": "https://centralbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-03-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.centralbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.centralbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://centralbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://centralbank/" } } ] @@ -590,45 +590,45 @@ ] }, { - "LegalEntityId": "ae4af466-54c6-4ce4-ad2d-580bc6496943", - "LegalEntityName": "Fox Bank", - "LogoUri": "https://foxbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "31234212475", - "Acn": "122341213", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "ae4af466-54c6-4ce4-ad2d-580bc6496943", + "legalEntityName": "Fox Bank", + "logoUri": "https://foxbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "31234212475", + "acn": "122341213", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "2192a459-5ef5-4493-afe1-56c3d03fc1ba", - "BrandName": "Fox Bank -- dummy data holder -- do not use", - "LogoUri": "https://foxbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-21T11:58:00", - "AuthDetails": [ + "brandId": "2192a459-5ef5-4493-afe1-56c3d03fc1ba", + "brandName": "Fox Bank -- dummy data holder -- do not use", + "logoUri": "https://foxbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-21T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.foxbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.foxbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://foxbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://foxbank/" } } ] @@ -636,45 +636,45 @@ ] }, { - "LegalEntityId": "017fcfc8-1fd3-4ef4-8f08-b697c4c681ee", - "LegalEntityName": "Grand Bank", - "LogoUri": "https://grandbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "99888777666", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "017fcfc8-1fd3-4ef4-8f08-b697c4c681ee", + "legalEntityName": "Grand Bank", + "logoUri": "https://grandbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "99888777666", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "8aa8e9a6-1dc7-4428-baea-d1f4533428b9", - "BrandName": "Grand Bank -- dummy data holder -- do not use", - "LogoUri": "https://grandbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-29T11:58:00", - "AuthDetails": [ + "brandId": "8aa8e9a6-1dc7-4428-baea-d1f4533428b9", + "brandName": "Grand Bank -- dummy data holder -- do not use", + "logoUri": "https://grandbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-29T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.grandbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.grandbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://grandbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://grandbank/" } } ] @@ -682,45 +682,45 @@ ] }, { - "LegalEntityId": "7b1a7566-e113-411b-94b7-d3b9fb0da98a", - "LegalEntityName": "Kiss Bank", - "LogoUri": "https://kissbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12593477455", - "Acn": "112122235", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "7b1a7566-e113-411b-94b7-d3b9fb0da98a", + "legalEntityName": "Kiss Bank", + "logoUri": "https://kissbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12593477455", + "acn": "112122235", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "85168ace-9211-45e3-bb75-f85c54e66f10", - "BrandName": "Kiss Bank -- dummy data holder -- do not use", - "LogoUri": "https://kissbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-12T11:58:00", - "AuthDetails": [ + "brandId": "85168ace-9211-45e3-bb75-f85c54e66f10", + "brandName": "Kiss Bank -- dummy data holder -- do not use", + "logoUri": "https://kissbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-12T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.kissbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.kissbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://kissbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://kissbank/" } } ] @@ -728,45 +728,45 @@ ] }, { - "LegalEntityId": "667407fc-dc7e-4be5-8795-5189240bcbca", - "LegalEntityName": "Luna Bank", - "LogoUri": "https://lunabank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12334412233", - "Acn": "747553322", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "667407fc-dc7e-4be5-8795-5189240bcbca", + "legalEntityName": "Luna Bank", + "logoUri": "https://lunabank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12334412233", + "acn": "747553322", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "bb03be60-5c46-422e-a27e-aefa0015078d", - "BrandName": "Luna -- dummy data holder -- do not use", - "LogoUri": "https://lunabank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-12T11:58:00", - "AuthDetails": [ + "brandId": "bb03be60-5c46-422e-a27e-aefa0015078d", + "brandName": "Luna -- dummy data holder -- do not use", + "logoUri": "https://lunabank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-12T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.lunabank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.lunabank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://lunabank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://lunabank/" } } ] @@ -774,45 +774,45 @@ ] }, { - "LegalEntityId": "7993c227-9252-432b-9b2f-a8666e2fd2f2", - "LegalEntityName": "Mu Bank", - "LogoUri": "https://mubank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12352345345", - "Acn": "112123121", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "7993c227-9252-432b-9b2f-a8666e2fd2f2", + "legalEntityName": "Mu Bank", + "logoUri": "https://mubank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12352345345", + "acn": "112123121", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "52d23611-4493-4a21-9095-44ae9eb85841", - "BrandName": "Mu Bank -- dummy data holder -- do not use", - "LogoUri": "https://mubank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "52d23611-4493-4a21-9095-44ae9eb85841", + "brandName": "Mu Bank -- dummy data holder -- do not use", + "logoUri": "https://mubank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.mubank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.mubank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://mubank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://mubank/" } } ] @@ -820,45 +820,45 @@ ] }, { - "LegalEntityId": "9c7dec6d-2e46-4b53-8430-5337c7eb93e9", - "LegalEntityName": "Noon Bank", - "LogoUri": "https://noonbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "11123599749", - "Acn": "224435522", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "9c7dec6d-2e46-4b53-8430-5337c7eb93e9", + "legalEntityName": "Noon Bank", + "logoUri": "https://noonbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "11123599749", + "acn": "224435522", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "557f42e8-4e00-4b03-a9c9-d97796b6418b", - "BrandName": "Noon Bank -- dummy data holder -- do not use", - "LogoUri": "https://noonbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "557f42e8-4e00-4b03-a9c9-d97796b6418b", + "brandName": "Noon Bank -- dummy data holder -- do not use", + "logoUri": "https://noonbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.noonbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.noonbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://noonbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://noonbank/" } } ] @@ -866,45 +866,45 @@ ] }, { - "LegalEntityId": "b9b45c14-3346-47f7-ad78-3416762cf1d8", - "LegalEntityName": "Oppo Bank", - "LogoUri": "https://oppobank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12412412426", - "Acn": "995543336", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "b9b45c14-3346-47f7-ad78-3416762cf1d8", + "legalEntityName": "Oppo Bank", + "logoUri": "https://oppobank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12412412426", + "acn": "995543336", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "a5e45351-d13c-4690-93d1-3da515e71a92", - "BrandName": "Oppo Bank -- dummy data holder -- do not use", - "LogoUri": "https://oppobank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "a5e45351-d13c-4690-93d1-3da515e71a92", + "brandName": "Oppo Bank -- dummy data holder -- do not use", + "logoUri": "https://oppobank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.oppobank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.oppobank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://oppobank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://oppobank/" } } ] @@ -912,45 +912,45 @@ ] }, { - "LegalEntityId": "b7a18659-eb9b-4130-a0df-402c85f1f216", - "LegalEntityName": "Pepper Bank", - "LogoUri": "https://pepperbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "87356524315", - "Acn": "322342343", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "b7a18659-eb9b-4130-a0df-402c85f1f216", + "legalEntityName": "Pepper Bank", + "logoUri": "https://pepperbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "87356524315", + "acn": "322342343", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "97e53112-73b2-482a-b352-39d389d67916", - "BrandName": "Pepper Bank -- dummy data holder -- do not use", - "LogoUri": "https://pepperbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "97e53112-73b2-482a-b352-39d389d67916", + "brandName": "Pepper Bank -- dummy data holder -- do not use", + "logoUri": "https://pepperbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.pepperbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.pepperbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://pepperbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://pepperbank/" } } ] @@ -958,45 +958,45 @@ ] }, { - "LegalEntityId": "fe75814c-99ee-4922-a6b0-71913e60984c", - "LegalEntityName": "QQ Bank", - "LogoUri": "https://qqbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "21111244638", - "Acn": "317373231", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "fe75814c-99ee-4922-a6b0-71913e60984c", + "legalEntityName": "QQ Bank", + "logoUri": "https://qqbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "21111244638", + "acn": "317373231", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "895e54c5-93e0-405f-8072-0a9871bac8b5", - "BrandName": "QQ Bank -- dummy data holder -- do not use", - "LogoUri": "https://qqbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "895e54c5-93e0-405f-8072-0a9871bac8b5", + "brandName": "QQ Bank -- dummy data holder -- do not use", + "logoUri": "https://qqbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.qqbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.qqbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://qqbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://qqbank/" } } ] @@ -1004,45 +1004,45 @@ ] }, { - "LegalEntityId": "06c595f2-f0b2-4684-90e1-6905e4537304", - "LegalEntityName": "Run Bank", - "LogoUri": "https://runbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "99888777666", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "06c595f2-f0b2-4684-90e1-6905e4537304", + "legalEntityName": "Run Bank", + "logoUri": "https://runbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "99888777666", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "975375f7-2bd9-44b5-a188-43d65ca8eaae", - "BrandName": "Run Bank -- dummy data holder -- do not use", - "LogoUri": "https://runbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "975375f7-2bd9-44b5-a188-43d65ca8eaae", + "brandName": "Run Bank -- dummy data holder -- do not use", + "logoUri": "https://runbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.runbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.runbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://runbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://runbank/" } } ] @@ -1050,45 +1050,45 @@ ] }, { - "LegalEntityId": "350c4b28-132c-4248-a962-1434e00e7046", - "LegalEntityName": "SaS Bank", - "LogoUri": "https://sasbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "99888777666", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "350c4b28-132c-4248-a962-1434e00e7046", + "legalEntityName": "SaS Bank", + "logoUri": "https://sasbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "99888777666", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "b648f694-0dee-4f5e-bd2c-9837ac08fb7b", - "BrandName": "SaS Bank -- dummy data holder -- do not use", - "LogoUri": "https://sasbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "b648f694-0dee-4f5e-bd2c-9837ac08fb7b", + "brandName": "SaS Bank -- dummy data holder -- do not use", + "logoUri": "https://sasbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.sasbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.sasbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://sasbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://sasbank/" } } ] @@ -1096,45 +1096,45 @@ ] }, { - "LegalEntityId": "a1349224-adf3-4678-ba9b-f9ec800b5dc5", - "LegalEntityName": "TnT Bank", - "LogoUri": "https://tntbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "13123412473", - "Acn": "533284211", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "a1349224-adf3-4678-ba9b-f9ec800b5dc5", + "legalEntityName": "TnT Bank", + "logoUri": "https://tntbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "13123412473", + "acn": "533284211", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "f8bce914-ac8d-436a-b265-19baca6d1df2", - "BrandName": "TnT Bank -- dummy data holder -- do not use", - "LogoUri": "https://tntbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "f8bce914-ac8d-436a-b265-19baca6d1df2", + "brandName": "TnT Bank -- dummy data holder -- do not use", + "logoUri": "https://tntbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.tntbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.tntbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://tntbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://tntbank/" } } ] @@ -1142,45 +1142,45 @@ ] }, { - "LegalEntityId": "bc9d68f2-74c4-43d5-9a9c-93e72a2e84c9", - "LegalEntityName": "Bank Legal Entity 2", - "LogoUri": "https://bank2/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "11111111111", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": 2, - "LegalEntityStatusId": null, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "bc9d68f2-74c4-43d5-9a9c-93e72a2e84c9", + "legalEntityName": "Bank Legal Entity 2", + "logoUri": "https://bank2/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "11111111111", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": 2, + "legalEntityStatusId": null, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "e748eadf-4aa4-4e2f-b3da-fb4a9d511994", - "BrandName": "Bank Brand 2 -- dummy data holder -- do not use", - "LogoUri": "https://bank2/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "e748eadf-4aa4-4e2f-b3da-fb4a9d511994", + "brandName": "Bank Brand 2 -- dummy data holder -- do not use", + "logoUri": "https://bank2/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.bank2/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.bank2/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://bank2/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://bank2/" } } ] @@ -1188,66 +1188,66 @@ ] }, { - "LegalEntityId": "3d974478-afa6-4ce4-80bc-6f93e8e92e19", - "LegalEntityName": "Smarter Bank", - "LogoUri": "https://smarterbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12345678901", - "Acn": "123456789", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "3d974478-afa6-4ce4-80bc-6f93e8e92e19", + "legalEntityName": "Smarter Bank", + "logoUri": "https://smarterbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12345678901", + "acn": "123456789", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "9f8df3e2-6866-42af-91d4-5faa3204f0b8", - "BrandName": "Smarter Bank -- dummy data holder -- do not use", - "LogoUri": "https://smarterbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "9f8df3e2-6866-42af-91d4-5faa3204f0b8", + "brandName": "Smarter Bank -- dummy data holder -- do not use", + "logoUri": "https://smarterbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://smarterbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://smarterbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://smarterbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://smarterbank/" } }, { - "BrandId": "81d3d5cb-cdb6-4253-a78b-b17155dde7fd", - "BrandName": "MyBank -- dummy data holder -- do not use", - "LogoUri": "https://mybank/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "81d3d5cb-cdb6-4253-a78b-b17155dde7fd", + "brandName": "MyBank -- dummy data holder -- do not use", + "logoUri": "https://mybank/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://mybank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://mybank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.mybank", - "ResourceBaseUri": "https://api.mybank", - "InfoSecBaseUri": "https://idp.mybank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://mybank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.mybank", + "resourceBaseUri": "https://api.mybank", + "infoSecBaseUri": "https://idp.mybank", + "extensionBaseUri": "", + "websiteUri": "https://mybank/" } } ] @@ -1255,66 +1255,66 @@ ] }, { - "LegalEntityId": "924ca498-0f19-402d-ae07-2cb61088f8aa", - "LegalEntityName": "Hall Bank", - "LogoUri": "https://hallbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12345678901", - "Acn": "123456789", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "924ca498-0f19-402d-ae07-2cb61088f8aa", + "legalEntityName": "Hall Bank", + "logoUri": "https://hallbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12345678901", + "acn": "123456789", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "cf217aba-e00d-48d5-9c3d-03af0b91cb80", - "BrandName": "Hall Bank -- dummy data holder -- do not use", - "LogoUri": "https://hallardbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-19T11:58:00", - "AuthDetails": [ + "brandId": "cf217aba-e00d-48d5-9c3d-03af0b91cb80", + "brandName": "Hall Bank -- dummy data holder -- do not use", + "logoUri": "https://hallardbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-19T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://hallbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://hallbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://hallbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://hallbank/" } }, { - "BrandId": "920f296d-5f2f-49de-876c-15a4aa1b4a79", - "BrandName": "Hallway -- dummy data holder -- do not use", - "LogoUri": "https://hallwaybank/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-18T11:58:00", - "AuthDetails": [ + "brandId": "920f296d-5f2f-49de-876c-15a4aa1b4a79", + "brandName": "Hallway -- dummy data holder -- do not use", + "logoUri": "https://hallwaybank/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-18T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://hallwaybank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://hallwaybank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.hallwaybank", - "ResourceBaseUri": "https://api.hallwaybank", - "InfoSecBaseUri": "https://idp.hallwaybank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://hallwaybank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.hallwaybank", + "resourceBaseUri": "https://api.hallwaybank", + "infoSecBaseUri": "https://idp.hallwaybank", + "extensionBaseUri": "", + "websiteUri": "https://hallwaybank/" } } ] @@ -1322,87 +1322,87 @@ ] }, { - "LegalEntityId": "04361651-f485-421a-8e3e-d01dd7ab2706", - "LegalEntityName": "Job Bank", - "LogoUri": "https://jobbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "13254365476", - "Acn": "264284352", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "04361651-f485-421a-8e3e-d01dd7ab2706", + "legalEntityName": "Job Bank", + "logoUri": "https://jobbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "13254365476", + "acn": "264284352", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "bc144967-d6f8-47a6-8590-07caf522141b", - "BrandName": "Jobs Bank -- dummy data holder -- do not use", - "LogoUri": "https://jobsbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "bc144967-d6f8-47a6-8590-07caf522141b", + "brandName": "Jobs Bank -- dummy data holder -- do not use", + "logoUri": "https://jobsbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://jobsbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://jobsbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://host.docker.internal:8000", - "ResourceBaseUri": "https://host.docker.internal:8002", - "InfoSecBaseUri": "https://host.docker.internal:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://jobsbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://host.docker.internal:8000", + "resourceBaseUri": "https://host.docker.internal:8002", + "infoSecBaseUri": "https://host.docker.internal:8001", + "extensionBaseUri": "", + "websiteUri": "https://jobsbank/" } }, { - "BrandId": "7b47ecf8-a991-4dd3-adef-b89564005e8e", - "BrandName": "offer bank -- dummy data holder -- do not use", - "LogoUri": "https://offerbank/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "7b47ecf8-a991-4dd3-adef-b89564005e8e", + "brandName": "offer bank -- dummy data holder -- do not use", + "logoUri": "https://offerbank/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://offerbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://offerbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.offerbank", - "ResourceBaseUri": "https://api.offerbank", - "InfoSecBaseUri": "https://idp.offerbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://offerbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.offerbank", + "resourceBaseUri": "https://api.offerbank", + "infoSecBaseUri": "https://idp.offerbank", + "extensionBaseUri": "", + "websiteUri": "https://offerbank/" } }, { - "BrandId": "c3176245-4258-4383-b945-cd2f7c828d3c", - "BrandName": "J bank -- dummy data holder -- do not use", - "LogoUri": "https://jbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-18T11:58:00", - "AuthDetails": [ + "brandId": "c3176245-4258-4383-b945-cd2f7c828d3c", + "brandName": "J bank -- dummy data holder -- do not use", + "logoUri": "https://jbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-18T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://jbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://jbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.jbank", - "ResourceBaseUri": "https://api.jbank", - "InfoSecBaseUri": "https://idp.jbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://jbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.jbank", + "resourceBaseUri": "https://api.jbank", + "infoSecBaseUri": "https://idp.jbank", + "extensionBaseUri": "", + "websiteUri": "https://jbank/" } } ] @@ -1410,118 +1410,118 @@ ] }, { - "LegalEntityId": "9d34ede4-2c76-4ecc-a31e-ea8392d31cc9", - "LegalEntityName": "FintechX", - "LogoUri": "https://fintechx/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "98765987654", - "Acn": "987659876", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR001001", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "9d34ede4-2c76-4ecc-a31e-ea8392d31cc9", + "legalEntityName": "FintechX", + "logoUri": "https://fintechx/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "98765987654", + "acn": "987659876", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR001001", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "20c0864b-ceef-4de0-8944-eb0962f825eb", - "BrandName": "Finance X", - "LogoUri": "https://fintechx/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "20c0864b-ceef-4de0-8944-eb0962f825eb", + "brandName": "Finance X", + "logoUri": "https://fintechx/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "d3c44426-e003-4604-aa45-4137e45dfbc4", - "SoftwareProductName": "Loan Calculator X", - "SoftwareProductDescription": "Loan affordability application", - "LogoUri": "https://fintechx/products/loancalculator/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://fintechx/products/loancalculator", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://host.docker.internal:9001", - "RevocationUri": "https://host.docker.internal:9001/revocation", - "RedirectUris": "https://host.docker.internal:9001/consent/callback", - "JwksUri": "https://host.docker.internal:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "d3c44426-e003-4604-aa45-4137e45dfbc4", + "softwareProductName": "Loan Calculator X", + "softwareProductDescription": "Loan affordability application", + "logoUri": "https://fintechx/products/loancalculator/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://fintechx/products/loancalculator", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://host.docker.internal:9001", + "revocationUri": "https://host.docker.internal:9001/revocation", + "redirectUris": "https://host.docker.internal:9001/consent/callback", + "jwksUri": "https://host.docker.internal:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] }, { - "SoftwareProductId": "9381dad2-6b68-4879-b496-c1319d7dfbc9", - "SoftwareProductName": "Track Xpense", - "SoftwareProductDescription": "Application to allow you to track your expenses", - "LogoUri": "https://fintechx/products/trackxpense/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://fintechx/products/trackxpense", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "9381dad2-6b68-4879-b496-c1319d7dfbc9", + "softwareProductName": "Track Xpense", + "softwareProductDescription": "Application to allow you to track your expenses", + "logoUri": "https://fintechx/products/trackxpense/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://fintechx/products/trackxpense", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] }, { - "SoftwareProductId": "63bc22ac-6fd2-4e85-a979-c2fc7c4db9da", - "SoftwareProductName": "TestProductCert", - "SoftwareProductDescription": "Application to allow you to track your expenses", - "LogoUri": "https://fintechx/products/trackxpense/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://fintechx/products/trackxpense", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "63bc22ac-6fd2-4e85-a979-c2fc7c4db9da", + "softwareProductName": "TestProductCert", + "softwareProductDescription": "Application to allow you to track your expenses", + "logoUri": "https://fintechx/products/trackxpense/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://fintechx/products/trackxpense", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] }, { - "SoftwareProductId": "86ecb655-9eba-409c-9be3-59e7adf7080d", - "SoftwareProductName": "MockDataRecepient", - "SoftwareProductDescription": "Mock Data Recepient", - "LogoUri": "https://fintechx/products/trackxpense/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://fintechx/products/trackxpense", - "TosUri": "https://fintechx/products/trackxpense/tos", - "PolicyUri": "https://fintechx/products/trackxpense/policy", - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "86ecb655-9eba-409c-9be3-59e7adf7080d", + "softwareProductName": "MockDataRecepient", + "softwareProductDescription": "Mock Data Recepient", + "logoUri": "https://fintechx/products/trackxpense/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://fintechx/products/trackxpense", + "tosUri": "https://fintechx/products/trackxpense/tos", + "policyUri": "https://fintechx/products/trackxpense/policy", + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1532,52 +1532,52 @@ ] }, { - "LegalEntityId": "a1ca85da-7be8-4020-9c27-c9623eca582b", - "LegalEntityName": "Xray Software Pty Ltd", - "LogoUri": "https://xraysoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "112341234", - "Acn": "12341243", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000006", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "a1ca85da-7be8-4020-9c27-c9623eca582b", + "legalEntityName": "Xray Software Pty Ltd", + "logoUri": "https://xraysoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "112341234", + "acn": "12341243", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000006", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "fe123396-4eba-4518-aade-b245ceea78af", - "BrandName": "XRay Financial", - "LogoUri": "https://xraysoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "fe123396-4eba-4518-aade-b245ceea78af", + "brandName": "XRay Financial", + "logoUri": "https://xraysoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "6a25c22b-0810-4f41-8e41-f48d162c517d", - "SoftwareProductName": "Budget direct", - "SoftwareProductDescription": "A product to help you manage your budget", - "LogoUri": "https://xraysoftware/budgetdirect/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://xraysoftware/budgetdirect", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://host.docker.internal:9001", - "RevocationUri": "https://host.docker.internal:9001/revocation", - "RedirectUris": "https://host.docker.internal:9001/consent/callback", - "JwksUri": "https://host.docker.internal:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "6a25c22b-0810-4f41-8e41-f48d162c517d", + "softwareProductName": "Budget direct", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://xraysoftware/budgetdirect/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://xraysoftware/budgetdirect", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://host.docker.internal:9001", + "revocationUri": "https://host.docker.internal:9001/revocation", + "redirectUris": "https://host.docker.internal:9001/consent/callback", + "jwksUri": "https://host.docker.internal:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1588,52 +1588,52 @@ ] }, { - "LegalEntityId": "8ff78c90-74c2-4c51-9c04-9d829476687a", - "LegalEntityName": "WOW Software Company", - "LogoUri": "https://wowsoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "88778877", - "Acn": "99889988", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000007", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "8ff78c90-74c2-4c51-9c04-9d829476687a", + "legalEntityName": "WOW Software Company", + "logoUri": "https://wowsoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "88778877", + "acn": "99889988", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000007", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "8fe9791a-e4a8-4104-b1cb-e0df41189520", - "BrandName": "WOW", - "LogoUri": "https://wowsoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-02-06T11:58:00", - "SoftwareProducts": [ + "brandId": "8fe9791a-e4a8-4104-b1cb-e0df41189520", + "brandName": "WOW", + "logoUri": "https://wowsoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-02-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "9788e6d3-75a1-47eb-a891-dd752ced0f61", - "SoftwareProductName": "AnotherBudgetHelper", - "SoftwareProductDescription": "A product to help you manage your budget", - "LogoUri": "https://wowsoftware/mybudgetapp/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://wowsoftware/mybudgetapp", - "TosUri": "https://wowsoftware/mybudgetapp/terms", - "PolicyUri": "https://wowsoftware/mybudgetapp/policy", - "RecipientBaseUri": "https://host.docker.internal:9001", - "RevocationUri": "https://host.docker.internal:9001/revocation", - "RedirectUris": "https://host.docker.internal:9001/consent/callback", - "JwksUri": "https://host.docker.internal:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "9788e6d3-75a1-47eb-a891-dd752ced0f61", + "softwareProductName": "AnotherBudgetHelper", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://wowsoftware/mybudgetapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://wowsoftware/mybudgetapp", + "tosUri": "https://wowsoftware/mybudgetapp/terms", + "policyUri": "https://wowsoftware/mybudgetapp/policy", + "recipientBaseUri": "https://host.docker.internal:9001", + "revocationUri": "https://host.docker.internal:9001/revocation", + "redirectUris": "https://host.docker.internal:9001/consent/callback", + "jwksUri": "https://host.docker.internal:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1644,52 +1644,52 @@ ] }, { - "LegalEntityId": "4a29856c-2634-4fea-bf9b-74c99c337e2f", - "LegalEntityName": "olm Software Company", - "LogoUri": "https://olmsoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "88778877", - "Acn": "99889988", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000008", - "AccreditationLevelId": 0, - "Participations": [ + "legalEntityId": "4a29856c-2634-4fea-bf9b-74c99c337e2f", + "legalEntityName": "olm Software Company", + "logoUri": "https://olmsoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "88778877", + "acn": "99889988", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000008", + "accreditationLevelId": 0, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "a7171ba3-fd05-456f-a859-be4e1cbcc17d", - "BrandName": "OLM Software", - "LogoUri": "https://olmsoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "a7171ba3-fd05-456f-a859-be4e1cbcc17d", + "brandName": "OLM Software", + "logoUri": "https://olmsoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "05d7dfd7-1d8f-4abf-b987-cf56c9115e8d", - "SoftwareProductName": "Budgeter", - "SoftwareProductDescription": "A product to help you manage your budget", - "LogoUri": "https://olmsoftware/mybudgetapp/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://olmsoftware/mybudgetapp", - "TosUri": "https://olmsoftware/mybudgetapp/terms", - "PolicyUri": "https://olmsoftware/mybudgetapp/policy", - "RecipientBaseUri": "https://host.docker.internal:9001", - "RevocationUri": "https://host.docker.internal:9001/revocation", - "RedirectUris": "https://host.docker.internal:9001/consent/callback", - "JwksUri": "https://host.docker.internal:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "05d7dfd7-1d8f-4abf-b987-cf56c9115e8d", + "softwareProductName": "Budgeter", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://olmsoftware/mybudgetapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://olmsoftware/mybudgetapp", + "tosUri": "https://olmsoftware/mybudgetapp/terms", + "policyUri": "https://olmsoftware/mybudgetapp/policy", + "recipientBaseUri": "https://host.docker.internal:9001", + "revocationUri": "https://host.docker.internal:9001/revocation", + "redirectUris": "https://host.docker.internal:9001/consent/callback", + "jwksUri": "https://host.docker.internal:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1700,52 +1700,52 @@ ] }, { - "LegalEntityId": "f138d974-0d12-4150-ad0f-c77af745c60b", - "LegalEntityName": "xlogical Software Company", - "LogoUri": "https://xlogical/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": null, - "Acn": null, - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR001009", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "f138d974-0d12-4150-ad0f-c77af745c60b", + "legalEntityName": "xlogical Software Company", + "logoUri": "https://xlogical/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": null, + "acn": null, + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR001009", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "8a3441aa-1242-493a-b466-dcbfffe5a441", - "BrandName": "xlogical", - "LogoUri": "https://xlogical/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "8a3441aa-1242-493a-b466-dcbfffe5a441", + "brandName": "xlogical", + "logoUri": "https://xlogical/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "25ee528f-35ac-4a66-a67c-6166602c9322", - "SoftwareProductName": "Loan Calculator ", - "SoftwareProductDescription": "Loan applications", - "LogoUri": "https://xlogical/products/loancalculator/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://xlogical/products/loancalculator", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://host.docker.internal:9001", - "RevocationUri": "https://host.docker.internal:9001/revocation", - "RedirectUris": "https://host.docker.internal:9001/consent/callback", - "JwksUri": "https://host.docker.internal:9001/jwks", - "Scope": "openid profile bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "25ee528f-35ac-4a66-a67c-6166602c9322", + "softwareProductName": "Loan Calculator ", + "softwareProductDescription": "Loan applications", + "logoUri": "https://xlogical/products/loancalculator/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://xlogical/products/loancalculator", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://host.docker.internal:9001", + "revocationUri": "https://host.docker.internal:9001/revocation", + "redirectUris": "https://host.docker.internal:9001/consent/callback", + "jwksUri": "https://host.docker.internal:9001/jwks", + "scope": "openid profile bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1756,74 +1756,74 @@ ] }, { - "LegalEntityId": "f72ab707-a619-4dc1-a90b-177d61bcf574", - "LegalEntityName": "HotFinTech", - "LogoUri": "https://hotfintech/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "01944123445", - "Acn": "123412345", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR001002", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "f72ab707-a619-4dc1-a90b-177d61bcf574", + "legalEntityName": "HotFinTech", + "logoUri": "https://hotfintech/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "01944123445", + "acn": "123412345", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR001002", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "46b33515-b4a5-4b1c-b5b4-25654d675be6", - "BrandName": "HotFinTech", - "LogoUri": "https://hotfintech/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-05T11:58:00", - "SoftwareProducts": [ + "brandId": "46b33515-b4a5-4b1c-b5b4-25654d675be6", + "brandName": "HotFinTech", + "logoUri": "https://hotfintech/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-05T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "d3c44425-e003-4604-aa45-4137e45dfbc4", - "SoftwareProductName": "Pay advance", - "SoftwareProductDescription": "Buy first and pay later product", - "LogoUri": "https://hotfintech/products/payadvance/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://hotfintech/products/payadvance ", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://host.docker.internal:9001", - "RevocationUri": "https://host.docker.internal:9001/revocation", - "RedirectUris": "https://host.docker.internal:9001/consent/callback", - "JwksUri": "https://host.docker.internal:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "d3c44425-e003-4604-aa45-4137e45dfbc4", + "softwareProductName": "Pay advance", + "softwareProductDescription": "Buy first and pay later product", + "logoUri": "https://hotfintech/products/payadvance/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://hotfintech/products/payadvance ", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://host.docker.internal:9001", + "revocationUri": "https://host.docker.internal:9001/revocation", + "redirectUris": "https://host.docker.internal:9001/consent/callback", + "jwksUri": "https://host.docker.internal:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] }, { - "SoftwareProductId": "9926a894-cc29-4d63-b3b4-e404066ae6f2", - "SoftwareProductName": "Track sheet", - "SoftwareProductDescription": "Application to allow you to track your expenses", - "LogoUri": "https://hotfintech/products/tracksheet/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://hotfintech/products/tracksheet/", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "9926a894-cc29-4d63-b3b4-e404066ae6f2", + "softwareProductName": "Track sheet", + "softwareProductDescription": "Application to allow you to track your expenses", + "logoUri": "https://hotfintech/products/tracksheet/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://hotfintech/products/tracksheet/", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1834,74 +1834,74 @@ ] }, { - "LegalEntityId": "c70456f3-843f-4407-a988-577c108a7816", - "LegalEntityName": "ZeroFintech", - "LogoUri": "https://zerofintech/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "98765987654", - "Acn": "987659876", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR001004", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "c70456f3-843f-4407-a988-577c108a7816", + "legalEntityName": "ZeroFintech", + "logoUri": "https://zerofintech/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "98765987654", + "acn": "987659876", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR001004", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "ebbcc2f2-817e-42b8-8a28-cd45902159e0", - "BrandName": "ZeroFintech", - "LogoUri": "https://zerofintech/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-05T11:58:00", - "SoftwareProducts": [ + "brandId": "ebbcc2f2-817e-42b8-8a28-cd45902159e0", + "brandName": "ZeroFintech", + "logoUri": "https://zerofintech/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-05T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "5d03d1a6-b83b-4176-a2f4-d0074a205695", - "SoftwareProductName": "Mortgage", - "SoftwareProductDescription": "calculate the mortgage value", - "LogoUri": "https://zerofintech/products/mortgage/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://zerofintech/products/mortgage", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://host.docker.internal:9001", - "RevocationUri": "https://host.docker.internal:9001/revocation", - "RedirectUris": "https://host.docker.internal:9001/consent/callback", - "JwksUri": "https://host.docker.internal:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "5d03d1a6-b83b-4176-a2f4-d0074a205695", + "softwareProductName": "Mortgage", + "softwareProductDescription": "calculate the mortgage value", + "logoUri": "https://zerofintech/products/mortgage/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://zerofintech/products/mortgage", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://host.docker.internal:9001", + "revocationUri": "https://host.docker.internal:9001/revocation", + "redirectUris": "https://host.docker.internal:9001/consent/callback", + "jwksUri": "https://host.docker.internal:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] }, { - "SoftwareProductId": "dafa09db-4433-4203-907a-bdf797c8cd21", - "SoftwareProductName": "Reward program", - "SoftwareProductDescription": "Application to allow you to track your expenses", - "LogoUri": "https://zerofintech//products/rewards/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://zerofintech/products/rewards", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://host.docker.internal:9001", - "RevocationUri": "https://host.docker.internal:9001/revocation", - "RedirectUris": "https://host.docker.internal:9001/consent/callback", - "JwksUri": "https://host.docker.internal:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "dafa09db-4433-4203-907a-bdf797c8cd21", + "softwareProductName": "Reward program", + "softwareProductDescription": "Application to allow you to track your expenses", + "logoUri": "https://zerofintech//products/rewards/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://zerofintech/products/rewards", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://host.docker.internal:9001", + "revocationUri": "https://host.docker.internal:9001/revocation", + "redirectUris": "https://host.docker.internal:9001/consent/callback", + "jwksUri": "https://host.docker.internal:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1912,52 +1912,52 @@ ] }, { - "LegalEntityId": "de815a93-85b3-4fe8-9513-33ad8f4359d0", - "LegalEntityName": "yoyo Software Company", - "LogoUri": "https://yoyosoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "11222333444", - "Acn": "222333444", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000005", - "AccreditationLevelId": 0, - "Participations": [ + "legalEntityId": "de815a93-85b3-4fe8-9513-33ad8f4359d0", + "legalEntityName": "yoyo Software Company", + "logoUri": "https://yoyosoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "11222333444", + "acn": "222333444", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000005", + "accreditationLevelId": 0, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "f3f0c40b-9df8-491a-af1d-81cb9ab5f021", - "BrandName": "YoYo", - "LogoUri": "https://yoyosoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "f3f0c40b-9df8-491a-af1d-81cb9ab5f021", + "brandName": "YoYo", + "logoUri": "https://yoyosoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "6f7a1b8e-8799-48a8-9011-e3920391f713", - "SoftwareProductName": "ThatBudgetHelper", - "SoftwareProductDescription": "*** DO NOT CHANGE BELOW, JwksUri REQUIRED FOR POSTMAN ***", - "LogoUri": "https://yoyosoftware/mybudgetapp/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://yoyosoftware/mybudgetapp", - "TosUri": "https://yoyosoftware/mybudgetapp/terms", - "PolicyUri": "https://yoyosoftware/mybudgetapp/policy", - "RecipientBaseUri": "https://api.yoyosoftware/mybudgetapp", - "RevocationUri": "https://api.yoyosoftware/mybudgetapp/revoke", - "RedirectUris": "https://api.yoyosoftware/mybudgetapp/callback https://api.yoyosoftware/mybudgetapp/return", - "JwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "6f7a1b8e-8799-48a8-9011-e3920391f713", + "softwareProductName": "ThatBudgetHelper", + "softwareProductDescription": "*** DO NOT CHANGE BELOW, JwksUri REQUIRED FOR POLYGLOT NOTEBOOK ***", + "logoUri": "https://yoyosoftware/mybudgetapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://yoyosoftware/mybudgetapp", + "tosUri": "https://yoyosoftware/mybudgetapp/terms", + "policyUri": "https://yoyosoftware/mybudgetapp/policy", + "recipientBaseUri": "https://api.yoyosoftware/mybudgetapp", + "revocationUri": "https://api.yoyosoftware/mybudgetapp/revoke", + "redirectUris": "https://api.yoyosoftware/mybudgetapp/callback https://api.yoyosoftware/mybudgetapp/return", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } diff --git a/Source/CDR.Register.Admin.API/Data/seed-data.Development.json b/Source/CDR.Register.Admin.API/Data/seed-data.Development.json index 8f39d6b..6c2d45b 100644 --- a/Source/CDR.Register.Admin.API/Data/seed-data.Development.json +++ b/Source/CDR.Register.Admin.API/Data/seed-data.Development.json @@ -1,66 +1,66 @@ { - "LegalEntities": [ + "legalEntities": [ { - "LegalEntityId": "2f596416-53bc-42ad-bd5a-65537a2d5c42", - "LegalEntityName": "Very Smart Energy Company", - "LogoUri": "https://verysmarterenergy/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12345678901", - "Acn": "123456789", - "Arbn": null, - "AnzsicDivision": "2640", - "OrganisationTypeId": 2, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "2f596416-53bc-42ad-bd5a-65537a2d5c42", + "legalEntityName": "Very Smart Energy Company", + "logoUri": "https://verysmarterenergy/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12345678901", + "acn": "123456789", + "arbn": null, + "anzsicDivision": "2640", + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 2, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 2, + "statusId": 1, + "brands": [ { - "BrandId": "cfcaf0df-401b-47f2-98af-94787289eca8", - "BrandName": "Mock Data Holder (Energy)", - "LogoUri": "https://smarterenergy/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-12-01T10:00:00", - "AuthDetails": [ + "brandId": "cfcaf0df-401b-47f2-98af-94787289eca8", + "brandName": "Mock Data Holder (Energy)", + "logoUri": "https://smarterenergy/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-12-01T10:00:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.smarterenergy/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.smarterenergy/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8100", - "ResourceBaseUri": "https://localhost:8102", - "InfoSecBaseUri": "https://localhost:8101", - "ExtensionBaseUri": "", - "WebsiteUri": "https://smarterenergy/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8100", + "resourceBaseUri": "https://localhost:8102", + "infoSecBaseUri": "https://localhost:8101", + "extensionBaseUri": "", + "websiteUri": "https://smarterenergy/" } }, { - "BrandId": "6859d9f9-9cf9-486d-bc85-5d43a7e116de", - "BrandName": "Cut Price Energy -- dummy data holder -- do not use", - "LogoUri": "https://cutpriceenergy/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-12-01T11:00:00", - "AuthDetails": [ + "brandId": "6859d9f9-9cf9-486d-bc85-5d43a7e116de", + "brandName": "Cut Price Energy -- dummy data holder -- do not use", + "logoUri": "https://cutpriceenergy/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-12-01T11:00:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.cutpriceenergy/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.cutpriceenergy/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8100", - "ResourceBaseUri": "https://localhost:8102", - "InfoSecBaseUri": "https://localhost:8101", - "ExtensionBaseUri": "", - "WebsiteUri": "https://cutpriceenergy/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8100", + "resourceBaseUri": "https://localhost:8102", + "infoSecBaseUri": "https://localhost:8101", + "extensionBaseUri": "", + "websiteUri": "https://cutpriceenergy/" } } ] @@ -68,52 +68,52 @@ ] }, { - "LegalEntityId": "f9bde9a1-9fef-4bd9-b7ef-877369e076e3", - "LegalEntityName": "Mock Energy Company", - "LogoUri": "https://mocksoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "34241177887", - "Acn": "005249981", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000001", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "f9bde9a1-9fef-4bd9-b7ef-877369e076e3", + "legalEntityName": "Mock Energy Company", + "logoUri": "https://mocksoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "34241177887", + "acn": "005249981", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000001", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "d50b74cf-e992-42fd-86d4-582ac9d72dbb", - "BrandName": "Mock Energy Tool", - "LogoUri": "https://mocksoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-12-01T09:00:00", - "SoftwareProducts": [ + "brandId": "d50b74cf-e992-42fd-86d4-582ac9d72dbb", + "brandName": "Mock Energy Tool", + "logoUri": "https://mocksoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-12-01T09:00:00", + "softwareProducts": [ { - "SoftwareProductId": "4754cf30-6cc2-4a9a-a9e1-4fb8f6d42120", - "SoftwareProductName": "MyEnergyHelper", - "SoftwareProductDescription": "A product to help you manage your energy costs", - "LogoUri": "https://mocksoftware/myenergyapp/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://mocksoftware/myenergyapp", - "TosUri": "https://mocksoftware/myenergyapp/terms", - "PolicyUri": "https://mocksoftware/myenergyapp/policy", - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "4754cf30-6cc2-4a9a-a9e1-4fb8f6d42120", + "softwareProductName": "MyEnergyHelper", + "softwareProductDescription": "A product to help you manage your energy costs", + "logoUri": "https://mocksoftware/myenergyapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://mocksoftware/myenergyapp", + "tosUri": "https://mocksoftware/myenergyapp/terms", + "policyUri": "https://mocksoftware/myenergyapp/policy", + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -124,45 +124,45 @@ ] }, { - "LegalEntityId": "0d332caa-8cd8-4ac9-8898-20641c54bc8c", - "LegalEntityName": "Bank Legal Entity 1", - "LogoUri": "https://bank/logo.png", - "RegistrationNumber": "12345", - "RegistrationDate": "2021-12-01T10:00:00", - "RegisteredCountry": "AUSTRALIA", - "Abn": "11111111111", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": "6221", - "OrganisationTypeId": 2, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "0d332caa-8cd8-4ac9-8898-20641c54bc8c", + "legalEntityName": "Bank Legal Entity 1", + "logoUri": "https://bank/logo.png", + "registrationNumber": "12345", + "registrationDate": "2021-12-01T10:00:00", + "registeredCountry": "AUSTRALIA", + "abn": "11111111111", + "acn": "888777666", + "arbn": null, + "anzsicDivision": "6221", + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "804fc2fb-18a7-4235-9a49-2af393d18bc7", - "BrandName": "Mock Data Holder (Banking)", - "LogoUri": "https://bank1/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "804fc2fb-18a7-4235-9a49-2af393d18bc7", + "brandName": "Mock Data Holder (Banking)", + "logoUri": "https://bank1/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.bank1/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.bank1/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://bank1/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://bank1/" } } ] @@ -170,52 +170,52 @@ ] }, { - "LegalEntityId": "18b75a76-5821-4c9e-b465-4709291cf0f4", - "LegalEntityName": "Mock Software Company", - "LogoUri": "https://mocksoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "11222333444", - "Acn": "222333444", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000099", - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "18b75a76-5821-4c9e-b465-4709291cf0f4", + "legalEntityName": "Mock Software Company", + "logoUri": "https://mocksoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "11222333444", + "acn": "222333444", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000099", + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "ffb1c8ba-279e-44d8-96f0-1bc34a6b436f", - "BrandName": "Mock Finance Tools", - "LogoUri": "https://mocksoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "ffb1c8ba-279e-44d8-96f0-1bc34a6b436f", + "brandName": "Mock Finance Tools", + "logoUri": "https://mocksoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "c6327f87-687a-4369-99a4-eaacd3bb8210", - "SoftwareProductName": "MyBudgetHelper", - "SoftwareProductDescription": "A product to help you manage your budget", - "LogoUri": "https://mocksoftware/mybudgetapp/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://mocksoftware/mybudgetapp", - "TosUri": "https://mocksoftware/mybudgetapp/terms", - "PolicyUri": "https://mocksoftware/mybudgetapp/policy", - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "c6327f87-687a-4369-99a4-eaacd3bb8210", + "softwareProductName": "MyBudgetHelper", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://mocksoftware/mybudgetapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://mocksoftware/mybudgetapp", + "tosUri": "https://mocksoftware/mybudgetapp/terms", + "policyUri": "https://mocksoftware/mybudgetapp/policy", + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -226,45 +226,45 @@ ] }, { - "LegalEntityId": "93ef5f28-7f30-43f2-8e5c-b1e3cb39ce90", - "LegalEntityName": "New Bank", - "LogoUri": "https://newbank/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "99888777666", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "93ef5f28-7f30-43f2-8e5c-b1e3cb39ce90", + "legalEntityName": "New Bank", + "logoUri": "https://newbank/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "99888777666", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "6e9cfaf7-ecae-4de3-bbc5-ea9f366bdf55", - "BrandName": "New Bank -- dummy data holder -- do not use", - "LogoUri": "https://newbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "6e9cfaf7-ecae-4de3-bbc5-ea9f366bdf55", + "brandName": "New Bank -- dummy data holder -- do not use", + "logoUri": "https://newbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.newbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.newbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://newbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://newbank/" } } ] @@ -272,66 +272,66 @@ ] }, { - "LegalEntityId": "aeca53ab-2a90-4737-938d-987ce195ca14", - "LegalEntityName": "Sun Bank", - "LogoUri": "https://sunbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "94477558899", - "Acn": "99000099", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": 2, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "aeca53ab-2a90-4737-938d-987ce195ca14", + "legalEntityName": "Sun Bank", + "logoUri": "https://sunbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "94477558899", + "acn": "99000099", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "f6dfbe5b-c57a-4ec2-bc97-66c1f7fe6c1d", - "BrandName": "Sun -- dummy data holder -- do not use", - "LogoUri": "https://sunbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-01T11:58:00", - "AuthDetails": [ + "brandId": "f6dfbe5b-c57a-4ec2-bc97-66c1f7fe6c1d", + "brandName": "Sun -- dummy data holder -- do not use", + "logoUri": "https://sunbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-01T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.sunbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.sunbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://sunbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://sunbank/" } }, { - "BrandId": "a2cd9cd1-e3c7-493b-86d8-f9f319ca0732", - "BrandName": "Brighter Bank -- dummy data holder -- do not use", - "LogoUri": "https://brighterbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-01-01T11:58:00", - "AuthDetails": [ + "brandId": "a2cd9cd1-e3c7-493b-86d8-f9f319ca0732", + "brandName": "Brighter Bank -- dummy data holder -- do not use", + "logoUri": "https://brighterbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-01-01T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.brighterbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.brighterbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://brighterbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://brighterbank/" } } ] @@ -339,66 +339,66 @@ ] }, { - "LegalEntityId": "ba1311fb-5cea-4c5c-b4ed-f2a98a0915e0", - "LegalEntityName": "Hot Bank", - "LogoUri": "https://hotbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12345678901", - "Acn": "123456789", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "ba1311fb-5cea-4c5c-b4ed-f2a98a0915e0", + "legalEntityName": "Hot Bank", + "logoUri": "https://hotbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12345678901", + "acn": "123456789", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "62f4a113-defe-4f99-bd9c-625277bc0e36", - "BrandName": "mildBank -- dummy data holder -- do not use", - "LogoUri": "https://mildbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-11T11:58:00", - "AuthDetails": [ + "brandId": "62f4a113-defe-4f99-bd9c-625277bc0e36", + "brandName": "mildBank -- dummy data holder -- do not use", + "logoUri": "https://mildbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-11T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://mildbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://mildbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://mildbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://mildbank/" } }, { - "BrandId": "81d3d5cc-cdb6-4253-a78b-b17155dde7fd", - "BrandName": "extrahotBank -- dummy data holder -- do not use", - "LogoUri": "https://extrahotbank/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-16T11:58:00", - "AuthDetails": [ + "brandId": "81d3d5cc-cdb6-4253-a78b-b17155dde7fd", + "brandName": "extrahotBank -- dummy data holder -- do not use", + "logoUri": "https://extrahotbank/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-16T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://extrahotbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://extrahotbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.extrahotbank", - "ResourceBaseUri": "https://api.extrahotbank", - "InfoSecBaseUri": "https://idp.extrahotbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://extrahotbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.extrahotbank", + "resourceBaseUri": "https://api.extrahotbank", + "infoSecBaseUri": "https://idp.extrahotbank", + "extensionBaseUri": "", + "websiteUri": "https://extrahotbank/" } } ] @@ -406,45 +406,45 @@ ] }, { - "LegalEntityId": "725c6e62-bfa7-4719-94af-415ae64d4bcd", - "LegalEntityName": "Ive Bank", - "LogoUri": "https://ivebank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12312312393", - "Acn": "099800998", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "725c6e62-bfa7-4719-94af-415ae64d4bcd", + "legalEntityName": "Ive Bank", + "logoUri": "https://ivebank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12312312393", + "acn": "099800998", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "9928cf0f-70c7-40ea-b7ad-cad190232f68", - "BrandName": "Ive Bank -- dummy data holder -- do not use", - "LogoUri": "https://ivebank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-03T11:58:00", - "AuthDetails": [ + "brandId": "9928cf0f-70c7-40ea-b7ad-cad190232f68", + "brandName": "Ive Bank -- dummy data holder -- do not use", + "logoUri": "https://ivebank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-03T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.ivebank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.ivebank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://ivebank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://ivebank/" } } ] @@ -452,45 +452,45 @@ ] }, { - "LegalEntityId": "2f1c327f-56b6-40c5-8e2e-b2130867329c", - "LegalEntityName": "Eva Bank", - "LogoUri": "https://evabank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "98765456765", - "Acn": "22121232", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "2f1c327f-56b6-40c5-8e2e-b2130867329c", + "legalEntityName": "Eva Bank", + "logoUri": "https://evabank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "98765456765", + "acn": "22121232", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "7c97c3b5-fe64-4b35-8ae0-17fa5d4aa0a8", - "BrandName": "Eva Bank corp -- dummy data holder -- do not use", - "LogoUri": "https://evabankcorp/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-26T11:58:00", - "AuthDetails": [ + "brandId": "7c97c3b5-fe64-4b35-8ae0-17fa5d4aa0a8", + "brandName": "Eva Bank corp -- dummy data holder -- do not use", + "logoUri": "https://evabankcorp/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-26T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.evabank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.evabank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://evabank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://evabank/" } } ] @@ -498,45 +498,45 @@ ] }, { - "LegalEntityId": "e81ab637-b3b7-4403-82b8-a43077a569d6", - "LegalEntityName": "Royal Bank", - "LogoUri": "https://royalbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "94477558833", - "Acn": "99000033", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "e81ab637-b3b7-4403-82b8-a43077a569d6", + "legalEntityName": "Royal Bank", + "logoUri": "https://royalbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "94477558833", + "acn": "99000033", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "a5252bde-d1a6-413f-8f53-f7e2f6ab3f77", - "BrandName": "Royal Bank -- dummy data holder -- do not use", - "LogoUri": "https://royalbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-01T11:58:00", - "AuthDetails": [ + "brandId": "a5252bde-d1a6-413f-8f53-f7e2f6ab3f77", + "brandName": "Royal Bank -- dummy data holder -- do not use", + "logoUri": "https://royalbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-01T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.royalbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.royalbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://royalbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://royalbank/" } } ] @@ -544,45 +544,45 @@ ] }, { - "LegalEntityId": "e81ab636-b3b7-4403-82b8-a43077a569d6", - "LegalEntityName": "Central Bank", - "LogoUri": "https://centralbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12398122412", - "Acn": "44123312", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": 2, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "e81ab636-b3b7-4403-82b8-a43077a569d6", + "legalEntityName": "Central Bank", + "logoUri": "https://centralbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12398122412", + "acn": "44123312", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "c1ff7731-5843-4384-88d8-6062afde7c5b", - "BrandName": "central bank -- dummy data holder -- do not use", - "LogoUri": "https://centralbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-03-06T11:58:00", - "AuthDetails": [ + "brandId": "c1ff7731-5843-4384-88d8-6062afde7c5b", + "brandName": "central bank -- dummy data holder -- do not use", + "logoUri": "https://centralbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-03-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.centralbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.centralbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://centralbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://centralbank/" } } ] @@ -590,45 +590,45 @@ ] }, { - "LegalEntityId": "ae4af466-54c6-4ce4-ad2d-580bc6496943", - "LegalEntityName": "Fox Bank", - "LogoUri": "https://foxbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "31234212475", - "Acn": "122341213", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "ae4af466-54c6-4ce4-ad2d-580bc6496943", + "legalEntityName": "Fox Bank", + "logoUri": "https://foxbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "31234212475", + "acn": "122341213", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "2192a459-5ef5-4493-afe1-56c3d03fc1ba", - "BrandName": "Fox Bank -- dummy data holder -- do not use", - "LogoUri": "https://foxbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-21T11:58:00", - "AuthDetails": [ + "brandId": "2192a459-5ef5-4493-afe1-56c3d03fc1ba", + "brandName": "Fox Bank -- dummy data holder -- do not use", + "logoUri": "https://foxbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-21T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.foxbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.foxbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://foxbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://foxbank/" } } ] @@ -636,45 +636,45 @@ ] }, { - "LegalEntityId": "017fcfc8-1fd3-4ef4-8f08-b697c4c681ee", - "LegalEntityName": "Grand Bank", - "LogoUri": "https://grandbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "99888777666", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "017fcfc8-1fd3-4ef4-8f08-b697c4c681ee", + "legalEntityName": "Grand Bank", + "logoUri": "https://grandbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "99888777666", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "8aa8e9a6-1dc7-4428-baea-d1f4533428b9", - "BrandName": "Grand Bank -- dummy data holder -- do not use", - "LogoUri": "https://grandbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-29T11:58:00", - "AuthDetails": [ + "brandId": "8aa8e9a6-1dc7-4428-baea-d1f4533428b9", + "brandName": "Grand Bank -- dummy data holder -- do not use", + "logoUri": "https://grandbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-29T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.grandbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.grandbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://grandbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://grandbank/" } } ] @@ -682,45 +682,45 @@ ] }, { - "LegalEntityId": "7b1a7566-e113-411b-94b7-d3b9fb0da98a", - "LegalEntityName": "Kiss Bank", - "LogoUri": "https://kissbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12593477455", - "Acn": "112122235", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "7b1a7566-e113-411b-94b7-d3b9fb0da98a", + "legalEntityName": "Kiss Bank", + "logoUri": "https://kissbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12593477455", + "acn": "112122235", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "85168ace-9211-45e3-bb75-f85c54e66f10", - "BrandName": "Kiss Bank -- dummy data holder -- do not use", - "LogoUri": "https://kissbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-12T11:58:00", - "AuthDetails": [ + "brandId": "85168ace-9211-45e3-bb75-f85c54e66f10", + "brandName": "Kiss Bank -- dummy data holder -- do not use", + "logoUri": "https://kissbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-12T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.kissbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.kissbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://kissbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://kissbank/" } } ] @@ -728,45 +728,45 @@ ] }, { - "LegalEntityId": "667407fc-dc7e-4be5-8795-5189240bcbca", - "LegalEntityName": "Luna Bank", - "LogoUri": "https://lunabank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12334412233", - "Acn": "747553322", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "667407fc-dc7e-4be5-8795-5189240bcbca", + "legalEntityName": "Luna Bank", + "logoUri": "https://lunabank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12334412233", + "acn": "747553322", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "bb03be60-5c46-422e-a27e-aefa0015078d", - "BrandName": "Luna -- dummy data holder -- do not use", - "LogoUri": "https://lunabank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-12T11:58:00", - "AuthDetails": [ + "brandId": "bb03be60-5c46-422e-a27e-aefa0015078d", + "brandName": "Luna -- dummy data holder -- do not use", + "logoUri": "https://lunabank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-12T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.lunabank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.lunabank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://lunabank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://lunabank/" } } ] @@ -774,45 +774,45 @@ ] }, { - "LegalEntityId": "7993c227-9252-432b-9b2f-a8666e2fd2f2", - "LegalEntityName": "Mu Bank", - "LogoUri": "https://mubank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12352345345", - "Acn": "112123121", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "7993c227-9252-432b-9b2f-a8666e2fd2f2", + "legalEntityName": "Mu Bank", + "logoUri": "https://mubank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12352345345", + "acn": "112123121", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "52d23611-4493-4a21-9095-44ae9eb85841", - "BrandName": "Mu Bank -- dummy data holder -- do not use", - "LogoUri": "https://mubank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "52d23611-4493-4a21-9095-44ae9eb85841", + "brandName": "Mu Bank -- dummy data holder -- do not use", + "logoUri": "https://mubank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.mubank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.mubank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://mubank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://mubank/" } } ] @@ -820,45 +820,45 @@ ] }, { - "LegalEntityId": "9c7dec6d-2e46-4b53-8430-5337c7eb93e9", - "LegalEntityName": "Noon Bank", - "LogoUri": "https://noonbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "11123599749", - "Acn": "224435522", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "9c7dec6d-2e46-4b53-8430-5337c7eb93e9", + "legalEntityName": "Noon Bank", + "logoUri": "https://noonbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "11123599749", + "acn": "224435522", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "557f42e8-4e00-4b03-a9c9-d97796b6418b", - "BrandName": "Noon Bank -- dummy data holder -- do not use", - "LogoUri": "https://noonbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "557f42e8-4e00-4b03-a9c9-d97796b6418b", + "brandName": "Noon Bank -- dummy data holder -- do not use", + "logoUri": "https://noonbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.noonbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.noonbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://noonbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://noonbank/" } } ] @@ -866,45 +866,45 @@ ] }, { - "LegalEntityId": "b9b45c14-3346-47f7-ad78-3416762cf1d8", - "LegalEntityName": "Oppo Bank", - "LogoUri": "https://oppobank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12412412426", - "Acn": "995543336", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "b9b45c14-3346-47f7-ad78-3416762cf1d8", + "legalEntityName": "Oppo Bank", + "logoUri": "https://oppobank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12412412426", + "acn": "995543336", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "a5e45351-d13c-4690-93d1-3da515e71a92", - "BrandName": "Oppo Bank -- dummy data holder -- do not use", - "LogoUri": "https://oppobank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "a5e45351-d13c-4690-93d1-3da515e71a92", + "brandName": "Oppo Bank -- dummy data holder -- do not use", + "logoUri": "https://oppobank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.oppobank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.oppobank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://oppobank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://oppobank/" } } ] @@ -912,45 +912,45 @@ ] }, { - "LegalEntityId": "b7a18659-eb9b-4130-a0df-402c85f1f216", - "LegalEntityName": "Pepper Bank", - "LogoUri": "https://pepperbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "87356524315", - "Acn": "322342343", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "b7a18659-eb9b-4130-a0df-402c85f1f216", + "legalEntityName": "Pepper Bank", + "logoUri": "https://pepperbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "87356524315", + "acn": "322342343", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "97e53112-73b2-482a-b352-39d389d67916", - "BrandName": "Pepper Bank -- dummy data holder -- do not use", - "LogoUri": "https://pepperbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "97e53112-73b2-482a-b352-39d389d67916", + "brandName": "Pepper Bank -- dummy data holder -- do not use", + "logoUri": "https://pepperbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.pepperbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.pepperbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://pepperbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://pepperbank/" } } ] @@ -958,45 +958,45 @@ ] }, { - "LegalEntityId": "fe75814c-99ee-4922-a6b0-71913e60984c", - "LegalEntityName": "QQ Bank", - "LogoUri": "https://qqbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "21111244638", - "Acn": "317373231", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "fe75814c-99ee-4922-a6b0-71913e60984c", + "legalEntityName": "QQ Bank", + "logoUri": "https://qqbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "21111244638", + "acn": "317373231", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "895e54c5-93e0-405f-8072-0a9871bac8b5", - "BrandName": "QQ Bank -- dummy data holder -- do not use", - "LogoUri": "https://qqbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "895e54c5-93e0-405f-8072-0a9871bac8b5", + "brandName": "QQ Bank -- dummy data holder -- do not use", + "logoUri": "https://qqbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.qqbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.qqbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://qqbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://qqbank/" } } ] @@ -1004,45 +1004,45 @@ ] }, { - "LegalEntityId": "06c595f2-f0b2-4684-90e1-6905e4537304", - "LegalEntityName": "Run Bank", - "LogoUri": "https://runbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "99888777666", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "06c595f2-f0b2-4684-90e1-6905e4537304", + "legalEntityName": "Run Bank", + "logoUri": "https://runbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "99888777666", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "975375f7-2bd9-44b5-a188-43d65ca8eaae", - "BrandName": "Run Bank -- dummy data holder -- do not use", - "LogoUri": "https://runbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "975375f7-2bd9-44b5-a188-43d65ca8eaae", + "brandName": "Run Bank -- dummy data holder -- do not use", + "logoUri": "https://runbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.runbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.runbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://runbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://runbank/" } } ] @@ -1050,45 +1050,45 @@ ] }, { - "LegalEntityId": "350c4b28-132c-4248-a962-1434e00e7046", - "LegalEntityName": "SaS Bank", - "LogoUri": "https://sasbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "99888777666", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "350c4b28-132c-4248-a962-1434e00e7046", + "legalEntityName": "SaS Bank", + "logoUri": "https://sasbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "99888777666", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "b648f694-0dee-4f5e-bd2c-9837ac08fb7b", - "BrandName": "SaS Bank -- dummy data holder -- do not use", - "LogoUri": "https://sasbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "b648f694-0dee-4f5e-bd2c-9837ac08fb7b", + "brandName": "SaS Bank -- dummy data holder -- do not use", + "logoUri": "https://sasbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.sasbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.sasbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://sasbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://sasbank/" } } ] @@ -1096,45 +1096,45 @@ ] }, { - "LegalEntityId": "a1349224-adf3-4678-ba9b-f9ec800b5dc5", - "LegalEntityName": "TnT Bank", - "LogoUri": "https://tntbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "13123412473", - "Acn": "533284211", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "a1349224-adf3-4678-ba9b-f9ec800b5dc5", + "legalEntityName": "TnT Bank", + "logoUri": "https://tntbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "13123412473", + "acn": "533284211", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "f8bce914-ac8d-436a-b265-19baca6d1df2", - "BrandName": "TnT Bank -- dummy data holder -- do not use", - "LogoUri": "https://tntbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "f8bce914-ac8d-436a-b265-19baca6d1df2", + "brandName": "TnT Bank -- dummy data holder -- do not use", + "logoUri": "https://tntbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.tntbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.tntbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://tntbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://tntbank/" } } ] @@ -1142,45 +1142,45 @@ ] }, { - "LegalEntityId": "bc9d68f2-74c4-43d5-9a9c-93e72a2e84c9", - "LegalEntityName": "Bank Legal Entity 2", - "LogoUri": "https://bank2/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "11111111111", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": 2, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "bc9d68f2-74c4-43d5-9a9c-93e72a2e84c9", + "legalEntityName": "Bank Legal Entity 2", + "logoUri": "https://bank2/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "11111111111", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "e748eadf-4aa4-4e2f-b3da-fb4a9d511994", - "BrandName": "Bank Brand 2 -- dummy data holder -- do not use", - "LogoUri": "https://bank2/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "e748eadf-4aa4-4e2f-b3da-fb4a9d511994", + "brandName": "Bank Brand 2 -- dummy data holder -- do not use", + "logoUri": "https://bank2/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.bank2/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.bank2/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://bank2/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://bank2/" } } ] @@ -1188,66 +1188,66 @@ ] }, { - "LegalEntityId": "3d974478-afa6-4ce4-80bc-6f93e8e92e19", - "LegalEntityName": "Smarter Bank", - "LogoUri": "https://smarterbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12345678901", - "Acn": "123456789", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "3d974478-afa6-4ce4-80bc-6f93e8e92e19", + "legalEntityName": "Smarter Bank", + "logoUri": "https://smarterbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12345678901", + "acn": "123456789", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "9f8df3e2-6866-42af-91d4-5faa3204f0b8", - "BrandName": "Smarter Bank -- dummy data holder -- do not use", - "LogoUri": "https://smarterbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "9f8df3e2-6866-42af-91d4-5faa3204f0b8", + "brandName": "Smarter Bank -- dummy data holder -- do not use", + "logoUri": "https://smarterbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://smarterbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://smarterbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://smarterbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://smarterbank/" } }, { - "BrandId": "81d3d5cb-cdb6-4253-a78b-b17155dde7fd", - "BrandName": "MyBank -- dummy data holder -- do not use", - "LogoUri": "https://mybank/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "81d3d5cb-cdb6-4253-a78b-b17155dde7fd", + "brandName": "MyBank -- dummy data holder -- do not use", + "logoUri": "https://mybank/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://mybank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://mybank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.mybank", - "ResourceBaseUri": "https://api.mybank", - "InfoSecBaseUri": "https://idp.mybank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://mybank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.mybank", + "resourceBaseUri": "https://api.mybank", + "infoSecBaseUri": "https://idp.mybank", + "extensionBaseUri": "", + "websiteUri": "https://mybank/" } } ] @@ -1255,66 +1255,66 @@ ] }, { - "LegalEntityId": "924ca498-0f19-402d-ae07-2cb61088f8aa", - "LegalEntityName": "Hall Bank", - "LogoUri": "https://hallbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12345678901", - "Acn": "123456789", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "924ca498-0f19-402d-ae07-2cb61088f8aa", + "legalEntityName": "Hall Bank", + "logoUri": "https://hallbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12345678901", + "acn": "123456789", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "cf217aba-e00d-48d5-9c3d-03af0b91cb80", - "BrandName": "Hall Bank -- dummy data holder -- do not use", - "LogoUri": "https://hallardbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-19T11:58:00", - "AuthDetails": [ + "brandId": "cf217aba-e00d-48d5-9c3d-03af0b91cb80", + "brandName": "Hall Bank -- dummy data holder -- do not use", + "logoUri": "https://hallardbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-19T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://hallbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://hallbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://hallbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://hallbank/" } }, { - "BrandId": "920f296d-5f2f-49de-876c-15a4aa1b4a79", - "BrandName": "Hallway -- dummy data holder -- do not use", - "LogoUri": "https://hallwaybank/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-18T11:58:00", - "AuthDetails": [ + "brandId": "920f296d-5f2f-49de-876c-15a4aa1b4a79", + "brandName": "Hallway -- dummy data holder -- do not use", + "logoUri": "https://hallwaybank/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-18T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://hallwaybank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://hallwaybank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.hallwaybank", - "ResourceBaseUri": "https://api.hallwaybank", - "InfoSecBaseUri": "https://idp.hallwaybank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://hallwaybank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.hallwaybank", + "resourceBaseUri": "https://api.hallwaybank", + "infoSecBaseUri": "https://idp.hallwaybank", + "extensionBaseUri": "", + "websiteUri": "https://hallwaybank/" } } ] @@ -1322,87 +1322,87 @@ ] }, { - "LegalEntityId": "04361651-f485-421a-8e3e-d01dd7ab2706", - "LegalEntityName": "Job Bank", - "LogoUri": "https://jobbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "13254365476", - "Acn": "264284352", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "04361651-f485-421a-8e3e-d01dd7ab2706", + "legalEntityName": "Job Bank", + "logoUri": "https://jobbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "13254365476", + "acn": "264284352", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "bc144967-d6f8-47a6-8590-07caf522141b", - "BrandName": "Jobs Bank -- dummy data holder -- do not use", - "LogoUri": "https://jobsbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "bc144967-d6f8-47a6-8590-07caf522141b", + "brandName": "Jobs Bank -- dummy data holder -- do not use", + "logoUri": "https://jobsbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://jobsbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://jobsbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://localhost:8000", - "ResourceBaseUri": "https://localhost:8002", - "InfoSecBaseUri": "https://localhost:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://jobsbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://localhost:8000", + "resourceBaseUri": "https://localhost:8002", + "infoSecBaseUri": "https://localhost:8001", + "extensionBaseUri": "", + "websiteUri": "https://jobsbank/" } }, { - "BrandId": "7b47ecf8-a991-4dd3-adef-b89564005e8e", - "BrandName": "offer bank -- dummy data holder -- do not use", - "LogoUri": "https://offerbank/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "7b47ecf8-a991-4dd3-adef-b89564005e8e", + "brandName": "offer bank -- dummy data holder -- do not use", + "logoUri": "https://offerbank/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://offerbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://offerbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.offerbank", - "ResourceBaseUri": "https://api.offerbank", - "InfoSecBaseUri": "https://idp.offerbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://offerbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.offerbank", + "resourceBaseUri": "https://api.offerbank", + "infoSecBaseUri": "https://idp.offerbank", + "extensionBaseUri": "", + "websiteUri": "https://offerbank/" } }, { - "BrandId": "c3176245-4258-4383-b945-cd2f7c828d3c", - "BrandName": "J bank -- dummy data holder -- do not use", - "LogoUri": "https://jbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-18T11:58:00", - "AuthDetails": [ + "brandId": "c3176245-4258-4383-b945-cd2f7c828d3c", + "brandName": "J bank -- dummy data holder -- do not use", + "logoUri": "https://jbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-18T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://jbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://jbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.jbank", - "ResourceBaseUri": "https://api.jbank", - "InfoSecBaseUri": "https://idp.jbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://jbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.jbank", + "resourceBaseUri": "https://api.jbank", + "infoSecBaseUri": "https://idp.jbank", + "extensionBaseUri": "", + "websiteUri": "https://jbank/" } } ] @@ -1410,118 +1410,118 @@ ] }, { - "LegalEntityId": "9d34ede4-2c76-4ecc-a31e-ea8392d31cc9", - "LegalEntityName": "FintechX", - "LogoUri": "https://fintechx/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "98765987654", - "Acn": "987659876", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR001001", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "9d34ede4-2c76-4ecc-a31e-ea8392d31cc9", + "legalEntityName": "FintechX", + "logoUri": "https://fintechx/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "98765987654", + "acn": "987659876", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR001001", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "20c0864b-ceef-4de0-8944-eb0962f825eb", - "BrandName": "Finance X", - "LogoUri": "https://fintechx/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "20c0864b-ceef-4de0-8944-eb0962f825eb", + "brandName": "Finance X", + "logoUri": "https://fintechx/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "d3c44426-e003-4604-aa45-4137e45dfbc4", - "SoftwareProductName": "Loan Calculator X", - "SoftwareProductDescription": "Loan affordability application", - "LogoUri": "https://fintechx/products/loancalculator/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://fintechx/products/loancalculator", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "d3c44426-e003-4604-aa45-4137e45dfbc4", + "softwareProductName": "Loan Calculator X", + "softwareProductDescription": "Loan affordability application", + "logoUri": "https://fintechx/products/loancalculator/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://fintechx/products/loancalculator", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] }, { - "SoftwareProductId": "9381dad2-6b68-4879-b496-c1319d7dfbc9", - "SoftwareProductName": "Track Xpense", - "SoftwareProductDescription": "Application to allow you to track your expenses", - "LogoUri": "https://fintechx/products/trackxpense/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://fintechx/products/trackxpense", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "9381dad2-6b68-4879-b496-c1319d7dfbc9", + "softwareProductName": "Track Xpense", + "softwareProductDescription": "Application to allow you to track your expenses", + "logoUri": "https://fintechx/products/trackxpense/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://fintechx/products/trackxpense", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] }, { - "SoftwareProductId": "63bc22ac-6fd2-4e85-a979-c2fc7c4db9da", - "SoftwareProductName": "TestProductCert", - "SoftwareProductDescription": "Application to allow you to track your expenses", - "LogoUri": "https://fintechx/products/trackxpense/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://fintechx/products/trackxpense", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "63bc22ac-6fd2-4e85-a979-c2fc7c4db9da", + "softwareProductName": "TestProductCert", + "softwareProductDescription": "Application to allow you to track your expenses", + "logoUri": "https://fintechx/products/trackxpense/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://fintechx/products/trackxpense", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] }, { - "SoftwareProductId": "86ecb655-9eba-409c-9be3-59e7adf7080d", - "SoftwareProductName": "MockDataRecepient", - "SoftwareProductDescription": "Mock Data Recepient", - "LogoUri": "https://fintechx/products/trackxpense/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://fintechx/products/trackxpense", - "TosUri": "https://fintechx/products/trackxpense/tos", - "PolicyUri": "https://fintechx/products/trackxpense/policy", - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "86ecb655-9eba-409c-9be3-59e7adf7080d", + "softwareProductName": "MockDataRecepient", + "softwareProductDescription": "Mock Data Recepient", + "logoUri": "https://fintechx/products/trackxpense/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://fintechx/products/trackxpense", + "tosUri": "https://fintechx/products/trackxpense/tos", + "policyUri": "https://fintechx/products/trackxpense/policy", + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1532,52 +1532,52 @@ ] }, { - "LegalEntityId": "a1ca85da-7be8-4020-9c27-c9623eca582b", - "LegalEntityName": "Xray Software Pty Ltd", - "LogoUri": "https://xraysoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "112341234", - "Acn": "12341243", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000006", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "a1ca85da-7be8-4020-9c27-c9623eca582b", + "legalEntityName": "Xray Software Pty Ltd", + "logoUri": "https://xraysoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "112341234", + "acn": "12341243", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000006", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "fe123396-4eba-4518-aade-b245ceea78af", - "BrandName": "XRay Financial", - "LogoUri": "https://xraysoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "fe123396-4eba-4518-aade-b245ceea78af", + "brandName": "XRay Financial", + "logoUri": "https://xraysoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "6a25c22b-0810-4f41-8e41-f48d162c517d", - "SoftwareProductName": "Budget direct", - "SoftwareProductDescription": "A product to help you manage your budget", - "LogoUri": "https://xraysoftware/budgetdirect/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://xraysoftware/budgetdirect", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "6a25c22b-0810-4f41-8e41-f48d162c517d", + "softwareProductName": "Budget direct", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://xraysoftware/budgetdirect/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://xraysoftware/budgetdirect", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1588,52 +1588,52 @@ ] }, { - "LegalEntityId": "8ff78c90-74c2-4c51-9c04-9d829476687a", - "LegalEntityName": "WOW Software Company", - "LogoUri": "https://wowsoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "88778877", - "Acn": "99889988", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000007", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "8ff78c90-74c2-4c51-9c04-9d829476687a", + "legalEntityName": "WOW Software Company", + "logoUri": "https://wowsoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "88778877", + "acn": "99889988", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000007", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "8fe9791a-e4a8-4104-b1cb-e0df41189520", - "BrandName": "WOW", - "LogoUri": "https://wowsoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-02-06T11:58:00", - "SoftwareProducts": [ + "brandId": "8fe9791a-e4a8-4104-b1cb-e0df41189520", + "brandName": "WOW", + "logoUri": "https://wowsoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-02-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "9788e6d3-75a1-47eb-a891-dd752ced0f61", - "SoftwareProductName": "AnotherBudgetHelper", - "SoftwareProductDescription": "A product to help you manage your budget", - "LogoUri": "https://wowsoftware/mybudgetapp/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://wowsoftware/mybudgetapp", - "TosUri": "https://wowsoftware/mybudgetapp/terms", - "PolicyUri": "https://wowsoftware/mybudgetapp/policy", - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "9788e6d3-75a1-47eb-a891-dd752ced0f61", + "softwareProductName": "AnotherBudgetHelper", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://wowsoftware/mybudgetapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://wowsoftware/mybudgetapp", + "tosUri": "https://wowsoftware/mybudgetapp/terms", + "policyUri": "https://wowsoftware/mybudgetapp/policy", + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1644,52 +1644,52 @@ ] }, { - "LegalEntityId": "4a29856c-2634-4fea-bf9b-74c99c337e2f", - "LegalEntityName": "olm Software Company", - "LogoUri": "https://olmsoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "88778877", - "Acn": "99889988", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000008", - "AccreditationLevelId": 0, - "Participations": [ + "legalEntityId": "4a29856c-2634-4fea-bf9b-74c99c337e2f", + "legalEntityName": "olm Software Company", + "logoUri": "https://olmsoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "88778877", + "acn": "99889988", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000008", + "accreditationLevelId": 0, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "a7171ba3-fd05-456f-a859-be4e1cbcc17d", - "BrandName": "OLM Software", - "LogoUri": "https://olmsoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "a7171ba3-fd05-456f-a859-be4e1cbcc17d", + "brandName": "OLM Software", + "logoUri": "https://olmsoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "05d7dfd7-1d8f-4abf-b987-cf56c9115e8d", - "SoftwareProductName": "Budgeter", - "SoftwareProductDescription": "A product to help you manage your budget", - "LogoUri": "https://olmsoftware/mybudgetapp/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://olmsoftware/mybudgetapp", - "TosUri": "https://olmsoftware/mybudgetapp/terms", - "PolicyUri": "https://olmsoftware/mybudgetapp/policy", - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "05d7dfd7-1d8f-4abf-b987-cf56c9115e8d", + "softwareProductName": "Budgeter", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://olmsoftware/mybudgetapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://olmsoftware/mybudgetapp", + "tosUri": "https://olmsoftware/mybudgetapp/terms", + "policyUri": "https://olmsoftware/mybudgetapp/policy", + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1700,52 +1700,52 @@ ] }, { - "LegalEntityId": "f138d974-0d12-4150-ad0f-c77af745c60b", - "LegalEntityName": "xlogical Software Company", - "LogoUri": "https://xlogical/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": null, - "Acn": null, - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR001009", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "f138d974-0d12-4150-ad0f-c77af745c60b", + "legalEntityName": "xlogical Software Company", + "logoUri": "https://xlogical/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": null, + "acn": null, + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR001009", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "8a3441aa-1242-493a-b466-dcbfffe5a441", - "BrandName": "xlogical", - "LogoUri": "https://xlogical/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "8a3441aa-1242-493a-b466-dcbfffe5a441", + "brandName": "xlogical", + "logoUri": "https://xlogical/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "25ee528f-35ac-4a66-a67c-6166602c9322", - "SoftwareProductName": "Loan Calculator ", - "SoftwareProductDescription": "Loan applications", - "LogoUri": "https://xlogical/products/loancalculator/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://xlogical/products/loancalculator", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "25ee528f-35ac-4a66-a67c-6166602c9322", + "softwareProductName": "Loan Calculator ", + "softwareProductDescription": "Loan applications", + "logoUri": "https://xlogical/products/loancalculator/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://xlogical/products/loancalculator", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1756,74 +1756,74 @@ ] }, { - "LegalEntityId": "f72ab707-a619-4dc1-a90b-177d61bcf574", - "LegalEntityName": "HotFinTech", - "LogoUri": "https://hotfintech/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "01944123445", - "Acn": "123412345", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR001002", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "f72ab707-a619-4dc1-a90b-177d61bcf574", + "legalEntityName": "HotFinTech", + "logoUri": "https://hotfintech/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "01944123445", + "acn": "123412345", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR001002", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "46b33515-b4a5-4b1c-b5b4-25654d675be6", - "BrandName": "HotFinTech", - "LogoUri": "https://hotfintech/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-05T11:58:00", - "SoftwareProducts": [ + "brandId": "46b33515-b4a5-4b1c-b5b4-25654d675be6", + "brandName": "HotFinTech", + "logoUri": "https://hotfintech/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-05T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "d3c44425-e003-4604-aa45-4137e45dfbc4", - "SoftwareProductName": "Pay advance", - "SoftwareProductDescription": "Buy first and pay later product", - "LogoUri": "https://hotfintech/products/payadvance/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://hotfintech/products/payadvance ", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "d3c44425-e003-4604-aa45-4137e45dfbc4", + "softwareProductName": "Pay advance", + "softwareProductDescription": "Buy first and pay later product", + "logoUri": "https://hotfintech/products/payadvance/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://hotfintech/products/payadvance ", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] }, { - "SoftwareProductId": "9926a894-cc29-4d63-b3b4-e404066ae6f2", - "SoftwareProductName": "Track sheet", - "SoftwareProductDescription": "Application to allow you to track your expenses", - "LogoUri": "https://hotfintech/products/tracksheet/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://hotfintech/products/tracksheet/", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "9926a894-cc29-4d63-b3b4-e404066ae6f2", + "softwareProductName": "Track sheet", + "softwareProductDescription": "Application to allow you to track your expenses", + "logoUri": "https://hotfintech/products/tracksheet/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://hotfintech/products/tracksheet/", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1834,74 +1834,74 @@ ] }, { - "LegalEntityId": "c70456f3-843f-4407-a988-577c108a7816", - "LegalEntityName": "ZeroFintech", - "LogoUri": "https://zerofintech/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "98765987654", - "Acn": "987659876", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR001004", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "c70456f3-843f-4407-a988-577c108a7816", + "legalEntityName": "ZeroFintech", + "logoUri": "https://zerofintech/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "98765987654", + "acn": "987659876", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR001004", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "ebbcc2f2-817e-42b8-8a28-cd45902159e0", - "BrandName": "ZeroFintech", - "LogoUri": "https://zerofintech/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-05T11:58:00", - "SoftwareProducts": [ + "brandId": "ebbcc2f2-817e-42b8-8a28-cd45902159e0", + "brandName": "ZeroFintech", + "logoUri": "https://zerofintech/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-05T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "5d03d1a6-b83b-4176-a2f4-d0074a205695", - "SoftwareProductName": "Mortgage", - "SoftwareProductDescription": "calculate the mortgage value", - "LogoUri": "https://zerofintech/products/mortgage/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://zerofintech/products/mortgage", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "5d03d1a6-b83b-4176-a2f4-d0074a205695", + "softwareProductName": "Mortgage", + "softwareProductDescription": "calculate the mortgage value", + "logoUri": "https://zerofintech/products/mortgage/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://zerofintech/products/mortgage", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] }, { - "SoftwareProductId": "dafa09db-4433-4203-907a-bdf797c8cd21", - "SoftwareProductName": "Reward program", - "SoftwareProductDescription": "Application to allow you to track your expenses", - "LogoUri": "https://zerofintech//products/rewards/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://zerofintech/products/rewards", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://localhost:9001", - "RevocationUri": "https://localhost:9001/revocation", - "RedirectUris": "https://localhost:9001/consent/callback", - "JwksUri": "https://localhost:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "dafa09db-4433-4203-907a-bdf797c8cd21", + "softwareProductName": "Reward program", + "softwareProductDescription": "Application to allow you to track your expenses", + "logoUri": "https://zerofintech//products/rewards/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://zerofintech/products/rewards", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://localhost:9001", + "revocationUri": "https://localhost:9001/revocation", + "redirectUris": "https://localhost:9001/consent/callback", + "jwksUri": "https://localhost:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1912,52 +1912,52 @@ ] }, { - "LegalEntityId": "de815a93-85b3-4fe8-9513-33ad8f4359d0", - "LegalEntityName": "yoyo Software Company", - "LogoUri": "https://yoyosoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "11222333444", - "Acn": "222333444", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000005", - "AccreditationLevelId": 0, - "Participations": [ + "legalEntityId": "de815a93-85b3-4fe8-9513-33ad8f4359d0", + "legalEntityName": "yoyo Software Company", + "logoUri": "https://yoyosoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "11222333444", + "acn": "222333444", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000005", + "accreditationLevelId": 0, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "f3f0c40b-9df8-491a-af1d-81cb9ab5f021", - "BrandName": "YoYo", - "LogoUri": "https://yoyosoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "f3f0c40b-9df8-491a-af1d-81cb9ab5f021", + "brandName": "YoYo", + "logoUri": "https://yoyosoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "6f7a1b8e-8799-48a8-9011-e3920391f713", - "SoftwareProductName": "ThatBudgetHelper", - "SoftwareProductDescription": "*** DO NOT CHANGE BELOW, JwksUri REQUIRED FOR POSTMAN ***", - "LogoUri": "https://yoyosoftware/mybudgetapp/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://yoyosoftware/mybudgetapp", - "TosUri": "https://yoyosoftware/mybudgetapp/terms", - "PolicyUri": "https://yoyosoftware/mybudgetapp/policy", - "RecipientBaseUri": "https://api.yoyosoftware/mybudgetapp", - "RevocationUri": "https://api.yoyosoftware/mybudgetapp/revoke", - "RedirectUris": "https://api.yoyosoftware/mybudgetapp/callback https://api.yoyosoftware/mybudgetapp/return", - "JwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "6f7a1b8e-8799-48a8-9011-e3920391f713", + "softwareProductName": "ThatBudgetHelper", + "softwareProductDescription": "*** DO NOT CHANGE BELOW, JwksUri REQUIRED FOR POLYGLOT NOTEBOOK ***", + "logoUri": "https://yoyosoftware/mybudgetapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://yoyosoftware/mybudgetapp", + "tosUri": "https://yoyosoftware/mybudgetapp/terms", + "policyUri": "https://yoyosoftware/mybudgetapp/policy", + "recipientBaseUri": "https://api.yoyosoftware/mybudgetapp", + "revocationUri": "https://api.yoyosoftware/mybudgetapp/revoke", + "redirectUris": "https://api.yoyosoftware/mybudgetapp/callback https://api.yoyosoftware/mybudgetapp/return", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1968,52 +1968,52 @@ ] }, { - "LegalEntityId": "e251be0f-cb5d-453b-a9ef-c4d316bbe23f", - "LegalEntityName": "Another Energy Company", - "LogoUri": "https://anotherenergyco/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "34241177887", - "Acn": "005249981", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000002", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "e251be0f-cb5d-453b-a9ef-c4d316bbe23f", + "legalEntityName": "Another Energy Company", + "logoUri": "https://anotherenergyco/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "34241177887", + "acn": "005249981", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000002", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "2dda1b75-aa5e-4ff3-abff-af0863cf9ffc", - "BrandName": "Another Energy Tool", - "LogoUri": "https://anotherenergytool/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-12-01T09:00:00", - "SoftwareProducts": [ + "brandId": "2dda1b75-aa5e-4ff3-abff-af0863cf9ffc", + "brandName": "Another Energy Tool", + "logoUri": "https://anotherenergytool/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-12-01T09:00:00", + "softwareProducts": [ { - "SoftwareProductId": "19cf44b2-f4cb-4351-9817-364d00386444", - "SoftwareProductName": "AnotherHelperTool", - "SoftwareProductDescription": "*** DO NOT CHANGE BELOW, JwksUri REQUIRED FOR POSTMAN ***", - "LogoUri": "https://anotherenergyco/myenergytoolapp/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://api.anotherenergyco/myenergytoolapp", - "TosUri": "https://api.anotherenergyco/myenergytoolapp/terms", - "PolicyUri": "https://api.anotherenergyco/myenergytoolapp/policy", - "RecipientBaseUri": "https://api.anotherenergyco/myenergytoolapp", - "RevocationUri": "https://api.anotherenergyco/myenergytoolapp/revoke", - "RedirectUris": "https://api.anotherenergyco/myenergytoolapp/callback https://api.yoyosoftware/mybudgetapp/return", - "JwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "19cf44b2-f4cb-4351-9817-364d00386444", + "softwareProductName": "AnotherHelperTool", + "softwareProductDescription": "*** DO NOT CHANGE BELOW, JwksUri REQUIRED FOR POLYGLOT NOTEBOOK ***", + "logoUri": "https://anotherenergyco/myenergytoolapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://api.anotherenergyco/myenergytoolapp", + "tosUri": "https://api.anotherenergyco/myenergytoolapp/terms", + "policyUri": "https://api.anotherenergyco/myenergytoolapp/policy", + "recipientBaseUri": "https://api.anotherenergyco/myenergytoolapp", + "revocationUri": "https://api.anotherenergyco/myenergytoolapp/revoke", + "redirectUris": "https://api.anotherenergyco/myenergytoolapp/callback https://api.yoyosoftware/mybudgetapp/return", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } diff --git a/Source/CDR.Register.Admin.API/Data/seed-data.Release.json b/Source/CDR.Register.Admin.API/Data/seed-data.Release.json index 578d337..a915524 100644 --- a/Source/CDR.Register.Admin.API/Data/seed-data.Release.json +++ b/Source/CDR.Register.Admin.API/Data/seed-data.Release.json @@ -1,66 +1,66 @@ { - "LegalEntities": [ + "legalEntities": [ { - "LegalEntityId": "2f596416-53bc-42ad-bd5a-65537a2d5c42", - "LegalEntityName": "Very Smart Energy Company", - "LogoUri": "https://verysmarterenergy/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12345678901", - "Acn": "123456789", - "Arbn": null, - "AnzsicDivision": "2640", - "OrganisationTypeId": 2, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "2f596416-53bc-42ad-bd5a-65537a2d5c42", + "legalEntityName": "Very Smart Energy Company", + "logoUri": "https://verysmarterenergy/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12345678901", + "acn": "123456789", + "arbn": null, + "anzsicDivision": "2640", + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 2, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 2, + "statusId": 1, + "brands": [ { - "BrandId": "cfcaf0df-401b-47f2-98af-94787289eca8", - "BrandName": "Mock Data Holder (Energy)", - "LogoUri": "https://smarterenergy/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-12-01T10:00:00", - "AuthDetails": [ + "brandId": "cfcaf0df-401b-47f2-98af-94787289eca8", + "brandName": "Mock Data Holder (Energy)", + "logoUri": "https://smarterenergy/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-12-01T10:00:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.smarterenergy/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.smarterenergy/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://mock-data-holder-energy:8100", - "ResourceBaseUri": "https://mock-data-holder-energy:8102", - "InfoSecBaseUri": "https://mock-data-holder-energy:8101", - "ExtensionBaseUri": "", - "WebsiteUri": "https://smarterenergy/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://mock-data-holder-energy:8100", + "resourceBaseUri": "https://mock-data-holder-energy:8102", + "infoSecBaseUri": "https://mock-data-holder-energy:8101", + "extensionBaseUri": "", + "websiteUri": "https://smarterenergy/" } }, { - "BrandId": "6859d9f9-9cf9-486d-bc85-5d43a7e116de", - "BrandName": "Cut Price Energy -- dummy data holder -- do not use", - "LogoUri": "https://cutpriceenergy/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-12-01T11:00:00", - "AuthDetails": [ + "brandId": "6859d9f9-9cf9-486d-bc85-5d43a7e116de", + "brandName": "Cut Price Energy -- dummy data holder -- do not use", + "logoUri": "https://cutpriceenergy/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-12-01T11:00:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.cutpriceenergy/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.cutpriceenergy/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://api.cutpriceenergy:8100", - "ResourceBaseUri": "https://api.cutpriceenergy:8102", - "InfoSecBaseUri": "https://api.cutpriceenergy:8101", - "ExtensionBaseUri": "", - "WebsiteUri": "https://cutpriceenergy/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://api.cutpriceenergy:8100", + "resourceBaseUri": "https://api.cutpriceenergy:8102", + "infoSecBaseUri": "https://api.cutpriceenergy:8101", + "extensionBaseUri": "", + "websiteUri": "https://cutpriceenergy/" } } ] @@ -68,52 +68,52 @@ ] }, { - "LegalEntityId": "f9bde9a1-9fef-4bd9-b7ef-877369e076e3", - "LegalEntityName": "Mock Energy Company", - "LogoUri": "https://mocksoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "34241177887", - "Acn": "005249981", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000001", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "f9bde9a1-9fef-4bd9-b7ef-877369e076e3", + "legalEntityName": "Mock Energy Company", + "logoUri": "https://mocksoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "34241177887", + "acn": "005249981", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000001", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "d50b74cf-e992-42fd-86d4-582ac9d72dbb", - "BrandName": "Mock Energy Tool", - "LogoUri": "https://mocksoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-12-01T09:00:00", - "SoftwareProducts": [ + "brandId": "d50b74cf-e992-42fd-86d4-582ac9d72dbb", + "brandName": "Mock Energy Tool", + "logoUri": "https://mocksoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-12-01T09:00:00", + "softwareProducts": [ { - "SoftwareProductId": "4754cf30-6cc2-4a9a-a9e1-4fb8f6d42120", - "SoftwareProductName": "MyEnergyHelper", - "SoftwareProductDescription": "A product to help you manage your energy costs", - "LogoUri": "https://mocksoftware/myenergyapp/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://mocksoftware/myenergyapp", - "TosUri": "https://mocksoftware/myenergyapp/terms", - "PolicyUri": "https://mocksoftware/myenergyapp/policy", - "RecipientBaseUri": "https://mock-data-recipient:9001", - "RevocationUri": "https://mock-data-recipient:9001/revocation", - "RedirectUris": "https://mock-data-recipient:9001/consent/callback", - "JwksUri": "https://mock-data-recipient:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "4754cf30-6cc2-4a9a-a9e1-4fb8f6d42120", + "softwareProductName": "MyEnergyHelper", + "softwareProductDescription": "A product to help you manage your energy costs", + "logoUri": "https://mocksoftware/myenergyapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://mocksoftware/myenergyapp", + "tosUri": "https://mocksoftware/myenergyapp/terms", + "policyUri": "https://mocksoftware/myenergyapp/policy", + "recipientBaseUri": "https://mock-data-recipient:9001", + "revocationUri": "https://mock-data-recipient:9001/revocation", + "redirectUris": "https://mock-data-recipient:9001/consent/callback", + "jwksUri": "https://mock-data-recipient:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -124,45 +124,45 @@ ] }, { - "LegalEntityId": "0d332caa-8cd8-4ac9-8898-20641c54bc8c", - "LegalEntityName": "Bank Legal Entity 1", - "LogoUri": "https://bank/logo.png", - "RegistrationNumber": "12345", - "RegistrationDate": "2021-12-01T10:00:00", - "RegisteredCountry": "AUSTRALIA", - "Abn": "11111111111", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": "6221", - "OrganisationTypeId": 2, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "0d332caa-8cd8-4ac9-8898-20641c54bc8c", + "legalEntityName": "Bank Legal Entity 1", + "logoUri": "https://bank/logo.png", + "registrationNumber": "12345", + "registrationDate": "2021-12-01T10:00:00", + "registeredCountry": "AUSTRALIA", + "abn": "11111111111", + "acn": "888777666", + "arbn": null, + "anzsicDivision": "6221", + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "804fc2fb-18a7-4235-9a49-2af393d18bc7", - "BrandName": "Mock Data Holder (Banking)", - "LogoUri": "https://bank1/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "804fc2fb-18a7-4235-9a49-2af393d18bc7", + "brandName": "Mock Data Holder (Banking)", + "logoUri": "https://bank1/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.bank1/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.bank1/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://mock-data-holder:8000", - "ResourceBaseUri": "https://mock-data-holder:8002", - "InfoSecBaseUri": "https://mock-data-holder:8001", - "ExtensionBaseUri": "", - "WebsiteUri": "https://bank1/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://mock-data-holder:8000", + "resourceBaseUri": "https://mock-data-holder:8002", + "infoSecBaseUri": "https://mock-data-holder:8001", + "extensionBaseUri": "", + "websiteUri": "https://bank1/" } } ] @@ -170,52 +170,52 @@ ] }, { - "LegalEntityId": "18b75a76-5821-4c9e-b465-4709291cf0f4", - "LegalEntityName": "Mock Software Company", - "LogoUri": "https://mocksoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "11222333444", - "Acn": "222333444", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000099", - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "18b75a76-5821-4c9e-b465-4709291cf0f4", + "legalEntityName": "Mock Software Company", + "logoUri": "https://mocksoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "11222333444", + "acn": "222333444", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000099", + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "ffb1c8ba-279e-44d8-96f0-1bc34a6b436f", - "BrandName": "Mock Finance Tools", - "LogoUri": "https://mocksoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "ffb1c8ba-279e-44d8-96f0-1bc34a6b436f", + "brandName": "Mock Finance Tools", + "logoUri": "https://mocksoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "c6327f87-687a-4369-99a4-eaacd3bb8210", - "SoftwareProductName": "MyBudgetHelper", - "SoftwareProductDescription": "A product to help you manage your budget", - "LogoUri": "https://mocksoftware/mybudgetapp/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://mocksoftware/mybudgetapp", - "TosUri": "https://mocksoftware/mybudgetapp/terms", - "PolicyUri": "https://mocksoftware/mybudgetapp/policy", - "RecipientBaseUri": "https://mock-data-recipient:9001", - "RevocationUri": "https://mock-data-recipient:9001/revocation", - "RedirectUris": "https://mock-data-recipient:9001/consent/callback", - "JwksUri": "https://mock-data-recipient:9001/jwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "c6327f87-687a-4369-99a4-eaacd3bb8210", + "softwareProductName": "MyBudgetHelper", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://mocksoftware/mybudgetapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://mocksoftware/mybudgetapp", + "tosUri": "https://mocksoftware/mybudgetapp/terms", + "policyUri": "https://mocksoftware/mybudgetapp/policy", + "recipientBaseUri": "https://mock-data-recipient:9001", + "revocationUri": "https://mock-data-recipient:9001/revocation", + "redirectUris": "https://mock-data-recipient:9001/consent/callback", + "jwksUri": "https://mock-data-recipient:9001/jwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -226,45 +226,45 @@ ] }, { - "LegalEntityId": "93ef5f28-7f30-43f2-8e5c-b1e3cb39ce90", - "LegalEntityName": "New Bank", - "LogoUri": "https://newbank/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "99888777666", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "93ef5f28-7f30-43f2-8e5c-b1e3cb39ce90", + "legalEntityName": "New Bank", + "logoUri": "https://newbank/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "99888777666", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "6e9cfaf7-ecae-4de3-bbc5-ea9f366bdf55", - "BrandName": "New Bank -- dummy data holder -- do not use", - "LogoUri": "https://newbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "6e9cfaf7-ecae-4de3-bbc5-ea9f366bdf55", + "brandName": "New Bank -- dummy data holder -- do not use", + "logoUri": "https://newbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.newbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.newbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.newbank", - "ResourceBaseUri": "https://api.newbank", - "InfoSecBaseUri": "https://idp.newbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://newbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.newbank", + "resourceBaseUri": "https://api.newbank", + "infoSecBaseUri": "https://idp.newbank", + "extensionBaseUri": "", + "websiteUri": "https://newbank/" } } ] @@ -272,66 +272,66 @@ ] }, { - "LegalEntityId": "aeca53ab-2a90-4737-938d-987ce195ca14", - "LegalEntityName": "Sun Bank", - "LogoUri": "https://sunbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "94477558899", - "Acn": "99000099", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": 2, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "aeca53ab-2a90-4737-938d-987ce195ca14", + "legalEntityName": "Sun Bank", + "logoUri": "https://sunbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "94477558899", + "acn": "99000099", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "f6dfbe5b-c57a-4ec2-bc97-66c1f7fe6c1d", - "BrandName": "Sun -- dummy data holder -- do not use", - "LogoUri": "https://sunbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-01T11:58:00", - "AuthDetails": [ + "brandId": "f6dfbe5b-c57a-4ec2-bc97-66c1f7fe6c1d", + "brandName": "Sun -- dummy data holder -- do not use", + "logoUri": "https://sunbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-01T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.sunbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.sunbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.sunbank", - "ResourceBaseUri": "https://api.sunbank", - "InfoSecBaseUri": "https://idp.sunbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://sunbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.sunbank", + "resourceBaseUri": "https://api.sunbank", + "infoSecBaseUri": "https://idp.sunbank", + "extensionBaseUri": "", + "websiteUri": "https://sunbank/" } }, { - "BrandId": "a2cd9cd1-e3c7-493b-86d8-f9f319ca0732", - "BrandName": "Brighter Bank -- dummy data holder -- do not use", - "LogoUri": "https://brighterbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-01-01T11:58:00", - "AuthDetails": [ + "brandId": "a2cd9cd1-e3c7-493b-86d8-f9f319ca0732", + "brandName": "Brighter Bank -- dummy data holder -- do not use", + "logoUri": "https://brighterbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-01-01T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.brighterbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.brighterbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.brighterbank", - "ResourceBaseUri": "https://api.brighterbank", - "InfoSecBaseUri": "https://idp.brighterbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://brighterbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.brighterbank", + "resourceBaseUri": "https://api.brighterbank", + "infoSecBaseUri": "https://idp.brighterbank", + "extensionBaseUri": "", + "websiteUri": "https://brighterbank/" } } ] @@ -339,66 +339,66 @@ ] }, { - "LegalEntityId": "ba1311fb-5cea-4c5c-b4ed-f2a98a0915e0", - "LegalEntityName": "Hot Bank", - "LogoUri": "https://hotbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12345678901", - "Acn": "123456789", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "ba1311fb-5cea-4c5c-b4ed-f2a98a0915e0", + "legalEntityName": "Hot Bank", + "logoUri": "https://hotbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12345678901", + "acn": "123456789", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "62f4a113-defe-4f99-bd9c-625277bc0e36", - "BrandName": "mildBank -- dummy data holder -- do not use", - "LogoUri": "https://mildbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-11T11:58:00", - "AuthDetails": [ + "brandId": "62f4a113-defe-4f99-bd9c-625277bc0e36", + "brandName": "mildBank -- dummy data holder -- do not use", + "logoUri": "https://mildbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-11T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://mildbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://mildbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.mildbank", - "ResourceBaseUri": "https://api.mildbank", - "InfoSecBaseUri": "https://idp.mildbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://mildbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.mildbank", + "resourceBaseUri": "https://api.mildbank", + "infoSecBaseUri": "https://idp.mildbank", + "extensionBaseUri": "", + "websiteUri": "https://mildbank/" } }, { - "BrandId": "81d3d5cc-cdb6-4253-a78b-b17155dde7fd", - "BrandName": "extrahotBank -- dummy data holder -- do not use", - "LogoUri": "https://extrahotbank/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-16T11:58:00", - "AuthDetails": [ + "brandId": "81d3d5cc-cdb6-4253-a78b-b17155dde7fd", + "brandName": "extrahotBank -- dummy data holder -- do not use", + "logoUri": "https://extrahotbank/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-16T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://extrahotbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://extrahotbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.extrahotbank", - "ResourceBaseUri": "https://api.extrahotbank", - "InfoSecBaseUri": "https://idp.extrahotbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://extrahotbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.extrahotbank", + "resourceBaseUri": "https://api.extrahotbank", + "infoSecBaseUri": "https://idp.extrahotbank", + "extensionBaseUri": "", + "websiteUri": "https://extrahotbank/" } } ] @@ -406,45 +406,45 @@ ] }, { - "LegalEntityId": "725c6e62-bfa7-4719-94af-415ae64d4bcd", - "LegalEntityName": "Ive Bank", - "LogoUri": "https://ivebank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12312312393", - "Acn": "099800998", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "725c6e62-bfa7-4719-94af-415ae64d4bcd", + "legalEntityName": "Ive Bank", + "logoUri": "https://ivebank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12312312393", + "acn": "099800998", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "9928cf0f-70c7-40ea-b7ad-cad190232f68", - "BrandName": "Ive Bank -- dummy data holder -- do not use", - "LogoUri": "https://ivebank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-03T11:58:00", - "AuthDetails": [ + "brandId": "9928cf0f-70c7-40ea-b7ad-cad190232f68", + "brandName": "Ive Bank -- dummy data holder -- do not use", + "logoUri": "https://ivebank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-03T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.ivebank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.ivebank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.ivebank", - "ResourceBaseUri": "https://api.ivebank", - "InfoSecBaseUri": "https://idp.ivebank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://ivebank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.ivebank", + "resourceBaseUri": "https://api.ivebank", + "infoSecBaseUri": "https://idp.ivebank", + "extensionBaseUri": "", + "websiteUri": "https://ivebank/" } } ] @@ -452,45 +452,45 @@ ] }, { - "LegalEntityId": "2f1c327f-56b6-40c5-8e2e-b2130867329c", - "LegalEntityName": "Eva Bank", - "LogoUri": "https://evabank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "98765456765", - "Acn": "22121232", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "2f1c327f-56b6-40c5-8e2e-b2130867329c", + "legalEntityName": "Eva Bank", + "logoUri": "https://evabank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "98765456765", + "acn": "22121232", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "7c97c3b5-fe64-4b35-8ae0-17fa5d4aa0a8", - "BrandName": "Eva Bank corp -- dummy data holder -- do not use", - "LogoUri": "https://evabankcorp/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-26T11:58:00", - "AuthDetails": [ + "brandId": "7c97c3b5-fe64-4b35-8ae0-17fa5d4aa0a8", + "brandName": "Eva Bank corp -- dummy data holder -- do not use", + "logoUri": "https://evabankcorp/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-26T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.evabank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.evabank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.evabank", - "ResourceBaseUri": "https://api.evabank", - "InfoSecBaseUri": "https://idp.evabank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://evabank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.evabank", + "resourceBaseUri": "https://api.evabank", + "infoSecBaseUri": "https://idp.evabank", + "extensionBaseUri": "", + "websiteUri": "https://evabank/" } } ] @@ -498,45 +498,45 @@ ] }, { - "LegalEntityId": "e81ab637-b3b7-4403-82b8-a43077a569d6", - "LegalEntityName": "Royal Bank", - "LogoUri": "https://royalbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "94477558833", - "Acn": "99000033", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "e81ab637-b3b7-4403-82b8-a43077a569d6", + "legalEntityName": "Royal Bank", + "logoUri": "https://royalbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "94477558833", + "acn": "99000033", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "a5252bde-d1a6-413f-8f53-f7e2f6ab3f77", - "BrandName": "Royal Bank -- dummy data holder -- do not use", - "LogoUri": "https://royalbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-01T11:58:00", - "AuthDetails": [ + "brandId": "a5252bde-d1a6-413f-8f53-f7e2f6ab3f77", + "brandName": "Royal Bank -- dummy data holder -- do not use", + "logoUri": "https://royalbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-01T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.royalbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.royalbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.royalbank", - "ResourceBaseUri": "https://api.royalbank", - "InfoSecBaseUri": "https://idp.royalbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://royalbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.royalbank", + "resourceBaseUri": "https://api.royalbank", + "infoSecBaseUri": "https://idp.royalbank", + "extensionBaseUri": "", + "websiteUri": "https://royalbank/" } } ] @@ -544,45 +544,45 @@ ] }, { - "LegalEntityId": "e81ab636-b3b7-4403-82b8-a43077a569d6", - "LegalEntityName": "Central Bank", - "LogoUri": "https://centralbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12398122412", - "Acn": "44123312", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": 2, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "e81ab636-b3b7-4403-82b8-a43077a569d6", + "legalEntityName": "Central Bank", + "logoUri": "https://centralbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12398122412", + "acn": "44123312", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "c1ff7731-5843-4384-88d8-6062afde7c5b", - "BrandName": "central bank -- dummy data holder -- do not use", - "LogoUri": "https://centralbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-03-06T11:58:00", - "AuthDetails": [ + "brandId": "c1ff7731-5843-4384-88d8-6062afde7c5b", + "brandName": "central bank -- dummy data holder -- do not use", + "logoUri": "https://centralbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-03-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.centralbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.centralbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.centralbank", - "ResourceBaseUri": "https://api.centralbank", - "InfoSecBaseUri": "https://idp.centralbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://centralbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.centralbank", + "resourceBaseUri": "https://api.centralbank", + "infoSecBaseUri": "https://idp.centralbank", + "extensionBaseUri": "", + "websiteUri": "https://centralbank/" } } ] @@ -590,45 +590,45 @@ ] }, { - "LegalEntityId": "ae4af466-54c6-4ce4-ad2d-580bc6496943", - "LegalEntityName": "Fox Bank", - "LogoUri": "https://foxbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "31234212475", - "Acn": "122341213", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "ae4af466-54c6-4ce4-ad2d-580bc6496943", + "legalEntityName": "Fox Bank", + "logoUri": "https://foxbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "31234212475", + "acn": "122341213", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "2192a459-5ef5-4493-afe1-56c3d03fc1ba", - "BrandName": "Fox Bank -- dummy data holder -- do not use", - "LogoUri": "https://foxbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-21T11:58:00", - "AuthDetails": [ + "brandId": "2192a459-5ef5-4493-afe1-56c3d03fc1ba", + "brandName": "Fox Bank -- dummy data holder -- do not use", + "logoUri": "https://foxbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-21T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.foxbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.foxbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.foxbank", - "ResourceBaseUri": "https://api.foxbank", - "InfoSecBaseUri": "https://idp.foxbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://foxbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.foxbank", + "resourceBaseUri": "https://api.foxbank", + "infoSecBaseUri": "https://idp.foxbank", + "extensionBaseUri": "", + "websiteUri": "https://foxbank/" } } ] @@ -636,45 +636,45 @@ ] }, { - "LegalEntityId": "017fcfc8-1fd3-4ef4-8f08-b697c4c681ee", - "LegalEntityName": "Grand Bank", - "LogoUri": "https://grandbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "99888777666", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "017fcfc8-1fd3-4ef4-8f08-b697c4c681ee", + "legalEntityName": "Grand Bank", + "logoUri": "https://grandbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "99888777666", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "8aa8e9a6-1dc7-4428-baea-d1f4533428b9", - "BrandName": "Grand Bank -- dummy data holder -- do not use", - "LogoUri": "https://grandbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-29T11:58:00", - "AuthDetails": [ + "brandId": "8aa8e9a6-1dc7-4428-baea-d1f4533428b9", + "brandName": "Grand Bank -- dummy data holder -- do not use", + "logoUri": "https://grandbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-29T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.grandbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.grandbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.grandbank", - "ResourceBaseUri": "https://api.grandbank", - "InfoSecBaseUri": "https://idp.grandbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://grandbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.grandbank", + "resourceBaseUri": "https://api.grandbank", + "infoSecBaseUri": "https://idp.grandbank", + "extensionBaseUri": "", + "websiteUri": "https://grandbank/" } } ] @@ -682,45 +682,45 @@ ] }, { - "LegalEntityId": "7b1a7566-e113-411b-94b7-d3b9fb0da98a", - "LegalEntityName": "Kiss Bank", - "LogoUri": "https://kissbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12593477455", - "Acn": "112122235", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "7b1a7566-e113-411b-94b7-d3b9fb0da98a", + "legalEntityName": "Kiss Bank", + "logoUri": "https://kissbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12593477455", + "acn": "112122235", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "85168ace-9211-45e3-bb75-f85c54e66f10", - "BrandName": "Kiss Bank -- dummy data holder -- do not use", - "LogoUri": "https://kissbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-12T11:58:00", - "AuthDetails": [ + "brandId": "85168ace-9211-45e3-bb75-f85c54e66f10", + "brandName": "Kiss Bank -- dummy data holder -- do not use", + "logoUri": "https://kissbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-12T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.kissbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.kissbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.kissbank", - "ResourceBaseUri": "https://api.kissbank", - "InfoSecBaseUri": "https://idp.kissbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://kissbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.kissbank", + "resourceBaseUri": "https://api.kissbank", + "infoSecBaseUri": "https://idp.kissbank", + "extensionBaseUri": "", + "websiteUri": "https://kissbank/" } } ] @@ -728,45 +728,45 @@ ] }, { - "LegalEntityId": "667407fc-dc7e-4be5-8795-5189240bcbca", - "LegalEntityName": "Luna Bank", - "LogoUri": "https://lunabank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12334412233", - "Acn": "747553322", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "667407fc-dc7e-4be5-8795-5189240bcbca", + "legalEntityName": "Luna Bank", + "logoUri": "https://lunabank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12334412233", + "acn": "747553322", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "bb03be60-5c46-422e-a27e-aefa0015078d", - "BrandName": "Luna -- dummy data holder -- do not use", - "LogoUri": "https://lunabank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-12T11:58:00", - "AuthDetails": [ + "brandId": "bb03be60-5c46-422e-a27e-aefa0015078d", + "brandName": "Luna -- dummy data holder -- do not use", + "logoUri": "https://lunabank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-12T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.lunabank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.lunabank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.lunabank", - "ResourceBaseUri": "https://api.lunabank", - "InfoSecBaseUri": "https://idp.lunabank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://lunabank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.lunabank", + "resourceBaseUri": "https://api.lunabank", + "infoSecBaseUri": "https://idp.lunabank", + "extensionBaseUri": "", + "websiteUri": "https://lunabank/" } } ] @@ -774,45 +774,45 @@ ] }, { - "LegalEntityId": "7993c227-9252-432b-9b2f-a8666e2fd2f2", - "LegalEntityName": "Mu Bank", - "LogoUri": "https://mubank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12352345345", - "Acn": "112123121", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "7993c227-9252-432b-9b2f-a8666e2fd2f2", + "legalEntityName": "Mu Bank", + "logoUri": "https://mubank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12352345345", + "acn": "112123121", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "52d23611-4493-4a21-9095-44ae9eb85841", - "BrandName": "Mu Bank -- dummy data holder -- do not use", - "LogoUri": "https://mubank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "52d23611-4493-4a21-9095-44ae9eb85841", + "brandName": "Mu Bank -- dummy data holder -- do not use", + "logoUri": "https://mubank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.mubank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.mubank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.mubank", - "ResourceBaseUri": "https://api.mubank", - "InfoSecBaseUri": "https://idp.mubank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://mubank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.mubank", + "resourceBaseUri": "https://api.mubank", + "infoSecBaseUri": "https://idp.mubank", + "extensionBaseUri": "", + "websiteUri": "https://mubank/" } } ] @@ -820,45 +820,45 @@ ] }, { - "LegalEntityId": "9c7dec6d-2e46-4b53-8430-5337c7eb93e9", - "LegalEntityName": "Noon Bank", - "LogoUri": "https://noonbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "11123599749", - "Acn": "224435522", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "9c7dec6d-2e46-4b53-8430-5337c7eb93e9", + "legalEntityName": "Noon Bank", + "logoUri": "https://noonbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "11123599749", + "acn": "224435522", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "557f42e8-4e00-4b03-a9c9-d97796b6418b", - "BrandName": "Noon Bank -- dummy data holder -- do not use", - "LogoUri": "https://noonbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "557f42e8-4e00-4b03-a9c9-d97796b6418b", + "brandName": "Noon Bank -- dummy data holder -- do not use", + "logoUri": "https://noonbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.noonbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.noonbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.noonbank", - "ResourceBaseUri": "https://api.noonbank", - "InfoSecBaseUri": "https://idp.noonbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://noonbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.noonbank", + "resourceBaseUri": "https://api.noonbank", + "infoSecBaseUri": "https://idp.noonbank", + "extensionBaseUri": "", + "websiteUri": "https://noonbank/" } } ] @@ -866,45 +866,45 @@ ] }, { - "LegalEntityId": "b9b45c14-3346-47f7-ad78-3416762cf1d8", - "LegalEntityName": "Oppo Bank", - "LogoUri": "https://oppobank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12412412426", - "Acn": "995543336", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "b9b45c14-3346-47f7-ad78-3416762cf1d8", + "legalEntityName": "Oppo Bank", + "logoUri": "https://oppobank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12412412426", + "acn": "995543336", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "a5e45351-d13c-4690-93d1-3da515e71a92", - "BrandName": "Oppo Bank -- dummy data holder -- do not use", - "LogoUri": "https://oppobank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "a5e45351-d13c-4690-93d1-3da515e71a92", + "brandName": "Oppo Bank -- dummy data holder -- do not use", + "logoUri": "https://oppobank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.oppobank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.oppobank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.oppobank", - "ResourceBaseUri": "https://api.oppobank", - "InfoSecBaseUri": "https://idp.oppobank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://oppobank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.oppobank", + "resourceBaseUri": "https://api.oppobank", + "infoSecBaseUri": "https://idp.oppobank", + "extensionBaseUri": "", + "websiteUri": "https://oppobank/" } } ] @@ -912,45 +912,45 @@ ] }, { - "LegalEntityId": "b7a18659-eb9b-4130-a0df-402c85f1f216", - "LegalEntityName": "Pepper Bank", - "LogoUri": "https://pepperbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "87356524315", - "Acn": "322342343", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "b7a18659-eb9b-4130-a0df-402c85f1f216", + "legalEntityName": "Pepper Bank", + "logoUri": "https://pepperbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "87356524315", + "acn": "322342343", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "97e53112-73b2-482a-b352-39d389d67916", - "BrandName": "Pepper Bank -- dummy data holder -- do not use", - "LogoUri": "https://pepperbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "97e53112-73b2-482a-b352-39d389d67916", + "brandName": "Pepper Bank -- dummy data holder -- do not use", + "logoUri": "https://pepperbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.pepperbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.pepperbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.pepperbank", - "ResourceBaseUri": "https://api.pepperbank", - "InfoSecBaseUri": "https://idp.pepperbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://pepperbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.pepperbank", + "resourceBaseUri": "https://api.pepperbank", + "infoSecBaseUri": "https://idp.pepperbank", + "extensionBaseUri": "", + "websiteUri": "https://pepperbank/" } } ] @@ -958,45 +958,45 @@ ] }, { - "LegalEntityId": "fe75814c-99ee-4922-a6b0-71913e60984c", - "LegalEntityName": "QQ Bank", - "LogoUri": "https://qqbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "21111244638", - "Acn": "317373231", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "fe75814c-99ee-4922-a6b0-71913e60984c", + "legalEntityName": "QQ Bank", + "logoUri": "https://qqbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "21111244638", + "acn": "317373231", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "895e54c5-93e0-405f-8072-0a9871bac8b5", - "BrandName": "QQ Bank -- dummy data holder -- do not use", - "LogoUri": "https://qqbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "895e54c5-93e0-405f-8072-0a9871bac8b5", + "brandName": "QQ Bank -- dummy data holder -- do not use", + "logoUri": "https://qqbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.qqbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.qqbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.qqbank", - "ResourceBaseUri": "https://api.qqbank", - "InfoSecBaseUri": "https://idp.qqbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://qqbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.qqbank", + "resourceBaseUri": "https://api.qqbank", + "infoSecBaseUri": "https://idp.qqbank", + "extensionBaseUri": "", + "websiteUri": "https://qqbank/" } } ] @@ -1004,45 +1004,45 @@ ] }, { - "LegalEntityId": "06c595f2-f0b2-4684-90e1-6905e4537304", - "LegalEntityName": "Run Bank", - "LogoUri": "https://runbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "99888777666", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "06c595f2-f0b2-4684-90e1-6905e4537304", + "legalEntityName": "Run Bank", + "logoUri": "https://runbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "99888777666", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "975375f7-2bd9-44b5-a188-43d65ca8eaae", - "BrandName": "Run Bank -- dummy data holder -- do not use", - "LogoUri": "https://runbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "975375f7-2bd9-44b5-a188-43d65ca8eaae", + "brandName": "Run Bank -- dummy data holder -- do not use", + "logoUri": "https://runbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.runbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.runbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.runbank", - "ResourceBaseUri": "https://api.runbank", - "InfoSecBaseUri": "https://idp.runbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://runbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.runbank", + "resourceBaseUri": "https://api.runbank", + "infoSecBaseUri": "https://idp.runbank", + "extensionBaseUri": "", + "websiteUri": "https://runbank/" } } ] @@ -1050,45 +1050,45 @@ ] }, { - "LegalEntityId": "350c4b28-132c-4248-a962-1434e00e7046", - "LegalEntityName": "SaS Bank", - "LogoUri": "https://sasbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "99888777666", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "350c4b28-132c-4248-a962-1434e00e7046", + "legalEntityName": "SaS Bank", + "logoUri": "https://sasbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "99888777666", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "b648f694-0dee-4f5e-bd2c-9837ac08fb7b", - "BrandName": "SaS Bank -- dummy data holder -- do not use", - "LogoUri": "https://sasbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "b648f694-0dee-4f5e-bd2c-9837ac08fb7b", + "brandName": "SaS Bank -- dummy data holder -- do not use", + "logoUri": "https://sasbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.sasbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.sasbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.sasbank", - "ResourceBaseUri": "https://api.sasbank", - "InfoSecBaseUri": "https://idp.sasbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://sasbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.sasbank", + "resourceBaseUri": "https://api.sasbank", + "infoSecBaseUri": "https://idp.sasbank", + "extensionBaseUri": "", + "websiteUri": "https://sasbank/" } } ] @@ -1096,45 +1096,45 @@ ] }, { - "LegalEntityId": "a1349224-adf3-4678-ba9b-f9ec800b5dc5", - "LegalEntityName": "TnT Bank", - "LogoUri": "https://tntbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "13123412473", - "Acn": "533284211", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "a1349224-adf3-4678-ba9b-f9ec800b5dc5", + "legalEntityName": "TnT Bank", + "logoUri": "https://tntbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "13123412473", + "acn": "533284211", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "f8bce914-ac8d-436a-b265-19baca6d1df2", - "BrandName": "TnT Bank -- dummy data holder -- do not use", - "LogoUri": "https://tntbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-09T11:58:00", - "AuthDetails": [ + "brandId": "f8bce914-ac8d-436a-b265-19baca6d1df2", + "brandName": "TnT Bank -- dummy data holder -- do not use", + "logoUri": "https://tntbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-09T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.tntbank/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.tntbank/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.tntbank", - "ResourceBaseUri": "https://api.tntbank", - "InfoSecBaseUri": "https://idp.tntbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://tntbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.tntbank", + "resourceBaseUri": "https://api.tntbank", + "infoSecBaseUri": "https://idp.tntbank", + "extensionBaseUri": "", + "websiteUri": "https://tntbank/" } } ] @@ -1142,45 +1142,45 @@ ] }, { - "LegalEntityId": "bc9d68f2-74c4-43d5-9a9c-93e72a2e84c9", - "LegalEntityName": "Bank Legal Entity 2", - "LogoUri": "https://bank2/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "11111111111", - "Acn": "888777666", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": 2, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "bc9d68f2-74c4-43d5-9a9c-93e72a2e84c9", + "legalEntityName": "Bank Legal Entity 2", + "logoUri": "https://bank2/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "11111111111", + "acn": "888777666", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": 2, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "e748eadf-4aa4-4e2f-b3da-fb4a9d511994", - "BrandName": "Bank Brand 2 -- dummy data holder -- do not use", - "LogoUri": "https://bank2/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "e748eadf-4aa4-4e2f-b3da-fb4a9d511994", + "brandName": "Bank Brand 2 -- dummy data holder -- do not use", + "logoUri": "https://bank2/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://idp.bank2/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://idp.bank2/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.bank2", - "ResourceBaseUri": "https://api.bank2", - "InfoSecBaseUri": "https://idp.bank2", - "ExtensionBaseUri": "", - "WebsiteUri": "https://bank2/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.bank2", + "resourceBaseUri": "https://api.bank2", + "infoSecBaseUri": "https://idp.bank2", + "extensionBaseUri": "", + "websiteUri": "https://bank2/" } } ] @@ -1188,66 +1188,66 @@ ] }, { - "LegalEntityId": "3d974478-afa6-4ce4-80bc-6f93e8e92e19", - "LegalEntityName": "Smarter Bank", - "LogoUri": "https://smarterbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12345678901", - "Acn": "123456789", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "3d974478-afa6-4ce4-80bc-6f93e8e92e19", + "legalEntityName": "Smarter Bank", + "logoUri": "https://smarterbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12345678901", + "acn": "123456789", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "9f8df3e2-6866-42af-91d4-5faa3204f0b8", - "BrandName": "Smarter Bank -- dummy data holder -- do not use", - "LogoUri": "https://smarterbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "9f8df3e2-6866-42af-91d4-5faa3204f0b8", + "brandName": "Smarter Bank -- dummy data holder -- do not use", + "logoUri": "https://smarterbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://smarterbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://smarterbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.smarterbank", - "ResourceBaseUri": "https://api.smarterbank", - "InfoSecBaseUri": "https://idp.smarterbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://smarterbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.smarterbank", + "resourceBaseUri": "https://api.smarterbank", + "infoSecBaseUri": "https://idp.smarterbank", + "extensionBaseUri": "", + "websiteUri": "https://smarterbank/" } }, { - "BrandId": "81d3d5cb-cdb6-4253-a78b-b17155dde7fd", - "BrandName": "MyBank -- dummy data holder -- do not use", - "LogoUri": "https://mybank/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "81d3d5cb-cdb6-4253-a78b-b17155dde7fd", + "brandName": "MyBank -- dummy data holder -- do not use", + "logoUri": "https://mybank/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://mybank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://mybank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.mybank", - "ResourceBaseUri": "https://api.mybank", - "InfoSecBaseUri": "https://idp.mybank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://mybank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.mybank", + "resourceBaseUri": "https://api.mybank", + "infoSecBaseUri": "https://idp.mybank", + "extensionBaseUri": "", + "websiteUri": "https://mybank/" } } ] @@ -1255,66 +1255,66 @@ ] }, { - "LegalEntityId": "924ca498-0f19-402d-ae07-2cb61088f8aa", - "LegalEntityName": "Hall Bank", - "LogoUri": "https://hallbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "12345678901", - "Acn": "123456789", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "924ca498-0f19-402d-ae07-2cb61088f8aa", + "legalEntityName": "Hall Bank", + "logoUri": "https://hallbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "12345678901", + "acn": "123456789", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "cf217aba-e00d-48d5-9c3d-03af0b91cb80", - "BrandName": "Hall Bank -- dummy data holder -- do not use", - "LogoUri": "https://hallardbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-19T11:58:00", - "AuthDetails": [ + "brandId": "cf217aba-e00d-48d5-9c3d-03af0b91cb80", + "brandName": "Hall Bank -- dummy data holder -- do not use", + "logoUri": "https://hallardbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-19T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://hallbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://hallbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.hallbank", - "ResourceBaseUri": "https://api.hallbank", - "InfoSecBaseUri": "https://idp.hallbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://hallbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.hallbank", + "resourceBaseUri": "https://api.hallbank", + "infoSecBaseUri": "https://idp.hallbank", + "extensionBaseUri": "", + "websiteUri": "https://hallbank/" } }, { - "BrandId": "920f296d-5f2f-49de-876c-15a4aa1b4a79", - "BrandName": "Hallway -- dummy data holder -- do not use", - "LogoUri": "https://hallwaybank/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-18T11:58:00", - "AuthDetails": [ + "brandId": "920f296d-5f2f-49de-876c-15a4aa1b4a79", + "brandName": "Hallway -- dummy data holder -- do not use", + "logoUri": "https://hallwaybank/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-18T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://hallwaybank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://hallwaybank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.hallwaybank", - "ResourceBaseUri": "https://api.hallwaybank", - "InfoSecBaseUri": "https://idp.hallwaybank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://hallwaybank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.hallwaybank", + "resourceBaseUri": "https://api.hallwaybank", + "infoSecBaseUri": "https://idp.hallwaybank", + "extensionBaseUri": "", + "websiteUri": "https://hallwaybank/" } } ] @@ -1322,87 +1322,87 @@ ] }, { - "LegalEntityId": "04361651-f485-421a-8e3e-d01dd7ab2706", - "LegalEntityName": "Job Bank", - "LogoUri": "https://jobbank/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "13254365476", - "Acn": "264284352", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": null, - "AccreditationLevelId": null, - "Participations": [ + "legalEntityId": "04361651-f485-421a-8e3e-d01dd7ab2706", + "legalEntityName": "Job Bank", + "logoUri": "https://jobbank/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "13254365476", + "acn": "264284352", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": null, + "accreditationLevelId": null, + "participations": [ { - "ParticipationTypeId": 1, - "IndustryId": 1, - "StatusId": 1, - "Brands": [ + "participationTypeId": 1, + "industryId": 1, + "statusId": 1, + "brands": [ { - "BrandId": "bc144967-d6f8-47a6-8590-07caf522141b", - "BrandName": "Jobs Bank -- dummy data holder -- do not use", - "LogoUri": "https://jobsbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "bc144967-d6f8-47a6-8590-07caf522141b", + "brandName": "Jobs Bank -- dummy data holder -- do not use", + "logoUri": "https://jobsbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://jobsbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://jobsbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.jobsbank", - "ResourceBaseUri": "https://api.jobsbank", - "InfoSecBaseUri": "https://idp.jobsbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://jobsbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.jobsbank", + "resourceBaseUri": "https://api.jobsbank", + "infoSecBaseUri": "https://idp.jobsbank", + "extensionBaseUri": "", + "websiteUri": "https://jobsbank/" } }, { - "BrandId": "7b47ecf8-a991-4dd3-adef-b89564005e8e", - "BrandName": "offer bank -- dummy data holder -- do not use", - "LogoUri": "https://offerbank/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "AuthDetails": [ + "brandId": "7b47ecf8-a991-4dd3-adef-b89564005e8e", + "brandName": "offer bank -- dummy data holder -- do not use", + "logoUri": "https://offerbank/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://offerbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://offerbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.offerbank", - "ResourceBaseUri": "https://api.offerbank", - "InfoSecBaseUri": "https://idp.offerbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://offerbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.offerbank", + "resourceBaseUri": "https://api.offerbank", + "infoSecBaseUri": "https://idp.offerbank", + "extensionBaseUri": "", + "websiteUri": "https://offerbank/" } }, { - "BrandId": "c3176245-4258-4383-b945-cd2f7c828d3c", - "BrandName": "J bank -- dummy data holder -- do not use", - "LogoUri": "https://jbank/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-18T11:58:00", - "AuthDetails": [ + "brandId": "c3176245-4258-4383-b945-cd2f7c828d3c", + "brandName": "J bank -- dummy data holder -- do not use", + "logoUri": "https://jbank/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-18T11:58:00", + "authDetails": [ { - "RegisterUTypeId": 1, - "JwksEndpoint": "https://jbank/idp/jwks" + "registerUTypeId": 1, + "jwksEndpoint": "https://jbank/idp/jwks" } ], - "Endpoint": { - "Version": 1, - "PublicBaseUri": "https://publicapi.jbank", - "ResourceBaseUri": "https://api.jbank", - "InfoSecBaseUri": "https://idp.jbank", - "ExtensionBaseUri": "", - "WebsiteUri": "https://jbank/" + "endpoint": { + "version": 1, + "publicBaseUri": "https://publicapi.jbank", + "resourceBaseUri": "https://api.jbank", + "infoSecBaseUri": "https://idp.jbank", + "extensionBaseUri": "", + "websiteUri": "https://jbank/" } } ] @@ -1410,118 +1410,118 @@ ] }, { - "LegalEntityId": "9d34ede4-2c76-4ecc-a31e-ea8392d31cc9", - "LegalEntityName": "FintechX", - "LogoUri": "https://fintechx/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "98765987654", - "Acn": "987659876", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR001001", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "9d34ede4-2c76-4ecc-a31e-ea8392d31cc9", + "legalEntityName": "FintechX", + "logoUri": "https://fintechx/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "98765987654", + "acn": "987659876", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR001001", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "20c0864b-ceef-4de0-8944-eb0962f825eb", - "BrandName": "Finance X", - "LogoUri": "https://fintechx/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "20c0864b-ceef-4de0-8944-eb0962f825eb", + "brandName": "Finance X", + "logoUri": "https://fintechx/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "d3c44426-e003-4604-aa45-4137e45dfbc4", - "SoftwareProductName": "Loan Calculator X", - "SoftwareProductDescription": "Loan affordability application", - "LogoUri": "https://fintechx/products/loancalculator/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://fintechx/products/loancalculator", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://fintechx/products/loancalculator", - "RevocationUri": "https://fintechx/products/loancalculator/revocation", - "RedirectUris": "https://fintechx/products/loancalculator/cb", - "JwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "d3c44426-e003-4604-aa45-4137e45dfbc4", + "softwareProductName": "Loan Calculator X", + "softwareProductDescription": "Loan affordability application", + "logoUri": "https://fintechx/products/loancalculator/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://fintechx/products/loancalculator", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://fintechx/products/loancalculator", + "revocationUri": "https://fintechx/products/loancalculator/revocation", + "redirectUris": "https://fintechx/products/loancalculator/cb", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] }, { - "SoftwareProductId": "9381dad2-6b68-4879-b496-c1319d7dfbc9", - "SoftwareProductName": "Track Xpense", - "SoftwareProductDescription": "Application to allow you to track your expenses", - "LogoUri": "https://fintechx/products/trackxpense/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://fintechx/products/trackxpense", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://fintechx/products/trackxpense", - "RevocationUri": "https://fintechx/products/trackxpense/revoke", - "RedirectUris": "https://fintechx/products/trackxpense/cb", - "JwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "9381dad2-6b68-4879-b496-c1319d7dfbc9", + "softwareProductName": "Track Xpense", + "softwareProductDescription": "Application to allow you to track your expenses", + "logoUri": "https://fintechx/products/trackxpense/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://fintechx/products/trackxpense", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://fintechx/products/trackxpense", + "revocationUri": "https://fintechx/products/trackxpense/revoke", + "redirectUris": "https://fintechx/products/trackxpense/cb", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] }, { - "SoftwareProductId": "63bc22ac-6fd2-4e85-a979-c2fc7c4db9da", - "SoftwareProductName": "TestProductCert", - "SoftwareProductDescription": "Application to allow you to track your expenses", - "LogoUri": "https://fintechx/products/trackxpense/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://fintechx/products/trackxpense", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://fintechx/products/trackxpense", - "RevocationUri": "https://fintechx/products/trackxpense/revoke", - "RedirectUris": "https://fintechx/products/trackxpense/cb", - "JwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "63bc22ac-6fd2-4e85-a979-c2fc7c4db9da", + "softwareProductName": "TestProductCert", + "softwareProductDescription": "Application to allow you to track your expenses", + "logoUri": "https://fintechx/products/trackxpense/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://fintechx/products/trackxpense", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://fintechx/products/trackxpense", + "revocationUri": "https://fintechx/products/trackxpense/revoke", + "redirectUris": "https://fintechx/products/trackxpense/cb", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] }, { - "SoftwareProductId": "86ecb655-9eba-409c-9be3-59e7adf7080d", - "SoftwareProductName": "MockDataRecepient", - "SoftwareProductDescription": "Mock Data Recepient", - "LogoUri": "https://fintechx/products/trackxpense/logo.png", - "SectorIdentifierUri": "https://fintechx/products/trackxpense/sectoridentifieruri", - "ClientUri": "https://fintechx/products/trackxpense", - "TosUri": "https://fintechx/products/trackxpense/tos", - "PolicyUri": "https://fintechx/products/trackxpense/policy", - "RecipientBaseUri": "https://fintechx/products/trackxpense", - "RevocationUri": "https://fintechx/products/trackxpense/revoke", - "RedirectUris": "https://fintechx/products/trackxpense/cb https://fintechx/products/trackxpense/cb2", - "JwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "86ecb655-9eba-409c-9be3-59e7adf7080d", + "softwareProductName": "MockDataRecepient", + "softwareProductDescription": "Mock Data Recepient", + "logoUri": "https://fintechx/products/trackxpense/logo.png", + "sectorIdentifierUri": "https://fintechx/products/trackxpense/sectoridentifieruri", + "clientUri": "https://fintechx/products/trackxpense", + "tosUri": "https://fintechx/products/trackxpense/tos", + "policyUri": "https://fintechx/products/trackxpense/policy", + "recipientBaseUri": "https://fintechx/products/trackxpense", + "revocationUri": "https://fintechx/products/trackxpense/revoke", + "redirectUris": "https://fintechx/products/trackxpense/cb https://fintechx/products/trackxpense/cb2", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1532,52 +1532,52 @@ ] }, { - "LegalEntityId": "a1ca85da-7be8-4020-9c27-c9623eca582b", - "LegalEntityName": "Xray Software Pty Ltd", - "LogoUri": "https://xraysoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "112341234", - "Acn": "12341243", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000006", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "a1ca85da-7be8-4020-9c27-c9623eca582b", + "legalEntityName": "Xray Software Pty Ltd", + "logoUri": "https://xraysoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "112341234", + "acn": "12341243", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000006", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "fe123396-4eba-4518-aade-b245ceea78af", - "BrandName": "XRay Financial", - "LogoUri": "https://xraysoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "fe123396-4eba-4518-aade-b245ceea78af", + "brandName": "XRay Financial", + "logoUri": "https://xraysoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "6a25c22b-0810-4f41-8e41-f48d162c517d", - "SoftwareProductName": "Budget direct", - "SoftwareProductDescription": "A product to help you manage your budget", - "LogoUri": "https://xraysoftware/budgetdirect/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://xraysoftware/budgetdirect", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://api.xrayoftware/budgetdirect", - "RevocationUri": "https://api.xraysoftware/budgetdirect/revoke", - "RedirectUris": "https://api.xraysoftware/budgetdirect/callback", - "JwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "6a25c22b-0810-4f41-8e41-f48d162c517d", + "softwareProductName": "Budget direct", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://xraysoftware/budgetdirect/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://xraysoftware/budgetdirect", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://api.xrayoftware/budgetdirect", + "revocationUri": "https://api.xraysoftware/budgetdirect/revoke", + "redirectUris": "https://api.xraysoftware/budgetdirect/callback", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1588,52 +1588,52 @@ ] }, { - "LegalEntityId": "8ff78c90-74c2-4c51-9c04-9d829476687a", - "LegalEntityName": "WOW Software Company", - "LogoUri": "https://wowsoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "88778877", - "Acn": "99889988", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000007", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "8ff78c90-74c2-4c51-9c04-9d829476687a", + "legalEntityName": "WOW Software Company", + "logoUri": "https://wowsoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "88778877", + "acn": "99889988", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000007", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "8fe9791a-e4a8-4104-b1cb-e0df41189520", - "BrandName": "WOW", - "LogoUri": "https://wowsoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-02-06T11:58:00", - "SoftwareProducts": [ + "brandId": "8fe9791a-e4a8-4104-b1cb-e0df41189520", + "brandName": "WOW", + "logoUri": "https://wowsoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-02-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "9788e6d3-75a1-47eb-a891-dd752ced0f61", - "SoftwareProductName": "MyBudgetHelper", - "SoftwareProductDescription": "A product to help you manage your budget", - "LogoUri": "https://wowsoftware/mybudgetapp/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://wowsoftware/mybudgetapp", - "TosUri": "https://wowsoftware/mybudgetapp/terms", - "PolicyUri": "https://wowsoftware/mybudgetapp/policy", - "RecipientBaseUri": "https://api.wowsoftware/mybudgetapp", - "RevocationUri": "https://api.wowsoftware/mybudgetapp/revoke", - "RedirectUris": "https://api.wowsoftware/mybudgetapp/callback https://api.mocksoftware/mybudgetapp/return", - "JwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "9788e6d3-75a1-47eb-a891-dd752ced0f61", + "softwareProductName": "MyBudgetHelper", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://wowsoftware/mybudgetapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://wowsoftware/mybudgetapp", + "tosUri": "https://wowsoftware/mybudgetapp/terms", + "policyUri": "https://wowsoftware/mybudgetapp/policy", + "recipientBaseUri": "https://api.wowsoftware/mybudgetapp", + "revocationUri": "https://api.wowsoftware/mybudgetapp/revoke", + "redirectUris": "https://api.wowsoftware/mybudgetapp/callback https://api.mocksoftware/mybudgetapp/return", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1644,52 +1644,52 @@ ] }, { - "LegalEntityId": "4a29856c-2634-4fea-bf9b-74c99c337e2f", - "LegalEntityName": "olm Software Company", - "LogoUri": "https://olmsoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "88778877", - "Acn": "99889988", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000008", - "AccreditationLevelId": 0, - "Participations": [ + "legalEntityId": "4a29856c-2634-4fea-bf9b-74c99c337e2f", + "legalEntityName": "olm Software Company", + "logoUri": "https://olmsoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "88778877", + "acn": "99889988", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000008", + "accreditationLevelId": 0, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "a7171ba3-fd05-456f-a859-be4e1cbcc17d", - "BrandName": "OLM Software", - "LogoUri": "https://olmsoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "a7171ba3-fd05-456f-a859-be4e1cbcc17d", + "brandName": "OLM Software", + "logoUri": "https://olmsoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "05d7dfd7-1d8f-4abf-b987-cf56c9115e8d", - "SoftwareProductName": "Budgeter", - "SoftwareProductDescription": "A product to help you manage your budget", - "LogoUri": "https://olmsoftware/mybudgetapp/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://olmsoftware/mybudgetapp", - "TosUri": "https://olmsoftware/mybudgetapp/terms", - "PolicyUri": "https://olmsoftware/mybudgetapp/policy", - "RecipientBaseUri": "https://api.olmsoftware/mybudgetapp", - "RevocationUri": "https://api.olmsoftware/mybudgetapp/revoke", - "RedirectUris": "https://api.olmsoftware/mybudgetapp/redirect", - "JwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "05d7dfd7-1d8f-4abf-b987-cf56c9115e8d", + "softwareProductName": "Budgeter", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://olmsoftware/mybudgetapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://olmsoftware/mybudgetapp", + "tosUri": "https://olmsoftware/mybudgetapp/terms", + "policyUri": "https://olmsoftware/mybudgetapp/policy", + "recipientBaseUri": "https://api.olmsoftware/mybudgetapp", + "revocationUri": "https://api.olmsoftware/mybudgetapp/revoke", + "redirectUris": "https://api.olmsoftware/mybudgetapp/redirect", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1700,52 +1700,52 @@ ] }, { - "LegalEntityId": "f138d974-0d12-4150-ad0f-c77af745c60b", - "LegalEntityName": "xlogical Software Company", - "LogoUri": "https://xlogical/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": null, - "Acn": null, - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR001009", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "f138d974-0d12-4150-ad0f-c77af745c60b", + "legalEntityName": "xlogical Software Company", + "logoUri": "https://xlogical/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": null, + "acn": null, + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR001009", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "8a3441aa-1242-493a-b466-dcbfffe5a441", - "BrandName": "xlogical", - "LogoUri": "https://xlogical/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "8a3441aa-1242-493a-b466-dcbfffe5a441", + "brandName": "xlogical", + "logoUri": "https://xlogical/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "25ee528f-35ac-4a66-a67c-6166602c9322", - "SoftwareProductName": "Loan Calculator ", - "SoftwareProductDescription": "Loan applications", - "LogoUri": "https://xlogical/products/loancalculator/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://xlogical/products/loancalculator", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://xlogical/products/loancalculator", - "RevocationUri": "https://xlogical/products/loancalculator/revocation", - "RedirectUris": "https://xlogical/products/loancalculator/cb", - "JwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", - "Scope": "openid profile bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "25ee528f-35ac-4a66-a67c-6166602c9322", + "softwareProductName": "Loan Calculator ", + "softwareProductDescription": "Loan applications", + "logoUri": "https://xlogical/products/loancalculator/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://xlogical/products/loancalculator", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://xlogical/products/loancalculator", + "revocationUri": "https://xlogical/products/loancalculator/revocation", + "redirectUris": "https://xlogical/products/loancalculator/cb", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1756,74 +1756,74 @@ ] }, { - "LegalEntityId": "f72ab707-a619-4dc1-a90b-177d61bcf574", - "LegalEntityName": "HotFinTech", - "LogoUri": "https://hotfintech/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "01944123445", - "Acn": "123412345", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR001002", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "f72ab707-a619-4dc1-a90b-177d61bcf574", + "legalEntityName": "HotFinTech", + "logoUri": "https://hotfintech/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "01944123445", + "acn": "123412345", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR001002", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "46b33515-b4a5-4b1c-b5b4-25654d675be6", - "BrandName": "HotFinTech", - "LogoUri": "https://hotfintech/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-05T11:58:00", - "SoftwareProducts": [ + "brandId": "46b33515-b4a5-4b1c-b5b4-25654d675be6", + "brandName": "HotFinTech", + "logoUri": "https://hotfintech/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-05T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "d3c44425-e003-4604-aa45-4137e45dfbc4", - "SoftwareProductName": "Pay advance", - "SoftwareProductDescription": "Buy first and pay later product", - "LogoUri": "https://hotfintech/products/payadvance/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://hotfintech/products/payadvance ", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://hotfintech/products/payadvance", - "RevocationUri": "https://hotfintech/products/payadvance/revocation", - "RedirectUris": "https://hotfintech/products/payadvance/redirect", - "JwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "d3c44425-e003-4604-aa45-4137e45dfbc4", + "softwareProductName": "Pay advance", + "softwareProductDescription": "Buy first and pay later product", + "logoUri": "https://hotfintech/products/payadvance/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://hotfintech/products/payadvance ", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://hotfintech/products/payadvance", + "revocationUri": "https://hotfintech/products/payadvance/revocation", + "redirectUris": "https://hotfintech/products/payadvance/redirect", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] }, { - "SoftwareProductId": "9926a894-cc29-4d63-b3b4-e404066ae6f2", - "SoftwareProductName": "Track sheet", - "SoftwareProductDescription": "Application to allow you to track your expenses", - "LogoUri": "https://hotfintech/products/tracksheet/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://hotfintech/products/tracksheet/", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://hotfintech/products/tracksheet", - "RevocationUri": "https://hotfintech/products/tracksheet/revoke", - "RedirectUris": "https://hotfintech/products/tracksheet/cb", - "JwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "9926a894-cc29-4d63-b3b4-e404066ae6f2", + "softwareProductName": "Track sheet", + "softwareProductDescription": "Application to allow you to track your expenses", + "logoUri": "https://hotfintech/products/tracksheet/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://hotfintech/products/tracksheet/", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://hotfintech/products/tracksheet", + "revocationUri": "https://hotfintech/products/tracksheet/revoke", + "redirectUris": "https://hotfintech/products/tracksheet/cb", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1834,74 +1834,74 @@ ] }, { - "LegalEntityId": "c70456f3-843f-4407-a988-577c108a7816", - "LegalEntityName": "ZeroFintech", - "LogoUri": "https://zerofintech/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "98765987654", - "Acn": "987659876", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR001004", - "AccreditationLevelId": 1, - "Participations": [ + "legalEntityId": "c70456f3-843f-4407-a988-577c108a7816", + "legalEntityName": "ZeroFintech", + "logoUri": "https://zerofintech/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "98765987654", + "acn": "987659876", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR001004", + "accreditationLevelId": 1, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "ebbcc2f2-817e-42b8-8a28-cd45902159e0", - "BrandName": "ZeroFintech", - "LogoUri": "https://zerofintech/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-05T11:58:00", - "SoftwareProducts": [ + "brandId": "ebbcc2f2-817e-42b8-8a28-cd45902159e0", + "brandName": "ZeroFintech", + "logoUri": "https://zerofintech/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-05T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "5d03d1a6-b83b-4176-a2f4-d0074a205695", - "SoftwareProductName": "Mortgage", - "SoftwareProductDescription": "calculate the mortgage value", - "LogoUri": "https://zerofintech/products/mortgage/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://zerofintech/products/mortgage", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://zerofintech/products/mortgage", - "RevocationUri": "https://zerofintech/products/mortgage/revocation", - "RedirectUris": "https://zerofintech/products/mortgage/cb", - "JwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "5d03d1a6-b83b-4176-a2f4-d0074a205695", + "softwareProductName": "Mortgage", + "softwareProductDescription": "calculate the mortgage value", + "logoUri": "https://zerofintech/products/mortgage/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://zerofintech/products/mortgage", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://zerofintech/products/mortgage", + "revocationUri": "https://zerofintech/products/mortgage/revocation", + "redirectUris": "https://zerofintech/products/mortgage/cb", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] }, { - "SoftwareProductId": "dafa09db-4433-4203-907a-bdf797c8cd21", - "SoftwareProductName": "Reward program", - "SoftwareProductDescription": "Application to allow you to track your expenses", - "LogoUri": "https://zerofintech//products/rewards/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://zerofintech/products/rewards", - "TosUri": null, - "PolicyUri": null, - "RecipientBaseUri": "https://zerofintech/products/rewards", - "RevocationUri": "https://hotfintech/products/rewards/revoke", - "RedirectUris": "https://zerofintech/products/rewards/cb", - "JwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "dafa09db-4433-4203-907a-bdf797c8cd21", + "softwareProductName": "Reward program", + "softwareProductDescription": "Application to allow you to track your expenses", + "logoUri": "https://zerofintech//products/rewards/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://zerofintech/products/rewards", + "tosUri": null, + "policyUri": null, + "recipientBaseUri": "https://zerofintech/products/rewards", + "revocationUri": "https://hotfintech/products/rewards/revoke", + "redirectUris": "https://zerofintech/products/rewards/cb", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } @@ -1912,52 +1912,52 @@ ] }, { - "LegalEntityId": "de815a93-85b3-4fe8-9513-33ad8f4359d0", - "LegalEntityName": "yoyo Software Company", - "LogoUri": "https://yoyosoftware/img/logo.png", - "RegistrationNumber": null, - "RegistrationDate": null, - "RegisteredCountry": null, - "Abn": "11222333444", - "Acn": "222333444", - "Arbn": null, - "AnzsicDivision": null, - "OrganisationTypeId": null, - "LegalEntityStatusId": 1, - "AccreditationNumber": "ADR000005", - "AccreditationLevelId": 0, - "Participations": [ + "legalEntityId": "de815a93-85b3-4fe8-9513-33ad8f4359d0", + "legalEntityName": "yoyo Software Company", + "logoUri": "https://yoyosoftware/img/logo.png", + "registrationNumber": null, + "registrationDate": null, + "registeredCountry": null, + "abn": "11222333444", + "acn": "222333444", + "arbn": null, + "anzsicDivision": null, + "organisationTypeId": null, + "legalEntityStatusId": 1, + "accreditationNumber": "ADR000005", + "accreditationLevelId": 0, + "participations": [ { - "ParticipationTypeId": 2, - "IndustryId": null, - "StatusId": 1, - "Brands": [ + "participationTypeId": 2, + "industryId": null, + "statusId": 1, + "brands": [ { - "BrandId": "f3f0c40b-9df8-491a-af1d-81cb9ab5f021", - "BrandName": "YoYo", - "LogoUri": "https://yoyosoftware/img/logo.png", - "BrandStatusId": 1, - "LastUpdated": "2021-04-06T11:58:00", - "SoftwareProducts": [ + "brandId": "f3f0c40b-9df8-491a-af1d-81cb9ab5f021", + "brandName": "YoYo", + "logoUri": "https://yoyosoftware/img/logo.png", + "brandStatusId": 1, + "lastUpdated": "2021-04-06T11:58:00", + "softwareProducts": [ { - "SoftwareProductId": "6f7a1b8e-8799-48a8-9011-e3920391f713", - "SoftwareProductName": "MyBudgetHelper", - "SoftwareProductDescription": "A product to help you manage your budget", - "LogoUri": "https://yoyosoftware/mybudgetapp/img/logo.png", - "SectorIdentifierUri": null, - "ClientUri": "https://yoyosoftware/mybudgetapp", - "TosUri": "https://yoyosoftware/mybudgetapp/terms", - "PolicyUri": "https://yoyosoftware/mybudgetapp/policy", - "RecipientBaseUri": "https://api.yoyosoftware/mybudgetapp", - "RevocationUri": "https://api.yoyosoftware/mybudgetapp/revoke", - "RedirectUris": "https://api.yoyosoftware/mybudgetapp/callback https://api.yoyosoftware/mybudgetapp/return", - "JwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", - "Scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", - "StatusId": 1, - "Certificates": [ + "softwareProductId": "6f7a1b8e-8799-48a8-9011-e3920391f713", + "softwareProductName": "MyBudgetHelper", + "softwareProductDescription": "A product to help you manage your budget", + "logoUri": "https://yoyosoftware/mybudgetapp/img/logo.png", + "sectorIdentifierUri": null, + "clientUri": "https://yoyosoftware/mybudgetapp", + "tosUri": "https://yoyosoftware/mybudgetapp/terms", + "policyUri": "https://yoyosoftware/mybudgetapp/policy", + "recipientBaseUri": "https://api.yoyosoftware/mybudgetapp", + "revocationUri": "https://api.yoyosoftware/mybudgetapp/revoke", + "redirectUris": "https://api.yoyosoftware/mybudgetapp/callback https://api.yoyosoftware/mybudgetapp/return", + "jwksUri": "https://localhost:7006/loopback/MockDataRecipientJwks", + "scope": "openid profile common:customer.basic:read common:customer.detail:read bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:regular_payments:read bank:payees:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:billing:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.der:read energy:electricity.usage:read cdr:registration", + "statusId": 1, + "certificates": [ { - "CommonName": "MockDataRecipient", - "Thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" + "commonName": "MockDataRecipient", + "thumbprint": "f0e5146a51f16e236844cf0353d791f11865e405" } ] } diff --git a/Source/CDR.Register.Admin.API/Extensions.cs b/Source/CDR.Register.Admin.API/Extensions/ErrorHandlingExtensions.cs similarity index 56% rename from Source/CDR.Register.Admin.API/Extensions.cs rename to Source/CDR.Register.Admin.API/Extensions/ErrorHandlingExtensions.cs index 5a444b7..c9f684d 100644 --- a/Source/CDR.Register.Admin.API/Extensions.cs +++ b/Source/CDR.Register.Admin.API/Extensions/ErrorHandlingExtensions.cs @@ -1,23 +1,17 @@ using CDR.Register.Admin.API.Business.Model; using CDR.Register.Admin.API.Business.Validators; using CDR.Register.API.Infrastructure.Models; +using CDR.Register.Domain.Models; using CDR.Register.Domain.ValueObjects; using System.Linq; -namespace CDR.Register.Admin.API +namespace CDR.Register.Admin.API.Extensions { - public static class Extensions + public static class ErrorHandlingExtensions { public static ResponseErrorList ToResponseErrorList(this BusinessRuleError businessRuleError) { - var responseErrorList = new ResponseErrorList(); - responseErrorList.Errors.Add(new Error - { - Code = businessRuleError.Code, - Detail = businessRuleError.Detail, - Title = businessRuleError.Title, - Meta = new object() - }); + var responseErrorList = new ResponseErrorList(businessRuleError.Code, businessRuleError.Title, businessRuleError.Detail); return responseErrorList; } @@ -28,12 +22,8 @@ public static ResponseErrorList GetValidationErrors(this LegalEntity legalEntity if (!result.IsValid) { - responseErrorList.Errors.AddRange(result.Errors.Select(error => new Error - { - Code = error.ErrorCode, - Title = error.ErrorMessage, - Detail = error.CustomState?.ToString() ?? error.PropertyName - })); + responseErrorList.Errors.AddRange(result.Errors.Select(error => + new Error(error.ErrorCode, error.ErrorMessage, error.CustomState?.ToString() ?? error.PropertyName))); } return responseErrorList; diff --git a/Source/CDR.Register.Admin.API/Extensions/ServiceCollectionExtensions.cs b/Source/CDR.Register.Admin.API/Extensions/ServiceCollectionExtensions.cs new file mode 100644 index 0000000..acc10e8 --- /dev/null +++ b/Source/CDR.Register.Admin.API/Extensions/ServiceCollectionExtensions.cs @@ -0,0 +1,65 @@ +using CDR.Register.Admin.API.Business; +using CDR.Register.API.Infrastructure.Filters; +using CDR.Register.Repository; +using CDR.Register.Repository.Infrastructure; +using Microsoft.AspNetCore.Authentication.JwtBearer; +using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.IdentityModel.Tokens; +using Constants = CDR.Register.Admin.API.Common.Constants; + +namespace CDR.Register.Admin.API.Extensions +{ + public static class ServiceCollectionExtensions + { + public static IServiceCollection AddRegisterAdmin(this IServiceCollection services, IConfiguration configuration) + { + services.AddScoped(); + services.AddScoped(); + services.AddSingleton(); + services.AddAutoMapper(typeof(Startup), typeof(RegisterDatabaseContext)); + services.AddTransient(); + + // This is to manage the EF database context through the web API DI. + // If this is to be done inside the repository project itself, we need to manage the context life-cycle explicitly. + services.AddDbContext(options => options.UseSqlServer(configuration.GetConnectionString("Register_DBO"))); + + return services; + } + + public static IServiceCollection AddRegisterAdminAuth(this IServiceCollection services, IConfiguration configuration) + { + var issuer = configuration.GetValue(Constants.Authorization.Issuer); + if (!string.IsNullOrEmpty(issuer)) + { + // ***Injecting Jwt bearer token middleware for CTS Authentication*** + var clientId = configuration.GetValue(Constants.Authorization.ClientId); + + services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) + .AddJwtBearer(options => + { + // Sets the authority to Azure AD. + options.Authority = issuer; + options.TokenValidationParameters = new TokenValidationParameters() + { + RequireSignedTokens = true, + + // Validates the issuer to be Azure AD. + ValidateIssuer = true, + ValidIssuer = issuer, + + // Validates that the intended audience for the access token is the API app. + ValidateAudience = true, + // the application id of the API App Registration. + ValidAudience = clientId, + + ValidateLifetime = true, + }; + }); + } + + return services; + } + } +} diff --git a/Source/CDR.Register.Admin.API/Program.cs b/Source/CDR.Register.Admin.API/Program.cs index 0830dc8..1182b10 100644 --- a/Source/CDR.Register.Admin.API/Program.cs +++ b/Source/CDR.Register.Admin.API/Program.cs @@ -3,7 +3,6 @@ using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Serilog; -using Serilog.Events; using System; using System.IO; @@ -22,8 +21,6 @@ public static int Main(string[] args) Log.Logger = new LoggerConfiguration() .ReadFrom.Configuration(configuration) - .MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning) - .MinimumLevel.Override("System", LogEventLevel.Information) .Enrich.FromLogContext() .Enrich.WithProcessId() .Enrich.WithProcessName() diff --git a/Source/CDR.Register.Admin.API/Startup.cs b/Source/CDR.Register.Admin.API/Startup.cs index 3c38c9c..de4e81b 100644 --- a/Source/CDR.Register.Admin.API/Startup.cs +++ b/Source/CDR.Register.Admin.API/Startup.cs @@ -1,5 +1,10 @@ -using CDR.Register.API.Infrastructure.Filters; +using CDR.Register.Admin.API.Business.Validators; +using CDR.Register.Admin.API.Extensions; +using CDR.Register.API.Infrastructure; +using CDR.Register.API.Infrastructure.Models; +using CDR.Register.API.Infrastructure.Versioning; using CDR.Register.Repository.Infrastructure; +using CDR.Register.Domain.Extensions; using FluentValidation; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Diagnostics.HealthChecks; @@ -13,26 +18,22 @@ using Microsoft.Extensions.Logging; using Newtonsoft.Json; using Serilog; +using System.IO; using System.Linq; using System.Threading.Tasks; -using CDR.Register.Admin.API.Business.Validators; -using CDR.Register.Repository; -using CDR.Register.Admin.API.Common; -using Microsoft.AspNetCore.Authentication.JwtBearer; -using Microsoft.IdentityModel.Tokens; -using Microsoft.AspNetCore.Mvc.Versioning; -using Microsoft.AspNetCore.Mvc; -using CDR.Register.Admin.API.Business.Model; -using CDR.Register.Admin.API.Business; +using static CDR.Register.API.Infrastructure.Constants; +using Constants = CDR.Register.Admin.API.Common.Constants; +using System; +using System.Net.Mime; namespace CDR.Register.Admin.API { - public class Startup + public partial class Startup { - static private bool healthCheckMigration = false; - static private string healthCheckMigrationMessage = null; - static private bool healthCheckSeedData = false; - static private string healthCheckSeedDataMessage = null; + private bool healthCheckMigration = false; + private string healthCheckMigrationMessage = string.Empty; + private bool healthCheckSeedData = false; + private string healthCheckSeedDataMessage = string.Empty; public IConfiguration Configuration { get; } @@ -48,57 +49,32 @@ public void ConfigureServices(IServiceCollection services) .AddCheck("migration", () => healthCheckMigration ? HealthCheckResult.Healthy(healthCheckMigrationMessage) : HealthCheckResult.Unhealthy(healthCheckMigrationMessage)) .AddCheck("seed-data", () => healthCheckSeedData ? HealthCheckResult.Healthy(healthCheckSeedDataMessage) : HealthCheckResult.Unhealthy(healthCheckSeedDataMessage)); + services.AddRegisterAdmin(Configuration); + services.AddRegisterAdminAuth(Configuration); + services.AddControllers(); services.AddApiVersioning(options => { - options.DefaultApiVersion = new ApiVersion(1, 0); - options.AssumeDefaultVersionWhenUnspecified = false; - options.ApiVersionReader = new HeaderApiVersionReader(Register.API.Infrastructure.Constants.Headers.X_V); + options.ApiVersionReader = new CdrVersionReader(new CdrApiOptions()); //uses default options atm + options.ErrorResponses = new ApiVersionErrorResponse(); options.ReportApiVersions = true; - options.ErrorResponses = new ErrorResponseVersion(); }); - services.AddValidatorsFromAssemblyContaining(); - - var issuer = Configuration.GetValue(Constants.Authorization.Issuer); - if (!string.IsNullOrEmpty(issuer)) + var enableSwagger = Configuration.GetValue(ConfigurationKeys.EnableSwagger); + if (enableSwagger) { - // ***Injecting Jwt bearer token middleware for CTS Authentication*** - var clientId = Configuration.GetValue(Constants.Authorization.ClientId); - - services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) - .AddJwtBearer(options => - { - // Sets the authority to Azure AD. - options.Authority = issuer; - options.TokenValidationParameters = new TokenValidationParameters() - { - RequireSignedTokens = true, - - // Validates the issuer to be Azure AD. - ValidateIssuer = true, - ValidIssuer = issuer, - - // Validates that the intended audience for the access token is the API app. - ValidateAudience = true, - // the application id of the API App Registration. - ValidAudience = clientId, - - ValidateLifetime = true, - }; - }); + var issuer = Configuration.GetValue(Constants.Authorization.Issuer); + services.AddCdrSwaggerGen(opt => + { + opt.SwaggerTitle = "Consumer Data Right (CDR) Participant Tooling - Mock Register - Admin API"; + opt.IncludeAuthentication = !string.IsNullOrEmpty(issuer); //authentication is included for CTS when the issuer is not empty + }); } - // This is to manage the EF database context through the web API DI. - // If this is to be done inside the repository project itself, we need to manage the context life-cycle explicitly. - services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString("Register_DBO"))); + services.AddMvc().AddCdrNewtonsoftJson(); - services.AddScoped(); - services.AddScoped(); - services.AddSingleton(); - services.AddAutoMapper(typeof(Startup), typeof(RegisterDatabaseContext)); - services.AddTransient(); + services.AddValidatorsFromAssemblyContaining(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. @@ -126,41 +102,56 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger< { app.UseAuthentication(); } - + app.UseAuthorization(); + var enableSwagger = Configuration.GetValue(ConfigurationKeys.EnableSwagger); + if (enableSwagger) + { + app.UseCdrSwagger(); + } + app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); // Migrate the database to the latest version during application startup. - using (var serviceScope = app.ApplicationServices.GetService().CreateScope()) + using var serviceScope = app.ApplicationServices.GetService()?.CreateScope(); + + if (serviceScope == null) { - // Run EF database migrations. - if (RunMigrations()) + logger.LogError("ServiceScope cannot be created"); + throw new InvalidOperationException("Service scope could not be created."); + } + // Run EF database migrations. + if (RunMigrations()) + { + healthCheckMigrationMessage = "Migration in progress"; + var context = serviceScope.ServiceProvider.GetRequiredService(); + if (context == null) { - healthCheckMigrationMessage = "Migration in progress"; - var context = serviceScope.ServiceProvider.GetRequiredService(); - context.Database.Migrate(); - healthCheckMigrationMessage = "Migration completed"; - - // Seed the database using the sample data JSON. - var seedDataFilePath = Configuration.GetValue("SeedData:FilePath"); - var seedDataOverwrite = Configuration.GetValue("SeedData:OverwriteExistingData", false); - if (!string.IsNullOrEmpty(seedDataFilePath)) - { - healthCheckSeedDataMessage = "Seeding of data in progress"; - logger.LogInformation("Seed data file found within configuration. Attempting to seed the repository from the seed data..."); - Task.Run(() => context.SeedDatabaseFromJsonFile(seedDataFilePath, logger, seedDataOverwrite)).Wait(); - healthCheckSeedDataMessage = "Seeding of data completed"; - } + logger.LogError("Mirgation failed. Unable to get {Name}", nameof(RegisterDatabaseContext)); + throw new InvalidOperationException($"Unable to get {nameof(RegisterDatabaseContext)}"); } + context?.Database.Migrate(); + healthCheckMigrationMessage = "Migration completed"; - // If we get here migration (if required) and seeding (if required) has completed - healthCheckMigration = true; - healthCheckSeedData = true; + // Seed the database using the sample data JSON. + var seedDataFilePath = Configuration.GetValue("SeedData:FilePath"); + var seedDataOverwrite = Configuration.GetValue("SeedData:OverwriteExistingData", false); + if (!string.IsNullOrEmpty(seedDataFilePath)) + { + healthCheckSeedDataMessage = "Seeding of data in progress"; + logger.LogInformation("Seed data file found within configuration. Attempting to seed the repository from the seed data..."); + Task.Run(() => context.SeedDatabaseFromJsonFile(seedDataFilePath, logger, seedDataOverwrite)).Wait(); + healthCheckSeedDataMessage = "Seeding of data completed"; + } } + + // If we get here migration (if required) and seeding (if required) has completed + healthCheckMigration = true; + healthCheckSeedData = true; } /// @@ -175,7 +166,7 @@ private bool RunMigrations() private static Task CustomResponseWriter(HttpContext context, HealthReport healthReport) { - context.Response.ContentType = "application/json"; + context.Response.ContentType = MediaTypeNames.Application.Json; var result = JsonConvert.SerializeObject(new { status = healthReport.Entries.Select(e => new diff --git a/Source/CDR.Register.Admin.API/appsettings.Release.json b/Source/CDR.Register.Admin.API/appsettings.Release.json index 2428b44..bf3ac07 100644 --- a/Source/CDR.Register.Admin.API/appsettings.Release.json +++ b/Source/CDR.Register.Admin.API/appsettings.Release.json @@ -1,7 +1,7 @@ { "ConnectionStrings": { - "Register_DBO": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True", - "Register_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True" + "Register_DBO": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True", + "Register_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True" }, "SeedData": { "FilePath": "Data/seed-data.Release.json", diff --git a/Source/CDR.Register.Admin.API/appsettings.json b/Source/CDR.Register.Admin.API/appsettings.json index bce8ecd..02136c9 100644 --- a/Source/CDR.Register.Admin.API/appsettings.json +++ b/Source/CDR.Register.Admin.API/appsettings.json @@ -1,4 +1,5 @@ { + "EnableSwagger": true, "Logging": { "LogLevel": { "Default": "Information", @@ -22,7 +23,7 @@ } }, "LoopbackDefaultSoftwareProductId": "6F7A1B8E-8799-48A8-9011-E3920391F713", - "SoftwareProductDefaultScopes": "openid profile bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.usage:read energy:electricity.der:read energy:accounts.basic:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:accounts.concessions:read energy:billing:read common:customer.basic:read common:customer.detail:read cdr:registration cdr-register:bank:read cdr-register:read", + "SoftwareProductDefaultScopes": "openid profile bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.usage:read energy:electricity.der:read energy:accounts.basic:read energy:accounts.basic:read energy:accounts.detail:read energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:accounts.concessions:read energy:billing:read common:customer.basic:read common:customer.detail:read cdr:registration cdr-register:read", "SigningCertificate": { "Path": "Certificates/ssa.pfx", "Password": "#M0ckRegister#" diff --git a/Source/CDR.Register.Discovery.API/Business/Responses/ResponseRegisterDataRecipientList.cs b/Source/CDR.Register.Discovery.API/Business/Responses/ResponseRegisterDataRecipientList.cs index 866922b..8bfa8cb 100644 --- a/Source/CDR.Register.Discovery.API/Business/Responses/ResponseRegisterDataRecipientList.cs +++ b/Source/CDR.Register.Discovery.API/Business/Responses/ResponseRegisterDataRecipientList.cs @@ -1,6 +1,7 @@ using System.Collections.Generic; using CDR.Register.API.Infrastructure.Models; using CDR.Register.Discovery.API.Business.Models; +using CDR.Register.Domain.Models; namespace CDR.Register.Discovery.API.Business.Responses { diff --git a/Source/CDR.Register.Discovery.API/CDR.Register.Discovery.API.csproj b/Source/CDR.Register.Discovery.API/CDR.Register.Discovery.API.csproj index 9a59659..a145e78 100644 --- a/Source/CDR.Register.Discovery.API/CDR.Register.Discovery.API.csproj +++ b/Source/CDR.Register.Discovery.API/CDR.Register.Discovery.API.csproj @@ -1,62 +1,57 @@  - - - net6.0 - 2f05af62-1878-47d5-925d-31c0db13b55c - Linux - 1.3.2 - 1.3.2 - 1.3.2 - - - - - - - - - - - - - - - - - - - - - - + + 2f05af62-1878-47d5-925d-31c0db13b55c + Linux + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) + True + ConsumerDataRight.ParticipantTooling.MockRegister.API.Discovery.xml + + + + + + + + + + + + + + + + + + - - - - Always - - - Always - true - PreserveNewest - - - Always - true - PreserveNewest - - - Always - - - - - - - + + + Always + + + Always + true + PreserveNewest + + + Always + true + PreserveNewest + + + Always + + + + + + @@ -65,5 +60,4 @@ Always - - + \ No newline at end of file diff --git a/Source/CDR.Register.Discovery.API/ConsumerDataRight.ParticipantTooling.MockRegister.API.Discovery.xml b/Source/CDR.Register.Discovery.API/ConsumerDataRight.ParticipantTooling.MockRegister.API.Discovery.xml new file mode 100644 index 0000000..0892b3d --- /dev/null +++ b/Source/CDR.Register.Discovery.API/ConsumerDataRight.ParticipantTooling.MockRegister.API.Discovery.xml @@ -0,0 +1,14 @@ + + + + CDR.Register.Discovery.API + + + + + Performs checks against the software product id from the access token. + + An ActionResult if there is an error to return, otherwise null if there are no issues. + + + diff --git a/Source/CDR.Register.Discovery.API/Controllers/DiscoveryController.cs b/Source/CDR.Register.Discovery.API/Controllers/DiscoveryController.cs index c673ee7..4ed7d81 100644 --- a/Source/CDR.Register.Discovery.API/Controllers/DiscoveryController.cs +++ b/Source/CDR.Register.Discovery.API/Controllers/DiscoveryController.cs @@ -1,9 +1,9 @@ using CDR.Register.API.Infrastructure; using CDR.Register.API.Infrastructure.Authorization; using CDR.Register.API.Infrastructure.Filters; -using CDR.Register.API.Infrastructure.Models; using CDR.Register.API.Infrastructure.Services; using CDR.Register.Discovery.API.Business; +using CDR.Register.Domain.Models; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; @@ -15,6 +15,8 @@ namespace CDR.Register.Discovery.API.Controllers { [Route("cdr-register")] [ApiController] + [Produces("application/json")] + [Consumes("application/json")] public class DiscoveryController : ControllerBase { private readonly IDiscoveryService _discoveryService; @@ -35,10 +37,11 @@ public DiscoveryController( _statusCheckService = statusCheckService; } - [PolicyAuthorize(AuthorisationPolicy.DataHolderBrandsApiMultiIndustry)] + [HttpGet("v1/{industry}/data-holders/brands", Name = ROUTE_GET_DATA_HOLDER_BRANDS_XV2)] - [ReturnXV("2")] + [PolicyAuthorize(RegisterAuthorisationPolicy.DataHolderBrandsApiMultiIndustry)] [ApiVersion("2")] + [ReturnXV("2")] [ETag] [CheckIndustry] [ServiceFilter(typeof(LogActionEntryAttribute))] @@ -109,7 +112,7 @@ private async Task CheckSoftwareProduct() var softwareProductIdAsGuid = GetSoftwareProductIdFromAccessToken(); if (softwareProductIdAsGuid == null) { - return new BadRequestObjectResult(new ResponseErrorList(ResponseErrorList.UnknownError())); + return new BadRequestObjectResult(new ResponseErrorList().AddUnexpectedError()); } // Check the status of the data recipient making the SSA request. diff --git a/Source/CDR.Register.Discovery.API/Extensions.cs b/Source/CDR.Register.Discovery.API/Extensions.cs deleted file mode 100644 index 5dd9288..0000000 --- a/Source/CDR.Register.Discovery.API/Extensions.cs +++ /dev/null @@ -1,52 +0,0 @@ -using CDR.Register.API.Infrastructure; -using CDR.Register.API.Infrastructure.Services; -using CDR.Register.Discovery.API.Business; -using CDR.Register.Repository.Interfaces; -using CDR.Register.Repository; -using MediatR; -using Microsoft.AspNetCore.Builder; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.OpenApi.Models; -using Newtonsoft.Json.Converters; - -namespace CDR.Register.Discovery.API -{ - public static class Extensions - { - public static IServiceCollection AddRegisterDiscovery(this IServiceCollection services, IConfiguration configuration) - { - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - - services.AddMediatR(typeof(Startup)); - - // Add Authentication and Authorization - services.AddAuthenticationAuthorization(configuration); - - return services; - } - - public static IServiceCollection AddRegisterDiscoverySwagger(this IServiceCollection services) - { - services.AddSwaggerGen(c => - { - c.SwaggerDoc("v1", new OpenApiInfo { Title = "CDR Register Discovery API", Version = "v1" }); - }); - - services.AddSwaggerGenNewtonsoftSupport(); - services.AddMvc().AddNewtonsoftJson(options => { options.SerializerSettings.Converters.Add(new StringEnumConverter()); }); - - return services; - } - - public static IApplicationBuilder UseRegisterDiscoverySwagger(this IApplicationBuilder app) - { - app.UseSwagger(); - app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "CDR Register Discovery API v1")); - - return app; - } - } -} diff --git a/Source/CDR.Register.Discovery.API/Extensions/ServiceCollectionExtensions.cs b/Source/CDR.Register.Discovery.API/Extensions/ServiceCollectionExtensions.cs new file mode 100644 index 0000000..ebea5b9 --- /dev/null +++ b/Source/CDR.Register.Discovery.API/Extensions/ServiceCollectionExtensions.cs @@ -0,0 +1,27 @@ +using CDR.Register.API.Infrastructure; +using CDR.Register.API.Infrastructure.Services; +using CDR.Register.Discovery.API.Business; +using CDR.Register.Repository; +using CDR.Register.Repository.Interfaces; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + +namespace CDR.Register.Discovery.API.Extensions +{ + public static class ServiceCollectionExtensions + { + public static IServiceCollection AddRegisterDiscovery(this IServiceCollection services, IConfiguration configuration) + { + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + + services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(Startup).Assembly)); + + // Add Authentication and Authorization + services.AddAuthenticationAuthorization(configuration); + + return services; + } + } +} diff --git a/Source/CDR.Register.Discovery.API/Program.cs b/Source/CDR.Register.Discovery.API/Program.cs index 87725b4..fc78034 100644 --- a/Source/CDR.Register.Discovery.API/Program.cs +++ b/Source/CDR.Register.Discovery.API/Program.cs @@ -1,12 +1,11 @@ -using System; -using System.Diagnostics; -using System.IO; using CDR.Register.API.Infrastructure; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Serilog; using Serilog.Events; +using System; +using System.IO; namespace CDR.Register.Discovery.API { @@ -22,9 +21,7 @@ public static int Main(string[] args) .Build(); Log.Logger = new LoggerConfiguration() - .ReadFrom.Configuration(configuration) - .MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning) - .MinimumLevel.Override("System", LogEventLevel.Information) + .ReadFrom.Configuration(configuration) .Enrich.FromLogContext() .Enrich.WithProcessId() .Enrich.WithProcessName() diff --git a/Source/CDR.Register.Discovery.API/Startup.cs b/Source/CDR.Register.Discovery.API/Startup.cs index a1e4451..d1482c7 100644 --- a/Source/CDR.Register.Discovery.API/Startup.cs +++ b/Source/CDR.Register.Discovery.API/Startup.cs @@ -4,15 +4,17 @@ using CDR.Register.API.Infrastructure.Models; using CDR.Register.API.Infrastructure.Versioning; using CDR.Register.API.Logger; +using CDR.Register.Discovery.API.Extensions; using CDR.Register.Repository.Infrastructure; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Serilog; +using static CDR.Register.API.Infrastructure.Constants; +using CDR.Register.Domain.Extensions; namespace CDR.Register.Discovery.API { @@ -23,15 +25,14 @@ public Startup(IConfiguration configuration) Configuration = configuration; } - public IConfiguration Configuration { get; } + public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); - services.AddRegisterDiscovery(Configuration) - .AddRegisterDiscoverySwagger(); + services.AddRegisterDiscovery(Configuration); services.AddControllers() .ConfigureApiBehaviorOptions(options => @@ -41,12 +42,22 @@ public void ConfigureServices(IServiceCollection services) services.AddApiVersioning(options => { - options.DefaultApiVersion = new ApiVersion(1, 0); - options.AssumeDefaultVersionWhenUnspecified = true; - options.ApiVersionSelector = new ApiVersionSelector(options); - options.ErrorResponses = new ErrorResponseVersion(); + options.ApiVersionReader = new CdrVersionReader(new CdrApiOptions()); //uses default options atm + options.ErrorResponses = new ApiVersionErrorResponse(); }); + var enableSwagger = Configuration.GetValue(ConfigurationKeys.EnableSwagger); + if (enableSwagger) + { + services.AddCdrSwaggerGen(opt => + { + opt.SwaggerTitle = "Consumer Data Right (CDR) Participant Tooling - Mock Register - Discovery API"; + opt.IncludeAuthentication = true; + }); + } + + services.AddMvc().AddCdrNewtonsoftJson(); + // This is to manage the EF database context through the web API DI. // If this is to be done inside the repository project itself, we need to manage the context life-cycle explicitly. services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString("Register_DB"))); @@ -66,7 +77,6 @@ public void ConfigureServices(IServiceCollection services) public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseMiddleware(); - app.UseExceptionHandler(exceptionHandlerApp => { exceptionHandlerApp.Run(async context => await ApiExceptionHandler.Handle(context)); @@ -76,8 +86,6 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) app.UseSerilogRequestLogging(); - app.UseRegisterDiscoverySwagger(); - app.UseHttpsRedirection(); app.UseRouting(); @@ -85,6 +93,12 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) app.UseAuthentication(); app.UseAuthorization(); + var enableSwagger = Configuration.GetValue(ConfigurationKeys.EnableSwagger); + if (enableSwagger) + { + app.UseCdrSwagger(); + } + app.UseEndpoints(endpoints => { endpoints.MapControllers(); diff --git a/Source/CDR.Register.Discovery.API/appsettings.Development.json b/Source/CDR.Register.Discovery.API/appsettings.Development.json index 1e5f89a..6858c69 100644 --- a/Source/CDR.Register.Discovery.API/appsettings.Development.json +++ b/Source/CDR.Register.Discovery.API/appsettings.Development.json @@ -206,8 +206,10 @@ ] }, "OidcMetadataAddress": "https://localhost:7002/idp/.well-known/openid-configuration", - "BasePath": "", + "BasePath": "", // BasePathExpression example: ^\/host\/[a-zA-Z0-9\-]{1,36}\/register\/(.*)$ "BasePathExpression": "", - "ClockSkewSeconds": 120 + "ClockSkewSeconds": 120, + "PublicHostName": "https://localhost:7000", + "SecureHostName": "https://localhost:7001" } \ No newline at end of file diff --git a/Source/CDR.Register.Discovery.API/appsettings.Release.json b/Source/CDR.Register.Discovery.API/appsettings.Release.json index 8b15f7c..bdc893c 100644 --- a/Source/CDR.Register.Discovery.API/appsettings.Release.json +++ b/Source/CDR.Register.Discovery.API/appsettings.Release.json @@ -1,8 +1,8 @@ { "ConnectionStrings": { - "Register_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True", - "Register_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True", - "Register_RequestResponse_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True" + "Register_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True", + "Register_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True", + "Register_RequestResponse_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True" }, "Serilog": { "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.MSSqlServer" ], diff --git a/Source/CDR.Register.Discovery.API/appsettings.json b/Source/CDR.Register.Discovery.API/appsettings.json index 8637e11..d933c53 100644 --- a/Source/CDR.Register.Discovery.API/appsettings.json +++ b/Source/CDR.Register.Discovery.API/appsettings.json @@ -1,4 +1,5 @@ { + "EnableSwagger": true, "Cache": { "ExpirationInSeconds": 20 }, @@ -20,5 +21,6 @@ } } } - } + }, + "EnableServerCertificateValidation": false } \ No newline at end of file diff --git a/Source/CDR.Register.Domain.UnitTests/CDR.Register.Domain.UnitTests.csproj b/Source/CDR.Register.Domain.UnitTests/CDR.Register.Domain.UnitTests.csproj index 69e94eb..996e56e 100644 --- a/Source/CDR.Register.Domain.UnitTests/CDR.Register.Domain.UnitTests.csproj +++ b/Source/CDR.Register.Domain.UnitTests/CDR.Register.Domain.UnitTests.csproj @@ -1,28 +1,24 @@  - - net6.0 + net8.0 false - 1.3.2 - 1.3.2 - 1.3.2 + 1.4.0 + 1.4.0 + 1.4.0 - - - - + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all - - - + \ No newline at end of file diff --git a/Source/CDR.Register.Domain/CDR.Register.Domain.csproj b/Source/CDR.Register.Domain/CDR.Register.Domain.csproj index e6ee1ce..0ff2078 100644 --- a/Source/CDR.Register.Domain/CDR.Register.Domain.csproj +++ b/Source/CDR.Register.Domain/CDR.Register.Domain.csproj @@ -1,16 +1,19 @@  - - net6.0 - 1.3.2 - 1.3.2 - 1.3.2 + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) - - - + + + + + + + \ No newline at end of file diff --git a/Source/CDR.Register.Domain/Constants.cs b/Source/CDR.Register.Domain/Constants.cs new file mode 100644 index 0000000..67c473e --- /dev/null +++ b/Source/CDR.Register.Domain/Constants.cs @@ -0,0 +1,87 @@ +namespace CDR.Register.Domain +{ + public static class Constants + { + public static class ErrorCodes + { + /// + /// The error codes in this class area defined by the CDR program (not CDS) + /// + public static class Generic + { + public const string UnsupportedGrantType = "unsupported_grant_type"; + public const string InvalidClient = "invalid_client"; + public const string InvalidRequest = "invalid_request"; + public const string InvalidRequestUri = "invalid_request_uri"; + public const string InvalidGrant = "invalid_grant"; + public const string AccessDenied = "access_denied"; + public const string InvalidRequestObject = "invalid_request_object"; + public const string UnauthorizedClient = "unauthorized_client"; + public const string UnsupportedResponseType = "unsupported_response_type"; + public const string InvalidScope = "invalid_scope"; + public const string InvalidRedirectUri = "invalid_redirect_uri"; + public const string InvalidClientMetadata = "invalid_client_metadata"; + public const string InvalidSoftwareStatement = "invalid_software_statement"; + public const string UnapprovedSoftwareStatement = "unapproved_software_statement"; + } + /// + /// The error codes in this class must match the definition in CDS + /// + public static class Cds + { + public const string MissingRequiredHeader = "urn:au-cds:error:cds-all:Header/Missing"; + public const string MissingRequiredField = "urn:au-cds:error:cds-all:Field/Missing"; + public const string InvalidField = "urn:au-cds:error:cds-all:Field/Invalid"; + public const string InvalidDateTime = "urn:au-cds:error:cds-all:Field/InvalidDateTime"; + public const string InvalidPageSize = "urn:au-cds:error:cds-all:Field/InvalidPageSize"; + public const string InvalidPage = "urn:au-cds:error:cds-all:Field/InvalidPage"; + public const string InvalidBrand = "urn:au-cds:error:cds-register:Field/InvalidBrand"; + public const string InvalidIndustry = "urn:au-cds:error:cds-register:Field/InvalidIndustry"; + public const string InvalidSoftwareProduct = "urn:au-cds:error:cds-register:Field/InvalidSoftwareProduct"; + public const string InvalidResource = "urn:au-cds:error:cds-all:Resource/Invalid"; + public const string InvalidHeader = "urn:au-cds:error:cds-all:Header/Invalid"; + public const string InvalidVersion = "urn:au-cds:error:cds-all:Header/InvalidVersion"; + public const string InvalidConsentArrangement = "urn:au-cds:error:cds-all:Authorisation/InvalidArrangement"; + public const string UnexpectedError = "urn:au-cds:error:cds-all:GeneralError/Unexpected"; + public const string ExpectedError = "urn:au-cds:error:cds-all:GeneralError/Expected"; + public const string ServiceUnavailable = "urn:au-cds:error:cds-all:Service/Unavailable"; + public const string AdrStatusNotActive = "urn:au-cds:error:cds-all:Authorisation/AdrStatusNotActive"; + public const string RevokedConsent = "urn:au-cds:error:cds-all:Authorisation/RevokedConsent"; + public const string InvalidConsent = "urn:au-cds:error:cds-all:Authorisation/InvalidConsent"; + public const string ResourceNotImplemented = "urn:au-cds:error:cds-all:Resource/NotImplemented"; + public const string ResourceNotFound = "urn:au-cds:error:cds-all:Resource/NotFound"; + public const string UnsupportedVersion = "urn:au-cds:error:cds-all:Header/UnsupportedVersion"; + public const string UnavailableResource = "urn:au-cds:error:cds-all:Resource/Unavailable"; + } + } + + public static class ErrorTitles + { + public const string MissingVersion = "Missing Version"; + public const string UnsupportedVersion = "Unsupported Version"; + public const string InvalidVersion = "Invalid Version"; + public const string ExpectedError = "Expected Error Encountered"; + public const string UnexpectedError = "Unexpected Error Encountered"; + public const string ServiceUnavailable = "Service Unavailable"; + public const string MissingRequiredField = "Missing Required Field"; + public const string MissingRequiredHeader = "Missing Required Header"; + public const string InvalidField = "Invalid Field"; + public const string InvalidHeader = "Invalid Header"; + public const string InvalidDate = "Invalid Date"; + public const string InvalidDateTime = "Invalid DateTime"; + public const string InvalidPageSize = "Invalid Page Size"; + public const string ADRStatusNotActive = "ADR Status Is Not Active"; + public const string RevokedConsent = "Consent Is Revoked"; + public const string InvalidConsent = "Consent Is Invalid"; + public const string ResourceNotImplemented = "Resource Not Implemented"; + public const string ResourceNotFound = "Resource Not Found"; + public const string InvalidConsentArrangement = "Invalid Consent Arrangement"; + public const string InvalidPage = "Invalid Page"; + public const string InvalidResource = "Invalid Resource"; + public const string UnavailableResource = "Unavailable Resource"; + public const string InvalidBrand = "Invalid Brand"; + public const string InvalidIndustry = "Invalid Industry"; + public const string InvalidSoftwareProduct = "Invalid Software Product"; + } + } +} diff --git a/Source/CDR.Register.Domain/Entities/DataHolder.cs b/Source/CDR.Register.Domain/Entities/DataHolder.cs index 2aefb97..ed0f034 100644 --- a/Source/CDR.Register.Domain/Entities/DataHolder.cs +++ b/Source/CDR.Register.Domain/Entities/DataHolder.cs @@ -25,7 +25,7 @@ public DateTime? LastUpdated } } - public enum IndustryEnum + public enum Industry { All = 0, Banking, @@ -33,7 +33,7 @@ public enum IndustryEnum Telco } - public enum DhParticipationStatusEnum + public enum DhParticipationStatus { Unknown = 0, Active = 1, diff --git a/Source/CDR.Register.Domain/Entities/DataHolderAuthentication.cs b/Source/CDR.Register.Domain/Entities/DataHolderAuthentication.cs index e4ccd1c..1459e39 100644 --- a/Source/CDR.Register.Domain/Entities/DataHolderAuthentication.cs +++ b/Source/CDR.Register.Domain/Entities/DataHolderAuthentication.cs @@ -6,7 +6,7 @@ public class DataHolderAuthentication public string JwksEndpoint { get; set; } } - public enum RegisterUTypeEnum + public enum RegisterUType { Unknown = 0, SignedJwt = 1 diff --git a/Source/CDR.Register.Domain/Entities/DataHolderLegalEntity.cs b/Source/CDR.Register.Domain/Entities/DataHolderLegalEntity.cs index e5c3fcc..6c21b2f 100644 --- a/Source/CDR.Register.Domain/Entities/DataHolderLegalEntity.cs +++ b/Source/CDR.Register.Domain/Entities/DataHolderLegalEntity.cs @@ -20,14 +20,14 @@ public class DataHolderLegalEntity public string Status { get; set; } } - public enum DhStatusEnum + public enum DhStatus { Active = 1, Removed = 2, Inactive = 6 } - public enum OrganisationTypeEnum + public enum OrganisationType { Unknown = 0, SoleTrader = 1, diff --git a/Source/CDR.Register.Domain/Extensions/MvcBuilderExtensions.cs b/Source/CDR.Register.Domain/Extensions/MvcBuilderExtensions.cs new file mode 100644 index 0000000..a33ec1c --- /dev/null +++ b/Source/CDR.Register.Domain/Extensions/MvcBuilderExtensions.cs @@ -0,0 +1,25 @@ +using CDR.Register.Domain.Models; +using Microsoft.Extensions.DependencyInjection; +using Newtonsoft.Json; + +namespace CDR.Register.Domain.Extensions +{ + public static class MvcBuilderExtensions + { + public static IMvcBuilder AddCdrNewtonsoftJson(this IMvcBuilder mvcBuilder) + { + var defaultSettings = new CdrJsonSerializerSettings(); + JsonConvert.DefaultSettings = () => defaultSettings; + + return mvcBuilder.AddNewtonsoftJson(options => + { + options.SerializerSettings.ContractResolver = defaultSettings.ContractResolver; + options.SerializerSettings.DefaultValueHandling = defaultSettings.DefaultValueHandling; + options.SerializerSettings.NullValueHandling = defaultSettings.NullValueHandling; + options.SerializerSettings.Formatting = defaultSettings.Formatting; + options.SerializerSettings.Converters = defaultSettings.Converters; + } + ); + } + } +} diff --git a/Source/CDR.Register.Domain/Extensions/StringExtensions.cs b/Source/CDR.Register.Domain/Extensions/StringExtensions.cs new file mode 100644 index 0000000..34a1cad --- /dev/null +++ b/Source/CDR.Register.Domain/Extensions/StringExtensions.cs @@ -0,0 +1,32 @@ +using System; +using System.Globalization; + +namespace CDR.Register.Domain.Extensions +{ + public static class StringExtensions + { + public static bool IsNullOrWhiteSpace(this string str) + { + return string.IsNullOrWhiteSpace(str); + } + + public static bool TryParseToDateTime(this string stringDateTime, out DateTime? dateTime) + { + dateTime = default; + + if (stringDateTime.IsNullOrWhiteSpace()) + { + return false; + } + + var provider = new CultureInfo("en-US"); + if (DateTime.TryParse(stringDateTime, provider, DateTimeStyles.None, out var parsedDate)) + { + dateTime = parsedDate; + return true; + } + + return false; + } + } +} diff --git a/Source/CDR.Register.Domain/Models/CdrJsonSerializerSettings.cs b/Source/CDR.Register.Domain/Models/CdrJsonSerializerSettings.cs new file mode 100644 index 0000000..c8c3ff7 --- /dev/null +++ b/Source/CDR.Register.Domain/Models/CdrJsonSerializerSettings.cs @@ -0,0 +1,19 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Serialization; +using System.Collections.Generic; + +namespace CDR.Register.Domain.Models +{ + public class CdrJsonSerializerSettings : JsonSerializerSettings + { + public CdrJsonSerializerSettings() : base() + { + ContractResolver = new CamelCasePropertyNamesContractResolver(); + DefaultValueHandling = DefaultValueHandling.Include; + NullValueHandling = NullValueHandling.Ignore; + Formatting = Formatting.Indented; + Converters = new List() { new StringEnumConverter() }; + } + } +} diff --git a/Source/CDR.Register.API.Infrastructure/Models/Error.cs b/Source/CDR.Register.Domain/Models/Error.cs similarity index 51% rename from Source/CDR.Register.API.Infrastructure/Models/Error.cs rename to Source/CDR.Register.Domain/Models/Error.cs index 945bc5c..67daed7 100644 --- a/Source/CDR.Register.API.Infrastructure/Models/Error.cs +++ b/Source/CDR.Register.Domain/Models/Error.cs @@ -1,19 +1,27 @@ -using System.ComponentModel.DataAnnotations; +using CDR.Register.Domain.Extensions; +using System.ComponentModel.DataAnnotations; -namespace CDR.Register.API.Infrastructure.Models +namespace CDR.Register.Domain.Models { public class Error { public Error() { - this.Meta = new object(); } - public Error(string code, string title, string detail) : this() + public Error(string code, string title, string detail) { - this.Code = code; - this.Title = title; - this.Detail = detail; + Code = code; + Title = title; + Detail = detail; + } + + public Error(string code, string title, string detail, string metaUrn) + { + Code = code; + Title = title; + Detail = detail; + Meta = metaUrn.IsNullOrWhiteSpace() ? null : new MetaError(metaUrn); } /// @@ -37,6 +45,6 @@ public Error(string code, string title, string detail) : this() /// /// Optional additional data for specific error types /// - public object Meta { get; set; } + public MetaError Meta { get; set; } } } diff --git a/Source/CDR.Register.Domain/Models/Meta.cs b/Source/CDR.Register.Domain/Models/Meta.cs new file mode 100644 index 0000000..2d7268a --- /dev/null +++ b/Source/CDR.Register.Domain/Models/Meta.cs @@ -0,0 +1,7 @@ +namespace CDR.Register.Domain.Models +{ + [System.Diagnostics.CodeAnalysis.SuppressMessage("SonarAnalyzer", "S2094:Remove this empty class, write its code or make it an \"interface\".", Justification = "Empty class")] + public class Meta + { + } +} diff --git a/Source/CDR.Register.Domain/Models/MetaError.cs b/Source/CDR.Register.Domain/Models/MetaError.cs new file mode 100644 index 0000000..809e353 --- /dev/null +++ b/Source/CDR.Register.Domain/Models/MetaError.cs @@ -0,0 +1,12 @@ +namespace CDR.Register.Domain.Models +{ + public class MetaError + { + public MetaError(string urn) + { + Urn = urn; + } + + public string Urn { get; set; } + } +} diff --git a/Source/CDR.Register.Domain/Models/ResponseErrorList.cs b/Source/CDR.Register.Domain/Models/ResponseErrorList.cs new file mode 100644 index 0000000..1d33bbb --- /dev/null +++ b/Source/CDR.Register.Domain/Models/ResponseErrorList.cs @@ -0,0 +1,163 @@ +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; +using System.Linq; + +namespace CDR.Register.Domain.Models +{ + public class ResponseErrorList + { + [Required] + public List Errors { get; set; } + + public bool HasErrors() + { + return Errors != null && Errors.Count > 0; + } + + public ResponseErrorList() + { + Errors = []; + } + + public ResponseErrorList(Error error) + { + Errors = [error]; + } + + public ResponseErrorList(string errorCode, string errorTitle, string errorDetail) + { + var error = new Error(errorCode, errorTitle, errorDetail); + Errors = [error]; + } + + /// + /// Add unexpected error to the response error list + /// + public ResponseErrorList AddUnexpectedError(string message) + { + Errors.Add(new Error(Constants.ErrorCodes.Cds.UnexpectedError, Constants.ErrorTitles.UnexpectedError, message)); + return this; + } + + public ResponseErrorList AddUnexpectedError() + { + Errors.Add(new Error(Constants.ErrorCodes.Cds.UnexpectedError, Constants.ErrorTitles.UnexpectedError, "An unexpected exception occurred while processing the request.")); + return this; + } + + /// + /// Add invalid industry error to the response error list + /// + public ResponseErrorList AddInvalidIndustry() + { + Errors.Add(new Error(Constants.ErrorCodes.Cds.InvalidField, Constants.ErrorTitles.InvalidField, "industry")); + return this; + } + + // Return Unsupported Version + public ResponseErrorList AddInvalidXVUnsupportedVersion() + { + Errors.Add(new Error(Constants.ErrorCodes.Cds.UnsupportedVersion, Constants.ErrorTitles.UnsupportedVersion, "Requested version is lower than the minimum version or greater than maximum version.")); + return this; + } + + // Return Invalid Version + public ResponseErrorList AddInvalidXVInvalidVersion() + { + Errors.Add(new Error(Constants.ErrorCodes.Cds.InvalidVersion, Constants.ErrorTitles.InvalidVersion, "Version is not a positive Integer.")); + return this; + } + + public ResponseErrorList AddInvalidXVMissingRequiredHeader() + { + Errors.Add(new Error(Constants.ErrorCodes.Cds.MissingRequiredHeader, Constants.ErrorTitles.MissingRequiredHeader, "An API version x-v header is required, but was not specified.")); + return this; + } + + public ResponseErrorList AddInvalidConsentArrangement(string arrangementId) + { + Errors.Add(new Error(Constants.ErrorCodes.Cds.InvalidConsentArrangement, Constants.ErrorTitles.InvalidConsentArrangement, arrangementId)); + return this; + } + + public ResponseErrorList AddMissingRequiredHeader(string headerName) + { + Errors.Add(new Error(Constants.ErrorCodes.Cds.MissingRequiredHeader, Constants.ErrorTitles.MissingRequiredHeader, headerName)); + return this; + } + + public ResponseErrorList AddMissingRequiredField(string headerName) + { + Errors.Add(new Error(Constants.ErrorCodes.Cds.MissingRequiredField, Constants.ErrorTitles.MissingRequiredField, headerName)); + return this; + } + + public ResponseErrorList AddInvalidField(string fieldName) + { + Errors.Add(new Error(Constants.ErrorCodes.Cds.InvalidField, Constants.ErrorTitles.InvalidField, fieldName)); + return this; + } + + public ResponseErrorList AddInvalidHeader(string headerName) + { + Errors.Add(new Error(Constants.ErrorCodes.Cds.InvalidHeader, Constants.ErrorTitles.InvalidHeader, headerName)); + return this; + } + + public ResponseErrorList AddInvalidDateTime() + { + Errors.Add(new Error(Constants.ErrorCodes.Cds.InvalidDateTime, Constants.ErrorTitles.InvalidDateTime, "{0} should be valid DateTimeString")); + return this; + } + + public static Error InvalidDateTime() + { + return new Error(Constants.ErrorCodes.Cds.InvalidDateTime, Constants.ErrorTitles.InvalidDateTime, "{0} should be valid DateTimeString"); + } + + public static Error InvalidPageSize() //Should be looked at compared to CDS + { + return new Error(Constants.ErrorCodes.Cds.InvalidPageSize, Constants.ErrorTitles.InvalidPageSize, "Page size not a positive Integer"); + } + + public static Error PageSizeTooLarge() //Should be looked at compared to CDS + { + return new Error(Constants.ErrorCodes.Cds.InvalidField, Constants.ErrorTitles.InvalidField, "Page size too large"); + } + + public static Error InvalidPage() //Should be looked at compared to CDS + { + return new Error(Constants.ErrorCodes.Cds.InvalidField, Constants.ErrorTitles.InvalidField, "Page not a positive integer"); + } + + public static Error PageOutOfRange() //Should be looked at compared to CDS + { + return new Error(Constants.ErrorCodes.Cds.InvalidField, Constants.ErrorTitles.InvalidField, "Page is out of range"); + } + + public static Error DataRecipientParticipationNotActive() + { + return new Error(Constants.ErrorCodes.Cds.AdrStatusNotActive, Constants.ErrorTitles.ADRStatusNotActive, string.Empty); + } + + public static Error DataRecipientSoftwareProductNotActive() + { + return new Error(Constants.ErrorCodes.Cds.AdrStatusNotActive, Constants.ErrorTitles.ADRStatusNotActive, string.Empty); + } + + public static Error InvalidResource(string softwareProductId) + { + return new Error(Constants.ErrorCodes.Cds.InvalidResource, Constants.ErrorTitles.InvalidResource, softwareProductId); + } + + public static Error InvalidSoftwareProduct(string softwareProductId) + { + return new Error(Constants.ErrorCodes.Cds.InvalidSoftwareProduct, Constants.ErrorTitles.InvalidSoftwareProduct, softwareProductId); + } + + public static Error NotFound() + { + return new Error(Constants.ErrorCodes.Cds.ResourceNotFound, Constants.ErrorTitles.ResourceNotFound, string.Empty); + } + } +} diff --git a/Source/CDR.Register.Domain/ValueObjects/BusinessRuleError.cs b/Source/CDR.Register.Domain/ValueObjects/BusinessRuleError.cs index ec742c5..1b94df2 100644 --- a/Source/CDR.Register.Domain/ValueObjects/BusinessRuleError.cs +++ b/Source/CDR.Register.Domain/ValueObjects/BusinessRuleError.cs @@ -1,23 +1,16 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace CDR.Register.Domain.ValueObjects +namespace CDR.Register.Domain.ValueObjects { public class BusinessRuleError { - public string Title { get; set; } public string Code { get; set; } - + public string Title { get; set; } public string Detail { get; set; } - public BusinessRuleError(string errorTitle, string errorCode, string errorDetail) + public BusinessRuleError(string errorCode, string errorTitle, string errorDetail) { - Title = errorTitle; Code = errorCode; - Detail=errorDetail; + Title = errorTitle; + Detail = errorDetail; } } } diff --git a/Source/CDR.Register.Infosec/CDR.Register.Infosec.csproj b/Source/CDR.Register.Infosec/CDR.Register.Infosec.csproj index 42a009a..c31a050 100644 --- a/Source/CDR.Register.Infosec/CDR.Register.Infosec.csproj +++ b/Source/CDR.Register.Infosec/CDR.Register.Infosec.csproj @@ -1,45 +1,43 @@  - - - net6.0 - enable - enable - 1.3.2 - 1.3.2 - 1.3.2 - - - - - - - - - - Always - - - Always - - - - - - - - - - - - - - - - - - - - - - - + + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) + enable + enable + True + ConsumerDataRight.ParticipantTooling.MockRegister.API.Infosec.xml + + + + + + + + Always + + + Always + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/CDR.Register.Infosec/Constants.cs b/Source/CDR.Register.Infosec/Constants.cs index 3020590..0aa8c29 100644 --- a/Source/CDR.Register.Infosec/Constants.cs +++ b/Source/CDR.Register.Infosec/Constants.cs @@ -5,7 +5,6 @@ public static class Constants public static class Scopes { public const string RegisterRead = "cdr-register:read"; - public const string RegisterBankRead = "cdr-register:bank:read"; } public static class ConnectionStringNames diff --git a/Source/CDR.Register.Infosec/ConsumerDataRight.ParticipantTooling.MockRegister.API.Infosec.xml b/Source/CDR.Register.Infosec/ConsumerDataRight.ParticipantTooling.MockRegister.API.Infosec.xml new file mode 100644 index 0000000..da8428a --- /dev/null +++ b/Source/CDR.Register.Infosec/ConsumerDataRight.ParticipantTooling.MockRegister.API.Infosec.xml @@ -0,0 +1,16 @@ + + + + CDR.Register.Infosec + + + + + + + client_id (form param) when provided and must match client assertion issuer and subject + clientAssertion + + + + diff --git a/Source/CDR.Register.Infosec/Controllers/DiscoveryController.cs b/Source/CDR.Register.Infosec/Controllers/DiscoveryController.cs index 223c149..f29abdd 100644 --- a/Source/CDR.Register.Infosec/Controllers/DiscoveryController.cs +++ b/Source/CDR.Register.Infosec/Controllers/DiscoveryController.cs @@ -31,11 +31,12 @@ public DiscoveryDocument Get() Issuer = $"{baseUrl}", JwksUri = $"{baseUrl}/.well-known/openid-configuration/jwks", TokenEndpoint = $"{secureBaseUrl}/connect/token", - ClaimsSupported = new string[] { "sub" }, - GrantTypesSupported = new string[] { "client_credentials" }, - IdTokenSigningAlgValuesSupported = new string[] { "PS256" }, - ResponseTypesSupported = new string[] { "token" }, - ScopesSupported = new string[] { "cdr-register:bank:read", "cdr-register:read" }, + ClaimsSupported = ["sub"], + GrantTypesSupported = ["client_credentials"], + IdTokenSigningAlgValuesSupported = ["PS256"], + ResponseTypesSupported = ["token"], + ScopesSupported = new string[] { "cdr-register:read" }, + CodeChallengeMethodsSupported = new string[] { "plain", "S256" }, SubjectTypesSupported = new string[] { "public" }, TlsClientCertificateBoundAccessTokens = true, TokenEndpointAuthMethodsSupported = new string[] { "private_key_jwt" }, @@ -47,7 +48,7 @@ public DiscoveryDocument Get() [Route("openid-configuration/jwks")] public API.Infrastructure.Models.JsonWebKeySet? GetJwks() { - var cert = new X509Certificate2(_configuration.GetValue("SigningCertificate:Path"), _configuration.GetValue("SigningCertificate:Password"), X509KeyStorageFlags.Exportable); + var cert = new X509Certificate2(_configuration.GetValue("SigningCertificate:Path") ?? "", _configuration.GetValue("SigningCertificate:Password"), X509KeyStorageFlags.Exportable); var cert64 = Convert.ToBase64String(cert.RawData); var signingCredentials = new X509SigningCredentials(cert, SecurityAlgorithms.RsaSsaPssSha256); var thumbprint = Base64Url.Encode(cert.GetCertHash()); @@ -56,13 +57,13 @@ public DiscoveryDocument Get() if (rsa != null) { var parameters = rsa.ExportParameters(false); - var exponent = Base64Url.Encode(parameters.Exponent); - var modulus = Base64Url.Encode(parameters.Modulus); + var exponent = Base64Url.Encode(parameters.Exponent ?? []); + var modulus = Base64Url.Encode(parameters.Modulus ?? []); var jwks = new API.Infrastructure.Models.JsonWebKeySet { - keys = new[] - { + keys = + [ new API.Infrastructure.Models.JsonWebKey { kty = "RSA", @@ -71,10 +72,10 @@ public DiscoveryDocument Get() x5t = thumbprint, e = exponent, n = modulus, - x5c = new[] { cert64 }, + x5c = [cert64], alg = "PS256" } - } + ] }; return jwks; } diff --git a/Source/CDR.Register.Infosec/Controllers/TokenController.cs b/Source/CDR.Register.Infosec/Controllers/TokenController.cs index 6f7f9f2..5917e3a 100644 --- a/Source/CDR.Register.Infosec/Controllers/TokenController.cs +++ b/Source/CDR.Register.Infosec/Controllers/TokenController.cs @@ -2,8 +2,10 @@ using CDR.Register.Domain.Entities; using CDR.Register.Infosec.Interfaces; using CDR.Register.Infosec.Models; +using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Mvc; using System.IdentityModel.Tokens.Jwt; +using static CDR.Register.Domain.Constants; namespace CDR.Register.Infosec.Controllers { @@ -11,7 +13,7 @@ namespace CDR.Register.Infosec.Controllers public class TokenController : ControllerBase { private readonly ILogger _logger; - private readonly IConfiguration _configuration; + private readonly IConfiguration _configuration; private readonly ITokenService _tokenService; public TokenController( @@ -21,7 +23,7 @@ public TokenController( ITokenService tokenService) { _logger = logger; - _configuration = configuration; + _configuration = configuration; _tokenService = tokenService; } @@ -30,22 +32,22 @@ public TokenController( public async Task GetAccessToken([FromForm] ClientAssertionRequest clientAssertion) { var (isValid, error, errorDescription, client) = await Validate(clientAssertion, this.Request); - if (!isValid) + if (!isValid || client == null) { return BadRequest(new ErrorResponse() { Error = error, ErrorDescription = errorDescription }); } var expiry = _configuration.GetValue("AccessTokenExpiryInSeconds", 300); - var defaultScope = _configuration.GetValue("DefaultScope", $"{Constants.Scopes.RegisterRead} {Constants.Scopes.RegisterBankRead}"); + var defaultScope = _configuration.GetValue("DefaultScope") ?? $"{Constants.Scopes.RegisterRead}"; var scope = clientAssertion.scope ?? defaultScope; - var cnf = this.HttpContext.GetClientCertificateThumbprint(_configuration); + var cnf = HttpContext.GetClientCertificateThumbprint(_configuration); return Ok(new AccessTokenResponse() { AccessToken = await _tokenService.CreateAccessToken(client, expiry, scope, cnf), ExpiresIn = expiry, Scope = scope, - TokenType = "Bearer" + TokenType = JwtBearerDefaults.AuthenticationScheme }); } @@ -57,97 +59,128 @@ public async Task GetAccessToken([FromForm] ClientAssertionReques } // Basic validation. - if (string.IsNullOrEmpty(clientAssertion.grant_type)) + var basicValidationResult = ValidateBasicParameters(clientAssertion); + if (!basicValidationResult.isValid) { - return (false, "invalid_client", "grant_type not provided", null); + return basicValidationResult; } - if (string.IsNullOrEmpty(clientAssertion.client_assertion)) + // Grant type needs to be client_credentials. + if (clientAssertion.grant_type!= null && !clientAssertion.grant_type.Equals("client_credentials", StringComparison.OrdinalIgnoreCase)) { - return (false, "invalid_client", "client_assertion not provided", null); + return (false, "unsupported_grant_type", "grant_type must be client_credentials", null); } - if (string.IsNullOrEmpty(clientAssertion.client_assertion_type)) + // Client assertion type needs to be urn:ietf:params:oauth:client-assertion-type:jwt-bearer. + if (clientAssertion.client_assertion_type != null && !clientAssertion.client_assertion_type.Equals("urn:ietf:params:oauth:client-assertion-type:jwt-bearer", StringComparison.OrdinalIgnoreCase)) { - return (false, "invalid_client", "client_assertion_type not provided", null); + return (false, ErrorCodes.Generic.InvalidClient, "client_assertion_type must be urn:ietf:params:oauth:client-assertion-type:jwt-bearer", null); } - // Grant type needs to be client_credentials. - if (!clientAssertion.grant_type.Equals("client_credentials", StringComparison.OrdinalIgnoreCase)) + // If scope is provided it must include "cdr-register:read" + var scopeValidationResult = ValidateScope(clientAssertion.scope, request); + if (!scopeValidationResult.isValid) { - return (false, "unsupported_grant_type", "grant_type must be client_credentials", null); + return scopeValidationResult; } - // Client assertion type needs to be urn:ietf:params:oauth:client-assertion-type:jwt-bearer. - if (!clientAssertion.client_assertion_type.Equals("urn:ietf:params:oauth:client-assertion-type:jwt-bearer", StringComparison.OrdinalIgnoreCase)) + // Code changes for client id optional + // The issuer of the client assertion is the client_id of the calling data recipient. + // Need to extract the client_id (iss) from client assertion to load the client details. + var tokenValidationResult = ValidateClientAssertionToken(clientAssertion.client_assertion); + if (!tokenValidationResult.isValid) { - return (false, "invalid_client", "client_assertion_type must be urn:ietf:params:oauth:client-assertion-type:jwt-bearer", null); + return tokenValidationResult; } - // If scope is provided it must include "cdr-register:bank:read" or "cdr-register:read" - if (clientAssertion.scope != null) - { - if (clientAssertion.scope.Trim().Length == 0) - { - return (false, "invalid_client", $"empty scope", null); - } + // Validate the client assertion. + var clientAssertionResult = await _tokenService.ValidateClientAssertion(clientAssertion.client_id ?? "", clientAssertion.client_assertion ?? ""); - var scopes = clientAssertion.scope.Split(' '); + if (!clientAssertionResult.isValid) + { + return (false, ErrorCodes.Generic.InvalidClient, clientAssertionResult.message, null); + } - foreach (var scope in scopes) - { - if (!scope.Equals(Constants.Scopes.RegisterRead) && !scope.Equals(Constants.Scopes.RegisterBankRead)) - { - return (false, "invalid_client", $"invalid scope", null); - } - } + var client = clientAssertionResult.client; + if (client == null) + { + return (false, ErrorCodes.Generic.InvalidClient, "invalid client_id", null); } - else + + if (!IsValidCertificate(client)) { - if (request.Form.ContainsKey("scope")) - { - return (false, "invalid_client", $"empty scope", null); - } + return (false, ErrorCodes.Generic.InvalidClient, "Client certificate validation failed", null); } - // Code changes for client id optional - // The issuer of the client assertion is the client_id of the calling data recipient. - // Need to extract the client_id (iss) from client assertion to load the client details. - var handler = new JwtSecurityTokenHandler(); + return (true, null, null, client); + } - if (!handler.CanReadToken(clientAssertion.client_assertion)) + private (bool isValid, string? error, string? errorDescription, SoftwareProductInfosec? client) ValidateBasicParameters(ClientAssertionRequest clientAssertion) + { + if (string.IsNullOrEmpty(clientAssertion.grant_type)) { - return (false, "invalid_client", "Invalid client_assertion - token validation error", null); + return (false, ErrorCodes.Generic.InvalidClient, "grant_type not provided", null); } - var token = handler.ReadJwtToken(clientAssertion.client_assertion); - if (token == null) + if (string.IsNullOrEmpty(clientAssertion.client_assertion)) { - return (false, "invalid_client", "Invalid client_assertion - token validation error", null); + return (false, ErrorCodes.Generic.InvalidClient, "client_assertion not provided", null); } - // Validate the client assertion. - var clientAssertionResult = await _tokenService.ValidateClientAssertion(clientAssertion.client_id, clientAssertion.client_assertion); + if (string.IsNullOrEmpty(clientAssertion.client_assertion_type)) + { + return (false, ErrorCodes.Generic.InvalidClient, "client_assertion_type not provided", null); + } - if (!clientAssertionResult.isValid) + return (true, null, null, null); + } + + private (bool isValid, string? error, string? errorDescription, SoftwareProductInfosec? client) ValidateScope(string? scope, HttpRequest request) + { + if (scope != null) + { + if (scope.Trim().Length == 0) + { + return (false, ErrorCodes.Generic.InvalidClient, "empty scope", null); + } + + var scopes = scope.Split(' '); + foreach (var s in scopes) + { + if (!s.Equals(Constants.Scopes.RegisterRead)) + { + return (false, ErrorCodes.Generic.InvalidClient, "invalid scope", null); + } + } + } + else if (request.Form.ContainsKey("scope")) { - return (false, "invalid_client", clientAssertionResult.message, null); + return (false, ErrorCodes.Generic.InvalidClient, "empty scope", null); } - var client = clientAssertionResult.client; - if (client == null) + return (true, null, null, null); + } + + private (bool isValid, string? error, string? errorDescription, SoftwareProductInfosec? client) ValidateClientAssertionToken(string? clientAssertion) + { + var handler = new JwtSecurityTokenHandler(); + + if (clientAssertion == null || !handler.CanReadToken(clientAssertion)) { - return (false, "invalid_client", "invalid client_id", null); + return (false, ErrorCodes.Generic.InvalidClient, "Invalid client_assertion - token validation error", null); } - if (!IsValidCertificate(client)) + var token = handler.ReadJwtToken(clientAssertion); + if (token == null) { - return (false, "invalid_client", "Client certificate validation failed", null); + return (false, ErrorCodes.Generic.InvalidClient, "Invalid client_assertion - token validation error", null); } - return (true, null, null, client); + return (true, null, null, null); } + + private bool IsValidCertificate( SoftwareProductInfosec client) { @@ -157,17 +190,17 @@ private bool IsValidCertificate( if (string.IsNullOrEmpty(thumbprint) || string.IsNullOrEmpty(httpHeaderCommonName)) { - _logger.LogError("Thumbprint {thumbprint} and/or common name {commonName} not found.", thumbprint, httpHeaderCommonName); + _logger.LogError("Thumbprint {Thumbprint} and/or common name {CommonName} not found.", thumbprint, httpHeaderCommonName); return false; } // Find a matching cert for the software product client. var certs = client.X509Certificates.ToList(); // Check if there is a matching cert with the provided common name (validating the thumbprint is not required) - var matchingCert = certs.FirstOrDefault(c => + var matchingCert = certs.Find(c => c.CommonName.GetCommonName().Equals(httpHeaderCommonName, StringComparison.OrdinalIgnoreCase)); - _logger.LogInformation("Matching cert = {matchingCert}", matchingCert != null); + _logger.LogInformation("Matching cert = {MatchingCert}", matchingCert != null); return matchingCert != null; } diff --git a/Source/CDR.Register.Infosec/Extensions/ServiceCollectionExtensions.cs b/Source/CDR.Register.Infosec/Extensions/ServiceCollectionExtensions.cs new file mode 100644 index 0000000..88f7108 --- /dev/null +++ b/Source/CDR.Register.Infosec/Extensions/ServiceCollectionExtensions.cs @@ -0,0 +1,29 @@ +using CDR.Register.API.Infrastructure.Filters; +using CDR.Register.Domain.Repositories; +using CDR.Register.Infosec.Interfaces; +using CDR.Register.Infosec.Services; +using CDR.Register.Repository; +using CDR.Register.Repository.Infrastructure; +using Microsoft.EntityFrameworkCore; + +namespace CDR.Register.Infosec.Extensions +{ + public static class ServiceCollectionExtensions + { + public static IServiceCollection AddRegisterInfosec(this IServiceCollection services, IConfiguration configuration) + { + services.AddSingleton(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddScoped(); + services.AddHttpContextAccessor(); + + // This is to manage the EF database context through the web API DI. + // If this is to be done inside the repository project itself, we need to manage the context life-cycle explicitly. + services.AddDbContext(options => options.UseSqlServer(configuration.GetConnectionString(Constants.ConnectionStringNames.Register))); + + return services; + } + } +} diff --git a/Source/CDR.Register.Infosec/Models/AccessTokenResponse.cs b/Source/CDR.Register.Infosec/Models/AccessTokenResponse.cs index 396aa35..bdd9c26 100644 --- a/Source/CDR.Register.Infosec/Models/AccessTokenResponse.cs +++ b/Source/CDR.Register.Infosec/Models/AccessTokenResponse.cs @@ -2,7 +2,7 @@ namespace CDR.Register.Infosec.Models { - public class AccessTokenResponse : ResponseBase + public class AccessTokenResponse : IResponseBase { [JsonProperty("access_token")] public string? AccessToken { get; set; } diff --git a/Source/CDR.Register.Infosec/Models/ClientAssertionRequest.cs b/Source/CDR.Register.Infosec/Models/ClientAssertionRequest.cs index 71f80af..eb0c565 100644 --- a/Source/CDR.Register.Infosec/Models/ClientAssertionRequest.cs +++ b/Source/CDR.Register.Infosec/Models/ClientAssertionRequest.cs @@ -10,10 +10,10 @@ public class ClientAssertionRequest public string? client_assertion_type { get; set; } - [JsonProperty("client_assertion")] + [JsonProperty(nameof(client_assertion))] public string? client_assertion { get; set; } - [JsonProperty("scope")] + [JsonProperty(nameof(scope))] public string? scope { get; set; } } } diff --git a/Source/CDR.Register.Infosec/Models/DiscoveryDocument.cs b/Source/CDR.Register.Infosec/Models/DiscoveryDocument.cs index 9909c4c..e84fd07 100644 --- a/Source/CDR.Register.Infosec/Models/DiscoveryDocument.cs +++ b/Source/CDR.Register.Infosec/Models/DiscoveryDocument.cs @@ -25,6 +25,9 @@ public class DiscoveryDocument [JsonProperty("scopes_supported")] public string[]? ScopesSupported { get; set; } + [JsonProperty("code_challenge_methods_supported")] + public string[]? CodeChallengeMethodsSupported { get; set; } + [JsonProperty("response_types_supported")] public string[]? ResponseTypesSupported { get; set; } diff --git a/Source/CDR.Register.Infosec/Models/ErrorResponse.cs b/Source/CDR.Register.Infosec/Models/ErrorResponse.cs index 8d2890b..64ccf59 100644 --- a/Source/CDR.Register.Infosec/Models/ErrorResponse.cs +++ b/Source/CDR.Register.Infosec/Models/ErrorResponse.cs @@ -2,7 +2,7 @@ namespace CDR.Register.Infosec.Models { - public class ErrorResponse : ResponseBase + public class ErrorResponse : IResponseBase { [JsonProperty("error")] public string? Error { get; set; } diff --git a/Source/CDR.Register.Infosec/Models/ResponseBase.cs b/Source/CDR.Register.Infosec/Models/ResponseBase.cs index 6c599ac..9b00378 100644 --- a/Source/CDR.Register.Infosec/Models/ResponseBase.cs +++ b/Source/CDR.Register.Infosec/Models/ResponseBase.cs @@ -1,6 +1,6 @@ namespace CDR.Register.Infosec.Models { - public abstract class ResponseBase + public interface IResponseBase { } } diff --git a/Source/CDR.Register.Infosec/Program.cs b/Source/CDR.Register.Infosec/Program.cs index 816ee8e..51c3e6f 100644 --- a/Source/CDR.Register.Infosec/Program.cs +++ b/Source/CDR.Register.Infosec/Program.cs @@ -21,9 +21,7 @@ public static int Main(string[] args) .Build(); Log.Logger = new LoggerConfiguration() - .ReadFrom.Configuration(configuration) - .MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning) - .MinimumLevel.Override("System", LogEventLevel.Information) + .ReadFrom.Configuration(configuration) .Enrich.FromLogContext() .Enrich.WithProcessId() .Enrich.WithProcessName() diff --git a/Source/CDR.Register.Infosec/Services/ClientService.cs b/Source/CDR.Register.Infosec/Services/ClientService.cs index 3374eaa..2d9d7e6 100644 --- a/Source/CDR.Register.Infosec/Services/ClientService.cs +++ b/Source/CDR.Register.Infosec/Services/ClientService.cs @@ -13,8 +13,12 @@ public ClientService(IRegisterInfosecRepository infosecRepository) _infosecRepository = infosecRepository; } - public async Task GetClientAsync(string clientId) + public async Task GetClientAsync(string? clientId) { + if (clientId == null) + { + return null; + } if (!Guid.TryParse(clientId, out Guid softwareProductId)) { return null; diff --git a/Source/CDR.Register.Infosec/Services/IClientService.cs b/Source/CDR.Register.Infosec/Services/IClientService.cs index daa03a7..e5b23f8 100644 --- a/Source/CDR.Register.Infosec/Services/IClientService.cs +++ b/Source/CDR.Register.Infosec/Services/IClientService.cs @@ -5,6 +5,6 @@ namespace CDR.Register.Infosec.Interfaces { public interface IClientService { - Task GetClientAsync(string clientId); + Task GetClientAsync(string clientId); } } diff --git a/Source/CDR.Register.Infosec/Services/TokenService.cs b/Source/CDR.Register.Infosec/Services/TokenService.cs index 5d14516..ab30a6f 100644 --- a/Source/CDR.Register.Infosec/Services/TokenService.cs +++ b/Source/CDR.Register.Infosec/Services/TokenService.cs @@ -12,7 +12,7 @@ namespace CDR.Register.Infosec.Services { public class TokenService : ITokenService { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IConfiguration _configuration; private readonly IDistributedCache _cache; private readonly IHttpContextAccessor _httpContextAccessor; @@ -36,13 +36,14 @@ public TokenService( /// /// /// client_id (form param) when provided and must match client assertion issuer and subject + /// clientAssertion /// - public async Task<(bool isValid, string? message, SoftwareProductInfosec? client)> ValidateClientAssertion(string client_id, string clientAssertion) - { - JwtSecurityToken? validatedSecurityToken = null; - SoftwareProductInfosec? client = null; + public async Task<(bool isValid, string? message, SoftwareProductInfosec? client)> ValidateClientAssertion(string? client_id, string clientAssertion) + { + JwtSecurityToken? validatedSecurityToken; + SoftwareProductInfosec? client; try - { + { var handler = new JwtSecurityTokenHandler(); // Validate the client assertion token. @@ -54,15 +55,15 @@ public TokenService( } // client_id (form param) when provided and must match client assertion issuer and subject - if (!string.IsNullOrEmpty(client_id) && - (!client_id.Equals(invalidToken.Issuer, StringComparison.OrdinalIgnoreCase) || + if (!string.IsNullOrEmpty(client_id) && + (!client_id.Equals(invalidToken.Issuer, StringComparison.OrdinalIgnoreCase) || !client_id.Equals(invalidToken.Subject, StringComparison.OrdinalIgnoreCase) )) { return (false, "Invalid client_assertion - 'sub' and 'iss' must be set to the client_id", null); } - client = await _clientService.GetClientAsync(clientId); + client = await _clientService.GetClientAsync(clientId); if (client == null) { return (false, "invalid client_id", null); @@ -82,7 +83,7 @@ public TokenService( { return (false, "Invalid client_assertion - Client assertion token signature algorithm must be PS256 or ES256", null); } - + if (!validatedSecurityToken.Subject.Equals(validatedSecurityToken.Issuer, StringComparison.OrdinalIgnoreCase)) { return (false, "Invalid client_assertion - 'sub' and 'iss' must have the same value", null); @@ -128,25 +129,8 @@ private async Task BuildTokenValidationParameters( ValidateAudience = true, AudienceValidator = (IEnumerable audiences, SecurityToken securityToken, TokenValidationParameters validationParameters) => { - bool isValid = false; - - foreach (var audience in audiences) - { - if (validationParameters.ValidAudiences.Contains(audience, StringComparer.OrdinalIgnoreCase)) - { - isValid = true; - break; - } - foreach (var validAudience in validationParameters.ValidAudiences) - { - if (audience.StartsWith(validAudience)) - { - isValid = true; - break; - } - } - } + bool isValid = audiences.Any(audience => validationParameters.ValidAudiences.Contains(audience, StringComparer.OrdinalIgnoreCase)); if (!isValid) { @@ -181,39 +165,38 @@ private List BuildValidAudiences() } public async Task CreateAccessToken( - SoftwareProductInfosec client, + SoftwareProductInfosec client, int expiryInSeconds, - string scope, + string scope, string cnf) { - var cert = new X509Certificate2(_configuration.GetValue("SigningCertificate:Path"), _configuration.GetValue("SigningCertificate:Password"), X509KeyStorageFlags.Exportable); + var cert = await Task.Run(() => new X509Certificate2(_configuration.GetValue("SigningCertificate:Path") ?? "", _configuration.GetValue("SigningCertificate:Password"), X509KeyStorageFlags.Exportable)); var signingCredentials = new X509SigningCredentials(cert, SecurityAlgorithms.RsaSsaPssSha256); var issuer = _configuration.GetInfosecBaseUrl(_httpContextAccessor.HttpContext); - var claims = new List(); - claims.Add(new Claim("client_id", client.Id)); - claims.Add(new Claim("jti", Guid.NewGuid().ToString())); - claims.Add(new Claim("scope", scope)); + List claims = [new Claim("client_id", client.Id), + new Claim("jti", Guid.NewGuid().ToString()), + new Claim("scope", scope)]; claims.Add(new Claim( - "cnf", + "cnf", JsonConvert.SerializeObject(new Dictionary { { "x5t#S256", cnf } - }), + }), JsonClaimValueTypes.Json)); var jwtHeader = new JwtHeader( - signingCredentials: signingCredentials, - outboundAlgorithmMap: null, + signingCredentials: signingCredentials, + outboundAlgorithmMap: null, tokenType: "at+jwt"); var jwtPayload = new JwtPayload( - issuer: issuer, - audience: "cdr-register", - claims: claims, - notBefore: DateTime.UtcNow, - expires: DateTime.UtcNow.AddSeconds(expiryInSeconds), + issuer: issuer, + audience: "cdr-register", + claims: claims, + notBefore: DateTime.UtcNow, + expires: DateTime.UtcNow.AddSeconds(expiryInSeconds), issuedAt: DateTime.UtcNow); var jwt = new JwtSecurityToken(jwtHeader, jwtPayload); @@ -232,7 +215,7 @@ public async Task> GetClientKeys(SoftwareProductInfosec clien } catch (Exception ex) { - _logger.LogError(ex, "Error retrieving jwks from client {clientId}", client.Id); + _logger.LogError(ex, "Error retrieving jwks from client {ClientId}", client.Id); return trustedKeys; } @@ -241,24 +224,29 @@ public async Task> GetClientKeys(SoftwareProductInfosec clien public async Task> GetClientJwks(SoftwareProductInfosec client) { - var handler = new HttpClientHandler - { - ServerCertificateCustomValidationCallback = (a, b, c, d) => true - }; + var handler = new HttpClientHandler(); + handler.SetServerCertificateValidation(_configuration); var httpClient = new HttpClient(handler); + + var passUserAgent = _configuration.GetValue("PassUserAgent"); //allows CTS to attach a header for request filtering + if (passUserAgent) + { + httpClient.DefaultRequestHeaders.Add("User-Agent", "mock-register"); + } + var httpResponse = await httpClient.GetAsync(client.JwksUri); var responseContent = await httpResponse.Content.ReadAsStringAsync(); if (!httpResponse.IsSuccessStatusCode) { - _logger.LogError("{method}: {jwksUri} returned {statusCode}", nameof(GetClientJwks), client.JwksUri, httpResponse.StatusCode); + _logger.LogError("{Method}: {JwksUri} returned {StatusCode}", nameof(GetClientJwks), client.JwksUri, httpResponse.StatusCode); return new List(); } var keys = JsonConvert.DeserializeObject(responseContent); if (keys == null || keys.Keys == null || !keys.Keys.Any()) { - _logger.LogError("{method}: No keys found at {jwksUri}", nameof(GetClientJwks), client.JwksUri); + _logger.LogError("{Method}: No keys found at {JwksUri}", nameof(GetClientJwks), client.JwksUri); return new List(); } diff --git a/Source/CDR.Register.Infosec/Startup.cs b/Source/CDR.Register.Infosec/Startup.cs index 5063147..c47017e 100644 --- a/Source/CDR.Register.Infosec/Startup.cs +++ b/Source/CDR.Register.Infosec/Startup.cs @@ -3,6 +3,7 @@ using CDR.Register.API.Infrastructure.Middleware; using CDR.Register.API.Logger; using CDR.Register.Domain.Repositories; +using CDR.Register.Infosec.Extensions; using CDR.Register.Infosec.Interfaces; using CDR.Register.Infosec.Services; using CDR.Register.Repository; @@ -25,27 +26,20 @@ public Startup(IConfiguration configuration) public void ConfigureServices(IServiceCollection services) { + services.AddHttpContextAccessor(); + + services.AddRegisterInfosec(Configuration); + services.AddControllers() .ConfigureApiBehaviorOptions(options => { options.InvalidModelStateResponseFactory = ModelStateErrorMiddleware.ExecuteResult; }) - .AddNewtonsoftJson(options => + .AddNewtonsoftJson(options => { options.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore; - options.SerializerSettings.Converters.Add(new StringEnumConverter()); }); - // This is to manage the EF database context through the web API DI. - // If this is to be done inside the repository project itself, we need to manage the context life-cycle explicitly. - services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString(Constants.ConnectionStringNames.Register))); - services.AddSingleton(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddScoped(); - services.AddHttpContextAccessor(); - if (Configuration.GetSection("SerilogRequestResponseLogger") != null) { Log.Logger.Information("Adding request response logging middleware"); @@ -55,7 +49,8 @@ public void ConfigureServices(IServiceCollection services) // if the distributed cache connection string has been set then use it, otherwise fall back to in-memory caching. if (UseDistributedCache()) { - services.AddStackExchangeRedisCache(options => { + services.AddStackExchangeRedisCache(options => + { options.Configuration = Configuration.GetConnectionString(Constants.ConnectionStringNames.Cache); options.InstanceName = "register-cache-"; }); @@ -63,7 +58,7 @@ public void ConfigureServices(IServiceCollection services) services.AddDataProtection() .SetApplicationName("reg-infosec") .PersistKeysToStackExchangeRedis( - StackExchange.Redis.ConnectionMultiplexer.Connect(Configuration.GetConnectionString(Constants.ConnectionStringNames.Cache)), + StackExchange.Redis.ConnectionMultiplexer.Connect(Configuration.GetConnectionString(Constants.ConnectionStringNames.Cache) ?? ""), "register-cache-dp-keys"); } else @@ -89,10 +84,10 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) app.UseHttpsRedirection(); app.UseRouting(); - + app.UseAuthentication(); app.UseAuthorization(); - + app.UseEndpoints(endpoints => { endpoints.MapControllers(); diff --git a/Source/CDR.Register.Infosec/appsettings.Release.json b/Source/CDR.Register.Infosec/appsettings.Release.json index 0900158..62ffed0 100644 --- a/Source/CDR.Register.Infosec/appsettings.Release.json +++ b/Source/CDR.Register.Infosec/appsettings.Release.json @@ -1,8 +1,8 @@ { "ConnectionStrings": { - "Register_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True", - "Register_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True", - "Register_RequestResponse_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True" + "Register_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True", + "Register_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True", + "Register_RequestResponse_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True" }, "Serilog": { "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.MSSqlServer" ], diff --git a/Source/CDR.Register.Infosec/appsettings.json b/Source/CDR.Register.Infosec/appsettings.json index a0f533c..c981bd0 100644 --- a/Source/CDR.Register.Infosec/appsettings.json +++ b/Source/CDR.Register.Infosec/appsettings.json @@ -29,5 +29,7 @@ "**/node_modules", "**/obj", "**/platforms" - ] + ], + "EnableServerCertificateValidation": false, + "PassUserAgent": false } \ No newline at end of file diff --git a/Source/CDR.Register.IntegrationTests/API/Discovery/US27560_GetDataRecipients_MultiIndustry_Tests.cs b/Source/CDR.Register.IntegrationTests/API/Discovery/US27560_GetDataRecipients_MultiIndustry_Tests.cs index 59bd715..811a94b 100644 --- a/Source/CDR.Register.IntegrationTests/API/Discovery/US27560_GetDataRecipients_MultiIndustry_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/API/Discovery/US27560_GetDataRecipients_MultiIndustry_Tests.cs @@ -1,17 +1,16 @@ -using System.Linq; -using System.Net; -using System.Net.Http; -using System.Threading.Tasks; -using CDR.Register.Repository.Entities; +using CDR.Register.Repository.Entities; using CDR.Register.Repository.Infrastructure; using FluentAssertions; using FluentAssertions.Execution; using Microsoft.EntityFrameworkCore; -using Newtonsoft.Json; -using Xunit; using Microsoft.Extensions.Configuration; +using Newtonsoft.Json; using System; -using System.Collections.Generic; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.Threading.Tasks; +using Xunit; using Xunit.Abstractions; #nullable enable @@ -23,7 +22,7 @@ namespace CDR.Register.IntegrationTests.API.Discovery /// public class US27560_GetDataRecipients_MultiIndustry_Tests : BaseTest { - public US27560_GetDataRecipients_MultiIndustry_Tests(ITestOutputHelper outputHelper) : base(outputHelper) { } + public US27560_GetDataRecipients_MultiIndustry_Tests(ITestOutputHelper outputHelper, TestFixture testFixture) : base(outputHelper, testFixture) { } // Get expected data recipients private static string GetExpectedDataRecipients(string url) @@ -78,7 +77,9 @@ private static string GetExpectedDataRecipients(string url) meta = new object() }; - return JsonConvert.SerializeObject(expectedDataRecipients); + string result = JsonConvert.SerializeObject(expectedDataRecipients); + + return result; } catch (Exception ex) { @@ -245,10 +246,10 @@ public async Task AC05_Get_WithIfNoneMatchKnownETAG_ShouldRespondWith_304NotModi [InlineData("foo", "3", "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR)] //Invalid. x-v is invalid with valid x-min-v [InlineData("-1", null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR)] //Invalid. x-v (negative integer) is invalid with missing x-min-v [InlineData("4", null, "N/A", HttpStatusCode.NotAcceptable, false, EXPECTED_UNSUPPORTED_ERROR)] //Unsupported. x-v is higher than supported version of 3 - [InlineData("", null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR)] //Invalid. x-v header is an empty string - [InlineData(null, null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MSSING_X_V_ERROR)] //Invalid. x-v header is missing + [InlineData("", null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MISSING_X_V_ERROR)] //Invalid. x-v header is an empty string + [InlineData(null, null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MISSING_X_V_ERROR)] //Invalid. x-v header is missing - public async Task ACX01_VersionHeaderValidation(string xv, string minXv, string expectedXv, HttpStatusCode expectedHttpStatusCode, bool isExpectedToBeSupported, string expecetdError) + public async Task ACX01_VersionHeaderValidation(string? xv, string? minXv, string expectedXv, HttpStatusCode expectedHttpStatusCode, bool isExpectedToBeSupported, string expecetdError) { // Act diff --git a/Source/CDR.Register.IntegrationTests/API/Discovery/US27562_GetDataHolderBrands_MultiIndustry_Tests.cs b/Source/CDR.Register.IntegrationTests/API/Discovery/US27562_GetDataHolderBrands_MultiIndustry_Tests.cs index 866df1f..f787278 100644 --- a/Source/CDR.Register.IntegrationTests/API/Discovery/US27562_GetDataHolderBrands_MultiIndustry_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/API/Discovery/US27562_GetDataHolderBrands_MultiIndustry_Tests.cs @@ -1,4 +1,6 @@ -using CDR.Register.IntegrationTests.Infrastructure; +using CDR.Register.API.Infrastructure.Models; +using CDR.Register.IntegrationTests.Infrastructure; +using CDR.Register.IntegrationTests.Models; using CDR.Register.Repository.Entities; using CDR.Register.Repository.Infrastructure; using FluentAssertions; @@ -6,6 +8,8 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Newtonsoft.Json; +using Newtonsoft.Json.Converters; +using Newtonsoft.Json.Serialization; using System; using System.Linq; using System.Net; @@ -23,7 +27,7 @@ namespace CDR.Register.IntegrationTests.API.Discovery /// public class US27562_GetDataHolderBrands_MultiIndustry_Tests : BaseTest { - public US27562_GetDataHolderBrands_MultiIndustry_Tests(ITestOutputHelper outputHelper) : base(outputHelper) { } + public US27562_GetDataHolderBrands_MultiIndustry_Tests(ITestOutputHelper outputHelper, TestFixture testFixture) : base(outputHelper, testFixture) { } // Participation/Brand/SoftwareProduct Ids private static string PARTICIPATIONID => GetParticipationId(BRANDID); // lookup private const string BRANDID = "20C0864B-CEEF-4DE0-8944-EB0962F825EB"; @@ -101,7 +105,7 @@ static string Link(string baseUrl, DateTime? updatedSince, int? page = null, int { dataHolderBrandId = brand.BrandId, brandName = brand.BrandName, - industries = new string[] { brand.Participation.Industry.IndustryTypeCode.ToLower() }, //DF: industry should be lowercase. + industries = new string[] { brand.Participation.Industry.IndustryTypeCode.ToLower() }, logoUri = brand.LogoUri, legalEntity = new { @@ -116,7 +120,7 @@ static string Link(string baseUrl, DateTime? updatedSince, int? page = null, int arbn = brand.Participation.LegalEntity.Arbn, anzsicDivision = brand.Participation.LegalEntity.AnzsicDivision, organisationType = brand.Participation.LegalEntity.OrganisationType.OrganisationTypeCode, - status = brand.Participation.Status.ParticipationStatusCode.ToUpper() //DF: status should be uppercase. //TODO:C could fail tests + status = brand.Participation.Status.ParticipationStatusCode.ToUpper() }, status = brand.BrandStatus.BrandStatusCode, endpointDetail = new @@ -263,19 +267,19 @@ public async Task AC01_CTS_URL_Get_WithNoQueryString_ShouldRespondWith_200OK_Fir // Arrange string conformanceId = Guid.NewGuid().ToString(); - string tokenEndpoint = $"{GenerateDynamicCtsUrl(IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp/connect/token"; + string tokenEndpoint = $"{GenerateDynamicCtsUrl(IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp/connect/token"; var getDataholderBrandsUrl = $"{GenerateDynamicCtsUrl(DISCOVERY_DOWNSTREAM_BASE_URL, conformanceId)}/cdr-register/v1/{industry}/data-holders/brands"; string expectedDataholderBrandsUrl = ReplaceSecureHostName(getDataholderBrandsUrl, DISCOVERY_DOWNSTREAM_BASE_URL); var expectedResponse = GetExpectedResponse(expectedDataholderBrandsUrl, expectedDataholderBrandsUrl, null, null, null, industry); // Arrange - Get access token - var accessToken = await new AccessToken + var accessToken = await new IntegrationTests.Infrastructure.AccessToken { CertificateFilename = CERTIFICATE_FILENAME, CertificatePassword = CERTIFICATE_PASSWORD, Scope = "cdr-register:read", - Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL), + Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL), TokenEndPoint = tokenEndpoint, CertificateThumbprint = DEFAULT_CERTIFICATE_THUMBPRINT, CertificateCn = DEFAULT_CERTIFICATE_COMMON_NAME @@ -412,7 +416,6 @@ public async Task AC07_Get_WithUpdatedSinceInvalidDate_ShouldRespondWith_400BadR ""code"": ""urn:au-cds:error:cds-all:Field/InvalidDateTime"", ""title"": ""Invalid DateTime"", ""detail"": ""updated-since should be valid DateTimeString"", - ""meta"": {} } ] }"; @@ -601,7 +604,6 @@ await Test_AC13_AC14_AC15_AC16($"page-size={pageSize}", expectedStatusCode, @" ""code"": ""urn:au-cds:error:cds-all:Field/InvalidPageSize"", ""title"": ""Invalid Page Size"", ""detail"": ""Page size not a positive Integer"", - ""meta"": {} } ] }", @@ -638,7 +640,6 @@ await Test_AC13_AC14_AC15_AC16($"page={page}", expectedStatusCode, @" ""code"": ""urn:au-cds:error:cds-all:Field/Invalid"", ""title"": ""Invalid Field"", ""detail"": ""Page not a positive integer"", - ""meta"": {} } ] }", @@ -659,7 +660,6 @@ await Test_AC13_AC14_AC15_AC16($"page={page}", expectedStatusCode, @" ""code"": ""urn:au-cds:error:cds-all:Field/Invalid"", ""title"": ""Invalid Field"", ""detail"": ""Page is out of range"", - ""meta"": {} } ] }", @@ -680,7 +680,6 @@ await Test_AC13_AC14_AC15_AC16($"page-size={pageSize}", expectedStatusCode, @" ""code"": ""urn:au-cds:error:cds-all:Field/Invalid"", ""title"": ""Invalid Field"", ""detail"": ""Page size too large"", - ""meta"": {} } ] }", @@ -736,7 +735,6 @@ private static async Task Test_AC17_AC18_AC19(HttpStatusCode expectedStatusCode, ""code"": ""urn:au-cds:error:cds-all:Authorisation/AdrStatusNotActive"", ""title"": ""ADR Status Is Not Active"", ""detail"": """", - ""meta"": {} } ] }"; @@ -934,7 +932,6 @@ public async Task ACX01_Get_WithInvalidIndustry_ShouldRespondWith_400BadRequest( ""code"": ""urn:au-cds:error:cds-all:Field/Invalid"", ""title"": ""Invalid Field"", ""detail"": ""industry"", - ""meta"": {} } ] }"; @@ -944,15 +941,11 @@ public async Task ACX01_Get_WithInvalidIndustry_ShouldRespondWith_400BadRequest( } [Theory] - [InlineData(null, "cdr-register:bank:read", HttpStatusCode.NotFound)] // No industry [InlineData(null, "cdr-register:read", HttpStatusCode.NotFound)] // No industry - [InlineData("banking", "cdr-register:bank:read", HttpStatusCode.Forbidden)] [InlineData("banking", "cdr-register:read", HttpStatusCode.OK)] - [InlineData("energy", "cdr-register:bank:read", HttpStatusCode.Forbidden)] // ??? [InlineData("energy", "cdr-register:read", HttpStatusCode.OK)] - [InlineData("telco", "cdr-register:bank:read", HttpStatusCode.Forbidden)] // ??? [InlineData("telco", "cdr-register:read", HttpStatusCode.OK)] - public async Task ACX02_Get_WithScope_ShouldRespondWith_200OK(string industry, string scope, HttpStatusCode expectedStatusCode) + public async Task ACX02_Get_WithScope_ShouldRespondWith_200OK(string? industry, string scope, HttpStatusCode expectedStatusCode) { // Arrange var accessToken = await new Infrastructure.AccessToken @@ -998,8 +991,8 @@ public async Task ACX02_Get_WithScope_ShouldRespondWith_200OK(string industry, s [InlineData("foo", "2", "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR)] //Invalid. x-v is invalid with valid x-min-v [InlineData("-1", null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR)] //Invalid. x-v (negative integer) is invalid with missing x-min-v [InlineData("3", null, "N/A", HttpStatusCode.NotAcceptable, false, EXPECTED_UNSUPPORTED_ERROR)] //Unsupported. x-v is higher than supported version of 2 - [InlineData("", null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR)] //Invalid. x-v header is an empty string - [InlineData(null, null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MSSING_X_V_ERROR)] //Invalid. x-v header is missing + [InlineData("", null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MISSING_X_V_ERROR)] //Invalid. x-v header is an empty string + [InlineData(null, null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MISSING_X_V_ERROR)] //Invalid. x-v header is missing //Also check industry specific calls [InlineData("3", "2", "2", HttpStatusCode.OK, true, "", "banking")] //Valid. Should return v2 - x-v is NOT supported and x-min-v is supported [InlineData("3", "2", "2", HttpStatusCode.OK, true, "", "energy")] //Valid. Should return v2 - x-v is NOT supported and x-min-v is supported @@ -1007,11 +1000,11 @@ public async Task ACX02_Get_WithScope_ShouldRespondWith_200OK(string industry, s [InlineData("3", "0", "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR, "banking")] //Unsupported. x-v is not supported and x-min-v invalid [InlineData("3", "0", "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR, "energy")] //Unsupported. x-v is not supported and x-min-v invalid [InlineData("3", "0", "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR, "telco")] //Unsupported. x-v is not supported and x-min-v invalid - [InlineData(null, null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MSSING_X_V_ERROR, "banking")] //Invalid. x-v header is missing - [InlineData(null, null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MSSING_X_V_ERROR, "energy")] //Invalid. x-v header is missing - [InlineData(null, null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MSSING_X_V_ERROR, "telco")] //Invalid. x-v header is missing + [InlineData(null, null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MISSING_X_V_ERROR, "banking")] //Invalid. x-v header is missing + [InlineData(null, null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MISSING_X_V_ERROR, "energy")] //Invalid. x-v header is missing + [InlineData(null, null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MISSING_X_V_ERROR, "telco")] //Invalid. x-v header is missing - public async Task ACXX_VersionHeaderValidation(string xv, string minXv, string expectedXv, HttpStatusCode expectedHttpStatusCode, bool isExpectedToBeSupported, string expecetdError, string industry = "all") + public async Task ACXX_VersionHeaderValidation(string? xv, string? minXv, string expectedXv, HttpStatusCode expectedHttpStatusCode, bool isExpectedToBeSupported, string expecetdError, string industry = "all") { // Arrange diff --git a/Source/CDR.Register.IntegrationTests/API/SSA/US27564_GetSoftwareStatementAssertion_MultiIndustry_Tests.cs b/Source/CDR.Register.IntegrationTests/API/SSA/US27564_GetSoftwareStatementAssertion_MultiIndustry_Tests.cs index 8305b87..0c17663 100644 --- a/Source/CDR.Register.IntegrationTests/API/SSA/US27564_GetSoftwareStatementAssertion_MultiIndustry_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/API/SSA/US27564_GetSoftwareStatementAssertion_MultiIndustry_Tests.cs @@ -25,7 +25,7 @@ namespace CDR.Register.IntegrationTests.API.SSA /// public class US27564_GetSoftwareStatementAssertion_MultiIndustry_Tests : BaseTest { - public US27564_GetSoftwareStatementAssertion_MultiIndustry_Tests(ITestOutputHelper outputHelper) : base(outputHelper) { } + public US27564_GetSoftwareStatementAssertion_MultiIndustry_Tests(ITestOutputHelper outputHelper, TestFixture testFixture) : base(outputHelper, testFixture) { } // Participation/Brand/SoftwareProduct Ids private static string PARTICIPATIONID => GetParticipationId(BRANDID); // lookup @@ -212,7 +212,6 @@ public async Task ACX99_GetSSA_WithDifferentIndustry_ShouldRespondWith_Different ""code"": ""urn:au-cds:error:cds-all:Authorisation/AdrStatusNotActive"", ""title"": ""ADR Status Is Not Active"", ""detail"": """", - ""meta"": {} } ] }"; @@ -345,7 +344,6 @@ await Test_GetSSA( ""code"": ""urn:au-cds:error:cds-register:Field/InvalidSoftwareProduct"", ""title"": ""Invalid Software Product"", ""detail"": ""{softwareProductId}"", - ""meta"": {{}} }} ] }}"); @@ -400,10 +398,10 @@ private static async Task GetSsaJwks() [InlineData("foo", "3", "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR)] //Invalid. x-v is invalid with valid x-min-v [InlineData("-1", null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR)] //Invalid. x-v (negative integer) is invalid with missing x-min-v [InlineData("4", null, "N/A", HttpStatusCode.NotAcceptable, false, EXPECTED_UNSUPPORTED_ERROR)] //Unsupported. x-v is higher than supported version of 3 - [InlineData("", null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR)] //Invalid. x-v header is an empty string - [InlineData(null, null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MSSING_X_V_ERROR)] //Invalid. x-v header is missing + [InlineData("", null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MISSING_X_V_ERROR)] //Invalid. x-v header is an empty string + [InlineData(null, null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MISSING_X_V_ERROR)] //Invalid. x-v header is missing - public async Task ACX01_VersionHeaderValidation(string xv, string xminv, string expectedXv, HttpStatusCode expectedHttpStatusCode, bool isExpectedToBeSupported, string expecetdError) + public async Task ACX01_VersionHeaderValidation(string? xv, string? xminv, string expectedXv, HttpStatusCode expectedHttpStatusCode, bool isExpectedToBeSupported, string expecetdError) { // Arrange @@ -457,7 +455,7 @@ public async Task AC01_CTS_URL_GetSSA_WithXV1_ShouldRespondWith_200OK_V3ofSSA(in { string conformanceId = Guid.NewGuid().ToString(); // conformanceId = "5186c407-0114-480a-86a3-7ef072d221bc"; - string tokenEndpoint = $"{GenerateDynamicCtsUrl(IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp/connect/token"; + string tokenEndpoint = $"{GenerateDynamicCtsUrl(IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp/connect/token"; string ssasEndpoint = $"{GenerateDynamicCtsUrl(SSA_DOWNSTREAM_BASE_URL, conformanceId)}/cdr-register/v1/all/data-recipients/brands/{BRANDID}/software-products/{SOFTWAREPRODUCTID}/ssa"; // Arrange - Get SoftwareProduct @@ -473,7 +471,7 @@ public async Task AC01_CTS_URL_GetSSA_WithXV1_ShouldRespondWith_200OK_V3ofSSA(in CertificateFilename = CERTIFICATE_FILENAME, CertificatePassword = CERTIFICATE_PASSWORD, Scope = "cdr-register:read", - Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL), + Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL), TokenEndPoint = tokenEndpoint, CertificateThumbprint = DEFAULT_CERTIFICATE_THUMBPRINT, CertificateCn = DEFAULT_CERTIFICATE_COMMON_NAME diff --git a/Source/CDR.Register.IntegrationTests/API/Status/US27556_GetDataRecipientStatus_MultiIndustry_Tests.cs b/Source/CDR.Register.IntegrationTests/API/Status/US27556_GetDataRecipientStatus_MultiIndustry_Tests.cs index 9629060..170cf5b 100644 --- a/Source/CDR.Register.IntegrationTests/API/Status/US27556_GetDataRecipientStatus_MultiIndustry_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/API/Status/US27556_GetDataRecipientStatus_MultiIndustry_Tests.cs @@ -22,7 +22,7 @@ namespace CDR.Register.IntegrationTests.API.Status /// public class US27556_GetDataRecipientStatus_MultiIndustry_Tests : BaseTest { - public US27556_GetDataRecipientStatus_MultiIndustry_Tests(ITestOutputHelper outputHelper) : base(outputHelper) { } + public US27556_GetDataRecipientStatus_MultiIndustry_Tests(ITestOutputHelper outputHelper, TestFixture testFixture) : base(outputHelper, testFixture) { } private static string GetExpectedDataRecipientsStatus(string url) { using var dbContext = new RegisterDatabaseContext(new DbContextOptionsBuilder().UseSqlServer(Configuration.GetConnectionString("DefaultConnection")).Options); @@ -213,10 +213,10 @@ public async Task AC05_Get_WithIfNoneMatchKnownETAG_ShouldRespondWith_304NotModi [InlineData("foo", "2", "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR)] //Invalid. x-v is invalid with valid x-min-v [InlineData("-1", null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR)] //Invalid. x-v (negative integer) is invalid with missing x-min-v [InlineData("3", null, "N/A", HttpStatusCode.NotAcceptable, false, EXPECTED_UNSUPPORTED_ERROR)] //Unsupported. x-v is higher than supported version of 2 - [InlineData("", null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR)] //Invalid. x-v header is an empty string - [InlineData(null, null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MSSING_X_V_ERROR)] //Invalid. x-v header is missing + [InlineData("", null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MISSING_X_V_ERROR)] //Invalid. x-v header is an empty string + [InlineData(null, null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MISSING_X_V_ERROR)] //Invalid. x-v header is missing - public async Task ACXX_VersionHeaderValidation(string xv, string minXv, string expectedXv, HttpStatusCode expectedHttpStatusCode, bool isExpectedToBeSupported, string expecetdError) + public async Task ACXX_VersionHeaderValidation(string? xv, string? minXv, string expectedXv, HttpStatusCode expectedHttpStatusCode, bool isExpectedToBeSupported, string expecetdError) { // Act diff --git a/Source/CDR.Register.IntegrationTests/API/Status/US27558_GetSoftwareProductStatus_MultiIndustry_Tests.cs b/Source/CDR.Register.IntegrationTests/API/Status/US27558_GetSoftwareProductStatus_MultiIndustry_Tests.cs index 680baad..00257d0 100644 --- a/Source/CDR.Register.IntegrationTests/API/Status/US27558_GetSoftwareProductStatus_MultiIndustry_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/API/Status/US27558_GetSoftwareProductStatus_MultiIndustry_Tests.cs @@ -20,7 +20,7 @@ namespace CDR.Register.IntegrationTests.API.Status /// public class US27558_GetSoftwareProductStatus_MultiIndustry_Tests : BaseTest { - public US27558_GetSoftwareProductStatus_MultiIndustry_Tests(ITestOutputHelper outputHelper) : base(outputHelper) { } + public US27558_GetSoftwareProductStatus_MultiIndustry_Tests(ITestOutputHelper outputHelper, TestFixture testFixture) : base(outputHelper, testFixture) { } private static string GetExpectedSoftwareProductStatus(string url) { using var dbContext = new RegisterDatabaseContext(new DbContextOptionsBuilder().UseSqlServer(Configuration.GetConnectionString("DefaultConnection")).Options); @@ -197,10 +197,10 @@ public async Task AC05_Get_WithIfNoneMatchKnownETAG_ShouldRespondWith_304NotModi [InlineData("foo", "2", "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR)] //Invalid. x-v is invalid with valid x-min-v [InlineData("-1", null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR)] //Invalid. x-v (negative integer) is invalid with missing x-min-v [InlineData("3", null, "N/A", HttpStatusCode.NotAcceptable, false, EXPECTED_UNSUPPORTED_ERROR)] //Unsupported. x-v is higher than supported version of 2 - [InlineData("", null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_INVALID_VERSION_ERROR)] //Invalid. x-v header is an empty string - [InlineData(null, null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MSSING_X_V_ERROR)] //Invalid. x-v header is missing + [InlineData("", null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MISSING_X_V_ERROR)] //Invalid. x-v header is an empty string + [InlineData(null, null, "N/A", HttpStatusCode.BadRequest, false, EXPECTED_MISSING_X_V_ERROR)] //Invalid. x-v header is missing - public async Task ACXX_VersionHeaderValidation(string xv, string minXv, string expectedXv, HttpStatusCode expectedHttpStatusCode, bool isExpectedToBeSupported, string expecetdError) + public async Task ACXX_VersionHeaderValidation(string? xv, string? minXv, string expectedXv, HttpStatusCode expectedHttpStatusCode, bool isExpectedToBeSupported, string expecetdError) { // Act diff --git a/Source/CDR.Register.IntegrationTests/API/Update/ExpectedErrors.cs b/Source/CDR.Register.IntegrationTests/API/Update/ExpectedErrors.cs index 974d38a..5cee650 100644 --- a/Source/CDR.Register.IntegrationTests/API/Update/ExpectedErrors.cs +++ b/Source/CDR.Register.IntegrationTests/API/Update/ExpectedErrors.cs @@ -1,29 +1,26 @@ using CDR.Register.IntegrationTests.Models; -using CDR.Register.IntegrationTests.TemporalTables; -using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; -using System.Text; -using System.Text.Json.Serialization; -using System.Threading.Tasks; namespace CDR.Register.IntegrationTests.API.Update { + //TODO: Work out why this class exists and errors are defined in multiple places in IntTests project public class ExpectedErrors { public enum ErrorType { MissingField, MissingHeader, - InvalidField, + InvalidField, InvalidVersion, + UnsupportedVersion, Unauthorized } private List _expectedErrors; private const string CDS_ERROR_PREFIX = "urn:au-cds:error:cds-all:"; - public List errors { get => _expectedErrors.ToList(); } + public List errors { get => _expectedErrors.ToList(); } public ExpectedErrors() { @@ -40,7 +37,6 @@ public void AddExpectedError(ErrorType errorType, string detail) Code = $"{CDS_ERROR_PREFIX}Field/Missing", Title = "Missing Required Field", Detail = detail, - Meta = new ExpectedApiErrors.MetaData() { } }); return; case ErrorType.MissingHeader: @@ -49,7 +45,6 @@ public void AddExpectedError(ErrorType errorType, string detail) Code = $"{CDS_ERROR_PREFIX}Header/Missing", Title = "Missing Required Header", Detail = detail, - Meta = new ExpectedApiErrors.MetaData() { } }); return; case ErrorType.InvalidField: @@ -58,7 +53,6 @@ public void AddExpectedError(ErrorType errorType, string detail) Code = $"{CDS_ERROR_PREFIX}Field/Invalid", Title = "Invalid Field", Detail = detail, - Meta = new ExpectedApiErrors.MetaData() { } }); return; case ErrorType.InvalidVersion: @@ -67,7 +61,14 @@ public void AddExpectedError(ErrorType errorType, string detail) Code = $"{CDS_ERROR_PREFIX}Header/InvalidVersion", Title = "Invalid Version", Detail = detail, - Meta = new ExpectedApiErrors.MetaData() { } + }); + return; + case ErrorType.UnsupportedVersion: + _expectedErrors.Add(new ExpectedApiErrors() + { + Code = $"{CDS_ERROR_PREFIX}Header/UnsupportedVersion", + Title = "Unsupported Version", + Detail = detail, }); return; case ErrorType.Unauthorized: @@ -76,7 +77,6 @@ public void AddExpectedError(ErrorType errorType, string detail) Code = $"401", Title = "Unauthorized", Detail = detail, - Meta = new ExpectedApiErrors.MetaData() { } }); return; @@ -86,5 +86,5 @@ public void AddExpectedError(ErrorType errorType, string detail) } } - + } diff --git a/Source/CDR.Register.IntegrationTests/API/Update/US50480_UpdateDataHolders.cs b/Source/CDR.Register.IntegrationTests/API/Update/US50480_UpdateDataHolders.cs index 3595251..3116608 100644 --- a/Source/CDR.Register.IntegrationTests/API/Update/US50480_UpdateDataHolders.cs +++ b/Source/CDR.Register.IntegrationTests/API/Update/US50480_UpdateDataHolders.cs @@ -3,6 +3,7 @@ using CDR.Register.Repository.Infrastructure; using FluentAssertions; using FluentAssertions.Execution; +using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Newtonsoft.Json; @@ -22,7 +23,7 @@ namespace CDR.Register.IntegrationTests.API.Update { public class US50480_UpdateDataHolders : BaseTest { - public US50480_UpdateDataHolders(ITestOutputHelper outputHelper) : base(outputHelper) { } + public US50480_UpdateDataHolders(ITestOutputHelper outputHelper, TestFixture testFixture) : base(outputHelper, testFixture) { } private const string UPDATE_DATA_HOLDER_CURRENT_API_VERSION = "1"; @@ -190,7 +191,7 @@ public async Task AC04_Missing_Version_In_Header_Http_400(string xv) var response = await PostUpdateDataHolderRequest(GetJsonFromModel(originalDataHolderMetadata), xv: xv); ExpectedErrors expectedErrors = new(); - expectedErrors.AddExpectedError(ExpectedErrors.ErrorType.MissingHeader, "x-v"); + expectedErrors.AddExpectedError(ExpectedErrors.ErrorType.MissingHeader, "An API version x-v header is required, but was not specified."); // Assert Response await VerifyBadRequest(expectedErrors, response); @@ -199,7 +200,6 @@ public async Task AC04_Missing_Version_In_Header_Http_400(string xv) [Theory] [InlineData("0")] [InlineData("1.1")] - [InlineData("2")] public async Task AC05_Invalid_Version_Http_400(string xv) { DataHolderMetadata originalDataHolderMetadata = CreateValidDataholderMetadata(Industry.Banking, true); @@ -208,12 +208,29 @@ public async Task AC05_Invalid_Version_Http_400(string xv) var response = await PostUpdateDataHolderRequest(GetJsonFromModel(originalDataHolderMetadata), xv: xv); ExpectedErrors expectedErrors = new(); - expectedErrors.AddExpectedError(ExpectedErrors.ErrorType.InvalidVersion, $"Expected '{UPDATE_DATA_HOLDER_CURRENT_API_VERSION}'"); + expectedErrors.AddExpectedError(ExpectedErrors.ErrorType.InvalidVersion, "Version is not a positive Integer."); // Assert Response await VerifyBadRequest(expectedErrors, response); } + + [Theory] + [InlineData("20")] + public async Task AC10_Unsupported_Version_Http_400(string xv) + { + DataHolderMetadata originalDataHolderMetadata = CreateValidDataholderMetadata(Industry.Banking, true); + + // Send to Register with blank x-v header + var response = await PostUpdateDataHolderRequest(GetJsonFromModel(originalDataHolderMetadata), xv: xv); + + ExpectedErrors expectedErrors = new(); + expectedErrors.AddExpectedError(ExpectedErrors.ErrorType.UnsupportedVersion, "Requested version is lower than the minimum version or greater than maximum version."); + + // Assert Response + await VerifyNotAcceptableRequest(expectedErrors, response); + } + [Theory] [InlineData("Missing Data Holder Brand Id", "dataHolderBrandId")] [InlineData("Missing Data Holder Brand Name", "brandName")] @@ -236,14 +253,14 @@ public async Task AC05_Invalid_Version_Http_400(string xv) [InlineData("Missing Data Holder Auth Details Jwks Endpoint", "authDetails.jwksEndpoint")] public async Task AC06_Missing_Mandatory_Fields_Http_400(string testId, string elementToRemove, bool expectEnumErrorAsWell = false) { - Log.Information($"Executing test for: {testId}"); + Log.Information("Executing test for: {TestId}", testId); // Generate valid payload with only mandatory/minimun fields. DataHolderMetadata dataHolderMetadata = CreateValidDataholderMetadata(Industry.Banking, false); - Log.Information($"original:\n{GetJsonFromModel(dataHolderMetadata)}"); + Log.Information("original:\n{JsonModel}", GetJsonFromModel(dataHolderMetadata)); dataHolderMetadata = RemoveModelElementBasedOnJsonPath(dataHolderMetadata, elementToRemove); - Log.Information($"modified (element removed):\n{GetJsonFromModel(dataHolderMetadata)}"); + Log.Information("modified (element removed):\n{JsonModel}", GetJsonFromModel(dataHolderMetadata)); // Send to Register HttpResponseMessage response = await PostUpdateDataHolderRequest(GetJsonFromModel(dataHolderMetadata)); @@ -282,7 +299,7 @@ public async Task AC06_Missing_Mandatory_Fields_Http_400(string testId, string e [InlineData("Max Length Auth Details - JwksEndpoint", "authDetails.jwksEndpoint", 1000)] public async Task ACXX_Maximum_Field_Length_Exceeded(string testId, string elementUnderTest, int maxLength) { - Log.Information($"Executing test for: {testId} : Max Lenght: {maxLength}"); + Log.Information("Executing test for: {TestId} : Max Lenght: {MaxLength}", testId, maxLength); // Create dataHolder using maximum field length DataHolderMetadata dataHolderMetadata = CreateValidDataholderMetadata(Industry.Banking, true); @@ -550,7 +567,7 @@ private static async Task PostUpdateDataHolderRequest(strin if (!string.IsNullOrEmpty(accessToken)) { - request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); + request.Headers.Authorization = new AuthenticationHeaderValue(JwtBearerDefaults.AuthenticationScheme, accessToken); } Log.Information($"Sending payload:\n{payload}"); @@ -563,7 +580,7 @@ private static async Task PostUpdateDataHolderRequest(strin } - private async Task VerifyInvalidAndValidFieldResponse(HttpResponseMessage response, DataHolderMetadata dataHolderMetadata, string field, string value, bool isValid, Industry industry = Industry.Banking) + private static async Task VerifyInvalidAndValidFieldResponse(HttpResponseMessage response, DataHolderMetadata dataHolderMetadata, string field, string value, bool isValid, Industry industry = Industry.Banking) { // var response = await SendToStub(GetJsonFromModel(dataHolderMetadata), isValid ? "PASS" : "InvalidField"); @@ -582,7 +599,7 @@ private async Task VerifyInvalidAndValidFieldResponse(HttpResponseMessage respon } } - private async Task VerifyInvalidPayloadResponse(HttpResponseMessage response, string expectedErrorMessage) + private static async Task VerifyInvalidPayloadResponse(HttpResponseMessage response, string expectedErrorMessage) { ExpectedErrors expectedErrors = new ExpectedErrors(); @@ -591,7 +608,7 @@ private async Task VerifyInvalidPayloadResponse(HttpResponseMessage response, st await VerifyBadRequest(expectedErrors, response); } - private void VerifySuccessfulDataHolderUpdate(DataHolderMetadata expectedDataHolderMetadata, HttpResponseMessage httpResponseFromRegister, Industry industry) + private static void VerifySuccessfulDataHolderUpdate(DataHolderMetadata expectedDataHolderMetadata, HttpResponseMessage httpResponseFromRegister, Industry industry) { using (new AssertionScope()) { @@ -601,6 +618,8 @@ private void VerifySuccessfulDataHolderUpdate(DataHolderMetadata expectedDataHol string actualDataHolder = GetActualDataHolderFromDatabase(expectedDataHolderMetadata.LegalEntity.LegalEntityId, expectedDataHolderMetadata.DataHolderBrandId, industry); Assert_Json(GetJsonFromModel(expectedDataHolderMetadata), actualDataHolder); + + VerifyBrandLastUpdatedDateRecord(expectedDataHolderMetadata.LegalEntity.LegalEntityId); } } @@ -723,7 +742,7 @@ private static string GetActualDataHolderFromDatabase(string legalEntityId, stri } } - private async Task GetAzureAdAccessToken() + private static async Task GetAzureAdAccessToken() { var client = new HttpClient(); var content = new FormUrlEncodedContent(new[] @@ -745,7 +764,7 @@ private async Task GetAzureAdAccessToken() return tokenResnse.access_token; } - private async Task GetInvalidAzureAdAccessToken() + private static async Task GetInvalidAzureAdAccessToken() { var client = new HttpClient(); var content = new FormUrlEncodedContent(new[] diff --git a/Source/CDR.Register.IntegrationTests/API/Update/US50480_UpdateDataRecipients.cs b/Source/CDR.Register.IntegrationTests/API/Update/US50480_UpdateDataRecipients.cs index 1b0ff18..1781b34 100644 --- a/Source/CDR.Register.IntegrationTests/API/Update/US50480_UpdateDataRecipients.cs +++ b/Source/CDR.Register.IntegrationTests/API/Update/US50480_UpdateDataRecipients.cs @@ -1,4 +1,5 @@ -using CDR.Register.IntegrationTests.Extensions; +using CDR.Register.API.Infrastructure.Models; +using CDR.Register.IntegrationTests.Extensions; using CDR.Register.IntegrationTests.Models; using CDR.Register.Repository.Infrastructure; using FluentAssertions; @@ -14,7 +15,6 @@ using System.Linq; using System.Net; using System.Net.Http; -using System.Security.Principal; using System.Text; using System.Threading.Tasks; using Xunit; @@ -24,11 +24,11 @@ namespace CDR.Register.IntegrationTests.API.Update { public class US50480_UpdateDataRecipients : BaseTest { - public US50480_UpdateDataRecipients(ITestOutputHelper outputHelper) : base(outputHelper) { } + public US50480_UpdateDataRecipients(ITestOutputHelper outputHelper, TestFixture testFixture) : base(outputHelper, testFixture) { } private const string UPDATE_DATA_RECIPIENT_CURRENT_API_VERSION = "1"; private const string DEFAULT_SCOPES = "openid profile bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read energy:electricity.servicepoints.basic:read energy:electricity.servicepoints.detail:read energy:electricity.usage:read energy:electricity.der:read energy:accounts.basic:read energy:accounts.basic:read energy:accounts.detail:read " + - "energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:accounts.concessions:read energy:billing:read common:customer.basic:read common:customer.detail:read cdr:registration cdr-register:bank:read cdr-register:read"; + "energy:accounts.concessions:read energy:accounts.paymentschedule:read energy:accounts.concessions:read energy:billing:read common:customer.basic:read common:customer.detail:read cdr:registration cdr-register:read"; private const string DEFAULT_EXISTING_LEGAL_ENTITY_ID = "9d34ede4-2c76-4ecc-a31e-ea8392d31cc9"; private const string DATA_RECIPIENT_PARTICIPATION_TYPE = "DR"; @@ -115,7 +115,7 @@ public async Task AC05_Add_Brand_To_Existing_Legal_Entiry_Http_200() DataRecipientMetadata newDataRecipientMetadata = GetCopyOfDataRecipient(originalDataRecipient); newDataRecipientMetadata.DataRecipientBrands.First().DataRecipientBrandId = Guid.NewGuid().ToString(); newDataRecipientMetadata.DataRecipientBrands.First().BrandName = "Brand Name 2"; - newDataRecipientMetadata.DataRecipientBrands.First().SoftwareProducts.First().SoftwareProductId= Guid.NewGuid().ToString(); + newDataRecipientMetadata.DataRecipientBrands.First().SoftwareProducts.First().SoftwareProductId = Guid.NewGuid().ToString(); newDataRecipientMetadata.DataRecipientBrands.First().SoftwareProducts.First().SoftwareProductName = "Software Product Name 2"; // Send Updated Data Recipient to Register @@ -135,7 +135,7 @@ public async Task AC08_Add_Multiple_Duplicate_Certificates() { // Generate valid payload without a Software Product DataRecipientMetadata dataRecipient = GenerateValidDataRecipient(false); - + //Add Duplicate Cert dataRecipient.DataRecipientBrands.First().SoftwareProducts.First().Certificates.Add(new DataRecipientMetadata.Certificate() { @@ -284,7 +284,7 @@ public async Task AC12_Missing_Version_In_Header_Http_400(string xv) var response = await PostUpdateDataRecipientRequest(GetJsonFromModel(dataRecipientMetadata), xv: xv); ExpectedErrors expectedErrors = new(); - expectedErrors.AddExpectedError(ExpectedErrors.ErrorType.MissingHeader, "x-v"); + expectedErrors.AddExpectedError(ExpectedErrors.ErrorType.MissingHeader, "An API version x-v header is required, but was not specified."); // Assert Response await VerifyBadRequest(expectedErrors, response); @@ -293,7 +293,6 @@ public async Task AC12_Missing_Version_In_Header_Http_400(string xv) [Theory] [InlineData("0")] [InlineData("1.1")] - [InlineData("2")] public async Task AC13_Invalid_Version_Http_400(string xv) { // Generate valid payload with only mandatory/minimun fields. @@ -303,12 +302,30 @@ public async Task AC13_Invalid_Version_Http_400(string xv) var response = await PostUpdateDataRecipientRequest(GetJsonFromModel(dataRecipientMetadata), xv: xv); ExpectedErrors expectedErrors = new(); - expectedErrors.AddExpectedError(ExpectedErrors.ErrorType.InvalidVersion, $"Expected '{UPDATE_DATA_RECIPIENT_CURRENT_API_VERSION}'"); + expectedErrors.AddExpectedError(ExpectedErrors.ErrorType.InvalidVersion, "Version is not a positive Integer."); // Assert Response await VerifyBadRequest(expectedErrors, response); } + + [Theory] + [InlineData("20")] + public async Task AC20_Unsupported_Version_Http_400(string xv) + { + // Generate valid payload with only mandatory/minimun fields. + DataRecipientMetadata dataRecipientMetadata = GenerateValidDataRecipient(false); + + // Send to Register with blank x-v header + var response = await PostUpdateDataRecipientRequest(GetJsonFromModel(dataRecipientMetadata), xv: xv); + + ExpectedErrors expectedErrors = new(); + expectedErrors.AddExpectedError(ExpectedErrors.ErrorType.UnsupportedVersion, "Requested version is lower than the minimum version or greater than maximum version."); + + // Assert Response + await VerifyNotAcceptableRequest(expectedErrors, response); + } + [Theory] [InlineData("Missing Legal Entity Id", "legalEntityId")] [InlineData("Missing Legal Entity Name", "legalEntityName")] @@ -340,7 +357,7 @@ public async Task AC14_Missing_Mandatory_Fields_Http_400(string testId, string e DataRecipientMetadata dataRecipientMetadata = GenerateValidDataRecipient(); Log.Information($"Original Payload:\n{GetJsonFromModel(dataRecipientMetadata)}"); - + dataRecipientMetadata = RemoveModelElementBasedOnJsonPath(dataRecipientMetadata, elementToRemove); Log.Information($"Modified Payload (element removed):\n{GetJsonFromModel(dataRecipientMetadata)}"); @@ -361,9 +378,9 @@ public async Task AC14_Missing_Mandatory_Fields_Http_400(string testId, string e // Assert Response await VerifyBadRequest(expectedErrors, response); - + } - + [Fact] public async Task AC14_Missing_Multiple_Mandatory_Fields_Http_400() { @@ -379,7 +396,7 @@ public async Task AC14_Missing_Multiple_Mandatory_Fields_Http_400() Log.Information($"Modified Payload (elements removed):\n{GetJsonFromModel(dataRecipientMetadata)}"); - ExpectedErrors expectedErrors = new(); + ExpectedErrors expectedErrors = new(); expectedErrors.AddExpectedError(ExpectedErrors.ErrorType.MissingField, "LegalEntityName"); expectedErrors.AddExpectedError(ExpectedErrors.ErrorType.MissingField, "AccreditationNumber"); expectedErrors.AddExpectedError(ExpectedErrors.ErrorType.MissingField, "DataRecipientBrands[0].BrandName"); @@ -402,7 +419,7 @@ public async Task AC15_Valid_And_Invalid_Data_Recipient_Acreditation_Level(strin { DataRecipientMetadata dataRecipientMetadata = GenerateValidDataRecipient(); Log.Information($"Original Payload:\n{GetJsonFromModel(dataRecipientMetadata)}"); - + // Modify AccreditationLevel dataRecipientMetadata.AccreditationLevel = accreditationLevel; Log.Information($"Modified Payload (elements removed):\n{GetJsonFromModel(dataRecipientMetadata)}"); @@ -460,7 +477,7 @@ public async Task AC15_Valid_And_Invalid_Data_Recipient_Status(string status, bo HttpResponseMessage response = await PostUpdateDataRecipientRequest(GetJsonFromModel(dataRecipientMetadata)); - dataRecipientMetadata.Status = dataRecipientMetadata.Status.ToUpper(); + dataRecipientMetadata.Status = dataRecipientMetadata.Status.ToUpper(); await VerifyInvalidAndValidFieldResponse(response, dataRecipientMetadata, "Status", status, isValid); @@ -494,7 +511,7 @@ public async Task AC15_Valid_And_Invalid_Data_Recipient_Brand_Status(string stat [InlineData("Active")] [InlineData("INACTIVE")] [InlineData("REMOVED")] - [InlineData("foo", false)] + [InlineData("foo", false)] public async Task AC15_Valid_And_Invalid_Data_Recipient_Software_Product_Status(string status, bool isValid = true) { DataRecipientMetadata dataRecipientMetadata = GenerateValidDataRecipient(); @@ -522,11 +539,11 @@ public async Task AC16_Brand_Already_Associated_With_Different_Legal_Entity() // Modify the LegalEntityId to a new value and keep Data Recipient Brand LegalEntityId unchanged (already linked to orignal LegalEntityId). originalDataRecipientMetadata.LegalEntityId = Guid.NewGuid().ToString(); - + Log.Information($"Modified from Database:\n{GetJsonFromModel(originalDataRecipientMetadata)}"); string dataRecipientBrandId = originalDataRecipientMetadata.DataRecipientBrands.First().DataRecipientBrandId; - + HttpResponseMessage response = await PostUpdateDataRecipientRequest(GetJsonFromModel(originalDataRecipientMetadata)); await VerifyInvalidPayloadResponse(response, originalDataRecipientMetadata, $"dataRecipientBrandId '{dataRecipientBrandId}' is already associated with a different legal entity."); @@ -579,7 +596,7 @@ public async Task AC18_Duplicate_Data_Recipient_Brands_Http_400() await VerifyInvalidPayloadResponse(response, dataRecipientMetadata, $"Duplicate DataRecipientBrandId '{brandId}' is not allowed in the same request"); } - + [Fact] public async Task AC19_Duplicate_Software_Products_Http_400() { @@ -628,7 +645,7 @@ public async Task AC19_Multiple_Duplicate_Software_Products_Http_400() } - [Theory] + [Theory] [InlineData("Max Length Legal Entity - Name", "legalEntityName", 200)] [InlineData("Max Length Legal Entity - Accreditation Number", "accreditationNumber", 100)] [InlineData("Max Length Legal Entity - Logo Uri", "logoUri", 1000)] @@ -646,7 +663,7 @@ public async Task AC19_Multiple_Duplicate_Software_Products_Http_400() [InlineData("Max Length Software Product - Sector Identifier Uri", "dataRecipientBrands[0].softwareProducts[0].sectorIdentifierUri", 2048)] [InlineData("Max Length Software Product - Client Uri", "dataRecipientBrands[0].softwareProducts[0].clientUri", 1000)] [InlineData("Max Length Software Product - Tos Uri", "dataRecipientBrands[0].softwareProducts[0].tosUri", 1000)] - [InlineData("Max Length Software Product - Policy Uri", "dataRecipientBrands[0].softwareProducts[0].policyUri", 1000)] + [InlineData("Max Length Software Product - Policy Uri", "dataRecipientBrands[0].softwareProducts[0].policyUri", 1000)] [InlineData("Max Length Software Product - Recipient Base Uri", "dataRecipientBrands[0].softwareProducts[0].recipientBaseUri", 1000)] [InlineData("Max Length Software Product - Revocation Uri", "dataRecipientBrands[0].softwareProducts[0].revocationUri", 1000)] [InlineData("Max Length Software Product - Jwks Uri", "dataRecipientBrands[0].softwareProducts[0].jwksUri", 1000)] @@ -659,7 +676,7 @@ public async Task ACXX_Maximum_Field_Length_Exceeded(string testId, string eleme // Create dataRecipient using maximum field lenght DataRecipientMetadata dataRecipientMetadata = GenerateValidDataRecipient(true); string maxLengthValue = maxLenght.GenerateRandomString(); - dataRecipientMetadata = ReplaceModelValueBasedOnJsonPath(dataRecipientMetadata, elementUnderTest, maxLengthValue); + dataRecipientMetadata = ReplaceModelValueBasedOnJsonPath(dataRecipientMetadata, elementUnderTest, maxLengthValue); Log.Information($"+ve Scenario using maximum field lenght of '{maxLenght}':\n{GetJsonFromModel(dataRecipientMetadata)}"); // Send and verify positive scenario @@ -667,7 +684,7 @@ public async Task ACXX_Maximum_Field_Length_Exceeded(string testId, string eleme await VerifyInvalidAndValidFieldResponse(response, dataRecipientMetadata, ConvertJsonPathToPascalCase(elementUnderTest), maxLengthValue, true); // Create dataRecipient using maximum field lenght plus one - string maxLengthPlusOneValue = (maxLenght+1).GenerateRandomString(); + string maxLengthPlusOneValue = (maxLenght + 1).GenerateRandomString(); dataRecipientMetadata = ReplaceModelValueBasedOnJsonPath(dataRecipientMetadata, elementUnderTest, maxLengthPlusOneValue); Log.Information($"-ve:\n{GetJsonFromModel(dataRecipientMetadata)}"); @@ -676,22 +693,22 @@ public async Task ACXX_Maximum_Field_Length_Exceeded(string testId, string eleme await VerifyInvalidAndValidFieldResponse(responseNegative, dataRecipientMetadata, ConvertJsonPathToPascalCase(elementUnderTest.GetLastFieldFromJsonPath()), maxLengthPlusOneValue, false); } - + private static string RemoveEmptyJsonArrays(string json) { JObject jObject = JsonConvert.DeserializeObject(json); - jObject.RemoveEmptyArrays(); + jObject.RemoveEmptyArrays(); return jObject.ToString(); } - private DataRecipientMetadata GetCopyOfDataRecipient(DataRecipientMetadata dataRecipientMetadata) + private static DataRecipientMetadata GetCopyOfDataRecipient(DataRecipientMetadata dataRecipientMetadata) { string dataRecipientJson = GetJsonFromModel(dataRecipientMetadata); return JsonConvert.DeserializeObject(dataRecipientJson); } - private async Task VerifyInvalidAndValidFieldResponse(HttpResponseMessage response,DataRecipientMetadata dataRecipientMetadata, string field, string value, bool isValid) + private static async Task VerifyInvalidAndValidFieldResponse(HttpResponseMessage response, DataRecipientMetadata dataRecipientMetadata, string field, string value, bool isValid) { if (isValid) @@ -707,27 +724,27 @@ private async Task VerifyInvalidAndValidFieldResponse(HttpResponseMessage respon } } - private async Task VerifyInvalidPayloadResponse(HttpResponseMessage response, DataRecipientMetadata dataRecipientMetadata, string expectedErrorMessage) + private static async Task VerifyInvalidPayloadResponse(HttpResponseMessage response, DataRecipientMetadata dataRecipientMetadata, string expectedErrorMessage) { ExpectedErrors expectedErrors = new ExpectedErrors(); expectedErrors.AddExpectedError(ExpectedErrors.ErrorType.InvalidField, expectedErrorMessage); await VerifyBadRequest(expectedErrors, response); - + } - private void VerifySuccessfulDataRecipientUpdate(DataRecipientMetadata expectedDataRecipientMetadata, HttpResponseMessage httpResponseFromRegister) + private static void VerifySuccessfulDataRecipientUpdate(DataRecipientMetadata expectedDataRecipientMetadata, HttpResponseMessage httpResponseFromRegister) { using (new AssertionScope()) { //Check status code - httpResponseFromRegister.StatusCode.Should().Be(HttpStatusCode.OK); + httpResponseFromRegister.StatusCode.Should().Be(HttpStatusCode.OK); // For each data recipient, order software products and set default scope to default if missing foreach (var dr in expectedDataRecipientMetadata.DataRecipientBrands) { - if(dr.SoftwareProducts != null) + if (dr.SoftwareProducts != null) { dr.SoftwareProducts = dr.SoftwareProducts.OrderBy(sp => sp.SoftwareProductId).ToList(); @@ -747,10 +764,12 @@ private void VerifySuccessfulDataRecipientUpdate(DataRecipientMetadata expectedD expectedDataRecipientJson = RemoveEmptyJsonArrays(expectedDataRecipientJson); Assert_Json(expectedDataRecipientJson, actualDataRecipient); + + VerifyBrandLastUpdatedDateRecord(expectedDataRecipientMetadata.LegalEntityId); } } - private static async Task PostUpdateDataRecipientRequest(string payload, string xv= UPDATE_DATA_RECIPIENT_CURRENT_API_VERSION) + private static async Task PostUpdateDataRecipientRequest(string payload, string xv = UPDATE_DATA_RECIPIENT_CURRENT_API_VERSION) { var clientHandler = new HttpClientHandler(); @@ -821,11 +840,11 @@ private static DataRecipientMetadata GenerateValidDataRecipient(bool includeOpti } return dataRecipientMetadata; - + } private static DataRecipientMetadata.SoftwareProduct GenerateNewSofwareProduct() { - DataRecipientMetadata.SoftwareProduct softwareProduct = new () + DataRecipientMetadata.SoftwareProduct softwareProduct = new() { SoftwareProductId = Guid.NewGuid().ToString(), SoftwareProductName = "Test Automation Data Recipient Brand Name 001 - Software Product 001", @@ -876,14 +895,14 @@ private static string GetActualDataRecipientFromDatabase(string legalEntityId) legalEntityId = participation.LegalEntityId, legalEntityName = participation.LegalEntity.LegalEntityName, accreditationNumber = participation.LegalEntity.AccreditationNumber, - accreditationLevel = participation.LegalEntity.AccreditationLevel.AccreditationLevelCode.ToUpper(), + accreditationLevel = participation.LegalEntity.AccreditationLevel.AccreditationLevelCode.ToUpper(), logoUri = participation.LegalEntity.LogoUri, registrationNumber = participation.LegalEntity.RegistrationNumber, registrationDate = participation.LegalEntity.RegistrationDate.Value.ToString("yyyy-MM-dd"), registeredCountry = participation.LegalEntity.RegisteredCountry, abn = participation.LegalEntity.Abn, - acn =participation.LegalEntity.Acn, - arbn = participation.LegalEntity.Arbn == "" ? null : participation.LegalEntity.Arbn, + acn = participation.LegalEntity.Acn, + arbn = participation.LegalEntity.Arbn == "" ? null : participation.LegalEntity.Arbn, anzsicDivision = participation.LegalEntity.AnzsicDivision, organisationType = participation.LegalEntity.OrganisationType.OrganisationTypeCode.ToUpper(), status = participation.Status.ParticipationStatusCode, @@ -908,19 +927,20 @@ private static string GetActualDataRecipientFromDatabase(string legalEntityId) redirectUris = softwareProduct.RedirectUris.Split(" ", StringSplitOptions.None).ToList(), jwksUri = softwareProduct.JwksUri, scope = softwareProduct.Scope, - status = softwareProduct.Status.SoftwareProductStatusCode, + status = softwareProduct.Status.SoftwareProductStatusCode, certificates = softwareProduct.Certificates.Select(certificates => new { - commonName = certificates.CommonName, + commonName = certificates.CommonName, thumbprint = certificates.Thumbprint, }) - }), + }), }), - + }); - string jsonRepresentation = JsonConvert.SerializeObject(expectedDataRecipients.First(), Formatting.Indented, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore }); + string jsonRepresentation = JsonConvert.SerializeObject(expectedDataRecipients.First()); + return RemoveEmptyJsonArrays(jsonRepresentation); } catch (Exception ex) diff --git a/Source/CDR.Register.IntegrationTests/BaseTest.cs b/Source/CDR.Register.IntegrationTests/BaseTest.cs index e5a3b3a..cfc6175 100644 --- a/Source/CDR.Register.IntegrationTests/BaseTest.cs +++ b/Source/CDR.Register.IntegrationTests/BaseTest.cs @@ -1,9 +1,12 @@ -using CDR.Register.IntegrationTests.API.Update; +using CDR.Register.Domain.Models; +using CDR.Register.IntegrationTests.API.Update; using CDR.Register.IntegrationTests.Extensions; +using CDR.Register.Repository.Infrastructure; using FluentAssertions; using FluentAssertions.Execution; using FluentAssertions.Json; using Microsoft.Data.SqlClient; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Newtonsoft.Json; using Newtonsoft.Json.Linq; @@ -51,7 +54,7 @@ abstract public class BaseTest0 abstract public class BaseTest : BaseTest0, IClassFixture { - public BaseTest(ITestOutputHelper output) + public BaseTest(ITestOutputHelper output, TestFixture testFixture) { Log.Logger = new LoggerConfiguration() .WriteTo.Console(theme: AnsiConsoleTheme.Code) @@ -62,6 +65,9 @@ public BaseTest(ITestOutputHelper output) }) .WriteTo.TestOutput(output) .CreateLogger(); + + JsonConvert.DefaultSettings = () => new CdrJsonSerializerSettings(); + TestFixture=testFixture; } @@ -99,7 +105,7 @@ static public IConfigurationRoot Configuration protected const string DEFAULT_CERTIFICATE_COMMON_NAME = "MockDataRecipient"; // This seed data is copied from ..\CDR.Register.Admin.API\Data\ (see CDR.Register.IntegrationTests.csproj) - public static string SEEDDATA_FILENAME = $"seed-data.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json"; + public static readonly string SEEDDATA_FILENAME = $"seed-data.{Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")}.json"; // URLs static public string TLS_BaseURL => Configuration["TLS_BaseURL"] @@ -108,8 +114,8 @@ static public IConfigurationRoot Configuration ?? throw new Exception($"{nameof(MTLS_BaseURL)} - configuration setting not found"); static public string ADMIN_BaseURL => Configuration["Admin_BaseURL"] ?? throw new Exception($"{nameof(ADMIN_BaseURL)} - configuration setting not found"); - static public string ADMIN_URL = ADMIN_BaseURL + "/admin/metadata"; - static public string IDENTITYSERVER_URL = MTLS_BaseURL + "/idp/connect/token"; + static public readonly string ADMIN_URL = ADMIN_BaseURL + "/admin/metadata"; + static public readonly string IDENTITYSERVER_URL = MTLS_BaseURL + "/idp/connect/token"; // START CTS Settings static public string AZURE_AD_TOKEN_ENDPOINT_URL => Configuration["CtsSettings:AzureAd:TokenEndpointUrl"] ?? throw new Exception($"{nameof(AZURE_AD_TOKEN_ENDPOINT_URL)} - configuration setting not found"); @@ -124,7 +130,10 @@ static public IConfigurationRoot Configuration static public string SSA_DOWNSTREAM_BASE_URL => Configuration["SSA_Downstream_BaseUrl"] ?? throw new Exception($"{nameof(SSA_DOWNSTREAM_BASE_URL)} - configuration setting not found"); static public string DISCOVERY_DOWNSTREAM_BASE_URL => Configuration["Discovery_Downstream_BaseUrl"] ?? throw new Exception($"{nameof(DISCOVERY_DOWNSTREAM_BASE_URL)} - configuration setting not found"); static public string STATUS_DOWNSTREAM_BASE_URL => Configuration["Status_Downstream_BaseUrl"] ?? throw new Exception($"{nameof(STATUS_DOWNSTREAM_BASE_URL)} - configuration setting not found"); - static public string IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL => Configuration["IdentityProvider_Downstream_BaseUrl"] ?? throw new Exception($"{nameof(IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL)} - configuration setting not found"); + static public string IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL => Configuration["IdentityProvider_Downstream_BaseUrl"] ?? throw new Exception($"{nameof(IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL)} - configuration setting not found"); + + public TestFixture TestFixture { get; } + //END CTS Settings protected const string EXPECTED_UNSUPPORTED_ERROR = @" @@ -133,8 +142,7 @@ static public IConfigurationRoot Configuration { ""code"": ""urn:au-cds:error:cds-all:Header/UnsupportedVersion"", ""title"": ""Unsupported Version"", - ""detail"": ""Version Requested is lower than the minimum version or greater than maximum version"", - ""meta"": {} + ""detail"": ""Requested version is lower than the minimum version or greater than maximum version."", } ] }"; @@ -145,20 +153,18 @@ static public IConfigurationRoot Configuration { ""code"": ""urn:au-cds:error:cds-all:Header/InvalidVersion"", ""title"": ""Invalid Version"", - ""detail"": ""Version header must be a positive integer between 1 and 1000"", - ""meta"": {} + ""detail"": ""Version is not a positive Integer."" } ] }"; - protected const string EXPECTED_MSSING_X_V_ERROR = @" + protected const string EXPECTED_MISSING_X_V_ERROR = @" { ""errors"": [ { ""code"": ""urn:au-cds:error:cds-all:Header/Missing"", ""title"": ""Missing Required Header"", - ""detail"": ""An API version X-V Header is required but was not specified"", - ""meta"": {} + ""detail"": ""An API version x-v header is required, but was not specified."", } ] }"; @@ -171,7 +177,7 @@ static public IConfigurationRoot Configuration public static async Task Assert_HasContent_Json(string expectedJson, HttpContent content) { var actualJson = await content.ReadAsStringAsync(); - Log.Information($"Verifying Acutal Json:\n{actualJson}\n against expected:\n{expectedJson}"); + Log.Information($"Verifying Actual Json:\n{actualJson}\n against expected:\n{expectedJson}"); Assert_Json(expectedJson, actualJson); } @@ -182,7 +188,7 @@ public static async Task Assert_HasContent_Json(string expectedJson, HttpContent /// The actual json public static void Assert_Json(string expectedJson, string actualJson) { - Log.Information($"Verifying Acutal Json:\n{actualJson}\n against expected:\n{expectedJson}"); + Log.Information($"Verifying Actual Json:\n{actualJson}\n against expected:\n{expectedJson}"); //Use Fluentassertions.Json to compare. Whitespace and order is ignored. JToken expected = JToken.Parse(expectedJson); JToken actual = JToken.Parse(actualJson); @@ -241,9 +247,9 @@ public static void AssertClaim(IEnumerable claims, string claimType, stri } } - protected string GetJsonFromModel(T model) + protected static string GetJsonFromModel(T model) { - return JsonConvert.SerializeObject(model, Formatting.Indented, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore }); + return JsonConvert.SerializeObject(model); } /// @@ -442,10 +448,48 @@ Participation p } } - protected async Task VerifyBadRequest(ExpectedErrors expectedErrors, HttpResponseMessage httpResponseFromRegister) + protected static void VerifyBrandLastUpdatedDateRecord(string legalEntiryId) { - Log.Information($"Expected error response: \n{GetJsonFromModel(expectedErrors)}"); - + var brands = GetActualBrandsFromDatabase(legalEntiryId); + + // Iterate through all brands and check the LastUpdate date on the Brand record. + // A 120 second tolerance has been added due to time differences between assertion and the time the record was updated/added. + foreach (var b in brands) + { + Log.Information($"Verifying LastUpdate Brand with Id: '{b.BrandId}' is within 120 seconds from '{DateTime.UtcNow}'"); + b.LastUpdated.Should().BeCloseTo(DateTime.UtcNow, TimeSpan.FromSeconds(120), because: $"Brand with Id: '{b.BrandId}' was just updated/added."); + } + + } + + protected static ICollection GetActualBrandsFromDatabase(string legalEntityId) + { + + var legalEntityIdGuid = Guid.Parse(legalEntityId); + + try + { + using var dbContext = new RegisterDatabaseContext(new DbContextOptionsBuilder().UseSqlServer(Configuration.GetConnectionString("DefaultConnection")).Options); + + var brands = + dbContext.Participations.AsNoTracking() + .Include(participation => participation.LegalEntity) + .Include(participation => participation.Brands) + .Where(participation => participation.LegalEntityId == legalEntityIdGuid) + .SelectMany(participation => participation.Brands) + .ToArray(); + return brands; + } + catch (Exception ex) + { + throw new Exception($"Error getting brands - {ex.Message}"); + } + } + + protected static async Task VerifyBadRequest(ExpectedErrors expectedErrors, HttpResponseMessage httpResponseFromRegister) + { + Log.Information("Expected error response: \n{JsonModel}", GetJsonFromModel(expectedErrors)); + using (new AssertionScope()) { //Check status code @@ -457,10 +501,25 @@ protected async Task VerifyBadRequest(ExpectedErrors expectedErrors, HttpRespons } } - protected async Task VerifyUnauthorisedRequest(HttpResponseMessage httpResponseFromRegister) + protected static async Task VerifyNotAcceptableRequest(ExpectedErrors expectedErrors, HttpResponseMessage httpResponseFromRegister) + { + Log.Information("Expected error response: \n{JsonModel}", GetJsonFromModel(expectedErrors)); + + using (new AssertionScope()) + { + //Check status code + httpResponseFromRegister.StatusCode.Should().Be(HttpStatusCode.NotAcceptable); + + string actualErrors = await httpResponseFromRegister.Content.ReadAsStringAsync(); + + Assert_Json(GetJsonFromModel(expectedErrors), actualErrors); + } + } + + protected static async Task VerifyUnauthorisedRequest(HttpResponseMessage httpResponseFromRegister) { var expectedErrorJson = "{\"error\":\"invalid_token\"}"; - Log.Information($"Expected error response: \n{expectedErrorJson}"); + Log.Information("Expected error response: \n{ExpectedErrorJson}", expectedErrorJson); using (new AssertionScope()) { @@ -474,7 +533,7 @@ protected async Task VerifyUnauthorisedRequest(HttpResponseMessage httpResponseF } } - protected string ConvertJsonPathToPascalCase(string jsonPath) + protected static string ConvertJsonPathToPascalCase(string jsonPath) { string[] allParts = jsonPath.Split("."); @@ -486,14 +545,14 @@ protected string ConvertJsonPathToPascalCase(string jsonPath) return string.Join(".", allParts); } - protected T? RemoveModelElementBasedOnJsonPath(T model, string path) + protected static T? RemoveModelElementBasedOnJsonPath(T model, string path) { - JToken mainJoken = JObject.FromObject(model ?? throw new NullException("Model cannot be null.")); + JToken mainJoken = JObject.FromObject(model ?? throw new ArgumentNullException(nameof(model))); //If an array element, remove element. if (path.Last() == ']') { - JToken token = mainJoken.SelectToken(path, true) ?? throw new NullException("mainJoken cannot be null."); + JToken token = mainJoken.SelectToken(path, true) ?? throw new Exception("mainJoken cannot be null."); token.Remove(); mainJoken.RemoveEmptyArrays(); } @@ -506,11 +565,11 @@ protected string ConvertJsonPathToPascalCase(string jsonPath) } - protected T? ReplaceModelValueBasedOnJsonPath(T model, string path, string newValue) + protected static T? ReplaceModelValueBasedOnJsonPath(T model, string path, string newValue) { - JToken mainJoken = JObject.FromObject(model ?? throw new NullException("Model cannot be null.")); + JToken mainJoken = JObject.FromObject(model ?? throw new ArgumentNullException(nameof(model))); - JToken tokenToUpdate = mainJoken.SelectToken(path) ?? throw new NullException($"tokenToUpdate is null. Ensure json path '{path}' exists."); ; + JToken tokenToUpdate = mainJoken.SelectToken(path) ?? throw new Exception($"tokenToUpdate is null. Ensure json path '{path}' exists."); ; tokenToUpdate.Replace(newValue); diff --git a/Source/CDR.Register.IntegrationTests/CDR.Register.IntegrationTests.csproj b/Source/CDR.Register.IntegrationTests/CDR.Register.IntegrationTests.csproj index bed1481..facad0a 100644 --- a/Source/CDR.Register.IntegrationTests/CDR.Register.IntegrationTests.csproj +++ b/Source/CDR.Register.IntegrationTests/CDR.Register.IntegrationTests.csproj @@ -1,92 +1,86 @@  - - - net6.0 - false - 1.3.2 - 1.3.2 - 1.3.2 - - - - - - - - - - - Always - appsettings.json - - - Always - appsettings.json - - - Always - - - Always - - - Always - - - - - - - - - - - - - - - - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - - - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - - - - - - + + false + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) + + + + + + + + + Always + appsettings.json + + + Always + appsettings.json + + + Always + + + Always + + + Always + + + + + + + + + + + + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + + + Always + + + Always + + + Always + + + Always + + + Always + + + Always + + + + + + + \ No newline at end of file diff --git a/Source/CDR.Register.IntegrationTests/ConnectionStringCheck.cs b/Source/CDR.Register.IntegrationTests/ConnectionStringCheck.cs index eca20a7..ceff2dc 100644 --- a/Source/CDR.Register.IntegrationTests/ConnectionStringCheck.cs +++ b/Source/CDR.Register.IntegrationTests/ConnectionStringCheck.cs @@ -16,7 +16,7 @@ static public class ConnectionStringCheck PRODUCTION_SERVER }; - static public string Check(string connectionString) + static public string? Check(string? connectionString) { if (!String.IsNullOrEmpty(connectionString)) { @@ -67,7 +67,7 @@ public void WhenOnBlackList_ShouldThrowException(string connectionString, bool? [InlineData("sql-cdrsandbox-test.database.windows.net")] [InlineData("localhost")] [InlineData("mssql")] - public void WhenNotOnBlackList_ShouldNotThrowException(string connectionString) + public void WhenNotOnBlackList_ShouldNotThrowException(string? connectionString) { using (new AssertionScope()) { diff --git a/Source/CDR.Register.IntegrationTests/Gateway/US12841_Gateway_MTLS_Tests.cs b/Source/CDR.Register.IntegrationTests/Gateway/US12841_Gateway_MTLS_Tests.cs index 30b2878..e5b2801 100644 --- a/Source/CDR.Register.IntegrationTests/Gateway/US12841_Gateway_MTLS_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/Gateway/US12841_Gateway_MTLS_Tests.cs @@ -10,6 +10,7 @@ using CDR.Register.IntegrationTests.Infrastructure; using FluentAssertions; using FluentAssertions.Execution; +using Microsoft.AspNetCore.Authentication.JwtBearer; using Xunit; using Xunit.Abstractions; @@ -20,7 +21,7 @@ namespace CDR.Register.IntegrationTests.Gateway /// public class US12841_Gateway_MTLS_Tests : BaseTest { - public US12841_Gateway_MTLS_Tests(ITestOutputHelper outputHelper) : base(outputHelper) { } + public US12841_Gateway_MTLS_Tests(ITestOutputHelper outputHelper, TestFixture testFixture) : base(outputHelper, testFixture) { } // Client certificates const string INVALID_CERTIFICATE_FILENAME = "Certificates/client-invalid.pfx"; @@ -30,7 +31,7 @@ public US12841_Gateway_MTLS_Tests(ITestOutputHelper outputHelper) : base(outputH // Client assertion private static readonly string AUDIENCE = IDENTITYSERVER_URL; - private const string SCOPE = "cdr-register:bank:read cdr-register:read"; + private const string SCOPE = "cdr-register:read"; // Token request private const string GRANT_TYPE = "client_credentials"; @@ -123,7 +124,7 @@ public async Task AC01_PostAccessTokenRequest_WithClientCert_ShouldRespondWith_2 // Expected AccessToken const int ACCESSTOKEN_EXPIRESIN = 300; - const string ACCESSTOKEN_TOKENTYPE = "Bearer"; + const string ACCESSTOKEN_TOKENTYPE = JwtBearerDefaults.AuthenticationScheme; // Arrange var client = GetClient(CERTIFICATE_FILENAME, CERTIFICATE_PASSWORD); @@ -151,7 +152,6 @@ public async Task AC01_PostAccessTokenRequest_WithClientCert_ShouldRespondWith_2 accessToken.token_type.Should().Be(ACCESSTOKEN_TOKENTYPE); // Assert - Check scope - accessToken.scope.Should().Contain("cdr-register:bank:read"); accessToken.scope.Should().Contain("cdr-register:read"); // Assert - Check the JWT access_token @@ -244,7 +244,7 @@ private static async Task Test_GetDataHolderBrands( var accessTokenRequest = GetAccessTokenRequest(certificateFilename, certificatePassword); var accessTokenResponse = await client.SendAsync(accessTokenRequest); var accessToken = JsonSerializer.Deserialize(await accessTokenResponse.Content.ReadAsStringAsync()); - request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken.access_token); + request.Headers.Authorization = new AuthenticationHeaderValue(JwtBearerDefaults.AuthenticationScheme, accessToken.access_token); } beforeRequest?.Invoke(); @@ -311,7 +311,6 @@ public async Task AC09_GetDataHolderBrands_WithNoAccessToken_AndClientCert_Shoul ""code"": ""urn:au-cds:error:cds-all:Authorisation/AdrStatusNotActive"", ""title"": ""ADR Status Is Not Active"", ""detail"": """", - ""meta"": {} } ] }"; @@ -405,7 +404,7 @@ private static async Task Test_GetSSA( var accessTokenResponse = await client.SendAsync(accessTokenRequest); var accessToken = JsonSerializer.Deserialize(await accessTokenResponse.Content.ReadAsStringAsync()); - request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken.access_token); + request.Headers.Authorization = new AuthenticationHeaderValue(JwtBearerDefaults.AuthenticationScheme, accessToken.access_token); } beforeRequest?.Invoke(); diff --git a/Source/CDR.Register.IntegrationTests/IdentityServer/US12665_IdentityServer_OIDC_Tests.cs b/Source/CDR.Register.IntegrationTests/IdentityServer/US12665_IdentityServer_OIDC_Tests.cs index 0e814e4..867a7fa 100644 --- a/Source/CDR.Register.IntegrationTests/IdentityServer/US12665_IdentityServer_OIDC_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/IdentityServer/US12665_IdentityServer_OIDC_Tests.cs @@ -14,7 +14,7 @@ namespace CDR.Register.IntegrationTests.IdentityServer /// public class US12665_IdentityServer_OIDC_Tests : BaseTest { - public US12665_IdentityServer_OIDC_Tests(ITestOutputHelper outputHelper) : base(outputHelper) { } + public US12665_IdentityServer_OIDC_Tests(ITestOutputHelper outputHelper, TestFixture testFixture) : base(outputHelper, testFixture) { } [Fact] public async Task AC01_Get_ShouldRespondWith_200OK_OIDC() { @@ -38,7 +38,7 @@ public async Task AC01_Get_ShouldRespondWith_200OK_OIDC() public async Task AC02_Get_ShouldRespondWith_200OK_OIDC() { // Arrange - string ctsBaseUrl = $"{GenerateDynamicCtsUrl(IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL)}"; + string ctsBaseUrl = $"{GenerateDynamicCtsUrl(IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL)}"; // Act var response = await new Infrastructure.API { @@ -47,11 +47,11 @@ public async Task AC02_Get_ShouldRespondWith_200OK_OIDC() }.SendAsync(); // Assert - await AssertOidcConfiguration(response, ReplacePublicHostName(ctsBaseUrl, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL), ReplaceSecureHostName(ctsBaseUrl, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL)); + await AssertOidcConfiguration(response, ReplacePublicHostName(ctsBaseUrl, IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL), ReplaceSecureHostName(ctsBaseUrl, IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL)); } - private async Task AssertOidcConfiguration(HttpResponseMessage response, string publicBaseUrl, string secureBaseUrl) + private static async Task AssertOidcConfiguration(HttpResponseMessage response, string publicBaseUrl, string secureBaseUrl) { using (new AssertionScope()) { @@ -70,7 +70,8 @@ private async Task AssertOidcConfiguration(HttpResponseMessage response, string ""claims_supported"": [""sub""], ""id_token_signing_alg_values_supported"": [""PS256""], ""subject_types_supported"": [""public""], - ""scopes_supported"": [""cdr-register:bank:read"",""cdr-register:read""], + ""scopes_supported"": [""cdr-register:read""], + ""code_challenge_methods_supported"": [""plain"",""S256""], ""response_types_supported"": [""token""], ""grant_types_supported"": [""client_credentials""], ""token_endpoint_auth_methods_supported"": [""private_key_jwt""], diff --git a/Source/CDR.Register.IntegrationTests/IdentityServer/US14045_IdentityServer_Token_Tests.cs b/Source/CDR.Register.IntegrationTests/IdentityServer/US14045_IdentityServer_Token_Tests.cs index 2b47466..a0bf65d 100644 --- a/Source/CDR.Register.IntegrationTests/IdentityServer/US14045_IdentityServer_Token_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/IdentityServer/US14045_IdentityServer_Token_Tests.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.IdentityModel.Tokens.Jwt; using System.Linq; using System.Net; @@ -11,6 +12,7 @@ using CDR.Register.IntegrationTests.Infrastructure; using FluentAssertions; using FluentAssertions.Execution; +using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Http; using Microsoft.IdentityModel.Tokens; using Serilog; @@ -27,14 +29,14 @@ namespace CDR.Register.IntegrationTests.IdentityServer /// public class US14045_IdentityServer_Token_Tests : BaseTest { - public US14045_IdentityServer_Token_Tests(ITestOutputHelper outputHelper) : base(outputHelper) { } + public US14045_IdentityServer_Token_Tests(ITestOutputHelper outputHelper, TestFixture testFixture) : base(outputHelper, testFixture) { } protected const string CLIENTASSERTION_ISSUER = "86ecb655-9eba-409c-9be3-59e7adf7080d"; protected static string CLIENTASSERTION_AUDIENCE => MTLS_BaseURL + "/idp/connect/token"; protected const string CLIENTASSERTION_GRANT_TYPE = "client_credentials"; protected const string CLIENTASSERTION_CLIENT_ID = "86ecb655-9eba-409c-9be3-59e7adf7080d"; - protected const string CLIENTASSERTION_SCOPE = "cdr-register:bank:read cdr-register:read"; + protected const string CLIENTASSERTION_SCOPE = "cdr-register:read"; protected const string CLIENTASSERTION_CLIENT_ASSERTION_TYPE = "urn:ietf:params:oauth:client-assertion-type:jwt-bearer"; private static HttpClient GetClient() @@ -61,11 +63,11 @@ private static HttpClient GetClientWithCertificate( private static string GetClientAssertion( string certificateFilename = CERTIFICATE_FILENAME, - string certificatePassword = CERTIFICATE_PASSWORD, + string certificatePassword = CERTIFICATE_PASSWORD, string clientAssertionIssuer = CLIENTASSERTION_ISSUER, string? clientAssetionAudience = null, - string subClaim = CLIENTASSERTION_ISSUER, - string? jtiClaim = null, + string subClaim = CLIENTASSERTION_ISSUER, + string? jtiClaim = null, string? signingAlgorithm = SecurityAlgorithms.RsaSsaPssSha256) { if (clientAssetionAudience == null) @@ -73,7 +75,7 @@ private static string GetClientAssertion( clientAssetionAudience = CLIENTASSERTION_AUDIENCE; } - if(jtiClaim == null) + if (jtiClaim == null) { jtiClaim = Guid.NewGuid().ToString(); } @@ -83,14 +85,15 @@ private static string GetClientAssertion( } private static HttpRequestMessage GetAccessTokenRequest( - string grant_type, - string client_id, - string client_assertion_type, - string client_assertion, - string? content_type_header = "application/x-www-form-urlencoded", - string scope = CLIENTASSERTION_SCOPE) + string? grant_type, + string? client_id, + string? client_assertion_type, + string? client_assertion, + string content_type_header = "application/x-www-form-urlencoded", + string scope = CLIENTASSERTION_SCOPE, + string? tokenEndpointUrl = null) { - static string BuildContent(string grant_type, string client_id, string client_assertion_type, string client_assertion, string scope) + static string BuildContent(string? grant_type, string? client_id, string? client_assertion_type, string? client_assertion, string? scope) { var kvp = new KeyValuePairBuilder(); @@ -119,7 +122,12 @@ static string BuildContent(string grant_type, string client_id, string client_as return kvp.Value; } - var request = new HttpRequestMessage(HttpMethod.Post, IDENTITYSERVER_URL) + if (tokenEndpointUrl == null) + { + tokenEndpointUrl = IDENTITYSERVER_URL; + } + + var request = new HttpRequestMessage(HttpMethod.Post, tokenEndpointUrl) { Content = new StringContent( BuildContent(grant_type, client_id, client_assertion_type, client_assertion, scope), @@ -127,7 +135,7 @@ static string BuildContent(string grant_type, string client_id, string client_as content_type_header) }; - if (content_type_header == null) + if (string.IsNullOrEmpty(content_type_header)) { request.Content.Headers.ContentType = null; } @@ -142,7 +150,7 @@ static string BuildContent(string grant_type, string client_id, string client_as [Theory] [InlineData(null)] // null client_id should pass [InlineData(CLIENTASSERTION_CLIENT_ID)] // valid client_id should pass - public async Task AC01_AC03_TokenRequest_Valid_ShouldRespondWith_200OK_AccessToken(string clientId) + public async Task AC01_AC03_TokenRequest_Valid_ShouldRespondWith_200OK_AccessToken(string? clientId) { static async Task GetValidatedToken(AccessToken accessToken) { @@ -188,7 +196,7 @@ static async Task GetValidatedToken(AccessToken accessToken) // Act var response = await client.SendAsync(request); - Log.Information($"Response from {IDENTITYSERVER_URL}: {response.StatusCode} \n{response.Content.ReadAsStringAsync().Result}"); + Log.Information("Response from {IdentityServerUrl}: {StatusCode} \n{Content}", IDENTITYSERVER_URL, response.StatusCode, await response.Content.ReadAsStringAsync()); // Assert using (new AssertionScope()) @@ -206,10 +214,10 @@ static async Task GetValidatedToken(AccessToken accessToken) accessToken.expires_in.Should().Be(300); // Assert - Check token type - accessToken.token_type.Should().Be("Bearer"); + accessToken.token_type.Should().Be(JwtBearerDefaults.AuthenticationScheme); // Assert - Check scope - accessToken.scope.Should().Contain("cdr-register:bank:read"); + accessToken.scope.Should().Contain("cdr-register:read"); // Assert - Validate access token SecurityToken? validatedToken = null; @@ -232,7 +240,7 @@ static async Task GetValidatedToken(AccessToken accessToken) [Theory] [InlineData(null, HttpStatusCode.BadRequest, @"{""error"":""invalid_request"",""error_description"":""Content-Type is not application/x-www-form-urlencoded""}")] [InlineData("application/foo", HttpStatusCode.UnsupportedMediaType, null)] - public async Task AC04_TokenRequest_InvaldiContentType_ShouldRespondWith_400BadRequest_ErrorResponse(string contentTypeHeader, HttpStatusCode expectedHttpStatus, string expectedError) + public async Task AC04_TokenRequest_InvaldiContentType_ShouldRespondWith_400BadRequest_ErrorResponse(string? contentTypeHeader, HttpStatusCode expectedHttpStatus, string? expectedError) { // Arrange var client = GetClientWithCertificate(); @@ -267,7 +275,7 @@ public async Task AC04_TokenRequest_InvaldiContentType_ShouldRespondWith_400BadR [InlineData(null)] // omit granttype [InlineData("")] // blank granttype [InlineData("foo")] // non-blank - public async Task AC05_TokenRequest_InvalidGrantType_ShouldRespondWith_400BadRequest_ErrorResponse(string grantType) + public async Task AC05_TokenRequest_InvalidGrantType_ShouldRespondWith_400BadRequest_ErrorResponse(string? grantType) { // Arrange var client = GetClientWithCertificate(); @@ -301,7 +309,7 @@ public async Task AC05_TokenRequest_InvalidGrantType_ShouldRespondWith_400BadReq [InlineData(null)] // omit client assertion [InlineData("")] // blank [InlineData("foo")] // invalid - public async Task AC06_TokenRequest_InvalidClientAssertion_ShouldRespondWith_400BadRequest_ErrorResponse(string clientAssertion) + public async Task AC06_TokenRequest_InvalidClientAssertion_ShouldRespondWith_400BadRequest_ErrorResponse(string? clientAssertion) { // Arrange var client = GetClientWithCertificate(); @@ -333,7 +341,7 @@ public async Task AC06_TokenRequest_InvalidClientAssertion_ShouldRespondWith_400 [InlineData(null)] // omit client assertion type [InlineData("")] // blank [InlineData("foo")] // invalid - public async Task AC07_AC08_TokenRequest_InvalidClientAssertionType_ShouldRespondWith_400BadRequest_ErrorResponse(string clientAssertionType) + public async Task AC07_AC08_TokenRequest_InvalidClientAssertionType_ShouldRespondWith_400BadRequest_ErrorResponse(string? clientAssertionType) { // Arrange var client = GetClientWithCertificate(); @@ -363,8 +371,11 @@ public async Task AC07_AC08_TokenRequest_InvalidClientAssertionType_ShouldRespon } } - [Fact] - public async Task AC09_TokenRequest_InvaldScope_ShouldRespondWith_400BadRequest_ErrorResponse() + [Theory] + [InlineData("")] // blank + [InlineData("cdr-register:bank:read")] // invalid old scope + [InlineData("foo")] // invalid + public async Task AC09_TokenRequest_InvaldScope_ShouldRespondWith_400BadRequest_ErrorResponse(string scope) { // Arrange var client = GetClientWithCertificate(); @@ -376,7 +387,7 @@ public async Task AC09_TokenRequest_InvaldScope_ShouldRespondWith_400BadRequest_ CLIENTASSERTION_CLIENT_ID, CLIENTASSERTION_CLIENT_ASSERTION_TYPE, clientAssertion, - scope:"foo"); + scope: scope); // Act var response = await client.SendAsync(request); @@ -388,7 +399,9 @@ public async Task AC09_TokenRequest_InvaldScope_ShouldRespondWith_400BadRequest_ response.StatusCode.Should().Be(HttpStatusCode.BadRequest); // Assert - Check error response -WAIT FOR ROB - var expectedContent = @"{""error"":""invalid_client"",""error_description"":""invalid scope""}"; + var expectedContent = string.IsNullOrEmpty(scope) ? + @"{""error"":""invalid_client"",""error_description"":""empty scope""}" : + @"{""error"":""invalid_client"",""error_description"":""invalid scope""}"; await Assert_HasContent_Json(expectedContent, response.Content); } @@ -400,7 +413,7 @@ public async Task AC11_TokenRequest_MissingJTI_ShouldRespondWith_400BadRequest_E // Arrange var client = GetClientWithCertificate(); - var clientAssertion = GetClientAssertion(jtiClaim:""); + var clientAssertion = GetClientAssertion(jtiClaim: ""); var request = GetAccessTokenRequest( CLIENTASSERTION_GRANT_TYPE, @@ -459,14 +472,14 @@ public async Task AC12_TokenRequest_InvalidSigningAlgo_ShouldRespondWith_400BadR [InlineData(CLIENTASSERTION_CLIENT_ID, "foo", CLIENTASSERTION_CLIENT_ID, "Invalid client_assertion - 'sub' and 'iss' must be set to the client_id")] // invalid issuer [InlineData(CLIENTASSERTION_CLIENT_ID, CLIENTASSERTION_ISSUER, "foo", "Invalid client_assertion - 'sub' and 'iss' must be set to the client_id")] // invalid subject [InlineData(null, CLIENTASSERTION_CLIENT_ID, "foo", "Invalid client_assertion - 'sub' and 'iss' must have the same value")] // invalid issuer - null client_id scenario - public async Task AC13_AC14_TokenRequest_InvalidClientId_ShouldRespondWith_400BadRequest_ErrorResponse(string clientid, string issuer, string subject, string expectedError) + public async Task AC13_AC14_TokenRequest_InvalidClientId_ShouldRespondWith_400BadRequest_ErrorResponse(string? clientid, string issuer, string subject, string expectedError) { // Arrange var client = GetClientWithCertificate(); var clientAssertion = GetClientAssertion(clientAssertionIssuer: issuer, subClaim: subject); - Log.Information($"Client Assertion used: {clientAssertion}"); + Log.Information("Client Assertion used: {ClientAssertion}", clientAssertion); var request = GetAccessTokenRequest( CLIENTASSERTION_GRANT_TYPE, @@ -477,11 +490,11 @@ public async Task AC13_AC14_TokenRequest_InvalidClientId_ShouldRespondWith_400Ba if (request.Content != null) { string requestContent = await request.Content.ReadAsStringAsync(); - Log.Information($"Token Request content: {requestContent}"); + Log.Information("Token Request content: {RequestContent}", requestContent); } else { - Log.Information($"Token content is null."); + Log.Information("Token content is null."); } // Act @@ -514,7 +527,7 @@ public async Task AC15_TokenRequest_DuplicateJTI_ShouldRespondWith_400BadRequest CLIENTASSERTION_CLIENT_ID, CLIENTASSERTION_CLIENT_ASSERTION_TYPE, clientAssertion); - + _ = await client.SendAsync(firstRequest); // Act @@ -539,7 +552,7 @@ public async Task AC15_TokenRequest_DuplicateJTI_ShouldRespondWith_400BadRequest await Assert_HasContent_Json(expectedContent, response.Content); } } - + [Theory] [InlineData(ADDITIONAL_CERTIFICATE_FILENAME, ADDITIONAL_CERTIFICATE_PASSWORD)] // invalid certificate public async Task AC16_TokenRequest_ValidWithInvalidClientCertificate_ShouldRespondWith_400BadRequest_ErrorResponse(string certificateFilename, string certificatePassword) @@ -569,6 +582,192 @@ public async Task AC16_TokenRequest_ValidWithInvalidClientCertificate_ShouldResp await Assert_HasContent_Json(expectedContent, response.Content); } } - + + // Use MemberData due to dynamic aud strings + [Theory, MemberData(nameof(ValidAudienceScenarios))] + public async Task AC00_TokenRequest_ValidAudience(string aud, string scenarioDescription) + { + + Log.Information("Running positive test case for valid audience of {aud} - {scenarioDescription}", aud, scenarioDescription); + + // Arrange + var client = GetClientWithCertificate(); + + var clientAssertion = GetClientAssertion(clientAssetionAudience: aud); + + var request = GetAccessTokenRequest( + CLIENTASSERTION_GRANT_TYPE, + CLIENTASSERTION_CLIENT_ID, + CLIENTASSERTION_CLIENT_ASSERTION_TYPE, + clientAssertion); + + // Act + var response = await client.SendAsync(request); + + // Assert + using (new AssertionScope()) + { + // Assert - Check status code + response.StatusCode.Should().Be(HttpStatusCode.OK); + + // Assert that access token in response + string responseString = await response.Content.ReadAsStringAsync(); + responseString.Should().Contain("access_token", because: aud + " - " + scenarioDescription); + } + + } + + public static IEnumerable ValidAudienceScenarios + { + get + { + yield return new string[] { $"{MTLS_BaseURL}/idp/connect/token", "Audience matches Token Endpoint" }; + yield return new string[] { $"{TLS_BaseURL}/idp", "Audience matches OIDC Issuer" }; + } + } + + // Use MemberData due to dynamic aud strings + [Theory, MemberData(nameof(InvalidAudienceScenarios))] + public async Task AC00_TokenRequest_InvalidAudience(string aud, string scenarioDescription) + { + + Log.Information("Running negative test case for invalid audience of {aud} - {scenarioDescription}", aud, scenarioDescription); + + // Arrange + var client = GetClientWithCertificate(); + + var clientAssertion = GetClientAssertion(clientAssetionAudience: aud); + + + var request = GetAccessTokenRequest( + CLIENTASSERTION_GRANT_TYPE, + CLIENTASSERTION_CLIENT_ID, + CLIENTASSERTION_CLIENT_ASSERTION_TYPE, + clientAssertion); + + // Act + var response = await client.SendAsync(request); + + // Assert + using (new AssertionScope()) + { + // Assert - Check status code + response.StatusCode.Should().Be(HttpStatusCode.BadRequest, because: aud + " - " + scenarioDescription); + + // Assert - Check error response + await Assert_HasContent_Json(@"{""error"":""invalid_client"",""error_description"":""Invalid client_assertion - token validation error""}", response.Content); + } + + } + + public static IEnumerable InvalidAudienceScenarios + { + get + { + yield return new string[] { $"foo", "'foo' is not a valid token endpoint or OIDC issuer" }; + yield return new string[] { $"{MTLS_BaseURL}/idp/connect/token/x", "Audience is only partial Token Endpoint match (only start matches)" }; + yield return new string[] { $"foo{MTLS_BaseURL}/idp/connect/token", "Audience is only partial Token Endpoint match (only end matches)" }; + yield return new string[] { $"{TLS_BaseURL}/idp/foo", "Audience is only partial OICD issuer match (only start matches)" }; + yield return new string[] { $"foo{TLS_BaseURL}/idp", "Audience is only partial OICD issuer match (only end matches)" }; + yield return new string[] { $"{TLS_BaseURL}/idp/connect/token", "Audience is only partial OICD issuer match - Ends with '/connect/token'" }; + yield return new string[] { $"{MTLS_BaseURL}/idp", "Audience is only partial OICD issuer match - Ends with /idp'" }; + } + } + + // Use MemberData due to dynamic aud strings + [Trait("Category", "CTSONLY")] + [Theory, MemberData(nameof(ValidCtsUrlAudienceScenarios))] + public static async Task AC00_TokenRequest_ValidAudience_DynamicBasePath(string aud, string scenarioDescription, string tokenEndpointUrl) + { + + Log.Information("Running positive test case for valid audience of {aud} - {scenarioDescription}", aud, scenarioDescription); + + // Arrange - Get access token + var accessToken = new Infrastructure.AccessToken + { + CertificateFilename = CERTIFICATE_FILENAME, + CertificatePassword = CERTIFICATE_PASSWORD, + Scope = "cdr-register:read", + Audience = aud, + TokenEndPoint = tokenEndpointUrl, + CertificateThumbprint = DEFAULT_CERTIFICATE_THUMBPRINT, + CertificateCn = DEFAULT_CERTIFICATE_COMMON_NAME + }; + + HttpResponseMessage response = await accessToken.SendAccessTokenRequest(addCertificateToRequest: false); + + // Assert + using (new AssertionScope()) + { + // Assert - Check status code + response.StatusCode.Should().Be(HttpStatusCode.OK); + + // Assert that access token in response + string responseString = await response.Content.ReadAsStringAsync(); + responseString.Should().Contain("access_token", because: aud + " - " + scenarioDescription); + } + + } + + public static IEnumerable ValidCtsUrlAudienceScenarios + { + get + { + string conformanceId = Guid.NewGuid().ToString(); + string tokenEndpointUrl = $"{GenerateDynamicCtsUrl(IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp/connect/token"; + string validIssuer = $"{GenerateDynamicCtsUrl(IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp"; + yield return new string[] { $"{ReplaceSecureHostName(tokenEndpointUrl, IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL)}", "Audience matches Token Endpoint", tokenEndpointUrl }; + yield return new string[] { $"{ReplacePublicHostName(validIssuer, IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL)}", "Audience matches OIDC Issuer", tokenEndpointUrl }; + } + } + + // Use MemberData due to dynamic aud strings + [Trait("Category", "CTSONLY")] + [Theory, MemberData(nameof(InvalidCtsUrlAudienceScenarios))] + public async Task AC00_TokenRequest_InvalidAudience_DynamicBasePath(string aud, string scenarioDescription, string tokenEndpointUrl) + { + + Log.Information("Running negative test case for audience of {aud} - {scenarioDescription}", aud, scenarioDescription); + + // Arrange - Get access token + var accessToken = new Infrastructure.AccessToken + { + CertificateFilename = CERTIFICATE_FILENAME, + CertificatePassword = CERTIFICATE_PASSWORD, + Scope = "cdr-register:read", + Audience = aud, + TokenEndPoint = tokenEndpointUrl, + CertificateThumbprint = DEFAULT_CERTIFICATE_THUMBPRINT, + CertificateCn = DEFAULT_CERTIFICATE_COMMON_NAME + }; + + HttpResponseMessage response = await accessToken.SendAccessTokenRequest(addCertificateToRequest: false); + + // Assert + using (new AssertionScope()) + { + // Assert - Check status code + response.StatusCode.Should().Be(HttpStatusCode.BadRequest, because: aud + " - " + scenarioDescription); + + // Assert - Check error response + await Assert_HasContent_Json(@"{""error"":""invalid_client"",""error_description"":""Invalid client_assertion - token validation error""}", response.Content); + } + + } + + public static IEnumerable InvalidCtsUrlAudienceScenarios + { + get + { + string conformanceId = Guid.NewGuid().ToString(); + string tokenEndpointUrl = $"{GenerateDynamicCtsUrl(IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp/connect/token"; + string validIssuer = $"{GenerateDynamicCtsUrl(IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp"; + yield return new string[] { "foo", "Audience is 'foo'", tokenEndpointUrl }; + yield return new string[] { $"{ReplaceSecureHostName(tokenEndpointUrl, IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL)}/idp", "Audience start has Token Endpoint but ends with '/idp'", tokenEndpointUrl }; + yield return new string[] { $"{ReplacePublicHostName(validIssuer, IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL)}/idp/connect/token", "Audience start has OIDC Issuer but ends with '/idp/connect/token'", tokenEndpointUrl }; + yield return new string[] { $"{ReplaceSecureHostName(tokenEndpointUrl, IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL)}/foo", "Audience start has Token Endpoint but ends with '/foo'", tokenEndpointUrl }; + yield return new string[] { $"{ReplacePublicHostName(validIssuer, IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL)}/foo", "Audience start has OIDC Issuer but ends with '/foo'", tokenEndpointUrl }; + } + } } } diff --git a/Source/CDR.Register.IntegrationTests/Infrastructure/API.cs b/Source/CDR.Register.IntegrationTests/Infrastructure/API.cs index 682e52c..fbf87ab 100644 --- a/Source/CDR.Register.IntegrationTests/Infrastructure/API.cs +++ b/Source/CDR.Register.IntegrationTests/Infrastructure/API.cs @@ -1,3 +1,4 @@ +using Microsoft.AspNetCore.Authentication.JwtBearer; using System; using System.Net.Http; using System.Net.Http.Headers; @@ -81,7 +82,7 @@ HttpRequestMessage BuildRequest() // Attach access token if provided if (AccessToken != null) { - request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", AccessToken); + request.Headers.Authorization = new AuthenticationHeaderValue(JwtBearerDefaults.AuthenticationScheme, AccessToken); } // Set x-v header if provided diff --git a/Source/CDR.Register.IntegrationTests/Infrastructure/AccessToken.cs b/Source/CDR.Register.IntegrationTests/Infrastructure/AccessToken.cs index bb32544..17b0ad6 100644 --- a/Source/CDR.Register.IntegrationTests/Infrastructure/AccessToken.cs +++ b/Source/CDR.Register.IntegrationTests/Infrastructure/AccessToken.cs @@ -15,7 +15,7 @@ public class AccessToken { private static readonly string IDENTITYSERVER_URL = BaseTest.IDENTITYSERVER_URL; private static readonly string AUDIENCE = IDENTITYSERVER_URL; - private const string SCOPE = "cdr-register:bank:read cdr-register:read"; + private const string SCOPE = "cdr-register:read"; private const string GRANT_TYPE = "client_credentials"; private const string CLIENT_ID = "86ecb655-9eba-409c-9be3-59e7adf7080d"; private const string CLIENT_ASSERTION_TYPE = "urn:ietf:params:oauth:client-assertion-type:jwt-bearer"; diff --git a/Source/CDR.Register.IntegrationTests/Miscellaneous/US12677_RegisterEnrolment_Tests.cs b/Source/CDR.Register.IntegrationTests/Miscellaneous/US12677_RegisterEnrolment_Tests.cs index db7e579..6738140 100644 --- a/Source/CDR.Register.IntegrationTests/Miscellaneous/US12677_RegisterEnrolment_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/Miscellaneous/US12677_RegisterEnrolment_Tests.cs @@ -18,7 +18,7 @@ namespace CDR.Register.IntegrationTests.Miscellaneous /// public class US12677_RegisterEnrolment_Tests : BaseTest { - public US12677_RegisterEnrolment_Tests(ITestOutputHelper outputHelper) : base(outputHelper) { } + public US12677_RegisterEnrolment_Tests(ITestOutputHelper outputHelper, TestFixture testFixture) : base(outputHelper, testFixture) { } /// /// Get the repository as json /// @@ -137,22 +137,22 @@ static void ClearField(JToken jToken, string fieldName) } } - ClearField(jToken, "LegalEntityId"); - ClearField(jToken, "ParticipationId"); - ClearField(jToken, "BrandId"); - ClearField(jToken, "SoftwareProductId"); - ClearField(jToken, "SoftwareProductCertificateId"); + ClearField(jToken, "legalEntityId"); + ClearField(jToken, "participationId"); + ClearField(jToken, "brandId"); + ClearField(jToken, "softwareProductId"); + ClearField(jToken, "softwareProductCertificateId"); - ClearField(jToken, "LegalEntityStatusId"); + ClearField(jToken, "legalEntityStatusId"); } static JToken Cleanup(JToken jToken) { // Sort - jToken["LegalEntities"].SortArray("LegalEntityId"); - jToken.SortArray("$..LegalEntities..Participations", "ParticipationId"); - jToken.SortArray("$..LegalEntities..Participations..Brands", "BrandId"); - jToken.SortArray("$..LegalEntities..Participations..Brands..SoftwareProducts", "SoftwareProductId"); + jToken["legalEntities"].SortArray("legalEntityId"); + jToken.SortArray("$..legalEntities..participations", "participationId"); + jToken.SortArray("$..legalEntities..participations..brands", "brandId"); + jToken.SortArray("$..legalEntities..participations..brands..softwareProducts", "softwareProductId"); RemoveForeignKeys(jToken); @@ -160,7 +160,7 @@ static JToken Cleanup(JToken jToken) jToken.RemoveEmptyArrays(); // Fix mismatch in version, convert to string - jToken.ReplacePath("$..LegalEntities..Participations..Brands..Endpoint..Version", + jToken.ReplacePath("$..legalEntities..participations..brands..endpoint..version", t => $"{t}"); // Issues with Guids and property names having different cases... not ideal, but just convert to upper case @@ -204,22 +204,22 @@ public async Task AC07_AC08_Get_ThenPostUpdatedData_ShouldRespondWith_200OK_Retu { static void UpdateNames(JToken jToken) { - if (jToken["LegalEntities"] != null) - foreach (var legalEntity in jToken["LegalEntities"]) + if (jToken["legalEntities"] != null) + foreach (var legalEntity in jToken["legalEntities"]) { - legalEntity["LegalEntityName"] += " updated"; + legalEntity["legalEntityName"] += " updated"; - if (legalEntity["Participations"] != null) - foreach (var participation in legalEntity["Participations"]) + if (legalEntity["participations"] != null) + foreach (var participation in legalEntity["participations"]) { - foreach (var brand in participation["Brands"]) + foreach (var brand in participation["brands"]) { - brand["BrandName"] += " updated"; + brand["brandName"] += " updated"; - if (brand["SoftwareProducts"] != null) - foreach (var softwareProduct in brand["SoftwareProducts"]) + if (brand["softwareProducts"] != null) + foreach (var softwareProduct in brand["softwareProducts"]) { - softwareProduct["SoftwareProductName"] += " updated"; + softwareProduct["softwareProductName"] += " updated"; } } } diff --git a/Source/CDR.Register.IntegrationTests/Miscellaneous/US50483_DynamicUrl_Tests.cs b/Source/CDR.Register.IntegrationTests/Miscellaneous/US50483_DynamicUrl_Tests.cs index 67ed638..33be5b9 100644 --- a/Source/CDR.Register.IntegrationTests/Miscellaneous/US50483_DynamicUrl_Tests.cs +++ b/Source/CDR.Register.IntegrationTests/Miscellaneous/US50483_DynamicUrl_Tests.cs @@ -1,32 +1,23 @@ -using FluentAssertions.Execution; -using Newtonsoft.Json.Linq; +using CDR.Register.IntegrationTests.API.Update; +using CDR.Register.IntegrationTests.Extensions; +using CDR.Register.IntegrationTests.Infrastructure; +using FluentAssertions; +using FluentAssertions.Execution; +using Microsoft.Data.SqlClient; +using Microsoft.Extensions.Configuration; +using Serilog; using System; -using System.Collections.Generic; -using System.Linq; -using System.Net.Http; using System.Net; -using System.Text; +using System.Net.Http; using System.Threading.Tasks; -using Xunit.Abstractions; using Xunit; -using FluentAssertions; -using CDR.Register.IntegrationTests.Infrastructure; -using static CDR.Register.IntegrationTests.Models.DataRecipientMetadata; -using static System.Formats.Asn1.AsnWriter; -using System.Security.Cryptography.X509Certificates; -using Serilog; -using Microsoft.AspNetCore.Http; -using System.Threading; -using CDR.Register.IntegrationTests.API.Update; -using Microsoft.Data.SqlClient; -using Microsoft.Extensions.Configuration; -using CDR.Register.IntegrationTests.Extensions; +using Xunit.Abstractions; namespace CDR.Register.IntegrationTests.Miscellaneous { public class US50483_DynamicUrl_Tests : BaseTest { - public US50483_DynamicUrl_Tests(ITestOutputHelper outputHelper) : base(outputHelper) { } + public US50483_DynamicUrl_Tests(ITestOutputHelper outputHelper, TestFixture testFixture) : base(outputHelper, testFixture) { } private const string DEFAULT_SOFTWAREPRODUCT_ID = "86ECB655-9EBA-409C-9BE3-59E7ADF7080D"; @@ -35,11 +26,11 @@ public US50483_DynamicUrl_Tests(ITestOutputHelper outputHelper) : base(outputHel [InlineData("Invalid Certificate Thumbprint", "foo", DEFAULT_CERTIFICATE_COMMON_NAME)] public async Task AC01_Get_Data_Holder_Brands_Invalid_Certificate_Header_For_Access_Token(string testDescription, string certificateThumbPrint, string certificateCommonName) { - Log.Information($"Executing test for {testDescription}.\nCertificate ThumbPrint: {certificateThumbPrint}.\nCertificateCommonName: {certificateCommonName}"); + Log.Information("Executing test for {TestDescription}.\nCertificate ThumbPrint: {CertThumbPrint}.\nCertificateCommonName: {CertCommonName}", testDescription, certificateThumbPrint, certificateCommonName); // Arrange string conformanceId = Guid.NewGuid().ToString(); - string tokenEndpoint = $"{GenerateDynamicCtsUrl(IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp/connect/token"; + string tokenEndpoint = $"{GenerateDynamicCtsUrl(IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp/connect/token"; var getDataholderBrandsUrl = $"{GenerateDynamicCtsUrl(DISCOVERY_DOWNSTREAM_BASE_URL, conformanceId)}/cdr-register/v1/banking/data-holders/brands"; // Arrange - Get access token @@ -48,7 +39,7 @@ public async Task AC01_Get_Data_Holder_Brands_Invalid_Certificate_Header_For_Acc CertificateFilename = CERTIFICATE_FILENAME, CertificatePassword = CERTIFICATE_PASSWORD, Scope = "cdr-register:read", - Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL), + Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL), TokenEndPoint = tokenEndpoint, CertificateThumbprint = DEFAULT_CERTIFICATE_THUMBPRINT, CertificateCn = DEFAULT_CERTIFICATE_COMMON_NAME @@ -68,7 +59,7 @@ public async Task AC01_Get_Data_Holder_Brands_Invalid_Certificate_Header_For_Acc // Act var response = await api.SendAsync(); - Log.Information($"Response from {getDataholderBrandsUrl} Endpoint: {response.StatusCode} \n{response.Content.ReadAsStringAsync().Result}"); + Log.Information("Response from {GetDataholderBrandsUrl} Endpoint: {StatusCode} \n{Content}", getDataholderBrandsUrl, response.StatusCode, await response.Content.ReadAsStringAsync()); // Assert await VerifyInvalidTokenRepsonse(response); @@ -82,11 +73,11 @@ public async Task AC01_Get_Data_Holder_Brands_Invalid_Certificate_Header_For_Acc public async Task AC02_Get_Access_Token_Invalid_Certificate_Header_For_Access_Token(string testDescription, string certificateThumbPrint, string certificateCommonName) { - Log.Information($"Executing test for {testDescription}.\nCertificate ThumbPrint: {certificateThumbPrint}.\nCertificateCommonName: {certificateCommonName}"); + Log.Information("Executing test for {TestDescription}.\nCertificate ThumbPrint: {CertificateThumbPrint}.\nCertificateCommonName: {CertificateCommonName}", testDescription, certificateThumbPrint, certificateCommonName); // Arrange string conformanceId = Guid.NewGuid().ToString(); - string tokenEndpoint = $"{GenerateDynamicCtsUrl(IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp/connect/token"; + string tokenEndpoint = $"{GenerateDynamicCtsUrl(IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp/connect/token"; // Arrange - Get access token var accessToken = new AccessToken @@ -94,7 +85,7 @@ public async Task AC02_Get_Access_Token_Invalid_Certificate_Header_For_Access_To CertificateFilename = CERTIFICATE_FILENAME, CertificatePassword = CERTIFICATE_PASSWORD, Scope = "cdr-register:read", - Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL), + Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL), TokenEndPoint = tokenEndpoint, CertificateThumbprint = certificateThumbPrint, CertificateCn = certificateCommonName @@ -118,7 +109,7 @@ public async Task AC02_Get_Access_Token_Invalid_Certificate_Header_For_Access_To public async Task AC03_Get_Access_Token_Invalid_Url_Regular_Expression_For_Access_Token() { - string tokenEndpoint = $"{IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL}/foo/idp/connect/token"; + string tokenEndpoint = $"{IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL}/foo/idp/connect/token"; // Arrange - Get access token var accessToken = new AccessToken @@ -126,7 +117,7 @@ public async Task AC03_Get_Access_Token_Invalid_Url_Regular_Expression_For_Acces CertificateFilename = CERTIFICATE_FILENAME, CertificatePassword = CERTIFICATE_PASSWORD, Scope = "cdr-register:read", - Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL), + Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL), TokenEndPoint = tokenEndpoint, CertificateThumbprint = DEFAULT_CERTIFICATE_THUMBPRINT, CertificateCn = DEFAULT_CERTIFICATE_COMMON_NAME @@ -146,7 +137,7 @@ public async Task AC04_Get_Data_Holder_Brands_Invalid_Access_Token_Issuer() // Arrange string conformanceId = Guid.NewGuid().ToString(); string mismatachedConformanceId = Guid.NewGuid().ToString(); - string tokenEndpoint = $"{GenerateDynamicCtsUrl(IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp/connect/token"; + string tokenEndpoint = $"{GenerateDynamicCtsUrl(IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp/connect/token"; var getDataholderBrandsUrl = $"{GenerateDynamicCtsUrl(DISCOVERY_DOWNSTREAM_BASE_URL, mismatachedConformanceId)}/cdr-register/v1/banking/data-holders/brands"; // Arrange - Get access token @@ -155,7 +146,7 @@ public async Task AC04_Get_Data_Holder_Brands_Invalid_Access_Token_Issuer() CertificateFilename = CERTIFICATE_FILENAME, CertificatePassword = CERTIFICATE_PASSWORD, Scope = "cdr-register:read", - Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL), + Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL), TokenEndPoint = tokenEndpoint, CertificateThumbprint = DEFAULT_CERTIFICATE_THUMBPRINT, CertificateCn = DEFAULT_CERTIFICATE_COMMON_NAME @@ -175,14 +166,14 @@ public async Task AC04_Get_Data_Holder_Brands_Invalid_Access_Token_Issuer() // Act var response = await api.SendAsync(); - Log.Information($"Response from {getDataholderBrandsUrl} Endpoint: {response.StatusCode} \n{response.Content.ReadAsStringAsync().Result}"); + Log.Information("Response from {GetDataholderBrandsUrl} Endpoint: {StatusCode} \n{Content}", getDataholderBrandsUrl, response.StatusCode, await response.Content.ReadAsStringAsync()); // Assert await VerifyInvalidTokenRepsonse(response); } - private async Task VerifyInvalidTokenRepsonse(HttpResponseMessage response) + private static async Task VerifyInvalidTokenRepsonse(HttpResponseMessage response) { using (new AssertionScope()) { @@ -209,11 +200,11 @@ private async Task VerifyInvalidTokenRepsonse(HttpResponseMessage response) public async Task AC05_Get_Access_Token_With_Valid_Certificate_Header(string testDescription, string certificateThumbPrint, string certificateCommonName, string dbCommonName) { - Log.Information($"Executing test for {testDescription}.\nCertificate ThumbPrint: {certificateThumbPrint}.\nCertificateCommonName: {certificateCommonName}.\nDatabase Common Name: {dbCommonName}."); + Log.Information("Executing test for {TestDescription}.\nCertificate ThumbPrint: {CertThumbPrint}.\nCertificateCommonName: {CertCommonName}.\nDatabase Common Name: {DbCommonName}.", testDescription, certificateThumbPrint, certificateCommonName, dbCommonName); // Arrange string conformanceId = Guid.NewGuid().ToString(); - string tokenEndpoint = $"{GenerateDynamicCtsUrl(IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp/connect/token"; + string tokenEndpoint = $"{GenerateDynamicCtsUrl(IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL, conformanceId)}/idp/connect/token"; string getDataholderBrandsUrl = $"{GenerateDynamicCtsUrl(DISCOVERY_DOWNSTREAM_BASE_URL, conformanceId)}/cdr-register/v1/banking/data-holders/brands"; SetCertificateCommonName(DEFAULT_SOFTWAREPRODUCT_ID, dbCommonName); @@ -224,7 +215,7 @@ public async Task AC05_Get_Access_Token_With_Valid_Certificate_Header(string tes CertificateFilename = CERTIFICATE_FILENAME, CertificatePassword = CERTIFICATE_PASSWORD, Scope = "cdr-register:read", - Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PRIVIDER_DOWNSTREAM_BASE_URL), + Audience = ReplaceSecureHostName(tokenEndpoint, IDENTITY_PROVIDER_DOWNSTREAM_BASE_URL), TokenEndPoint = tokenEndpoint, CertificateThumbprint = certificateThumbPrint, CertificateCn = certificateCommonName @@ -252,7 +243,7 @@ public async Task AC05_Get_Access_Token_With_Valid_Certificate_Header(string tes // Act HttpResponseMessage getDataHolderResponse = await api.SendAsync(); - Log.Information($"Response from {getDataholderBrandsUrl} Endpoint: {accessTokenResponse.StatusCode} \n{accessTokenResponse.Content.ReadAsStringAsync().Result}"); + Log.Information("Response from {GetDataholderBrandsUrl} Endpoint: {StatusCode} \n{Content}", getDataholderBrandsUrl, accessTokenResponse.StatusCode, await accessTokenResponse.Content.ReadAsStringAsync()); getDataHolderResponse.StatusCode.Should().Be(HttpStatusCode.OK, because: $"Get Data Holder should work when{testDescription}"); diff --git a/Source/CDR.Register.IntegrationTests/TemporalTables/US29068_TemporalTableTests.cs b/Source/CDR.Register.IntegrationTests/TemporalTables/US29068_TemporalTableTests.cs index 3e35962..8d65c39 100644 --- a/Source/CDR.Register.IntegrationTests/TemporalTables/US29068_TemporalTableTests.cs +++ b/Source/CDR.Register.IntegrationTests/TemporalTables/US29068_TemporalTableTests.cs @@ -163,7 +163,7 @@ static public async Task Execute() public class US29068_TemporalTables : BaseTest0 { - private async Task GetTableJson(SqlConnection connection, string tableName, DateTime? pointInTimeUTC = null) + private static async Task GetTableJson(SqlConnection connection, string tableName, DateTime? pointInTimeUTC = null) { string orderby = tableName.ToUpper() switch { @@ -191,7 +191,7 @@ private async Task Test(string tableName, Mutate mutate) await Test(new string[] { tableName }, mutate); } - private async Task Test(string[] tableNames, Mutate mutate) + private static async Task Test(string[] tableNames, Mutate mutate) { // Arrange await DatabaseSeeder.Execute(); @@ -361,7 +361,7 @@ await Test(tableName, async (connection) => public async Task ACX03_AfterDeletingRecords_PointInTimeQueryShouldReturnDeletedRecords() { await Test( - new string[] { "LegalEntity", "Participation", "Brand", "AuthDetail", "Endpoint", "SoftwareProduct", "SoftwareProductCertificate" }, + ["LegalEntity", "Participation", "Brand", "AuthDetail", "Endpoint", "SoftwareProduct", "SoftwareProductCertificate"], async (connection) => { await connection.ExecuteAsync("delete SoftwareProductCertificate"); diff --git a/Source/CDR.Register.IntegrationTests/appsettings.Development.json b/Source/CDR.Register.IntegrationTests/appsettings.Development.json index 0bfacd1..7fabd35 100644 --- a/Source/CDR.Register.IntegrationTests/appsettings.Development.json +++ b/Source/CDR.Register.IntegrationTests/appsettings.Development.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { - "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=cdr-register;Integrated Security=true;MultipleActiveResultSets=True" + "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=cdr-register;Integrated Security=true;MultipleActiveResultSets=True;TrustServerCertificate=True" }, "TLS_BaseURL": "https://localhost:7000", "MTLS_BaseURL": "https://localhost:7001", diff --git a/Source/CDR.Register.IntegrationTests/appsettings.Release.json b/Source/CDR.Register.IntegrationTests/appsettings.Release.json index e362ad2..db6f400 100644 --- a/Source/CDR.Register.IntegrationTests/appsettings.Release.json +++ b/Source/CDR.Register.IntegrationTests/appsettings.Release.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { - "DefaultConnection": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True" + "DefaultConnection": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True" }, "TLS_BaseURL": "https://mock-register:7000", "MTLS_BaseURL": "https://mock-register:7001", diff --git a/Source/CDR.Register.IntegrationTests/appsettings.json b/Source/CDR.Register.IntegrationTests/appsettings.json index bc2a22e..e17afe5 100644 --- a/Source/CDR.Register.IntegrationTests/appsettings.json +++ b/Source/CDR.Register.IntegrationTests/appsettings.json @@ -1,6 +1,6 @@ { "ConnectionStrings": { - "DefaultConnection": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True" + "DefaultConnection": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True" }, "Logging": { "LogLevel": { diff --git a/Source/CDR.Register.Repository/CDR.Register.Repository.csproj b/Source/CDR.Register.Repository/CDR.Register.Repository.csproj index e61ef1d..a43a3d0 100644 --- a/Source/CDR.Register.Repository/CDR.Register.Repository.csproj +++ b/Source/CDR.Register.Repository/CDR.Register.Repository.csproj @@ -1,38 +1,33 @@  - - net6.0 - 1.3.2 - 1.3.2 - 1.3.2 + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) - - - - + - - + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + - - - + \ No newline at end of file diff --git a/Source/CDR.Register.Repository/IRegisterDiscoveryRepository.cs b/Source/CDR.Register.Repository/IRegisterDiscoveryRepository.cs index a1c696d..0bf1297 100644 --- a/Source/CDR.Register.Repository/IRegisterDiscoveryRepository.cs +++ b/Source/CDR.Register.Repository/IRegisterDiscoveryRepository.cs @@ -8,8 +8,8 @@ namespace CDR.Register.Repository.Interfaces { public interface IRegisterDiscoveryRepository { - Task> GetDataHolderBrandsAsync(Industry industry, DateTime? updatedSince, int page, int pageSize); - Task GetDataRecipientsAsync(Industry industry); + Task> GetDataHolderBrandsAsync(Infrastructure.Industry industry, DateTime? updatedSince, int page, int pageSize); + Task GetDataRecipientsAsync(Infrastructure.Industry industry); Task GetSoftwareProductIdAsync(Guid softwareProductId); } } diff --git a/Source/CDR.Register.Repository/IRegisterStatusRepository .cs b/Source/CDR.Register.Repository/IRegisterStatusRepository .cs index 53570b9..1fe6065 100644 --- a/Source/CDR.Register.Repository/IRegisterStatusRepository .cs +++ b/Source/CDR.Register.Repository/IRegisterStatusRepository .cs @@ -6,8 +6,8 @@ namespace CDR.Register.Repository.Interfaces { public interface IRegisterStatusRepository { - Task GetDataRecipientStatusesAsync(Industry industry); - Task GetSoftwareProductStatusesAsync(Industry industry); - Task GetDataHolderStatusesAsync(Industry industry); + Task GetDataRecipientStatusesAsync(Infrastructure.Industry industry); + Task GetSoftwareProductStatusesAsync(Infrastructure.Industry industry); + Task GetDataHolderStatusesAsync(Infrastructure.Industry industry); } } \ No newline at end of file diff --git a/Source/CDR.Register.Repository/Infrastructure/Extensions.cs b/Source/CDR.Register.Repository/Infrastructure/Extensions.cs index 44b6fbc..e4db886 100644 --- a/Source/CDR.Register.Repository/Infrastructure/Extensions.cs +++ b/Source/CDR.Register.Repository/Infrastructure/Extensions.cs @@ -67,7 +67,7 @@ public async static Task SeedDatabaseFromJsonFile( { if (!File.Exists(jsonFileFullPath)) { - logger.LogDebug("Seed data file '{jsonFileFullPath}' not found.", jsonFileFullPath); + logger.LogDebug("Seed data file '{JsonFileFullPath}' not found.", jsonFileFullPath); return; } @@ -155,9 +155,9 @@ public async static Task ReSeedDatabaseFromJson(this RegisterDatabaseConte // Re-create all participants from the incoming JSON. var allData = JsonConvert.DeserializeObject(json); - if (allData != null && allData.ContainsKey("LegalEntities")) + if (allData != null && allData.ContainsKey("legalEntities")) { - var newLegalEntities = allData["LegalEntities"].ToObject(); + var newLegalEntities = allData["legalEntities"].ToObject(); registerDatabaseContext.LegalEntities.AddRange(newLegalEntities); registerDatabaseContext.SaveChanges(); @@ -184,36 +184,38 @@ public static async Task AddOrUpdateDataRecipientLegalEntity( { BusinessRuleError error = null; - foreach (var b in dataRecipient.DataRecipientBrands) + foreach (var dataRecipientBrand in dataRecipient.DataRecipientBrands) { - var dbBrand = await registerDatabaseContext.Brands.AsNoTracking().SingleOrDefaultAsync(x => x.BrandId == b.BrandId); - var brand = repositoryMapper.Map(b); + var dbBrand = await registerDatabaseContext.Brands.AsNoTracking().SingleOrDefaultAsync(x => x.BrandId == dataRecipientBrand.BrandId); + var drBrandToSave = repositoryMapper.Map(dataRecipientBrand); + drBrandToSave.LastUpdated = DateTime.UtcNow; //create new brand as it is a new one if (null == dbBrand) { - logger.LogInformation($"New Brand of id:{b.BrandId} name:{b.BrandName} getting added to the repository."); - await registerDatabaseContext.Brands.AddAsync(brand); + logger.LogInformation("New Brand of id:{BrandId} name:{BrandName} getting added to the repository.", dataRecipientBrand.BrandId, dataRecipientBrand.BrandName); + + await registerDatabaseContext.Brands.AddAsync(drBrandToSave); } //handle participation - if ((error = await brand.AddOrUpdateDataRecipientParticipation(legalEntity, dataRecipient, registerDatabaseContext, logger)) != null) + if ((error = await drBrandToSave.AddOrUpdateDataRecipientParticipation(legalEntity, dataRecipient, registerDatabaseContext, logger)) != null) { - logger.LogError($"Update participation encountered error of {@error}"); + logger.LogError("Update participation encountered error of {Error}", @error); return error; } //update the brand as it is an existing one. if (dbBrand != null) { - logger.LogInformation($"Updating Brand of id:{b.BrandId} name:{b.BrandName}"); - registerDatabaseContext.Brands.Update(brand); + logger.LogInformation("Updating Brand of id:{BrandId} name:{BrandName}", dataRecipientBrand.BrandId, dataRecipientBrand.BrandName); + registerDatabaseContext.Brands.Update(drBrandToSave); } //handle software products - if ((error = await brand.UpsertRecipientBrandSoftwareProducts(registerDatabaseContext, repositoryMapper, b.SoftwareProducts, logger)) != null) + if ((error = await drBrandToSave.UpsertRecipientBrandSoftwareProducts(registerDatabaseContext, repositoryMapper, dataRecipientBrand.SoftwareProducts, logger)) != null) { - logger.LogError($"Update SoftwareProduct encountered error of {@error}"); + logger.LogError("Update SoftwareProduct encountered error of {Error}", @error); return error; } } @@ -238,7 +240,7 @@ public static async Task UpsertRecipientBrandSoftwareProducts //check if we getting assigned to new brand. if (existingSoftwareProduct.BrandId != brand.BrandId) { - return new BusinessRuleError("Invalid Field", "urn:au-cds:error:cds-all:Field/Invalid", + return new BusinessRuleError("urn:au-cds:error:cds-all:Field/Invalid", "Invalid Field", $"Value '{existingSoftwareProduct.SoftwareProductId}' in SoftwareProductId is already associated with a different brand."); } @@ -249,7 +251,7 @@ public static async Task UpsertRecipientBrandSoftwareProducts if (null == existingSoftwareProduct) { softwareProduct.BrandId = brand.BrandId; - logger.LogInformation($"Adding new SoftwareProduct of id:{softwareProduct.SoftwareProductId} for name:{softwareProduct.SoftwareProductName}"); + logger.LogInformation("Adding new SoftwareProduct of id:{SoftwareProductId} for name:{SoftwareProdcutName}", softwareProduct.SoftwareProductId, softwareProduct.SoftwareProductName); await registerDbContext.SoftwareProducts.AddAsync(softwareProduct); } @@ -262,7 +264,7 @@ public static async Task UpsertRecipientBrandSoftwareProducts public static async Task UpsertSoftwareProductCertificates(this SoftwareProduct softwareProduct, RegisterDatabaseContext registerDbContext, IRepositoryMapper repositoryMapper, ICollection certificates, ILogger logger) { - softwareProduct.Certificates ??= new List(); + softwareProduct.Certificates ??= []; foreach (var c in certificates) { @@ -284,7 +286,7 @@ public static async Task UpsertSoftwareProductCertificates(this SoftwareProduct certificate.SoftwareProductId = softwareProduct.SoftwareProductId; await registerDbContext.SoftwareProductCertificates.AddAsync(certificate); await registerDbContext.SaveChangesAsync(); - logger.LogInformation($"Adding new SoftwareProductCertificate of id:{certificate.SoftwareProductCertificateId} for SoftwareProductId:{certificate.SoftwareProductId}"); + logger.LogInformation("Adding new SoftwareProductCertificate of id:{SoftwareProductCertificateId} for SoftwareProductId:{SoftwareProductId}", certificate.SoftwareProductCertificateId, certificate.SoftwareProductId); } } } @@ -303,7 +305,7 @@ public static async Task AddOrUpdateDataRecipientParticipatio //check if there is a change in the participation between brand and legal entity if (existingParticipant.LegalEntityId != legalEntity.LegalEntityId) { - return new BusinessRuleError("Invalid Field","urn:au-cds:error:cds-all:Field/Invalid", $"dataRecipientBrandId '{brand.BrandId}' is already associated with a different legal entity."); + return new BusinessRuleError("urn:au-cds:error:cds-all:Field/Invalid", "Invalid Field", $"dataRecipientBrandId '{brand.BrandId}' is already associated with a different legal entity."); } brand.ParticipationId = existingParticipant.ParticipationId; @@ -328,7 +330,7 @@ public static async Task AddOrUpdateDataRecipientParticipatio await registerDatabaseContext.Participations.AddAsync(participant); await registerDatabaseContext.SaveChangesAsync(); - logger.LogInformation($"Adding new Participation of id:{participant.ParticipationId} getting added to the repository."); + logger.LogInformation("Adding new Participation of id:{ParticipationId} getting added to the repository.", participant.ParticipationId); } return null; diff --git a/Source/CDR.Register.Repository/Infrastructure/MappingProfile.cs b/Source/CDR.Register.Repository/Infrastructure/MappingProfile.cs index b034559..068d6da 100644 --- a/Source/CDR.Register.Repository/Infrastructure/MappingProfile.cs +++ b/Source/CDR.Register.Repository/Infrastructure/MappingProfile.cs @@ -81,7 +81,8 @@ public MappingProfile() CreateMap() .ForMember(dest => dest.Status, source => source.MapFrom(source => source.Status.SoftwareProductStatusCode)) .ForMember(dest => dest.IsActive, source => source.MapFrom(source => source.Status.SoftwareProductStatusId == SoftwareProductStatusType.Active)) - .ForMember(dest => dest.RedirectUri, source => source.MapFrom(s => s.RedirectUris)) + .ForMember(dest => dest.RedirectUri, source => source.MapFrom(src => src.RedirectUris)) + .ForMember(dest => dest.RedirectUris, opts => opts.Ignore()) //Ignore this as it is a computed property with no setter .ForMember(dest => dest.DataRecipientBrand, source => source.MapFrom(s => s.Brand)); CreateMap() diff --git a/Source/CDR.Register.Repository/Infrastructure/ScopeConstants.cs b/Source/CDR.Register.Repository/Infrastructure/ScopeConstants.cs index b03b472..35b282c 100644 --- a/Source/CDR.Register.Repository/Infrastructure/ScopeConstants.cs +++ b/Source/CDR.Register.Repository/Infrastructure/ScopeConstants.cs @@ -2,7 +2,6 @@ { public static class CdsRegistrationScopes { - public const string BankRead = "cdr-register:bank:read"; public const string Read = "cdr-register:read"; } } \ No newline at end of file diff --git a/Source/CDR.Register.Repository/Migrations/20211005022250_Init.cs b/Source/CDR.Register.Repository/Migrations/20211005022250_Init.cs index df946b7..e1fc046 100644 --- a/Source/CDR.Register.Repository/Migrations/20211005022250_Init.cs +++ b/Source/CDR.Register.Repository/Migrations/20211005022250_Init.cs @@ -3,6 +3,8 @@ namespace CDR.Register.Repository.Migrations { + [System.Diagnostics.CodeAnalysis.SuppressMessage("SonarAnalyzer", "S1192:String literals should not be duplicated", Justification = "Auto-generated migration file.")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("SonarAnalyzer", "CA1861:Prefer 'static readonly' fields over constant array arguments if the called method is called repeatedly and is not mutating the passed array", Justification = "Auto-generated migration file.")] public partial class Init : Migration { protected override void Up(MigrationBuilder migrationBuilder) diff --git a/Source/CDR.Register.Repository/Migrations/20211223050501_V2.cs b/Source/CDR.Register.Repository/Migrations/20211223050501_V2.cs index ea793e0..8d2c635 100644 --- a/Source/CDR.Register.Repository/Migrations/20211223050501_V2.cs +++ b/Source/CDR.Register.Repository/Migrations/20211223050501_V2.cs @@ -2,6 +2,8 @@ namespace CDR.Register.Repository.Migrations { + [System.Diagnostics.CodeAnalysis.SuppressMessage("SonarAnalyzer", "S1192:Define a constant instead of using this literal 'FK_Participation_IndustryType_IndustryId' 4 times.", Justification = "Auto-generated migration file.")] + [System.Diagnostics.CodeAnalysis.SuppressMessage("SonarAnalyzer", "CA1861:Prefer 'static readonly' fields over constant array arguments if the called method is called repeatedly and is not mutating the passed array", Justification = "Auto-generated migration file.")] public partial class V2 : Migration { protected override void Up(MigrationBuilder migrationBuilder) diff --git a/Source/CDR.Register.Repository/Migrations/20220817233556_V3.cs b/Source/CDR.Register.Repository/Migrations/20220817233556_V3.cs index 72ad2ad..634efb9 100644 --- a/Source/CDR.Register.Repository/Migrations/20220817233556_V3.cs +++ b/Source/CDR.Register.Repository/Migrations/20220817233556_V3.cs @@ -5,6 +5,7 @@ namespace CDR.Register.Repository.Migrations { + [System.Diagnostics.CodeAnalysis.SuppressMessage("SonarAnalyzer", "S1192:Define a constant instead of using this literal 'SoftwareProductCertificate' 6 times.", Justification = "Auto-generated migration file.")] public partial class V3 : Migration { protected override void Up(MigrationBuilder migrationBuilder) diff --git a/Source/CDR.Register.Repository/Migrations/20220915001454_V4.cs b/Source/CDR.Register.Repository/Migrations/20220915001454_V4.cs index 0b46e97..d1657b5 100644 --- a/Source/CDR.Register.Repository/Migrations/20220915001454_V4.cs +++ b/Source/CDR.Register.Repository/Migrations/20220915001454_V4.cs @@ -4,6 +4,7 @@ namespace CDR.Register.Repository.Migrations { + [System.Diagnostics.CodeAnalysis.SuppressMessage("SonarAnalyzer", "S1192:Define a constant instead of using this literal 'LegalEntity' 6 times.", Justification = "Auto-generated migration file.")] public partial class V4 : Migration { protected override void Up(MigrationBuilder migrationBuilder) diff --git a/Source/CDR.Register.Repository/Migrations/20230504063906_V6.cs b/Source/CDR.Register.Repository/Migrations/20230504063906_V6.cs index ea254cc..2561d18 100644 --- a/Source/CDR.Register.Repository/Migrations/20230504063906_V6.cs +++ b/Source/CDR.Register.Repository/Migrations/20230504063906_V6.cs @@ -4,6 +4,7 @@ namespace CDR.Register.Repository.Migrations { + [System.Diagnostics.CodeAnalysis.SuppressMessage("SonarAnalyzer", "S1192:Define a constant instead of using this literal 'SoftwareProduct' 6 times.", Justification = "Auto-generated migration file.")] public partial class V6 : Migration { protected override void Up(MigrationBuilder migrationBuilder) diff --git a/Source/CDR.Register.Repository/RegisterAdminRepository.cs b/Source/CDR.Register.Repository/RegisterAdminRepository.cs index 20df41c..7b8d908 100644 --- a/Source/CDR.Register.Repository/RegisterAdminRepository.cs +++ b/Source/CDR.Register.Repository/RegisterAdminRepository.cs @@ -6,7 +6,6 @@ using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using System; -using System.Collections.ObjectModel; using System.Linq; using System.Threading.Tasks; @@ -75,18 +74,22 @@ public async Task GetDataHolderBrandAsync(Guid brandId) return null; } - var brand = new DataHolderBrand(); - brand.LogoUri = dataHolderBrandEntity.LogoUri; - brand.BrandId = dataHolderBrandEntity.BrandId; - brand.BrandName = dataHolderBrandEntity?.BrandName; - brand.BrandStatus = dataHolderBrandEntity?.BrandStatusId.ToString(); + var brand = new DataHolderBrand + { + LogoUri = dataHolderBrandEntity.LogoUri, + BrandId = dataHolderBrandEntity.BrandId, + BrandName = dataHolderBrandEntity.BrandName, + BrandStatus = dataHolderBrandEntity.BrandStatusId.ToString() + }; if (dataHolderBrandEntity.Participation.ParticipationTypeId == ParticipationTypes.Dh) { - brand.DataHolder = new DataHolder(); - brand.DataHolder.DataHolderId = dataHolderBrandEntity.ParticipationId; - brand.DataHolder.Industry = dataHolderBrandEntity.Participation?.IndustryId.ToString(); - brand.DataHolder.Status = dataHolderBrandEntity.Participation.StatusId.ToString(); - brand.DataHolder.LegalEntity = _mapper.Map(dataHolderBrandEntity.Participation.LegalEntity); + brand.DataHolder = new DataHolder + { + DataHolderId = dataHolderBrandEntity.ParticipationId, + Industry = dataHolderBrandEntity.Participation?.IndustryId.ToString(), + Status = dataHolderBrandEntity.Participation.StatusId.ToString(), + LegalEntity = _mapper.Map(dataHolderBrandEntity.Participation.LegalEntity) + }; } return brand; @@ -125,7 +128,7 @@ public async Task AddOrUpdateDataRecipient(DataRecipient data if (existingDataRecipient == null && existingLegalEntity == null) { await _registerDatabaseContext.LegalEntities.AddAsync(legalEntity); - _logger.LogInformation($"New LegalEntity of id:{legalEntity.LegalEntityId} name:{legalEntity.LegalEntityName} getting added to the repository."); + _logger.LogInformation("New LegalEntity of id:{LegalEntityId} name:{LegalEntityName} getting added to the repository.", legalEntity.LegalEntityId, legalEntity.LegalEntityName); } var error = await dataRecipient.AddOrUpdateDataRecipientLegalEntity(legalEntity, _registerDatabaseContext, _reporsitoryMapper, _logger); @@ -145,11 +148,10 @@ public async Task SaveDataHolderBrand(Guid legalEntityId, DataHolderBrand return false; } - (var savedLegalEntity, var savedParticipation) = await SaveDataHolderLegalEntity(dataHolderBrand.DataHolder); + (_ , var savedParticipation) = await SaveDataHolderLegalEntity(dataHolderBrand.DataHolder); // Save DH Brand var dhBrandToSave = _mapper.Map(dataHolderBrand); - dhBrandToSave.LastUpdated = DateTime.UtcNow; var existingBrand = _registerDatabaseContext.Brands .Include(b => b.Participation) .Include(b => b.AuthDetails) @@ -157,11 +159,13 @@ public async Task SaveDataHolderBrand(Guid legalEntityId, DataHolderBrand .Where(brand => brand.BrandId == dataHolderBrand.BrandId).FirstOrDefault(); if (existingBrand == null) { + dhBrandToSave.LastUpdated = DateTime.UtcNow; savedParticipation.Brands.Add(dhBrandToSave); } else { dhBrandToSave = _mapper.Map(dataHolderBrand, existingBrand); + dhBrandToSave.LastUpdated = DateTime.UtcNow; } // Add Endpoints data diff --git a/Source/CDR.Register.Repository/RegisterDiscoveryRepository.cs b/Source/CDR.Register.Repository/RegisterDiscoveryRepository.cs index da57d66..7ba9ed0 100644 --- a/Source/CDR.Register.Repository/RegisterDiscoveryRepository.cs +++ b/Source/CDR.Register.Repository/RegisterDiscoveryRepository.cs @@ -24,7 +24,7 @@ public RegisterDiscoveryRepository(RegisterDatabaseContext registerDatabaseConte this._mapper = mapper; } - public async Task> GetDataHolderBrandsAsync(Industry industry, DateTime? updatedSince, int page, int pageSize) + public async Task> GetDataHolderBrandsAsync(Infrastructure.Industry industry, DateTime? updatedSince, int page, int pageSize) { (List allBrands, int totalRecords) = await ProcessGetDataHolderBrands(industry, updatedSince, page, pageSize); @@ -37,7 +37,7 @@ public async Task> GetDataHolderBrandsAsync(Industry ind }; } - protected async Task<(List, int)> ProcessGetDataHolderBrands(Industry industry, DateTime? updatedSince, int page, int pageSize) + protected async Task<(List, int)> ProcessGetDataHolderBrands(Infrastructure.Industry industry, DateTime? updatedSince, int page, int pageSize) { var allBrandsQuery = this._registerDatabaseContext.Brands.AsNoTracking() .Include(brand => brand.Endpoint) @@ -49,7 +49,7 @@ public async Task> GetDataHolderBrandsAsync(Industry ind .Include(brand => brand.Participation.Status) .Where(brand => brand.Participation.ParticipationTypeId == ParticipationTypes.Dh); - if (industry != Industry.ALL) + if (industry != Infrastructure.Industry.ALL) { allBrandsQuery = allBrandsQuery.Where(brand => brand.Participation.Industry.IndustryTypeId == industry); } @@ -72,7 +72,7 @@ public async Task> GetDataHolderBrandsAsync(Industry ind return (allBrands, totalRecords); } - public async Task GetDataRecipientsAsync(Industry industry) + public async Task GetDataRecipientsAsync(Infrastructure.Industry industry) { List allParticipants = await ProcessGetDataRecipients(industry); @@ -92,7 +92,7 @@ public async Task GetDataRecipientsAsync(Industry industry) /// /// The industry parameter is passed but currently not used. /// - protected async Task> ProcessGetDataRecipients(Industry industry) + protected async Task> ProcessGetDataRecipients(Infrastructure.Industry industry) { return await this._registerDatabaseContext.Participations.AsNoTracking() .Include(p => p.Status) diff --git a/Source/CDR.Register.Repository/RegisterStatusRepository.cs b/Source/CDR.Register.Repository/RegisterStatusRepository.cs index f4b79f4..3c066e6 100644 --- a/Source/CDR.Register.Repository/RegisterStatusRepository.cs +++ b/Source/CDR.Register.Repository/RegisterStatusRepository.cs @@ -18,7 +18,7 @@ public RegisterStatusRepository( this._registerDatabaseContext = registerDatabaseContext; } - public async Task GetDataRecipientStatusesAsync(Industry industry) + public async Task GetDataRecipientStatusesAsync(Infrastructure.Industry industry) { return await this._registerDatabaseContext.Participations.AsNoTracking() .Include(p => p.Status) @@ -28,7 +28,7 @@ public async Task GetDataRecipientStatusesAsync(Industry .ToArrayAsync(); } - public async Task GetSoftwareProductStatusesAsync(Industry industry) + public async Task GetSoftwareProductStatusesAsync(Infrastructure.Industry industry) { var allParticipants = await this._registerDatabaseContext.Participations.AsNoTracking() .Include(p => p.Industry) @@ -62,14 +62,14 @@ public async Task GetDataRecipientStatusesAsync(Industry .ToArray(); } - public async Task GetDataHolderStatusesAsync(Industry industry) + public async Task GetDataHolderStatusesAsync(Infrastructure.Industry industry) { return await this._registerDatabaseContext.Participations.AsNoTracking() .Include(p => p.Status) .Include(p => p.Industry) .Include(p => p.LegalEntity) .Where(p => p.ParticipationTypeId == ParticipationTypes.Dh) - .Where(p => industry == Industry.ALL || p.IndustryId == industry) + .Where(p => industry == Infrastructure.Industry.ALL || p.IndustryId == industry) .Where(p => p.StatusId == ParticipationStatusType.Active) .Select(p => new DataHolderStatus() { LegalEntityId = p.LegalEntityId, Status = p.Status.ParticipationStatusCode }) .OrderBy(p => p.LegalEntityId) diff --git a/Source/CDR.Register.SSA.API.UnitTests/CDR.Register.SSA.API.UnitTests.csproj b/Source/CDR.Register.SSA.API.UnitTests/CDR.Register.SSA.API.UnitTests.csproj index 450376d..a7fe017 100644 --- a/Source/CDR.Register.SSA.API.UnitTests/CDR.Register.SSA.API.UnitTests.csproj +++ b/Source/CDR.Register.SSA.API.UnitTests/CDR.Register.SSA.API.UnitTests.csproj @@ -1,20 +1,20 @@  - - net6.0 false - 1.3.2 - 1.3.2 - 1.3.2 - - + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) + + + + - PreserveNewest @@ -22,6 +22,15 @@ Always + + Always + + + Always + + + Always + Always @@ -29,22 +38,20 @@ Always - - - - + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all - - - + \ No newline at end of file diff --git a/Source/CDR.Register.SSA.API.UnitTests/Certificates/jwks.pfx b/Source/CDR.Register.SSA.API.UnitTests/Certificates/jwks.pfx new file mode 100644 index 0000000000000000000000000000000000000000..828e8a9199f7fedae4dc31f9c8754bd1f56074dd GIT binary patch literal 2709 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 PsKPaadeN%i0s;sCpZpg; literal 0 HcmV?d00001 diff --git a/Source/CDR.Register.SSA.API.UnitTests/Certificates/mock-data-recipient-invalid.pfx b/Source/CDR.Register.SSA.API.UnitTests/Certificates/mock-data-recipient-invalid.pfx new file mode 100644 index 0000000000000000000000000000000000000000..f3a4725113103289cc8736e357adc4cfd41cf0a8 GIT binary patch literal 3043 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 literal 0 HcmV?d00001 diff --git a/Source/CDR.Register.SSA.API.UnitTests/Certificates/mock-data-recipient.pfx b/Source/CDR.Register.SSA.API.UnitTests/Certificates/mock-data-recipient.pfx new file mode 100644 index 0000000000000000000000000000000000000000..e602d7689723693da82827254d3dd5b09d6487d1 GIT binary patch literal 2845 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 nfG)Coh)EwWKQJ() + { + { "EnableServerCertificateValidation", "True"}, + }) + .Build(); + _configuration = configuration; + + _handler = new HttpClientHandler(); + _handler.SetServerCertificateValidation(_configuration); + } + + [Theory] + [InlineData("mock-data-recipient.pfx", "#M0ckDataRecipient#", true, "Valid TLS certificate provisioned by trusted CA should return true")] + [InlineData("mock-data-recipient-invalid.pfx", "#M0ckDataRecipient#", false, "Expired TLS certificate should throw exception")] + [InlineData("jwks.pfx", "#M0ckDataRecipient#", false, "Self-signed TLS certificate should throw exception")] + public async Task ServerCertificates_ValidationEnabled_ShouldValidateSslConnection( + string certName, string certPassword, bool expected, string reason) + { + await using (var mockEndpoint = new MockEndpoint("https://localhost:9990", + Path.Combine(Directory.GetCurrentDirectory(), "Certificates", certName), + certPassword)) + { + mockEndpoint.Start(); + var client = new HttpClient(_handler); + if (expected) + { + var result = await client.GetAsync("https://localhost:9990"); + Assert.NotNull(result); + } + else + { + await Assert.ThrowsAsync(async () => await client.GetAsync("https://localhost:9990")); + } + await mockEndpoint.Stop(); + } + } + + public partial class MockEndpoint : IAsyncDisposable + { + public MockEndpoint(string url, string certificatePath, string certificatePassword) + { + Url = url; + CertificatePath = certificatePath; + CertificatePassword = certificatePassword; + } + + public string Url { get; init; } + private int UrlPort => new Uri(Url).Port; + public string CertificatePath { get; init; } + public string CertificatePassword { get; init; } + + private IWebHost? _host; + + public void Start() + { + Log.Information("Calling {FUNCTION} in {ClassName}.", nameof(Start), nameof(MockEndpoint)); + + _host = new WebHostBuilder() + .UseKestrel(opts => + { + opts.ListenAnyIP(UrlPort, + opts => opts.UseHttps(new X509Certificate2(CertificatePath, CertificatePassword, X509KeyStorageFlags.Exportable))); + }) + .UseStartup(_ => new MockEndpointStartup()) + .Build(); + + _host.RunAsync(); + } + + public async Task Stop() + { + Log.Information("Calling {FUNCTION} in {ClassName}.", nameof(Stop), nameof(MockEndpoint)); + + if (_host != null) + { + await _host.StopAsync(); + } + } + + bool _disposed; + public async ValueTask DisposeAsync() + { + Log.Information("Calling {FUNCTION} in {ClassName}.", nameof(DisposeAsync), nameof(MockEndpoint)); + + if (!_disposed) + { + await Stop(); + _disposed = true; + } + + GC.SuppressFinalize(this); + } + + class MockEndpointStartup + { + public static void Configure(IApplicationBuilder app) + { + app.UseHttpsRedirection(); + app.UseRouting(); + } + + public static void ConfigureServices(IServiceCollection services) + { + services.AddRouting(); + } + } + } + } +} diff --git a/Source/CDR.Register.SSA.API.UnitTests/TokenizerServiceTests.cs b/Source/CDR.Register.SSA.API.UnitTests/TokenizerServiceTests.cs index 13f9570..819b94a 100644 --- a/Source/CDR.Register.SSA.API.UnitTests/TokenizerServiceTests.cs +++ b/Source/CDR.Register.SSA.API.UnitTests/TokenizerServiceTests.cs @@ -71,8 +71,6 @@ public async Task GenerateJwtTokenAsync_Success() var ssaToken = await tokenizerService.GenerateJwtTokenAsync(ssa); var tokenHandler = new JwtSecurityTokenHandler(); - //Read token for Ggtting the user details - var parsedJwt = tokenHandler.ReadToken(ssaToken) as JwtSecurityToken; //Create the certificate which has only public key var cert = new X509Certificate2(_configuration["SigningCertificatePublic:Path"]); @@ -96,9 +94,9 @@ public async Task GenerateJwtTokenAsync_Success() var principal = tokenHandler.ValidateToken(ssaToken, validationParameters, out validatedToken); //Assert - Assert.True(validatedToken != null); - Assert.True(validatedToken.Issuer == "cdr-register"); - Assert.True(principal.Claims.Count() == 17); + Assert.NotNull(validatedToken); + Assert.Equal("cdr-register", validatedToken.Issuer); + Assert.Equal(17, principal.Claims.Count()); } [Fact] @@ -138,9 +136,7 @@ public async Task GenerateJwtTokenAsync_InvalidToken_Failure() ssaToken = ssaToken.Replace('a', 'b'); var tokenHandler = new JwtSecurityTokenHandler(); - //Read token for Ggtting the user details - var parsedJwt = tokenHandler.ReadToken(ssaToken) as JwtSecurityToken; - + //Create the certificate which has only public key var cert = new X509Certificate2(_configuration["SigningCertificatePublic:Path"]); @@ -168,7 +164,7 @@ public async Task GenerateJwtTokenAsync_InvalidToken_Failure() { var errorMessage = ex.Message.Replace("\n", ""); //Assert - Assert.True(errorMessage == "IDX10511: Signature validation failed. Keys tried: 'System.Text.StringBuilder'. kid: 'System.String'. Exceptions caught: 'System.Text.StringBuilder'.token: 'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'."); + Assert.StartsWith("IDX10511: Signature validation failed.", errorMessage); } } @@ -207,8 +203,6 @@ public async Task GenerateJwtTokenAsync_InvalidCertificate_Failure() var ssaToken = await tokenizerService.GenerateJwtTokenAsync(ssa); var tokenHandler = new JwtSecurityTokenHandler(); - //Read token for Ggtting the user details - var parsedJwt = tokenHandler.ReadToken(ssaToken) as JwtSecurityToken; //Create the certificate which has only public key var cert = new X509Certificate2(_configuration["InvalidSigningCertificatePublic:Path"]); @@ -237,7 +231,7 @@ public async Task GenerateJwtTokenAsync_InvalidCertificate_Failure() { var errorMessage = ex.Message.Replace("\n", ""); //Assert - Assert.True(errorMessage == "IDX10501: Signature validation failed. Unable to match key: kid: 'System.String'.Exceptions caught: 'System.Text.StringBuilder'. token: 'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'."); + Assert.StartsWith("IDX10503: Signature validation failed.", errorMessage); } } @@ -305,9 +299,9 @@ public async Task GenerateJwtTokenAsync_ValidateJwks_Success() var principal = tokenHandler.ValidateToken(ssaToken, validationParameters, out validatedToken); // Assert - Assert.True(validatedToken != null); - Assert.True(validatedToken.Issuer == "cdr-register"); - Assert.True(principal.Claims.Count() == 17); + Assert.NotNull(validatedToken); + Assert.Equal("cdr-register", validatedToken.Issuer); + Assert.Equal(17, principal.Claims.Count()); } } } diff --git a/Source/CDR.Register.SSA.API/Business/CertificateService.cs b/Source/CDR.Register.SSA.API/Business/CertificateService.cs index f976ff5..c84fa2f 100644 --- a/Source/CDR.Register.SSA.API/Business/CertificateService.cs +++ b/Source/CDR.Register.SSA.API/Business/CertificateService.cs @@ -52,12 +52,12 @@ private CDR.Register.API.Infrastructure.Models.JsonWebKeySet GenerateJwks() kty = this.SecurityKey.PublicKey.KeyExchangeAlgorithm, n = n, e = e, - key_ops = new string[] { "sign", "verify" } + key_ops = ["sign", "verify"] }; return new CDR.Register.API.Infrastructure.Models.JsonWebKeySet() { - keys = new CDR.Register.API.Infrastructure.Models.JsonWebKey[] { jwk } + keys = [jwk] }; } } diff --git a/Source/CDR.Register.SSA.API/Business/Models/SSAValidationException.cs b/Source/CDR.Register.SSA.API/Business/Models/SSAValidationException.cs index efa0c6d..a3513c7 100644 --- a/Source/CDR.Register.SSA.API/Business/Models/SSAValidationException.cs +++ b/Source/CDR.Register.SSA.API/Business/Models/SSAValidationException.cs @@ -3,14 +3,9 @@ namespace CDR.Register.SSA.API.Business.Models { - [Serializable] + public class SSAValidationException : Exception { - protected SSAValidationException(SerializationInfo info, StreamingContext context) - : base(info, context) - { - } - public SSAValidationException() { diff --git a/Source/CDR.Register.SSA.API/Business/SSAService.cs b/Source/CDR.Register.SSA.API/Business/SSAService.cs index 6ae5ccd..ff3b194 100644 --- a/Source/CDR.Register.SSA.API/Business/SSAService.cs +++ b/Source/CDR.Register.SSA.API/Business/SSAService.cs @@ -34,14 +34,14 @@ public SSAService( _tokenizer = tokenizer; } - public async Task GetSoftwareStatementAssertionJWTAsync(Industry industry, string dataRecipientBrandId, string softwareProductId) + public async Task GetSoftwareStatementAssertionJWTAsync(Repository.Infrastructure.Industry industry, string dataRecipientBrandId, string softwareProductId) { // Get the SSA to be put in a JWT var ssa = await GetSoftwareStatementAssertionAsync(industry, dataRecipientBrandId, softwareProductId); return await _tokenizer.GenerateJwtTokenAsync(ssa); } - public async Task GetSoftwareStatementAssertionAsync(Industry industry, string dataRecipientBrandId, string softwareProductId) + public async Task GetSoftwareStatementAssertionAsync(Repository.Infrastructure.Industry industry, string dataRecipientBrandId, string softwareProductId) { var softwareProductEntity = await GetSoftwareStatementAssertionAsync(dataRecipientBrandId, softwareProductId); var ssa = _mapper.MapV3(softwareProductEntity); diff --git a/Source/CDR.Register.SSA.API/Business/SerializationExtensions.cs b/Source/CDR.Register.SSA.API/Business/SerializationExtensions.cs index 52eb543..b4cc5e7 100644 --- a/Source/CDR.Register.SSA.API/Business/SerializationExtensions.cs +++ b/Source/CDR.Register.SSA.API/Business/SerializationExtensions.cs @@ -1,5 +1,4 @@ using Newtonsoft.Json; -using Newtonsoft.Json.Serialization; namespace CDR.Register.SSA.API.Business { @@ -7,15 +6,7 @@ public static class SerializationExtensions { public static string ToJson(this object value) { - var jsonSerializerSettings = new JsonSerializerSettings - { - ContractResolver = new CamelCasePropertyNamesContractResolver(), - DefaultValueHandling = DefaultValueHandling.Include, - NullValueHandling = NullValueHandling.Ignore, - Formatting = Formatting.Indented - }; - - var result = JsonConvert.SerializeObject(value, jsonSerializerSettings); + var result = JsonConvert.SerializeObject(value); return result; } } diff --git a/Source/CDR.Register.SSA.API/CDR.Register.SSA.API.csproj b/Source/CDR.Register.SSA.API/CDR.Register.SSA.API.csproj index e9f3d97..45276ea 100644 --- a/Source/CDR.Register.SSA.API/CDR.Register.SSA.API.csproj +++ b/Source/CDR.Register.SSA.API/CDR.Register.SSA.API.csproj @@ -1,43 +1,40 @@  - - net6.0 31925f57-bd42-4e7b-bf0a-9080de458279 Linux - 1.3.2 - 1.3.2 - 1.3.2 + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) + True + ConsumerDataRight.ParticipantTooling.MockRegister.API.SSA.xml - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - PreserveNewest - true - PreserveNewest + PreserveNewest + true + PreserveNewest PreserveNewest @@ -50,22 +47,18 @@ PreserveNewest - - Always - Always - - + \ No newline at end of file diff --git a/Source/CDR.Register.SSA.API/ConsumerDataRight.ParticipantTooling.MockRegister.API.SSA.xml b/Source/CDR.Register.SSA.API/ConsumerDataRight.ParticipantTooling.MockRegister.API.SSA.xml new file mode 100644 index 0000000..611e325 --- /dev/null +++ b/Source/CDR.Register.SSA.API/ConsumerDataRight.ParticipantTooling.MockRegister.API.SSA.xml @@ -0,0 +1,144 @@ + + + + CDR.Register.SSA.API + + + + + The class extracts information from the certificate. + + + + + iss (issuer) claim denoting the party attesting to the claims in the software statement + + + + + iat (issued at) claim + + + + + exp (expiration time) claim + MUST NOT be accepted for processing + + + + + jti (JWT ID) claim + + + + + A unique identifier string assigned by the CDR Register that identifies CDR Participant (e.g. ADR) + + + + + Human-readable string name of the Accredited Data Recipient to be presented to the end user during authorization. + + + + + Human-readable string name of the software product to be presented to the end-user during authorization + + + + + Human-readable string name of the software product description to be presented to the end user during authorization + + + + + URL string of a web page providing information about the ADR Software Product + + + + + Array of redirection URI strings for use in redirect-based flows + + + + + URL string that references a logo for the client. If present, the server SHOULD display this image to the end-user during approval + + + + + URL string that points to a humanreadable terms of service document for the Software Product + + + + + URL string that points to a humanreadable policy document for the Software Product + + + + + URL string referencing the client's JSON Web Key (JWK) Set [RFC7517] document, which contains the client's public keys + + + + + URI string that references the location of the Software Product consent revocation endpoint as per https://consumerdatastandardsaustralia.github.io/standards/#end-points + + + + + Base URI for the Consumer Data Standard data recipient endpoints. This should be the base to provide reference to all other Data Recipient Endpoints + + + + + String representing a unique identifier assigned by the ACCC Register and used by registration endpoints to identify the software product to be dynamically registered + + + + + String containing a role of the software in thwe CDR Regime. Initially the only value used with be "data-recipient-software-product" + + + + + String containing a space-separated list of scope values that the client can use when requesting access tokens + + + + + URL string that references a sector uri for the client. If present, the server SHOULD display this image to the end-user during approval + + + + + Human-readable string legal entity id of the Accredited Data Recipient to be presented to the end user during authorization. + + + + + Human-readable string legal entity name of the Accredited Data Recipient to be presented to the end user during authorization. + + + + + The class generates a JWT software statement assertion token from data and a certificate. + + + + + Generate JWT token from software statement assertion data. + + The software statement assertion model type. + The software statement assertion. + The software statement assertion token as a string. + + + + Performs status check against the softwareProductId parameter + + Software Product ID + An ActionResult if there is an error to return, otherwise null if there are no issues. + + + diff --git a/Source/CDR.Register.SSA.API/Controllers/SSAController.cs b/Source/CDR.Register.SSA.API/Controllers/SSAController.cs index 0ef5002..db16ccc 100644 --- a/Source/CDR.Register.SSA.API/Controllers/SSAController.cs +++ b/Source/CDR.Register.SSA.API/Controllers/SSAController.cs @@ -1,8 +1,8 @@ using CDR.Register.API.Infrastructure; using CDR.Register.API.Infrastructure.Authorization; using CDR.Register.API.Infrastructure.Filters; -using CDR.Register.API.Infrastructure.Models; using CDR.Register.API.Infrastructure.Services; +using CDR.Register.Domain.Models; using CDR.Register.SSA.API.Business; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; @@ -34,7 +34,7 @@ public SSAController( _configuration = configuration; } - [PolicyAuthorize(AuthorisationPolicy.GetSSAMultiIndustry)] + [PolicyAuthorize(RegisterAuthorisationPolicy.GetSSAMultiIndustry)] [HttpGet] [Route("v1/{industry}/data-recipients/brands/{dataRecipientBrandId}/software-products/{softwareProductId}/ssa")] [ReturnXV("3")] @@ -46,10 +46,10 @@ public async Task GetSoftwareStatementAssertionXV3(string industr // CTS conformance ID validations var basePathExpression = _configuration.GetValue(Constants.ConfigurationKeys.BasePathExpression); if (!string.IsNullOrEmpty(basePathExpression)) - { + { var validIssuer = HttpContext.ValidateIssuer(); if (!validIssuer) - { + { return Unauthorized(new ResponseErrorList(StatusCodes.Status401Unauthorized.ToString(), HttpStatusCode.Unauthorized.ToString(), "invalid_token")); } } @@ -90,7 +90,7 @@ private async Task CheckSoftwareProduct(string softwareProductId) // Get the software product id based on the access token. var softwareProductIdAsGuid = GetSoftwareProductIdFromAccessToken(); if (softwareProductIdAsGuid == null) - return new BadRequestObjectResult(new ResponseErrorList(ResponseErrorList.UnknownError())); + return new BadRequestObjectResult(new ResponseErrorList().AddUnexpectedError()); // Ensure that the software product id from the access token matches the software product id in the request. if (!softwareProductIdAsGuid.ToString().Equals(softwareProductId, StringComparison.OrdinalIgnoreCase)) diff --git a/Source/CDR.Register.SSA.API/Extensions.cs b/Source/CDR.Register.SSA.API/Extensions/ServiceCollectionExtensions.cs similarity index 59% rename from Source/CDR.Register.SSA.API/Extensions.cs rename to Source/CDR.Register.SSA.API/Extensions/ServiceCollectionExtensions.cs index 6b69c7c..4a4b157 100644 --- a/Source/CDR.Register.SSA.API/Extensions.cs +++ b/Source/CDR.Register.SSA.API/Extensions/ServiceCollectionExtensions.cs @@ -6,16 +6,13 @@ using CDR.Register.Repository.Interfaces; using CDR.Register.SSA.API.Business; using MediatR; -using Microsoft.AspNetCore.Builder; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; -using Microsoft.OpenApi.Models; -using Newtonsoft.Json.Converters; -namespace CDR.Register.SSA.API +namespace CDR.Register.SSA.API.Extensions { - public static class Extensions + public static class ServiceCollectionExtensions { public static IServiceCollection AddRegisterSSA(this IServiceCollection services, IConfiguration configuration) { @@ -30,33 +27,12 @@ public static IServiceCollection AddRegisterSSA(this IServiceCollection services services.AddDbContext(options => options.UseSqlServer(configuration.GetConnectionString("Register_DB"))); - services.AddMediatR(typeof(Startup)); + services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(Startup).Assembly)); // Authentication services.AddAuthenticationAuthorization(configuration); return services; } - - public static IServiceCollection AddRegisterSSASwagger(this IServiceCollection services) - { - services.AddSwaggerGen(c => - { - c.SwaggerDoc("v1", new OpenApiInfo { Title = "CDR Register SSA API", Version = "v1" }); - }); - - services.AddSwaggerGenNewtonsoftSupport(); - services.AddMvc().AddNewtonsoftJson(options => { options.SerializerSettings.Converters.Add(new StringEnumConverter()); }); - - return services; - } - - public static IApplicationBuilder UseRegisterSSASwagger(this IApplicationBuilder app) - { - app.UseSwagger(); - app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "CDR Register SSA API v1")); - - return app; - } } } diff --git a/Source/CDR.Register.SSA.API/Program.cs b/Source/CDR.Register.SSA.API/Program.cs index 40f2ed7..de22c2e 100644 --- a/Source/CDR.Register.SSA.API/Program.cs +++ b/Source/CDR.Register.SSA.API/Program.cs @@ -1,11 +1,11 @@ -using System; -using System.IO; using CDR.Register.API.Infrastructure; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Serilog; using Serilog.Events; +using System; +using System.IO; namespace CDR.Register.SSA.API { @@ -21,9 +21,7 @@ public static int Main(string[] args) .Build(); Log.Logger = new LoggerConfiguration() - .ReadFrom.Configuration(configuration) - .MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning) - .MinimumLevel.Override("System", LogEventLevel.Information) + .ReadFrom.Configuration(configuration) .Enrich.FromLogContext() .Enrich.WithProcessId() .Enrich.WithProcessName() @@ -31,7 +29,7 @@ public static int Main(string[] args) .Enrich.WithThreadName() .Enrich.WithProperty("Environment", Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT")) .CreateLogger(); - + Serilog.Debugging.SelfLog.Enable(msg => Log.Logger.Debug(msg)); try diff --git a/Source/CDR.Register.SSA.API/Startup.cs b/Source/CDR.Register.SSA.API/Startup.cs index a80cd35..99f0ff6 100644 --- a/Source/CDR.Register.SSA.API/Startup.cs +++ b/Source/CDR.Register.SSA.API/Startup.cs @@ -5,13 +5,15 @@ using CDR.Register.API.Infrastructure.Versioning; using CDR.Register.API.Logger; using CDR.Register.Repository.Infrastructure; +using CDR.Register.SSA.API.Extensions; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Serilog; +using static CDR.Register.API.Infrastructure.Constants; +using CDR.Register.Domain.Extensions; namespace CDR.Register.SSA.API { @@ -28,31 +30,35 @@ public Startup(IConfiguration configuration) public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); - - services.AddRegisterSSA(Configuration) - .AddRegisterSSASwagger(); + + services.AddRegisterSSA(Configuration); services.AddControllers(); - services.AddMvc().AddNewtonsoftJson(options => + services.AddApiVersioning(options => { - options.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore; + options.ApiVersionReader = new CdrVersionReader(new CdrApiOptions()); //uses default options atm + options.ErrorResponses = new ApiVersionErrorResponse(); }); - services.AddApiVersioning(options => + var enableSwagger = Configuration.GetValue(ConfigurationKeys.EnableSwagger); + if (enableSwagger) { - options.DefaultApiVersion = new ApiVersion(1, 0); - options.AssumeDefaultVersionWhenUnspecified = true; - options.ErrorResponses = new ErrorResponseVersion(); - options.ApiVersionSelector = new ApiVersionSelector(options); - }); + services.AddCdrSwaggerGen(opt => + { + opt.SwaggerTitle = "Consumer Data Right (CDR) Participant Tooling - Mock Register - SSA API"; + opt.IncludeAuthentication = true; + }); + } + + services.AddMvc().AddCdrNewtonsoftJson(); services.AddAutoMapper(typeof(Startup), typeof(RegisterDatabaseContext)); services.AddScoped(); - if (Configuration.GetSection("SerilogRequestResponseLogger ") != null) - { + if (Configuration.GetSection("SerilogRequestResponseLogger") != null) + { Log.Logger.Information("Adding request response logging middleware"); services.AddRequestResponseLogging(); } @@ -72,8 +78,6 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) app.UseSerilogRequestLogging(); - app.UseRegisterSSASwagger(); - app.UseHttpsRedirection(); app.UseRouting(); @@ -82,6 +86,12 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) app.UseAuthorization(); + var enableSwagger = Configuration.GetValue(ConfigurationKeys.EnableSwagger); + if (enableSwagger) + { + app.UseCdrSwagger(); + } + app.UseEndpoints(endpoints => { endpoints.MapControllers(); diff --git a/Source/CDR.Register.SSA.API/appsettings.Release.json b/Source/CDR.Register.SSA.API/appsettings.Release.json index 7d82066..0c112be 100644 --- a/Source/CDR.Register.SSA.API/appsettings.Release.json +++ b/Source/CDR.Register.SSA.API/appsettings.Release.json @@ -1,8 +1,8 @@ { "ConnectionStrings": { - "Register_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True", - "Register_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True", - "Register_RequestResponse_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True" + "Register_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True", + "Register_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True", + "Register_RequestResponse_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True" }, "Serilog": { "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.MSSqlServer" ], diff --git a/Source/CDR.Register.SSA.API/appsettings.json b/Source/CDR.Register.SSA.API/appsettings.json index e9ed17c..616073d 100644 --- a/Source/CDR.Register.SSA.API/appsettings.json +++ b/Source/CDR.Register.SSA.API/appsettings.json @@ -1,4 +1,5 @@ { + "EnableSwagger": true, "SSA": { "ExpiryInSeconds": 600, "Issuer": "cdr-register" @@ -28,5 +29,6 @@ } } } - } + }, + "EnableServerCertificateValidation": false } diff --git a/Source/CDR.Register.Status.API/Business/Responses/ResponseRegisterDataHolderStatusList.cs b/Source/CDR.Register.Status.API/Business/Responses/ResponseRegisterDataHolderStatusList.cs index 335dc47..7da471f 100644 --- a/Source/CDR.Register.Status.API/Business/Responses/ResponseRegisterDataHolderStatusList.cs +++ b/Source/CDR.Register.Status.API/Business/Responses/ResponseRegisterDataHolderStatusList.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using CDR.Register.API.Infrastructure.Models; +using CDR.Register.Domain.Models; using CDR.Register.Status.API.Business.Models; namespace CDR.Register.Status.API.Business.Responses diff --git a/Source/CDR.Register.Status.API/Business/Responses/ResponseRegisterDataRecipientStatusList.cs b/Source/CDR.Register.Status.API/Business/Responses/ResponseRegisterDataRecipientStatusList.cs index 86e92db..c8686e8 100644 --- a/Source/CDR.Register.Status.API/Business/Responses/ResponseRegisterDataRecipientStatusList.cs +++ b/Source/CDR.Register.Status.API/Business/Responses/ResponseRegisterDataRecipientStatusList.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using CDR.Register.API.Infrastructure.Models; +using CDR.Register.Domain.Models; using CDR.Register.Status.API.Business.Models; namespace CDR.Register.Status.API.Business.Responses diff --git a/Source/CDR.Register.Status.API/Business/Responses/ResponseRegisterSoftwareProductStatusList.cs b/Source/CDR.Register.Status.API/Business/Responses/ResponseRegisterSoftwareProductStatusList.cs index 017c47b..f167b95 100644 --- a/Source/CDR.Register.Status.API/Business/Responses/ResponseRegisterSoftwareProductStatusList.cs +++ b/Source/CDR.Register.Status.API/Business/Responses/ResponseRegisterSoftwareProductStatusList.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using CDR.Register.API.Infrastructure.Models; +using CDR.Register.Domain.Models; using CDR.Register.Status.API.Business.Models; namespace CDR.Register.Status.API.Business.Responses diff --git a/Source/CDR.Register.Status.API/CDR.Register.Status.API.csproj b/Source/CDR.Register.Status.API/CDR.Register.Status.API.csproj index e66fac1..f4d1853 100644 --- a/Source/CDR.Register.Status.API/CDR.Register.Status.API.csproj +++ b/Source/CDR.Register.Status.API/CDR.Register.Status.API.csproj @@ -1,65 +1,59 @@  - - - net6.0 - 2f05af62-1878-47d5-925d-31c0db13b55c - Linux - 1.3.2 - 1.3.2 - 1.3.2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Always - - - PreserveNewest - true - PreserveNewest - - - PreserveNewest - true - PreserveNewest - - - - - - - - + + 2f05af62-1878-47d5-925d-31c0db13b55c + Linux + $(TargetFrameworkVersion) + $(Version) + $(Version) + $(Version) + True + ConsumerDataRight.ParticipantTooling.MockRegister.API.Status.xml + + + + + + + + + + + + + + + + + + + + + + + + + + + Always + + + PreserveNewest + true + PreserveNewest + + + PreserveNewest + true + PreserveNewest + + + + + + Always - - + \ No newline at end of file diff --git a/Source/CDR.Register.Status.API/ConsumerDataRight.ParticipantTooling.MockRegister.API.Status.xml b/Source/CDR.Register.Status.API/ConsumerDataRight.ParticipantTooling.MockRegister.API.Status.xml new file mode 100644 index 0000000..471dd94 --- /dev/null +++ b/Source/CDR.Register.Status.API/ConsumerDataRight.ParticipantTooling.MockRegister.API.Status.xml @@ -0,0 +1,8 @@ + + + + CDR.Register.Status.API + + + + diff --git a/Source/CDR.Register.Status.API/Extensions.cs b/Source/CDR.Register.Status.API/Extensions.cs deleted file mode 100644 index 6fbb1af..0000000 --- a/Source/CDR.Register.Status.API/Extensions.cs +++ /dev/null @@ -1,46 +0,0 @@ -using CDR.Register.Repository; -using CDR.Register.Repository.Interfaces; -using CDR.Register.Status.API.Business; -using MediatR; -using Microsoft.AspNetCore.Builder; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.OpenApi.Models; -using Newtonsoft.Json.Converters; - -namespace CDR.Register.Status.API -{ - public static class Extensions - { - public static IServiceCollection AddRegisterStatus(this IServiceCollection services, IConfiguration configuration) - { - services.AddScoped(); - services.AddScoped(); - - services.AddMediatR(typeof(Startup)); - - return services; - } - - public static IServiceCollection AddRegisterStatusSwagger(this IServiceCollection services) - { - services.AddSwaggerGen(c => - { - c.SwaggerDoc("v1", new OpenApiInfo { Title = "CDR Register Status API", Version = "v1" }); - }); - - services.AddSwaggerGenNewtonsoftSupport(); - services.AddMvc().AddNewtonsoftJson(options => { options.SerializerSettings.Converters.Add(new StringEnumConverter()); }); - - return services; - } - - public static IApplicationBuilder UseRegisterStatusSwagger(this IApplicationBuilder app) - { - app.UseSwagger(); - app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "CDR Register Status API v1")); - - return app; - } - } -} diff --git a/Source/CDR.Register.Status.API/Extensions/ServiceCollectionExtensions.cs b/Source/CDR.Register.Status.API/Extensions/ServiceCollectionExtensions.cs new file mode 100644 index 0000000..d9a3d86 --- /dev/null +++ b/Source/CDR.Register.Status.API/Extensions/ServiceCollectionExtensions.cs @@ -0,0 +1,23 @@ +using CDR.Register.Repository; +using CDR.Register.Repository.Interfaces; +using CDR.Register.Status.API.Business; +using CDR.Register.Status.API.Controllers; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; + + +namespace CDR.Register.Status.API.Extensions +{ + public static class ServiceCollectionExtensions + { + public static IServiceCollection AddRegisterStatus(this IServiceCollection services, IConfiguration configuration) + { + services.AddScoped(); + services.AddScoped(); + + services.AddMediatR(cfg => cfg.RegisterServicesFromAssembly(typeof(StatusController).Assembly)); + + return services; + } + } +} diff --git a/Source/CDR.Register.Status.API/Program.cs b/Source/CDR.Register.Status.API/Program.cs index 2174f3d..d6730b8 100644 --- a/Source/CDR.Register.Status.API/Program.cs +++ b/Source/CDR.Register.Status.API/Program.cs @@ -1,11 +1,11 @@ -using System; -using System.IO; using CDR.Register.API.Infrastructure; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Hosting; using Serilog; using Serilog.Events; +using System; +using System.IO; namespace CDR.Register.Status.API { @@ -21,9 +21,7 @@ public static int Main(string[] args) .Build(); Log.Logger = new LoggerConfiguration() - .ReadFrom.Configuration(configuration) - .MinimumLevel.Override("Microsoft.AspNetCore", LogEventLevel.Warning) - .MinimumLevel.Override("System", LogEventLevel.Information) + .ReadFrom.Configuration(configuration) .Enrich.FromLogContext() .Enrich.WithProcessId() .Enrich.WithProcessName() diff --git a/Source/CDR.Register.Status.API/Startup.cs b/Source/CDR.Register.Status.API/Startup.cs index 397dc7e..36d7bce 100644 --- a/Source/CDR.Register.Status.API/Startup.cs +++ b/Source/CDR.Register.Status.API/Startup.cs @@ -5,14 +5,16 @@ using CDR.Register.API.Infrastructure.Versioning; using CDR.Register.API.Logger; using CDR.Register.Repository.Infrastructure; +using CDR.Register.Status.API.Extensions; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Serilog; +using static CDR.Register.API.Infrastructure.Constants; +using CDR.Register.Domain.Extensions; namespace CDR.Register.Status.API { @@ -29,19 +31,28 @@ public Startup(IConfiguration configuration) public void ConfigureServices(IServiceCollection services) { services.AddHttpContextAccessor(); - services.AddRegisterStatus(Configuration) - .AddRegisterStatusSwagger(); + services.AddRegisterStatus(Configuration); services.AddControllers(); services.AddApiVersioning(options => { - options.DefaultApiVersion = new ApiVersion(1, 0); - options.AssumeDefaultVersionWhenUnspecified = true; - options.ErrorResponses = new ErrorResponseVersion(); - options.ApiVersionSelector = new ApiVersionSelector(options); + options.ApiVersionReader = new CdrVersionReader(new CdrApiOptions()); //uses default options atm + options.ErrorResponses = new ApiVersionErrorResponse(); }); + var enableSwagger = Configuration.GetValue(ConfigurationKeys.EnableSwagger); + if (enableSwagger) + { + services.AddCdrSwaggerGen(opt => + { + opt.SwaggerTitle = "Consumer Data Right (CDR) Participant Tooling - Mock Register - Status API"; + opt.IncludeAuthentication = false; + }); + } + + services.AddMvc().AddCdrNewtonsoftJson(); + // This is to manage the EF database context through the web API DI. // If this is to be done inside the repository project itself, we need to manage the context life-cycle explicitly. services.AddDbContext(options => options.UseSqlServer(Configuration.GetConnectionString("Register_DB"))); @@ -71,8 +82,6 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) app.UseSerilogRequestLogging(); - app.UseRegisterStatusSwagger(); - app.UseHttpsRedirection(); app.UseRouting(); @@ -80,6 +89,12 @@ public void Configure(IApplicationBuilder app, IWebHostEnvironment env) app.UseAuthentication(); app.UseAuthorization(); + var enableSwagger = Configuration.GetValue(ConfigurationKeys.EnableSwagger); + if (enableSwagger) + { + app.UseCdrSwagger(); + } + app.UseEndpoints(endpoints => { endpoints.MapControllers(); diff --git a/Source/CDR.Register.Status.API/appsettings.Development.json b/Source/CDR.Register.Status.API/appsettings.Development.json index 17e10a6..0eb3df2 100644 --- a/Source/CDR.Register.Status.API/appsettings.Development.json +++ b/Source/CDR.Register.Status.API/appsettings.Development.json @@ -208,5 +208,7 @@ }, "BasePath": "", // BasePathExpression example: ^\/host\/[a-zA-Z0-9\-]{1,36}\/register\/(.*)$ - "BasePathExpression": "" + "BasePathExpression": "", + "PublicHostName": "https://localhost:7000", + "SecureHostName": "https://localhost:7001" } \ No newline at end of file diff --git a/Source/CDR.Register.Status.API/appsettings.Release.json b/Source/CDR.Register.Status.API/appsettings.Release.json index aba2374..7bf8cf2 100644 --- a/Source/CDR.Register.Status.API/appsettings.Release.json +++ b/Source/CDR.Register.Status.API/appsettings.Release.json @@ -1,8 +1,8 @@ { "ConnectionStrings": { - "Register_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True", - "Register_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True", - "Register_RequestResponse_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True" + "Register_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True", + "Register_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True", + "Register_RequestResponse_Logging_DB": "Server=mssql;Database=cdr-register;User Id='SA';Password='Pa{}w0rd2019';MultipleActiveResultSets=True;TrustServerCertificate=True" }, "Serilog": { "Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File", "Serilog.Sinks.MSSqlServer" ], diff --git a/Source/CDR.Register.Status.API/appsettings.json b/Source/CDR.Register.Status.API/appsettings.json index d7fe766..be266c4 100644 --- a/Source/CDR.Register.Status.API/appsettings.json +++ b/Source/CDR.Register.Status.API/appsettings.json @@ -1,24 +1,25 @@ { - "Cache": { - "ExpirationInSeconds": 20 - }, - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - }, - "AllowedHosts": "*", - "Kestrel": { - "Endpoints": { - "Https": { - "Url": "https://0.0.0.0:7004", - "Certificate": { - "Path": "Certificates/tls-mock-register.pfx", - "Password": "#M0ckRegister#" - } - } + "EnableSwagger": true, + "Cache": { + "ExpirationInSeconds": 20 + }, + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "AllowedHosts": "*", + "Kestrel": { + "Endpoints": { + "Https": { + "Url": "https://0.0.0.0:7004", + "Certificate": { + "Path": "Certificates/tls-mock-register.pfx", + "Password": "#M0ckRegister#" } + } } + } } \ No newline at end of file diff --git a/Source/Directory.Build.props b/Source/Directory.Build.props new file mode 100644 index 0000000..dbd3608 --- /dev/null +++ b/Source/Directory.Build.props @@ -0,0 +1,10 @@ + + + net8.0 + 2.0.0 + + + + $(NoWarn);1591 + + \ No newline at end of file diff --git a/Source/Dockerfile b/Source/Dockerfile index a5b0d06..ad54edf 100644 --- a/Source/Dockerfile +++ b/Source/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base WORKDIR /app EXPOSE 7000 EXPOSE 7001 @@ -7,13 +7,16 @@ EXPOSE 7006 # Default ASPNETCORE_ENVIRONMENT to Release ENV ASPNETCORE_ENVIRONMENT=Release -FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY . ./ FROM build AS publish +# Copy the build props +COPY ./Directory.Build.props /app/Directory.Build.props + COPY ./CDR.Register.API.Infrastructure/. /app/CDR.Register.API.Infrastructure COPY ./CDR.Register.Repository/. /app/CDR.Register.Repository COPY ./CDR.Register.Domain/. /app/CDR.Register.Domain diff --git a/Source/Dockerfile.integration-tests b/Source/Dockerfile.integration-tests index b73e584..c7cec66 100644 --- a/Source/Dockerfile.integration-tests +++ b/Source/Dockerfile.integration-tests @@ -1,18 +1,23 @@ # Dockerfile for running integration tests -FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src # Default ASPNETCORE_ENVIRONMENT to Release ENV ASPNETCORE_ENVIRONMENT=Release +# Copy the build props +COPY ./Directory.Build.props ./Directory.Build.props + # Copy source COPY ./CDR.Register.API.Gateway.mTLS/Certificates/ca.crt ./CDR.Register.API.Gateway.mTLS/Certificates/ca.crt COPY ./CDR.Register.Admin.API/. ./CDR.Register.Admin.API COPY ./CDR.Register.Repository/. ./CDR.Register.Repository COPY ./CDR.Register.Domain/. ./CDR.Register.Domain +COPY ./CDR.Register.API.Infrastructure/. ./CDR.Register.API.Infrastructure COPY ./CDR.Register.IntegrationTests/. ./CDR.Register.IntegrationTests + # Install ca certificate RUN apt-get update && apt-get install -y sudo RUN sudo cp ./CDR.Register.API.Gateway.mTLS/Certificates/ca.crt /usr/local/share/ca-certificates/ca.crt @@ -22,4 +27,4 @@ RUN sudo update-ca-certificates WORKDIR /src/CDR.Register.IntegrationTests RUN dotnet build --configuration Release -ENTRYPOINT dotnet test --configuration Release --no-build --filter ${TEST_FILTER} --logger "trx;verbosity=detailed;LogFileName=results.trx;" -r /testresults +ENTRYPOINT dotnet test --configuration Release --no-build --filter ${TEST_FILTER} --logger "trx;verbosity=detailed;LogFileName=results.trx;" --results-directory /testresults \ No newline at end of file diff --git a/Source/Dockerfile.unit-tests b/Source/Dockerfile.unit-tests index 864395f..75904bb 100644 --- a/Source/Dockerfile.unit-tests +++ b/Source/Dockerfile.unit-tests @@ -1,6 +1,6 @@ # Dockerfile for running unit tests -FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src # Default ASPNETCORE_ENVIRONMENT to Release @@ -19,5 +19,5 @@ WORKDIR /src RUN dotnet build --configuration Release # Run tests -ENTRYPOINT ["dotnet", "test", "--configuration", "Release", "--filter", "UnitTests", "--no-build", "--logger", "trx;verbosity=detailed", "-r", "/testresults"] +ENTRYPOINT ["dotnet", "test", "--configuration", "Release", "--filter", "Category=UnitTests", "--no-build", "--logger", "trx;verbosity=detailed", "--results-directory", "/testresults"] # ENTRYPOINT ["tail", "-f", "/dev/null"] diff --git a/Source/docker-compose.Ecosystem.yml b/Source/docker-compose.Ecosystem.yml index dc2b6a0..7d87aca 100644 --- a/Source/docker-compose.Ecosystem.yml +++ b/Source/docker-compose.Ecosystem.yml @@ -1,4 +1,3 @@ -version: '3.8' services: mock-register: @@ -91,7 +90,7 @@ services: mssql: container_name: sql1 - image: 'mcr.microsoft.com/mssql/server:2019-latest' + image: 'mcr.microsoft.com/mssql/server:2022-latest' ports: - '1433:1433' environment: @@ -100,7 +99,7 @@ services: See the Microsoft SQL Server Image on Docker Hub for more information.} - SA_PASSWORD=Pa{}w0rd2019 healthcheck: - test: /opt/mssql-tools/bin/sqlcmd -S . -U sa -P "Pa{}w0rd2019" -Q "SELECT 1" || exit 1 + test: /opt/mssql-tools18/bin/sqlcmd -S . -U sa -P "Pa{}w0rd2019" -Q "SELECT 1" -No || exit 1 timeout: 10s interval: 10s retries: 10 diff --git a/Source/docker-compose.IntegrationTests.yml b/Source/docker-compose.IntegrationTests.yml index 17fd006..b779a09 100644 --- a/Source/docker-compose.IntegrationTests.yml +++ b/Source/docker-compose.IntegrationTests.yml @@ -1,7 +1,5 @@ # Docker compose for build pipeline -version: '3.8' - services: mock-register: container_name: mock-register @@ -64,14 +62,14 @@ services: mssql: container_name: sql1 - image: 'mcr.microsoft.com/mssql/server:2019-latest' + image: 'mcr.microsoft.com/mssql/server:2022-latest' ports: - "1433:1433" environment: - ACCEPT_EULA=Y - SA_PASSWORD=Pa{}w0rd2019 healthcheck: - test: /opt/mssql-tools/bin/sqlcmd -S . -U sa -P "Pa{}w0rd2019" -Q "SELECT 1" || exit 1 + test: /opt/mssql-tools18/bin/sqlcmd -S . -U sa -P "Pa{}w0rd2019" -Q "SELECT 1" -No || exit 1 timeout: 5s interval: 5s retries: 20 diff --git a/Source/docker-compose.UnitTests.yml b/Source/docker-compose.UnitTests.yml index f3347f2..871ed3e 100644 --- a/Source/docker-compose.UnitTests.yml +++ b/Source/docker-compose.UnitTests.yml @@ -1,7 +1,5 @@ # Docker compose for build pipeline -version: '3.8' - services: mock-register-unit-tests: container_name: mock-register-unit-tests @@ -19,14 +17,14 @@ services: mssql: container_name: sql1 - image: 'mcr.microsoft.com/mssql/server:2019-latest' + image: 'mcr.microsoft.com/mssql/server:2022-latest' ports: - "1433:1433" environment: - ACCEPT_EULA=Y - SA_PASSWORD=Pa{}w0rd2019 healthcheck: - test: /opt/mssql-tools/bin/sqlcmd -S . -U sa -P "Pa{}w0rd2019" -Q "SELECT 1" || exit 1 + test: /opt/mssql-tools18/bin/sqlcmd -S . -U sa -P "Pa{}w0rd2019" -Q "SELECT 1" -No || exit 1 timeout: 5s interval: 5s retries: 20 diff --git a/Source/docker-compose.yml b/Source/docker-compose.yml index d7f1f95..f4bbe6b 100644 --- a/Source/docker-compose.yml +++ b/Source/docker-compose.yml @@ -1,4 +1,3 @@ -version: '3.8' services: mock-register: @@ -30,7 +29,7 @@ services: mssql: container_name: sql1 - image: 'mcr.microsoft.com/mssql/server:2019-latest' + image: 'mcr.microsoft.com/mssql/server:2022-latest' ports: - '1433:1433' environment: @@ -39,7 +38,7 @@ services: See the Microsoft SQL Server Image on Docker Hub for more information.} - SA_PASSWORD=Pa{}w0rd2019 healthcheck: - test: /opt/mssql-tools/bin/sqlcmd -S . -U sa -P "Pa{}w0rd2019" -Q "SELECT 1" || exit 1 + test: /opt/mssql-tools18/bin/sqlcmd -S . -U sa -P "Pa{}w0rd2019" -Q "SELECT 1" -No || exit 1 timeout: 10s interval: 10s retries: 10 diff --git a/mock-register-architecture.png b/mock-register-architecture.png index 80080cc797213fd92a32a6e87a11a757fe7ae178..cad407be26d47ce104840187d8023abd87679795 100644 GIT binary patch literal 455876 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%0DlRzV@YNn${1;&dJyHY{s7kGd-uwp4lGq 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≪k-b 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 literal 251580 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

kDRd*}RuASi7Fs?C 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 z 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