From 22a9b0c68dddf845d29d548a7ecab45884b745d1 Mon Sep 17 00:00:00 2001 From: Mikey Henderson Date: Thu, 13 Jul 2023 10:09:44 -0700 Subject: [PATCH] Changes and enhancements for production release (#6) (#7) * Inventory Working * Final Enrollment works * Prod Ready Fixes * add pam support with updated extension framework * invoke reenrollment from job delegate; build class logger instead of ctor arg (arg can't be resolved by framework correctly) * use subject from reenrollment job * break cert request payload into conditional sections * use SSL setting to select https * use cert name (alias) and certusage from entry parameters * use constants for APIs and Cert Usage codes * only delete cert on reenrollment with Overwrite specified * add error logging and method logging * add API request trace logging + update methods to use object types instead of string * safe check required fields present in job props Co-authored-by: Matthew Dobrowsky <11599974+doebrowsk@users.noreply.github.com> --- .../workflows/keyfactor-starter-workflow.yml | 26 +- BoschIPCamera/BoschIPCamera.csproj | 2 +- BoschIPCamera/Client/BoschIPCameraClient.cs | 1032 +++++++++++------ BoschIPCamera/Client/Constants.cs | 118 ++ BoschIPCamera/Client/HexadecimalEncoding.cs | 168 +-- BoschIPCamera/Jobs/Inventory.cs | 132 ++- BoschIPCamera/Jobs/Management.cs | 151 +-- BoschIPCamera/Jobs/Reenrollment.cs | 566 ++++----- BoschIPCamera/StorePath.cs | 17 - BoschIPCamera/manifest.json | 4 - .../BoschIPCameraTestConsole.csproj | 17 - BoschIPCameraTestConsole/Program.cs | 259 ----- BoschIPcamera.sln | 82 +- CHANGELOG.md | 11 + README.md | 146 ++- images/CertStore.gif | Bin 48525 -> 0 bytes images/CertStoreCreds.gif | Bin 18513 -> 0 bytes images/CertStoreTypeAdvanced.gif | Bin 28576 -> 0 bytes images/CertStoreTypeBasic.gif | Bin 37684 -> 0 bytes images/CertStoreTypeCustomFields.gif | Bin 41555 -> 0 bytes images/CertStoreTypeEntryParams.gif | Bin 22351 -> 0 bytes images/CertStoreUserCreds.gif | Bin 15967 -> 0 bytes images/entry-certificate-usage.png | Bin 0 -> 19698 bytes images/entry-name.png | Bin 0 -> 18028 bytes images/entry-overwrite.png | Bin 0 -> 18550 bytes images/reenrollment-example.png | Bin 0 -> 18231 bytes images/store-type-advanced.png | Bin 0 -> 21759 bytes images/store-type-basic.png | Bin 0 -> 25457 bytes images/store-type-entry.png | Bin 0 -> 20231 bytes integration-manifest.json | 13 +- readme_source.md | 119 +- 31 files changed, 1478 insertions(+), 1385 deletions(-) create mode 100644 BoschIPCamera/Client/Constants.cs delete mode 100644 BoschIPCamera/StorePath.cs delete mode 100644 BoschIPCameraTestConsole/BoschIPCameraTestConsole.csproj delete mode 100644 BoschIPCameraTestConsole/Program.cs create mode 100644 CHANGELOG.md delete mode 100644 images/CertStore.gif delete mode 100644 images/CertStoreCreds.gif delete mode 100644 images/CertStoreTypeAdvanced.gif delete mode 100644 images/CertStoreTypeBasic.gif delete mode 100644 images/CertStoreTypeCustomFields.gif delete mode 100644 images/CertStoreTypeEntryParams.gif delete mode 100644 images/CertStoreUserCreds.gif create mode 100644 images/entry-certificate-usage.png create mode 100644 images/entry-name.png create mode 100644 images/entry-overwrite.png create mode 100644 images/reenrollment-example.png create mode 100644 images/store-type-advanced.png create mode 100644 images/store-type-basic.png create mode 100644 images/store-type-entry.png diff --git a/.github/workflows/keyfactor-starter-workflow.yml b/.github/workflows/keyfactor-starter-workflow.yml index 6a22487..87f050a 100644 --- a/.github/workflows/keyfactor-starter-workflow.yml +++ b/.github/workflows/keyfactor-starter-workflow.yml @@ -5,22 +5,42 @@ jobs: call-create-github-release-workflow: uses: Keyfactor/actions/.github/workflows/github-release.yml@main + get-manifest-properties: + runs-on: windows-latest + outputs: + update_catalog: ${{ steps.read-json.outputs.update_catalog }} + integration_type: ${{ steps.read-json.outputs.integration_type }} + steps: + - uses: actions/checkout@v3 + - name: Store json + id: read-json + shell: pwsh + run: | + $json = Get-Content integration-manifest.json | ConvertFrom-Json + $myvar = $json.update_catalog + echo "update_catalog=$myvar" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append + $myvar = $json.integration_type + echo "integration_type=$myvar" | Out-File -FilePath $Env:GITHUB_OUTPUT -Encoding utf8 -Append + call-dotnet-build-and-release-workflow: needs: [call-create-github-release-workflow] uses: Keyfactor/actions/.github/workflows/dotnet-build-and-release.yml@main with: release_version: ${{ needs.call-create-github-release-workflow.outputs.release_version }} release_url: ${{ needs.call-create-github-release-workflow.outputs.release_url }} - release_dir: BoschIPCamera/bin/Release/netcoreapp3.1 # TODO: set build output directory to upload as a release, relative to checkout workspace + release_dir: BoschIPCamera/bin/Release/netcoreapp3.1 secrets: token: ${{ secrets.PRIVATE_PACKAGE_ACCESS }} call-generate-readme-workflow: if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' uses: Keyfactor/actions/.github/workflows/generate-readme.yml@main + secrets: + token: ${{ secrets.APPROVE_README_PUSH }} call-update-catalog-workflow: - if: github.event_name == 'push' || github.event_name == 'workflow_dispatch' + needs: get-manifest-properties + if: needs.get-manifest-properties.outputs.update_catalog == 'True' && (github.event_name == 'push' || github.event_name == 'workflow_dispatch') uses: Keyfactor/actions/.github/workflows/update-catalog.yml@main secrets: - token: ${{ secrets.SDK_SYNC_PAT }} + token: ${{ secrets.SDK_SYNC_PAT }} \ No newline at end of file diff --git a/BoschIPCamera/BoschIPCamera.csproj b/BoschIPCamera/BoschIPCamera.csproj index b646af2..066eca1 100644 --- a/BoschIPCamera/BoschIPCamera.csproj +++ b/BoschIPCamera/BoschIPCamera.csproj @@ -19,7 +19,7 @@ - + diff --git a/BoschIPCamera/Client/BoschIPCameraClient.cs b/BoschIPCamera/Client/BoschIPCameraClient.cs index e17c695..6245868 100644 --- a/BoschIPCamera/Client/BoschIPCameraClient.cs +++ b/BoschIPCamera/Client/BoschIPCameraClient.cs @@ -1,383 +1,649 @@ -using System; -using System.Collections.Generic; -using RestSharp; -using System.Threading.Tasks; -using RestSharp.Authenticators.Digest; -using System.Threading; -using System.ServiceModel; -using System.Xml; -using Microsoft.Extensions.Logging; -using Keyfactor.Logging; - -namespace Keyfactor.Extensions.Orchestrator.BoschIPCamera.Client -{ - public class BoschIPcameraClient - { - private static Dictionary s_csrSubject = new Dictionary(); - private string _cameraURL; - private RestClient _client = null; - private RestResponse _response = null; - private ILogger _logger; - - public void setupStandardBoschIPcameraClient(string cameraHostURL, string userName, string password, Dictionary csrSubject, - ILogger logger) - { - ///_logger.LogTrace("Initializing RestSharp Client"); - _cameraURL = "http://" + cameraHostURL + "/rcp.xml?"; - //_logger.LogTrace("Camera URL: " + _cameraURL); - - _client = new RestClient(_cameraURL) - { - Authenticator = new DigestAuthenticator(userName, password) - }; - - s_csrSubject = csrSubject; - _logger = logger; - } - - public Dictionary listCerts(string URL, string user, string pass) - { - CancellationTokenSource source = new CancellationTokenSource(); - CancellationToken token = source.Token; - - var request = new RestRequest() - .AddQueryParameter("command", "0x0BEB") - .AddQueryParameter("type", "P_OCTET") - .AddQueryParameter("direction", "READ") - .AddQueryParameter("num", "1"); - - string requestValue = request.Resource; - - Task task = _client.GetAsync(request, token); - task.Wait(); - List strs = getCameraCertList(task.Result.Content); - Dictionary files = new Dictionary(); - foreach(string s in strs) - { - download(URL, user, pass, s).Wait(); - files.Add(s, _response.Content); - } - - return files; - } - - //need to think through the parameters sent in here - public string certCreate(string certificateName) - { - string myCommon = HexadecimalEncoding.ToHexWithPadding(s_csrSubject["CN"]); - string myOrg = HexadecimalEncoding.ToHexWithPadding(s_csrSubject["O"]); - string myUnit = HexadecimalEncoding.ToHexWithPadding(s_csrSubject["OU"]); - string myCountry = HexadecimalEncoding.ToHexWithPadding(s_csrSubject["C"]); - string myCity = HexadecimalEncoding.ToHexWithPadding(s_csrSubject["L"]); - string myProvince = HexadecimalEncoding.ToHexWithPadding(s_csrSubject["ST"]); - string myId = HexadecimalEncoding.ToHexNoPadding(certificateName); - - string payload = HexadecimalEncoding.ToHexWithPrefix(certificateName, 4, '0') + "0000" + myId + "0008000100000001000800020000" + "0000"; - - payload = payload + HexadecimalEncoding.ToHexStringLengthWithPadding(s_csrSubject["CN"], 4, '0') + "0005" + myCommon; - payload = payload + HexadecimalEncoding.ToHexStringLengthWithPadding(s_csrSubject["O"], 4, '0') + "0006" + myOrg; - payload = payload + HexadecimalEncoding.ToHexStringLengthWithPadding(s_csrSubject["OU"], 4, '0') + "0007" + myUnit; - payload = payload + HexadecimalEncoding.ToHexStringLengthWithPadding(s_csrSubject["L"], 4, '0') + "0008" + myCity; - payload = payload + HexadecimalEncoding.ToHexStringLengthWithPadding(s_csrSubject["C"], 4, '0') + "0009" + myCountry; - payload = payload + HexadecimalEncoding.ToHexStringLengthWithPadding(s_csrSubject["ST"], 4, '0') + "000A" + myProvince; - // _logger.LogTrace("Payload for CSR request: " + payload); - - try - { - generateCSROnCameraAsync(payload).Wait(); - String returnCode = parseCameraResponse(_response.Content); - if (returnCode != null) - { - _logger.LogError("Camera failed to generate CSR with error code " + returnCode); - return returnCode; - } - _logger.LogInformation("CSR call completed successfully for " + certificateName); - return "pass"; - } - catch (ProtocolException ex) - { - _logger.LogError("CSR call failed with the following error: "+ ex.ToString()); - return ex.ToString(); - }; - } - - - //Call the camera to generate a CSR - private async Task generateCSROnCameraAsync(string payload) - { - CancellationTokenSource source = new CancellationTokenSource(); - CancellationToken token = source.Token; - - var request = new RestRequest() - .AddQueryParameter("command", "0x0BEC") - .AddQueryParameter("type", "P_OCTET") - .AddQueryParameter("direction", "WRITE") - .AddQueryParameter("num", "1") - .AddQueryParameter("payload", payload); - - string requestValue = request.Resource; - - _response = await _client.GetAsync(request, token); - } - - public string downloadCSRFromCamera(string cameraHostURL, string userName, string password, string certName) - { - _logger.LogTrace("Download " + certName + " CSR from Camera: " + _cameraURL); - bool haveCSR = false; - int count = 0; - //keep trying until we get the cert or try 30 times (wait 5 seconds each time) - while (!haveCSR && count <= 30) - { - try - { - Thread.Sleep(5000); - count++; - download(cameraHostURL, userName, password, certName,"?type=csr").Wait(); - // _logger.LogInformation("CSR downloaded successfully for " + certName); - haveCSR = true; - return _response.Content; - } - catch (Exception ex) - { - _logger.LogTrace("CSR download failed with the following error: " + ex.ToString()); - }; - } - - _logger.LogError("Failed to download CSR"); - return null; - } - private async Task download(string cameraHostURL, string userName, string password, string certName, string paramString="") - { - CancellationTokenSource source = new CancellationTokenSource(); - CancellationToken token = source.Token; - - _logger.LogTrace("Initializing RestSharp Client for CSR Download"); - string cameraURL = $"http://{cameraHostURL}/cert_download/{certName.Replace(" ", "%20")}.pem{paramString}"; - _logger.LogTrace("Camera URL: " + cameraURL); - - RestClient client = new RestClient(cameraURL) - { - Authenticator = new DigestAuthenticator(userName, password) - }; - - var request = new RestRequest(); - - _response = await client.GetAsync(request, token); - } - - //Enable/Disable 802.1x setting on the camera - public string change8021xSettings(string onOffSwitch) - { - _logger.LogTrace("Changing Camera 802.1x setting to " + onOffSwitch + " on Camera: " + _cameraURL); - - try - { - change8021x(onOffSwitch).Wait(); - String returnCode = parseCameraResponse(_response.Content); - if (returnCode != null) - { - _logger.LogError("Camera failed to change 802.1x with error code " + returnCode); - return returnCode; - } - _logger.LogInformation("802.1x setting changed successfully for " + _cameraURL); - return "pass"; - } - catch (Exception ex) - { - _logger.LogError("802.1x setting change failed with the following error: " + ex.ToString()); - return ex.ToString(); - }; - } - - //Enable/Disable 802.1x on the camera after the certs are in place - //onOffSwitch - "0" means off, "1" means on - private async Task change8021x(string onOffSwitch) - { - CancellationTokenSource source = new CancellationTokenSource(); - CancellationToken token = source.Token; - - var request = new RestRequest() - .AddQueryParameter("command", "0x09EB") - .AddQueryParameter("type", "T_OCTET") - .AddQueryParameter("direction", "WRITE") - .AddQueryParameter("num", "1") - .AddQueryParameter("payload", onOffSwitch); - - string requestValue = request.Resource; - - _response = await _client.GetAsync(request, token); - - string responeValue = _response.Content; - } - - public string rebootCamera() - { - _logger.LogTrace("Rebooting camera : " + _cameraURL); - - try - { - reboot().Wait(); - String returnCode = parseCameraResponse(_response.Content); - if(returnCode != null) - { - _logger.LogError("Camera failed to reboot with error code " + returnCode); - return returnCode; - } - _logger.LogInformation("Camera rebooted sucessfully " + _cameraURL); - return "pass"; - } - catch (Exception ex) - { - _logger.LogError("Failed to reboot Camera " + _cameraURL + " with the following error: " + ex.ToString()); - return ex.ToString(); - }; - } - - private async Task reboot() - { - CancellationTokenSource source = new CancellationTokenSource(); - CancellationToken token = source.Token; - - var request = new RestRequest() - .AddQueryParameter("command", "0x0811") - .AddQueryParameter("type", "F_FLAG") - .AddQueryParameter("direction", "WRITE") - .AddQueryParameter("num", "1") - .AddQueryParameter("payload", "1"); - - string requestValue = request.Resource; - - _response = await _client.GetAsync(request, token); - } - - //set the cert usage on a cert - public string setCertUsage(string certName, string usageCode) - { - _logger.LogTrace("Setting cert usage to " + usageCode + " for cert " + certName + " for camera " + _cameraURL); - String payload = "0x00080000" + usageCode; - string myId = HexadecimalEncoding.ToHexNoPadding(certName); - string additionalPayload = payload + HexadecimalEncoding.ToHex(certName, 4, '0') + "0001" + myId; - - try - { - setCertUsage(additionalPayload).Wait(); - string returnCode = parseCameraResponse(_response.Content); - if (returnCode != null) - { - _logger.LogError("Setting cert usage to " + usageCode + " for cert " + certName + " for camera " + _cameraURL + " failed with error code " + returnCode); - return returnCode; - } - _logger.LogInformation("Successfully changed cert usage to " + usageCode + " for cert " + certName + " for camera " + _cameraURL); - return "pass"; - - } - catch (Exception ex) - { - _logger.LogError("Cert usage change failed with the following error: " + ex.ToString()); - return ex.ToString(); - }; - } - - //can be used to reset/clear existing cert usage and to set cert usage on a specific cert - private async Task setCertUsage(string payload) - { - CancellationTokenSource source = new CancellationTokenSource(); - CancellationToken token = source.Token; - - var request = new RestRequest() - .AddQueryParameter("command", "0x0BF2") - .AddQueryParameter("type", "P_OCTET") - .AddQueryParameter("direction", "WRITE") - .AddQueryParameter("num", "1") - .AddQueryParameter("payload", payload); - - string requestValue = request.Resource; - - _response = await _client.GetAsync(request, token); - - } - - //Delete the cert by name - public string deleteCertByName(string certName) - { - _logger.LogTrace("Delete cert " + certName + " for camera " + _cameraURL); - string myId = HexadecimalEncoding.ToHexNoPadding(certName); - string payload = HexadecimalEncoding.ToHexWithPrefix(certName, 4, '0') + "0000" + myId + "0004000200080003000000FF"; - - try - { - //first reset the cert usage - deleteCert(payload).Wait(); - String returnCode = parseCameraResponse(_response.Content); - if (returnCode != null) - { - _logger.LogError("Deleting cert " + certName + " for camera " + _cameraURL + " failed with error code " + returnCode); - return returnCode; - } - _logger.LogInformation("Successfully deleted cert " + certName + " for camera " + _cameraURL); - return "pass"; - } - catch (Exception ex) - { - _logger.LogError("Deleting cert failed with the following error: " + ex.ToString()); - return ex.ToString(); - }; - } - - //delete a cert on camera - private async Task deleteCert(string payload) - { - CancellationTokenSource source = new CancellationTokenSource(); - CancellationToken token = source.Token; - - var request = new RestRequest() - .AddQueryParameter("command", "0x0BE9") - .AddQueryParameter("type", "P_OCTET") - .AddQueryParameter("direction", "WRITE") - .AddQueryParameter("num", "1") - .AddQueryParameter("payload", payload); - - string requestValue = request.Resource; - - _response = await _client.GetAsync(request, token); - } - - //returns error code if camera call fails, blank if successful - private string parseCameraResponse(String response) - { - String errorCode = null; - XmlDocument xmlResponse = new XmlDocument(); - xmlResponse.LoadXml(response); - - XmlNodeList errorList = xmlResponse.GetElementsByTagName("err"); - if (errorList.Count > 0) - { - errorCode = errorList[0].InnerXml; - } - return errorCode; - } - - public List getCameraCertList(String response) - { - XmlDocument xmlResponse = new XmlDocument(); - xmlResponse.LoadXml(response); - - // Parse raw hex content from the response - string s = - xmlResponse.GetElementsByTagName("str")[0].InnerText - .Replace(" ", "") - .Replace("\r","") - .Replace("\n", ""); - - // Record structure starts with 2 bytes representing length of the record, followed by 6 more bytes, then filename, then a zero byte. - // Iterate through records by reading length tag, extracting the filename in hex and converting. - List certNames = new List(); - Func getName = (s,start) => s.Substring(start, s.IndexOf("00", start) - start); - for (int i = 0; i < s.Length; i += Convert.ToInt32(s.Substring(i, 4), 16) * 2) - { - certNames.Add(HexadecimalEncoding.FromHex(getName(s,i+16))); - } - return certNames; - } - } -} +// Copyright 2023 Keyfactor +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using System; +using System.Collections.Generic; +using System.IO; +using System.Net; +using System.Net.Http; +using System.Net.Http.Headers; +using System.ServiceModel; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Xml; +using Keyfactor.Logging; +using Keyfactor.Orchestrators.Extensions; +using Keyfactor.Orchestrators.Extensions.Interfaces; +using Microsoft.Extensions.Logging; + +namespace Keyfactor.Extensions.Orchestrator.BoschIPCamera.Client +{ + public class BoschIpCameraClient + { + private readonly string _cameraUrl; + private readonly string _baseUrl; + private readonly HttpClient _client; + private readonly ILogger _logger; + private readonly CredentialCache _digestCredential; + private HttpResponseMessage _response; + + public BoschIpCameraClient(JobConfiguration config, CertificateStore store, IPAMSecretResolver pam, ILogger logger) + { + _logger = logger; + _logger.LogTrace("Starting Bosch IP Camera Client config"); + + if (config.UseSSL) + { + _baseUrl = $"https://{store.ClientMachine}"; + _cameraUrl = $"https://{store.ClientMachine}/rcp.xml?"; + } + else + { + _baseUrl = $"http://{store.ClientMachine}"; + _cameraUrl = $"http://{store.ClientMachine}/rcp.xml?"; + } + + _logger.LogDebug($"Base URL: {_baseUrl}"); + _logger.LogDebug($"Camera API URL: {_cameraUrl}"); + + var username = ResolvePamField(pam, config.ServerUsername, "Server Username"); + var password = ResolvePamField(pam, config.ServerPassword, "Server Password"); + + var credentials = $"{username}:{password}"; + var encodedCredentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(credentials)); + + _client = new HttpClient(); + _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", encodedCredentials); + + // for use in reenrollment cert upload calls + _digestCredential = new CredentialCache + { + {new Uri(_baseUrl), "Digest", new NetworkCredential(username, password)} + }; + } + + public Dictionary ListCerts() + { + _logger.MethodEntry(LogLevel.Debug); + var api = Constants.API.BuildRequestUri( + Constants.API.Endpoints.CERTIFICATE_LIST, + Constants.API.Type.P_OCTET, + Constants.API.Direction.READ + ); + var requestUri = $"{_cameraUrl}{api}"; + + var request = new HttpRequestMessage(HttpMethod.Get, requestUri); + + _logger.LogTrace($"Sending API request: {requestUri}"); + var task = _client.SendAsync(request); + task.Wait(); + var cameras = GetCameraCertList(task.Result.Content.ReadAsStringAsync().Result); + var files = new Dictionary(); + foreach (var c in cameras) + { + Download(c).Wait(); + files.Add(c, _response.Content.ReadAsStringAsync().Result); + } + + return files; + } + + public string CertCreate(Dictionary subject, string certificateName) + { + _logger.MethodEntry(LogLevel.Debug); + try + { + var myId = HexadecimalEncoding.ToHexNoPadding(certificateName); + var payload = $"{HexadecimalEncoding.ToHexWithPrefix(certificateName, 4, '0')}0000{myId}"; + + // RAW HEX: "length" + "tag" + "content" + // length is full byte count of header (length + tag) + content + var keyType = "0008" + "0001" + "00000001"; + var requesttype = "0008" + "0002" + "00000000"; + + payload += keyType; + payload += requesttype; + + // CN is expected + var myCommon = HexadecimalEncoding.ToHexWithPadding(subject["CN"]); + payload += $"{HexadecimalEncoding.ToHexStringLengthWithPadding(subject["CN"], 4, '0')}0005{myCommon}"; + + if (subject.ContainsKey("O")) + { + var myOrg = HexadecimalEncoding.ToHexWithPadding(subject["O"]); + payload += $"{HexadecimalEncoding.ToHexStringLengthWithPadding(subject["O"], 4, '0')}0006{myOrg}"; + } + + if (subject.ContainsKey("OU")) + { + var myUnit = HexadecimalEncoding.ToHexWithPadding(subject["OU"]); + payload += $"{HexadecimalEncoding.ToHexStringLengthWithPadding(subject["OU"], 4, '0')}0007{myUnit}"; + } + + if (subject.ContainsKey("L")) + { + var myCity = HexadecimalEncoding.ToHexWithPadding(subject["L"]); + payload += $"{HexadecimalEncoding.ToHexStringLengthWithPadding(subject["L"], 4, '0')}0008{myCity}"; + } + + if (subject.ContainsKey("C")) + { + var myCountry = HexadecimalEncoding.ToHexWithPadding(subject["C"]); + payload += $"{HexadecimalEncoding.ToHexStringLengthWithPadding(subject["C"], 4, '0')}0009{myCountry}"; + } + + if (subject.ContainsKey("ST")) + { + var myProvince = HexadecimalEncoding.ToHexWithPadding(subject["ST"]); + payload += $"{HexadecimalEncoding.ToHexStringLengthWithPadding(subject["ST"], 4, '0')}000A{myProvince}"; + } + + GenerateCsrOnCameraAsync(payload).Wait(); + var returnCode = parseCameraResponse(_response.Content.ReadAsStringAsync().Result); + if (returnCode != null) + { + _logger.LogError($"Camera failed to generate CSR with error code {returnCode}"); + return returnCode; + } + + _logger.LogInformation($"CSR call completed successfully for {certificateName}"); + return "pass"; + } + catch (ProtocolException ex) + { + _logger.LogError($"CSR call failed with the following error: {ex}"); + return ex.ToString(); + } + } + + + //Call the camera to generate a CSR + private async Task GenerateCsrOnCameraAsync(string payload) + { + var api = Constants.API.BuildRequestUri( + Constants.API.Endpoints.CERTIFICATE_REQUEST, + Constants.API.Type.P_OCTET, + Constants.API.Direction.WRITE, + Uri.EscapeDataString(payload) + ); + var requestUri = $"{_cameraUrl}{api}"; + + var cancellationTokenSource = new CancellationTokenSource(); + var token = cancellationTokenSource.Token; + + _logger.LogTrace($"Sending API request: {requestUri}"); + _response = await _client.GetAsync(requestUri, token); + } + + public string DownloadCsrFromCamera(string certName) + { + _logger.MethodEntry(LogLevel.Debug); + _logger.LogTrace("Download " + certName + " CSR from Camera: " + _cameraUrl); + var haveCsr = false; + var count = 0; + string csrResult = null; + //keep trying until we get the cert or try 30 times (wait 5 seconds each time) + while (!haveCsr && count <= 30) + try + { + Thread.Sleep(5000); + count++; + Download(certName, "?type=csr").Wait(); + csrResult= _response.Content.ReadAsStringAsync().Result; + if (csrResult.Contains("-----BEGIN CERTIFICATE REQUEST-----")) + haveCsr = true; + } + catch (Exception ex) + { + _logger.LogTrace("CSR Download failed with the following error: " + ex); + } + + return csrResult; + } + + public void UploadCert(string fileName, string fileData) + { + _logger.MethodEntry(LogLevel.Debug); + _logger.LogTrace("Starting Cert upload to camera " + _baseUrl); + + var boundary = "----------" + DateTime.Now.Ticks.ToString("x"); + var fileHeader = + $"Content-Disposition: form-data; name=\"certUsageUnspecified\"; filename=\"{fileName}\";\r\nContent-Type: application/x-x509-ca-cert\r\n\r\n"; + + var authRequest = (HttpWebRequest)WebRequest.Create(_baseUrl + "/upload.htm"); + authRequest.Method = "GET"; + authRequest.Credentials = _digestCredential; + authRequest.PreAuthenticate = true; + + try + { + _logger.LogTrace("Get Auth call to camera on " + _baseUrl); + authRequest.GetResponse(); + } + catch (Exception e) + { + _logger.LogError(e.Message); + } + + var count = 0; + //keep trying until we get the cert on camera or try 5 times + while (count <= 5) + { + try + { + count++; + _logger.LogTrace("Post call to camera on " + _baseUrl); + var httpWebRequest = (HttpWebRequest)WebRequest.Create(_baseUrl + "/upload.htm"); + httpWebRequest.Credentials = _digestCredential; + httpWebRequest.ContentType = "multipart/form-data; boundary=" + boundary; + httpWebRequest.Method = "POST"; + + var requestStream = httpWebRequest.GetRequestStream(); + WriteToStream(requestStream, "--" + boundary + "\r\n"); + WriteToStream(requestStream, fileHeader); + WriteToStream(requestStream, fileData); + WriteToStream(requestStream, "\r\n--" + boundary + "--\r\n"); + + var myHttpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); + + + var responseStream = myHttpWebResponse.GetResponseStream(); + + var myStreamReader = new StreamReader(responseStream ?? throw new InvalidOperationException(), Encoding.Default); + + myStreamReader.ReadToEnd(); + + myStreamReader.Close(); + responseStream.Close(); + + myHttpWebResponse.Close(); + return; + } + catch (Exception e) + { + _logger.LogError(e.Message); + _logger.LogTrace("Failed to push cert on attempt " + count + " trying again if less than or equal to 5"); + } + } + } + + private static void WriteToStream(Stream s, string txt) + { + var bytes = Encoding.UTF8.GetBytes(txt); + s.Write(bytes, 0, bytes.Length); + } + + private async Task Download(string certName, string paramString = "") + { + var source = new CancellationTokenSource(); + var token = source.Token; + + var cameraUrl = $"{_baseUrl}/cert_download/{certName.Replace(" ", "%20")}.pem{paramString}"; + _logger.LogTrace("Camera URL for download: " + cameraUrl); + + _response = await _client.GetAsync(cameraUrl, token); + + } + + + // Enable/Disable 802.1x setting on the camera + public string Change8021XSettings(bool onOffSwitch) + { + _logger.MethodEntry(LogLevel.Debug); + _logger.LogTrace($"Changing Camera 802.1x setting to {(onOffSwitch ? "1" : "0")} on Camera: {_cameraUrl}"); + + try + { + Change8021X(onOffSwitch).Wait(); + var returnCode = parseCameraResponse(_response.Content.ReadAsStringAsync().Result); + if (returnCode != null) + { + _logger.LogError("Camera failed to change 802.1x with error code " + returnCode); + return returnCode; + } + + _logger.LogInformation("802.1x setting changed successfully for " + _cameraUrl); + return "pass"; + } + catch (Exception ex) + { + _logger.LogError("802.1x setting change failed with the following error: " + ex); + return ex.ToString(); + } + } + + // Enable/Disable 802.1x on the camera after the certs are in place + // onOffSwitch - "0" means off, "1" means on + private async Task Change8021X(bool onOffSwitch) + { + var source = new CancellationTokenSource(); + var token = source.Token; + + var api = Constants.API.BuildRequestUri( + Constants.API.Endpoints.EAP_ENABLE, + Constants.API.Type.T_OCTET, + Constants.API.Direction.WRITE, + Uri.EscapeDataString(onOffSwitch ? "1" : "0") + ); + var requestUri = $"{_cameraUrl}{api}"; + + var request = new HttpRequestMessage(HttpMethod.Get, requestUri); + + _logger.LogTrace($"Sending API request: {requestUri}"); + _response = await _client.SendAsync(request, token); + if (!_response.IsSuccessStatusCode) + throw new Exception($"Request failed with status code {_response.StatusCode}"); + } + + + public string RebootCamera() + { + _logger.MethodEntry(LogLevel.Debug); + _logger.LogTrace("Rebooting camera : " + _cameraUrl); + + try + { + Reboot().Wait(); + var returnCode = parseCameraResponse(_response.Content.ReadAsStringAsync().Result); + if (returnCode != null) + { + _logger.LogError("Camera failed to Reboot with error code " + returnCode); + return returnCode; + } + + _logger.LogInformation("Camera rebooted successfully " + _cameraUrl); + return "pass"; + } + catch (Exception ex) + { + _logger.LogError("Failed to Reboot Camera " + _cameraUrl + " with the following error: " + ex); + return ex.ToString(); + } + } + + private async Task Reboot() + { + var source = new CancellationTokenSource(); + var token = source.Token; + + var api = Constants.API.BuildRequestUri( + Constants.API.Endpoints.BOARD_RESET, + Constants.API.Type.F_FLAG, + Constants.API.Direction.WRITE, + "1" // sending 1 reboots camera + ); + var requestUri = $"{_cameraUrl}{api}"; + + var request = new HttpRequestMessage(HttpMethod.Get, requestUri); + + _logger.LogTrace($"Sending API request: {requestUri}"); + _response = await _client.SendAsync(request, token); + if(!_response.IsSuccessStatusCode) + throw new Exception($"Request failed with status code {_response.StatusCode}"); + + } + + // get the cert usage + public Dictionary GetCertUsageList() + { + _logger.MethodEntry(LogLevel.Debug); + _logger.LogTrace($"Get cert usage list for camera " + _cameraUrl); + + // list of cert usage types + var certUsages = new List() { + Constants.CertificateUsage.HTTPS, + Constants.CertificateUsage.EAP_TLS_Client, + Constants.CertificateUsage.TLS_DATE_Client + }; + + var usages = new Dictionary(); + foreach(var usage in certUsages) + { + string certWithUsage = GetCertWithUsage(usage); + if (string.IsNullOrWhiteSpace(certWithUsage)) + { + continue; // no cert name found with this particular usage + } + usages[certWithUsage] = usage; + } + + return usages; + } + + // get certs with usage + private string GetCertWithUsage(Constants.CertificateUsage usage) + { + var source = new CancellationTokenSource(); + var token = source.Token; + + // payload = length + tag (0) + cert usage starting with 0 bit for end cert + var payload = "0x" + "0008" + "0000" + usage.ToUsageCode(); + + var api = Constants.API.BuildRequestUri( + Constants.API.Endpoints.CERTIFICATE_USAGE, + Constants.API.Type.P_OCTET, + Constants.API.Direction.READ, + Uri.EscapeDataString(payload) + ); + var requestUri = $"{_cameraUrl}{api}"; + + var request = new HttpRequestMessage(HttpMethod.Get, requestUri); + + _logger.LogTrace($"Sending API request: {requestUri}"); + _response = _client.SendAsync(request, token).Result; + if (!_response.IsSuccessStatusCode) + throw new Exception($"Request failed with status code {_response.StatusCode}"); + + var responseText = _response.Content.ReadAsStringAsync().Result; + + var taggedResponses = ParseStringListResponse(responseText); + + if (taggedResponses.Count == 2) + { + // 2 responses - first tag 0000 is usage, tag 0001 is the cert name + // cert name is tagged with '0001' in response + return taggedResponses["0001"]; + } + else + { + return ""; + } + } + + //set the cert usage on a cert + public string SetCertUsage(string certName, Constants.CertificateUsage usageCode) + { + _logger.MethodEntry(LogLevel.Debug); + _logger.LogTrace($"Setting cert usage to {usageCode.ToReadableText()} for cert {certName} for camera {_cameraUrl}"); + var payload = "0x00080000" + usageCode.ToUsageCode(); + var myId = HexadecimalEncoding.ToHexNoPadding(certName); + var additionalPayload = payload + HexadecimalEncoding.ToHex(certName, 4, '0') + "0001" + myId; + + try + { + SetCertUsage(additionalPayload).Wait(); + var returnCode = parseCameraResponse(_response.Content.ReadAsStringAsync().Result); + if (returnCode != null) + { + _logger.LogError($"Setting cert usage to {usageCode.ToReadableText()} for cert {certName} for camera {_cameraUrl} failed with error code {returnCode}"); + return returnCode; + } + + _logger.LogInformation($"Successfully changed cert usage to {usageCode.ToReadableText()} for cert {certName} for camera {_cameraUrl}"); + return "pass"; + } + catch (Exception ex) + { + _logger.LogError($"Cert usage change failed with the following error: {ex}"); + return ex.ToString(); + } + } + + //can be used to reset/clear existing cert usage and to set cert usage on a specific cert + private async Task SetCertUsage(string payload) + { + var source = new CancellationTokenSource(); + var token = source.Token; + + var api = Constants.API.BuildRequestUri( + Constants.API.Endpoints.CERTIFICATE_USAGE, + Constants.API.Type.P_OCTET, + Constants.API.Direction.WRITE, + Uri.EscapeDataString(payload) + ); + var requestUri = $"{_cameraUrl}{api}"; + + var request = new HttpRequestMessage(HttpMethod.Get, requestUri); + + _logger.LogTrace($"Sending API request: {requestUri}"); + _response = await _client.SendAsync(request, token); + if (!_response.IsSuccessStatusCode) + throw new Exception($"Request failed with status code {_response.StatusCode}"); + } + + + //Delete the cert by name + public string DeleteCertByName(string certName) + { + _logger.MethodEntry(LogLevel.Debug); + _logger.LogTrace("Delete cert " + certName + " for camera " + _cameraUrl); + var myId = HexadecimalEncoding.ToHexNoPadding(certName); + var payload = HexadecimalEncoding.ToHexWithPrefix(certName, 4, '0') + "0000" + myId + + "00040002" + "00080003000000FF"; + + try + { + //first reset the cert usage + DeleteCert(payload).Wait(); + var returnCode = parseCameraResponse(_response.Content.ReadAsStringAsync().Result); + if (returnCode != null) + { + _logger.LogError("Deleting cert " + certName + " for camera " + _cameraUrl + + " failed with error code " + returnCode); + return returnCode; + } + + _logger.LogInformation("Successfully deleted cert " + certName + " for camera " + _cameraUrl); + return "pass"; + } + catch (Exception ex) + { + _logger.LogError("Deleting cert failed with the following error: " + ex); + return ex.ToString(); + } + } + + //delete a cert on camera + private async Task DeleteCert(string payload) + { + var api = Constants.API.BuildRequestUri( + Constants.API.Endpoints.CERTIFICATE, + Constants.API.Type.P_OCTET, + Constants.API.Direction.WRITE, + Uri.EscapeDataString(payload) + ); + var requestUri = $"{_cameraUrl}{api}"; + + var request = new HttpRequestMessage(HttpMethod.Get, requestUri); + + _logger.LogTrace($"Sending API request: {requestUri}"); + _response = await _client.SendAsync(request); + } + + + //returns error code if camera call fails, blank if successful + private string parseCameraResponse(string response) + { + _logger.LogTrace($"Reading camera response for potential error: {response}"); + string errorCode = null; + var xmlResponse = new XmlDocument(); + xmlResponse.LoadXml(response); + + var errorList = xmlResponse.GetElementsByTagName("err"); + if (errorList.Count > 0) errorCode = errorList[0].InnerXml; + return errorCode; + } + + public List GetCameraCertList(string response) + { + _logger.MethodEntry(LogLevel.Debug); + var xmlResponse = new XmlDocument(); + xmlResponse.LoadXml(response); + + // Parse raw hex content from the response + var s = + xmlResponse.GetElementsByTagName("str")[0].InnerText + .Replace(" ", "") + .Replace("\r", "") + .Replace("\n", ""); + + // Record structure starts with 2 bytes representing length of the record, followed by 6 more bytes, then filename, then a zero byte. + // Iterate through records by reading length tag, extracting the filename in hex and converting. + var certNames = new List(); + Func getName = (s, start) => s.Substring(start, s.IndexOf("00", start) - start); + for (var i = 0; i < s.Length; i += Convert.ToInt32(s.Substring(i, 4), 16) * 2) + certNames.Add(HexadecimalEncoding.FromHex(getName(s, i + 16))); + return certNames; + } + + public Dictionary ParseStringListResponse(string response) + { + _logger.MethodEntry(LogLevel.Debug); + var xmlResponse = new XmlDocument(); + xmlResponse.LoadXml(response); + + // Parse raw hex content from the response + var rawHex = + xmlResponse.GetElementsByTagName("str")[0].InnerText + .Replace(" ", "") + .Replace("\r", "") + .Replace("\n", ""); + + var taggedResponses = new Dictionary(); + + var indexStart = 0; + while (indexStart < rawHex.Length) + { + // NOTE: 1 byte is equivalent to 2 hex chars. so the "length" or numOfBytes *2 is actual char count for a full entry + // first 4 chars are length of a response entry + var hexLength = rawHex.Substring(indexStart, 4); + var numOfBytes = Convert.ToInt32(hexLength, 16); + // next 4 chars are hex code of tag + var tag = rawHex.Substring(indexStart + 4, 4); + // length minus 4 bytes (for length and tag entries) is remaining count of bytes (2 chars each) to evaluate for actual value + var remainingBytes = numOfBytes - 4; + + var value = ""; + if (remainingBytes > 0) + { + // value starts at index start + 8, and char length is remaining bytes * 2 + var hexValue = rawHex.Substring(indexStart + 8, remainingBytes * 2); + value = HexadecimalEncoding.FromHex(hexValue); + } + + taggedResponses[tag] = value; + indexStart += numOfBytes * 2; + } + + return taggedResponses; + } + + private string ResolvePamField(IPAMSecretResolver pam, string key, string fieldName) + { + _logger.LogTrace($"Attempting to resolve PAM eligible field: '{fieldName}'"); + return string.IsNullOrEmpty(key) ? key : pam.Resolve(key); + } + } +} \ No newline at end of file diff --git a/BoschIPCamera/Client/Constants.cs b/BoschIPCamera/Client/Constants.cs new file mode 100644 index 0000000..69aeaf0 --- /dev/null +++ b/BoschIPCamera/Client/Constants.cs @@ -0,0 +1,118 @@ +// Copyright 2023 Keyfactor +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +namespace Keyfactor.Extensions.Orchestrator.BoschIPCamera.Client +{ + public static class Constants + { + public enum CertificateUsage + { + None, + HTTPS, // 0000 0000 + EAP_TLS_Client, // 0000 0001 + TLS_DATE_Client // 0000 0002 + } + + public static CertificateUsage ParseCertificateUsage(string usageText) + { + switch (usageText) + { + case "00000000": + case "HTTPS": + return CertificateUsage.HTTPS; + case "00000001": + case "EAP-TLS-client": + return CertificateUsage.EAP_TLS_Client; + case "00000002": + case "TLS-DATE-client": + return CertificateUsage.TLS_DATE_Client; + case "": + case null: + default: + return CertificateUsage.None; + } + } + + public static string ToReadableText(this CertificateUsage usage) + { + switch (usage) + { + case CertificateUsage.HTTPS: + return "HTTPS"; + case CertificateUsage.EAP_TLS_Client: + return "EAP-TLS-client"; + case CertificateUsage.TLS_DATE_Client: + return "TLS-DATE-client"; + case CertificateUsage.None: + default: + return ""; + } + } + + public static string ToUsageCode(this CertificateUsage usage) + { + switch (usage) + { + case CertificateUsage.HTTPS: + return "00000000"; + case CertificateUsage.EAP_TLS_Client: + return "00000001"; + case CertificateUsage.TLS_DATE_Client: + return "00000002"; + case CertificateUsage.None: + default: + return ""; + } + } + + public static class API + { + public static class Endpoints + { + public static string CERTIFICATE = "0x0BE9"; + public static string CERTIFICATE_LIST = "0x0BEB"; + public static string CERTIFICATE_REQUEST = "0x0BEC"; + public static string CERTIFICATE_USAGE = "0x0BF2"; + public static string EAP_ENABLE = "0x09EB"; + public static string BOARD_RESET = "0x0811"; + } + + public static class Type + { + public static string T_OCTET = "T_OCTET"; + public static string P_OCTET = "P_OCTET"; + public static string F_FLAG = "F_FLAG"; + + } + + public static class Direction + { + public static string READ = "READ"; + public static string WRITE = "WRITE"; + } + + public static string BuildRequestUri(string endpoint, string type, string direction, string payload = null) + { + string uri = $"command={endpoint}&type={type}&direction={direction}&num=1"; + + if (!string.IsNullOrWhiteSpace(payload)) + { + uri = $"{uri}&payload={payload}"; + } + + return uri; + } + } + } +} diff --git a/BoschIPCamera/Client/HexadecimalEncoding.cs b/BoschIPCamera/Client/HexadecimalEncoding.cs index 6db1eae..0281588 100644 --- a/BoschIPCamera/Client/HexadecimalEncoding.cs +++ b/BoschIPCamera/Client/HexadecimalEncoding.cs @@ -1,78 +1,92 @@ -using System; -using System.Linq; - -namespace Keyfactor.Extensions.Orchestrator.BoschIPCamera.Client -{ - public class HexadecimalEncoding - { - - //for each letter in the string passed in, convert to hex and left pad with 2 zeros. Return combined hex values - public static string ToHexWithPadding(string myString) - { - string padding = "00"; - string returnHex = ""; - char[] values = myString.ToCharArray(); - foreach (char letter in values) - { - // Get the integral value of the character. - int value = Convert.ToInt32(letter); - // Convert the integer value to a hexadecimal value in string form. - string hexValue = padding + value.ToString("X"); - returnHex = returnHex + hexValue; - } - return returnHex; - } - - //for each letter in the string passed in, convert to hex. Return combined hex values - public static string ToHexNoPadding(string myString) - { - string myHex = ""; - char[] values = myString.ToCharArray(); - foreach (char letter in values) - { - // Get the integral value of the character. - int value = Convert.ToInt32(letter); - // Convert the integer value to a hexadecimal value in string form. - string hexValue = value.ToString("X"); - myHex = myHex + hexValue; - } - return myHex; - } - - //take the passed in string's length + 4 --> convert to hex left pad with padChar with provided padValue --> prefix with 0x - public static string ToHexWithPrefix(string myString, int padValue, char padChar) - { - //get the length and add 4 - int stringLength = myString.Length + 4; - string hexValue = String.Format("{1,1:X}", 0, stringLength); - return "0x" + hexValue.PadLeft(padValue, padChar); - } - - //take the passed in string's length * 2 + 4 --> convert to hex left pad with padChar with provided padValue - public static string ToHexStringLengthWithPadding(string myString, int padValue, char padChar) - { - //get the length of the string and multiply it by 2 and add 4 - int stringLength = myString.Length * 2 + 4; - string hexValue = String.Format("{1,1:X}", 0, stringLength); - return hexValue.PadLeft(padValue, padChar); - } - - //take the passed in string's length + 4 --> convert to hex left pad with padChar with provided padValue - public static string ToHex(string myString, int padValue, char padChar) - { - //get the length and add 4 - int stringLength = myString.Length + 4; - string hexValue = String.Format("{1,1:X}", 0, stringLength); - return hexValue.PadLeft(padValue, padChar); - } - - // Split input hex into pairs each representing one byte, convert that into a character and concatenate. - public static string FromHex(string hex) - { - return new String( - Enumerable.Range(0, hex.Length / 2) - .Select(i => (char)Convert.ToInt32($"{hex[2 * i]}{hex[2 * i + 1]}",16)) - .ToArray()); - } - } +// Copyright 2023 Keyfactor +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using System; +using System.Linq; + +namespace Keyfactor.Extensions.Orchestrator.BoschIPCamera.Client +{ + public class HexadecimalEncoding + { + + //for each letter in the string passed in, convert to hex and left pad with 2 zeros. Return combined hex values + public static string ToHexWithPadding(string myString) + { + var padding = "00"; + var returnHex = ""; + var values = myString.ToCharArray(); + foreach (var letter in values) + { + // Get the integral value of the character. + var value = Convert.ToInt32(letter); + // Convert the integer value to a hexadecimal value in string form. + var hexValue = padding + value.ToString("X"); + returnHex = returnHex + hexValue; + } + return returnHex; + } + + //for each letter in the string passed in, convert to hex. Return combined hex values + public static string ToHexNoPadding(string myString) + { + var myHex = ""; + var values = myString.ToCharArray(); + foreach (var letter in values) + { + // Get the integral value of the character. + var value = Convert.ToInt32(letter); + // Convert the integer value to a hexadecimal value in string form. + var hexValue = value.ToString("X"); + myHex = myHex + hexValue; + } + return myHex; + } + + //take the passed in string's length + 4 --> convert to hex left pad with padChar with provided padValue --> prefix with 0x + public static string ToHexWithPrefix(string myString, int padValue, char padChar) + { + //get the length and add 4 + var stringLength = myString.Length + 4; + var hexValue = $"{stringLength,1:X}"; + return "0x" + hexValue.PadLeft(padValue, padChar); + } + + //take the passed in string's length * 2 + 4 --> convert to hex left pad with padChar with provided padValue + public static string ToHexStringLengthWithPadding(string myString, int padValue, char padChar) + { + //get the length of the string and multiply it by 2 and add 4 + var stringLength = myString.Length * 2 + 4; + var hexValue = $"{stringLength,1:X}"; + return hexValue.PadLeft(padValue, padChar); + } + + //take the passed in string's length + 4 --> convert to hex left pad with padChar with provided padValue + public static string ToHex(string myString, int padValue, char padChar) + { + //get the length and add 4 + var stringLength = myString.Length + 4; + var hexValue = $"{stringLength,1:X}"; + return hexValue.PadLeft(padValue, padChar); + } + + // Split input hex into pairs each representing one byte, convert that into a character and concatenate. + public static string FromHex(string hex) + { + return new String( + Enumerable.Range(0, hex.Length / 2) + .Select(i => (char)Convert.ToInt32($"{hex[2 * i]}{hex[2 * i + 1]}",16)) + .ToArray()); + } + } } \ No newline at end of file diff --git a/BoschIPCamera/Jobs/Inventory.cs b/BoschIPCamera/Jobs/Inventory.cs index 6989c57..41773fd 100644 --- a/BoschIPCamera/Jobs/Inventory.cs +++ b/BoschIPCamera/Jobs/Inventory.cs @@ -1,57 +1,77 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using Keyfactor.Extensions.Orchestrator.BoschIPCamera.Client; -using Keyfactor.Logging; -using Keyfactor.Orchestrators.Common.Enums; -using Keyfactor.Orchestrators.Extensions; -using Microsoft.Extensions.Logging; -using Newtonsoft.Json; - -namespace Keyfactor.Extensions.Orchestrator.BoschIPCamera.Jobs -{ - public class Inventory : IInventoryJobExtension - { - private readonly ILogger _logger; - - public Inventory(ILogger logger) - { - _logger = logger; - } - - public string ExtensionName => "BoschIPCamera"; - - public JobResult ProcessJob(InventoryJobConfiguration jobConfiguration, - SubmitInventoryUpdate submitInventoryUpdate) - { - _logger.MethodEntry(LogLevel.Debug); - _logger.LogTrace($"Inventory Config {JsonConvert.SerializeObject(jobConfiguration)}"); - boschIPCameraDetails storeProperties = JsonConvert.DeserializeObject(jobConfiguration.CertificateStoreDetails.Properties); - BoschIPcameraClient client = new BoschIPcameraClient(); - - //setup the Camera Details - _logger.LogDebug("Build default RestSharp client"); - client.setupStandardBoschIPcameraClient(jobConfiguration.CertificateStoreDetails.ClientMachine, jobConfiguration.ServerUsername, - jobConfiguration.ServerPassword, null, _logger); - - Dictionary files = client.listCerts(jobConfiguration.CertificateStoreDetails.ClientMachine, jobConfiguration.ServerUsername, - jobConfiguration.ServerPassword); - List inventory = files.Select(f => new CurrentInventoryItem() - { - Alias = f.Key, - Certificates = new List() { f.Value }, - PrivateKeyEntry = false, - UseChainLevel = false - }).ToList(); - - // In the model where a bosch certstore represents just a single cert, this list needs to be trimmed. - // inventory = inventory.Where(i => i.Alias == jobConfiguration.CertificateStoreDetails.StorePath).ToList(); - submitInventoryUpdate(inventory); - return new JobResult() - { - Result = OrchestratorJobStatusJobResult.Success, - FailureMessage = "" - }; - } - } +// Copyright 2023 Keyfactor +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using System.Collections.Generic; +using System.Linq; +using Keyfactor.Extensions.Orchestrator.BoschIPCamera.Client; +using Keyfactor.Logging; +using Keyfactor.Orchestrators.Common.Enums; +using Keyfactor.Orchestrators.Extensions; +using Keyfactor.Orchestrators.Extensions.Interfaces; +using Microsoft.Extensions.Logging; + +namespace Keyfactor.Extensions.Orchestrator.BoschIPCamera.Jobs +{ + public class Inventory : IInventoryJobExtension + { + private readonly ILogger _logger; + private readonly IPAMSecretResolver _pam; + + public Inventory(IPAMSecretResolver pam) + { + _logger = LogHandler.GetClassLogger(); + _pam = pam; + } + + public string ExtensionName => "BoschIPCamera"; + + public JobResult ProcessJob(InventoryJobConfiguration jobConfiguration, + SubmitInventoryUpdate submitInventoryUpdate) + { + _logger.MethodEntry(LogLevel.Debug); + var client = new BoschIpCameraClient(jobConfiguration, jobConfiguration.CertificateStoreDetails, _pam, _logger); + + + var files = client.ListCerts(); + _logger.LogDebug($"Found {files.Count} certificates"); + + // get cert usage + // need request cert usage lists for each cert usage type, and parse names from response to match types + // key = cert name, value = cert usage enum + var certUsages = client.GetCertUsageList(); + _logger.LogDebug($"Found {certUsages.Count} certificates with a matching usage"); + + var inventory = files.Select(f => new CurrentInventoryItem() + { + Alias = f.Key, + Certificates = new List() { f.Value }, + PrivateKeyEntry = false, + UseChainLevel = false, + Parameters = new Dictionary + { + { "Name", f.Key }, + { "CertificateUsage", certUsages.ContainsKey(f.Key) ? certUsages[f.Key].ToReadableText() : "" } + } + }).ToList(); + + submitInventoryUpdate(inventory); + return new JobResult() + { + Result = OrchestratorJobStatusJobResult.Success, + JobHistoryId = jobConfiguration.JobHistoryId, + FailureMessage = "" + }; + } + } } \ No newline at end of file diff --git a/BoschIPCamera/Jobs/Management.cs b/BoschIPCamera/Jobs/Management.cs index f2e05f2..972b361 100644 --- a/BoschIPCamera/Jobs/Management.cs +++ b/BoschIPCamera/Jobs/Management.cs @@ -1,70 +1,83 @@ -using System; - -using Keyfactor.Extensions.Orchestrator.BoschIPCamera.Client; -using Keyfactor.Logging; -using Keyfactor.Orchestrators.Extensions; -using Microsoft.Extensions.Logging; - -using Newtonsoft.Json; - -namespace Keyfactor.Extensions.Orchestrator.BoschIPCamera.Jobs -{ - public class Management : IManagementJobExtension - { - private readonly ILogger _logger; - public string ExtensionName => "BoschIPCamera"; - - public Management(ILogger logger) - { - _logger = logger; - } - - public JobResult ProcessJob(ManagementJobConfiguration jobConfiguration) - { - _logger.MethodEntry(LogLevel.Debug); - if (jobConfiguration.OperationType == Orchestrators.Common.Enums.CertStoreOperationType.Remove) - { - return removeCert(jobConfiguration); - } - - return new JobResult() - { - Result = Orchestrators.Common.Enums.OrchestratorJobStatusJobResult.Failure, - FailureMessage = $"Unsupported operation type {jobConfiguration.OperationType}" - }; - } - - public JobResult removeCert(ManagementJobConfiguration jobConfiguration) - { - _logger.LogTrace($"Management Config {JsonConvert.SerializeObject(jobConfiguration)}"); - boschIPCameraDetails storeProperties = JsonConvert.DeserializeObject(jobConfiguration.CertificateStoreDetails.Properties); - BoschIPcameraClient client = new BoschIPcameraClient(); - - //setup the Camera Details - _logger.LogDebug("Build default RestSharp client"); - client.setupStandardBoschIPcameraClient(jobConfiguration.CertificateStoreDetails.ClientMachine, jobConfiguration.ServerUsername, - jobConfiguration.ServerPassword, null, _logger); - - //delete existing certificate - _logger.LogDebug("Delete existing cert " + jobConfiguration.CertificateStoreDetails.StorePath); - string returnCode = client.deleteCertByName(jobConfiguration.CertificateStoreDetails.StorePath); - - if (returnCode == "fail") - { - _logger.LogError("Error deleting existing certificate " + jobConfiguration.CertificateStoreDetails.StorePath + " on camera " + - jobConfiguration.CertificateStoreDetails.ClientMachine + " with error code " + returnCode); - return new JobResult() - { - Result = Orchestrators.Common.Enums.OrchestratorJobStatusJobResult.Failure, - FailureMessage = "Error deleting existing certificate " + jobConfiguration.CertificateStoreDetails.StorePath + " on camera " + - jobConfiguration.CertificateStoreDetails.ClientMachine + " with error code " + returnCode - }; - } - return new JobResult() - { - Result = Orchestrators.Common.Enums.OrchestratorJobStatusJobResult.Success, - FailureMessage = "" - }; - } - } +// Copyright 2023 Keyfactor +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using Keyfactor.Extensions.Orchestrator.BoschIPCamera.Client; +using Keyfactor.Logging; +using Keyfactor.Orchestrators.Extensions; +using Keyfactor.Orchestrators.Extensions.Interfaces; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; + +namespace Keyfactor.Extensions.Orchestrator.BoschIPCamera.Jobs +{ + public class Management : IManagementJobExtension + { + private readonly ILogger _logger; + private readonly IPAMSecretResolver _pam; + public string ExtensionName => "BoschIPCamera"; + + public Management(IPAMSecretResolver pam) + { + _logger = LogHandler.GetClassLogger(); + _pam = pam; + } + + public JobResult ProcessJob(ManagementJobConfiguration jobConfiguration) + { + _logger.MethodEntry(LogLevel.Debug); + if (jobConfiguration.OperationType == Orchestrators.Common.Enums.CertStoreOperationType.Remove) + { + return removeCert(jobConfiguration); + } + + return new JobResult() + { + Result = Orchestrators.Common.Enums.OrchestratorJobStatusJobResult.Failure, + JobHistoryId = jobConfiguration.JobHistoryId, + FailureMessage = $"Unsupported operation type {jobConfiguration.OperationType}" + }; + } + + public JobResult removeCert(ManagementJobConfiguration jobConfiguration) + { + _logger.LogTrace($"Management Config {JsonConvert.SerializeObject(jobConfiguration)}"); + BoschIpCameraClient client = new BoschIpCameraClient(jobConfiguration, jobConfiguration.CertificateStoreDetails, _pam, _logger); + + var certName = jobConfiguration.JobProperties["Name"].ToString(); + + //delete existing certificate + _logger.LogDebug("Delete existing cert " + certName); + string returnCode = client.DeleteCertByName(certName); + + if (returnCode == "fail") + { + _logger.LogError("Error deleting existing certificate " + certName + " on camera " + + jobConfiguration.CertificateStoreDetails.ClientMachine + " with error code " + returnCode); + return new JobResult() + { + Result = Orchestrators.Common.Enums.OrchestratorJobStatusJobResult.Failure, + JobHistoryId = jobConfiguration.JobHistoryId, + FailureMessage = "Error deleting existing certificate " + certName + " on camera " + + jobConfiguration.CertificateStoreDetails.ClientMachine + " with error code " + returnCode + }; + } + return new JobResult() + { + Result = Orchestrators.Common.Enums.OrchestratorJobStatusJobResult.Success, + JobHistoryId = jobConfiguration.JobHistoryId, + FailureMessage = "" + }; + } + } } \ No newline at end of file diff --git a/BoschIPCamera/Jobs/Reenrollment.cs b/BoschIPCamera/Jobs/Reenrollment.cs index 2debca0..423f524 100644 --- a/BoschIPCamera/Jobs/Reenrollment.cs +++ b/BoschIPCamera/Jobs/Reenrollment.cs @@ -1,310 +1,256 @@ -using Keyfactor.Extensions.Orchestrator.BoschIPCamera.Client; -using Keyfactor.Logging; -using Keyfactor.Orchestrators.Common.Enums; -using Keyfactor.Orchestrators.Extensions; -using Microsoft.Extensions.Logging; -using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.IO; -using System.Net; -using System.Net.Security; -using System.Security.Cryptography.X509Certificates; -using System.Text; -using System.Threading; - -namespace Keyfactor.Extensions.Orchestrator.BoschIPCamera.Jobs -{ - // Structure of KeyfactorAPI/Enrollment/CSR response - struct enrollResponse - { - public certificateInformation CertificateInformation; - public Dictionary Metadata; - } - - // Nested structure within KeyfactorAPI/Enrollment/CSR response - struct certificateInformation - { - public string SerialNumber; - public string IssuerDN; - public string Thumbprint; - public int KeyfactorID; - public int KeyfactorRequestId; - public string[] Certificates; - public string RequestDisposition; - public string DispositionMessage; - public string EnrollmentContext; - } - - struct boschIPCameraDetails - { - public string CN; - public string SN; - public string country; - public string state; - public string city; - public string org; - public string OU; - public string CA; - public string template; - public string keyfactorHost; - public string keyfactorUser; - public string keyfactorPass; - public string certUsage; - } - - public class Reenrollment : IReenrollmentJobExtension - { - public string ExtensionName => "BoschIPCamera"; - private readonly ILogger _logger; - - private void UploadSync(string host, string username, string password, string fileName, string fileData) - { - _logger.LogTrace("Starting Cert upload to camera " + host); - - string boundary = "----------" + DateTime.Now.Ticks.ToString("x"); - string fileHeader = string.Format("Content-Disposition: form-data; name=\"certUsageUnspecified\"; filename=\"{0}\";\r\nContent-Type: application/x-x509-ca-cert\r\n\r\n", fileName); - CredentialCache credCache = new CredentialCache(); - credCache.Add(new Uri("http://" + host), "Digest", new NetworkCredential(username, password)); - - HttpWebRequest authRequest = (HttpWebRequest)WebRequest.Create("http://" + host + "/upload.htm"); - authRequest.Method = "GET"; - authRequest.Credentials = credCache; - authRequest.PreAuthenticate = true; - - try - { - _logger.LogTrace("Get Auth call to camera on " + host); - WebResponse response = authRequest.GetResponse(); - } - catch (Exception e) - { - _logger.LogError(e.Message); - } - - bool certOnCamera = false; - int count = 0; - //keep trying until we get the cert on camera or try 5 times - while (!certOnCamera && count <= 5) - { - try - { - count++; - _logger.LogTrace("Post call to camera on " + host); - HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://" + host + "/upload.htm"); - httpWebRequest.Credentials = credCache; - httpWebRequest.ContentType = "multipart/form-data; boundary=" + boundary; - httpWebRequest.Method = "POST"; - //httpWebRequest.PreAuthenticate = true; - - Stream requestStream = httpWebRequest.GetRequestStream(); - WriteToStream(requestStream, "--" + boundary + "\r\n"); - WriteToStream(requestStream, fileHeader); - WriteToStream(requestStream, fileData); - WriteToStream(requestStream, "\r\n--" + boundary + "--\r\n"); - //requestStream.Close(); - - HttpWebResponse myHttpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); - - - Stream responseStream = myHttpWebResponse.GetResponseStream(); - - StreamReader myStreamReader = new StreamReader(responseStream, Encoding.Default); - - string pageContent = myStreamReader.ReadToEnd(); - - myStreamReader.Close(); - responseStream.Close(); - - myHttpWebResponse.Close(); - return; - } - catch (Exception e) - { - _logger.LogError(e.Message); - _logger.LogTrace("Failed to push cert on attempt " + count + " trying again if less than or equal to 5"); - } - } - } - - private static void WriteToStream(Stream s, string txt) - { - byte[] bytes = Encoding.UTF8.GetBytes(txt); - s.Write(bytes, 0, bytes.Length); - } - - private static T MakeWebRequest(string url, string user, string pass, string bodyStr, string method = "POST", bool skipCertCheck=false) - { - if (skipCertCheck) - { - ServicePointManager.ServerCertificateValidationCallback = delegate ( - Object obj, X509Certificate certificate, X509Chain chain, - SslPolicyErrors errors) - { - return ( true ); - }; - } - string target; - if (url.StartsWith("http")) - { - target = url; - } - else - { - target = $"https://{url}"; - } - WebRequest req = WebRequest.Create(target); - req.Method = method; - string auth = Convert.ToBase64String(Encoding.UTF8.GetBytes($"{user}:{pass}")); - req.Headers.Add("Authorization", $"Basic {auth}"); - req.Headers.Add("X-Keyfactor-Requested-With", "APIClient"); - if (method == "POST") - { - byte[] body = Encoding.ASCII.GetBytes(bodyStr); - req.ContentLength = body.Length; - req.ContentType = "application/json"; - using (Stream s = req.GetRequestStream()) - { - s.Write(body, 0, body.Length); - s.Close(); - } - } - Stream responseStream = req.GetResponse().GetResponseStream(); - string resp = new StreamReader(responseStream).ReadToEnd(); - T respObj = JsonConvert.DeserializeObject(resp); - return respObj; - } - - // Format parameters and make web request to Keyfactor Enrollment API, returning the resulting certificate - private string enrollCertificate(string CSR, string keyfactorHost, string keyfactorUser, string keyfactorPassword, string CAFullname, string templateShortname) - { - // CA fullname must have four backslashes (e.g. "keyfactor.local\\\\MY-CA-LOGICAL-NAME") to accommodate double-escaped JSON. Adjust if needed. - if (!CAFullname.Contains("\\\\")) { - CAFullname = CAFullname.Replace("\\", "\\\\"); - } - - // Format API endpoint - string keyfactorAPIEndpoint = keyfactorHost + "/KeyfactorAPI/Enrollment/CSR"; - - // Form CSR enrollment body with given CSR, CA, template, and keyfactor access info, with no SANs or metadata, and using current timestamp - string body = $"{{\"CSR\": \"{CSR}\",\"CertificateAuthority\": \"{CAFullname}\", \"IncludeChain\": false, \"Metadata\": {{}}, \"Timestamp\": \"{DateTime.UtcNow.ToString("s")}\", \"Template\": \"{templateShortname}\"}}"; - enrollResponse resp = MakeWebRequest(keyfactorAPIEndpoint, keyfactorUser, keyfactorPassword, body); - return resp.CertificateInformation.Certificates[0]; - } - - public Reenrollment(ILogger logger) - { - _logger = logger; - } - - public JobResult ProcessJob(ReenrollmentJobConfiguration jobConfiguration, SubmitReenrollmentCSR submitReenrollmentUpdate) - { - _logger.MethodEntry(LogLevel.Debug); - return PerformReenrollment(jobConfiguration, submitReenrollmentUpdate); - } - - private JobResult PerformReenrollment(ReenrollmentJobConfiguration jobConfiguration, SubmitReenrollmentCSR submitReenrollmentUpdate) - { - - try - { - var sb = new StringBuilder(); - sb.Append(""); - - _logger.MethodEntry(LogLevel.Debug); - _logger.LogTrace($"Reenrollment Config {JsonConvert.SerializeObject(jobConfiguration)}"); - boschIPCameraDetails storeProperties = JsonConvert.DeserializeObject(jobConfiguration.CertificateStoreDetails.Properties); - BoschIPcameraClient client = new BoschIPcameraClient(); - - //setup the CSR details - Dictionary csrSubject = setupCSRSubject(storeProperties); - - //setup the Camera Details - client.setupStandardBoschIPcameraClient(jobConfiguration.CertificateStoreDetails.ClientMachine, jobConfiguration.ServerUsername, - jobConfiguration.ServerPassword, csrSubject, _logger); - - //delete existing certificate - string returnCode = client.deleteCertByName(jobConfiguration.CertificateStoreDetails.StorePath); - - if (returnCode != "pass") - { - sb.Append("Error deleting existing certificate " + jobConfiguration.CertificateStoreDetails.StorePath + " on camera " + - jobConfiguration.CertificateStoreDetails.ClientMachine + " with error code " + returnCode); - } - - //generate the CSR on the camera - returnCode = client.certCreate(jobConfiguration.CertificateStoreDetails.StorePath); - - if (returnCode != "pass") - { - sb.Append("Error generating CSR for " + jobConfiguration.CertificateStoreDetails.StorePath + " on camera " + - jobConfiguration.CertificateStoreDetails.ClientMachine + " with error code " + returnCode); - } - - //get the CSR from the camera - string responseContent = client.downloadCSRFromCamera(jobConfiguration.CertificateStoreDetails.ClientMachine, jobConfiguration.ServerUsername, - jobConfiguration.ServerPassword, jobConfiguration.CertificateStoreDetails.StorePath); - _logger.LogDebug("Downloaded CSR: " + responseContent); - - //sign CSR in Keyfactor - string body = $"{{\"CSR\": \"{responseContent}\",\"CertificateAuthority\": \"{storeProperties.CA}\", \"IncludeChain\": false, \"Metadata\": {{}}, \"Timestamp\": \"{DateTime.UtcNow.ToString("s")}\", \"Template\": \"{storeProperties.template}\"}}"; - enrollResponse resp = MakeWebRequest(storeProperties.keyfactorHost+"/KeyfactorAPI/Enrollment/CSR", storeProperties.keyfactorUser, jobConfiguration.CertificateStoreDetails.StorePassword, body, skipCertCheck: true); - string cert = resp.CertificateInformation.Certificates[0]; - cert = cert.Substring(cert.IndexOf("-----")); - _logger.LogDebug(cert); - - //upload the signed cert to the camera - UploadSync(jobConfiguration.CertificateStoreDetails.ClientMachine, jobConfiguration.ServerUsername, jobConfiguration.ServerPassword, jobConfiguration.CertificateStoreDetails.StorePath+".cer", cert); - - //turn on 802.1x - "1" is on - returnCode = client.change8021xSettings("1"); - if (returnCode != "pass") - { - sb.Append("Error setting 802.1x to on for " + jobConfiguration.CertificateStoreDetails.StorePath + " on camera " + - jobConfiguration.CertificateStoreDetails.ClientMachine + " with error code " + returnCode); - } - - //set cert usage - returnCode = client.setCertUsage(jobConfiguration.CertificateStoreDetails.StorePath, storeProperties.certUsage); - if (returnCode != "pass") - { - sb.Append("Error setting certUsage of " + storeProperties.certUsage + "for store path " + jobConfiguration.CertificateStoreDetails.StorePath + " on camera " + - jobConfiguration.CertificateStoreDetails.ClientMachine + " with error code " + returnCode); - } - - //reboot the camera - client.rebootCamera(); - if (returnCode != "pass") - { - sb.Append("Error rebooting camera " + jobConfiguration.CertificateStoreDetails.ClientMachine + " with error code " + returnCode); - } - - return new JobResult - { - Result = OrchestratorJobStatusJobResult.Success, - JobHistoryId = jobConfiguration.JobHistoryId, - FailureMessage = sb.ToString() - }; - } - catch (Exception e) - { - _logger.LogError($"PerformReenrollment Error: {e.Message}"); - throw; - } - - } - private Dictionary setupCSRSubject(boschIPCameraDetails storeProperties) - { - Dictionary csrSubject = new Dictionary(); - - csrSubject.Add("C", storeProperties.country); - csrSubject.Add("ST", storeProperties.state); - csrSubject.Add("L", storeProperties.city); - csrSubject.Add("O", storeProperties.org); - csrSubject.Add("OU", storeProperties.OU); - csrSubject.Add("CN", storeProperties.CN); - - return csrSubject; - } - } -} +// Copyright 2023 Keyfactor +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +using Keyfactor.Extensions.Orchestrator.BoschIPCamera.Client; +using Keyfactor.Logging; +using Keyfactor.Orchestrators.Common.Enums; +using Keyfactor.Orchestrators.Extensions; +using Keyfactor.Orchestrators.Extensions.Interfaces; +using Microsoft.Extensions.Logging; +using System; +using System.Collections.Generic; +using System.Text; + +namespace Keyfactor.Extensions.Orchestrator.BoschIPCamera.Jobs +{ + public class Reenrollment : IReenrollmentJobExtension + { + public string ExtensionName => "BoschIPCamera"; + private readonly ILogger _logger; + private readonly IPAMSecretResolver _pam; + + public Reenrollment(IPAMSecretResolver pam) + { + _logger = LogHandler.GetClassLogger(); + _pam = pam; + } + + public JobResult ProcessJob(ReenrollmentJobConfiguration jobConfiguration, SubmitReenrollmentCSR submitReenrollmentUpdate) + { + _logger.MethodEntry(LogLevel.Debug); + return PerformReenrollment(jobConfiguration, submitReenrollmentUpdate); + } + + private JobResult PerformReenrollment(ReenrollmentJobConfiguration jobConfiguration, SubmitReenrollmentCSR submitReenrollment) + { + + try + { + _logger.MethodEntry(LogLevel.Debug); + + var client = new BoschIpCameraClient(jobConfiguration, jobConfiguration.CertificateStoreDetails, _pam, _logger); + + string certName = GetRequiredReenrollmentField(jobConfiguration.JobProperties, "Name").ToString(); + bool overwrite = (bool) GetRequiredReenrollmentField(jobConfiguration.JobProperties, "Overwrite"); + string csrInput = GetRequiredReenrollmentField(jobConfiguration.JobProperties, "subjectText").ToString(); + string certUsage = GetRequiredReenrollmentField(jobConfiguration.JobProperties, "CertificateUsage").ToString(); + + string returnCode; + string errorMessage; + string cameraUrl = jobConfiguration.CertificateStoreDetails.ClientMachine; + + // delete existing certificate if overwriting + if (overwrite) + { + returnCode = client.DeleteCertByName(certName); + + if (returnCode != "pass") + { + errorMessage = $"Error deleting existing certificate {certName} on camera {cameraUrl} with error code {returnCode}"; + _logger.LogError(errorMessage); + return new JobResult + { + Result = OrchestratorJobStatusJobResult.Failure, + JobHistoryId = jobConfiguration.JobHistoryId, + FailureMessage = errorMessage + }; + } + } + + // setup the CSR details + var csrSubject = SetupCsrSubject(csrInput); + + //generate the CSR on the camera + returnCode = client.CertCreate(csrSubject, certName); + + if (returnCode != "pass") + { + errorMessage = $"Error generating CSR for {certName} on camera {cameraUrl} with error code {returnCode}"; + _logger.LogError(errorMessage); + return new JobResult + { + Result = OrchestratorJobStatusJobResult.Failure, + JobHistoryId = jobConfiguration.JobHistoryId, + FailureMessage = errorMessage + }; + } + + //get the CSR from the camera + var csr = client.DownloadCsrFromCamera(certName); + _logger.LogTrace("Downloaded CSR: " + csr); + + // check that csr meets csr format + // 404 message response can be returned instead + if (!csr.StartsWith("-----BEGIN")) + { + // error downloaded, no CSR present + // likely due to existing cert that was not marked to ovewrite (delete) + errorMessage = $"Error retrieving CSR from camera {cameraUrl} - got response: {csr}"; + _logger.LogError(errorMessage); + return new JobResult + { + Result = OrchestratorJobStatusJobResult.Failure, + JobHistoryId = jobConfiguration.JobHistoryId, + FailureMessage = errorMessage + }; + } + + // sign CSR in Keyfactor + var x509Cert = submitReenrollment.Invoke(csr); + + if (x509Cert == null) + { + errorMessage = $"Error submitting CSR to Keyfactor. Certificate not received. CSR submitted: {csr}"; + _logger.LogError(errorMessage); + return new JobResult + { + Result = OrchestratorJobStatusJobResult.Failure, + JobHistoryId = jobConfiguration.JobHistoryId, + FailureMessage = errorMessage + }; + } + + // build PEM content + StringBuilder pemBuilder = new StringBuilder(); + pemBuilder.AppendLine("-----BEGIN CERTIFICATE-----"); + pemBuilder.AppendLine(Convert.ToBase64String(x509Cert.RawData, Base64FormattingOptions.InsertLineBreaks)); + pemBuilder.AppendLine("-----END CERTIFICATE-----"); + var pemCert = pemBuilder.ToString(); + + pemCert = pemCert.Replace("\r", ""); + _logger.LogTrace("Uploading cert: " + pemCert); + + // upload the signed cert to the camera + client.UploadCert(certName +".cer", pemCert); + + // turn on 802.1x + returnCode = client.Change8021XSettings(true); + if (returnCode != "pass") + { + errorMessage = $"Error setting 802.1x to on for {certName} on camera {cameraUrl} with error code {returnCode}"; + _logger.LogError(errorMessage); + return new JobResult + { + Result = OrchestratorJobStatusJobResult.Failure, + JobHistoryId = jobConfiguration.JobHistoryId, + FailureMessage = errorMessage + }; + } + + // set cert usage + Constants.CertificateUsage usageEnum = Constants.ParseCertificateUsage(certUsage); + + returnCode = client.SetCertUsage(certName, usageEnum); + if (returnCode != "pass") + { + errorMessage = $"Error setting certUsage of {certUsage} for certificate {certName} on camera {cameraUrl} with error code {returnCode}"; + _logger.LogError(errorMessage); + return new JobResult + { + Result = OrchestratorJobStatusJobResult.Failure, + JobHistoryId = jobConfiguration.JobHistoryId, + FailureMessage = errorMessage + }; + } + + //reboot the camera + client.RebootCamera(); + if (returnCode != "pass") + { + errorMessage = $"Error rebooting camera {cameraUrl} with error code {returnCode}"; + _logger.LogError(errorMessage); + return new JobResult + { + Result = OrchestratorJobStatusJobResult.Failure, + JobHistoryId = jobConfiguration.JobHistoryId, + FailureMessage = errorMessage + }; + } + + return new JobResult + { + Result = OrchestratorJobStatusJobResult.Success, + JobHistoryId = jobConfiguration.JobHistoryId, + FailureMessage = "" + }; + } + catch (Exception e) + { + _logger.LogError($"PerformReenrollment Error: {e.Message}"); + return new JobResult + { + Result = OrchestratorJobStatusJobResult.Failure, + JobHistoryId = jobConfiguration.JobHistoryId, + FailureMessage = e.Message + }; + } + + } + + private object GetRequiredReenrollmentField(Dictionary jobProperties, string fieldName) + { + _logger.LogTrace($"Checking for required field '{fieldName}' in Reenrollment Job Properties"); + + if (jobProperties.ContainsKey(fieldName)) + { + var requiredField = jobProperties[fieldName]; + if (requiredField != null) + { + _logger.LogTrace($"Required field '{fieldName}' found with value '{requiredField}"); + return requiredField; + } + else + { + string message = $"Required field '{fieldName}' was present in Reenrollment Job Properties but had no value"; + _logger.LogError(message); + throw new MissingFieldException(message); + } + } + else + { + string message = $"Required field '{fieldName}' was not present in the Reenrollment Job Properties"; + _logger.LogError(message); + throw new MissingFieldException(message); + } + } + + private Dictionary SetupCsrSubject(string subjectText) + { + var csrSubject = new Dictionary(); + _logger.LogTrace($"Parsing subject text: {subjectText}"); + var splitSubject = subjectText.Split(','); + foreach (string subjectElement in splitSubject) + { + _logger.LogTrace($"Splitting subject element: {subjectElement}"); + var splitSubjectElement = subjectElement.Split('='); + var name = splitSubjectElement[0].Trim(); + var value = splitSubjectElement[1].Trim(); + _logger.LogTrace($"Adding subject element: '{name}' with value '{value}'"); + csrSubject.Add(name, value); + } + + return csrSubject; + } + } +} diff --git a/BoschIPCamera/StorePath.cs b/BoschIPCamera/StorePath.cs deleted file mode 100644 index cb678dd..0000000 --- a/BoschIPCamera/StorePath.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.ComponentModel; -using Newtonsoft.Json; - -namespace Keyfactor.Extensions.Orchestrator.GcpCertManager -{ - internal class StorePath - { - - [JsonProperty("Location")] - [DefaultValue("global")] - public string Location { get; set; } - [JsonProperty("Project Number")] - public string ProjectNumber { get; set; } - - } - -} \ No newline at end of file diff --git a/BoschIPCamera/manifest.json b/BoschIPCamera/manifest.json index aebfad5..5283f15 100644 --- a/BoschIPCamera/manifest.json +++ b/BoschIPCamera/manifest.json @@ -5,10 +5,6 @@ "assemblypath": "BoschIPCamera.dll", "TypeFullName": "Keyfactor.Extensions.Orchestrator.BoschIPCamera.Jobs.Inventory" }, - "CertStores.BoschIpCamera.Management": { - "assemblypath": "BoschIPCamera.dll", - "TypeFullName": "Keyfactor.Extensions.Orchestrator.BoschIPCamera.Jobs.Management" - }, "CertStores.BoschIpCamera.Reenrollment": { "assemblypath": "BoschIPCamera.dll", "TypeFullName": "Keyfactor.Extensions.Orchestrator.BoschIPCamera.Jobs.Reenrollment" diff --git a/BoschIPCameraTestConsole/BoschIPCameraTestConsole.csproj b/BoschIPCameraTestConsole/BoschIPCameraTestConsole.csproj deleted file mode 100644 index 1ac105c..0000000 --- a/BoschIPCameraTestConsole/BoschIPCameraTestConsole.csproj +++ /dev/null @@ -1,17 +0,0 @@ - - - - Exe - netcoreapp3.1 - - - - - - - - - - - - diff --git a/BoschIPCameraTestConsole/Program.cs b/BoschIPCameraTestConsole/Program.cs deleted file mode 100644 index 4d39277..0000000 --- a/BoschIPCameraTestConsole/Program.cs +++ /dev/null @@ -1,259 +0,0 @@ -using System.Collections.Generic; -using System.Threading.Tasks; -using Keyfactor.Extensions.Orchestrator.BoschIPCamera.Client; -using Keyfactor.Orchestrators.Extensions; -using Newtonsoft.Json; -using Microsoft.Extensions.Logging; -using System.Threading; -using System.Net; -using System; -using System.Security.Cryptography.X509Certificates; -using System.Net.Security; -using System.Text; -using System.IO; -using System.Net.Http; -using Keyfactor.Extensions.Orchestrator.BoschIPCamera.Jobs; - -namespace BoschIPCameraTestConsole -{ - struct enrollResponse - { - public certificateInformation CertificateInformation; - public Dictionary Metadata; - } - - struct certificateInformation - { - public string SerialNumber; - public string IssuerDN; - public string Thumbprint; - public int KeyfactorID; - public int KeyfactorRequestId; - public string[] Certificates; - public string RequestDisposition; - public string DispositionMessage; - public string EnrollmentContext; - } - - - internal class Program - { - - private static Dictionary s_csrSubject = new Dictionary(); - - private static void Upload(string host, string username, string password, string fileName, string fileData) - { - string boundary = "----------" + DateTime.Now.Ticks.ToString("x"); - string fileHeader = string.Format("Content-Disposition: form-data; name=\"certUsageUnspecified\"; filename=\"{0}\";\r\nContent-Type: application/x-x509-ca-cert\r\n\r\n", fileName); - CredentialCache credCache = new CredentialCache(); - credCache.Add(new Uri("http://" + host), "Digest", new NetworkCredential(username, password)); - - HttpWebRequest authRequest = (HttpWebRequest)WebRequest.Create("http://" + host + "/upload.htm"); - authRequest.Method = "GET"; - authRequest.Credentials = credCache; - authRequest.PreAuthenticate = true; - authRequest.GetResponse(); - - HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://" + host + "/upload.htm"); - httpWebRequest.Credentials = credCache; - httpWebRequest.ContentType = "multipart/form-data; boundary=" + boundary; - httpWebRequest.Method = "POST"; - httpWebRequest.PreAuthenticate = true; - - IAsyncResult y = null; - var x = httpWebRequest.BeginGetRequestStream((result) => - { - try - { - HttpWebRequest request = (HttpWebRequest)result.AsyncState; - using (Stream requestStream = request.EndGetRequestStream(result)) - { - WriteToStream(requestStream, "--" + boundary + "\r\n"); - WriteToStream(requestStream, fileHeader); - WriteToStream(requestStream, fileData); - WriteToStream(requestStream, "\r\n--" + boundary + "--\r\n"); - } - y = request.BeginGetResponse(a => - { - try - { - var response = request.EndGetResponse(a); - var responseStream = response.GetResponseStream(); - using (var sr = new StreamReader(responseStream)) - { - using (StreamReader streamReader = new StreamReader(response.GetResponseStream())) - { - string responseString = streamReader.ReadToEnd(); - } - } - } - catch (Exception e) - { - - } - }, null); - while (!y.IsCompleted) - { - Thread.Sleep(1000); - } - } - catch (Exception e) - { - throw; - } - }, httpWebRequest); - while (y == null || !y.IsCompleted) - { - Thread.Sleep(100); - } - while (!x.IsCompleted) - { - Thread.Sleep(100); - } - } - - private static void Upload2(string host, string username, string password, string fileName, string fileData) - { - string boundary = "----------" + DateTime.Now.Ticks.ToString("x"); - string fileHeader = string.Format("Content-Disposition: form-data; name=\"certUsageUnspecified\"; filename=\"{0}\";\r\nContent-Type: application/x-x509-ca-cert\r\n\r\n", fileName); - CredentialCache credCache = new CredentialCache(); - credCache.Add(new Uri("http://" + host), "Digest", new NetworkCredential(username, password)); - - HttpWebRequest authRequest = (HttpWebRequest)WebRequest.Create("http://" + host + "/upload.htm"); - authRequest.Method = "GET"; - authRequest.Credentials = credCache; - authRequest.PreAuthenticate = true; - - try - { - WebResponse response = authRequest.GetResponse(); - } - catch (Exception e) - { - - } - bool certOnCamera = false; - int count = 0; - //keep trying until we get the cert on camera or try 5 times - while (!certOnCamera && count <= 1) - { - try - { - count++; - HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create("http://" + host + "/upload.htm"); - httpWebRequest.Credentials = credCache; - httpWebRequest.ContentType = "multipart/form-data; boundary=" + boundary; - httpWebRequest.Method = "POST"; - httpWebRequest.PreAuthenticate = true; - - Stream requestStream = httpWebRequest.GetRequestStream(); - WriteToStream(requestStream, "--" + boundary + "\r\n"); - WriteToStream(requestStream, fileHeader); - WriteToStream(requestStream, fileData); - WriteToStream(requestStream, "\r\n--" + boundary + "--\r\n"); - // requestStream.Close(); - - HttpWebResponse myHttpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); - - - Stream responseStream = myHttpWebResponse.GetResponseStream(); - - StreamReader myStreamReader = new StreamReader(responseStream, Encoding.Default); - - string pageContent = myStreamReader.ReadToEnd(); - - myStreamReader.Close(); - responseStream.Close(); - - myHttpWebResponse.Close(); - } - catch (Exception e) - { - } - } - - } - - private static void WriteToStream(Stream s, string txt) - { - byte[] bytes = Encoding.UTF8.GetBytes(txt); - s.Write(bytes, 0, bytes.Length); - } - - private static async Task Main(string[] args) - { - //upload a certificate - //string cert = "-----BEGIN CERTIFICATE-----MIIDeTCCAmGgAwIBAgIQSVQNM9+tTo9Dd52qg4MI1DANBgkqhkiG9w0BAQsFADBPMRMwEQYKCZImiZPyLGQBGRYDbGFiMRkwFwYKCZImiZPyLGQBGRYJa2V5ZmFjdG9yMR0wGwYDVQQDExRrZXlmYWN0b3ItS0ZUUkFJTi1DQTAeFw0xOTA1MTAwMzMyMzJaFw0yNDA1MTAwMzQyMzFaME8xEzARBgoJkiaJk/IsZAEZFgNsYWIxGTAXBgoJkiaJk/IsZAEZFglrZXlmYWN0b3IxHTAbBgNVBAMTFGtleWZhY3Rvci1LRlRSQUlOLUNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmqN1+RED9SuRsLnIF4AB7uFkaismnxhGXc9LWAVBPc8bt8McchMlHmJqVN1DPR0ZT8tVT8jqIODBULrcWZVo6ox15BTrFqzrFUiIuuq16NDW+WYu2rljoMBaOTegkmWs7ZoME+w/MHqFFqPBBvg7uDSZW/w+1VKyn7aRA2Bywy6o5UHpladsokVKwNhyMQvfJnJQ2xJio8mhXV1AM15FCp8hQZ8dXj/cAPKQxk31M1thIP7M8yx779QbxIs6PKLNxarmY+D73r8Q3t8scO+GVQUwSvbDZiF+kzpl/5YTkeD6gLqfQsQr86YiK5nV5xCb2PL8KwnmMCocVImX2fm3vQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUcBUzPW7ZQuqUMP3RFTCbDU1hTGUwEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZIhvcNAQELBQADggEBAIYye4+Gd8piML1BXzkMNgt6aNOu7hS4h3sYfojtpV40OdJ64/Pt9pC5NecMt8B0ikiZvfu9c+xO20VB3uFDGNWVLqfoaZi+cvMAYH9gMrK8KiNe21jekbG1uTuIPZ0oJtEDnn7aJ+rXzVTEe6QHZ/gjVcZoPy1/rdCnzMRdH0NS6xpn0HqWpy/IxjnJP0Ux6ZPNzrEmhsUGruVJwF8u5+FTlD9pF55eHqI4COtEqJ8YEMb25s8xCCJVL0al+LbydR0neG4Ic/zA0QEwB7ixFsuytaBUOXv4QVpsu7R4mtWQHdSoJz3I+g117tHDlJfGEoQpsc/gHBwMptPQCobpI30=-----END CERTIFICATE-----"; - string cert = "-----BEGIN CERTIFICATE-----\nMIIDeTCCAmGgAwIBAgIQSVQNM9+tTo9Dd52qg4MI1DANBgkqhkiG9w0BAQsFADBP\nMRMwEQYKCZImiZPyLGQBGRYDbGFiMRkwFwYKCZImiZPyLGQBGRYJa2V5ZmFjdG9y\nMR0wGwYDVQQDExRrZXlmYWN0b3ItS0ZUUkFJTi1DQTAeFw0xOTA1MTAwMzMyMzJa\nFw0yNDA1MTAwMzQyMzFaME8xEzARBgoJkiaJk/IsZAEZFgNsYWIxGTAXBgoJkiaJ\nk/IsZAEZFglrZXlmYWN0b3IxHTAbBgNVBAMTFGtleWZhY3Rvci1LRlRSQUlOLUNB\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmqN1+RED9SuRsLnIF4AB\n7uFkaismnxhGXc9LWAVBPc8bt8McchMlHmJqVN1DPR0ZT8tVT8jqIODBULrcWZVo\n6ox15BTrFqzrFUiIuuq16NDW+WYu2rljoMBaOTegkmWs7ZoME+w/MHqFFqPBBvg7\nuDSZW/w+1VKyn7aRA2Bywy6o5UHpladsokVKwNhyMQvfJnJQ2xJio8mhXV1AM15F\nCp8hQZ8dXj/cAPKQxk31M1thIP7M8yx779QbxIs6PKLNxarmY+D73r8Q3t8scO+G\nVQUwSvbDZiF+kzpl/5YTkeD6gLqfQsQr86YiK5nV5xCb2PL8KwnmMCocVImX2fm3\nvQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E\nFgQUcBUzPW7ZQuqUMP3RFTCbDU1hTGUwEAYJKwYBBAGCNxUBBAMCAQAwDQYJKoZI\nhvcNAQELBQADggEBAIYye4+Gd8piML1BXzkMNgt6aNOu7hS4h3sYfojtpV40OdJ6\n4/Pt9pC5NecMt8B0ikiZvfu9c+xO20VB3uFDGNWVLqfoaZi+cvMAYH9gMrK8KiNe\n21jekbG1uTuIPZ0oJtEDnn7aJ+rXzVTEe6QHZ/gjVcZoPy1/rdCnzMRdH0NS6xpn\n0HqWpy/IxjnJP0Ux6ZPNzrEmhsUGruVJwF8u5+FTlD9pF55eHqI4COtEqJ8YEMb2\n5s8xCCJVL0al+LbydR0neG4Ic/zA0QEwB7ixFsuytaBUOXv4QVpsu7R4mtWQHdSo\nJz3I+g117tHDlJfGEoQpsc/gHBwMptPQCobpI30=\n-----END CERTIFICATE-----"; - //Upload2("172.78.231.174:44130", "mizell", "Keyfactor1!", "KFTrainRoot.cer", cert);\ - Upload2("166.145.144.73:10080", "service", "DHStrp2022!", "KFTrainRoot.cer", cert); - - /* - string templateName = "WebServer"; - string CSR = "-----BEGIN CERTIFICATE REQUEST-----MIICbTCCAVUCAQAwKjELMAkGA1UEAxMCdDIxGzAZBgNVBAUTEjA5NDY4ODQzMTA2NTE2MDAyMDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN+dDhcIjZktRRw3Oz0ztLjv4USn1aBgu4T/RjUPIHpPO1mm0W075xfECISr95bn5QLSITrrHvu3iqa/t1qDVcDzbfQc2GhWZrP1yRR7n5C8yh2VpAk7GR5WkzOwakeSOuqlWnLIMIjKWRXi0Yd6gKlHbx2F57TfwIVrrVaW048BzwfGWcpsHK5weqJVi6Oq8aDIwELCnVb72vQTJOpiVsKXi4acOqU2P/0c5+Ke+jLnJPfoVQ6T9TO2HOwBBJQQj287BniJ+/wS3NigGHe8IzLGhTlIOxW+lnIDr/L1IRrqg0TLHmiOeXDrZ1u3NayOQY6IxbEYeNzYAZpL9u6TMgkCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEAWynB+eRuit1RrDrImKLFLOklfHGk4vvRE/s7gklrkx4aaZ/FzP1sJM4AbuMynNd0VMGmtDQAR+HARkEWkkOp79JXwBPbDs3TwMTqrguK03pHvZ5AYbYaifWS541M3qacDu4BcMoHEjTszwCtZku5667XNkLq0ltOhHPNBOGhI0G4BusaZcvs9m81nV3DVdJXkRezL28Fd7MtEtbyhAZG0oHmU7d6wvfs11UmgGd2mfiogHC2/2Wg8kKipjFN7E6r5npAMD/IK0RQ9AZzCyq9TMqxfnvtpEDc+f1FOcxpPwZxRVQrY5AQfyadR0ehpCLVxYvdWL184xo46rPrYXTgWg==-----END CERTIFICATE REQUEST-----"; - string body = $"{{\"CSR\": \"{CSR}\",\"CertificateAuthority\": \"KFTrain.keyfactor.lab\\\\keyfactor-KFTRAIN-CA\", \"IncludeChain\": false, \"Metadata\": {{}}, \"Timestamp\": \"{DateTime.UtcNow.ToString("s")}\", \"Template\": \"{templateName}\"}}"; - enrollResponse resp = MakeWebRequest("192.168.78.138/KeyfactorAPI/Enrollment/CSR", "KEYFACTOR\\Administrator", "Password1", body); - Console.WriteLine(resp);*/ - //Console.ReadLine(); - - // ILoggerFactory invLoggerFactory = new LoggerFactory(); - // ILogger invLogger = invLoggerFactory.CreateLogger(); - - BoschIPcameraClient client = new BoschIPcameraClient(); - String returnCode = ""; - - //generate the CSR on the camera - // client.setupStandardBoschIPcameraClient("172.78.231.174:44130", "mizell", "Keyfactor1!", setupCSRSubject(), invLogger); - //client.setupStandardBoschIPcameraClient("166.145.144.73:10080", "service", "DHStrp2022!", setupCSRSubject()); - - //delete cert if it exists - //returnCode = client.deleteCertByName("keyfactor"); - - // returnCode = client.certCreate("keyfactor"); - - if (returnCode == "pass") - { - //get the CSR from the camera - // string responseContent = client.downloadCSRFromCamera("172.78.231.174:44130", "mizell", "Keyfactor1!", "keyfactor"); - } - - //upload the cert - // returnCode = client.uploadCertToCamera("172.78.231.174:44130", "mizell", "Keyfactor1!", "KFTrainRoot.cer", cert); - - //turn on 802.1x - //returnCode = client.change8021xSettings("0"); - - if (returnCode == "pass") - { - //set cert usage - // returnCode = client.setCertUsage("HTTPSCert", "80000000"); - - if (returnCode == "pass") - { - //reboot camera - // returnCode = client.rebootCamera(); - } - } - - - } - - //define standard Subject for CSR. IP address will vary by device to be passed in at runtime - //likely all this data could be captured in the cert store definition - should not be hardcoded - private static Dictionary setupCSRSubject() - { - Dictionary csrSubject = new Dictionary(); - - csrSubject.Add("C", "US"); - csrSubject.Add("ST", "North Carolina"); - csrSubject.Add("L", "Apex"); - csrSubject.Add("O", "Homecheese"); - csrSubject.Add("OU", "IT"); - csrSubject.Add("CN", "172.78.231.174"); - - return csrSubject; - } - - - } -} \ No newline at end of file diff --git a/BoschIPcamera.sln b/BoschIPcamera.sln index a2972b4..c4777e1 100644 --- a/BoschIPcamera.sln +++ b/BoschIPcamera.sln @@ -1,44 +1,38 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.32112.339 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BoschIPCamera", "BoschIPCamera\BoschIPCamera.csproj", "{33FBC5A1-3466-4F10-B9A6-7186F804A65A}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{1A6C93E7-24FD-47FD-883D-EDABF5CEE4C6}" - ProjectSection(SolutionItems) = preProject - integration-manifest.json = integration-manifest.json - .github\workflows\keyfactor-extension-release.yml = .github\workflows\keyfactor-extension-release.yml - README.md = README.md - README.md.tpl = README.md.tpl - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "images", "images", "{6302034E-DF8C-4B65-AC36-CED24C068999}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BoschIPCameraTestConsole", "BoschIPCameraTestConsole\BoschIPCameraTestConsole.csproj", "{FFF21E91-1820-4090-922B-A78D5CC38D7B}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {33FBC5A1-3466-4F10-B9A6-7186F804A65A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {33FBC5A1-3466-4F10-B9A6-7186F804A65A}.Debug|Any CPU.Build.0 = Debug|Any CPU - {33FBC5A1-3466-4F10-B9A6-7186F804A65A}.Release|Any CPU.ActiveCfg = Release|Any CPU - {33FBC5A1-3466-4F10-B9A6-7186F804A65A}.Release|Any CPU.Build.0 = Release|Any CPU - {FFF21E91-1820-4090-922B-A78D5CC38D7B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FFF21E91-1820-4090-922B-A78D5CC38D7B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FFF21E91-1820-4090-922B-A78D5CC38D7B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FFF21E91-1820-4090-922B-A78D5CC38D7B}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {6302034E-DF8C-4B65-AC36-CED24C068999} = {1A6C93E7-24FD-47FD-883D-EDABF5CEE4C6} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {E0FA12DA-6B82-4E64-928A-BB9965E636C1} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31515.178 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BoschIPCamera", "BoschIPCamera\BoschIPCamera.csproj", "{33FBC5A1-3466-4F10-B9A6-7186F804A65A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{1A6C93E7-24FD-47FD-883D-EDABF5CEE4C6}" + ProjectSection(SolutionItems) = preProject + integration-manifest.json = integration-manifest.json + .github\workflows\keyfactor-extension-release.yml = .github\workflows\keyfactor-extension-release.yml + README.md = README.md + README.md.tpl = README.md.tpl + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "images", "images", "{6302034E-DF8C-4B65-AC36-CED24C068999}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {33FBC5A1-3466-4F10-B9A6-7186F804A65A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {33FBC5A1-3466-4F10-B9A6-7186F804A65A}.Debug|Any CPU.Build.0 = Debug|Any CPU + {33FBC5A1-3466-4F10-B9A6-7186F804A65A}.Release|Any CPU.ActiveCfg = Release|Any CPU + {33FBC5A1-3466-4F10-B9A6-7186F804A65A}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {6302034E-DF8C-4B65-AC36-CED24C068999} = {1A6C93E7-24FD-47FD-883D-EDABF5CEE4C6} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E0FA12DA-6B82-4E64-928A-BB9965E636C1} + EndGlobalSection +EndGlobal diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..ffe016f --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,11 @@ +1.0.3 +- Initial Public release +- Supports Inventory and Reenrollment jobs +- Allows Certificate Usage codes: + - None + - `HTTPS` + - `EAP-TLS-client` + - `TLS-DATE-client` + +1.0.2 +- prototype build \ No newline at end of file diff --git a/README.md b/README.md index 196ca21..97c0360 100644 --- a/README.md +++ b/README.md @@ -1,144 +1,142 @@ # Bosch IP Camera -Bosch IP Camera Orchestrator for Add, Remove and Inventory +Bosch IP Camera Orchestrator for Inventory and Reenrollment (on-device keygen) for existing and new certificates -#### Integration status: Prototype - Demonstration quality. Not for use in customer environments. +#### Integration status: Production - Ready for use in production environments. + + +## About the Keyfactor Universal Orchestrator Extension + +This repository contains a Universal Orchestrator Extension which is a plugin to the Keyfactor Universal Orchestrator. Within the Keyfactor Platform, Orchestrators are used to manage “certificate stores” — collections of certificates and roots of trust that are found within and used by various applications. + +The Universal Orchestrator is part of the Keyfactor software distribution and is available via the Keyfactor customer portal. For general instructions on installing Extensions, see the “Keyfactor Command Orchestrator Installation and Configuration Guide” section of the Keyfactor documentation. For configuration details of this specific Extension see below in this readme. + +The Universal Orchestrator is the successor to the Windows Orchestrator. This Orchestrator Extension plugin only works with the Universal Orchestrator and does not work with the Windows Orchestrator. -## About the Keyfactor Universal Orchestrator Capability -This repository contains a Universal Orchestrator Capability which is a plugin to the Keyfactor Universal Orchestrator. Within the Keyfactor Platform, Orchestrators are used to manage “certificate stores” — collections of certificates and roots of trust that are found within and used by various applications. -The Universal Orchestrator is part of the Keyfactor software distribution and is available via the Keyfactor customer portal. For general instructions on installing Capabilities, see the “Keyfactor Command Orchestrator Installation and Configuration Guide” section of the Keyfactor documentation. For configuration details of this specific Capability, see below in this readme. -The Universal Orchestrator is the successor to the Windows Orchestrator. This Capability plugin only works with the Universal Orchestrator and does not work with the Windows Orchestrator. --- + ## Platform Specific Notes The Keyfactor Universal Orchestrator may be installed on either Windows or Linux based platforms. The certificate operations supported by a capability may vary based what platform the capability is installed on. The table below indicates what capabilities are supported based on which platform the encompassing Universal Orchestrator is running. | Operation | Win | Linux | |-----|-----|------| -|Supports Management Add|✓ | | -|Supports Management Remove|✓ | | +|Supports Management Add| | | +|Supports Management Remove| | | |Supports Create Store| | | |Supports Discovery| | | -|Supports Renrollment| | | +|Supports Renrollment|✓ | | |Supports Inventory|✓ | | + + --- + **Bosch Camera Configuration** **Overview** The Bosch IP Camera Orchestrator remotely manages certificates on the camera. -This agent implements three job types – Inventory, Reenrollment and Remove. Below are the steps necessary to configure this AnyAgent.. +This agent implements two job types – Inventory and Reenrollment. Below are the steps necessary to configure Universal Orchestrator extension. **Bosch IP Camera Configuration** 1. Out of the box, the camera comes with three accounts. You need an account created that has "service" level access: ![](images/Bosch_Security_Systems.gif) -2. Initial design is using HTTP because we don't have a trusted cert on the camera to use HTTPS. Further invenstigaion with prospects/customers will help us identify if we need to switch to HTTPS after the initial certificate is installed. -3. Currently supports Bosch firmware version 7.10.0095 - 7.82. Has not been tested with any other firmeware version. +2. Currently supports Bosch firmware version 7.10.0095 - 7.82. Has not been tested with any other firmeware version. **1. Create the New Certificate Store Type for the Bosch IP Camera Universal Orchestrator** In Keyfactor Command create a new Certificate Store Type similar to the one below: #### STORE TYPE CONFIGURATION -SETTING TAB | CONFIG ELEMENT | DESCRIPTION -------|-----------|------------------ -Basic |Name |Descriptive name for the Store Type. Bosch IP Camera. -Basic |Short Name |The short name that identifies the registered functionality of the orchestrator. Must be BIPCamera -Basic |Custom Capability|Checked, with value "BoschIpCamera". -Basic |Job Types |Inventory, Remove and Reenrollment are the supported job types. -Basic |Needs Server |Must be checked -Basic |Blueprint Allowed |Optional -Basic |Requires Store Password |Determines if a store password is required when configuring an individual store. This must be checked. -Basic |Supports Entry Password |Determined if an individual entry within a store can have a password. This must be unchecked. -Advanced |Store Path Type| Determines how the user will enter the store path when setting up the cert store. This will represent the file name on the camera. Select "Freeform" -Advanced |Supports Custom Alias |Determines if an individual entry within a store can have a custom Alias. Forbidden -Advanced |Private Key Handling |Determines how the orchestrator deals with private keys. Optional -Advanced |PFX Password Style |Determines password style for the PFX Password. Default -Custom Fields|On camera CSR - CN|The name must be CN, the display name can be CN and check required -Custom Fields|On camera CSR - Country|The name must be country, the display name can be Country and check required, this can be defaulted based on customer need -Custom Fields|On camera CSR - State|The name must be state, the display name can be State and check required, this can be defaulted based on customer need -Custom Fields|On camera CSR - City/Locality|The name must be city, the display name can be City/Locality and check required, this can be defaulted based on customer need -Custom Fields|On camera CSR - Organization|The name must be org, the display name can be Organization and check required, this can be defaulted based on customer need -Custom Fields|On camera CSR - Organizational Unit|The name must be OU, the display name can be Organizational Unit and check required, this can be defaulted based on customer need -Custom Fields|Certificate Authority in Keyfactor|The name must be CA, the display name can be Enrollment Certificate Authority and check required, this can be defaulted based on customer need -Custom Fields|Certificate Template in Keyfactor|The name must be template, the display name can be Entrollment Certificate Template and check required, this can be defaulted based on customer need -Custom Fields|FQDN of Keyfactor Command for API calls|The name must be keyfactorHost, the display name can be Keyfactor Host and check required, this can be defaulted based on customer need -Custom Fields|Keyfactor user name for API calls|The name must be keyfactorUser, the display name can be Keyfactor Username and check required, this can be defaulted based on customer need -Custom Fields|Certificate Usage on Camera (80000000 - TLS_trust, 00000001 - TLS_client, 00000000 - HTTPS)|The name must be certUsage, the display name can be Certificate Usage and check required, this can be defaulted based on customer need -Entry Parameters|None required| N/A - +| Setting Tab | Config Element | Value | +|-|-|-| +| Basic | Name | Bosch IP Camera | +| Basic | Short Name | BIPCamera | +| Basic | Custom Capability | ✓ value: `BoschIpCamera` | +| Basic | Job Types | Inventory, Reenrollment | +| Basic | Needs Server | ✓ | +| Advanced | Store Path Type | Freeform | +| Advanced | Supports Custom Alias | Required | +| Advanced | Private Key Handling | Optional | +| Advanced | PFX Password Style | Default | +| Entry Parameters| See Below | See Below | **Basic Settings:** -![](images/CertStoreTypeBasic.gif) +![](images/store-type-basic.png) **Advanced Settings:** -![](images/CertStoreTypeAdvanced.gif) - -**Custom Fields:** - -![](images/CertStoreTypeCustomFields.gif) +![](images/store-type-advanced.png) **Entry Params:** -![](images/CertStoreTypeEntryParams.gif) +![](images/store-type-entry.png) +The entry parameters that need to be created are as follows: +| Name | Display Name | Type | Default Value | Multiple Choice Options | Required When | +|-|-|-|-|-|-| +| CertificateUsage | Certificate Usage | Multiple Choice | | `,HTTPS,EAP-TLS-client,TLS-DATE-client` | none selected | +| Name | Name (Alias) | String | | N/A | ✓ Reenrolling an entry | +| Overwrite | Overwrite | Bool | False | N/A | none selected | +![](images/entry-certificate-usage.png) +![](images/entry-name.png) +![](images/entry-overwrite.png) **2. Register the BoschIPCamera Universal Orchestrator with Keyfactor** Within Windows File Explorer, navigate to the Keyfactor Orchestrator installation folder (usually C:\Program Files\Keyfactor\Keyfactor Orchestrator), find the "extensions" folder, and under that create a new folder named "BoschIPCamera". Under the BoschIPCamera folder copy all of the files from the downloaded release to this location. **3. Create a Bosch IP Camera Store within Keyfactor Command** -In Keyfactor Command create a new Certificate Store similar to the one below - -![](images/CertStore.gif) -![](images/CertStoreCreds.gif) -![](images/CertStoreUserCreds.gif) +In Keyfactor Command create a new Certificate Store setting the values based on the camera settings below: #### STORE CONFIGURATION -CONFIG ELEMENT |DESCRIPTION -----------------|--------------- -Category |The type of certificate store to be configured. Select category based on the display name configured above "Bosch IP Camera". -Container |This is a logical grouping of like stores. This configuration is optional and does not impact the functionality of the store. -Client Machine |The IP address of the Camera. Sample is "192.167.231.174". May or may not require the port. -Server credentials |Enter the username and password to remotely access the camera via basic authentication, or configure retrieval of these values from an external system. -Store Path |Naming conventions used in the camera for the type of cert (customer to define). Example "TLSClient" for client certs and "HTTPSCert" for server certs. -CN |For on device CSR -Country |For on device CSR -State |For on device CSR -City/Locality |For on device CSR -Organization |For on device CSR -Organizational Unit |For on device CSR -Enrollment Certificate Authority |CA to sign the CSR with. Example:"Customer Main CA" -Enrollment Certificate Template |Template shortname used for CSR signing. Example:"ClientAuthCert" -Keyfactor Host |FQDN of Keyfactor Command for API calls. Example:customer.keyfactor.com -Keyfactor Username |Username for API calls in Keyfactor Command. -Certificate Usage |Bosch Camera usage code. See options above. -Orchestrator |This is the orchestrator server registered with the appropriate capabilities to manage this certificate store type. -Store Password |Password for Keyfactor Username used for Keyfactor API call during certificate reenrollment jobs. -Inventory Schedule |The interval that the system will use to report on what certificates are currently in the store. -Use SSL |This should NOT be checked. +| Config Element | Description | +|-|-| +| Category |The type of certificate store to be configured. Select category based on the display name configured above "Bosch IP Camera". | +| Container | This is a logical grouping of like stores. This configuration is optional and does not impact the functionality of the store. | +| Client Machine | The IP address of the Camera. Sample is "192.167.231.174:44444". Include the port if necessary. | +| Store Path | Enter the Serial Number of the camera e.g. `068745431065110085` | +| Orchestrator | This is the orchestrator server registered with the appropriate capabilities to manage this certificate store type. | +| Server Username | Enter the username of the configured "service" user on the camera | +| Server Password | Enter the password of the configured "service" user on the camera | +| Use SSL | Select True or False depending on if SSL (HTTPS) should be used to communicate with the camera. | +| Inventory Schedule | The interval that the system will use to report on what certificates are currently in the store. | #### Usage **Reenrollment** -This can happen in two ways. +**Important!** When using Reenrollment, the subject needs to include the Camera's serial number as an element. The Camera automatically adds this to the CSR it generates, and Keyfactor will not enroll the CSR unless it is included. +For example, with a serial number of '1234' and a desired subject of CN=mycert, the Subject entered for a reenrollment should read: +Subject: `SERIALNUMBER=1234,CN=mycert` +The serial number is entered as the Store Path on the Certificate Store, and should be copied and entered as mentioned when running a reenrollment job. + +| Reenrollment Field | Value | Description | +|-|-|-| +| Subject Name | `SERIALNUMBER=xxxx,CN=mycert,O=...` etc. | Comma-separated list of subject elements. Must include `SERIALNUMBER=` as described above. | +| Alias | Alias | The certificate Alias, and name to be assigned on the camera. Will allow for overwriting existing certs with the same name. | +| Certificate Usage | Select one, or blank | The Certificate Usage to assign to the cert after upload. Can be left blank to be assigned later. | +| Name (Alias) | Alias | The certificate Alias, entered again. | +| Overwrite | True, or False | Select `True` if using an existing Alias name to remove and replace an existing certificate. | + +![](images/reenrollment-example.png) + +Running a Reenrollment job to issue a new certificate on the camera can happen in two ways. 1. Right click on the cert store and chooose Reenrollment. In the dialog box, type "CN=Test" and click Done. A job will be created in the job queue that will perform on camera CSR that will be signed by a CA integrated with Keyfactor and then uploaded to the camera. Once complete, the camera will be rebooted. 2. For auto renewals with Expiration Workflow a. Install ExperationAlertHandler.ps1 on Command server in C:\Program Files\Keyfactor\ExtensionLibrary diff --git a/images/CertStore.gif b/images/CertStore.gif deleted file mode 100644 index 42525d08463b627c4edd398a96f24e9640cc5ae3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48525 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 N|EJNGI|cww{5KJcA^-pY diff --git a/images/CertStoreCreds.gif b/images/CertStoreCreds.gif deleted file mode 100644 index f9b9274afb48162095fca8d012a8c8c429acdc13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18513 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 diff --git a/images/CertStoreTypeAdvanced.gif b/images/CertStoreTypeAdvanced.gif deleted file mode 100644 index a5d551f25902dda37e79e569fbfed9312529806f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28576 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 diff --git a/images/CertStoreTypeBasic.gif b/images/CertStoreTypeBasic.gif deleted file mode 100644 index d6a6b626c10415553bd498a4c9244ea4ee680177..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37684 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 diff --git a/images/CertStoreTypeCustomFields.gif b/images/CertStoreTypeCustomFields.gif deleted file mode 100644 index 51a7c26a345e3dc960b21aaae158c3ec63fd91ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41555 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

PI|J0cG1N!>GDS@iJdM;% z?I-RhEX1;hQ{DfEz3kLieK3S*h`O8e)Ac6L|^|o55``mwl6&ea9g| zJX|ve{q6tX%B`-(rh=|@$>-VCwf-u+bh8yHG?JWXk%DW25B{fw?D*9-yUerZ2|2||o12pAN3Zh$lf z&;fHNkf(mwh=9g3gs%nFuP7Jp&*DGC)5?)tO?EnF?V-hOR=N=|XrJLmNk$ zrkO(tutPlr<*~BjiQVFp{o<@zQNP)n*>ggFBt?c)pW_qY>iQ6I6jRsx!+s`00iXe# zR9@X_NSYL8R@r6sx4yuo?PnNp5Jzy zmV~cpM4#_8z|Wr3QXbg+IXv2v1V0b-4N5r=ibP@*1XodJ$&?3OG+JeTW@lsww>1B9 zQq-|@HC_{?W+cU;W*JrAnh+DURt?c(ycBR2wQ#XSQ#NW%g#=8AAn>cI0apRtsUrvj zFy5jQ_FhkS13>nZBfkVuMVO-!<89uitM|9QLD^a+9O|Kx1xr-pj~|X;ZJ$$=4;C_N zNHkgyZ;PYtlwdq6BR(n+^>k0d^y4`H(>gzqf_)Ll%{C!LrUP-Mm7j7BhF<#B^x{7A zP6pwvv^*-7_Z3w+Z~9wk8{`-K+5gC(Tp9p#)uaT`;HAa(1M&7M=BH9BV+9dMG31lP zL;2b5a-K3>uMq>FT{zgF z3;SJ|R5*yBVou$tiSq6>2sm&b#S`*tnTIej} zo};irzXqJGwc=m{O`g9Ec6Lu6zp)fZ-NGN(O;;dk-T+m;xZd z=~B#2w$9Qt2!QPpX(&eS1PrrIJMY9ZPd)eKvrj(vYYEVd>dR>-kOa-Bzls{1Gd$K3 zc}}7e8auI4Mjtc_F{Dn|qEk<|`0-KK@QQ7sf#{^@xlcdk&C37KQY?+dg;0OTf8 z0RRyeLIW^TJ5+VmPNj=zhaM|@O;jaIMUuASw9-H#$Xdnn%CCfjs1G+2c|un|A)0hc z>K0bn7HHe77`?g(o--S0`dFQ2 zEzS)hq~xr(Y_rcsJ8iYs_P4x$DcV;g{0#~>x$Gd%slW|Xz`d6RKn7!Yf(AQ7K?{D+h9dtYp=mB=s^>g}Od61Z%$_qr08~(2 zN83;zk|zTfK*j->8{Su@vy}>PZf73M6JwsU01@0sc}~(&3a@vau3-;S5bRbHPvE%k zna_@Q#A6=yNIv!1OC;&a*lNS;+quH0XdQ7>k*E1ZY47I#7bLr;j5!=t2Pb z5kbOdc^z_zA?7f&j^u%&B65Qp7?~}NZe$K1>xd!T08)ckv@#d1W=BoZ2bE65q#cTRa*nf4EG20Ib1D)+U@k9=D`-%KI#i+-6(b1^2~q{p10axu3q61+N0e$*s-BHu z8xm?2ZkHvhRMo3r1#4KtH`PIk#0fo!gGdT7gdWgTs$zvJ_|TBVY6*2`F-$^3Y!z3& z_SLU{HK^N00*4;-01Z7QQeqXm*f|`b2UbWbU?mGLq+HCc1r1+7KM z>QH_a*0iTZZE8&m*~o_0wP6y(95(+-)IP}ewYSA>Zs9uGw~_=8UT~~xgyIkfr*SS^Y?M9-Tp6NcX;k@=3NzVXFxe)YRw{@&@nGpW~q`#WF)7udiDCarw~j9>;g*uf8maDv4n zV3bkf$JKC%MLc2>GuOk3h{;7um>1MskvsyksUf*~w3aa+IY!<k_4ZUbaH=4VM&aJ!wim7}D@kbfq=DX-@AJ&zSCXs6{<$>|XjKf^b6? zoUm$Ex7yXLrotI^DqT|7+Sa!Yt*JYL2OkXA*QXVONHUFUVi()k?b7u|^3ZE8;K9ax zI0F!R5Nx^~+uGO0_8yb15h@r~Bz=%JBC4Hja+llOXxny1eBc9;WT6Lm827p5J#TvN zDcu+8Ll2rzsDuu?-v0(T!0)ZEoA5i{0Y`Yk72aL)D0QJ8X=ra3K5>dyT;db{W5M~= z?~w%I1Rn=E$Xk+!6NLYV%t;b%w}s$_uZslw|l@`OiLC;_w1$PPkxz||!} z5HuP9^Y-_VtiL=XnmyLolT)sWxZwszZ&$8*e2=8*QUcw<8td)SwjL8 zqtC(dk8jD<&%?2fJ*NX>5JVqx=q9{tWL!=O0BE|krCkmn%p9RSM`G)EgoOU_r)LS> z`2xmw#nI@3K!aXa`FV;|AoPO=zGMqOk*9Mc>iVf0{=_4B^Q8VaMU03cG~fW7e}wlD z8JkL+?-6Z5@I3#rpNLvG+b*D7@F3m0e(==~+TpM7@a;>ygg;_84~YN`Zg9Z@5+H)1 z-GFpe5P{HfgUc|04%jNm+XDOBf(jUb3c!jykO7)|0=Ei+by@%y02%)igeo`z1GvDd z7y}WQ3JnkeyxSQqvWPjjj0W_N(Mf_nxPb`RfkF}i5vU3coC6Vnj0g|`g;4=y;*NES z02iRBB;r%sfsBN}oTn(Hpdph0_@W5FA}oOz0HTl} zppkf52tkmU0MLLhs=lXqio-Z2ZXpp}S_p0Fs*6yICb|)1(uxS!#7U`;su&EdsE`Dq zm1@$U1el5dFcCqxku7A!IHHhM`b7r_Mx;X*-~o|Xe2!UcA~$)C0WcO@+z_NtqAwZ% zVA&dKd=6_g9A2alpxef7#1qB{0GE>py`zw-0FfKP3hW2~D%nIZ>Xqjh#X54thg2I# zga}F02ueJv_7z)RzEPu=cz>^CA2m7(o~Spu@$UiN~m1h;E@u@v};x+>xxjlRo&O z0O)`TM3L$sh%NZaHNlO$u$)Z9nV_hO!gNT8WX!UWNQHX8K#ISMn?FN3Bc!+>#?T+g zvCB4$9mzwA+p!qZ8wkW83#z;yGkFS#q7v2VJYz8+int1hI6HhA#=f*3&uO7>8UUK& z9Jitp>EM{zY{dY;r;4D$a6-*mQB7uPi0(m%Ey2u%nF^ds6W{~@>5xk_f}GmS6G8u& zp$a(x&fz@}0U7M*&4m~Ud_o8}ij&5KPjveAb%93#b?k#Xy;(oDJQi6}7-a47!ZW*o@iW7|{rfN0Er+ zOs2IMjRiFre_9CUkxu0^h+GMeG_efK&~JG=>5g?- z%=lDNWSh^8s85WzPti&~|G>mV^3Mz@kmFnk1gR8=5sLynAjHtCW4REGxtWQm$&28T zV=<8mg_R3sAzFD)m!c6Hp%B+>CaMcO&xD{c?U6Fg5Ed;dEx8{mHI`e+jv4=P6FZHa z6E%}H?U6kVlQCh%l%XCrT9YDulR3?wCH2%uYq*TF55(iRsiRV{fziB4oJfg?NfA($ zBp?FKq%gf7P7#(+Nt{usN+L?qHfaoD*#c@oK}%&&T#8edK?=W%(Nf9^U)fbi`Bh(_**^cV8YImcb>*5& zZP%|^OD^fvc?DYcsMkceSBuD3im*f&tx|X`);Zyug@C3mUCA$<)lG7a14JB<(bb=- z2-I;C$dMc)Y8~~|x(e;Z6-r7Ma*og$ozmGWgYa6_F&WAsTesWAt-RX9u^w`Yk(8|! z0~i`(F#ycT4%1Q3)R7Fnqg%Mux;jxi=Xt{D35~NY7b4wRxTPVDg}$KWT>olPjVRiR zINFIwTKS=$`RU32)E|&~ivIZ@5D_4PvJLyxHKPks)3nI$nz~(cu5MT?hKclcf{Ctt>4e zCYHR^8lqku;!PERknA;H^Lr05f{rp8BWFP&6{_4ex?F>ZqY9#Z07CEU=(WMU^+ zvfzk-C&Rg=Tv`ZTl9*pIfM8;$^A#l$UI=9(2m$s?Ej7DN`e2w1;YMlEZ5R5jLQml#?@U@E7As)GZ*foU$Sf{5EV+f7#GHC8aQLMydmE4#(dMkHnC zx~m(=tL9ndU1nvB6A8jHEW}!@VNR^ZdaTx3KV#`R=E|%JF@W*ou_-sW$9pH?1;-wLj4KCR*cF=Phkb!KPlqUQGSw|182c`l!K4lH`c=Y0Mw zdtQ%t*5`i)Xi#J0Knv)CHfZSj+;8#cgJ$T4zGrbxG>4YxiM}I#R*!|I=#19rl(1;( z+USo4={O5jL?G#sHtCZ_>6BLKm1gOdK50I1>6rhP>6xbKnzrei#_62a>7C~3p7!aV z2I`;|>Y*m;qBiQIM(U(i>ZNAtrgrM5hU%!6YNWQZP^Ge~#_Fur>aFJLuJ-D$2J5gE z>#-*5vNr3pMr$UkYKRW$wsz~>>S*+Ux3{M2x(<`LE?~RX>%B$~ygnbk2JFDDuz`+f z!8Yu}E(yO*XvAjh#wOjxely3G?8!!2$o><`#%#=1Y{Jg$&OYqTW^2zDZN9c=R8zHA zL+w_JHL$D1(ROXXerH}YXJ4Z>ZGP?B25D+uwjOA3?vJMCZp&nR3pd*y z?&WT1YF@W?dpG4~?&%Kbq0P5_+c@c_?(P4^X9IR)h=XI~dUZp(JM?}obYZf){r z?|k;|QH8%!4GE8{zN7fLk`M$Jzzq3ak3P8XiTF5KzBQpEx)U(Ej!3%pUefnAxN!an z7_F@O4v8BHfb;|jyK~r&xQ#FNO99UaLAZfa?K6O^5WW+;ivURlk52~AZU?VSvB;fe z{s`tVy=oGP94(0rPnA>#38*17+mo%_dyd^pk%{oV3|H~sV{uZ|Zj1;RWrXIBP|=aV zagxySiFghV#|R%EwDNOd^egft585Sd%5wL2FSd9G?|JtKZgQsN?M~yI*y^*Lgi*H2IjE&7R++ z;`WRPPPKV+!};{q`HtYGXuK#96^yx13kczQqPHnaPr@M33JA%I6z*X#0*Vx7il70% z1OkyKaQw%2d`Q>Odq1OEbb*Pt%B3$fA2s$M)d7qkbKjbEZCP@8lOtu?wm-MGH$L^g z$f-*J@Jt9|fz%Qai09x9V;QG^X9yV5!RLSw#0@{0-Jj@W*NT|-4u4p(Da{=*MsCL( zuQxPG^&lYyeXoHLB&~VVw>8xNpG4K4<;BCFryxagiPlw-j$Bcfof#V3ucqe!4MUg| z2zd$#FZ|ny|A^=o#djmh-|-vV-X#8FfH1U01pojV5+#}gpaa5&4j)2{C~+diiWV+)5KmdmT5+|bR>-g^=gyuxZ$UeG zGf9&u9jat`_;f><2&+W@emFDd=i0V!{xQ8oJ@QVFZ`}w!8%pH&Gq{0k$WCjW=OI(TT>4_dA&V*@mzKTwk3Qz~YFF z5e`68Lvvgv+6iu8cUfj_0oR~|OO*$}4*4Y%U`>fA*cxjHrPk7hhsBhLA(vhFSV6Qs zn4*d+ve=@FFT#i$b4AT~k#SaG72HnFIfTZE2+3fc3{S{lfPnTD6k{Bg*r%nJVw$O@n{oxp!E95|y{? zOKHaGWRiv<tAlqS??8!6JT(iwL!x->SI!9zk4?yt5MGqKjh1*SJ;heP6 zeO5s&eIqab9ktX`Q(d)1Jokh(L{9V&hfakI(F4>MX&uxJdI6A!)oZi;nOJNlf%Xn< z(_OdScXL{{PI@;4M-M%q@vRazyFu!4Aic*{+6{~2)D`GK=THIn3b=SVbfia9? z93vUaXvQ<5F^y_mBOBZ3#y7$-j&htM9qVYvJK`~qdfX!)`{>6%0y2<-93&wNX~;t& za*SSN3JHNSwiH4#l9HTc?N->QG*B{=n%pEO*=9*THL{bU93?4BIh+Q9(v+%PB`aGA zoKMCml&+j5Eo<3HSmw-@y4)o%dwDff#?qI<940YciOUzsvY5(TCNr~lOcy1ynbMs9 zCN*LAOpZ(}3r^T3H@oRgZc^b4E#qA^%W2MY!ta_I!GjNk=T6g!VQ=W1Cq3(lJ#}Iv z5AEav9{S+Ve*!e1|K!6NfY5_@9?YH!T_{68htG>p0dP9$gFz9I(1v0(qZ*~!LoMP1 zAMhj#J;1|7H)_(8qO@NfrAQxo&;%UmEt)BvDNSpdHDGdtU>`Bq=xplKp91xjI4urU zU|Q0kA~mT>JtZRtR#Z~ObSFVLkZewXtDOkK1rCTniE`5it48FjwlXOiR1kqk?cjA6 z>4VIc>Q?KmbRs(S2v5n$6|Xp?O0L?8paL*}M_R-UH&E+N6cZ7^7gveQwIg+P%8u~*nu17fC*>Kyb;hX?zih6s@2X2|PWmVb%|Q@oK-(Bb zQWA<(AOM7|EN^dj*@$G8Bb$|8XP+ad)Ov(1>)8ovfnr#QAQq)v>FRq*RGQvm7lcFA zNN_hY+>D5hN6{%4MCPCZ2MnMBWIBNeDpmy%JV69bN`MG1lm{0?U;q&?SH@&efdObh zJADv=SsVc0hV%iy>Ak_iL=cxCXrQgneMoex)qw;UpaaxR1cV2$02ipt!5ofoBCaHe zDxAOoAKud#PJrGDIBg3eK*JXPTLJLoK?Vz`z!NIg;SZZue%%>sLxO<+IT5rs5h8{# zT1<=(2OFZp5!hTGRIq>q97x8K%`TT~_FIT_S0mqDPI1FRnTN2-0fIsrmNq9AIdO|D ztWt475`Z2w#L6uEu?u5yg@()UCrN5+NdN>D+5xS$TCHUZe{u@|2W&?W-3fpOfVEfi z7&;LuQ3**3g0w^|b^)>a^h}%tXqsFmT@8`6c`BVH{{<-kNf_B;x#bv4gI3cHJ4^ta zWTb*n>(6yANO$nnMAp(ReLtu$Dvf2XFChU+3tAtEDST2@&Wuo){v;+VKpf`tLA{xj5 zKv5dVj~gzNpDKOD5M3#kV{URMCBI2t<^e4F`T(o|bfCu%xo*G*zMVx8TW#545JJpy z0>`WzC&->T&6MpBW@E(Jzl1hp4^61=IK(pXGRt1utfuj>+aZt{&$c#$omKs%Ax(dX zStMtkAhX9=tWB(w_ImF}%O>i)R+&m(=OoosOfQm~3AJG3bjaP-F5Awl*!d?26`cAm z=pp&oQL}59pa*jCV#|m0Vr-ft9$YqW2+l8}^YwMsJmwj6LoOrG4*6w0g4p=c9U|=n zXxK;V!BTA_vhGB5rSwG>kB9c7bwwxkOHWXlUt|za<+k4c?Xd!h=in(BjyI(wPS;S=wDO)VZFjkn0-DH7h3+#UU^ zW-R;b133U(XIn`3b|TPL0TKLqJ!T2=>G%H-wrmFWJ;Z25#9UCxsa3$Bp-ua-9QG{= zLhzo5NJ|HF0HD#vOpwX(IfU}%1p}^00!10H*_LUf#NU00Yt*02ImAtL-}kwo18rAE zj9*2RpZye9!9@UifYui9U=MCVeh@@Why~?&TOSkz#u!3KtcOZ?okN@+6F$VFjE4X+ z%zsP<@+ATq+<=h)+)SK+5B8vFIN+{9VA`aIz->qWA2`Vc7M}(-1P7MbU4S7EZdw0? z1Zmt>?kS21zC?)31a-0C3ko9m#UMt^AVt(*`rIH3iN&XxMIExoTCiN_y~iXPpYsVu zU({VD5{B4Op+ktphM5IqL4-=w7HnLce|*RTCPD-TiLDG@9A=>N0myBk;sS*RMBD@( zlA!MCVM~MvY$O(ysNf(PV=6V3R6JF|l!{$-1dl+6bZDP-V25@%M0W(pp?O<*0NiJ- zheFhcT*SxrAp|(O$9=fVhd_j11VCsR0zu#hLhL}Lh>7F`h|{0}nT+A?nW0~#B0;d> zEFvEqCSToUp{mSJgiOeQSO}iz;41Q=NrXuM!;}cZwcs&gWP^lXA{^pGBw|FIpQ^|S zZN%D;6v>f%778v2>mh`b@K}^!3o%*==4c5_bP4fUiLU6QIzoi50G|d}AiG^g1?)f) zbOmXZqmgJp5Cp+dYDfw4quTVrWqhHG{fI2G)_ctX8`?gqWy?8|c|W=*4qvi$HE*92MZ07={j6|?ZP`u2Og=284XK!qz&j8I%2+eLi zn{6D;dTL73I0QI;r+xCLQfy=*aE;e|1lWkpQ8mTc6a;tnCycz!4a7}Bkm7<$C};eq z-vEx_s8Ql94(oiz`wf84O{j}p4r6Ifh?;0J;t%P((>tw>fii{boam*@PK?qh0Ttpp z{mzP_4)GX|Jk{ur0_pqwr;G$?ks2xe+^CAk)R8i2lkUrq-o}zT>6B6_ra-A}NNJU7 z>6Ws{l~NCvf@zp~Qj*H0n40PTnJSH!enys}X`8yKjiP8Uz3H6NX{V^EX9#GW>gk@! zX^Q5-p8{&23hJN|YM~nHp(1LcD(a##YNI;pqe5z=O6sIiYNcB0rDAHPYU-wPYNvYY zr-Evzit4D6YN?v)siJDCs_Lqq>LR5mpTcUaI?tVU1|P`kt>P+g&?<%IYOngLXY4AO z{_3z2>+uL{_Y`ZgDyvTfYn(3YvqI~9`X~5AYqeUdB04KFUF)`PYqP#8w}R`ldh4`? zYq=&XlxEX6sjD}I6KqPWxx#C%4kE)i^gld>gj*#QxEWyKmlw(5tKpQt265B z!Pe=2MieAk1V#0LMfDW_!b&Wi{^v)9)JWm$#A+;;Ze&Zn6jWvG#)|Be4(D+&V^oc7 z%5vv zmDO3DKw51CTg@y+)-1^0>_?C$0~#$yRDm_3Cn*ZbS~$tla)e;X=SBDh(mBMoT$MuA z8e=(Dghqs9O|3Cj?a7AhMIhV)Y(XCg1m=(}Mqmli%m#G8M1F(>!=kN0ZbaHf1luyy zYo(QJ(bfp!mTuMUAl_|pqO9dyhQCqC09+(R46a1rUQnDKM>sA-K<+|K*Z)};Yi6!` zZtlx=u163=WJ;(1e+_^G?7*HZ*;0zYWoUp1c#D=P*?iU4tB8PgzE=V)fC?CGi@lg( z3|N637+CPG?>^G%K1Ay#g0!jF7cxwkc-RTFOqE?(md%*bi9iB?p5m6!kV%A*d0LVM zZ;hHoY8K3b*G?G8)*e=XB*3_+AE61#0v1GVVc=mf7FmSE zUb%?@{2FA1+NdRh5%yWNI4}e!0PR4X+DaXHC4!V}RYCNM8*rht1i)Si+er{xF)mgG zNXv#nQmoAyM7(X9;2O}OT(1cnw*(uY0ZXwFZ~?O{aJlRO-!3*;;Y1jMSfI#ET-?0D zOt%o@bI{-a25TRt!7$LhEvx3rKQ9pg{-hm<()QyxhcC1)@SkfIwZd zCPAP7^jU6NqTC6F$U$@8HrrG;i`h5toJYLh*|wYqk|XxDGFDb1(wQ-2U?Fx)U!j0i@v?=5oPl^&Bc_CC=SLL>t2l zL_yq1C^m#&#LFLEw6<+Eh;GsyMl?E4bRQBQAZqhdZ&Xz0+*F(2P9Piu&jCTFpxnNM zSJSddvonGOvkKdE3lH)pN=QbKa1)kxWhlt|?a4I@W7y?HFz;sy<>F`z_CBU13br=? z-HondD->fpo@3kKPPj>gjsaEDhu0+m(U5d{g7s$qTnB7N5+aB{Is`yM-F$!}a-S`h zECA8uL3dy>RS9L91jt?)VZ2bJ#;IUeAYUF>b_yvZh0H-i&hkS-(dCG%fD53M4^1i$q%9M5NS2bHlPM_kjbufD4GlK}@9_TBQnZ$xWW& zn=E*DI2}af!4scAUtx@#)K{GtLWvFQiC{chH6*sD$q(!D4}Q358{# z1WQAdC88uXe)|fJyCr}3_dNYK4F)(!`b3S9D0R6(Vg^9lu2vuD8Cj&}tuzGxL6|q@ zn1{b*Z9#OvX)b0%XF0cQc||mH1}}`YFjlq%2A~Z9Y;4H9K#Ffx%G*XjB1e*J_Sw1E zrq+R`vb=%=w+jb}uZCs4$C%t*RPwdcO|3r!o3>4ZKImwtl(owZvrl@qZiIyf4jXA`iyEx{jA-T{mqwkttfV`)+tZL< zMZF3SxtBZt%;-%oF;t#!@t$ShmONb z{8B+Y15NzJOR=}N2(@E;$KMjA`v%8*{K!*M#TSLGl6=bVJIJei%lGFBv1-iA{LIsQ z&D;FV<9yER{Lb@y&-?t(1AWj7J{n)#e*OUF(qm$XA{n}HL+Oz%JFO%ED{oD(a+|&Kt>yq8$ z{oWgs*z^70r@h|;{@}O0;1mAg$Gzbr{^HlY;xqo^=e^@Y{^a+)##8>~E0f-1{^nPZ za+gqlaK4e{_Jay?9=}L?LUw0S z@9U551OM=Yj_?!z@mG%VBmeS4kMA@8^E;FCL;v*8s`OL;^(T+=WB>NsjP`T?_nVCO zga7zHsr8fp`QMHBqyPG6iu$wv`y=DG!vFkdzxmVu{ojoHYM`x&9B6aE4v1ix59k6wX-noYtKc0Mfr{Fo8SHGTp zd-p`qH;n(DetrA*-_KvDAAf)U{{b|Pzk~)1(7*!`OmMRT4`NWk2O*45LcAO-sKN;` z%uvG(qq=Y)4>=4`#1To93B*KBEK$W3S!{8+(MKVTRMJT) zt<=&>G0jxdO*!q<(@#MSRn$=DEY;LgQB76VRatG-)mLGSRn}Q)t<~0Bam`iNU3u-* z*I$7RR@h;QE!Nm$kxf?FWtnZ(*=M1RR@!N)t=8IWvCUT7ZMp5%+i$@QSKM*QE!W(0 z(M?y~b=hs#-FM-QSKfK)t=Har@y%D?efjOz-+uuPSm1#PF4*9M5l&d)g&A(x;fEoP zSmKE(uGr#>G0s@yjXCbv%yPF4^S&lTl7t<&{}(+2xmEj#=iJX|CDkn{m!r z=bd@(+2@~u4qE7;i7wjcqmfQp>7|)&+UcjEj#}!esjk}UtFg{n>#e!&+Uu{u4qNQ8 z$u8UMv(Zjl?X}r%+wHgEj$7`z>8{)EyYbFj@4fl%+wZ>t4_xrU2`}96!x2wh@x>W$ z-0{aDk6iM}DX-k}%Q4Sf^UXQ$-1E;t4_)-pNiW^>(@{@d_0?H#-SyXDk6rfJX|LV( z+i}lb_uYB#-S^*t4_^4;i7(#x#@&X`|Y{!-uv&t z4`2N8$uHmh^U+UV{q@;z-~IRDk6-@(`RT9U{`>LIU;q92@8AFb0T@654v>HaG~fXd zm_P+CkbwXG4Q`Nw9rWM_K^Q_2j*x^UG~o$Rm_ik)o;uE15MJY~^ zidD4Y6|tB_EpCyEUG(A?!5Bs{j**OIG~*f3m_{|Ok&SJ1;~U`^M>)=sj&-!-9r2h) zJ?@c@ee~lW0U1a^4w8_CG~^)>nMg%0l97#cUBto%G}< zK^aO>j*@BuFy$#xnMzfzl9jFhbmc2y8B1Bh5+Sp+Ve%6&{`{wF1e(xa67(+yJt%7w z8c|#_)GrQwsA(jcQCU*7FBZKhX*3#AS8|ju9{s3jM4D1@8pNb|Y3WHfqf(g~^rdsD zDNHdlQ<;)JXpaC4uXUgK;a-*SOFOfVpg=Om8}Dj>k0rH z*cGrqAZA#B6f9CyqdLZ#AUMb&K(JD-p7IchXag$+LIwd$At5Um>p1Nx5kQ0>ss;hX zDe+p65twof2C0Dnia?OjmR2CE#cU#!AOIL7HnfW^%{-aP0|s~?wuv}ID&aa1sG5?l zi70?737d!sY&H>p2*Gu+8v+D;mZiOY$RD0t04Uty5Np7JDQ8d+9-MLn2C=OI2vLyN z7Pq?L9dCKh+tu2_Ru293uN(xD+uc?~vA$i*GuxYp1E3NCZKx_L^ARu1YUYe6>uAOH&tq99=?01gVG00At)luIRuZ3Pel`NDP}As%swPrP3(Bt*cx zHSlkpnchUG*p& z+K8}V%nku_BD5fYCl92}NH8UU1#;#@FdD@RX)}*?>*G12^qHv@h#F9^N`Y8f0DiD6 zDl4m5$|geA)FlKIaGmSia({xbY%Y5R0)ay(qyfAph)+!!VTP>N1K*DEiv^J6 z?V=#lG)_dk83N-}`Wd&Oj*hr0p~aNW_o+>ZSWTNe-~wR55^$b#ECkr#*p@TGFO$v@#P{C< zXn;UaZ~&zrzzm7t^C<_*6~0ntOreR zz2+)6$h9YuZJ<{)ofbHILOg)(L_DC(MPE0S!%6Z)te4;l$vZ3UjO>>WM63{afxijg zc2E!h*ynTC%rgr>29cjqAfz3L*u^f8%g&nNkWS^*1E2MW47<|=A;b)#Zb}JIfcCXF zrJFxJ5I{WFl*MJeL0*sP+#dw)5|O**d+JO~r`nVRXoElqFyQH?vbiEx0zn>d`Y9*6 zyApwdDN#W5m1qCx>pi+bQeAJwyWRA?AISFw5dMMaf&6zTe$V6nbL2DDnSvh3AY4r# zia^coY?bVc)w*mTq)z(~;_yaJ^&nyZO^E_ffB|HW#I~#N3SzRfZ1@HO2HbBTBv1e- z&;kWO0!U2p3g7`)umvfA=T@)B$>I_tDia@(5;>9XJW-%PQ7txc6vLtv6Y3Px zA{ABfD_GGKC9$AHF&2qx7WK&$JMk8A5eIcKpLlUBVDT5XA{d3S78}YJjWI5eQJ#iT zEQ+xivEmuyDH>Oi8L6=ltughw4-vPK6ua@8ifJ6lF&si093hR2?(R;J77!H> z<@WoF|9$_T+pVJneLm;B&ubcw)ukU;$ACsayMX`v$jQlN$USLjXq4%ERp@=0 znVB_N19dpxb8~Y)2N+S-QL z7ruPy=95Hd$oZIu z#TL|Khl-2Knu|wUO2$gdDk>^*pDQP;akX7_GxhbKJ~cEqHnj>i6A3kw^f%A9wzdtn zF1CN}8tq(Z@9yvF?(OLvnCxAj?%(Ji7@i&693CE77~2^epBkT-UY^>Wo|%iC4V;@> z+L+s$UszsW*k4{=+g>?bS=(CQ*xBCx@@41n>)z4n*^kR#*SEK~|8>g$-v!4N2=t#d zq5mxYb4>t{Ta;gL2s-rNu|`Hk$Hd0PV?HD#CMBn&rln_OW@YDm%+1Tk78Dj0mz0*3 zS5#J2<7#T_>OVC!HZ`}jwzYrmz;||a_w@Gl4-5_skBp9uPfSit&&z?f8YH1dkY{WVb;Xuc7{Oj2$~Pz^18!e zTv}P0HTk{K^b*c112x$Gcy^U2=Et=KgNgjl%ghIB3x`uhZHKZR*AP;5@DaDWE4nr`tUsxpZKsL+PdORO`flm z$=DtiEQmfw#D&IJkrCH9v^d|FcQ_}Ghl8fT#xNC9%GiFYG3udiyYny!Mb_sCEIH+e zQ-aqE=|s%8j$8d;ek-Zb?9c^vu)_~#ufM$xOq_GXxO8^ko?rAtpZ9~piQ|1wH#nUm z=GftEKDE~2DQf&EcxXf?-cH8j3}6Q+3)Y~F7en+3Ae$!G!EzL@^8u`!(=S3k%t~+E zCg_MH=0YJ4ec3}a6AW!Q;JPK&6qr#y?r>F0-w3+&#|}Z{G7|^~JMIi|yAS9rv29zW z9S-i)_)vT(vmSCYlmJuHG!!dC^q3^?gOZ{Og$Rm|fzUi4GXH}C@8V8j8Y34Et6lEl# zEyZ>A*GN>3U&t0eDy}GL5@07{#}9SH4MHlz@O>H4W<^UJ+qRS*&rV*XHypa(dzzD* z6;v3YWx-cQrKe7*<3a1r{Tc;hAg4?T0@~3E$&plqZEUJi+FS}oFs`!u>v55&0ipW0aFM(uE@RSP^F(quJp5%%o1x9zG8xW|_9 zy}@Z%=s}|7y|)r}zqAN4>M)ZCbykJLATtUXgpv;|M%ENXivH!F4#Jp>3@|Kls)a_d ztVKo8p}*p|SoIwnyC@0(}lR5M&TKjDCGn%ia4vtpo8mk8s_2cl8sh(_hB(RQV84pG8x5DKb-bj{M9A8^Caai9A-M zGy~ffFyaSkL6|ZxOa3!Wk{(jsng)aR4LqDOCy9ce1z0;^hbKLkQ{`cigvwp$$r1>m zx!)#oJb>!RvM!`?ukjDdnNlhXV<}lL!#<)}x-vEgcRA*X(^QLsgJ)|L?dWm*i~}(7 z4;SpvZ%%_$gK+V_T2)c-DS#6ZM6wx24ibyc0ugoN9(i*qbcQU{v!2hm>S5{Hf`vsepDC@4jvjd{5m!P*14?2!AImv&9q zdz5<5VZi8E>U#E2>o5DrW!H3}A9%1vEE!z$7NtX>r=dH5MtQLQD78k(gu@Bi zaFtaDUyVCPw`FVC2V?HEn6?TR|MgC2Bd6sm0WeS&c>9%5 zE4q?yqW7l0Xp-aI7ySGyhKtH{GH9r7UxrE!Z0Ce2@J|>r2*DabuoG@%R?j!c!|1|K6LK#Z{2zGN8{NSU z4e~7DKDs~pV1&bgV_+-K?AHOh75J2@xvYooP|QA+s$xVGb+v(7CZ8qU;(- zW$yX7gB5-3?(qrZOOW^0eoqs&*spvn7Rtc|<~VZ$ajVz@^;>P8ad8exjMY}TQB`L= zKCMg+eihG(1)M9E==@T9V^4S6x!#X&q0%5Z!UX zav3Tg0Yt56SFw`(roUwMGp&qm;4D!%)C5&`VU>XT(`|i*ha;sd59_{Hr3Y!aXsU{A z?38{WPZtaNJ zlXEioD)&`+yrZ;H92R8wVUfL~JiuNBlnDJC?3@3UdcI=ZfJD6Niko(glk#DvvK4Jz zIp5#hr%F#gZ+$3V-uz2{+x-6KR1n_GO8u1Qu7Wa!^6b47jGIH?XXnKz%nspann)?m z!PR*R*%;wrw|xKBaSb+Z!oE}J&zL=9E=zBmSRTZd*Q@(X91Mnjho{x^^S@B4f?f{gI}bvL&muQi04k% zYLDKAL(KsU@FE|y;~#3mk}l~Jpd4>@h^C1c4C(!syUbG}NSb(AKX<<3to4nu@|4$f_X8jk z2uZveS!q)tQ7L>WV&RlqK@Wc(# zh=JjwtYQgu)U7IOgwF?54{KS07>qh0@1bi}(wwbw=TB<*RA_5=hT00%!b^@N7_h?+hVA1h^Z47&`~ zC^RB8mv)k$WTpvf)et?UuR7Qe8+RG;Ax}4If{jY_VRMtC#kR6~TAWyO+}$*j5=gvE zWQeQ^o#UndFKJXR(JQJeeYq>>F$b`Z*0G)%joc05!aM5Y?!sS&ed7f*^hGn5NYJPg zmh#$h@rQ+Z5N*_1Sj(hv$fU9b(QrFKbv+aKo1e$SVkCCu$1f7Dl0zIA7${MR<_Ui9#>l`#kiBTpG#H9`7HsFB z>!S+lew;eP09Sw$Td~K+0*r#c`n-`MdTQst{z=#zml*{OAS>l)?*Z%pWd&&sL%)KM zH4+|p&=UxE$VLjaW4aE2|6^EOe{IfjWMb-K1at$Ro&-C z9CO=@pYw7vdOrU3Yse; zSc3(SGz7UiYG{K}$)^qY@xCuHj|nzjS(h4}KQG{|!_Hn6=zRz-RHgI4y^}$wU^&us zp$t$I0aP(MaZms6Bw$4i%DTWIg8?ZZ6yt*m`~bPNd;p8hI$H?638SG0zaZyw_ zQFHtsHLx=~#2lsJss|;MB9I6!@IL@LwG<_678!iECKu0U)U$p=QUt!Dhi(wKY6)q5 z&0MxAAWE)do}JaKX+a;nY@!GnJ#-O?YjY`5HbgYKgF>!hmvuAg0CO_gvgg$2ACXz-0z*w;a!&TdyfBS+N zDTm{y+06E}-|ZW6Bt9sa`I0Q|v`?FvpATHxUtg2=$YZShh`l={X5ipRdpFZ zeU0w;`@3VEG%|h@^vCgYISC$`g-2vSqMQh1y}^Xet6TZ z$lRkW-=k{YqaM(snbo7!)}yo1qkGeXVD8nE@6|W&H4NxA&gwO7>os5LwY=%IV(zn% z@3S-Sa|q~j%<6M)>vLV{bHC~HVD5h{-|uDK?-S6E%knAze|OW5Vjc*VA3&QA zgar&lWDP{M4aBSr#N7;Fmcrc%%fBCqci5Ca{;3ZS))sBqbn<;Yd5!}8_Z){@?$&ZW4i%k@?ug46?C54 z5_IyU$44aI2(ST;=o{JiLDu-0d?c&icoquc4TBIU{JS3@e=DSbPbNGOkUe>r3jhFP znS`+b7;!||03sFyxWfZEduptn3#rU=r^0t=jpK~2f$j_Zd&%-tqk$YkRa^;nTd78^gyqiv7KXZbfCO`ag0Ph^ z90>f5KpC^*zz#Zp0!4@tGI|hbpw_EV5EwZPQJO+-K$$_z3|3A}gj`3y8Af zd(6SUGo=T^Izcf=Ik0U=$_1_YlhOKCZz|K;y9#i~|b-cHnW)opz|6 zJA=#`@Sf=E*FYgQ)-6B9ML!()UM^7EdaD99f7C8)g#-UI2TR}pd^iwUEW`l-ep(4c z0I2<}h|DnA4tPRok9~R(ZnNCIaM-$LCm{d>P^jWC__up7VA~(TNcVBG)BR^+8-g%E z{Mw4A=z+KB4oxnB0gT$yV;9a2%KI!Fa{>_b*bG5HK2c1{Bf#Y%8-ve)(y0CX&tOl~ zEd+u8YB@&82srE>TaVpX4;3ZEDnLy|CP_V(k*CWdqqL^N1mA^csoFs}{Nz+6WIT}3 z1q1lL2EQb~Y5oflC6%(6~1b%0>UBt>IT zUlDFt?E2ZsGy)EJ7|4FiI{8f(`m~aOfNc_pg5(HKBHW>#RZtlDH`;rX^wnEc!W&X- zllK%)NxM$rmB7(#lCUbM_vs`B>Kja$fXHqB#GMG4J4=dMWIUbuRtZs70H7a2xt>Cq z-2lPlMDUGizKQwglmMF38Gy&O#kXlv*aiYH`B-F9!ULr7^jDty6xFNSnfHHx!2`D$ zsaC0k3FzI4I#z+_pBHaVPF}t`2}7NT=IpS*zQ9J84KRmZkDzP{01X_`-M`<15#N-j zrlb*IZN*c-#98^oG@KoZAqQN)6A~U>Rz|E(RY5lX>_)$wR(iHhh$l1?{S7-lhpz%P z0DCZni{R6r01pBL0xWaO>{to>K?Z)s2B42SunYvPR9{x*eu+bzFTXwy_P8$XxSkpn zkclUh$F0j$1GVvcFmfo7w;!73-^g(f!5Iz&aB54(5u%e*{Nj{TGs9hy!vM+-R?^}3 zlC2_=k#PVC17*f=fIM0wT-w1!gBYNZ`JZN+>OxW9?HzL)P9t%z9iWXAtP3Y~Ko-uj z6jJ1r&v1rh8iX69A|(K8ec>zjh{8MkhGqfMNcnK$d(yQ4mOiCYA7!<26-Gj! zKmZ~KMK}RTRE{v=(dKaY=|BQqTn}8l4$qn-d?qMV+J!C9wE4fH?OjUjNuOFQ$9Nv=CdSZKFay4Hf(J^{^2*XpZQ(kU_? zLI3tb@BlNII1C^d^E{Lbo~8tSx3hUhpxC&{(eu2}I!W;jUGJTZw_zi7IfP)U*Vc+< zoA^9$p@zM!Xwg3Y?HI{9M_W-%`v=jyJ0}055ylGQHxbphk-=%VH)yjTbCi`&@bom*(Qoz;_CEA6N-}rzga^P4DNu^Fw`5 z1e{KW%;OmE_d8=!sl&JY1`j-~L3ddNPMUU7Tuz$zid-z>4>RVsldppgwt8k%27 zM}Vfs`h3vSPBK+Cq?Q;E8zv1X7K9KY7(4#vG%xivDP=8kP;B`u2@BIT^S-kATwedS zkA(m{#7mmNd^-xhN9Jr$=jEYVA>Oc!CzU`8`-ptJ?`k4268F~G*M=k#UQanh{A*hFD)%snhv*UN(g&$wiHJk_7=d$P}nP!YpRU8I26 z=!1pW;CpU8A%_MgqY}*G1UqF$_}52Rm}dL#8bvD?XVH+Ej^M)@phn_ zm8jP{bAiFj4-V89-VQ^ef=O~8pgchp(pyaP%4CYYf@8tLa@&mEP-D^PJ?vY@{3K`E zV48hvVmmp1i_?FT7jx5D>?<$KPSLaiBa35TCnjmqCb@@)H9vBw`?R6c8n6t*^Hr;94`0;w_;;W?};2zp)k0IM0(Temv@Y zYg%WnsG8JCLL{$jw-Y8I4~i#9A<2x@79IpC+AO_QsC#CMIAga;7s;y;_Zg&Ovt{!S zenujCo*0`s@GO=W{-kVgQrv_yT$*rDLM3LO>I-u}M|PqncCeZ%mRfxpMa-D7AC#Q} zDCC(#Bv7~>(5GF{@IU9#I%miI+iEYZUr@it>(_U%f`y^1Vo*X;0x}|$nF`uo+V-jt zodV~rIhuQ7g~L%G_mf5Ey0vEYb+Vn?iVPcvW~=;Wc^7Z?m4%&%0|mb6#2_8}#m^@U zRHtPh2NTfmY8i=YRy{@|BSv=g6A1GY9|ti&d7z(|Bz6;FF{j1n5&h4+kUF>NDTwE> z2YSG({g5|%)OvARA>}>~sROB{ih1mSeUS%6j!=t&`@RLw+QeOfEV22Plaoef7F)C- z$J|ZLr{`qfrR{hmV%Aten|apIH;<$lHv&=+_N z(5jyf8r`b`E@ap@co;z<`lVu>z$TZ6>ju&UvIccA_To0ER~wsE$Xkg@8^MgFXev%@ zrznLiur3)|Z=gpJhC>s366F1LvT5-K&*;pVe5~qf9LlE-+?!UElX1~_H5=lO$Hu^lHaf*? z7er_DkI$_Q3Q`vjd2-?~uWjrPV4+Y|fg5VR!ft^P_G|`4v0Mh|g}Ou2p%5ABvE5&> zV3Pzye*PN$9uJ^v+|IV%?%6R9w!!LEDW zL$9i~t#M^gpK!}X@zXyC%iI*rIz;q1u{-i<9M?rmYFY7JfjP(*)2|5#FZXLgD_Dtt zTa|b-vuec1x<1OVLTob*y|4Nce@nH+=kH)e^l6S0i34lbN#>v+RtWHGBk)ZlsXWf{ zLJz#yNNl#@LflCFUE@80qwAdrh>KOw)+DO>Ipp6%zJ#bOWG{$?U(jqLhzl6>vX+#- z9#s7XB`+%bx)v-iN~r7+Gy@MYrG_AKgEjE)=Ni#E3uxU-G=e@yZPW2oaYMd5o z+7xQO5Nf$#kk-u|`zzGWILrYV=9m`d+;kh3lK0kdAk2e4{IztrmvOicQuf_Twzo~; z0Sn>pF2hmu5oK@)m_H&684-~d5!DnCvk>twU}ESa6Qm=Pj3ZN!k!fj>8BLK{3z0dO zk-79y`O;AZ#!*GcsFJj(vZkntg{Z2_C>(ust#ov~adZPRx+yKXr75~?A^P)WG@d@D zOFE{svHaVKf9r}Xjj5#S5s_@Bu5%e46GrudtM_`jF&00s=fzcOcnA#%c) zu*Z`$W5$peiYp9^;RBV-2Wpes55LkdWDM~ZxDU*WA6TzGurnlZ$|P``B=Gts@TVsT zHYW%zCWu@mh%zLK%OpygB;F@ZG{GdwHYdt2CO*7MRAfj}mPt}INmBPs(o9d%YEII* zBGSD|LNFxj$t3HWBpdoB8>c6mHYb}eCR<)5TQQ{A$fVerq&WDdIHsrQHotr1ndp9% z;=z#mS|-)YB-O_^6?v6H+ngG(nELK26_uVEER%*dNelB$i%3rsb7F~FOpCip!!V>L z$fVyRPD}AkPfJhFc$}WKn4WW$p39KIGMJWcl2PQFQIeh!TAE(5m{E0=K~S1eE0bAo zl3A4gp(#DHr8%>0G4u1)Z6=-}t4k)U$0V!IH)|k0Yp6MEWHD>(DrO$S)U~kxSB&OSY6tah(fe%%hUcqc+W>^~d6-Bn-&`S6Xknh8Qd+ieAeWdzlvd_!T2Fiv3!O1D1;4T^Flg7dgU< zQKltfekBnZB~dLUF-s+J*CmmHCF)8g7}L@eztXgf(u|hUtfkT%)4~K(>ZI$^0@Jc0 zzp|2yva*)4ilu@)Eo$siS*>h&y=i%aUwKnTxx;mt3cS4Kx*X3~(Is2aV_H!>RIa>P z-q%twvQ#m4T`|E}`8=vZDX(J6uW})ya;c?q<+^-^gnDkNa!a;q$FyqKugdqj(k-&; zXsPPty6Tj%`f*v+LwMD>U-e~1^>s`2f>yPHb+wNc1dA{Nnc;~1anMX0Nh^-Tg~%%x z>n#eQlDn;;Hmjlauc6PZVQj5ocByGfz`~bnIOS@&&1$)R*W6^(3bxjI9aPH$ab8*w zYb!{&GsOB7_aLe+ysS=Ys4nK9PKc>qS+3svpjHl8_r{q>GP=YEMSef3HiG1nxZtN) ztxu}{pNum$_ayzufTdcjNot4bt#NSJTFSEN~{;GosTu+>|z)iJuY&%f=ctW~nJ)sdvl@1PCI-sYv%mMqvl@GshuRt(AA8SyWg zh%TP^S827{F@m2L{Xg$5mo4ADv+7c`u8rlIZ{&K=VUgQpDB6Lr0=p>|Z2rc&oOS@n z@Y+leATvb!Fy9l`fkZ%nD|iQyND zwRZiBwh|cx+_3*dTW$}*$EFZ&1feV=5TS$am>8lLxuAQw-JvV_YAaa2XOMr|-~R4tq#F8HJMwR^ zhDZ6vuASbB5ElRumqwS11KOH>D6h@IiVXXaY=q4PlGjG`nr0Y@819qri9PK57i}+| z0Urg7a$8}oMM1j$*f&=8GK>%wk8WnGQ2^(F$8~Y$QNAM#c+Ud_-{^I5=)RuJSB3$9 z=&*4DXoO9{G`T>!0BrUMwwnxFF_QlZ0Dgwghm7VUJisclx5L6wy?W8X2uy=|1d%xN zz&+CmKT_~&n*((vc2|3p_fO+nD~O;QL;?m>!%a;vV^3E=GS{O@Tcg|Zguh)N&#gw! z0>_5Hzvov0Zi4Cfq~ggd=~R==7eyZg{7v+sAr`Ei+gp7&e=*r3UIv6? zh(t07;G$qP#+e?`8C%ntE@q&LBAXcuD2rbR`jh{=&0+mdzJ|pNVLO%&IDL0@*0kNB zz^x%GTQ!HgAUCkDay7qr)R8@QO;C6w?RdhpVm-EX$(9`a3h?j4$TBppz4kcY47DP? z0_=;0sGN33#zHJMHWY=(JGECvSOke!fHY(I+7qja77PAbs~4UF2|8@`-K$qC`C_;Q zBy3GYc8hTg`=t_Vb5rw8I2eH+{`O}A?uNx^&)NS07YX;>u=H67eR{<*bs^jfFqH$rHL0Bf)SNn;__|043n?HH>P+Y=a&GZ#cIO*l6)sg=F8Bs>kr!G)K` zm`_)D|F$VEjlt_3ehH1o9_QP;H%PAKpEB=CyD#P(p(rZWM5Bmob=Z_x*K2ilB%F7I zv>@iO>lV44+PWigYj_~Vmr*jX-3I=y?!4jJK~eOVA`2i5Y{~)#q(jvPu(T~7Prwyt zJwN0BjOJ?ygR=a){c^@CNeiT5Ktt3-kHVgC8ITdM_G~p@IB;1mV_Rlvj;wvH1q9YM z+gEwlAYQg_Hah(4$w=ql-ow8w1guMMj_0Z#eoG`hT(nvhX*qg?b7*G8-oF7dy_=TG z7?i)sf1vZlg=n>#ebpvvYfk8vfDd*Ce>Lhve(aL6Dy(>%b@%X5*|GG{F=lNt^Y~bq zbuP{Ftk++u*eE5FgPoCxz|V&kkbmwxi#j=d7F{PuE%kmbcu` zB`L8I)gv~`=dORw?bzDB>8_uRHQ)dE%f;mzbM?TqE}KFJ(SR_4_=Gc;Xfys( z;NC9DpDV}MrGu&^@!RWy>f2u}Z1n-_KXTcXfM8qu4cTXiwfF-ful*7w+IW}>6@za2XJIwOC{ zrC%q%_{sfh|Do)9@f!HNy2lIveTxi1dLoRhBcrU*2!rUzHz9GDNN;q=8-znzh#kTr zIV(Fmq2T`)+J2IPYozhP-3qMW_s|;fCumPNX91iU{RYlg?Lz}EO1lTwYPazFA86}m z(etC&>fhX{U1AOAMjolsOXIppId-6t?DR?@B&>E`n{RHDJ!q4n>BYpmZFy{ygzZGU z50D2FRZ*n~pX;PalC%c}WcDKqj=Q~5iLRC_18#Q&Qtp>m=s8uFOkyfwBetLoF3mHOx0cx6|LHc7$?Kz^2k(D{ z$fAHx6=iDsyIb^E{M?EwG^5#E6%Zh}m1}D{+a5@~`{FOPc#-gyJ~KQae{=0Vd1xDE zXWKMY#x4%OmNIyh8!BxW2rsq{tA$Fu>#Th8QRMc!Qv0_%L-7ZVuWzyYzerF7w2m7= zP~MUa(J||(Fp@1*M5j-|2D>i!1sSI*`jnWP(FvXQT-BYFTtA2sKVq~V^?k4ZV>F=% zls)KrvS}k$dbeadPC6qfOwb2?w#f4EbJv}_Zm2U`QNdcxb+_SmbpaRNr^gV|0F8N`-@yICkA!M$9x zpiy!5`9@?`j_-M7?nk)>lf8l@L+Aa%2IeS!`6$+x>dw$5F|E5FS&W?pi`UWwiz*rp z4$3Q?TT11!88tNM6Yk&Fp!dR0-3{(&p%S`{>+W(ssu|$@U06|9`@G!K&8uL#e#X${ z_|t-oOYeuu1$aN>M%dl|6K%^ynmthmQH_UvcfYk=j4fByUhbBE`+P07>>7PTBy@@g z(Yc;>;x3nu>YxvfPP<_mLT7O#<3p!C^e-#U`k3El>Gx(@9-R$vr@EdGvV_Ex4DdG| zoezul2b2!^)CzqcmHt}seGEJ$Uo*rmGtTy!k1{JG@Xc>HtOqhI*fir2i`uT|vN%3o^%zm9*c zqX_?2n=>f8U2aD3>0Z!<^c!5>dc@xqx!OrGddIdM+kfZEJ=5&u>T7Pe2+eMK$8@u8 zarD1vThW+9x?k9sC~I5S>i+w&|NK zzDm0oGkW#s2eZlx*&o54@qd18gx|ycOqa0C`n6SD{r5WcKtu>&->&4c#5E)I=KX|Bozs^z6FrRDe(t)NOGxxvCcJ77+$ zq`M8Gu&NsyC?PzEw)T|7LKp)t-h zeK1nN3NZ{%X+DUMc!!E*L5^w4BdJ_piOq#L)&g-(--WOTO{qlbzDw{f@dAq*G3Y#3 z=Ejs`p-jn@Xw9TZ||OMu9rQqG#UD&zY& zz0kjv8=t_U%$$NE3=!gxvidiMsh$!9I(tLIz63p2a4;~^l)?diI6HR2AniqSHGlP4m+M{mi>#A}(E|N2d3M0jwgL4n;gortr zyVJdqIniYJY`d6v(-BccJYNo(a|L86`tsGM;OU$QEqDtAQ5~Hw(`jgw!x|J zOE{wza}enU_%o7zKwoU~@$m`$klJ)LA*sx~t!(oh!s9IzL~O#4#EZRFsR+s}r*~+0 zek%`p)|uV9(hEK0RnF`=h#c3B_}Hg6L3r#OM$8#3@hF9Tv_~c3IL0U&XcBMJhn5ym zRFkyRnyZM{ zABrWKTgs}A$`!nzG?ga~nY%61s?WcJgPNFbqs~WX<4{~*D~>2A^9YH@3R*=DUOLK3 z6G$2VQWX3?qO)y1c}V^mWS%~3b(@rM#;YpAQZ_^)RGO0HE1n!E%<)3`GCSvFPuSgs z#>B>Eqa^16hauK8j42C78ILluRbY%9&Yvql6uQ!$dseDT*E$k4wcQapdN3|CWP6(} znXH8#3zEGMtdo3|0ueh7rOY2exnCuyIeOLTTl2>9`)HZXWTj!b;d`%pS^wUv2Y6c* zzWqV=zFgjSNpZ1h`$JNiDY5w=z7U!Mcv|qZy@HbVD=9_B6^?FerljOkZTH{lByqb- z1gp=NZiRgw{Vsgz{BMhr)ji64ruQHG`#xge6sT$S{;bgP<}P9_GNdZ?X1@6K?PYen z)7ByLdEZN?uch1Ickn$gkcH{N>y7od$Ia)g25RL`61!9FmgOYggEFQ8Ny#2p&` znm$lhJxuc@x-d!NA(GON-v@4`wxSUhV#SHHiqHysx03sA^8$&+c_%I0x=eo!2c3m^ zN{4Ii`Or3?sTPQb)SV%rt`GyD55Eb>8f73I5-J@En)JHVe~5sDQAs04L6JZ>7>^9i zMxa~={7z}D#J=d>I}I$uzf*n?Jp@IWHwHgWGth**)lQ5U#YJQ{g1pmWM`@f_93xeN zA}jIl#C`O#!!1iZ-dy&@6kbMN_oGV@oIMMkNYOYNjZns>h~)vtuDzM+y07(_A>^G*2uY*s zWuqq9q?IS0qg)*}|2T1N!FNR;xTl(JIe|3Msh928D&ht*Tvp`#Q|kb zDyJ|{{W5Dn@ebZd3YArY1C_S0m0v%7uUcXNDE`0^=N(0PF-vTIMG!qCX=w70@;Wql z)Bm$5;x~h0T$$QH>W3^p(rLfSrynXPWHUoID_US+YnZi^pweOniO(tg`ZAWgtg_al z>ZFBwWl44TTJ?s9Y$JnIg}!oXC@tVuK-5CjnJoKXS=>9ZYP5cJm{)ZtruvSCQ(BAS zY1ylB+~Y1s+6Q|+d#2B%oduT2IeHDdi;c-KV}%vASB zs!np4T6nqeUNn9E+q!3YwGR(T6`AVWFt>G?TZNIGIMvpAolG%ut!mgzy`J1BvG4W7 zOrP{KKbgvj8y?mgw|=r>YJg9FlKuV3#=pT)PSno7UM^GK>34%i`8}6te$B%MPya^b zq2L=AK5u_|t;|LgQxj=zqwQ4VG*?qZW|OCKlderu=viabzi3O!93v;?cG#Gh*_6S;nC4U$Y&^Y#VBA`wz7J-8RA0J|)*aW7hs3Xq(x-K#*|An@su6=Rc z{|jxI@$RlY-v0}2XZ`y#w)_7F+A?=9`}_~IeM2^I3K)$0Z)mI2l~8f}DD}Uk?Mhd= zkle@rmbNQ>tN#BZZI79Tz&k_#Eo~=BhudxcN7{-E_kR8_Y19}gjGg}bZ-V(a zSZMrb*7$YX_*wM$&CNJ~Wn%eooWNp&C~#s(dji@%LAE+UOgcirGD)Q{sX#VK9XLrJ zJ4uo~$-FuVY@cLhnc`F!XIGfw4V>CGpW<(y60#T-T%8hSneM)s61SMX|72J)a9Xx~ zx-e^6{?D|c#o$Ah+Zk1hnNax|_3Rlfi+;`a8QniKjw>?=g<1XBUOkIhkR|bJT5f?kw}K$$LxX=Y0a_S;_v<)%k$caqrc6 z6wAV|oB3dig|OHTzrcm4_JxVeg_u7J7`L`Kmc=BC#cy}JQ?eH`0*BGI!0XWsGI@G5PA0#j4_y)w%4|2eGS5tE-};t7|N4eB^6e7Hh0e z)^@Yk=wjCnR&UoRM%PYQ)*1+_? zY%IrYkgRP?jcib`ZVr)cQdw^Ht}N2#Y<`Q~WL(?)KDx=uy7h~Ei_>!J_meH&oUPl~ zEy1-d!m%w8)@=yIwz%assqXguoNdauZP~T$J7e1qS$F8%CzUOChIKa8b9OvqcC^-Z zoJMwZS--54?dVy4!IFJ3%=uyv^Tl-Si_XXwOV(XgvRxa?-A6jR4mrCIVs@R^b`N#F zxU+us8rgkq`8AE~t543?XR%-X*1p<~e0|5dXGp#mY`OPT=WAHb9*@pm)Y_g(%w8Pp z{vXo)1k3%1(c8V0oP7zM{fxE!>X`i;)&u^L{d~)V9qognoP+h~gR-@Q`Qd{q*25{% z!&=M3QSHNqoWp_W!8lt{yvHV?C*(IN7p1Y1BR0%{gg}J2_Z8nRvH&!uoCb@5#C4w{6{T zKXbl)jr(@J_U&-&+h5jGKy@9#i&Ns!6Qcj8mHYl{GE4M0{v?z<0xE*^Vkj!oL;*#b zh;;!mgJqDeqmBb8$T$cALI^EDzzB$R5G+6_2?-&z5KxMMf}(T?Md^@Gr6%{8eeKMh z-Mjbxa`)%+7o6{TpHCL|34trZ=2n<;ckNri4^Sjr7nVg9q_Yxu3EaR z-ru{I#Bn~?{Yki|;J>83)$zNYo+Q{Jyy>Q)_4%*1`8Y-yW z7#-Xw<_wbeZT6XM(!2)g!JD5lHY+&;)$Gld?M;@~K>f+BdgrZ1PJeUOR%Ojrn^*q_ z{#L2d_9sr?XV>k5pzR*lzP{S++`;W3e(&%;UYZ&2YgX@gFz;ywpEq6GC&uPI_`u_~ z_bi^|M?3RZy?WNN_~qNYt=-`NSw~29&5X=`{=d}`%5q;btN*o*@QU@a^W#6&5pwds zjQypK5H+5;y!dAwVQBV&1o&qiK~K5v(#}8Y2*=IZXh;62Bg9{CvOZ}2M;$@vWubxo zKk5jFipSNnO#cpT^FF$Mi~GlB8;(5}FH%;(|3b2-F6M6FNnIts=Mk#fJk+SSIt!dz z>GuxOVumX-tjmj?%X}sV2V2WaT(RGS);?IuL79QTnZQQ&#d5 zp@KTmo_+g4l3XQisx$9VY!}tIY^IxhvE;r|6@9KB|MS?;`>O9AgUnFTeado1zmK-v zhQ-wtOB41fr?YHp(5R^{st4Ov!sI(=_>KOuF0*=l>3egoYddrM_{#iPYgUPv`S#}8 z()ZNDTK!}-55>~PJr7V4O?$utps+GkebNnQZG&r)(69CmlMC1W;cW1i-X@isnvgvV z4d((DVF?y6RD!}N8r&ym7cxFZjhdG_{r;Gr8nO2aBAN92yd z4&hxe063?8@t8jxu)HFNRQC|n19p21!y3f^K@{S#xyY0g(S1W|6tGY7Q{AsQio!?B zf3_TtNF=7bK;BXB{VDA|<`0H3G2rRn6j4EE0iP4X|QdBz?Xzlx7W9uNhk>KbLNo8ckHm)VomT zC#z>si2l3>1_a9c9HN{x7Quq*$}p?|t~tFFgbC`+0p`Vp2-$hfoDyY~$J+RJ8frKM z9k`NRpkm~X%5PH*-12GD?@p&7jb=>2cDa2K4|+WB*%;6@u33-go!LzUR5hbf4FlHV za!6&EHtGUvPfH#=AC?Si$^wd~?$tjLt2y@K{y`jK_iAxZNIhECLSIGT48Rx)<6blX zf+dxV04QeQd*i39%%tADaVNL3J$D^0;9E+qb6F<$Zy3J-{0h$tm6Gt0!t+dkmEyr@ z7T|x25mTyCp&hmh2fcCT&Dmkv-WBr^OY zKs@NZv6{0z9uaUv{Ooi=Pj%{~e*L=+F@QXZjlg{Wmt>GDBWApH(c2q>JPD-7%X-~a`BG>BF+Z$)!6uybR z^^2*L=kr}CZzrJSG#84v4l%w<3kkRzOxM%NYKs3y#1U1Fe-n%{KAQ1pJyg9?4#c+I`+rj&$S+$W`;Am-WU7I zjSS48AJGT5i~X)E3@xNSqJ1+fLF=attyKP4Iu}$DD5=0+?~@^~)RbVBQu*xd4VmKY z?GkLe{4h+RCr!wljB8IG7BaE_Z6}5trXxMF!;x`Oib;+*kvOt5V9i{KN5&6Ij_yfY zGu>}aiLOf+m8vo_(ZNs%&n3s?`i)K)GAVK431do|e#gyt6yi^kUsV+349}XE#-B>~ zy5D5|=tWFvqKf3VLyqgkoi(LN-Iu@V1gz^i^GcInMh_lIt3cg0r=~_pjvH2;(7K1A zrazaMIMMHa=r<-cGb(<5RaODPh#?vLgoH&b6QSS!uVMe`PO$qv==d*lYeuR zZ+pt5y?U4a?P7p@cnXh}_a=VwhcvX-bMvx-sr2cqRr2jcn6kok#hL5;e)*0vW?Au$ zj2Y)m`HwZcGP2y@)D4Axa-BK7R5D@qwuz(aOAMVBwP)@ZM@Pf=Oger0hq-$Jjt0Fv zI^(3m)PuAD(-HIX%8wuCeyiH7Y`~OPuY8>M?@yChVU{zi;^%`l`_;F3<*dg~I3Ws7 zmEX)6^%XyG!}(PsyV%Fys$n=$mjj2SYuBpuix+gxgav6jo2 zxu?{?KHcDT>QA~$w>zuHo0um)L>4V&@GB?G*@hjVn3?C2L0#ugZjcg+m#^yAOufb! ze?G6Xk{?_-eT{9_Zo4F1-jk7VFvEq{s5=J3kSFqBP9#Y96uggLd@h-A!A@uPO)gJzJb$i^b6i#E({U8IE_ywm6 zx@yXXz7h^K=&?WM7rJa1YCQSNiJs7~l~4=3tEo{~(t)sZj2|x~hizRAvzfeWy%zRR zD%=iqv$YS8I2UfuxCUWcLEmtf$)BBNBans>xA1Omei6QRBHU%IJbNOM?=;&PbQ|6frhMY@uL`qYyf0! zY27hQzW~VERvst3?FoRaE$bPf#VD|?hfiqyPUuJugs^SfkFi~Afj!BwpUPtg?1La| z+anV<$_Rq6?a-sRNm&epZNGNM&HG^>Y&(7Y@p2Ca!nWLJk2j2hA#A(){V|Xd3}M@? zABn>2!C(pz&LE0i$3oZ^lzk#mf!%xk$u3zh*?0aj6;Jl|JW=)!k(Z0lLBy-~hCtR9 zX%w${A_lUy^tE`slo-g`R@)~WTaPhHNvLNem|iD9*0xzT(XxU7S=$eOi5KKzA#3}& zC(+hF7P7W|Mo+Kw#zNM1IQgl=i8#pGj;}p+ONoQ5?W}#$o%J}#+AcDZJg+~7tnHfY zGoOmbkhSIc@t^t05z!UT1R-qePsGY4i$K`6mk427@s#A~6Hf@e$W{CMO1#D9Ud8~NGt1v$nA{|s#liZ=?#@}$2)+saB(bsvfO z7iimvE^JOMZ22A9^8X=iKN%N&b|~ulQ`+_w4Q&(+%NPGCZ6{NUrz`(k+AbQGEIX8} z{vmC*`k-h15EHcuGw)G<`PmtoYXB`IjfQb#D5jNfk;~)U8H9dXL^fj`s37z) z68q`#0lS}(@}62(;H!40q~)dcGcriKvtsg2lYlE&gg+K>+d@zO5mU_$`ZM63=K zuhHVx3|GOmk)R71ZtJ$=Wk8;#C_EC2Kn^piJSbvz!U|fT6B4*Y1htUWSS=M5peh23 zkPfH`*Mm!$2uHXHz%2xci?wq70-q-QP9y_ zDH3omo#L*|(k&FeVp1JJhQZxnQn^AxM1k;Z08SK?ay%lT4XB_%8&eS7))YS6ge^n} z+XzLm8f3-j#wKsk$Y!Nh07r%;+B8X#8gjN8aoz$_X|=wlWqvlG9g5=H0XiT7FdM-U ztqXHw*?9_vk)emW7Pxq8wBEa?o^{U@X~vGNXMWX}6*s|LQ;<3PemEU`O8}E*8;sJ+Os!dHBH|_%F0Tbn zYXeIG6fvLLMG``AuHKI&C{oiQ<@qKYRVjf496G>QFIjPvka)8`I3Nhy9TaQYQ7cOdB*jDF;2@;s980I=FMVBMen3MQS9V-YV;X zr_!7E6n^wWz0p8|OvTRx?`B!i_j^6tmI?1HXJGjzpsgE)5-2RA1)f4x;VcAZoLbgn z5Vqtl&pAQ;B5IK-c!Ry|i@;l>50IMCog58Q218X@Ufc4?`u_JwTsMPNTAWPb{?DwDQokk0^>v7KlxPz_y_H+yXqx*ynli54GFAhi`=1nWd$ zx@16`I8z=ewZDk3mlCaCRAQ~n_0yd}hR%*kvpiE$gFmZX${O%2LH>#$jYSfN zpOA-fE!598L!Fj_b%b77QXAi<^=k%YJqG-+vzxmOo^zq>#lpo<6bTm6&}krCyp}S{ z4g~~Yw%}D=;K$5w-!G~PI{~}7GLLj#?%9_*Py z#I3lIjhW8S>`(5%h?FB>px1#80?l^TZ3Pam7j|CM24gW4qPb4o5X~@?B3lFc@5-}s z1k{FMfN~|0G!Q{V_@IO>i$qFoXG*-MgQuq>L}xhJGnkf{@R^x;U^Yl|7GqsFJLfhV z7(E+Anw@3M229UB5}lht&Y`X5d_Cr-v2*?fbKb3UQ^Rw9BJ*Ba^OF|ykKE^fiJ70s zp7(8;zdJKO25^4Utn@r@Zhqs+y@0*B(Ec; zs9e&uT%132JaECPbx^)!vS(o7j0r{c~n=fd3gC9i0-Lp9XUv8ylO} zwP)HK!MePmXf)ao{lb_ZXD$&fDJgkRI@Ve)-cB)5RaNzY+Dk``6c=o&j*gDIPP&)g zYahcbBO@bU?Xm!|X@q>*2}dR6|4WSU8?%p9=DCfDY?&CAQP%_lb$ymKfdHx-V!63H#Z(UOu9 z?=rGqIk~fZqN`#uppsluQxj54?x~%LXe2i^H4U`P$F-3YJIL=kKX!L_k9L1b?;-c} z4&?Na^ZLmX{mVl`L&Ue_nYUlw4!@s!w^lwvem62!Ge-U}wlO|FzBswnIz#?EvpqLA z*Y$zCwy?YK@za;ZZ*M=7KYw1{T-hK0LZ00qZ*LrIZf@>we&63dS=u2lee{sbB=l(Yn02moSN5!Sv zK2NNR5VmWr8T-B+Tvqb-$lJ=Ll7_s{vy{Tqwr_1Z6mq9r4E5Xc;O9@QiUHY8@jB*5vn&7p3Q^Ay8*e`7u<@C5LJ}3$h)$H zjhE;KQ`UG5HW3Uhiv_eeQFe8A>y^aU-KAtK`-Kz841Qxe4dj&)W2S9YiKdh^8~&PT zQdU`}hj`p!$|@@8fTfefofpF+VMC>_9pdjhQ|X}tU0->!dF<*SM5Whsp86s;pl&RX zk!$D@%eR@*ffp`j4+06p+=OWTTTJvNyZG#E;YoldMyT!95KmU$LHz;cvTGZ+jvV&COq4G3|wyB1mEB_kHmoN*=0Q_M3QkgNpzJ7 zKQRH$$c<7+BT5@0BAODJ0t1@8r4&hn)oXff5is#c-I;n6OS$;a2gppL7M)VMDja#U zq&spEPcQ`!qsxwO_Cn~;QJ-X2QTUg)SY$`837U|TqL7qA;^##);E%pK^Ic-mT7HHO zU%S9`8$@VjE8PZMZAC8aQgXh|{Gid5R9k!5fe_uZ@dpQ?taftqKE}&BK%QQt|U02#c#v3cyYU~KX@;0rYtmYttFZ^qVsAXBqx*C% zRdl-1O$itn8YGgB=pquhfSr>Wat__hyy={E$Iq>-VXvPW}q&oRk3EwSwmtl zPIyp_Oc_R-+HD{(2v1f8J||_Q2i#*OacG9ym;fY^yMV&Q_qUbPF+o|t$c4GW@6LF* zS%Y1w2gb$u3bhaphDMfg(tA)i-8dX^!w&4LY2o3iY5i!w;#!?zzGM`oC+ z6H;2!O73A8h)Lm0YCNJF7%tF}$%bs3rFCoq!p&g_P;P{`lKf3ZDSm-$VVLz1zz5Qa zM83B&q#)x1k^Z!dj*LV~u3ou1lJ}HPOJvIFbQ#|xK!kjPEKnxc{0>E@1J@&gA?{<7 z*JrX1q_czIe$f@6I5piYv>1+tHj_?oI)_bIn=)YZhgCT%j-mu-7y-xTpsK%2J71sI~2t`tSDsiH4x){j%_YoetzPEha?{ zA}xHhK2=73Ipq(VR0OA?o3x7Mgo5!kx+QZvtd$tC-mEF**4>kDW~_E}Z?ehC zHQ#(AwE6NL1$3@TiN=_Sbz3*zA_@EOagWm8#dLV~ByZthdt z{I?^W$dpt={Y#T?bh2?%MqWE_Sg@3kOVMHI$@aU`stVvKI4 zuW4UaXVfjzI+oE2>46~TP?N6rAHehzHC z^U#n6@!V^$_RJl45Q3EB_2_gA9ecr$hs1T15Bf`dk>~xpThM(lR=6*r71X{%^< z`OXn41h_k=JaI4iUVp0bxy#)LZ*PE|Uf%yCkutyxW#WWPHM;jD^Zon=HECIpTTP)5 zvUEM-4tZLN>4aU!(`T{Zo=|RFNV3kIib9-dpIbLozX-L2L3|+z7e5#GvcH6jbsvA^ zhw>^FH9^;_0EREUv?}_I>CgSANh2#&%+8G^+E+xSDR=?{;&db0p8POhvhQ=V`5(}O z$ov4~D_%dP5)H=}e}1YoxLNF5y-AzWC;eW31dIFJ|*0HKX*L@>jFFj z#+6b&SFpyrKBJs5K)B&{x7)pWA@3GiX5LdG^Ye3tSS*+Gq|BZN5`ew?n_QUX0J z@zm~!gPBn@YTKPUskEg7&?x|6H<&SiU(i<{vfFoZ+@ zodWc5&;TS<9qzL~U@StE#+p#v!Z^Fb9*I5%${{K4q(5{iu@zy83tf;`@uw8~4Ulw5 zh|x8;cnA+AJ(YC@iIvCYbtFT6P(*j!TQ`e)F`|X{HPLATgFy+Hhh`SDfSmTwt`5In z=j!0}WDSt;x@^kLA6C%tyUI`CmBOC%t|=mBz*&Xl8*@<-&H)FDso#Mxz2i8ICcve3 z^4*&+AVm~8nL2k#_LuAmcYTeHUO(Zumcn@}_$Jv5sDe{{6?mh@()lbB%EE!xcmhAQ zNHUqjG+ev>HwYgWmFo5+&HE?C1V5hVS;lv1*pnC>J{@fD8)&?1C_$xW4+jT0gA^j+ z5yuo>{LsJ904tNb+?X3oew0?znI0YRr@oNLEszxw_A27F;2jF=M=`8J0QS`#bPB|r zO~H9OlT9Ax2*_Sha6~f!mDAxKB%SUdxK{%>JOd!G5%4OG!agpeB0Hz5GpFWLPTfUL z14nL?Qf|xr+_q=A9oe~Eow?nga(gdwNgR0tN_j)~^M;@0jb!JIcIJ(L%A35%o94)$ zRmz{gpTF=de=$3MsWX51Q~v5j{u)QY23e_K>wdxZvx431g1ydygHHuV7X`;0g+G)E zPwyB0dRBOzU3l49`1e!c)kPryK>#TeAXWruFaefBpzb2jE)nQ232;OalX4M@RS{co z5qnM%qN|8&sfg#Y2#Fw~m5KaTM8RO9a1K$lizvQCl)NNLA&PG(7t2}|%Lf-LBG|Gz z08|8k`eiW&QG!)2(aZtRNP#-CiuIM*^ilu}zCa`rWTsqdZdGa#TzZ!pbnO^G{*( z8LwCV`^{MFQB_mLQW4Bly;Rj?#ZvFV)TmtDLCw-?#nhft-P^_dMxUwYvU!Tc`xKU~yIBWfd#GfntFC0#X(qcxgo{}BqHhEkdcruN&z+D}$>k~1|Rl(t42 zU@0?V%cJf%hiO+7+Q&zs6j-lhLGcz1qDieexvWQq*ZtiDF=$ePqyYae>i};WfNyG{ z>xy#6@L)K)a^n$oU^lpC4gkUl5GW7|_XV-0QmBWtsH=eMQz^7C`aCnux*;u?F%}ja zPFHpbb@C(!0VK17!bQJ$S4>7{7oliQ6q~~OOOiuz7!a- z29z;r0yCPLuTg4YK=mlty96K#`S7(TR{amcd>Vux040#!&ZUqB1CW|YCu2zuJDJpz zQQZX5?1s#|S*(T#k-8OelrAb@Zz)PODRB3jULimWZokvg03P`nF8{gpLvUj$&9&Dm zlXy#YXeTo-(e-J8^pXy~OE zm!7ijRriF2VL5Es*W*AYh~U3nK`Q?2jh3BQS7=gWj;ULHg${4pMOa zlrHssASkt;ozyS2+&OpBDZAenMdMeZLh?H4eq_)N>hFpm_4|pz{Au38{6M!tKqi18 zQ}JQYNgKkXlQwY>bkeV7&=!H~Vq+buOn{52!X*F$jCi1*CrpRT33_%w8Z-bs`P1*= z1q%YakDea7;|Wu+>2$9ij(QHNXB=i)9)eGUnZ#RIklp^rBnxqFORg?}_-)&Rw;qiH zUI)PB{w|}MF7OG-AQ7&Q98eDdVGKLL>&>gxBgtMcUavR)Hlq~%!@jC;H5Jb531Ia2 zJBszePSqC5B9ge*8>ni#-=8+FKmF_tJc@vc*R;SmFPKy!i4g*OmfeAq1D-^7AAE*zXWo((1u!S?Iau|`jM?J=epL}lqzC1m)Jj9j%2AbM; zue%RC)Ayz6tkP7V7_S>;XXd4KZO{2UP47D?`zixQt26kAnQTcSOrj5aboT^^}cTg)DZ zw-~|I4`#h=9)hJmBznQm)!?q;@A9PEoyA%hykUN_ zNl#a_8pJ(?Lf3FEItgqp1*staX*4nfMknv~u8bTlZ!#Of@2ItCrSv=0ZZYD!5XVhC z(+f28Dt0i4naN&R*k0KYWY-*IS@+eDZVB8t`B3FE*WV#YZ#bjCcqPqHnD3zFA!W}> zKhOBraq$I~hBy$74!6T-jO)JYyYLsVn@Si?kSi>nVcr;IsYJe{oy~n;& zuTy%7@$C4(EFEgYZUER)z=WlvBfBn|?~E+=Ck`Pe+^HvsmyKLgj6CEMnuIDsuqof| zA7s(WbStLUIhCS)^D*R{3jW55B*f3ZsvwV&a-rLdVbm27@jqK?ppN=wUcslj^<_TP z<&Q;ATb4`c9e}*JQgiz=i%THe8o+k%^lx{untq7`@2{J|CH|vlt}lMM75?(*`{niJ zmk;@uFYoWi8ovYVe+Rz!9aQ)`xbOG#FTcaczj3_h5gO-s`}622qFerXeBXKEm-A%u zc?$1En#M)C{YB=Bi>$(noW6^^FBb*m3j*&YQRA}2{<7@FWkum-Ro`XJm&-cxWzCE8 zCXGKW_J7)5{OKtC)7AH<`^%qR@*fiK-vN!kzPzw-LV-VqLTwr(G!0TDK$eXE+L%(B z`htah|B1sPcF4LT??wESkUb*)%N0pk+OnT?x?9CAKei!+g#(`=-F8!J}MRN+{QC#s~<#sN@rR0jv34(-J*YS$3++4lP%N zF1F~CR@H2hn01ii%%F%x1Ir2lvmWJ$*PTLgAv+BQPqXd5oCt?&gl`3eOJioH3Ly+uOi{~UXP!orD#P|L!z%@kq)bX)osIG*atX> zOpkJ$G!(r-dupo7XB7W7@-LEpDiujuD@A4SF`_l2r5J0BUoL?ucv5V_^#oHDb?I4R zvzQ`G?8yat3FmJzTAnKjsaQB^uZkVje@!v@1W!nXAn;_|i#FEUpbP;XQdW)MCv` z$h~kLckG(l8Z07sevGY*=dnV3-tEZuTBt_+PsH~JaZ18ATn&MI?6X02(W%wTO#%K9 zG0yw9;JeG&HZVqxQhXG<;eDo^pBhG*5L&RTcK)#J+Y7=Do?u~#F@P6Gahp!htfHo{;W zUs%5d!OhhtjB2tYMeb4oExOXuPMut37zT)P4*(hw$mIM5^86dGb&1?)sg?{-G!dcUXU6yMEv2}4N zX07YV(IhYxb|m#0YzBS@fUf@K0JFT`AL~7f$jVb`Q zPI;-ukJEV^BR|WQpbX<@E0QV+9!o-4$ICRfhR1xlabJr6;v%KcKPAkWiuA92m1)kb zu$&B!^_6NaiXShES~H-hL80qEoid@mg3Ig}MfJ%Em8m7LlWG}>ko&`_x&%f|BIWwU znC5`AM);PXJ>R}!xhM-bKU*x>uA*|1R;)UOWeX%-Q9X%u*8Z#M_}y5H>)>R*`OV#O zPwP)}d4xTrd*yE0mIF*h*1edKBekgJp}Y@vOU|tE_26@-w{M$vlKDj$+zG`>`XyuJH(7yHfU#%+UdwuntQ?X-H-eTr)rUwQ3HNIw^Ya8WJK{cw8v0sOY) zdzB}cewMO?nplU_B1Kqu1Cw*xPe7+nFC^Z;`Z6PGiE-pfvIpv$*R58^wH{5MWGJYZ zlehkH{di6u68-m!Ya?Y)`ajun=GuPY*XGvIi2*eX>8{u6v!AK!R9ng2P*k`@Tjj4; z8T8WgAjbI;yTK~qAoIhb1c9{^{%Q0*aD0+S!#QPoL9R9Fxz9zsrsDRzonzT+0@+akmHxFKAd5e`TKo#gb7L;N@9-vZyTsPGO9rtQ7wR`V)U+{ntCmSfg{mIKc0+}1DbBRC)lwD8G#Hs`gmpPr*!R z5bPUNwhwIHM!*C~k;GDRoO0Y-C)C*@Z4{ZWOV-wx@|K5j@?A2PZlb0NyT!Vl%7mUL zE!?jZZ%O&d37ql=r}~|+gQi#e$<(%}G@aN)og2j>+!-u;PgLr-mLg*{>UXT)|e zu&GlmZcpt%Ssdn@Zhcw$5%$_Hf>b@ox;-WK?;;95jHOd7xl+2DyP9yEpuS1yRTzWYQ^qS9E`8d zNGz(l$!BiYxnPO4uNdjw!L~DWbS(;>;0iyRiUa5J?jhi7x+0Vy+AUa+jmma0 z=FWKHuwN2Ov-WNZ7u73NVPm%{7Pb#m(t-^^bAd$;^tprGG7pkTCYpFDk==7{xrmyF z=(0=YSXnp5ljfHevh;Q}EVj#HTo5XObu}>nnj=V3D;C7E7;&G2mH!8Bn4NA00oO{s zRy4w9!Gss>N)zI5(`?D|ic?U@R?n?gXM3amXGvk!AWq7L**m;fnOZ9j-uGDb9qCSO zd$G*ZmRlJS!*bKh6zP!ZvdH3VO%k+gDIHv| zcp4;jI`W}%1j$@JT58<nS53(%Rni7b(0r1~q$Z{E|??i_DE=$EzKi9w2ERiRW&^ z(oCrM{P$S7KD7=^T-nvQJ;y2>ntN)kLP=Mbz)z*Oq!34nWCN%?`~fbghN;5d$aI#(WknkN0AnW@ zs2dY?GGG|F=_@I7?VBbB8R^tYXbL*lP#HR$J>fZ|n9@>y9Mr&V1_}Tje)B*4-1{oFPK5;lWsHbX`>Z*6Ucy=~rw+KeRGywA58t+g5Ju^FGRnOL!zD7BvY zXERM_JHu`JpTISzW;<_W`@zPtB1DaFaK=U z=lIOv6oL;} zB;%D7*I3G|G}t5AlGj_=!B-g%h~ANawg=qm@hayZxY?Gdt{$KSsp)t&N(3zUj2%;9 z76Lq07T%7+t1wK`Mv;W0XzxY>%u)R6zT~3g^|DyWE5`ylCuvD1Eu<4!ruV+A@uq~G zlYGH_g|JQGWG5xN`^t5j{Jl=9g7?){H+heoGzu&+^v)bS&RBX&Ep=xWW9OR%_jG)m z>BF3L)$i#QY(eXs4GJs_C!K+-&c0C_JP0S=+Hq>0qpb zne4Kf?_wo+!@AdHdBVjuP|)tkW$B-bLjkWE6wCkv-ZBL(x+k_fPC25u=%rnqjVE2g zw&ASpPR83Fbu1lb)sRkCzxS>lk|tIM+oR#GUInhBOWXfsc6=>%D4lj5s4F}uco^Hc zsRRIo(gTW2K%r2;CUy9WVP?qrPW{ME=+Vv#`MQXOoye<)VPOsAC>>b%!ovu8x2bTq zsD&LIj~m|24G^@8&vZ*Jb9<@IoFwRuYkL?_{V+2*U8NxW1-<)|oNv`x?ms+Bv#(mS zuc)aT-1F7lvxj$;!5&(qZ)Z#HclW;KTE0^n(FO&yLveZXkQDWljzG7Jvi(}+{m7C1 zzn1&ib^CAF4zQvJePR0zS9`mPj*QL*0hY=>n1``+Wd-gubzhq}XeK7tLB zKCsHIho9EwE@Qva$L&Dlb|)RT+G;lId_H&h99-EPt{#o=`h3r{KBj-v!2ak*p!HAn zMGQ>p_|n~50)MCJ?nt1{EF9~I6`#IV2WQP^r>$H2 zz#Qn4vQAy!k<><_sdwx$EwVwA9pga zCW{G~y+=*Y6{kF=MfhE4qFw(@B7XTzzh100WXAeh<%4m zoJi1F))J=~c}^IS9JM=I)Z4m|5Zyf$v9h;P<#q(OJ9<$h zoZ=4bfy~R>CmgJ|8rA!Lp!kIs)D^V8!;rU6=MMc?+)rcJ6A3}w$%Y(RsR+D7R(P;f zJ1ILZivVA{M&Ft3>dLO|E{8Rp~Mj&)~^ zH9rQCECa9p+u%5BJc2X19r&(qdsS4}$ zOfD|qRnO*#A{if9FwgiegbOHgdY(R%0X<{r>nBtrbqja(njR;EW)n24x^MrvR7W!k zbWum4!_QLV<#Er15I04l*JG~RBEneg8(R!QB%B{prHPL`F_Y8ljt{EJ2)8xb20S;a zOiV`%y8y+Uc$tgtP}v|}*@DV8DpTbyGUR4hH>AWA^h!^x%@$-^|Gj!0Lo9b`6q5D$ zZ}7|B^J>r?|Gn*@@2s8q!(n2;1Z1|-M*mIXFtI z_sFTB;<<9u?B6%NQqA%DvkJoYi7-utq(dM~3v_~ULrtfoMNm=%;{ZBH2z3~n8BXfN zffFXfW`@TVQ;smhk$H;3ZYXw`8ZA|PP@0ng^>w95T#AlELIm8-LRExm6sy4}(22 z>G`p;C{dAZawaGR6czb6=3K;v%>KRORThtr;c#GbW$XxgFj*Oz^yBPL%XNIU z(ia{)k%>r|442|^zBD03PgmS6R~LREHM)PIeND6_JoyCbg^ehnC76A^nT>sGNbm&efgI+`#P1a$_Qcu^j9Os8aOP8a&zpE$983F&+oo5b~1 z@w29gpQ3F5+&LBcT2_+Wf`agm!*g$esLYss6}tnr13Yp%5eZgh4`FvQT1)25`c2(N zqJUWd5{T_B615W&L4IMJ?MqJPP{1Ci0JRVa}iDrkaD3vU!D_h!#V-`a6MPUA%v z1bxyJYkOx}di&qDqj?{l==8G@Rw~n%0m_gPulEwSN>g>Q4V)H`3Afl+ly-cjSVvIWEYCG=>hejMuZgel%K68g%ot93o;l%@UWlZ0;#=RgD- zm(y~;aNobnKi5e>8ZKm{?_V)@^Yq|ftEGN9G^|x7(oeovHkwv``I%w%XOoc#hm@0o9W}35_utW9Z*e+}uiu&m=Z4BJxmWkJSw);nzhn2d zc_Tc)Jn5-heaszj*5hr$d2;8m+W285vMlE$=qL4$+;_K&^rVwny&*Z}EnN`ty4u6N zrj$NqPtFbFx$&83p7GK7QV569h31am-;4F6P2jWE=<7k9U*p!LDvUgwyBv7{5Usj;T<>t+kOu4V%)aghHAVnnPk zj+J#-L1!^sX?NAOaq_0XMJ1$o@?@x+<{JPBdPL34am^0 z#dUVA5e@XsNZy~Dy0Vy>en=hYr~Q*7YSA1#p_16|VD+!+CIw2kA+5E>D}cpx zqKdrWd2}n^GgQom<1L|OxV6s1Fw*)zDZd9XBJup680Y%&Z4y&kgIjjwJ-TX3+{FXh zgivwkcQ>H?I&DobkHNbV)t@G?U+K%Y#NEIxh0|%7&2*v?9-juL=9?@Uzj;Y`y=VHc zIJ;2iP%Yup`FLsh$3ji;$;U4fmcJtIc8(v``WK3=WavEYYN@Sz z(yU^3;GxjEd?*>DaJh0E5!k(@_Fa1-VRf|XY0r_ZTgaE{#q-hjUT|rBC^`Pi-yg4Y z{v1BCCDW_{>rF`zi|TNOnzd$upniMrhDg5U>o5b$DwaB_Xu2oswAY>ta$PlqtI}>{ zlH-Gh1b^L*yPY`8Qr+>^^+97oyEUs+5E6pA1A+qLB)Cif7XFGr=+R9l&g+nO%60IR zD4R{roh<3FwZ@mP64L~(b-q_QlD03g5fHsMJ_>qvBeUIbOOjV72|$Bl^G!^C z`Wc4HZ%WkAmBI!r(ZeBuW6~yUc-vO}@B0%WJSH#X)ZRlcd|vQ9SR?2deoW z57UNk3bvoWyJL5dAx5(;{PCQmCwiQB&zz)L?CCV{!@uZV?C$wE_4Ko_nS3!@qT!>< z@RUO|Ca2*b|MIK~J*4(|^SPYrcLzA= zDBx-F%6FeH-TSsl&%eJ3A=3x7QiUCFNp!DIM4u0NK0QgK%-ZC=zA|D^V4qH|fBsl{ zYG%cwV5jd;Rp%j1Fz!p>={4KhZ`J>n=I@>UtRc(p*k3mtA61`Nulc9Vned1GcHnPj z)|&6P6BpNRv(yif8|+{5&a{d44fuOs{dh+mN>Tjel4;_eYwe>i5$+nlA8=aFzTsUi zA5Lo8u-`R&2cJJ{?)!K2LgVk|b@ByGE8Q;@jjNyaY3oHi7;K$*_&2xI)6AMR0l)BU=$84~j{UT*M@aVwNvrR!6bu z6tNhiSS^ZJ?NDs4MQlE(Yk@`A!cgqdMeNBaj?5yC0u-XG2vLXPY%AjIMR5%maZRGQ z7mB!7Q9Rp4JVz+rUq!rEC?u4Kq(`IJh$tR3T9AmAMDxiL`P9+;Iz)bBw15Rszz!|w zN)+@#3tiG6Vlf~XPBG`DD_@o8H@4||uCHZ9Ji$&0UQkmQcMLs!;V(BZixnZ%K51&FWT3*L# zAr7OE%%@a9gqcJsW)>@_Z7N0Zef+ecJX|a%NCw;`6|1iD$;=k3xN@uia*{EN(ttWk zAMt5WmuT*xF+3&MUbLpw3Raz8OpssOxI{#LYu=P!Cyl7>%74>}f8Nho$A@26z2uhs zif*8@dESCe!~T4jY;Rp^)1a+{@bI)#`Md#N1gTQOEsVZ zB#y79Y^7$ad}bEbcQ%S|>$oVWm$p192APNRz(Gg?5Y9pp*#>Y=_d`-Pu1#yw5jLQS zE}#yQWv_sZ6-nOMMXZZ-?G$LxpsAcgWSa(Z<`MssM{i`J;nSM5Sw!27Qsl0H2vpE! zpj5c46wY3JHyWYv7+_8dqBJkT#FBv`lN(3^nzI29Pz2shB-z{$kkrBPV4~Qv93fnI znk+{im^M|`hPVY#q^Zm^+0mP=)cxu!#=$F8~~-?UqKQ5{FpEJ3?U) zSQb$or0I?r;10k&4SPtrSS&N^B5F+1V|i05HtsNFK*w2HVibbOUC4iOPW zB!<%qMRYC7cad=zVUnmM4&#hrWd|WshzwG0BJ`jrHn-^E;@BKVe*_kvxe=e{NDCVR ztbO%NbM*dI&ax<+9Qf^Znq$_LTS~!33X@an@S^;l6R*ufQT0kB32;1R^@s2x^mNs20~5Z=aN40i(QvCN6$@8yAA7MsPrd){@936qr+Fg!%cGbP89QMbCE z8s}{x#+`mJ;;|DWUo#l7s2m1}Mnnk9<1n!#p!gy1Z*^_p!8>X|w7%$IozrMCF~jUY z)UFC7bqLHG${zhDT(t)^tWL1lugKhJJ93;>KTx*7VV>gvsv>v2NW#O_s6|Ye1wf?E z`!4lDLHh)CiPi{4=ob%)g2jo3P2o_)==ihTs=AdPsi zRJ*9-Q`{u+HEdBnSrB#L0{rU;ECGzG^JTbSJtJkk4`4ISO z{~R2ER=hKF!;L6854wJ)L*Ze?_d9um(%C**w6beyUxa$d^N4J)M2!Q&2cR?<27d^r zb~WJq7#r}&d|XhH=o_6{{NHyJw87K-NJ<2Oqe#S2DEcVGOLOElesJ`QG8Hh9Y~Xx! zozuXQt6sWy!7p~w55Mlm^F^AMT+4HPk@qDZJHrhvXcLn2M~`F;dS41HX33}0#Cz+9 zhWd|i(;ISZHw24`0`@-yWr_t~JQfMO5gzyBMs$-1ueb=xt^vC@BViQ8pQ=vDek;X3;i2bJ=E@Vzlh_pCL&{ zvc($;k0J68WqhofL+Q#CUZZ8rq7+~L6wZ`U9J?n$Y`#9LiWcr_7O#_0``E1ZMMiz6 zS^c|=#_whgvJ8f@1;Ze#d96j0R~9SOg1s)QrO=|KA*+3>MfL+h=PCwK|pB98I&9wM4-tzXOJjSa_9yX$wHHJZldHYStMr=kPL$4 zAi1H5Tljr*zuCKcXXeh%?EbTT4u{i4S9Mjr@B2KzRD`G~L2JwYIaAX&**8lFbG&Bk^V(DXf4lXnY;)fbsTMhJcnK4Ik zakjj2WgcHv^L_2dG{@B+?6HboMnP5AVJ5fG1@EIPd`Lq|xor5%x`a*90ZqIujiO8HnA97ZR zcQdD}W0uKeEMc!=k>M5n8IxZqN&FwfX7_jdbf;zOX=4?inP#nTkF1l)q`;*nA^oWy z5y+wcS+b=+N6kix2=jN%?)v7v3hJ%GE~w+91;sEn9CQBY5Dg()l{ieWsB->zt>)`q z^;o!bE@BnD)A02x^P#{ncOheM=tVYChAbudiZ3k_HzQ&3MO`l+Pka{ljidpwy3Sys z!T};abTXLt$9Gv)2ub-3Q(?{zE}FN;stzujTbt^lH%X`8v_&Wl!A7a6&tP#79Iyom z#5br!2;J*{!!P72!JL;{7dY_wO)qqjzH7lM?sC693~cz!+vSC^m9ce{P}WT0vCW1v zOC8z8ujd!A9VA6Upi<@3ZYy4E@6Rs;2I=eg5TRZ^*hza)$af>db7FX-r?<}Z)_saf zQDy1U&nVp1Asp7tv{Q+&Eo&uVF)L1E;o1J7;qAS7OK6%RyApXsn4W+qL!M&$YDXaB z{h%TIHNWi+u8&{ZPvgP5oXd`q=Nj^nwX^ z;VF-M`rw5ew*rOkIdQH-Q#bu#d)4Upn2*)h(NHz$BCo}ezNi?w<9vT@GQs5$^!ox?L&ev9 zx9>dZlWSFeFJQ%WPJ90F_0sa`<0gcVHzN|Ck89d728Ul7ExFSMPHU}`MaGqpa%Qai zfJFqoj1@#y;jU&I12r3I^nEwKrcd_Kduh1#K8PMNNk99m3BhPKT8iTA=H62ke+o{`-Yf`&cojo5Z6! zYy|a(ADpeXUcA^tmbz$@swEAEV#N8{pLEK_AwTFC;w_}1fQvO3VIo3za~GWoyCN_2S^pnh#yPU+3ZPDaOuUTnjf5rUwqQAX|50I)#;c zBxf}6YzevVQexUhd;4NT!|KO>Ec-jUz|=k~9~1Q7N~9IuW;|fJ89>z zqoDO{1u_cNJVCCrC+)8av1XA5eap5vfuZLyT{82lj8(t%ND;6$NbbT4euLr8NO#8d~osjc2du>**Yu}mm$bRmJa38tiN&4jn6XgE6(#5NBq5^rS z*`1gTDEN@5^T)O!I3iu}R33%yz-k&JNe9OnY+dKRg5Yt+N&$;KSAJqh>t>v8jHk3!n|*xn zxUAeNSX6<{jm^YQjfvI)JT_qVC0$GoI#iK9{1NthP+JVFn=JMPfzT0tqPU;2J4_nq zl>y%L=fs#{-tyXe11D|v=0!cveJDZZUSZ}cvEb!$#_qOkj6*YUv2V!+roR5w!MP|B zl|eZ30ipA>=k-kV=C67mSFW(qDDM*ayoghWk+_eD_tIp0I;v_DkiI#=VZR-GW41E~ z^EcNF8d&(b%_okPc)eInql##dcG>%!jTpGhhtoykxpH#;BNNtVF4 z-$^BT&d9>(TF9jr1igx1Y?<3wGj*hQJn4qgkf53l@?@JtrcRf75mPWh*gcKUL(E)C z0TaAuOpDXif}{cWPogY8vTBO)Vo&tAtG>(?Nr42wh#(8G+J($%xa zUdvm8*HzWkh}cD`vtTxqNC~d}@%SVZc9@7}x?oRH<=CX#pxfh_CFtBV_=ew%MUUy=9uFrptg1VPLc8+!Uxwl+nDy)6%y zH(j>sIFv(;<#`&VlL8*!B(vrcK^Nalo-dC~BQF(x(3?~#?GqG$dC!79)4vu=zV0mi zgqS)#h+QmS-3+pFWLh3khk`4}EEJ!u{P6uuaViMkX~zIWfu#r*rI6A z?CidA+1aZjp{<<0(?v6(Qm)RfXcTt1sM;g)6>hQ97uT=HX|_UmTBc-F&*jCRHEn*> z+uVzQ25}fQob$3KDKZbLvoMSM+~pO}_4by3B`8&#jt%FmL%X@|{2py{L0U;@(}uXR z5Li$wFu{HAC1F*tS`GQV@cgqgRkI<%k`}y)KX}{$`RX06G#Vao$(dk5HD{r3ICPW! zaNXaBdc{yRd;Y0!E=1 z#BNQ}1g}E6FG24UzFnhKSpckaIi026_johG>d~SA7O2S_RfFKdiMi~LWOF-aX-&fd zO>qO8oI@Hj9>E28JP%^}~#kpgt~L0-+IE%HhBOpzThi9()DoUaDSX4w@<9!Nt5% ze*d(E2j*{>p@@l#H{2*8niTKi!jL1Vxu3MRyk@rd!Q!`7r(V8EvwTrxCx&eR|m6E5NK@mqIUGgtSMf0An;?GiM6|Xws9{F_=FWh*q)o6o4~oAflwq!w$Jfs zkVf*Z$xS6KI7)KaZffn|tLOayVRz+3De=wV*2YSN&d$m~Osj^(yL&RA9b@+mTFacw zm_diC&z>WHQce7MNQ88Q5za4Lo5gbO%WO&#juL<_k|-~Nf3@?aN2TI=re3vVF0Q-j z2P1kc?e5MkIlXLpQ^8}51DeVhU#10trf~nmVUlozcpofx_VsPeT`mvmj}DhXBY_t- zVebdxgZ#LTpFiUt2U&dCA3Z-GOA?#&KHiWOYL4o^YU}}c5hWd#TE`5sd(z6GG(SDm zz*gr(m8;(O<{I1y4496IDRsJmatJ1l&LM%6G|uU7vpXOV+iN+w+!g|yxPl!dDW}oM z3q>{%NIY)j+u*W+ngzI|xVW@LlmG_=QlSs2>Ba|tY2`PL?}H?#7%SxS-_8S#-m2rS z%gbyXCV30+eAAQ8F&>ckV5GPVtyvaZ9Q+u45`1fKBo4}@Z@L0n% z^4(o)TYG9eR}`kz&(6@$Vr5*{M+yhaDeCZ&61aNG&e7JmxRt)X&qa@?btb1kf`yk> z5{|p;z4eZdWZS=k^zjheDLSbbpec6u3F!2Oj8FfE1ryga8`?$)_mAnB8R3>M#U<|- z?oCfvyT%n+Ipox=3S@jV&UhFRp}mgWkdg0~sYm;qJ$T=2P704r6I_`2;nilHv6J_r z$I`XBuDQ7xSyJL+0+a1EZ`q*0MOD|hdoNnN(zMmbLPUL%VQR4v6Mv^AjN{^(*TWHx z|17UBxLwX-I(OtjQOni04=5x0P%b-#eoI`YZCZjPw-M=Pq{tBWG|n)kHn#gSs;6Wd zBP=WE>ULCZZTct^J_-c#b{~a~{x&DIh}7(uv-Yt?5HeLfmwVKe=&t9(!FFJO?9hY7 zhgP0BKT%P(y$Jr%Cd-A9rKx4Len6I9CD*AZr4qaNRT87`EV%14J7pVvdc7b&L@Gn! z^gCPe&!&3Utb9$4p03n!xj)4d@7^9**MFb|meBkW!FF%1G;}oT=j7p4l$+avja$o$ zhOAVC7N=|Vap2b{3ZoOqvaaeo=WrHl!B8uXfx-jBJ8$cE2E@ZkE$v-UuO|EIM<+F8 z?}9W?bP%(&7~D>cDS^K4i%sI*3J&)##o?&-l!Vx$e#ME1mx!-ypce= z_uUcw=A4+k)?s#&b_E3z{;IztK%mA=cqx0$2^vg^?fXwj_hOl>McVGS{LCLbg50U^Vo@h0T{{$)Jsw|aJ) zdbf?uCuI$*LdzPFqDn^=(}o1KBj~x-k5H9@2B<%12Md^apO!A5yUn!f+48K2x*6+% z@r8wH57UTKb$>(w)@e=M=u;~mIV0BJv@^1!N4zMu9gw~4voecyY2jJxj7#7waZUDN z0b>fxiHm4GU?y}bo38&2sDfrlzs(gHs)$qpG$3x{bsBv2B!~5=1 z=5h^QwxF3Yv7K%0Ly0jWqqph_^Sl)UKONTN8PD#ID;VFC#xNN!3_{e_y&GIy-x(g9Mr4v&3QZ=YV_84Z2)Y>@1; z`PU2_>Wrj_AjXevAx^NFGV`d>uT?sV3pOu>b2A+}o4W$-ExwHMYG}*#(jli|3Sp^| zJ*%lBw)mj^!@^0=!BTM9JKlRi7iorOPFfqZ44k|%oy!Y zN?AhvnPd)`W)n5lhoC!Rr%o!+dyu;(j?)zgu71;uvC>Cr9iawX)Dq+*pFF?YSYiZ; zi5aQW(Go|cqox8oUkip-ed3)G4|gKPWETRD;^p_s)J9Ll9ucUg&oImwO4xIOOoj_4 zpzc_H3(6bmr(vb(5#e5GcG-y~X(ld0<`|RZ!>^MfID&$#R-Z)aZW}VO?)Q@AIVP zz@6P^+@7mhq9BvjeP=+(1I7KT<^7cb|KIHKZhl7?AW-qE|6G&TJ3k_egY)pWCMr1w z1Hhsn+G;Z#jh3oV0a|~97i(y~4d{I`^@m95za?YiXq({RAqe#Ld$u%CfxeYu{F~(Y z-Qj|%QHXbDcJ$|r#IubZoT1{dCr@-U$TyxQE_d?hpX=#gNyXi#;rD%J^n{!DDl@;-l=yecNMI5#R)aGIiqZlE zg^Vo{y0GxnEjmndD|ghaKWQ%d{u1{oBa|ZJ%d@DuzrnOlOMrA6S!+hhb<~mJqTGHs z&))gsASY_sg5VPhj#wCtT7U&SLE(ObSdhYrMU~uD@9RnpgxA)gm_88VWOtZ+J~{iD zjw27FfWu<7UtP!4`ihQ^%|HlODO9202PKt4!iZs}-@+_ESwu2jK6_!fZuDV~KO+~d zb-kD1xv(~OMto5XS$Mr`Y1S)^Xl0mb_Rgx3vY$F1KX9-49(r-#B%{&?V%Ea6F-m^h z>ZNN!p8ag|!siqC_T`_QUhdS|Q1tw*0!3!~2uVb8`!b|*EtP!pNp?J|b)uH(DjcI+ zc{=7SnEB&B8oZmPKSuF+Pk9t}r>v-*ss{EDC>btQCd-sl7$r5u z%O8&;P?Ovvj3Ndq{tecqi=Z8K0PW6!G`OMl)SbjGCD6038K>Z^h9n1dc0aH&porZb{MuX_F8Q>@Z+t;m?Q)~Axw%UD*xMf=^8mhUk2NDK zja;eWf@G%=iyFUC{)RVF+jXGl?ht!l)1LBgZ-0^f=)31wTvQUF(*e71^}6jG|8%{H zGB7oYtJc2?84=OTLyTD)9YHAC#$6QkFXC?uGGUXtxROsuAz0TYIAFQLi1fK@I*GtSm3 zIyXUd{?cZ(4i>;U)O}#Fcs_O?5_LeJ_mt}RV0MJtZR1XFOaofo!X}UYtk{lAqrnhI zV?U{EXbnN@tn90}_EE74wpsxHC>bu(E-FNwv1=1eW8xZBtD>?jhJSu$k1R%}! z*TEq@1fL`0=hz-|ovH!=1a;=`^_OXa!W#yys$}U>!n@vvnoZ64N-4tZx_CNsa@SNt z{*p{_=sc`i5&1HOOY2Q}4HY=0$=%(p{%Wib=FUNYYNW)wroXeN^JtL}1llN=hhnZ+ zUWq&)B%T3`HWpPA&ik9Nf5|{OihjDBwVLJ(gNJ< zdGImN=9ZOy`E=ibWIY-{qZSr!_PZgsf6G3wszwe%pr|@&2`TI02d!6(1k}^EbC{ z#eh!ph-^|&_hhFt0YED|x9UxxP^Snh4$N8o8Grf9Dl$7|+W56jffN_g`*?NW%)sjE z+LOBE+&NM$es>+;Ad{1f(L$ISnmqM(N2r%4j|uBj{%)iKu-JlWZfv zF~O@odMX=3d@=I!1((xTB(nK0B@GdNrLFF61Iw&xPAmCC7EU7gxznn|`!(UTVoCHu zl!>vjRrd$2FFtYtF%zC&(_D1sO_!)}CLN`rJ~s8QC#6BCJNe2PM#h|<`3OTg#BPqn z!Z2xplb|J)0i}^@O*^};A7hjifXbNen)3~HhAdQ}#_(r4VW z_b`OZInQ<-{p67ut(X0+3JjfL`ysZIrB~>T8^P6^?bhp}o*xI5aN_w#CoG2gFcZ0{ zC`4?{GZM!N6KLx@2>F{L{TfOqomcay`wA&l-dV3(@65i!sw(nrc0i>JBhzBwDsMiX$<(DsrID$aF#*+|f`UTqatXgzQWD@{yR&tj*xab^&^d}N|Jo)s9ge*@ zo`NL7g;HX^^9_Lj?dqsD=qh0MRSC|f$Y+hDwuw9%TerpFPH9*p%;VKd73&+SFzfrE z`T-!iJr8$STdq*Et>~0i^la;u{*`1jv(GXuNqm8^WFL-|5BzOr)h-Cv9`6(r>K*qT zJuzKBsze^{ejHIo4l`du>j5GR)W^qXuP3(f;iE;dt)0df-S%dGXmh)g)5}z63!ms+ zfp%zRWN!|@H`F9@M}+WdoDK8)AZyRRRfeY)Sbu}}{K(uE zjffxgo|!HPXp}#HQjNVB^fu2?2|xswl#~SF6CE9e@jFV{Sjhk{%#f8At>rS=`C?6_Sb{= zC1R;_3rf--vpl8Eo#VS3;xx&NndcdvR9%WI0D>I3zaBit4P{_9vtI4>DE`G`{F#f_ zPmGLg#80BmTO-VS>|Fu~&17}mx8r$%drck*sF6LL81sBLb`fxc^nI0q6=xxXmIp3< zp8#F9O4y*ZLZFa!$74*-Dk1G7y_Uh=vl6ZJQ>?2%FRn48l-FTFI!!BSN-5(-T9#U3 zVNIT13AbHwpdSN7mq`VgS%|>2s|7t|T&wem)d_yKxyGK)BTfq7h^TDTtj90xkiFAlc8i+%YpN zR_S3&}rGC(rJlRm6A z2FX4mCul}6aa8zxXN#1DUd~IOJ|=S9e#Kb(Jsd7?ZFWB3o*|_-{J4Revd+-;$1X3*v5;D+%}}C2{D&Pv}8vzyXsuX zJ#BgN_K>+Wqf_&0=9#BZl%(su_jKc1w0vX5CY}o!0Iht6cWnr&6Kfh6kHuGwuDXM$ zS|mNbXmVJhA{X^~=8jsugK(U(I96p?-maW(RG^x#(6y&X>D3}p+?t5BQETNY`=f&Q zO_+rB!U7ZYtshBpJKY@qW5NH+(P$Vcrm!Dk_=k?ZV-Rf;PUdv%BA@oA2Hd` z!8FK#i%!4eM*w;d|IhKqFRkB={uhbF|L5S$e`AgPcRmPAwf)n#cR<2f>3(G-e#2l; zIZ?XkY@%_&*y53~*Vpq6f&~u%7e#f<{EiE<{aaJ2Yiiu!Yk7ac2l~=`bRGnE2<2(m;Q%9Ot9Nz8S3T4pEISLFGsfc@CJBzr-PNcW+kRsj)4nhP zR{L140Q>&iNx(3IBZ0G+iLEtdrFwBU(|y#a%j_~yZclrDb4UFM&kzZE;H-LW=%d!lNRe4fc=`Q{Dp-f{I~ z1sm{a(52i7k$xwV{9`9&vA%6*3^hM<5U{$1_NpBUi126ZeHZF*vc5E8R5dYCJjW~u z*FerAcLYfB1t{md?R{?K}7cIRiwL=#X) zf2<`sSNWzWQ&1<{zRLQFxoLxN(Ep+pN31XVtF@Flw z?0QpDug(LMoHPT^xqO|IqIjG9&J3STWc~7H!|9RXVI?LC-oZz3#>dPP=ZoqPmd#_ZSwy#U~gQP9|4ZVQP1qciJCJZv&uzFGV*inuGL zJDSsLi9Et-G7ktCBpf){LCMLK=wLUt+~Lgzb()oTQ;n${3Elh(v;P5o}C(1RI6TMDW2~21L>#RdVLI$jn9;V+IR6; z5$i{+(=c~Z-s#O_CgH+rR5{i5lyjPy3_P7TOw^#oP*N4 zDlgVpf0qz-3~_b!FvOOu5%%EwA!g9~FMz235O(jI(v&Sw`QKyz3oZQ>#Q!&!`!jn? zkoZJoG{EjVBunW~bbOr2^k<-<@`x^a?9T5h#0uQh8;_J5E#npu`@bqq=jbv=2x)GfD| zqV|G0v)2JlBcBh-`Cm6zuhonST2$C!d?x14PozvwyQP3C)sJM_sV-#No79P)aGTq4 zVB*(RqZI9!h~S)!LT*jS-(M>*lC;YrZ{5Sg8QZcNS0kM#y7V3zl4ufa7QW$B zm}ZJRw|qQtUUxD5=kG42?heJ(Q!0M$Zk9P!H8oZue%RWau7_hY-mtDrXL;O$0lZ-) zdtuB*1=T-}Xy%qqbzuzMviLjSs%YmE6<<<4`$g2KelDyH_th0W-Cts~B?Z#7Bh zU;8}*SD8H5Y$UNQtJ9euZ|<#&4NX)?6;eJ?Z3*}oI*7dHD@}D(J>=~Qt1gR?xEuP=+tV{E|0|}M zl@N}NrCIDk6u}q?ITvvsKf-(Wy;9)a5|-W9t~r|8p;GQN`W}bX0fg+#LKAEGEoxzk z+g7?w9L)h5+%}24-(+670KO+NQ~1=A`}RE* zL-miwvfUkxIp!%G_c16i|6DE^SXxk0r*V6QJi!aMB;)*n3DjH<#QW{WsBn-53B)nM&pe=Gvg zqPoBtye_XNCTG5G_*{W0z46D=7{QzxZ$gX5SIbm`lu*#OeoqYB1caOTeLz|VyV@a3OPjhVamW95>PXeL0?CCW1l=7a?8E{ zbdp8m2sZd*ntI*6R<+k?!dU#iJ2&7WAUsIs5;&8Z9Y3%YM}Rq!3GR#Y0a7#|?{p1< z<(k=0Etr+%LT<0fnn2IF8_9rbEYAC{2+sd+t^PMu+k#H$W_kC|Ro9oPN(uarBl0_w z4e6=MPl961vH({U0F^(hH&;LRV1ZJ`k@P6zgw*J9vG6{UM}((+N#8M_KH2Q$DQdW$4a3R{Z=Z zd~Ewj&H8t_hgW{wfO*H>pKOzXO%%F-21pjM{c;yL%LBaHG`rjQjI1|M`SF##6ve<8TysW@#!%QVzb!N%_RxbNvIA5Z;ATAYLvpP1jKk`50h4t4m8 z9EHi8XD3Ej$<$zy+Xh6%A{K*6+i>Dr{P((XisORWQ+_+8?OA6f2o$Z#51z(2m@8gf z`)x`{OW-WXNQfCw_`L92b*8Tf1D~9-kLyPug`vtftYh%G_gLdFYUU9Rh8XA@l}gz` za$1)y+oI^Rae|kpQ8upt5&p-4lhfD5>4^z3RRJRxV#MU!mM1RcuDFBy4syVGYMt1h z1>5kMuSJIxE8#;v2D5;RB!UNgM!(%(uv#zE(vuK+ZF#aMXoSZ2F%59xHBI3)ToFWd zu2-dfcsh#@yZ8PQptg_EO{m; zGYQf2!VWU4ggNi~GDA_{yO66kw_limRBcQp{gf5cb@*b57POKN*rfqRfF-JO|1YO$ z`~#$+%5Ooyf9+<_o!nB|>*~Y(BA+9E8e^ER=*Lf=#+gFS*-qxfN{Suq?L)5Z$jIQa z2FieiAt-#Ynqb_uw)TgUts^QjlAK;OBR8EQ?JC;);M`m8_^qwXI{oHc4tkgygym%cNt~%2+wkSs1S*fFLh45E*jN00s1Ap;u zfDly(B+x}60IIz=SFi0vcYCDtKMT#L`&oy=Cr=`Kpr>Xy#=c~%0)zk$msTDxdsBfq zI^0hag>aB;`8LKwm$N26URLN4=4%vB4zKo{aoLYk+q}$X(xe2GEaGSP2?^C)=(gsw zGZJzE!H98D%=5fOhiPpH?Jqic>_b%(9KabY+wdYfubQp51k1^%pE zEwXhI?r&h*ZuNn-mKK>&h<@@T+~sE1>e}fQ18_EZmM2kz?mbsNisFrbkQ7!6kd-tI z+_MS#J?fP9cT*^oW0|eRq5W6N^wfsJRc*P+;mhyt#~&?)=yDj82DfNW8~3P$j{od^ z!aL+hyx2Ky1)M0)s}tHA9`d#OrnY`-R~fC|b?ZIbV%Gtur#F0?H~Dow5zoA@dcN&B zGPy0Jigea)p@YD!S4A!vn>3vC0m_1SS8oqlE1ouc4oHVBEwGK@~3PKx%H(>ic`V(2u!CL#^t3V=`l*Y5x!P zEWr(N|0wbPL@RFdRnfb(k7p+?4zpRtek?z!yicF04-YQh5K(L^R=y*-*b#V=cXvr0 zidR2uXr&K7*(^gm6LNp~Wp-ZTvWi=*3ind%?E{z7Q>cAVQ$mZ`tC+zop7&}Mhyn6; zgP%lapB)LWjy*_|0N6p6=lDZcDV>vIM^H^NclY(lVOAXRdmy%YIJ0_Rp5LPaYBsqy#rb|ta^6* zJLBXy*mcFNvb}ZHqZ`LM(2RR}rg~JH$jDx6wgYMzPT>D_(mv>V$$oF|yU61=5bslu zpZTegk#w?k4)BAqjB8`M%#6zw#+B#i;t=e6zUnFp@{Q}r<_k#90yB>KHEr!{XoP^L zqtz(ZrtCwV?{{n=T!CT?vg@>v7{lP~Xc}-5zx24QrlIiZA8N=Se?%m?0Q{gcE#qou zT~7P#0O1GQ{E?4|d2B-pm)sfL3wsKa#3)#7?tj+iEu503n)itbZaE4)D1(R=4uUH( z*XAUz3(1sYUYn%{Gk2lFxU=cx(W$_<@U0aoD|<~8W)DkuRufM+e(nK^4D;ZSFB)-k zhHz}X3R|w<{aD=ynZf;nBFJEe(0y)CH)_82*8I(jN)j`^2m+6p?DlZpAG*|U8#_%| zpR4uYoLk|ZmKt8mzr=GWq5;QQ576I?W{{A|>4w4X{ng%qqvRRh_|!DEX`ikgoL)vnCUdH` zwoE$t4c{pH>7}JzefcE=6cln%DWq{}G0)6J1R%iQDvdxb`=|U4lq)G3Fv0eA;jE`I zAE6pi?yT{gVs3gUmC?g`nB=Y0cw|}q>(>7ze+dLc;g@vG=e3wQM+6n=-g0-S!UbC| zxdIs-fOQ&IFswElKIALgJOzmH&yjz{__(--#3td@yY+$wDd=MuwrWS!O_icfB!O1Y(k44EULFsoU{cv>RrUm&SiV9TSc)y z7vkpflF@1)mKcA^b&4|mo81$?pFSS4L85^9%O3xft()&zZ*b=>5ZTf{ovPHC8IlaN zw+mawy#qQyRw9@laK%O4Ey=!X_6q+<^*INLb4Yo&1CX+Ip?MQzP6KJ2Pnd+pC0f%H zI8X2B`NS;wMi;Q=w0!5FDnFtJ0;}^ml?ZDC21wkuruS{odwct@47(zF=zkxW4?1&? zVXH@w6C5}Nt6(sYu)ou7gMxM#e16^Hf<1R3L#6z&B8raO+oqnzHnMuG^cmgpv+Hej zE{yMDB_)%*kytgh04^-3C{^Iz*iQKX^CGM|I_2bun(X2kPGqtK9rX>H3sqI*VHA7| zKd`$=DVJrqqcSpk)1ju8xqFqWNE`M*+~v?2mP1iSFX7P0SnN6l;IC@dS2A2HwQl&z zN0$T6J@Qxc4TzoekxIhe*aFepSe*>krHk{=z47swAS|glA!57=>tGrNsu%CnnNOU! z1+S_^c={zT-J^`n>dtFd;~6&|9I2~;-qU>9SM@%GpBF24GpL{6y{}_DUM_4v^HxQ; z{yF#Vs-?+j%)(=aWz$4+3hdZ|G)xh6FSQh_6lA%+nAjHQ=phkt3Qs83?pvGRfir4_ z^YPXqpl_-32n178`D|)-;~`|vY1I@1%%U}=U9(DPD3npcsq)1gDUDr|-If<(kR@Ov zquU#%*e#>HHBkHRwOh!QW9_V3I2I`Jh^xz%*m}y|VIg;Vs@rZvE#s^}W0$Sf8P>6t z?cOk-?5k5WRask7kC5A~)%bk}wAPf0MjlrOg?m|lix0y}LvN<gpKsZOud1B@R3%!&Vr>ed4-=QE4 zDGTt#?+fS-g(y!RS-Pd6AZ5x^cj0H3x*Dxwse7H4!;`gR1grIlCH=ej%EV&stUIgp zZ-?opXa&A>{c*bJzS}uGDbVNdt0*R+(zn8c1fC_as`@WS23E?_l~?bc)fmgsp4Hx? zV?z*%Iu0%w`Hty9_B-8I*#q;D1b|^yj$g5YOaO4@H;AMfK&MdD|HBzi2FN*Q#uejj z6v0qYf?xVEu=~GzruILfkpKPKx5uN)o8LWNZ~Z_^sbasstETOZ{fESGtKRYu&!s%$ zmcsO&;-|N8l7!Z~Q1O$z2=M((nW7L9K*KVpZ30&DM@%8Ua(PU+Z_QL_FSM$8i%ylz zf#IFp-cYtgak1XV278XEsekeyn@7qC4~nCsOqkLMaI}K4?5>t_bUdfcE#dC#k`ip1 z&x!CcX-V|@hBTiukdQ~8Uodg+)=b+O9W{0xe=1B0d6+OrTDTT5@b)Pk$<~~h0A!wA;DjShELpbU(M~*^W4O5LW z628*|PhbFf)ClFTsfK)w?W^Qr>yznEulCRsFG-JP8~xu|d@wD@F=mdJ|8(V$AH!1B z`0<@PzuHiF`>Q+2?W5pC-Z`AkfFq_jAIVjseppE@6#H<)#qTVv!Xd>^%dWQp??Ui4 zURj`ZGV+4}3^#vCgOBUdPXsF&TRMEwrGR#c`+SxPq(FURN#d;zBsN_tC&y=@{cq;o zZ|sus#9vXRocLcH#cotH2XnU+6F0XDON%>FLq8n?cDC*Ld$);_+*h4qkn6uKpJ{F2}y z>r1a_ym?_o@KL%c*2=>Jt@5{x;lfW=xhmd|Z6bxIs$tW&7c&V({~^Pl>h!Yo3N73` z+iW->vP~{bcSE%@c5w0to2I|GC^V`45ZD`TswGR+fSS+dYuIr29d+|i***0nqOpPH zbd}6_x7Vmm9?JJRNb;VIm}>R9GrXk0zVDwkJssj3-|1*`<4QC5Cr1JsXM3dX!=IOW ziXNXK>M+Z?$Bv}D8dtsX|BCI#P9`U$oXo;PTY@EfEK)z3tp;M4ixKR`F&VF=?(n*u z5M1bHr>naU$ngWN@{?CYTOquIY?m2XMz6+j4~Z9_TEIZmItcct?aH6#LdfeT}fk2sqEd+)3r`WQx(e!LTHWBTL`#rG=|A!PYG zkhR`0UX35PSs5G&7H39M(q8YjLeBms)edfBC~?cJ4nOh=6k2IcZxqKs%goUP+UCy1 z^QAOyn8wS}yQT;-#!^2<*f6oC$?PX4T@kyu6cr>A550~PzC<4+J0mwJ^5B+to$Kda z{f_SE8+v1dpzli%Vf0a?gm(xPj&KE~ zJtGZI)cMvwjGK1<%Cm$?y_tFZhHOiddtSVAr|U(Lr2j--V6_HMl=;b)oDGG#ksC0^ zYW|2VG+f4=eP9g{TB`XEFL;B5?dt*?h%fBTAdBqKeUTww|aV!Vfb{6I|jEraBulgzdBMryNi1d20`e@>fSmH?pWI(yV{iD zvMSW4gn+lihy0=$Rm;tzO|U|j%JuQxi^x8ZqTl=CvC0q<2$8+jBJ~0BfE5MzL{*Yl z(RoqckQK#Sg2cI}YjM{5vjbUkYYP=mZEH(oYu`=WUP2h+ftRoGr%ql@(For9b#pW2 zp%7jjCqviv0@?JklQ5>h=cEN~yXn*iC&m1{=Q4Q9Z!TZey)5-2li5Lv3NsGg3xFD7 z`!c7#6Tdck4Pn z>WSNh&vmA3VH@-Wwn#9gJbnS6&fJ`O1FrCBE}tAJZ%tj8SVbM3?(7oo)J!k0PE|&R z1bqxB+jKPB+C+Ma`>2xmtj8XbWX(&$gZ$6EY0wV&mS0oo_M=eFMdm&2##uGCD_qgd z++9v*gUV^}oaW_#)~a`Pi^@P8{vV$;KO`_-o)jTdH5%KveH`v6Ov%F^P_Qar^!>pO zY`^x^v)xnk6Sr6KshJe%Qd{&MT5^1reyum3pha5L#=1b)?mjJ*l{~h46r#0a zT4uPi+nc~&BI)0(9BKc}NE3P4v)s+MgS0%N4PFP@JlMYfd;8L+tMAE1VRk%!zxkX4 zI+*joRv-3Tr;+57`>V~jDpF&YxDmwFr(q-V^I6{gUv5$sA80Np0aHOo;9mQDtnro0 z@KRtyig_5Kff;ar<|z7IblZ1scc#1 zux9G>-0el%1O^AY9ZoZ21N z?C{9>qta}-bz{jdF;S;p-`IOdUBFIr_SRRJcWR#Q1EPcH{n(O<5jqu!XwDS%O&5KH zyW$LU8^9E)!yKC-PZhZurK*SfFMHo zqO)OHj%S>YRmCUORp4A=rWUPm_4cQ;Hd9uUv@d^m8E1;ng-n`P&bP$YfSH}H3SV|t zQXZ;m3RbguL&GwM;_I?mC4J44U30aNz}43ytD6wMpYwFGu-GuHPKr(R=I-Bk=y5xp zUz=;bo;eA+XUMOm9A^ZqG}78Pm}{>CJLq2&FQ!@Twg_CdtSJ3Th+DfuMH0R)`Q?yc zF^l$T7KKgO;<$maJ1rzz-YP#c*bv^w((ta>7-t?6csdzUrs4rknpa|ovo3!mAC%cY zR_0L9D4TvTbC@{xb2wY=55ew02!G)^XQBfUuX>0MT90akrH-+zXVtx^%y^QIr~ZuX z3p<%f)vT?Kf=1`KegFI`jg$;I)nk{_k|Z|@14di^_`Et6M`gVLil1v!FKX$N`? zTy`F3o6#u?0`X-5e?A^Y>di^oHFfPha%*m=IB#_jE?M~E$OshrVye6SMC3eLKg2!M zaUoyUPpNU&*)Ke%>VtJaCePQZ6nuXZXSL4oZ>fYn@3JI3c2kM%UjLCCCgclN^SIW1@MfK$ zvN!wZiQjXIHD|%r z4U43`^k@X-eVcc~`Byslwxt!x?=dH(_&+BnuiIWZ&nw}&@=t6a^Zc(w-Y9F_QZeBy zk*g`%A7ky8UMJ~%cXu9mIpp7OO!;op}DkzamC2=?md(O2l%i z1YbgFD&$0Ia$i_XXmspoDL24T3R1CupkL;>Aka)lQddW+?1P6gkPW3@zTRMEEGy3= z8jjIs4Dt>v{E`mF1t`W~nChKj3XS??jvr()hQg>mv=1yLRKo%IzXQonO0>1(B9t8L z932gIg*!>`l@>h9-#G^RkrcJ`+dDFHW>^Tm4w*xF6l;gsm$6yaxp$A?;8X#xB)!fakq49)OBV@LuCr|I5cviYuI?PmErReEmKQrnVuX}Z7U@j|JP1D}8Oe|o&t-yn|pfD+I`#l4@O zP4%9>-!CV~ROID`h|ceO*V`w&dYE|eP;S^JZMVPEc<&!+FRuA)+u48W$BWn9>{mB* zuzEG;+;jgr(a6fW;=`Z4YtFgnPx~YY+~J+&^!lo`$Md`mf;VGJ)uMSTZ=@ey^G!Wx z%Jf|-O)G7s*Y8cVihFE)Gb-luG5#ZKw!KnTDqVWLc*FC*$v;0vO)QrH_E5Jj`ub|s zrHm()dWG>km-+5hOt^c_#p%EE%qQpUGm@2!{;nzWJCmZ#`t68&l3n$SPm}-Dd|Rz< zU-{wx#N}3PNjCk(&uiG{U%mFTBl{`)7I#;3nGLZd@7)btNz^dwVpVDB%d^_% zV*Ac+X#blc`LuHXjO}&m@jflCKO=JuC$C*|ck)l=zE6ApyQ@cNTmdF*>-(P=Z*^|w z{#AHql2MKEkBr$hRr}P}OFymr-zg^-$~$l0+ywupUT5WB?qm57`0qE%QFszI&l7TA z6g1~@L_{ViQ46mPADki^wgJniNtY1Qyd;!+j0{f_s(=4yzj@o^;WyDI7l2zH7(8A5 KT-G@yGywqP4v^je literal 0 HcmV?d00001 diff --git a/images/entry-name.png b/images/entry-name.png new file mode 100644 index 0000000000000000000000000000000000000000..978019dbed62f1ff0cdd2d1cdd2fe0eb031e02e4 GIT binary patch literal 18028 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 literal 0 HcmV?d00001 diff --git a/images/entry-overwrite.png b/images/entry-overwrite.png new file mode 100644 index 0000000000000000000000000000000000000000..d17ab49efc9f597e93375d0f07fad92c83f6819b GIT binary patch literal 18550 zcmcJ%by!sIzcxC6fPzX1NUFrp-~fU&k^(~`9Wr!FcPJ7=N)IjF-7Vc9-Cfe%brybq zd+&4h+3$6o_q==m!8I4K)_T@c_vgMp_vab7oQ(K03}Orr2=q+iqlf|sgyatbA&Wdl z2L9r`LPZIDAlWL23xNs;NH>9B9vOX*{s01%gks+4q5{7^`SMZC76ihzd-y?`H+4kbn(h8PAD2PEQMW{u+`z@=L0M>{!c)^-=;gV z_slAl+i7#+!|5E~)!#lD^bJ_L*1t*7tVlTV;afI-BmX3{&$l`Lr<|KzpZc%=2xIe{N9JMqd-W7iBpQNpA|v;~*Q;qy!P9Dhako zNBbOqX3E?}XMt)qI8?Cj>92P`4rq_$a{eP)XzHk9=NmID&62Jdj7XXxASYs(dMC)xfd8hp*1@?g&s>~aq;EuneDlA>$3fyzJ)NtcHBa)M5cS9vc-4H zV#?OTJ)x+)9!hqK_{tPpFBJFgq9U%(D{jRPY5A9?CT)IJH8ri6#6`n;LOgHKSf-D= z#}=MD?u{$6El0^PoGMXgT7|ps+fXlX{l3<<+UOi7Id%DK2tmc01oRwwFwiX$y$fMei)9vb4xBlje*5wO6#N_@+CGqn7Y^&0V$OOlN zEzE#veiA3?H;+rlC70dJXi9;bN79USbf^ml-;j=-=4eZZx3yk2GY#kL+>mp1+L!b? zo@?f;@R-oO0~0ujs75C|Pc+~LY=0*bGa2I_^2&VslFCJV)sgL3D{YF%R6$oq_L`fU zpS)IGPPSbSDU_4IGIu~ygb&t3?RVzyH%lKa1yybyW2VX!x=C(sU^!|FBx{!)y6shG zV4R0u|P5>rY=Db7xkVuY&r2`q@5f=ucW9K6?-ot5s? zLsLV8bP`M8y+0Rklb`~9^G$5ltT)>64vNu%n;$q5>s{_5*GoCM{lFbX)J%%*dI#5Z z3xx$4uKSbYw%`2bF=5ly6`mJcP=~V*rf%6%LDQB_X9r#GTV0y*?>$s^8uVoE4Y=Na z!XDWh@Xqob)JZuix;lf;?Xnq&E$GXf`J+!xn2kNlf1T;q9WhP58A~eJ?-B7r?|$YS zOPZ>JK>K~IFpr6Ai1r#5HU`%5$Uga&0FTfH)uq>PM#^*b{&Ven18&h#X(=(;`Yf`z zd0|HXoQ#cCCvI2I^{qp4wWGE@zFQRqJG8W_wT_|6^QrsBc`T4xCxyosGupyE85x8cNjKjKATgt2vRQ zah&>-b!c!*%aS3VC@b$=gJ?r{t_XsBdR#D=5ojVj_+{z1$V#EJ{rEU?$4xB=vI)Ct zZe|cGtLf)u7AvR)YrJ#aNRPfSf2QGaX0^0eu;2KG9%qRs-TtZ3J~W|8Sd!J(wOS${ zjT^%<+`~hXC%on)3Z92$16zbXMcMQ_J9#rC%-*Jdw7ydz``vdMgD&YV=Z~X{?-UtZ z>kf~?B|O!87^_mcE^=++qbzwpO|XOxHci>8dW>U0vtEzFGmpUth{51_CA_ZKPP4}8 zz*QcW3)Z72*BcPQYHA_rnKdGZ*uQY!_-rWBd#A2%n6jOgreNgY;plj>iFL4(xP*n} zkJo;v+55H7n@?bIb8a7=RdsUnXLUFx)WN@m9>+q%)rDulp#2YuHUY^1I1~fYApaYE z8yWyF?6`HBD64O=)xh!`c3d`o)8bd2w9@-ZhgvsEi_%>u>6P6{d}ZoIwW8AGc=xLh z%G?A8P70>fDQ|jPoU@&S=!1vu<0TSeXA&v*lL) zZXGb~;AZZjESnUhBTbU|+eN>gIPnLk_E|%!r{w2!{Bf+~Tcp0+Vfg3In=)+ z-a}qUShi38W)q?*+acbZsD+u&LPS(BV9034kF&v?V~m+Qm#q{y2dB|)Q>9$(ZL+7z zB_m|QIpuwflCI3)TrSb8dA>US`h3sh?Pie$euyfYY)AU}bkd|PZLW%kfU^)uf;zN= zstG2BJYAN@jXtmBOuf{6ViFgwQ5=!%hp;84XksI$%RiBXVR#U{`n!RLzMm9$&t!} zi9~B%!m;IBE1n=DSlPm99K|CCC2oD>a`YGNywe1^d0|SB4f&4zE1j z$oX9D?!R)bz8!JXgR13fx@F%lkGG1;c3g65Iqcvh)`-fT&dm&5?dcyY#GnqX~ z>|X5nzgzESDo0AJxvY*vu&=vwR*2~ zdGoPUWrgNBxkpjjhTKBV(xDxgi1St48oa^f=tW{`%3%vjsX>wUVnGO@M~vvfTibUY z;TrZo^=48E8_QIr1l;n!1RENKZww|~6rVScp>sQ&xY^tU)J!{vpn6@=5{&2t%txh> zrnFQ&0)cwFSC}&G>Z?``QU=`B_czhe0~>pvgH-9r%^(Jy*X>mdTpX5T9(dTG;v?R1 zAlkCH4LkoVOFNHPQCYtxaRPa*q3S_FpfxW92-JfFK>|ghz>q<-=xvWca?b&p_>&YH z4$V7f%s3V^+^j6VKqVc9Q1^yZ%CWANI=9rnCp=bcjC#Z5GpFP& zr$oP8;)>3$fdnGAB6tIq2G6FY-5aPd#|Qb;)z!6@sAg+1P(Uio-1+s`(%up|)Cft) zw^U+G-ax3NL0;`}xOw;@d1B`ZE@~ubiVtT1&N?Kx-2z)S@4w?- zGt(`+r1|4dC6Dl|=Zb!AKoA`v*5pj9OHZUk<_{JmkiTdk9Gj0@{zm{R-++Ust zl`u%yxKsJ;(ig~lqmvjTDu{P|loAY#n!^8bn#3(&E+>D6Mn{8(O5kid&pjb8MPFn4 zhrj0fLD85bInduPVLdAI3>KHv=z68oSZ}{A17?fpy^RN+4#J~CS7__ks6v-bj+I%6 z%6O+xfKbTU?2Ty(X9I!cP*+yqqju^8qe7oxshTD?HbMg+kl@&l_~Ffk?$}&4RcI(V zUn+S*0usoJIE7!UU_}};(8P4Bqd(qp^(hE6`tfLecYESgXS^uHr=6XfBdoix3s?l% zVXm>UB_&U|6v;3HH~V5*FP=UJ$#GI)5Bn$N09T&0e^!zKbdT0(E)K9vidO;Y^RM+; zVh*eIq^@_|zM`4HHk;sUD!4u=*DOAny*Hnku9)GkOCFTu?W1bNk}l0&5Z zs`zURZ!0O&sQlbK9Ij60Hzo?_Cf{*0L^E@har*jM9W-W!)|anmPy#z5po|n2$9Frf ze$@PoivdCAu^szv(9=$@9Qf2|ZBYq=@VKsZ4QxylEmV8V)m9ejTGagR(a_>a_O$7r z$2u$2s#Ed!`My3TZ^DjpOi$Y$p{y!=Z(Un%$+TuhQjy`k<>`Kae40cB38F@SfVR9pnbZh@9I|Vy#TJe%>kK6??~$GVk)*8* zM$C9x~`BaxWzqcDE0)ZW`cSPjlC=w4A#N-Udd$_MGiaz5>L= zaQHYWH5LO#L1v-R6jJ*|tFT zvm-8gj1C%Yom8c8cYLCaQy3E2v?jq@?b>Ec#b6uT)l9)y$A@z%x0+6Xhz8kiXJC32&Xecmz)!x29&R zc<4|x(ti_nr;$SpD9AMeN7~;fGF!b3?=r>=e-qRHs^63iGyL)NG$kFE;=A&we!cnp zMpF<7L$L_)&6+Dh>iI>YFTKrF!bKDD7GXp`fbQEo-w+^Gdq#Dr2s4g(1uBe7?*j+9 z9S>=wESF~E0Tt2r)uodwzDO7VVGsB>^~7t;Q)=M;J|t| zRw6qd;az>}ZdAUVl5Iyze}Mj>PRc+opLPr}2{FniC5)mouIQzVlzw2!=tzy2NWmF; zLd-v=xvIhAaVTrjJfBrNcIj=%eaR!bMSs|O;17-U=9^jZAr@EvA&-Qkg4 zfscH75lZP=h!i=5gox1GT*^n->!0{x)8Ff>!TVmM&BMQ|aKEjP&+(2Sh)va{7^o_y zZg#{!ueQ8qp3O+Mw-JnBa@ks=twi?e=a^AX;E4r@ zT$j7_BXU#w{D;AzmBF9h9mC=Gw%4`NB5%N;7rH~R9vQJ4nY!`3a7>$=bg0dHrb7|d zd{ptDzoSOXDYe3g4kq1>(s+C7)A_5h#H)LUUq&E|{ZP`u8tta*czAWPR(QM2Ih;fQ zaTsL)*9p66dA)Vl668OQbxNM-PV1>>Z(HF{M~xZWPZ1IiY^4mqDD0BO-y%e>pdGOb1yTX)Zg+DLvcEXrp{R0FwF|kA>@juwcN{SH! zZd^fwiy)A_F!Gz=uD{Tr^Hgl@1<+T~0^+X#4U>BQAARlxX9CdYT2<(2^Q^>S?s%qF zR<;*aYVdZjvOueDx9s}z=ER7HbMMCd^6V)nJ8%tW#Lj6u!ff1%hgH(1Yr`l@cHiA& zcRE-rtqisq&gQD;bb+>ScGV?irp=8ELHhZ=_f6*1h*bggtJxoA-=>zTlGKiG#5u+4 zlGMuHF}k(CEGtt9*>Ur@eSp&fvu)z>Xv~88v5MnMnu(p;&->FAu50K4t*$jL(wqu> z>!18geBPbB%97e1S7@x1?~TiM_$TO$>})2Qjr%7l;q3ejel=HpIMneiRu#e{I~Xu9 zan;aDky2}&Zn1k+C?5x#$yd9N{u5xGG3c*QXk4(9d+4iaGL);y6bJ{WS627A{3|v- zk@zzujnr__AwFokB|@E`R^T33-xe4!LK{XFTdp97%`!JRR-u?Z`1{jPt}-mQ7!%}$ zk?+(Y67a+d-w?)PB7q&a+I>p$EE}bRo38R%JbayYB{kT|SAnUgx}2Ecg`$rZ2&D9x zsEsN}IJ9ByC7x{Ar=(48raSywy1jYp(8BMq8UHB@EiD#!aJ5loRd1K;zu&~wCPIw3 zSL6y~;M4ODc!X=Yg7liH8(<}*1ZL6x5?u!U#1R3;zOLVF3R4lZTxol$Ys?@JeK9YL zV*Q>R?|i#YkAGU+aC^J}U=X)g1+D^kE%f*ihG4#Zy11Oz;NhXl)9q}`iFdqaH4pt_ zj0cv^Pxb$b0j3?oT9U_6L5#lCmm{@KL`a~|kl8v;Hjeo}F*s1IChKhi?S)66?1>3GxL6Qx7}FEaEQ_=P0?DlUgDJ zn^nSln3ziub1VS_)<jbC-dEDy8ADz(5+>2DL*#Lh z8UV$GJnKfJ2RVgP85l_%D#*U4n~ex?+9~{^kUv2jWOT~9?}c~-@`4eMMD;#*vdB-; z{A{MnD!P1VY*;(tTc)sD>3lw=4%5F9NSQW8cwCw~+XuSjVIq5f8> zEc>%g@cq}wCm=bQR>`+S7$xl6EtbD&{N=LE|6)iiLb*1mb8^zRYCq zy>E=m4e#)-xrsG8T6y#SU)e;u%!4-H_`Xpe1S(GTfJFTWL={n|q8lRs7P+)=TO`o| zoCSpN4SMhl=GYnakU?Hz|49;tOt%3tA}uF}1b{cAM$$Xj+W^7W*wi0vUW>Z%MJ2?? zM=WP261TDQxu2gjxjAo-CqfOuG1r`GfDHrw_&nV|zRD6SiJvX8kwMBVT^*94FcQP! zN&SGH7#*E>Ih*APIX<~*IAYE))>xU3k6o^_Bg~#8@s&7ZMyIt39)Y?ygkzwI z(yB@%R*;}=u>y>qcCAC4r9ka?ILw4g;~j8UUUU?pqQ}+aSc!p!S9{a7)_i5wW)lbQ z@?xs^!cY+Vv+MKyP{_yTqfx8ufo>Rkk`r_^Rf=-!XfAalha+bo;+?0sa9=V_i!Hw7L8H5hMun!i>kwR`YE zD-=k)YjvF{oN{)l6oRxp5{&pElQmJGAwI}mBhedwwmWl9<9S4*G(0{Y-K$pr)@F?@ zb92yvzpRppm#Nlny#&mqlkyUV{L{JG^?Xm~ZcQf~ez(kWx9qxbO)mWd;c-@$+}&=F zUymqvPKm4PQAn#Yu2gtv2oJ)>cAU8H<`*fFuT^)pGgW5u6`z46^Ezw6MT`xr10a86 zyiNy;MR!|8cUMLC)4Y@V-IDO`wutR2hcc6wZuIECa(!n{_V4fZZ8BLI02%{A5dK#* z*0>&VkY$eq3e=UjD`(ag19tM$^S%C{V9qOpM*x7$*7{6vB7wH3oR7~&PvdPexq+oK zJ3G6$`LE>=*!-tz!Gq!NKg?=NOZLS3ZVbjDHnhwLEH4qtZQFpjjTNr!zHR|3)ionTl&JK zHTUW6`4@(IY)+}Wbi=&jqq#M9BKZ%u3@=|+1eAJ0tW;m~ELLy@J%zK;?hAIL zYB#XvU2zfOZP$^8oc&H$eFgf78;q^U{|al``~#~j@8@&lDV*+}scB9LMO03Gyf9UT zKMdsN_K}Q?ICxR9(f9x;`o^-e7!+(J%0eRzE6`R_LlFSHYNCJy>4?E#*SF2X2Z3#H z316)N?9)=HWfxd)X>V`u3nPIkOEk88BI5gvh)V~a1CuO6ks~=ozD{$N`Ga)?63Fy- zb|ERlx86B^*6$xi8NoeDJ4uhTIAV=|R;UVzM8SsfG9a@ApR6^EI8(UMHy zRmBG!S zP4^9&l{QeLV}Yj|_lhcaQ}-SBdl&Y1dp(@FkKYZFfEc9o+9E$vd0dSoYd5-GRyEx+ z^$$1c>FMp)9}if09Fti1;J-=ex-Sywzu&U)h$LyhzcXdLZ@QuKbfYHu^gV9lnHPQ* z5-c@q`vC;kppb@!1|9d)sDv;op=GP-T2hBw`$qm-t5pu%(qTu@G>_}o_q|RY`>*e% zM%sFtx;)iqY44=!OCjGdnCP$cHUcvf>1S*|aOUI`Fg2c+)oci3a(D3}nn#zjZ%J4M1!+QhrsQAu^V%dW&5PmXs1=Soid zfq~@mrqD}F4+HNDqI2RzN_#J+SuCkrB!)dcB&E%RSESE+ObR%SB?0(LKrijC-Mygu0tu zNpXnpX`1TUH=TwLvkVwdsn}fNw~T>S`i$*k0kSjWM;SGoJP;G9FFNALcEN&7%UH8>Ifpq7*=^HNC^azr1^DdNM2oh0P%L= zRuo3>=~%di>9Jw3QFIxP6f3ZPpH&LUykE?-3F=-(ZMrgz)mNzWtyMnzoEq{lK>_Lr zDLWo#TFn>Gvx==1nFMK*)|GmfpMShqQOL9AwK5(2W?`@AN|)A1P>TB)m7z`dxBCmu z8)RI1K7$+AE3fWpji88R_A8+I~Wj*F41W425&e7-a8 zHI|F0yv?*_bz3x%Rx=A=)C$UdQpIU7oet_U+Bfaq^LDuU&n<}%`Y1%W7IRox9 zOnRb}io<>X+3*k;#od9Q0I7h-&9AR0e0+Q-EYcchi_x*Jo{J^v_ikPS-f5oq`?7&9 zU+90XJEMFyFhM*BAo>4D0{!+542MH0a8Hivh}(HcD{=#MlDV+DfAp@0GGCZVO0imdIHymR^pcPw z&QW8gM5=k{r^^t0$OrG`s}Sauf>2L+GiLH)#pV_mD;H%#=(FPJXal@AhhTH@z}{Cwn#z;Un)GHq?4~w!Ihw1?7gesL+Ch@Z4yHBhDJ>?* zYs}_Z@lHp|3)(jU!G+;kZY(2T*09{ZQlsBSqrD*A|G1+(0^`?;U;_-}`R~?j`;BUn z4YHR%GIJQgakPx1Sx#YHwvPuyE-pEgWqsyW$%jst4Cav(S!jnWs!-d6wJ|=;5eLCP z)$G4W=THcC2(4Vvr1&#B-&3^jJG~$2+TEr%OO{~O6wMJ~Ud1*bneP zIXcUklI2YuIJQPyJ*L`#EE7597J;JX$pUf-E^x*TWlT~kStb84|%GAqH8 zr=|LnYpfk9HYHyDR(9kCw?F0Qzx8CtHDrM# zP@$eHFX@cg1O3cGpxFKPrv7@&L32LJwzn{$(d-TQ_+JmE0L&;9?V**CjzQqrszHeA zUcEAt(DXx1_=a1!N^ghvDCN>=&@*G|s_4W&dB+s)r2ci%nz4=C41zjhX5cmBvgbwf zTWnY!Rn^X_oy$**Y!O#7)02^nKW=idlufj1P|xyq-(!!VO_n!XO%bMR@zBCoVe?o< z;nN=FFU;oGRoQtWppul}R!dzL5IGhBHQ1x2+;8wile(4Muc3X@#`%VSEB(Nw18pk1 zsol^j#c!Aq9GWa1m&nAl=k@ZKX*5|%tX$Wmg`qQ}-&lumQQkDBcWWCtGy2HbHn4T` zOEn74?#OM65c!Q|3YaI6+=2#kSH(lii@2ZRMI*Cdox|k~IenJ9vk>c0+|!yJ2bujY z)fE`ksnZef$Vn-r$Ge@}V_dQhB<&d)Gl5JFb=?QxW#hiF zQ}`&5VdEixRXy@TU_btDg9Lel{df%-CiEJ+2el1oC=%2E$yY&I!iS6Gm|ue*A*W~x zLLWa8s`=l(;UCF{^SBKL12o%SMi`_%2=w>WeuVip1ubqDS+&7p{;hil2kkjIVoi-E zmX^<1>P22-+jkOr4_P(cDq~~-S`H7wm&hNe@|_afe|lx726OX7D_(B30`RIe6xA?T$WuW=bFUdz*@;P7+D8GBHE zY-RLz;2KEc8&d#*cdq$WH=C#qVOQHV?{mKk`ma3LOM_d^2B89r4%~FD*66E<%Ju+d z7{%DZVpXED9s24br^RMQkCRjkXXFnDw%?7+KMOuz)dJB;5Klf7VcKF2_z~G?e^s3n zGmuWm#{W+WkCr}DJe1rWup@`NCgo0M3BBbXArCQr7-ZzD(UF})0QtE=+udy1%uzd+ zgOga*o#pnx!=a(xm6a#|eqC!x;K>VF*{n51Ey^DFCXnJV8q}iYQUWdr`Y?F3JL9-o zriEz=hudV>ZVbebk|2LIo`3JU=f-`@bNO8*Sm>`!vgSc8?j!g*jt@;%+>Fdh;p2l* zGLZa=j*AL-(2n&|OV{c4G|Q1npb(509;#FSlI5TOd>FLnSNvQA>34qX2A?RNP^Fw}SY4C510i(ovyKgz^sWuR4dw1Yl zskkn%piB)QSc$qGQClSc(E8Mv&ZVp3rea-^)49m*Lf$t7w*MIMKNzRnfDl6u-I@Z{lqoA$0L9HyH`_;OZL@ZkV3{0KPQi*gM(P(Oy(c zsxpp~f7jHtVp~;0*XR9NW&hb($)yyw|0m)+4QN^?chzLlweCboiWIx6N%no>1gFK7 z?%?N799$zSl?|6)u@#qx7qdFc3qp3M^j+(cF$c*vr$-di5Zo4(G5{2-(khoBm{0GW zB6d%`lL-l*OGPDYE>yYqMl)Hkn0xGY@+F)3FowKB{bpr3e{z05I8fOiZyv90Y(=ZqFcv{=$oE4KHj}9Cq00Ae%UZ%zi+XP*Ev6X-Yq>q`pkTx z)cH8i!b0Gw-CeO<3hhGa+E{=ed z+QIa;sMLRFrnGyGt!pGEq@lrJq;Ot0&JbeZa(w$(me2sI0A<%I_I{IDCg5p15uo#6UPSLMnj~QB79vPr>4Ip2evHfy*ep%&VlTCw^+tp zEjUch@|owQco$8b_$Kl#&!wtdsD19udv^7)TjrqlpSc{m%?rz*x?91OtgyvLhe<$uYg@n&S`Tw(ZaT8o~QmCa6ISCr5CNvp`~Xo`UZ zuIst|;lcKA@pqfawRh`QcfOJiJCn|v;q6XcE3uFgMGk9paWu!0NgjK6&g|gcELdz{x%QO3Q7pn3~1sP+3B zV2=d2HY|27v&S zG+k|-OGvb>_s0VTL&~M!xT1mjLX2CZCY$;S!d30#1&o)Gc`T?FH+3{$l^Ov=j08K0h5Caz3ckv$6?A`20mf#&s#sl z2q{3LIuOk6S0RuN5x=SXW}K;~k6F!7=mPk%R$+*aLAP?-Ud%xY=hH+F+*w{2Zmbj_ySj5$)(m}&aXq#j{lI3wwi<^o z5Vdl|q@g`?c?Y4)6M7x}zDxS>!bw8cIo}1sH*O6+iXF$#xTxQ@PcsS-q$S55F%4;^ zv~*I_XDT~lXV))rUoys z7t9z9JpCsabi6-aJJ{u+yELEpW&@+h9C4&OPxIJp543iZ@e^cM`OPLJyZ2>>g0J0v zRgxGe;{n1_JYeIP=$q5JggnRkD#$MNn~jH+Rcz4efqK2b#{(@|qy1MUI{%5l|L;lu zG<8{z5dm9#k8c0QQI+WDTAINS720(=Pk&SMp&WJ;C!z%9C9L5@N#njuo9rBml5tXDW}$-qtyDh5dJb{|$v8(ms8?;4hLtO|? zI=N(EcCRw7QuPaE3Sc*q8|C7T9HBsv4&J9_0|~iMw*SwHi2!!Bz<I3P-DhHZ!qRi}Y2aAe-s;QM?fnw^#nQ%$B=ja*c&&6HeD%&YW z7HJCR%~CR8Ne5(fkkjp^ZJu@2G%9NVzSgRdzh|itU|QvV5-5j`%0?u-3($vf65&cE zK96Z)52R1XQySg3Lt8m%t*~<+cuk)i5tTUvivs`>9Y(|r^|MB}iIFlrj~SWTJFl@r zk0RVMinzBrzns}5jbko1V8RU~X{`-M&dHwqwqH6NZvgpcKn~k~ABt~oruPm53Nj(u zl279Yi;vTAdqj^EN_||l+)>CX`molC-iXo@qutbSa|&FkBloaCbPY21h)eU)tc~NT zHo+1^k1~gDE^o|Z?svB@h%-5345<1=B2JzT>9Z0K4WGUst9A4OW40`z9DNsMsGc5Q zPV6}?J^VScnWZshbL%|VEjgkJ!A}|y`OQ4Y7Gu(rxstUFmdQ6r@fg4KlvUL<=GRSn zeD72|{p;6qM{#aCNb6czjYP|?uKG_VPxhUw+q*R5j`XbZj-%ATOcwl!$o-FeWDwm? z68!&BT%H)%)(^HwQyONUVD&`>RHcCQOnhF0xxFNug$y9iO^gtS0dyCr?T&SgSAd+-Z9o~9q>iYy;_E7D(7MIm}HrS6SR@(gRf zhK&7vBm8m~cT!gJtDUf=GogTVyJq}JH961fUuV94+?R@5yO8jvz>%ty zl)i^5f+BG}*~~J9kSs6?Q*JFpFohv&4zlh`G-6H>Gb7DeYy8>JtCajwO-{40wI9=e zYm;C!&p;0x=*hdaZSCk)i&ox=v8}>O!yt_U9Bs-wDf5yI3FKBxKn}DO&T5{GVqh4x z!npMmYch={`J+1bQaS477YmngsXVZvW|0Y#o*sSPF1b$s=$lM2kLGZefU%c~Q=+|M zw@e(am~(;Dgh{q~c`qh%!<88SSXW-xp?DN&%vxN%2d_N$w_fJ*&O7-LIWeL4;cQY@x?PCa(jMW8 z`f^FRcGEDInlamo??LUumS`Yr&1A_Rr5a|dK$c(`Gxydd`xq02 zwdl=9442wE7_A#$Ob~Z_IvSk+kjvRRvy7CMF%zGMChv(PqCWDu;c9DLiFhJRVMBKNTW0D*MTn}&7LFo{ju?oXf%uFSxp+E97#i&6j^~tM ze8SMuyk+3i-d0q&RJC=G>}~}VNVNq%ih1mzSnc+zn*IT#Qzy&|Es5zeMSeT&6E+D+ zxzY_Qq&9g8dCr8pRE^};#=pRhI2n80rcH7hMDN3*q`$WX zzPglNpx7Q>xM0R+Q6sO;-0#f}G&|@aTsdIYpmnybz4e$1K)%tI7)olnijI1DfQjdf z;&B{uCJZHwAC&DU5dYD&#wIUd(fcIL>b0WkY(-K2TAsl#%bYf<^|lJ8ChOcfg74NJ zHcjP3QI_$eB0H*j^`Q$X9=%)l8Vir#&C85Oy;QP(Eb6GJdw9;r@@``;UA<#ek_a!c zN%_#jlO9Me&LhR8GfWV_uxed@F^y+KkJ3e{(QXusL(fW$EM?6W(jC&(%i5*% zMC+veSP1;u^6aFmu*T}+=IyFSi6X{=6;CS`F^LxmKLp}yBxVM*g`ALWO+fD#w#2e8 z9pd&abFZ*Z2ykE})roPZmI{JUo9thkUyQA4WPG)lSKjU3IOq!`_O-YhbKjP}Wn0AA zHvYZ7+;Vh^tMa`NeY>z&H-)(&$n3GPJ#OY2cdQ82=p0!96&kXQnlm+;OZ>ZRJ{fM( zW66$6AE9HIWer2ZsCG(Iq}I$@W;1M9oQCcb0n2=4t#xh_K_+J0pGrcNw!wx*%>~u_ zh4RFb?Dd)MR9x>|tY#&{IP>8;iLfBLm_N~0D})<0V|ag_%Il8Z<5 zenld#R1){5j6?zTUfJv{Pp&?=MAEyGB2#Y&L?qx@LaM|mr z1q8vF6BCE28n2X;99EP(nV^J`ZEaXhVy*4^_B?7zuwSU3$iC(D)mL-vgY9c=BHU#( zcxdv4Xgla4t-@F|xkkV)Dbala859#^dy4X5y}RQ&d{*Yh)`VYLG$7~e*L^hTWy@EU z$8(ZO@svNQ*GH@M!|_ZW#zZrFu9@2Y3%^yF{4x`R8X2Rs3NuhxK!#Mi8qFy)Hqm1D zK{TAniej$^&LgZ-XqA6&H9e4B1&m5AuD2=H*WPrjKn9bJx}4{bcSo4fqBL(MVic)3 zYxG5)^087#aOwc><|72Tm|K2Z>y2wIda}f?C)`^n_^QCJ2E`yP>i-UmG5xL#@Fi*T zAR2w|J_h{C#J@O6`Ep|j&6X_k9DZ0iCW_MZ*@XK(VRTY-z}$L8$(^YWe|Y!pYfJRn zloKn8KfR~Hr}xq`v0DX)4yA={KYN7V?q#+(<%;3WOP~6~RqdO?!=>P_M4nz+w|73i zl-JOjd;cVB#(*=3Ja2;#ZL~Hq?$9z<5t{e>?n&pXuG$2dEY5Uy!%`uAG`HoIJ$#Et zsxP*HgSsx9fV%tFd8Pk7-TJ>S7yBRbB>o>ILwOO;WS!#pR>S^8GFo)}5LZCO##2p< zu|b-l*qt5DnkhGrGhIX8yLmMCp%J4Z zoA%8#*^!;3w3W-7TQe=6XM9>ie)V>(K2!zm@4Bj|t2$M)G8Y?SX<6vj?xOIn&l`r8 zU00^&EG*DNLIi%SwOw=;@h&-A-{W%uz`Jv9Zp;%FZriq2NOP93n2Cp_NOR3Idl87pKMavt8wVIf`R`QYj?8%@>j%G9%4 zVHG1W?)Gxc6KUpTSu%k(>cno%I}(rjwMrVW;c?AzmbUY^wv#XEt+Yh~53>;SB8<0U zJ7>-{L@^JsGj>q8U+;Rd#R=Ps50e>WVA*$GgD2_Y77ChOG9+4CxJMw!Wp)-C4%b3y z_RMAmo;qG>@6`WbVvPZg9SBMr4>}YKIfs`9#YSlK+9rhh0pFT1f4m@8ooka1~ z+o-AR2{(ijd&ldh*0;4q3ClXq2byxp(9vy4S@J}6Z?FM*e&Z)*mb#GBEZd=^ULG4F|UUX7cseE zESkd2LPxkd*rbY^H&PId@WN`x>psXvzPI06EP0~^RqwQD^=+jr149}#C7^&PRVD3M zY4HC;v^+44>OQF<`^~A=`0)+i9w;-k=ft$V)`mshVXdvWDr~dB_%#a*;uv^y(D2>C3Aide+ z^~idAaeI;^TX+}ty`qGTx#!UamemX4MKI(^6R)W2Xg#G(c53tf9Lrwy55Rp=X_95q&Tuwo&*%cWL|a8sjW*uK0g^ z5C6A;!QTf-Msw(OQRX}xEB-$_*&Glycz>VTVI!!-8bbnnR}e@-R7Rvw=<~P#3-PBE AdH?_b literal 0 HcmV?d00001 diff --git a/images/reenrollment-example.png b/images/reenrollment-example.png new file mode 100644 index 0000000000000000000000000000000000000000..857cb2a3b684a5f6ba0637640537435dad8e4ef0 GIT binary patch literal 18231 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 literal 0 HcmV?d00001 diff --git a/images/store-type-advanced.png b/images/store-type-advanced.png new file mode 100644 index 0000000000000000000000000000000000000000..28c85bd20ce10f3f82f96b52b59e0036d4e72612 GIT binary patch literal 21759 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 R;L=isla8np)nEBt{{<~%mH_|& literal 0 HcmV?d00001 diff --git a/images/store-type-basic.png b/images/store-type-basic.png new file mode 100644 index 0000000000000000000000000000000000000000..62376704ebd2f0dca3600a9d69314f0c4d0a0897 GIT binary patch literal 25457 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 Dyx0)j literal 0 HcmV?d00001 diff --git a/images/store-type-entry.png b/images/store-type-entry.png new file mode 100644 index 0000000000000000000000000000000000000000..0f63d20b0039e580314ce689762f07cc39735cd6 GIT binary patch literal 20231 zcmeFZcT|&I*FK1k3N}PVKw3}{L8_ui2Yr+-AkupYpmZq#LbW3`)I_>ch0t4okVHiZ z9VtoZp$9@w2qh4h_&(qK*338W%zU$E=8u{6twk2=ocqqnx%a*Ib?trjJ}3IAffoB2 zzB4Q=EbKbkkDsxy{Pmvs$v^cMvu6%H^OgDUnEx}azga4J1(ukN6VD&&KV)I4hMYZc zJjraIeyMHg&%$yk;LqpSq^nRc3yVRP&f|wB!FH=lmHFfI6UW(?rtBG=`(lA`-pIlkzA6T5lo#Py4R zi(p@zdY9;QG|r-!s5UOKF9J3Ja>nMWg!X6!tzNAaGb>f@NYVApEAf&a8!>eAeo7a9-VYl=Vu-IONjl10ei6v z>nq3h1ZyeD|nt9=A5s&|MY+YjaxKlj7%*qiSD-JS*+89l;+pF&R<_fCAs?!Dh?@cXhf)}nbyialJ7CTLIpe!%7DolWW!-REwpEUb9 zv1H*n-_MdXr29;*8QvNk)^M|j>~WJDV6yoeC+)M>P=DZ|MtH6I@-25_Z*@Z0Xh~O$ zZV&;N3iYx~SGD#!kLq?W>?Zl{G^M<8mzWL64u@1nbnyd<`F|&#%8{DfOXPUO?$@F;Ehc<~c;GsaU#?$f3sn zwtf(3nX<}gf2778UXW~cg+3Bk2e5&qRM%JuX|Us0hF%;(nk(07?!-)=Y`;X|hSvf@ z?cO(YS4VOxU>wLy7M61oM#4>q+uUyxvDsdKmpefXE$VB0X1-BeTxY+)}#g?xX#d#W9 z*M-|v%Z5S++0$O==ty|Htks>Vx~=YIRZ1=8y9O$(5AN-cMhrPE$~T-8H>-Fl$}bN# zYU|9Yutq2sfVwQ*&e_7=i9gnLHk=!T}w-w+oBVpw!rNg)i3fA0dnh7y}Euo zs3FS^#gjRw@4QytypT zgnOd;kvX4g3%C4_T;2m*d4_8hCXbR!GtDlK5tg!5wo`j&B`i!TPceX`SDw1$oWzON zrj4>d{^xocW$9hx46@BPHKDc2A<)~vU&mPL;GeLZGdzViWoV{W?$Zx(d&={39`57} z#%sL)s+SfAlv~PRXw{Y}4KE+|dn;0d7uD{T&rH4UJ6=9rEQZWLlvgz?pQQ)99(2o( z%t^HmnR*c#rIc%9{ON92bLX;v;R$N6tGnaUTJwhwn6Sx>z3*O4_?kl3%bkg@l=k_$ zXY*IfwfN7QjD1hEF%j0|R}fj^&%l;*mCzq)_lcKzcqdH{zAH zPA$crU3PX+9-G6>{8B>QBnf$@Bt#VaTJ)}0A3H5^MpqqnE!(S{9T_WI)*cu3?BUWG zPpV7bo1wbAfr(?HpYppa^6LWx^e?o!Tyh5TDa1~z`xAPdg!*+w@->xNZW zkNhhQ_Lu-P-Ns?!nOqM)6v}Ft_!WKyKUzrYN|;{Q47$r*S)wrfQa79u8auF(*xRoD zxdur=yFAdxbD>7b zNBt3Pz(g64gEbo?1@!0Hs|SuT(Dz^l!Nk;6x5i&htg1e&8TyEWL0r@v)?E+Un&8VhqzHwBD;k`l`2 zyXJW(tAlPhJZkZwyLiU9|;hgopbrG6;SS2?2WO%h3?(pDv4k8EJ^(>*rD1a8yerTX_5x2 zyUf!(F`*;!VXc|v<*y1l!$x%rGT}NzjAcjVE}x+^HvJ~^cUXt)nx*N#!Mo>+O7_^9 zw}@D1oOI(AFUFw0Ha?_$Yl_I?8?fbn2~fTWG7jVrbyc=rZYU^%_m}BD>FhA9MPuhr zSPwe|oIFFjs1wrGdA(1U%f~Vu801yncfT|N|F%$Lq$GBHnO^E`)BKAptNF>cuKoqQ ztERaLKe5pJqSV?4qjoBmPXvNv-)eu&ycNtd+#-FmV}j1TSY@~JfNG&{8F{RTP}G7Ht`gDF zmkKE)!JlGu!C`Atx)Lw4yFY&Rirhdp$V+~b^Ln_^oBtKO^5lL9ZQJV(VdUFnjpY8B zA1%3kC5d*SLnH4`lo!rY|5`@j-AEt7D*wzg2S^J5^;x?*+x9~GsyX=b=6$jKP9Ct2 zDQPsDrw|)Xzg_6vSI5ZLg7yI&$2(`YQQI9)BsNr7v#`CqJ{^#n-~2AE3h|Y7qqQjq zj9^oLzw%u6CM&QfagASS6)TZtJVL@=boZozN2tOu{8a2pjrqKV?{TIOBT9sQXSp_WJuMuUjzxb6?g@ z)?&`cz@bSq_P0&l+%BT^*;p7CGnyQu$GW-_j?GsOmi6iRR&KZ*?**=BJGr4N2dtF% zJGn(ko<^sG8eA>gEqlZ&@O$J$<+#5WIWYz{?*mm=Ia&Jq%$3#i2Kx9DloHG&yKW5& zLL;Psf$#L zh9NFV_m7KU$=n8%L$it2NcQ{M!kbUJf=B~QCLyZX=RxlG3f3XlYv92?^2(s9+w$(AM?wKzWt`6ulfCVdCH?UWEf3R-@Y8p_DFeT{?q4qJw$JiBdhl)#9Fv757psJlCrNwxTa+q-o~&dSf=uyZ`_G2@z~Ma#YkGAtRt<5hHH-uu>sy|EQk zU9{EitSCfS@`C{0bC6-cDqX)2UaCe(Fpbx>*mch30**!^-84U4{_u=S2`J} zLBA7!OJ|RZJ*UC?y5ayvCFzsZ%7M07s*0KY`SS+$;Sxpl7_emT{mY|A?e7q-wl*3$rs z#1}+}SF54`qeU(0A<0C`&>-Gbbq-KOwpcN%1&gGXW z`y??*jc3@_tfiuH2vyRF3#==8`N+%)&G0Z2EDxEUU&VJlUzJ}28MFrtdzf=&+@oAG zDeKTN4m#a29{V?Ga$>Ry6YR1!GnBOgaxrDIGGyI`adY$VgdDOzCOS0^8J4ATX~PV{ zdpsX)PNEMwf##u~EApytD@%zA%gNg>G|EpM>932`8mp%_4cNvy?MQT4g|-6r#9|N{ z(bW=`CWW>225RwA@3}5U+7B}N?;Jt=*!rBqCc{2oR|jd3vsPB*$g?ybCynhqM&WY7 zEc&{fqO!*Xpbt}gnq@(w4>*-El~sxEI9yG=N=!S+a;3K&Xal#}Ar+VE{h*s1m8ChV z7ia*Ef4nw#r^0Bh&rbK3$P!VH<9~EzGlQx+F1M1slVfCI`-*M*CAL?NaVo4V-&819 zSXij-Ko*v6VaPF-+mQb+clsn!8pZun37PT$(p8Z&rQ%~0Zl$J}3d zKWt%wlU>Yp(TaVp#xD;|CET|gi?m~*`&^(ZT;cPYPoLF_*Ogu}OzAgERtX6>nv}gz zZ#i4W9cg1$u6pCi%7U*}nrCkR>Gb({aRnu-&byqN5WZYX9Og=itsoCViCj#GG*Vlq zv+xn=-escyO()tMdN!Z;zBMyzRPErDYTB7OLdW$!_=UEiQj$ml(wU9`#g8EXs z6tA+dj+k};m%??ehx;xkRcNNAaXk7W?q9bRuU7yOP)!8NL6kd5rD+_BcYgN|ADt&S z$XL|%AIU+PC}>_bV@)s+A7FdxMH8_!)RhL(|G914@KU^)e^R+ljnsE9~GakFA zC?PXK&uY_-s=yzHVQ)CUr?utJ6$ib{%!sv%D|oUm%)xu@$9BpW{Ev>Yxo}?{%l_8d zBc{`%r$hNGLH;!0M5|1jX|>4KN~!=5t5fPU_G3J9$kAo{>}s58OJZz zrf+>Q8Jm~y3!M3CB)^w%i@V>8(6m)I)2z11 zP0W(y_2JDdkay4u?;m$Ss615LOn@dg^(qe)SYMClM6=Z7iYoc=XVzKe!j4V(gL=*3 zMXoIgvu!OUzSQ}3vvwjy0sh`3>9#l8J8_I0ODS8BR5-mn1e(!YhBTC``FK}-;S(5m z7*HVqe-PMOk}p0;Mp^Wj>UA7!(*G*r6YV|iT)$}cM$1Yjn?1j+>!rttUV(6_;dg>- z2b)u+mY&XnO}$@fuJ~$=oxIyO&9U518EuWuf^%N=;8GF6Zk382fz>wiPrsi8-z8%`CiUs)oJ_5_{BU= z_2to@Ci~%1^I-n{$YurcaI})QH#FSM+*2~?WECZN2ytnFl$Hwf$&yhX+3g-ciGanM zH4U?K%}sCvd579_mVf)XPSOd+ZOg&NWegpq&pD7EFsxv_Mh6f_?NjT}7lEgkSS93SG*#O`jkqNoLE&0j;gcphp3B+u z8gSChxI?qQ@fF8I`0|}M+9;ZP)N?|`rBVUM&WByi{E=YqPg)1MN`X z*H%ISAx&L?j9Y7WiK$X#jnFo39d-|aBQkOjaKk(idl3P9{{0}fj3_Ep6*PiMIiDS` z&%R}}4#Jjq3al~~aYa=h*t9;@Foy0!fd%mXTd@I*;8N%GxlN1Ha@oq_!xiQe6NywD z{WDH&RRWypAk_4=OiVt+rv550A=NKls>2!;i zmYQQr1h?B+!YX?A+(GZum8!Mn8tHXwpEi9@pN{rV$%c0d#*0|$_yV=8gPiu8t=|eh zP&2C)QaR>z((eV*`>Yy*q8${&nT61_tNiVz(05?m@D-PeVCyLUqDiSdbchrvtsPsZ z;x0BYMe~EZpLZ(!yYkXUA?=^9zkeqmX+i4MB{Z@b=A1hTQ{fmA*xGB-26VSc4YtPK ze2hFDMjQ4iaWFGs%~^_RU8ZN&DzM z6WsLm^_@k#6xLBVXWPf3HV9LF@{lUaODFZf!g`l{`BBUxna!i|d5 z996CEe=}`768L!9e2HEy_dxE0`1dUT_ey8})?BXg{?%~3H~S}URmggeUsLL}QoLYw zq{z^%zNYzlu&)8^erL#g*Ejo;&yFm@r^N>tbMB2nv{tpz*W{&$3bC$rilB zjQVh1(Psd}P}f)To0ncFEugiQ_K^Zb!Rs2^iG~Cy-Ea9FgBDmR@Zc+)ppK6(-Wko# zv=%hA#B-Sx{!%S~RvYh)NaiOqMJ#bm(Skr1#2(i(3 zb{wH;BLg1= z)9y*a$yJl;EM2&!h?OR6L%x~}_+Yr&_ZkT_R%#|H8Yk#6u}O|w@R2&Mzc?W{Cp(d-6^0A^M%i@gkd@l{D@Snb6U>l?_x}f3F1gjf6+XeST z%9SfgqgE>h)ls^c4Q(My>Z8?zj;ez}t@UzdX_vhuOVWP3yPZqOvmhi^Lc&A~_(sy- z8EWZyH8q>--CT&9&Hhq|@NJ15y9S@Llm=UwK6_@j92Rd;eUr3zt)|NN2lqFC2J{=U zjisd>_^mO4o*WM+i6&G_Z(XwZ*8Ui9yvULigew_uB79r_c>MOe|C&ep`qbg{+oM=n z>uo5D<~hohkKbVIL%(4tkyjVu3zTjcZu@2F?UBpL(KmE z(?|AbslSb?jRG4rf9$#cKjcbR!c?{ykBlyBF#l|QN2d97*1=&5D~d6BVljEF7R=vf zUPzareEQSw<^ezXbL&E^N)fXuM%4fqGn=V<*CDr<&Cal2e*@%M(WRxM2oFMTlu^fD zT~7OEKc(=CR$p@nAM?cAUrKOOEJk}~MSFKy?Ph87{lJ=G^lR^GO~T)_7ER_@Z>_5n zu>)zF?7ZB#R;OA`f;Ri$uOcyb1#YlsnWjm|uSq`U4A{Msux;*-3(Z%`FKQSKP5o~! zKEo2j-DiGAm#njnUz3y3kHb)3r*o*>_HT>Z2iR`l6I!=X+CoxEJVP67uH*8v{qH@3 z0E*t2LLvw>AkjG2Y)1@Td*ZO16@B{d3NC$bD7jon(L)?gU0e{3Usv~u53_%>KPe}d z$vhsY>-nKdOlXdqgSJ_?S)k5VNY9s6XbH2e_ zngUmR@7aEldEfmN!M9k!6mGqd_@~fVN6-mOL$Pm2_w3y?y&2Ko_Bth>=X`;#y`Qce z<)!h3%TRX559Kg%k=1$CvUd-A&DCny=qWm0AK2~-Zn1sxUViSaa9N;sT`qAe#tyYm zJ(LcC9{A0~a`|2Hjb}EaGhk~uyEDCaliuDBbNJaG@E-jbU_5lHOl{uRXLjooc3?HD8+pKqy478MCx5gb=;*#RNb^EjSEsB6as-seuU)Kx*eHQ zcDuj#+}hkct2Z>8*zG;6u>V?w3;&(opUe|k0#x{f6;+e4L@o(0+g{YOozGH$V~P#5 zf&tb+eoZJ5kf0qAH*a{eo)?f1h;AkdHCMbYFyA8U0pL{JX6sZKNQDHy6~mW$#K`4PhDAy$8kR6crrYb5P`_0WR>iIDe_O{xA2g_3d*u{PVK@FVB1dchi6|e2!e*qiQq=#4|W}MxfYBg?>n7^Z-jD z;>$docOdcj2LsEaWf$w2FvXrvarS}`AcGPKIST#CzQ}bJ zY-3u#4qxCzza|6=Do@^wUFBco_6U$N>HFvF%savgHW!g&y7#$T?#AhIH{Q8GgS(aW z*FROQ{1=v*N&W-+>^uK6swZLp(1Q!Q9r%Y8WbOZh6e?fO`?_%b;RmC)&zPh%5DM6z z34hT!6!wP<$l_f8CuH%zGc1#9_`aA%HulTE%d7Z2ob>hKt&ya5p!+-S9x*wwUkQ)d zb$>+w+ zEdjd;k|UU|m6my&=l8}{3xnKw4=Nh~X6z=m+Q(f8ESYMhgqS@QHCx19VQQ))4{zGtT@d3irr8oEXC;Z4=NYgJ{H{%N@TUaNzR7YLlT_wl!{!H=gee z8F+Wp3L$qlfTxB$Khw%kPR@6#r)T|{j?r?!qs=Z^SJwr-E&^dYKTRR9Kw-IK{+Hk9 z$mS5nSx2cj_rPbe2>kmw4}TYClDWHmb?jdgq_qRLAw=<e&pn=Dy2K8GlsXj4yQznp@@s3eRED2jv{wC8Rot-`roSu@X;pz9S;bJgy# zIR;=y2HJtAiMCN;np4z);MkFajC54iX<7iR3z5n`se+qpmF#IgG6;x;eQ4oGHpC3`x&ZhNfEW7nZEK<7Rhuvr&i9dhs-X$_c3AJ36_T#KeO{Y zyrcpSD{HbUa)4}5=(@`{8tSudVM1^1w)ON5G;7sh6FmDs94Px5qBhOqc>C-Ne!BJq zoo9~PcaS}K!O*oL$lzVoYbQj-ZAkf<`X;U+4}*>gc2h_0N#vO~e3k0HR|OrU-s zL(h=3Rx{gBvK>#fyyb!L$vr6Edb^64^V}&~st%DuIv6Y`1Si}J&<7zWPp!3@h6n{_ zq7xmUf}yyS?diXi_rAH`Sg4--m1}1|7O>K;YzAN(GWzoKrI)R3IA~-HUY62P)7N2_ zmV<;hSD-8W;GLMV9ooxKd(TqaTpEQgyW|KDaVo6!$7{c_tL-|)Imh96;*Q+u!K4d8~ z{VEB4@7tOaV|Bb8IFWLS_pVGQJp^?0h#OR$^Hd)=^+UP&_7Ja|w4r z&b%TLoYrg;Uf`XZflL^iq;E|Wbe$Zm{O=XCSlAoj}BYoBVMe^IusXa2jNSH#f zFb^vDvc{NirXh|hR?vPMFNQMAo9TKLFs{vR?Q&2^MY{goIQOgIGWCNh_HrxDdi_)|h!d3&2>9QR}pA7wS30R0UJjsT41&C^!zjUZ81XCk`0x{6ngy0)KH zKT8fccOFqBjD6cxYu6xi8jgu~m}%x%*|VA#e4!fQw@2S`xs!ER?OY|$fo>7kYqoTs zIaE2{^l8W@d;d)*FjVJn34eGH+9a4=5+dxq_#0}}R$?QennPB)|5TFjiZbk$@E1PX zgJ_VKS>gcD^7dy|WzZZ8tqO{Sw~yC*4yc;`#AEGOI(R2y)xO*5J`y?=l!syznSER8fv0rZegLQa;j@$;&$)CE*gZfN{;jy;gW)@*FH6ImJ zGL6kx?!=E4XFsA^^oY!O_2C^0>-m?*ELZ$rFVi9_D8p*w0hww`SqhP-iut!oLOsfU z0Y!yg#K)`P?uVnT077u$n&tZ~n?1c#y>DVHj`z-PuzSr{ z*K(QYNR%Mt_{9R@kxW|PH#?arjJq7XR%u|_=w7Q1$*)%&_|WpjP;zX(3kV0Up68H; zNK0tpntXS|AXHi~VlL3CH@2aGd5=TsLb>KY2f4 z$lt%9v&ps#NeVui%WqJ`jt901N^^{>{zj`y1Vjah??N3c)rUm<-Ok^az2*gzEUu4| zFOhi^B?(a8OEX&`ZE~4!INV+-1i+iT?M*l7u$4;jJ^R9nFXSLVl*v!_Rb<4I_>X+U z36G5eldwkcdIN@o=k95eoo?hWwfE~kINtI-y~_uFl$IkY~bx6rI345nsfqVGuysux%zO>H{vWs#a1z)dS%WS9>R5kC4 z%%;QC0rqrsb`x zpgWTzC}hDl%y=ES6v?2rV0p$B!OiD36NJjeiAOgWOBzC#!x#Ahb`Z5J%E24hcyT6? zK1Dk6(;7jBPFzb(N=~J3v={2Zkn*dT#RYsDM5Z$l!Y6}#)Kc%h^Q*ys;w-{8*oE+3 zRZDsTxo{w)*0=$B9&|W4b-6`k@Mz}ed}PE@i%+98uieJxFW@Td2oG+`ha;D^=1D|k zVspKoYjrc_jnCXhDT6X#Z)l&B!3my0Q_7V!j2>AMv;jdTsGw4^54nG8!FLH?x@#SA zI2S2-KxHF~KAw~s-jg{}cEnNSQL~TBi0a4{d5%LYmMco6MWlZoll*&d?I3Lq{=^-) zhBS3Knh(|cIa*zAq#jv7wt;$fx)Us zM}HKNocttwWwk=tT4J%w25Rs(qH4{5{`Z-86JNPlb0}#XyhIx@CWZe0v)|nN2&J6XrOse)yC; zonA{jmHaViT#bg0PDwsoO{zX3#sd%6j=~pTYn}B&=tx&sp|{!O4+oD_>5=0gtPHVT z`nS%lq=W7j($REeg#FFrEg#G+nL`Vu9^>M1VL@N;x=>D6@-^AR$o=g|m>n&%lDpI9 z#_as2dW26_ixKoYQoEmGkpOU}tJ8}&2b%16M!CUmt^AS6FlVL6$kt(k{m9ivTdDI) z>coKBfSLJ5M?*K;pP&M|b@H=h7^yc%Z)a=XR{ZFOH%2ki@`E-Ybic&=+%lVKJgh)D zbo1HHW~GeJ!R{M?zFqQ?wszMTQaW(mv++js^1`Oi{eX_+;1cTJh%FBhOrga1WIt+k zN+cWR-4WK8m9q4;u=!;*Qt5M%uxX>cRA%>%Cw9KxENDEtQQ$(m zHt{mdvi(iR*u;EN%qMK*Xya^e#~|n&kJqrYjwFXOx9mg926OYdE(KZp^cv(1OsH$M zUGD}cK-7SS3MgREw&oY^!qk-mEtN`+aCv~P#2o7In0la=F*ppp-vg1>eSo$CKODG+ zAm{O??`KGdM;z1yyb-xo$Y~R?J1{0Ej>(nS-g)ctCb?1M2&4lQja=90aOJ(u3EQxv zeu3w%SV-Hk^Zh*a87gr{SK}&*>f;yJ2y&Nhv3gp#Hd_P^HgrO z&jfS5rju_#Wo@^sq)|Pm{p_N4!i6@c3sehTr39tNsN*8VB7Bjc9masi5RGX-m6DK& zZz;*2a?`ekfspQ$CCr}tv|+@Su@9i@ZDa1lP2QE>t@rQsT6n&Q*prG2kcJ`;*Bir2 ze^xmk{4ug|!5xTtYEHFEnseIx!3%70GJW7I`qs8^$_mGSuVmV$`j zJjU>7>Bk?*AAuh>w_J)DI7=|a1uw;y#@Yu3>IIn<7g>jQ&-Ub~c<;BVymp)=YV$_!8XnHy3d~G8OT1%L0eZ*ndni&J+Ez`PMMljIxlid z#C!g=3`8hLF_c*Gfth3JGhdD!q=(TGg5V-NE;E!su<0ceY?aDz-L`5rUe=!1Qgiq7 zVr$IK_A+>>vu{Ll+N#bGsRDIV+xnJYGkmGJrkgG`Pze3VaOjFc{L+tDrd{W~J_w8M zYH_YvOKv2=g)4+{#N@?+q@q62E@>;OIn9E!X{;emnk+RViZBGc~dld4rSVe<;F?3b#_Sa8&h` zaTVwQF^Im&A$ss~-0((bp?B3kSFu@QZLP;fxL|M2Ix&qY#be+ z;&Ku0#&s(A9e)Oc9au;b-@Nq*k805P%WomPHbRl6mYzLV7)PC|OgS1u93i(pbj7Me z`wurmXPq5ySRzoiYtjX&k4v2Q-sO%{-tr&m+*BYTN(L06^I`72wX%<)ROso=Cio<@ z-%K(>pZm#85J3==dJ49udue&U$@_5gXJ`>4^AC<}^(K&kI%Z8^$=5;j%rzeMr?;*SA zSgXfZw%9S6o&We=ydASSiCFWe8vG4e_ltgvft-bh)f?8{ne8a?mb zV?_^{zq23SpNM67b>;45@OT52w)MtvMHHoIQRPYNHQr7UV-}b_h~te>Q8N+;hqXrx zWYXWbRHkkZJX{L}U}$)2~1X$ z4i+0?mMf43IVvUgjFsBH2pZfzoQ5;+Q=xWCRJP=?ZBNboisj|yH3usCo;1i-N`pcJ zsXg)#A@#$_(DjKXe-hJuEG;dKiH%*oBT&QtBu8bhGLivj2(Zv4x2eHHUyUFtly>4_ zk+hzDp$c?2b=%5{)CH628my_Q5jxt%s?+-+x_WxFQ%Vr#sM2SzZhgz?c^l_=kkLX7*3 zc_B{zbqq|~m~KrjK}?3gTlDCf_&G1xH!WN9FtT~8lCmGE_NWgq`W-s>sU1~Dib@C}Uv)5Kvd?NR)CnA*s78CE)Uz$w*E_+e% zD_Z4zF47=iuks0|s7RAyfqm6InsNL|aygik9hAU(*LC{Gd!fjK>a|0%tzHAnb9~GP zW1DQD9!L$wms!?C(>BvpyqNVw(d`Ce`5j*}3*^A(zIi;JtG@SnnNSJShPIiIsuOVY zT`!G@`bLWid`LUiHW^5wCx-ML>~Bd zxK3PHF4$puJL4ESS;FnJyw_+!AKXK>rYiTF*vR|27fU_z#FlxewQFCFR3 z0}O)w=C?gR>dZ61b9H?7Z#g%Xs<@9TP*e2Z{4sqnbGy*dUSH(lNMFRwaLe?MHy@QLimlmfW!nI;32D)>ncmGh%_>lC zzn`DqO~V{XpQQ8YPs}u-ur0}#@rf1Xk83;`67925fRM$~Ni2(l1^+FuB&0AcwMszF zJ+=-I=qegTZA?vs2q&sg-Rh zD|_-6ZTL>;o?({4HN$yRdq7klBhv@%=I);Ca-kA)*n9$GmtzVyThjS{xuaJ!CwRs% zlAfZbZ)I0;(YaOrw5_Y-PE!);|02s($&_r$ULc{YP(|dNSnb%2wO{ z=lpAKF~QAr$9lHb%)3aRi!8S( z=ZpXx(##Uz3&4L{0{p=RAmlb<4rh+-@)Vr{De-In zsdV^*7(|&IYyN!ii1u-#v%Pbo4I_Gt6!Lw@Bxmybk-)nHnh9ib~SDB;UaTTNNJ}#Ntytc37Lp}>dJsZ_yYqAH29qev) zcXy9@BUhiR?~kB%CXxQ6UOkxfNTuyb`-r`H!Ju&?YwJHoLRwg8sH+>6aTpF+E=RN_ z2!`&jBA8;;0TdJ$AFcYJ>`i^cw@031=(x%i(JSA3b5!@oh=Jey4@?B!sQK9dJ4(e%=Q{9m!;zVRiM=Jm z$Yvn+JnzGmky=qTH9OYM1g4xN@{_O^{=n@D7qBfZ2|C>+!_59Wy|23~KM^oE-sE2x z&a6YS%eVvlP{&ncjM{ADA29p45qSE}Ehx1yKOeZgG6DvJn?-O5Lh5R60|l#N2t8I9 z6xx~iDC)dU20%5WuB>b&Nej@A8q;8cp>@NPNilGX!}q`T_+NN?fuw_4R2gAGS&AN0xLfF^t+X zQv1A6?<(Vj+l7LjB-Za<(oh-u!%m4xZN2O4N%v$1xZfl6w&yPRJE=qFuM9?bC#gVl zst+97iQj+_)tix*Y9eLqS}d%FpXY!Vm^wU|FR1Wx>Pr+LS)IS5zutq;nHb9>(|L-y zvaFpGLcRrFKV=o`71~7cZ)X2!l z)Ko;!Wl6g00m`TS#mSQ=YkUhQQeW3hxSSXnYzMwz1{UKHyVFrjJ|3xa8%!}&yHy@D zX477cT)A%_w)r0Ytt?2&9$6qHy#3P;aCW3gL_y@!Dha>mzSODhV?js$@f!p}bx9UK zp1o02RNULd3c-Y*GWXPFV*d{L22rEG(AA9z2rt+SKine~`b)0U0^c)d4A4F+-BYJJ zp%IHOw=Nd_==hy^f8gnB;DcrRBdhHTyqBaPE<0Bt(|%NojO?YsVtF|^ot>%gY(iTL z)d^%p|Am7oHuc1t+S_>>fgL#lP6lx#Uk{Jvp%P<%KR@Oho-YvqO)}kpOHnn0di)to zFAysj)J}ZsZ7R}|8@i^bT66$z&y7*pSn$1iVV9{SAzf04u)TR$)OkVr34+SbQ%t8t z$))o$bLCE0YwI|#7@L>hH_^;Yl@ALG)dC0|L?axo7breb-vT}$U=B^~uR+hZP6QF9 zlnsCWF@!d%Mf+N2dit$vd^|j&p)CUGv@(rbYx^Frm}6PcHOiHY zOl-}OHlS;^I44AR^n^Tw8Q3Rm{P7_|hsqI?bTYhB_wJ=h>5-I2-O&tYz1`I4zYZms z{8#vNn&m+sGu|nWG<2G8Mxl;EFG=OL^!$quUjIV~78JVp5vJmb9WR`s$BdPjl+br! zesk*j9|HLB@9Ot_n6XY$k<6+V3(L=UuNQnS>v|Hp@o{I`bu|3yROfB#cM?EbX#JV868g9)d%PyE~P;J-WnQ{404 z0{MSkAWqnK%M0u~HH4qjp&$h)>L!XAd|nOQO?LRxNZ7d6sz-$7s<6Hqo-P{QkP6io zn11vDhL%xhIt10N`t{S++ZhT!qRz>L+ea`1U#F-{_g2J;obNjhUOPJafVmp_^SnIn zgU^V^%qbz+maXtTrU85u^e$y5GJo@;nse~dJ|zXqazT0Agdgov87&;vzA>;fFZyQ| zjV1TPy6iZ$b`z%y*Sib>#~-Y`G%n9gGp^b<3Dq)xt`!u7ZAxL=mdTlF37E}cm7B&( z$#)LMNwGB}$JF}HpndJ|YyM>1Y1}bhJ^k+$A3(fo3Jh^MdC11K2rt^NE@*F7mfGEj zhfXswQf$4Wt-oHg4_0Q%yI7(ab;$jx8ZhUj*v!@EdD6?xaZdG%GdBKij#f_1PsH!2 zse(oT9`|@1CoiWr8t+j~*Fg(yVAeoXu{lZx^Y$NsSz+7*r%Tq>j0-#TaD%7cbFmk@ z50qiI^=z{zCVIwdaEWyfo(I8n<@Qm(*p!=;XD%rYan0E91&I@^y`qIW8;+V+9%&*?WwGXNT>!}xu zDiud3!W&!@TKcsC*3tau2v5DZN(R1goM?EG32W9*5Wn0pJL1-KOTJt0Rx0j-!8mJ- zt1Y5E7kTE-PpHe|=;rd=rYFlH9LGxD7XDAGZc<+znt!9~_LcLufm@_LDV*}ZFyjo8|wo}blJ^t?Fdt>-%(+X`%Hf0;i!>+h;Hcb{7^ zmwwB9#VN`wd-v_`?s-?uD_QfmgrzUpTV7gvtGwu?V9%3{z!{la+ZG=LP7a;X$oSz_ zWTlt8-}KBTbMte%R-c}HJZ#N9h2krP*% zw)UoHP+0x_ll$_s(+W&>N6YM4eR|(y@BLX%er_=-z?-HlD(*OWF@Ieue& zU-_o0_Lr4P|L&(1O6GRV~~~>V2APDUwwGv8`GD(_