From 3476e3dd4920f8606d3f9c867c074b422b6dabed Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 6 Aug 2024 09:49:30 +0100 Subject: [PATCH 001/302] Update mount points in cloud init --- .../workspace.cloud_init.mustache.yaml | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml b/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml index 20da218a0c..56fb0eba7b 100644 --- a/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml +++ b/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml @@ -88,18 +88,18 @@ write_files: permissions: "0700" content: | #!/usr/bin/env bash - pushd /desired_state - ansible-playbook /desired_state/desired_state.yaml + pushd /var/local/ansible + ansible-playbook desired_state.yaml popd mounts: # Desired state configuration is in a blob container mounted as NFSv3 - - ["{{storage_account_data_desired_state_name}}.blob.core.windows.net:/{{storage_account_data_desired_state_name}}/desiredstate", /desired_state, nfs, "ro,_netdev,sec=sys,vers=3,nolock,proto=tcp"] + - ["{{storage_account_data_desired_state_name}}.blob.core.windows.net:/{{storage_account_data_desired_state_name}}/desiredstate", /var/local/ansible, nfs, "ro,_netdev,sec=sys,vers=3,nolock,proto=tcp"] # Secure data is in a blob container mounted as NFSv3 - - ["{{storage_account_data_private_sensitive_name}}.blob.core.windows.net:/{{storage_account_data_private_sensitive_name}}/ingress", /data, nfs, "ro,_netdev,sec=sys,vers=3,nolock,proto=tcp"] - - ["{{storage_account_data_private_sensitive_name}}.blob.core.windows.net:/{{storage_account_data_private_sensitive_name}}/egress", /output, nfs, "rw,_netdev,sec=sys,vers=3,nolock,proto=tcp"] + - ["{{storage_account_data_private_sensitive_name}}.blob.core.windows.net:/{{storage_account_data_private_sensitive_name}}/ingress", /mnt/input, nfs, "ro,_netdev,sec=sys,vers=3,nolock,proto=tcp"] + - ["{{storage_account_data_private_sensitive_name}}.blob.core.windows.net:/{{storage_account_data_private_sensitive_name}}/egress", /mnt/output, nfs, "rw,_netdev,sec=sys,vers=3,nolock,proto=tcp"] # User data is in a file share mounted as NFSv4 - - ["{{storage_account_data_private_user_name}}.file.core.windows.net:/{{storage_account_data_private_user_name}}/shared", /shared, nfs, "_netdev,sec=sys,nconnect=4"] + - ["{{storage_account_data_private_user_name}}.file.core.windows.net:/{{storage_account_data_private_user_name}}/shared", /mnt/shared, nfs, "_netdev,sec=sys,nconnect=4"] - ["{{storage_account_data_private_user_name}}.file.core.windows.net:/{{storage_account_data_private_user_name}}/home", /home, nfs, "_netdev,sec=sys,nconnect=4"] # Add additional apt repositories @@ -133,11 +133,11 @@ runcmd: - echo ">=== Mounting all external volumes... ===<" - grep -v -e '^[[:space:]]*$' /etc/fstab | sed 's|^| /etc/fstab |' - mount -fav - - while (! mountpoint -q /data); do sleep 5; mount /data; done - - while (! mountpoint -q /desired_state); do sleep 5; mount /desired_state; done + - while (! mountpoint -q /mnt/input); do sleep 5; mount /mnt/input; done + - while (! mountpoint -q /var/local/ansible); do sleep 5; mount /var/local/ansible; done - while (! mountpoint -q /home); do sleep 5; mount /home; done - - while (! mountpoint -q /output); do sleep 5; mount /output; done - - while (! mountpoint -q /shared); do sleep 5; mount /shared; done + - while (! mountpoint -q /mnt/output); do sleep 5; mount /mnt/output; done + - while (! mountpoint -q /mnt/shared); do sleep 5; mount /mnt/shared; done - findmnt # Enable and start desired state timer From 41068c76ad81fe42b6d45b9136b3e244844e64c7 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 6 Aug 2024 09:56:03 +0100 Subject: [PATCH 002/302] Add symlinks to data directories --- .../resources/workspace/ansible/desired_state.yaml | 14 ++++---------- .../workspace/ansible/files/etc/skel/bashrc | 0 .../workspace/ansible/files/etc/skel/input | 1 + .../workspace/ansible/files/etc/skel/output | 1 + .../workspace/ansible/files/etc/skel/shared | 1 + 5 files changed, 7 insertions(+), 10 deletions(-) mode change 100644 => 100755 data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc create mode 120000 data_safe_haven/resources/workspace/ansible/files/etc/skel/input create mode 120000 data_safe_haven/resources/workspace/ansible/files/etc/skel/output create mode 120000 data_safe_haven/resources/workspace/ansible/files/etc/skel/shared diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index 24d8b40dd4..9b4118ade0 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -52,17 +52,11 @@ fi fi - - name: Copy bashrc skeleton + - name: Copy skeleton files ansible.builtin.copy: - src: etc/skel/bashrc - dest: /etc/skel/.bashrc - mode: '0755' - - - name: Copy xsession skeleton - ansible.builtin.copy: - src: etc/skel/xsession - dest: /etc/skel/.xsession - mode: '0444' + src: "{{ item }}" + dest: /etc/skel/ + with_fileglob: 'etc/skel/*' - name: Add ldap to /etc/nsswitch.conf ansible.builtin.replace: diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc b/data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc old mode 100644 new mode 100755 diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/input b/data_safe_haven/resources/workspace/ansible/files/etc/skel/input new file mode 120000 index 0000000000..f4cee9e111 --- /dev/null +++ b/data_safe_haven/resources/workspace/ansible/files/etc/skel/input @@ -0,0 +1 @@ +/mnt/input \ No newline at end of file diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/output b/data_safe_haven/resources/workspace/ansible/files/etc/skel/output new file mode 120000 index 0000000000..11ef3c2201 --- /dev/null +++ b/data_safe_haven/resources/workspace/ansible/files/etc/skel/output @@ -0,0 +1 @@ +/mnt/output \ No newline at end of file diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/shared b/data_safe_haven/resources/workspace/ansible/files/etc/skel/shared new file mode 120000 index 0000000000..84f8e6c9ec --- /dev/null +++ b/data_safe_haven/resources/workspace/ansible/files/etc/skel/shared @@ -0,0 +1 @@ +/mnt/shared \ No newline at end of file From f4bed414f6b482304257cfe33c1ff89b88a4c519 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 6 Aug 2024 10:25:53 +0100 Subject: [PATCH 003/302] Make dotfiles dotfiles --- .../workspace/ansible/files/etc/skel/{bashrc => .bashrc} | 0 .../workspace/ansible/files/etc/skel/{xsession => .xsession} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename data_safe_haven/resources/workspace/ansible/files/etc/skel/{bashrc => .bashrc} (100%) rename data_safe_haven/resources/workspace/ansible/files/etc/skel/{xsession => .xsession} (100%) diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc b/data_safe_haven/resources/workspace/ansible/files/etc/skel/.bashrc similarity index 100% rename from data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc rename to data_safe_haven/resources/workspace/ansible/files/etc/skel/.bashrc diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/xsession b/data_safe_haven/resources/workspace/ansible/files/etc/skel/.xsession similarity index 100% rename from data_safe_haven/resources/workspace/ansible/files/etc/skel/xsession rename to data_safe_haven/resources/workspace/ansible/files/etc/skel/.xsession From d3e8de85ac6a2a99b305d71837184ee35a1642ab Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 6 Aug 2024 10:31:57 +0100 Subject: [PATCH 004/302] Improve skel file creation --- .../workspace/ansible/desired_state.yaml | 20 +++++++++++++++++-- .../files/etc/skel/{.bashrc => bashrc} | 0 .../files/etc/skel/{.xsession => xsession} | 0 3 files changed, 18 insertions(+), 2 deletions(-) rename data_safe_haven/resources/workspace/ansible/files/etc/skel/{.bashrc => bashrc} (100%) rename data_safe_haven/resources/workspace/ansible/files/etc/skel/{.xsession => xsession} (100%) diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index 9b4118ade0..1fc392cedf 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -52,11 +52,27 @@ fi fi - - name: Copy skeleton files + - name: Copy bashrc skeleton + ansible.builtin.copy: + src: etc/skel/bashrc + dest: /etc/skel/.bashrc + mode: '0755' + + - name: Copy xsession skeleton + ansible.builtin.copy: + src: etc/skel/xsession + dest: /etc/skel/.xsession + mode: '0444' + + - name: Copy skeleton symlinks ansible.builtin.copy: src: "{{ item }}" dest: /etc/skel/ - with_fileglob: 'etc/skel/*' + mode: '0755' + loop: + - 'etc/skel/input' + - 'etc/skel/output' + - 'etc/skel/shared' - name: Add ldap to /etc/nsswitch.conf ansible.builtin.replace: diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/.bashrc b/data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc similarity index 100% rename from data_safe_haven/resources/workspace/ansible/files/etc/skel/.bashrc rename to data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/.xsession b/data_safe_haven/resources/workspace/ansible/files/etc/skel/xsession similarity index 100% rename from data_safe_haven/resources/workspace/ansible/files/etc/skel/.xsession rename to data_safe_haven/resources/workspace/ansible/files/etc/skel/xsession From 5c647d975ce4a83e1ae1d77b5d792d900cc2b0f2 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Tue, 6 Aug 2024 08:29:08 +0100 Subject: [PATCH 005/302] :wrench: Set custom xrdp login screen --- .../share/xrdp/dsh_logo_240x140_256color.bmp | Bin 0 -> 34762 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data_safe_haven/resources/workspace/ansible/files/usr/share/xrdp/dsh_logo_240x140_256color.bmp diff --git a/data_safe_haven/resources/workspace/ansible/files/usr/share/xrdp/dsh_logo_240x140_256color.bmp b/data_safe_haven/resources/workspace/ansible/files/usr/share/xrdp/dsh_logo_240x140_256color.bmp new file mode 100644 index 0000000000000000000000000000000000000000..065de8eefa065f3913d26ecad52ea426826b3cd4 GIT binary patch literal 34762 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 literal 0 HcmV?d00001 From 962abaa3daa02c858fdfa630eef537507d4a7a58 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 6 Aug 2024 10:20:12 +0100 Subject: [PATCH 006/302] Move xrdp logo --- .../share/xrdp/dsh_logo_240x140_256color.bmp | Bin 34762 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 data_safe_haven/resources/workspace/ansible/files/usr/share/xrdp/dsh_logo_240x140_256color.bmp diff --git a/data_safe_haven/resources/workspace/ansible/files/usr/share/xrdp/dsh_logo_240x140_256color.bmp b/data_safe_haven/resources/workspace/ansible/files/usr/share/xrdp/dsh_logo_240x140_256color.bmp deleted file mode 100644 index 065de8eefa065f3913d26ecad52ea426826b3cd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34762 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 From 74a46224a20cb9355787c9066327497faa305edd Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 6 Aug 2024 10:21:59 +0100 Subject: [PATCH 007/302] Include dotfiles in glob --- data_safe_haven/infrastructure/programs/sre/data.py | 2 +- .../workspace/ansible/files/etc/skel/{bashrc => .bashrc} | 0 .../workspace/ansible/files/etc/skel/{xsession => .xsession} | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename data_safe_haven/resources/workspace/ansible/files/etc/skel/{bashrc => .bashrc} (100%) rename data_safe_haven/resources/workspace/ansible/files/etc/skel/{xsession => .xsession} (100%) diff --git a/data_safe_haven/infrastructure/programs/sre/data.py b/data_safe_haven/infrastructure/programs/sre/data.py index 524d743d44..23aae76d39 100644 --- a/data_safe_haven/infrastructure/programs/sre/data.py +++ b/data_safe_haven/infrastructure/programs/sre/data.py @@ -547,7 +547,7 @@ def __init__( str(file_path.relative_to(desired_state_directory)), ) for file_path in sorted(desired_state_directory.rglob("*")) - if file_path.is_file() and not file_path.name.startswith(".") + if file_path.is_file() ] # Upload file assets to desired state container for file_asset, file_name, file_path in files_desired_state: diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc b/data_safe_haven/resources/workspace/ansible/files/etc/skel/.bashrc similarity index 100% rename from data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc rename to data_safe_haven/resources/workspace/ansible/files/etc/skel/.bashrc diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/xsession b/data_safe_haven/resources/workspace/ansible/files/etc/skel/.xsession similarity index 100% rename from data_safe_haven/resources/workspace/ansible/files/etc/skel/xsession rename to data_safe_haven/resources/workspace/ansible/files/etc/skel/.xsession From d414dba325c8b4461c8e1266625aa5fa2f8d003c Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 6 Aug 2024 10:33:19 +0100 Subject: [PATCH 008/302] Revert "Include dotfiles in glob" This reverts commit 8a79abaf28fc49f8c37b930dde61a23cf91f174e. --- data_safe_haven/infrastructure/programs/sre/data.py | 2 +- .../workspace/ansible/files/etc/skel/{.bashrc => bashrc} | 0 .../workspace/ansible/files/etc/skel/{.xsession => xsession} | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename data_safe_haven/resources/workspace/ansible/files/etc/skel/{.bashrc => bashrc} (100%) rename data_safe_haven/resources/workspace/ansible/files/etc/skel/{.xsession => xsession} (100%) diff --git a/data_safe_haven/infrastructure/programs/sre/data.py b/data_safe_haven/infrastructure/programs/sre/data.py index 23aae76d39..524d743d44 100644 --- a/data_safe_haven/infrastructure/programs/sre/data.py +++ b/data_safe_haven/infrastructure/programs/sre/data.py @@ -547,7 +547,7 @@ def __init__( str(file_path.relative_to(desired_state_directory)), ) for file_path in sorted(desired_state_directory.rglob("*")) - if file_path.is_file() + if file_path.is_file() and not file_path.name.startswith(".") ] # Upload file assets to desired state container for file_asset, file_name, file_path in files_desired_state: diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/.bashrc b/data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc similarity index 100% rename from data_safe_haven/resources/workspace/ansible/files/etc/skel/.bashrc rename to data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/.xsession b/data_safe_haven/resources/workspace/ansible/files/etc/skel/xsession similarity index 100% rename from data_safe_haven/resources/workspace/ansible/files/etc/skel/.xsession rename to data_safe_haven/resources/workspace/ansible/files/etc/skel/xsession From 98bd701e4649cb23fb643d0e5636655c78174260 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 6 Aug 2024 10:44:47 +0100 Subject: [PATCH 009/302] Update mount point in test --- tests/infrastructure/programs/sre/test_workspaces.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/infrastructure/programs/sre/test_workspaces.py b/tests/infrastructure/programs/sre/test_workspaces.py index 108ce162d0..7a8fa9fcc0 100644 --- a/tests/infrastructure/programs/sre/test_workspaces.py +++ b/tests/infrastructure/programs/sre/test_workspaces.py @@ -10,6 +10,6 @@ def test_template_cloudinit(self): ) assert ( - '- ["storageaccount.blob.core.windows.net:/storageaccount/desiredstate", /desired_state, nfs, "ro,' + '- ["storageaccount.blob.core.windows.net:/storageaccount/desiredstate", /var/local/ansible, nfs, "ro,' in cloudinit ) From 473004061cac3e17e11fa29ff3a74ed3d1e79dcf Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 6 Aug 2024 10:56:04 +0100 Subject: [PATCH 010/302] Change permissions (repo) --- data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc b/data_safe_haven/resources/workspace/ansible/files/etc/skel/bashrc old mode 100755 new mode 100644 From db95c0fd2609024cf06c3ccc377798a0367ad510 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 6 Aug 2024 14:09:10 +0100 Subject: [PATCH 011/302] Use file module to create skel symlinks --- .../workspace/ansible/desired_state.yaml | 18 +++++++++++------- .../workspace/ansible/files/etc/skel/input | 1 - .../workspace/ansible/files/etc/skel/output | 1 - .../workspace/ansible/files/etc/skel/shared | 1 - 4 files changed, 11 insertions(+), 10 deletions(-) delete mode 120000 data_safe_haven/resources/workspace/ansible/files/etc/skel/input delete mode 120000 data_safe_haven/resources/workspace/ansible/files/etc/skel/output delete mode 120000 data_safe_haven/resources/workspace/ansible/files/etc/skel/shared diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index 1fc392cedf..708d4bc457 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -64,15 +64,19 @@ dest: /etc/skel/.xsession mode: '0444' - - name: Copy skeleton symlinks - ansible.builtin.copy: - src: "{{ item }}" - dest: /etc/skel/ + - name: Create skeleton symlinks + ansible.builtin.file: + src: "{{ item.src }}" + dest: "{{ item.path }}" + state: link mode: '0755' loop: - - 'etc/skel/input' - - 'etc/skel/output' - - 'etc/skel/shared' + - path: 'etc/skel/input' + src: '/mnt/input' + - path: 'etc/skel/output' + src: '/mnt/output' + - path: 'etc/skel/shared' + src: '/mnt/shared' - name: Add ldap to /etc/nsswitch.conf ansible.builtin.replace: diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/input b/data_safe_haven/resources/workspace/ansible/files/etc/skel/input deleted file mode 120000 index f4cee9e111..0000000000 --- a/data_safe_haven/resources/workspace/ansible/files/etc/skel/input +++ /dev/null @@ -1 +0,0 @@ -/mnt/input \ No newline at end of file diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/output b/data_safe_haven/resources/workspace/ansible/files/etc/skel/output deleted file mode 120000 index 11ef3c2201..0000000000 --- a/data_safe_haven/resources/workspace/ansible/files/etc/skel/output +++ /dev/null @@ -1 +0,0 @@ -/mnt/output \ No newline at end of file diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/shared b/data_safe_haven/resources/workspace/ansible/files/etc/skel/shared deleted file mode 120000 index 84f8e6c9ec..0000000000 --- a/data_safe_haven/resources/workspace/ansible/files/etc/skel/shared +++ /dev/null @@ -1 +0,0 @@ -/mnt/shared \ No newline at end of file From bb4729831d238a3ca88346afdca46c685aab6172 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 6 Aug 2024 14:28:03 +0100 Subject: [PATCH 012/302] Correct paths --- .../resources/workspace/ansible/desired_state.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index 708d4bc457..0eb44e630c 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -71,11 +71,11 @@ state: link mode: '0755' loop: - - path: 'etc/skel/input' + - path: '/etc/skel/input' src: '/mnt/input' - - path: 'etc/skel/output' + - path: '/etc/skel/output' src: '/mnt/output' - - path: 'etc/skel/shared' + - path: '/etc/skel/shared' src: '/mnt/shared' - name: Add ldap to /etc/nsswitch.conf From 16491ea75ddd00c82bf20d94a8102823cd79f778 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Tue, 6 Aug 2024 16:53:43 +0100 Subject: [PATCH 013/302] :memo: Update user guide --- docs/source/roles/researcher/user_guide.md | 51 ++++++++++++---------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/docs/source/roles/researcher/user_guide.md b/docs/source/roles/researcher/user_guide.md index 7043df5387..bee8c9c635 100644 --- a/docs/source/roles/researcher/user_guide.md +++ b/docs/source/roles/researcher/user_guide.md @@ -686,37 +686,39 @@ If you need to use a package that is not on the allowlist see the section on how There are several shared areas on the SRD that all collaborators within a research project team can see and access: -- [input data](#input-data-data): `/data/` -- [shared space](#shared-space-shared): `/shared/` -- [scratch space](#scratch-space-scratch): `/scratch/` -- [backup space](#backup-space-backup): `/backup/` -- [output resources](#output-resources-output): `/output/` +- [input data](#input-data): `/mnt/input/` +- [shared space](#shared-space): `/mnt/shared` +- [output resources](#output-resources): `/mnt/output` -#### Input data: `/data/` + + -Data that has been "ingressed" - approved and brought into the secure research environment - can be found in the `/data/` folder. +#### Input data + +Data that has been "ingressed" - approved and brought into the secure research environment - can be found in the `/mnt/input` folder. Everyone in your group will be able to access it, but it is **read-only**. ```{important} -You will not be able to change any of the files in `/data/` . -If you want to make derived datasets, for example cleaned and reformatted data, please add those to the `/shared/` or `/output/` directories. +You will not be able to change any of the files in `/mnt/input` . +If you want to make derived datasets, for example cleaned and reformatted data, please add those to the `/mnt/shared` or `/mnt/output` directories. ``` -The contents of `/data/` will be **identical** on all SRDs in your SRE. -For example, if your group requests a GPU-enabled machine, this will contain an identical `/data/` folder. +The contents of `/mnt/input` will be **identical** on all SRDs in your SRE. +For example, if your group requests a GPU-enabled machine, this will contain an identical `/mnt/input` folder. ```{tip} -If you are using the Data Safe Haven as part of an organised event, you might find example slides or document templates in the `/data/` drive. +If you are using the Data Safe Haven as part of an organised event, you might find example slides or document templates in the `/mnt/input` drive. ``` -#### Shared space: `/shared/` +#### Shared space -The `/shared/` folder should be used for any work that you want to share with your group. +The `/mnt/shared` folder should be used for any work that you want to share with your group. Everyone in your group will be able to access it, and will have **read-and-write access**. -The contents of `/shared/` will be **identical** on all SRDs in your SRE. +The contents of `/mnt/shared` will be **identical** on all SRDs in your SRE. + + -#### Output resources: `/output/` +#### Output resources -Any outputs that you want to extract from the secure environment should be placed in the `/output/` folder on the SRD. +Any outputs that you want to extract from the secure environment should be placed in the `/mnt/output` folder on the SRD. Everyone in your group will be able to access it, and will have **read-and-write access**. Anything placed in here will be considered for data egress - removal from the secure research environment - by the project's principal investigator together with the data provider. ```{tip} -You may want to consider having subfolders of `/output/` to make the review of this directory easier. +You may want to consider having subfolders of `/mnt/output` to make the review of this directory easier. ``` ```{hint} @@ -793,12 +798,12 @@ One of the benefits of having cloud based infastructure is that it can be delete Deleting the infrastructure ensures that neither sensitive data nor insights derived from the data or modelling techniques persist. While working on the project, make sure that every piece of code you think might be useful is stored in a GitLab repository within the secure environment. -Any other work should be transferred to the `/shared/` drive so that it is accessible to other TRE users. -You can also use the `/backup/` drive to store work that you want to keep safe from accidental deletion. -Anything that you think should be considered for **egress** from the environment (eg. images or processed datasets) should be transferred to the shared `/output/` drive. +Any other work should be transferred to the `/mnt/shared` drive so that it is accessible to other TRE users. + +Anything that you think should be considered for **egress** from the environment (eg. images or processed datasets) should be transferred to the shared `/mnt/output` drive. ```{caution} -Anything that is not transferred to the `/output/` drive to be considered for egress will be deleted forever when the project is over. +Anything that is not transferred to the `/mnt/output` drive to be considered for egress will be deleted forever when the project is over. ``` ### {{unlock}} Access GitLab @@ -943,7 +948,7 @@ Our example user, Ada Lovelace, participating in the `sandbox` project at a Turi ```` - This will bring you to the normal login screen, where you use the same `username` and `password` credentials as before. -- Any local files that you have created in the `/output/` folder on other VMs (e.g. analysis scripts, notes, derived data) will be automatically available in the new VM. +- Any local files that you have created in the `/mnt/output` folder on other VMs (e.g. analysis scripts, notes, derived data) will be automatically available in the new VM. ```{tip} The naming pattern of the available desktop connections lets you know their compute capabilities. From 1e1d7b5d023b83dbab465d656017b393438e1cb4 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Tue, 6 Aug 2024 20:04:26 +0100 Subject: [PATCH 014/302] :wrench: Add URLs for Gitea and Hedgedoc --- .../infrastructure/programs/declarative_sre.py | 2 ++ .../infrastructure/programs/sre/gitea_server.py | 5 ++++- .../infrastructure/programs/sre/hedgedoc_server.py | 5 ++++- .../infrastructure/programs/sre/user_services.py | 4 ++-- .../infrastructure/programs/sre/workspaces.py | 6 ++++++ .../workspace/workspace.cloud_init.mustache.yaml | 10 ++++++++++ 6 files changed, 28 insertions(+), 4 deletions(-) diff --git a/data_safe_haven/infrastructure/programs/declarative_sre.py b/data_safe_haven/infrastructure/programs/declarative_sre.py index 614d8ac2b2..81728d215c 100644 --- a/data_safe_haven/infrastructure/programs/declarative_sre.py +++ b/data_safe_haven/infrastructure/programs/declarative_sre.py @@ -347,6 +347,8 @@ def __call__(self) -> None: data_collection_rule_id=monitoring.data_collection_rule_vms.id, data_collection_endpoint_id=monitoring.data_collection_endpoint.id, database_service_admin_password=data.password_database_service_admin, + gitea_hostname=user_services.gitea_server.hostname, + hedgedoc_hostname=user_services.hedgedoc_server.hostname, ldap_group_filter=ldap_group_filter, ldap_group_search_base=ldap_group_search_base, ldap_server_hostname=identity.hostname, diff --git a/data_safe_haven/infrastructure/programs/sre/gitea_server.py b/data_safe_haven/infrastructure/programs/sre/gitea_server.py index 655f9b0016..b69c867c6e 100644 --- a/data_safe_haven/infrastructure/programs/sre/gitea_server.py +++ b/data_safe_haven/infrastructure/programs/sre/gitea_server.py @@ -336,7 +336,7 @@ def __init__( ) # Register the container group in the SRE DNS zone - LocalDnsRecordComponent( + local_dns = LocalDnsRecordComponent( f"{self._name}_gitea_dns_record_set", LocalDnsRecordProps( base_fqdn=props.sre_fqdn, @@ -348,3 +348,6 @@ def __init__( child_opts, ResourceOptions(parent=container_group) ), ) + + # Register outputs + self.hostname = local_dns.hostname diff --git a/data_safe_haven/infrastructure/programs/sre/hedgedoc_server.py b/data_safe_haven/infrastructure/programs/sre/hedgedoc_server.py index 5187401de5..e6564bc991 100644 --- a/data_safe_haven/infrastructure/programs/sre/hedgedoc_server.py +++ b/data_safe_haven/infrastructure/programs/sre/hedgedoc_server.py @@ -315,7 +315,7 @@ def __init__( ) # Register the container group in the SRE DNS zone - LocalDnsRecordComponent( + local_dns = LocalDnsRecordComponent( f"{self._name}_hedgedoc_dns_record_set", LocalDnsRecordProps( base_fqdn=props.sre_fqdn, @@ -327,3 +327,6 @@ def __init__( child_opts, ResourceOptions(parent=container_group) ), ) + + # Register outputs + self.hostname = local_dns.hostname diff --git a/data_safe_haven/infrastructure/programs/sre/user_services.py b/data_safe_haven/infrastructure/programs/sre/user_services.py index a5abed4fe8..5eb04bdfbb 100644 --- a/data_safe_haven/infrastructure/programs/sre/user_services.py +++ b/data_safe_haven/infrastructure/programs/sre/user_services.py @@ -94,7 +94,7 @@ def __init__( child_tags = {"component": "user services"} | (tags if tags else {}) # Deploy the Gitea server - SREGiteaServerComponent( + self.gitea_server = SREGiteaServerComponent( "sre_gitea_server", stack_name, SREGiteaServerProps( @@ -119,7 +119,7 @@ def __init__( ) # Deploy the HedgeDoc server - SREHedgeDocServerComponent( + self.hedgedoc_server = SREHedgeDocServerComponent( "sre_hedgedoc_server", stack_name, SREHedgeDocServerProps( diff --git a/data_safe_haven/infrastructure/programs/sre/workspaces.py b/data_safe_haven/infrastructure/programs/sre/workspaces.py index 954bd06bb1..b48de97668 100644 --- a/data_safe_haven/infrastructure/programs/sre/workspaces.py +++ b/data_safe_haven/infrastructure/programs/sre/workspaces.py @@ -28,6 +28,8 @@ def __init__( data_collection_endpoint_id: Input[str], data_collection_rule_id: Input[str], database_service_admin_password: Input[str], + gitea_hostname: Input[str], + hedgedoc_hostname: Input[str], ldap_group_filter: Input[str], ldap_group_search_base: Input[str], ldap_server_hostname: Input[str], @@ -54,6 +56,8 @@ def __init__( self.data_collection_rule_id = data_collection_rule_id self.data_collection_endpoint_id = data_collection_endpoint_id self.database_service_admin_password = database_service_admin_password + self.gitea_hostname = gitea_hostname + self.hedgedoc_hostname = hedgedoc_hostname self.ldap_group_filter = ldap_group_filter self.ldap_group_search_base = ldap_group_search_base self.ldap_server_hostname = ldap_server_hostname @@ -116,6 +120,8 @@ def __init__( apt_proxy_server_hostname=props.apt_proxy_server_hostname, clamav_mirror_hostname=props.clamav_mirror_hostname, database_service_admin_password=props.database_service_admin_password, + gitea_hostname=props.gitea_hostname, + hedgedoc_hostname=props.hedgedoc_hostname, ldap_group_filter=props.ldap_group_filter, ldap_group_search_base=props.ldap_group_search_base, ldap_server_hostname=props.ldap_server_hostname, diff --git a/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml b/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml index 7137b94253..408d39dc02 100644 --- a/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml +++ b/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml @@ -93,6 +93,16 @@ write_files: ansible-playbook /desired_state/desired_state.yaml popd + - path: "/root/gitea.url" + permissions: "0400" + content: | + URL=http://{{gitea_hostname}} + + - path: "/root/hedgedoc.url" + permissions: "0400" + content: | + URL=http://{{hedgedoc_hostname}} + mounts: # Desired state configuration is in a blob container mounted as NFSv3 - ["{{storage_account_data_desired_state_name}}.blob.core.windows.net:/{{storage_account_data_desired_state_name}}/desiredstate", /desired_state, nfs, "ro,_netdev,sec=sys,vers=3,nolock,proto=tcp"] From d4593ed7b4525ff4be75e203727d7914ccaf367d Mon Sep 17 00:00:00 2001 From: James Robinson Date: Tue, 6 Aug 2024 21:05:48 +0100 Subject: [PATCH 015/302] :sparkles: Add desktop files and icons for gitea and hedgedoc --- .../workspace/ansible/desired_state.yaml | 28 ++++++++++++++++++ .../files/etc/skel/Desktop/gitea.desktop | 6 ++++ .../files/etc/skel/Desktop/hedgedoc.desktop | 6 ++++ .../ansible/files/usr/share/icons/gitea.png | Bin 0 -> 8841 bytes .../files/usr/share/icons/hedgedoc.png | Bin 0 -> 13773 bytes 5 files changed, 40 insertions(+) create mode 100644 data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/gitea.desktop create mode 100644 data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/hedgedoc.desktop create mode 100644 data_safe_haven/resources/workspace/ansible/files/usr/share/icons/gitea.png create mode 100644 data_safe_haven/resources/workspace/ansible/files/usr/share/icons/hedgedoc.png diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index ff5df392a3..b8f91d82c9 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -130,6 +130,7 @@ state: directory mode: '0755' loop: + - /etc/skel/Desktop - /etc/xdg/xfce4/terminal - /etc/xrdp - /usr/local/share/xrdp @@ -200,6 +201,33 @@ - xrdp - xrdp-sesman + - name: Copy icons + ansible.builtin.copy: + src: usr/share/icons/{{ item }} + dest: /usr/share/icons/{{ item }} + mode: '0444' + loop: + - gitea.png + - hedgedoc.png + + - name: Copy desktop files + ansible.builtin.copy: + src: etc/skel/Desktop/{{ item }} + dest: /etc/skel/Desktop/{{ item }} + mode: '0755' + loop: + - gitea.desktop + - hedgedoc.desktop + + - name: Set desktop file URLs + ansible.builtin.lineinfile: + path: /etc/skel/Desktop/{{ item }}.desktop + line: "{{ lookup('file', '/root/{{ item }}.url') }}" + state: present + loop: + - gitea + - hedgedoc + - name: Add polkit rule to allow colord ansible.builtin.copy: src: etc/polkit-1/localauthority/50-local.d/50-colord.pkla diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/gitea.desktop b/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/gitea.desktop new file mode 100644 index 0000000000..1c97fa3361 --- /dev/null +++ b/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/gitea.desktop @@ -0,0 +1,6 @@ +[Desktop Entry] +Version=1.0 +Type=Link +Name=Gitea +Comment= +Icon=/usr/share/icons/gitea.png diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/hedgedoc.desktop b/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/hedgedoc.desktop new file mode 100644 index 0000000000..52594cde0b --- /dev/null +++ b/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/hedgedoc.desktop @@ -0,0 +1,6 @@ +[Desktop Entry] +Version=1.0 +Type=Link +Name=HedgeDoc +Comment= +Icon=/usr/share/icons/hedgedoc.png diff --git a/data_safe_haven/resources/workspace/ansible/files/usr/share/icons/gitea.png b/data_safe_haven/resources/workspace/ansible/files/usr/share/icons/gitea.png new file mode 100644 index 0000000000000000000000000000000000000000..7ca49a3918e4960dff2182c03c241ff23e997a8d GIT binary patch literal 8841 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 literal 0 HcmV?d00001 diff --git a/data_safe_haven/resources/workspace/ansible/files/usr/share/icons/hedgedoc.png b/data_safe_haven/resources/workspace/ansible/files/usr/share/icons/hedgedoc.png new file mode 100644 index 0000000000000000000000000000000000000000..6dae00fd53caf67b3442cfba739c16b22cadddd1 GIT binary patch literal 13773 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 Date: Tue, 6 Aug 2024 21:17:40 +0100 Subject: [PATCH 016/302] :sparkles: Add desktop icons for input, output and shared folders --- .../resources/workspace/ansible/desired_state.yaml | 3 +++ .../workspace/ansible/files/etc/skel/Desktop/input.desktop | 7 +++++++ .../ansible/files/etc/skel/Desktop/output.desktop | 7 +++++++ .../ansible/files/etc/skel/Desktop/shared.desktop | 7 +++++++ 4 files changed, 24 insertions(+) create mode 100644 data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/input.desktop create mode 100644 data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/output.desktop create mode 100644 data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/shared.desktop diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index b8f91d82c9..ed46d000d5 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -218,6 +218,9 @@ loop: - gitea.desktop - hedgedoc.desktop + - input.desktop + - output.desktop + - shared.desktop - name: Set desktop file URLs ansible.builtin.lineinfile: diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/input.desktop b/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/input.desktop new file mode 100644 index 0000000000..97e64b5b95 --- /dev/null +++ b/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/input.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Version=1.0 +Type=Link +Name=input +Comment= +Icon=drive-removable-media +URL=/data diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/output.desktop b/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/output.desktop new file mode 100644 index 0000000000..4dc474784a --- /dev/null +++ b/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/output.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Version=1.0 +Type=Link +Name=output +Comment= +Icon=drive-removable-media +URL=/output diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/shared.desktop b/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/shared.desktop new file mode 100644 index 0000000000..3e4e97fde7 --- /dev/null +++ b/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/shared.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Version=1.0 +Type=Link +Name=shared +Comment= +Icon=drive-removable-media +URL=/shared From a53caad70deffd14e030cd54801ac551b64d5e49 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Wed, 7 Aug 2024 14:25:16 +0100 Subject: [PATCH 017/302] Remove symlinks --- .../resources/workspace/ansible/desired_state.yaml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index 11411d746e..1c0c4b6a0c 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -79,20 +79,6 @@ dest: /etc/skel/.xsession mode: '0444' - - name: Create skeleton symlinks - ansible.builtin.file: - src: "{{ item.src }}" - dest: "{{ item.path }}" - state: link - mode: '0755' - loop: - - path: '/etc/skel/input' - src: '/mnt/input' - - path: '/etc/skel/output' - src: '/mnt/output' - - path: '/etc/skel/shared' - src: '/mnt/shared' - - name: Add ldap to /etc/nsswitch.conf ansible.builtin.replace: path: /etc/nsswitch.conf From 6d0da02be4fbc3dc316cb9eb8033dcd23ba5af3d Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Wed, 7 Aug 2024 15:08:58 +0100 Subject: [PATCH 018/302] Move icons to /usr/local/share --- .../workspace/ansible/desired_state.yaml | 12 ++++++------ .../files/etc/skel/Desktop/gitea.desktop | 2 +- .../files/etc/skel/Desktop/hedgedoc.desktop | 2 +- .../ansible/files/usr/share/icons/gitea.png | Bin 8841 -> 0 bytes .../ansible/files/usr/share/icons/hedgedoc.png | Bin 13773 -> 0 bytes 5 files changed, 8 insertions(+), 8 deletions(-) delete mode 100644 data_safe_haven/resources/workspace/ansible/files/usr/share/icons/gitea.png delete mode 100644 data_safe_haven/resources/workspace/ansible/files/usr/share/icons/hedgedoc.png diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index ed46d000d5..c904a0bcf1 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -27,7 +27,7 @@ tags: apt ansible.builtin.script: executable: /bin/bash - cmd: /desired_state/install_deb.sh "{{ item.source }}" "{{ item.filename }}" "{{ item.sha256 }}" + cmd: "/desired_state/install_deb.sh {{ item.source }} {{ item.filename }} {{ item.sha256 }}" creates: "{{ item.creates }}" loop: "{{ deb_packages[ansible_facts.distribution_release] }}" @@ -203,8 +203,8 @@ - name: Copy icons ansible.builtin.copy: - src: usr/share/icons/{{ item }} - dest: /usr/share/icons/{{ item }} + src: "usr/local/share/icons/{{ item }}" + dest: "/usr/local/share/icons/{{ item }}" mode: '0444' loop: - gitea.png @@ -212,8 +212,8 @@ - name: Copy desktop files ansible.builtin.copy: - src: etc/skel/Desktop/{{ item }} - dest: /etc/skel/Desktop/{{ item }} + src: "etc/skel/Desktop/{{ item }}" + dest: "/etc/skel/Desktop/{{ item }}" mode: '0755' loop: - gitea.desktop @@ -224,7 +224,7 @@ - name: Set desktop file URLs ansible.builtin.lineinfile: - path: /etc/skel/Desktop/{{ item }}.desktop + path: "/etc/skel/Desktop/{{ item }}.desktop" line: "{{ lookup('file', '/root/{{ item }}.url') }}" state: present loop: diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/gitea.desktop b/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/gitea.desktop index 1c97fa3361..184609d263 100644 --- a/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/gitea.desktop +++ b/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/gitea.desktop @@ -3,4 +3,4 @@ Version=1.0 Type=Link Name=Gitea Comment= -Icon=/usr/share/icons/gitea.png +Icon=/usr/local/share/icons/gitea.png diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/hedgedoc.desktop b/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/hedgedoc.desktop index 52594cde0b..6a1c2b68c0 100644 --- a/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/hedgedoc.desktop +++ b/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/hedgedoc.desktop @@ -3,4 +3,4 @@ Version=1.0 Type=Link Name=HedgeDoc Comment= -Icon=/usr/share/icons/hedgedoc.png +Icon=/usr/local/share/icons/hedgedoc.png diff --git a/data_safe_haven/resources/workspace/ansible/files/usr/share/icons/gitea.png b/data_safe_haven/resources/workspace/ansible/files/usr/share/icons/gitea.png deleted file mode 100644 index 7ca49a3918e4960dff2182c03c241ff23e997a8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8841 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 diff --git a/data_safe_haven/resources/workspace/ansible/files/usr/share/icons/hedgedoc.png b/data_safe_haven/resources/workspace/ansible/files/usr/share/icons/hedgedoc.png deleted file mode 100644 index 6dae00fd53caf67b3442cfba739c16b22cadddd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13773 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 Date: Thu, 8 Aug 2024 10:43:12 +0100 Subject: [PATCH 019/302] WIP: write vars from pulumi to desired state --- .../programs/declarative_sre.py | 4 ++-- .../infrastructure/programs/sre/data.py | 21 +++++++++++++++++++ .../infrastructure/programs/sre/workspaces.py | 6 ------ .../workspace/ansible/desired_state.yaml | 12 +++++------ .../etc/skel/Desktop/gitea.desktop.j2} | 1 + .../etc/skel/Desktop/hedgedoc.desktop.j2} | 1 + .../workspace.cloud_init.mustache.yaml | 10 --------- 7 files changed, 30 insertions(+), 25 deletions(-) rename data_safe_haven/resources/workspace/ansible/{files/etc/skel/Desktop/gitea.desktop => templates/etc/skel/Desktop/gitea.desktop.j2} (75%) rename data_safe_haven/resources/workspace/ansible/{files/etc/skel/Desktop/hedgedoc.desktop => templates/etc/skel/Desktop/hedgedoc.desktop.j2} (74%) diff --git a/data_safe_haven/infrastructure/programs/declarative_sre.py b/data_safe_haven/infrastructure/programs/declarative_sre.py index 81728d215c..32b671a740 100644 --- a/data_safe_haven/infrastructure/programs/declarative_sre.py +++ b/data_safe_haven/infrastructure/programs/declarative_sre.py @@ -178,6 +178,8 @@ def __call__(self) -> None: dns_private_zones=dns.private_zones, dns_record=networking.shm_ns_record, dns_server_admin_password=dns.password_admin, + gitea_hostname=user_services.gitea_server.hostname, + hedgedoc_hostname=user_services.hedgedoc_server.hostname, location=self.config.azure.location, resource_group=resource_group, sre_fqdn=networking.sre_fqdn, @@ -347,8 +349,6 @@ def __call__(self) -> None: data_collection_rule_id=monitoring.data_collection_rule_vms.id, data_collection_endpoint_id=monitoring.data_collection_endpoint.id, database_service_admin_password=data.password_database_service_admin, - gitea_hostname=user_services.gitea_server.hostname, - hedgedoc_hostname=user_services.hedgedoc_server.hostname, ldap_group_filter=ldap_group_filter, ldap_group_search_base=ldap_group_search_base, ldap_server_hostname=identity.hostname, diff --git a/data_safe_haven/infrastructure/programs/sre/data.py b/data_safe_haven/infrastructure/programs/sre/data.py index 524d743d44..f58c967f42 100644 --- a/data_safe_haven/infrastructure/programs/sre/data.py +++ b/data_safe_haven/infrastructure/programs/sre/data.py @@ -4,6 +4,7 @@ from typing import ClassVar import pulumi_random +import yaml from pulumi import ComponentResource, FileAsset, Input, Output, ResourceOptions from pulumi_azure_native import ( authorization, @@ -50,6 +51,8 @@ def __init__( dns_private_zones: Input[dict[str, network.PrivateZone]], dns_record: Input[network.RecordSet], dns_server_admin_password: Input[pulumi_random.RandomPassword], + gitea_hostname: Input[str], + hedgedoc_hostname: Input[str], location: Input[str], resource_group: Input[resources.ResourceGroup], sre_fqdn: Input[str], @@ -72,6 +75,8 @@ def __init__( ) self.dns_private_zones = dns_private_zones self.dns_record = dns_record + self.gitea_hostname = gitea_hostname + self.hedgedoc_hostname = hedgedoc_hostname self.password_dns_server_admin = dns_server_admin_password self.location = location self.resource_group_id = Output.from_input(resource_group).apply(get_id_from_rg) @@ -559,6 +564,18 @@ def __init__( resource_group_name=props.resource_group_name, source=file_asset, ) + # Upload ansible vars file + storage.Blob( + f"{container_desired_state._name}_blob_pulumi_vars", + account_name=storage_account_data_desired_state.name, + blob_name="vars/pulumi_vars.yaml", + container_name=container_desired_state.name, + resource_group_name=props.resource_group_name, + source=Output.all( + gitea_hostname=props.gitea_hostname, + hedgedoc_hostname=props.hedgedoc_hostname, + ).apply(lambda kwargs: self.ansible_vars_file(**kwargs)), + ) # Set up a private endpoint for the desired state storage account storage_account_data_desired_state_endpoint = network.PrivateEndpoint( f"{storage_account_data_desired_state._name}_private_endpoint", @@ -940,3 +957,7 @@ def __init__( "key_vault_name": key_vault.name, "password_user_database_admin_secret": kvs_password_user_database_admin.name, } + + @staticmethod + def ansible_vars_file(**kwargs: str) -> str: + return yaml.safe_dump(kwargs, explicit_start=True, indent=2) diff --git a/data_safe_haven/infrastructure/programs/sre/workspaces.py b/data_safe_haven/infrastructure/programs/sre/workspaces.py index b48de97668..954bd06bb1 100644 --- a/data_safe_haven/infrastructure/programs/sre/workspaces.py +++ b/data_safe_haven/infrastructure/programs/sre/workspaces.py @@ -28,8 +28,6 @@ def __init__( data_collection_endpoint_id: Input[str], data_collection_rule_id: Input[str], database_service_admin_password: Input[str], - gitea_hostname: Input[str], - hedgedoc_hostname: Input[str], ldap_group_filter: Input[str], ldap_group_search_base: Input[str], ldap_server_hostname: Input[str], @@ -56,8 +54,6 @@ def __init__( self.data_collection_rule_id = data_collection_rule_id self.data_collection_endpoint_id = data_collection_endpoint_id self.database_service_admin_password = database_service_admin_password - self.gitea_hostname = gitea_hostname - self.hedgedoc_hostname = hedgedoc_hostname self.ldap_group_filter = ldap_group_filter self.ldap_group_search_base = ldap_group_search_base self.ldap_server_hostname = ldap_server_hostname @@ -120,8 +116,6 @@ def __init__( apt_proxy_server_hostname=props.apt_proxy_server_hostname, clamav_mirror_hostname=props.clamav_mirror_hostname, database_service_admin_password=props.database_service_admin_password, - gitea_hostname=props.gitea_hostname, - hedgedoc_hostname=props.hedgedoc_hostname, ldap_group_filter=props.ldap_group_filter, ldap_group_search_base=props.ldap_group_search_base, ldap_server_hostname=props.ldap_server_hostname, diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index c904a0bcf1..f5129c94e7 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -216,17 +216,15 @@ dest: "/etc/skel/Desktop/{{ item }}" mode: '0755' loop: - - gitea.desktop - - hedgedoc.desktop - input.desktop - output.desktop - shared.desktop - - name: Set desktop file URLs - ansible.builtin.lineinfile: - path: "/etc/skel/Desktop/{{ item }}.desktop" - line: "{{ lookup('file', '/root/{{ item }}.url') }}" - state: present + - name: Template Gitea and Hedgedoc desktop files + ansible.builtin.template: + src: "etc/skel/Desktop/{{ item }}.desktop.j2" + path: /etc/skel/Desktop/ + mode: '0755' loop: - gitea - hedgedoc diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/gitea.desktop b/data_safe_haven/resources/workspace/ansible/templates/etc/skel/Desktop/gitea.desktop.j2 similarity index 75% rename from data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/gitea.desktop rename to data_safe_haven/resources/workspace/ansible/templates/etc/skel/Desktop/gitea.desktop.j2 index 184609d263..082b955394 100644 --- a/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/gitea.desktop +++ b/data_safe_haven/resources/workspace/ansible/templates/etc/skel/Desktop/gitea.desktop.j2 @@ -4,3 +4,4 @@ Type=Link Name=Gitea Comment= Icon=/usr/local/share/icons/gitea.png +URL=http://{{ gitea_hostname }} diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/hedgedoc.desktop b/data_safe_haven/resources/workspace/ansible/templates/etc/skel/Desktop/hedgedoc.desktop.j2 similarity index 74% rename from data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/hedgedoc.desktop rename to data_safe_haven/resources/workspace/ansible/templates/etc/skel/Desktop/hedgedoc.desktop.j2 index 6a1c2b68c0..23e10459ea 100644 --- a/data_safe_haven/resources/workspace/ansible/files/etc/skel/Desktop/hedgedoc.desktop +++ b/data_safe_haven/resources/workspace/ansible/templates/etc/skel/Desktop/hedgedoc.desktop.j2 @@ -4,3 +4,4 @@ Type=Link Name=HedgeDoc Comment= Icon=/usr/local/share/icons/hedgedoc.png +URL=http://{{ hedgedoc_hostname }} diff --git a/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml b/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml index 408d39dc02..7137b94253 100644 --- a/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml +++ b/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml @@ -93,16 +93,6 @@ write_files: ansible-playbook /desired_state/desired_state.yaml popd - - path: "/root/gitea.url" - permissions: "0400" - content: | - URL=http://{{gitea_hostname}} - - - path: "/root/hedgedoc.url" - permissions: "0400" - content: | - URL=http://{{hedgedoc_hostname}} - mounts: # Desired state configuration is in a blob container mounted as NFSv3 - ["{{storage_account_data_desired_state_name}}.blob.core.windows.net:/{{storage_account_data_desired_state_name}}/desiredstate", /desired_state, nfs, "ro,_netdev,sec=sys,vers=3,nolock,proto=tcp"] From 1f6c0b964637bb974bc1a5349ea3affbaadc0e9a Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 8 Aug 2024 11:16:38 +0100 Subject: [PATCH 020/302] Move desired state to new component --- .../programs/declarative_sre.py | 22 +- .../infrastructure/programs/sre/data.py | 174 +------------ .../programs/sre/desired_state.py | 236 ++++++++++++++++++ .../infrastructure/programs/sre/workspaces.py | 8 +- .../files/usr/local/share/icons/gitea.png | Bin 0 -> 8841 bytes .../files/usr/local/share/icons/hedgedoc.png | Bin 0 -> 13773 bytes 6 files changed, 258 insertions(+), 182 deletions(-) create mode 100644 data_safe_haven/infrastructure/programs/sre/desired_state.py create mode 100644 data_safe_haven/resources/workspace/ansible/files/usr/local/share/icons/gitea.png create mode 100644 data_safe_haven/resources/workspace/ansible/files/usr/local/share/icons/hedgedoc.png diff --git a/data_safe_haven/infrastructure/programs/declarative_sre.py b/data_safe_haven/infrastructure/programs/declarative_sre.py index 32b671a740..efdd7ae105 100644 --- a/data_safe_haven/infrastructure/programs/declarative_sre.py +++ b/data_safe_haven/infrastructure/programs/declarative_sre.py @@ -15,6 +15,7 @@ from .sre.backup import SREBackupComponent, SREBackupProps from .sre.clamav_mirror import SREClamAVMirrorComponent, SREClamAVMirrorProps from .sre.data import SREDataComponent, SREDataProps +from .sre.desired_state import SREDesiredStateComponent, SREDesiredStateProps from .sre.dns_server import SREDnsServerComponent, SREDnsServerProps from .sre.firewall import SREFirewallComponent, SREFirewallProps from .sre.identity import SREIdentityComponent, SREIdentityProps @@ -178,13 +179,10 @@ def __call__(self) -> None: dns_private_zones=dns.private_zones, dns_record=networking.shm_ns_record, dns_server_admin_password=dns.password_admin, - gitea_hostname=user_services.gitea_server.hostname, - hedgedoc_hostname=user_services.hedgedoc_server.hostname, location=self.config.azure.location, resource_group=resource_group, sre_fqdn=networking.sre_fqdn, subnet_data_configuration=networking.subnet_data_configuration, - subnet_data_desired_state=networking.subnet_data_desired_state, subnet_data_private=networking.subnet_data_private, subscription_id=self.config.azure.subscription_id, subscription_name=self.context.subscription_name, @@ -338,6 +336,22 @@ def __call__(self) -> None: tags=self.tags, ) + # Deploy desired state + desired_state = SREDesiredStateComponent( + "sre_desired_state", + self.stack_name, + SREDesiredStateProps( + admin_ip_addresses=self.config.sre.admin_ip_addresses, + dns_private_zones=dns.private_zones, + gitea_hostname=user_services.gitea_hostname, + hedgedoc_hostname=user_services.hedgedoc_hostname, + location=self.config.azure.location, + resource_group=resource_group, + subnet_desired_state=networking.subnet_desired_state, + subscription_name=self.context.subscription_name, + ), + ) + # Deploy workspaces workspaces = SREWorkspacesComponent( "sre_workspaces", @@ -360,7 +374,7 @@ def __call__(self) -> None: resource_group_name=resource_group.name, software_repository_hostname=user_services.software_repositories.hostname, sre_name=self.config.name, - storage_account_data_desired_state_name=data.storage_account_data_desired_state_name, + storage_account_desired_state_name=desired_state.storage_account_name, storage_account_data_private_user_name=data.storage_account_data_private_user_name, storage_account_data_private_sensitive_name=data.storage_account_data_private_sensitive_name, subnet_workspaces=networking.subnet_workspaces, diff --git a/data_safe_haven/infrastructure/programs/sre/data.py b/data_safe_haven/infrastructure/programs/sre/data.py index f58c967f42..92f911df56 100644 --- a/data_safe_haven/infrastructure/programs/sre/data.py +++ b/data_safe_haven/infrastructure/programs/sre/data.py @@ -5,7 +5,7 @@ import pulumi_random import yaml -from pulumi import ComponentResource, FileAsset, Input, Output, ResourceOptions +from pulumi import ComponentResource, Input, Output, ResourceOptions from pulumi_azure_native import ( authorization, keyvault, @@ -35,7 +35,6 @@ SSLCertificate, SSLCertificateProps, ) -from data_safe_haven.resources import resources_path from data_safe_haven.types import AzureDnsZoneNames @@ -51,13 +50,10 @@ def __init__( dns_private_zones: Input[dict[str, network.PrivateZone]], dns_record: Input[network.RecordSet], dns_server_admin_password: Input[pulumi_random.RandomPassword], - gitea_hostname: Input[str], - hedgedoc_hostname: Input[str], location: Input[str], resource_group: Input[resources.ResourceGroup], sre_fqdn: Input[str], subnet_data_configuration: Input[network.GetSubnetResult], - subnet_data_desired_state: Input[network.GetSubnetResult], subnet_data_private: Input[network.GetSubnetResult], subscription_id: Input[str], subscription_name: Input[str], @@ -75,8 +71,6 @@ def __init__( ) self.dns_private_zones = dns_private_zones self.dns_record = dns_record - self.gitea_hostname = gitea_hostname - self.hedgedoc_hostname = hedgedoc_hostname self.password_dns_server_admin = dns_server_admin_password self.location = location self.resource_group_id = Output.from_input(resource_group).apply(get_id_from_rg) @@ -87,9 +81,6 @@ def __init__( self.subnet_data_configuration_id = Output.from_input( subnet_data_configuration ).apply(get_id_from_subnet) - self.subnet_data_desired_state_id = Output.from_input( - subnet_data_desired_state - ).apply(get_id_from_subnet) self.subnet_data_private_id = Output.from_input(subnet_data_private).apply( get_id_from_subnet ) @@ -461,166 +452,6 @@ def __init__( ), ) - # Deploy desired state storage account - # - This holds the /desired_state container that is mounted by workspaces - # - Azure blobs have worse NFS support but can be accessed with Azure Storage Explorer - storage_account_data_desired_state = storage.StorageAccount( - f"{self._name}_storage_account_data_desired_state", - # Storage account names have a maximum of 24 characters - account_name=alphanumeric( - f"{''.join(truncate_tokens(stack_name.split('-'), 11))}desiredstate{sha256hash(self._name)}" - )[:24], - enable_https_traffic_only=True, - enable_nfs_v3=True, - encryption=storage.EncryptionArgs( - key_source=storage.KeySource.MICROSOFT_STORAGE, - services=storage.EncryptionServicesArgs( - blob=storage.EncryptionServiceArgs( - enabled=True, key_type=storage.KeyType.ACCOUNT - ), - file=storage.EncryptionServiceArgs( - enabled=True, key_type=storage.KeyType.ACCOUNT - ), - ), - ), - kind=storage.Kind.BLOCK_BLOB_STORAGE, - is_hns_enabled=True, - location=props.location, - network_rule_set=storage.NetworkRuleSetArgs( - bypass=storage.Bypass.AZURE_SERVICES, - default_action=storage.DefaultAction.DENY, - ip_rules=Output.from_input(props.data_configuration_ip_addresses).apply( - lambda ip_ranges: [ - storage.IPRuleArgs( - action=storage.Action.ALLOW, - i_p_address_or_range=str(ip_address), - ) - for ip_range in sorted(ip_ranges) - for ip_address in AzureIPv4Range.from_cidr(ip_range).all_ips() - ] - ), - virtual_network_rules=[ - storage.VirtualNetworkRuleArgs( - virtual_network_resource_id=props.subnet_data_desired_state_id, - ) - ], - ), - resource_group_name=props.resource_group_name, - sku=storage.SkuArgs(name=storage.SkuName.PREMIUM_ZRS), - opts=child_opts, - tags=child_tags, - ) - # Deploy desired state share - container_desired_state = storage.BlobContainer( - f"{self._name}_blob_desired_state", - account_name=storage_account_data_desired_state.name, - container_name="desiredstate", - default_encryption_scope="$account-encryption-key", - deny_encryption_scope_override=False, - public_access=storage.PublicAccess.NONE, - resource_group_name=props.resource_group_name, - opts=ResourceOptions.merge( - child_opts, - ResourceOptions(parent=storage_account_data_desired_state), - ), - ) - # Set storage container ACLs - BlobContainerAcl( - f"{container_desired_state._name}_acl", - BlobContainerAclProps( - acl_user="r-x", - acl_group="r-x", - acl_other="r-x", - # ensure that the above permissions are also set on any newly created - # files (eg. with Azure Storage Explorer) - apply_default_permissions=True, - container_name=container_desired_state.name, - resource_group_name=props.resource_group_name, - storage_account_name=storage_account_data_desired_state.name, - subscription_name=props.subscription_name, - ), - opts=ResourceOptions.merge( - child_opts, ResourceOptions(parent=container_desired_state) - ), - ) - # Create file assets to upload - desired_state_directory = (resources_path / "workspace" / "ansible").absolute() - files_desired_state = [ - ( - FileAsset(str(file_path)), - file_path.name, - str(file_path.relative_to(desired_state_directory)), - ) - for file_path in sorted(desired_state_directory.rglob("*")) - if file_path.is_file() and not file_path.name.startswith(".") - ] - # Upload file assets to desired state container - for file_asset, file_name, file_path in files_desired_state: - storage.Blob( - f"{container_desired_state._name}_blob_{file_name}", - account_name=storage_account_data_desired_state.name, - blob_name=file_path, - container_name=container_desired_state.name, - resource_group_name=props.resource_group_name, - source=file_asset, - ) - # Upload ansible vars file - storage.Blob( - f"{container_desired_state._name}_blob_pulumi_vars", - account_name=storage_account_data_desired_state.name, - blob_name="vars/pulumi_vars.yaml", - container_name=container_desired_state.name, - resource_group_name=props.resource_group_name, - source=Output.all( - gitea_hostname=props.gitea_hostname, - hedgedoc_hostname=props.hedgedoc_hostname, - ).apply(lambda kwargs: self.ansible_vars_file(**kwargs)), - ) - # Set up a private endpoint for the desired state storage account - storage_account_data_desired_state_endpoint = network.PrivateEndpoint( - f"{storage_account_data_desired_state._name}_private_endpoint", - location=props.location, - private_endpoint_name=f"{stack_name}-pep-storage-account-data-desired-state", - private_link_service_connections=[ - network.PrivateLinkServiceConnectionArgs( - group_ids=["blob"], - name=f"{stack_name}-cnxn-pep-storage-account-data-private-sensitive", - private_link_service_id=storage_account_data_desired_state.id, - ) - ], - resource_group_name=props.resource_group_name, - subnet=network.SubnetArgs(id=props.subnet_data_desired_state_id), - opts=ResourceOptions.merge( - child_opts, - ResourceOptions( - ignore_changes=["custom_dns_configs"], - parent=storage_account_data_desired_state, - ), - ), - tags=child_tags, - ) - # Add a private DNS record for each desired state endpoint custom DNS config - network.PrivateDnsZoneGroup( - f"{storage_account_data_desired_state._name}_private_dns_zone_group", - private_dns_zone_configs=[ - network.PrivateDnsZoneConfigArgs( - name=replace_separators( - f"{stack_name}-storage-account-data-desired-state-to-{dns_zone_name}", - "-", - ), - private_dns_zone_id=props.dns_private_zones[dns_zone_name].id, - ) - for dns_zone_name in AzureDnsZoneNames.STORAGE_ACCOUNT - ], - private_dns_zone_group_name=f"{stack_name}-dzg-storage-account-data-desired-state", - private_endpoint_name=storage_account_data_desired_state_endpoint.name, - resource_group_name=props.resource_group_name, - opts=ResourceOptions.merge( - child_opts, - ResourceOptions(parent=storage_account_data_desired_state), - ), - ) - # Deploy sensitive data blob storage account # - This holds the /data and /output containers that are mounted by workspaces # - Azure blobs have worse NFS support but can be accessed with Azure Storage Explorer @@ -928,9 +759,6 @@ def __init__( self.storage_account_data_configuration_name = ( storage_account_data_configuration.name ) - self.storage_account_data_desired_state_name = ( - storage_account_data_desired_state.name - ) self.managed_identity = identity_key_vault_reader self.password_nexus_admin = Output.secret(password_nexus_admin.result) self.password_database_service_admin = Output.secret( diff --git a/data_safe_haven/infrastructure/programs/sre/desired_state.py b/data_safe_haven/infrastructure/programs/sre/desired_state.py new file mode 100644 index 0000000000..47710e6e02 --- /dev/null +++ b/data_safe_haven/infrastructure/programs/sre/desired_state.py @@ -0,0 +1,236 @@ +"""Pulumi component for SRE desired state""" + +from collections.abc import Mapping, Sequence + +from pulumi import ComponentResource, FileAsset, Input, Output, ResourceOptions +from pulumi_azure_native import ( + network, + resources, + storage, +) + +from data_safe_haven.external import AzureIPv4Range +from data_safe_haven.functions import ( + alphanumeric, + replace_separators, + sha256hash, + truncate_tokens, +) +from data_safe_haven.infrastructure.common import ( + get_id_from_rg, + get_id_from_subnet, + get_name_from_rg, +) +from data_safe_haven.infrastructure.components import ( + BlobContainerAcl, + BlobContainerAclProps, +) +from data_safe_haven.resources import resources_path +from data_safe_haven.types import AzureDnsZoneNames + + +class SREDesiredStateProps: + """Properties for SREDesiredStateComponent""" + + def __init__( + self, + admin_ip_addresses: Input[Sequence[str]], + dns_private_zones: Input[dict[str, network.PrivateZone]], + gitea_hostname: Input[str], + hedgedoc_hostname: Input[str], + location: Input[str], + resource_group: Input[resources.ResourceGroup], + subscription_name: Input[str], + subnet_desired_state: Input[network.GetSubnetResult], + ) -> None: + self.admin_ip_addresses = admin_ip_addresses + self.dns_private_zones = dns_private_zones + self.gitea_hostname = gitea_hostname + self.hedgedoc_hostname = hedgedoc_hostname + self.location = location + self.resource_group_id = Output.from_input(resource_group).apply(get_id_from_rg) + self.resource_group_name = Output.from_input(resource_group).apply( + get_name_from_rg + ) + self.subnet_desired_state_id = Output.from_input(subnet_desired_state).apply( + get_id_from_subnet + ) + self.subscription_name = subscription_name + + +class SREDesiredStateComponent(ComponentResource): + """Deploy SRE desired state with Pulumi""" + + def __init__( + self, + name: str, + stack_name: str, + props: SREDesiredStateProps, + opts: ResourceOptions | None = None, + tags: Input[Mapping[str, Input[str]]] | None = None, + ) -> None: + super().__init__("dsh:sre:DesiredStateComponent", name, {}, opts) + child_opts = ResourceOptions.merge(opts, ResourceOptions(parent=self)) + child_tags = {"component": "data"} | (tags if tags else {}) + + # Deploy desired state storage account + # - This holds the /desired_state container that is mounted by workspaces + # - Azure blobs have worse NFS support but can be accessed with Azure Storage Explorer + storage_account = storage.StorageAccount( + f"{self._name}_storage_account", + # Storage account names have a maximum of 24 characters + account_name=alphanumeric( + f"{''.join(truncate_tokens(stack_name.split('-'), 11))}desiredstate{sha256hash(self._name)}" + )[:24], + enable_https_traffic_only=True, + enable_nfs_v3=True, + encryption=storage.EncryptionArgs( + key_source=storage.KeySource.MICROSOFT_STORAGE, + services=storage.EncryptionServicesArgs( + blob=storage.EncryptionServiceArgs( + enabled=True, key_type=storage.KeyType.ACCOUNT + ), + file=storage.EncryptionServiceArgs( + enabled=True, key_type=storage.KeyType.ACCOUNT + ), + ), + ), + kind=storage.Kind.BLOCK_BLOB_STORAGE, + is_hns_enabled=True, + location=props.location, + network_rule_set=storage.NetworkRuleSetArgs( + bypass=storage.Bypass.AZURE_SERVICES, + default_action=storage.DefaultAction.DENY, + ip_rules=Output.from_input(props.admin_ip_addresses).apply( + lambda ip_ranges: [ + storage.IPRuleArgs( + action=storage.Action.ALLOW, + i_p_address_or_range=str(ip_address), + ) + for ip_range in sorted(ip_ranges) + for ip_address in AzureIPv4Range.from_cidr(ip_range).all_ips() + ] + ), + virtual_network_rules=[ + storage.VirtualNetworkRuleArgs( + virtual_network_resource_id=props.subnet_desired_state_id, + ) + ], + ), + resource_group_name=props.resource_group_name, + sku=storage.SkuArgs(name=storage.SkuName.PREMIUM_ZRS), + opts=child_opts, + tags=child_tags, + ) + # Deploy desired state share + container_desired_state = storage.BlobContainer( + f"{self._name}_blob_desired_state", + account_name=storage_account.name, + container_name="desiredstate", + default_encryption_scope="$account-encryption-key", + deny_encryption_scope_override=False, + public_access=storage.PublicAccess.NONE, + resource_group_name=props.resource_group_name, + opts=ResourceOptions.merge( + child_opts, + ResourceOptions(parent=storage_account), + ), + ) + # Set storage container ACLs + BlobContainerAcl( + f"{container_desired_state._name}_acl", + BlobContainerAclProps( + acl_user="r-x", + acl_group="r-x", + acl_other="r-x", + # ensure that the above permissions are also set on any newly created + # files (eg. with Azure Storage Explorer) + apply_default_permissions=True, + container_name=container_desired_state.name, + resource_group_name=props.resource_group_name, + storage_account_name=storage_account.name, + subscription_name=props.subscription_name, + ), + opts=ResourceOptions.merge( + child_opts, ResourceOptions(parent=container_desired_state) + ), + ) + # Create file assets to upload + desired_state_directory = (resources_path / "workspace" / "ansible").absolute() + files_desired_state = [ + ( + FileAsset(str(file_path)), + file_path.name, + str(file_path.relative_to(desired_state_directory)), + ) + for file_path in sorted(desired_state_directory.rglob("*")) + if file_path.is_file() and not file_path.name.startswith(".") + ] + # Upload file assets to desired state container + for file_asset, file_name, file_path in files_desired_state: + storage.Blob( + f"{container_desired_state._name}_blob_{file_name}", + account_name=storage_account.name, + blob_name=file_path, + container_name=container_desired_state.name, + resource_group_name=props.resource_group_name, + source=file_asset, + ) + # Upload ansible vars file + storage.Blob( + f"{container_desired_state._name}_blob_pulumi_vars", + account_name=storage_account.name, + blob_name="vars/pulumi_vars.yaml", + container_name=container_desired_state.name, + resource_group_name=props.resource_group_name, + source=Output.all( + gitea_hostname=props.gitea_hostname, + hedgedoc_hostname=props.hedgedoc_hostname, + ).apply(lambda kwargs: self.ansible_vars_file(**kwargs)), + ) + # Set up a private endpoint for the desired state storage account + storage_account_endpoint = network.PrivateEndpoint( + f"{storage_account._name}_private_endpoint", + location=props.location, + private_endpoint_name=f"{stack_name}-pep-storage-account-data-desired-state", + private_link_service_connections=[ + network.PrivateLinkServiceConnectionArgs( + group_ids=["blob"], + name=f"{stack_name}-cnxn-pep-storage-account-data-private-sensitive", + private_link_service_id=storage_account.id, + ) + ], + resource_group_name=props.resource_group_name, + subnet=network.SubnetArgs(id=props.subnet_desired_state_id), + opts=ResourceOptions.merge( + child_opts, + ResourceOptions( + ignore_changes=["custom_dns_configs"], + parent=storage_account, + ), + ), + tags=child_tags, + ) + # Add a private DNS record for each desired state endpoint custom DNS config + network.PrivateDnsZoneGroup( + f"{storage_account._name}_private_dns_zone_group", + private_dns_zone_configs=[ + network.PrivateDnsZoneConfigArgs( + name=replace_separators( + f"{stack_name}-storage-account-data-desired-state-to-{dns_zone_name}", + "-", + ), + private_dns_zone_id=props.dns_private_zones[dns_zone_name].id, + ) + for dns_zone_name in AzureDnsZoneNames.STORAGE_ACCOUNT + ], + private_dns_zone_group_name=f"{stack_name}-dzg-storage-account-data-desired-state", + private_endpoint_name=storage_account_endpoint.name, + resource_group_name=props.resource_group_name, + opts=ResourceOptions.merge( + child_opts, + ResourceOptions(parent=storage_account), + ), + ) + + self.storage_account_name = storage_account.name diff --git a/data_safe_haven/infrastructure/programs/sre/workspaces.py b/data_safe_haven/infrastructure/programs/sre/workspaces.py index 954bd06bb1..6d01767abb 100644 --- a/data_safe_haven/infrastructure/programs/sre/workspaces.py +++ b/data_safe_haven/infrastructure/programs/sre/workspaces.py @@ -39,7 +39,7 @@ def __init__( resource_group_name: Input[str], software_repository_hostname: Input[str], sre_name: Input[str], - storage_account_data_desired_state_name: Input[str], + storage_account_desired_state_name: Input[str], storage_account_data_private_sensitive_name: Input[str], storage_account_data_private_user_name: Input[str], subnet_workspaces: Input[network.GetSubnetResult], @@ -65,9 +65,7 @@ def __init__( self.resource_group_name = resource_group_name self.software_repository_hostname = software_repository_hostname self.sre_name = sre_name - self.storage_account_data_desired_state_name = ( - storage_account_data_desired_state_name - ) + self.storage_account_desired_state_name = storage_account_desired_state_name self.storage_account_data_private_user_name = ( storage_account_data_private_user_name ) @@ -123,7 +121,7 @@ def __init__( ldap_user_filter=props.ldap_user_filter, ldap_user_search_base=props.ldap_user_search_base, software_repository_hostname=props.software_repository_hostname, - storage_account_data_desired_state_name=props.storage_account_data_desired_state_name, + storage_account_desired_state_name=props.storage_account_desired_state_name, storage_account_data_private_user_name=props.storage_account_data_private_user_name, storage_account_data_private_sensitive_name=props.storage_account_data_private_sensitive_name, ).apply(lambda kwargs: self.template_cloudinit(**kwargs)) diff --git a/data_safe_haven/resources/workspace/ansible/files/usr/local/share/icons/gitea.png b/data_safe_haven/resources/workspace/ansible/files/usr/local/share/icons/gitea.png new file mode 100644 index 0000000000000000000000000000000000000000..7ca49a3918e4960dff2182c03c241ff23e997a8d GIT binary patch literal 8841 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 literal 0 HcmV?d00001 diff --git a/data_safe_haven/resources/workspace/ansible/files/usr/local/share/icons/hedgedoc.png b/data_safe_haven/resources/workspace/ansible/files/usr/local/share/icons/hedgedoc.png new file mode 100644 index 0000000000000000000000000000000000000000..6dae00fd53caf67b3442cfba739c16b22cadddd1 GIT binary patch literal 13773 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 Date: Thu, 8 Aug 2024 15:24:07 +0100 Subject: [PATCH 021/302] Correct hostname arguments --- data_safe_haven/infrastructure/programs/declarative_sre.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_safe_haven/infrastructure/programs/declarative_sre.py b/data_safe_haven/infrastructure/programs/declarative_sre.py index efdd7ae105..5bd807db17 100644 --- a/data_safe_haven/infrastructure/programs/declarative_sre.py +++ b/data_safe_haven/infrastructure/programs/declarative_sre.py @@ -343,8 +343,8 @@ def __call__(self) -> None: SREDesiredStateProps( admin_ip_addresses=self.config.sre.admin_ip_addresses, dns_private_zones=dns.private_zones, - gitea_hostname=user_services.gitea_hostname, - hedgedoc_hostname=user_services.hedgedoc_hostname, + gitea_hostname=user_services.gitea_server.hostname, + hedgedoc_hostname=user_services.hedgedoc_server.hostname, location=self.config.azure.location, resource_group=resource_group, subnet_desired_state=networking.subnet_desired_state, From 384e9552b0da1310911edae92b61998ba3536514 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 8 Aug 2024 15:32:00 +0100 Subject: [PATCH 022/302] Correct subnet variable names --- .../infrastructure/programs/sre/networking.py | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/data_safe_haven/infrastructure/programs/sre/networking.py b/data_safe_haven/infrastructure/programs/sre/networking.py index 5578d791a0..3faa4604c2 100644 --- a/data_safe_haven/infrastructure/programs/sre/networking.py +++ b/data_safe_haven/infrastructure/programs/sre/networking.py @@ -483,8 +483,8 @@ def __init__( opts=child_opts, tags=child_tags, ) - nsg_data_desired_state = network.NetworkSecurityGroup( - f"{self._name}_nsg_data_desired_state", + nsg_desired_state = network.NetworkSecurityGroup( + f"{self._name}_nsg_desired_state", location=props.location, network_security_group_name=f"{stack_name}-nsg-data-desired-state", resource_group_name=props.resource_group_name, @@ -1454,7 +1454,7 @@ def __init__( network.SecurityRuleArgs( access=network.SecurityRuleAccess.ALLOW, description="Allow outbound connections to desired state data endpoints.", - destination_address_prefix=SREIpRanges.data_desired_state.prefix, + destination_address_prefix=SREIpRanges.desired_state.prefix, destination_port_range="*", direction=network.SecurityRuleDirection.OUTBOUND, name="AllowDataDesiredStateEndpointsOutbound", @@ -1558,7 +1558,7 @@ def __init__( subnet_apt_proxy_server_name = "AptProxyServerSubnet" subnet_clamav_mirror_name = "ClamAVMirrorSubnet" subnet_data_configuration_name = "DataConfigurationSubnet" - subnet_data_desired_state_name = "DataDesiredStateSubnet" + subnet_desired_state_name = "DataDesiredStateSubnet" subnet_data_private_name = "DataPrivateSubnet" subnet_firewall_name = "AzureFirewallSubnet" subnet_firewall_management_name = "AzureFirewallManagementSubnet" @@ -1643,10 +1643,10 @@ def __init__( ), # Desired state data subnet network.SubnetArgs( - address_prefix=SREIpRanges.data_desired_state.prefix, - name=subnet_data_desired_state_name, + address_prefix=SREIpRanges.desired_state.prefix, + name=subnet_desired_state_name, network_security_group=network.NetworkSecurityGroupArgs( - id=nsg_data_desired_state.id + id=nsg_desired_state.id ), route_table=network.RouteTableArgs(id=route_table.id), service_endpoints=[ @@ -1966,13 +1966,13 @@ def __init__( resource_group_name=props.resource_group_name, virtual_network_name=sre_virtual_network.name, ) - self.subnet_data_desired_state = network.get_subnet_output( - subnet_name=subnet_data_desired_state_name, + self.subnet_desired_state = network.get_subnet_output( + subnet_name=subnet_desired_state_name, resource_group_name=props.resource_group_name, virtual_network_name=sre_virtual_network.name, ) - self.subnet_data_desired_state = network.get_subnet_output( - subnet_name=subnet_data_desired_state_name, + self.subnet_desired_state = network.get_subnet_output( + subnet_name=subnet_desired_state_name, resource_group_name=props.resource_group_name, virtual_network_name=sre_virtual_network.name, ) From d5d07689163ed854bad7825759bb131d60e97432 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 8 Aug 2024 15:39:17 +0100 Subject: [PATCH 023/302] Update NSG names --- .../infrastructure/programs/sre/desired_state.py | 8 ++++---- data_safe_haven/infrastructure/programs/sre/networking.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/data_safe_haven/infrastructure/programs/sre/desired_state.py b/data_safe_haven/infrastructure/programs/sre/desired_state.py index 47710e6e02..051c5f498a 100644 --- a/data_safe_haven/infrastructure/programs/sre/desired_state.py +++ b/data_safe_haven/infrastructure/programs/sre/desired_state.py @@ -192,11 +192,11 @@ def __init__( storage_account_endpoint = network.PrivateEndpoint( f"{storage_account._name}_private_endpoint", location=props.location, - private_endpoint_name=f"{stack_name}-pep-storage-account-data-desired-state", + private_endpoint_name=f"{stack_name}-pep-storage-account-desired-state", private_link_service_connections=[ network.PrivateLinkServiceConnectionArgs( group_ids=["blob"], - name=f"{stack_name}-cnxn-pep-storage-account-data-private-sensitive", + name=f"{stack_name}-cnxn-pep-storage-account-desired-state", private_link_service_id=storage_account.id, ) ], @@ -217,14 +217,14 @@ def __init__( private_dns_zone_configs=[ network.PrivateDnsZoneConfigArgs( name=replace_separators( - f"{stack_name}-storage-account-data-desired-state-to-{dns_zone_name}", + f"{stack_name}-storage-account-desired-state-to-{dns_zone_name}", "-", ), private_dns_zone_id=props.dns_private_zones[dns_zone_name].id, ) for dns_zone_name in AzureDnsZoneNames.STORAGE_ACCOUNT ], - private_dns_zone_group_name=f"{stack_name}-dzg-storage-account-data-desired-state", + private_dns_zone_group_name=f"{stack_name}-dzg-storage-account-desired-state", private_endpoint_name=storage_account_endpoint.name, resource_group_name=props.resource_group_name, opts=ResourceOptions.merge( diff --git a/data_safe_haven/infrastructure/programs/sre/networking.py b/data_safe_haven/infrastructure/programs/sre/networking.py index 3faa4604c2..c11d89bc17 100644 --- a/data_safe_haven/infrastructure/programs/sre/networking.py +++ b/data_safe_haven/infrastructure/programs/sre/networking.py @@ -486,7 +486,7 @@ def __init__( nsg_desired_state = network.NetworkSecurityGroup( f"{self._name}_nsg_desired_state", location=props.location, - network_security_group_name=f"{stack_name}-nsg-data-desired-state", + network_security_group_name=f"{stack_name}-nsg-desired-state", resource_group_name=props.resource_group_name, security_rules=[ # Inbound From 3766790d9d4ca41195bf7ebaec22de3c30cba56e Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 9 Aug 2024 15:06:14 +0100 Subject: [PATCH 024/302] Correct IP range name --- data_safe_haven/infrastructure/common/ip_ranges.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_safe_haven/infrastructure/common/ip_ranges.py b/data_safe_haven/infrastructure/common/ip_ranges.py index f0613e577a..2fb3279ca3 100644 --- a/data_safe_haven/infrastructure/common/ip_ranges.py +++ b/data_safe_haven/infrastructure/common/ip_ranges.py @@ -14,7 +14,7 @@ class SREIpRanges: apt_proxy_server = vnet.next_subnet(8) clamav_mirror = vnet.next_subnet(8) data_configuration = vnet.next_subnet(8) - data_desired_state = vnet.next_subnet(8) + desired_state = vnet.next_subnet(8) data_private = vnet.next_subnet(8) firewall = vnet.next_subnet(64) # 64 address minimum firewall_management = vnet.next_subnet(64) # 64 address minimum From dbccff71317ca270ed438c2f41564fe186b3e367 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 9 Aug 2024 15:13:43 +0100 Subject: [PATCH 025/302] Fix IP ranges test --- tests/infrastructure/common/test_ip_ranges.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/infrastructure/common/test_ip_ranges.py b/tests/infrastructure/common/test_ip_ranges.py index 3dab535193..20a60ff1bd 100644 --- a/tests/infrastructure/common/test_ip_ranges.py +++ b/tests/infrastructure/common/test_ip_ranges.py @@ -14,7 +14,7 @@ def test_vnet_and_subnets(self): assert SREIpRanges.data_configuration == AzureIPv4Range( "10.0.1.16", "10.0.1.23" ) - assert SREIpRanges.data_desired_state == AzureIPv4Range( + assert SREIpRanges.desired_state == AzureIPv4Range( "10.0.1.24", "10.0.1.31" ) assert SREIpRanges.data_private == AzureIPv4Range("10.0.1.32", "10.0.1.39") From 7a41029ab002fbabefa5754cf6b38bcf1be42d73 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 9 Aug 2024 15:34:07 +0100 Subject: [PATCH 026/302] Move ansible vars file function --- data_safe_haven/infrastructure/programs/sre/data.py | 5 ----- data_safe_haven/infrastructure/programs/sre/desired_state.py | 5 +++++ tests/infrastructure/common/test_ip_ranges.py | 4 +--- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/data_safe_haven/infrastructure/programs/sre/data.py b/data_safe_haven/infrastructure/programs/sre/data.py index 92f911df56..e9f653effd 100644 --- a/data_safe_haven/infrastructure/programs/sre/data.py +++ b/data_safe_haven/infrastructure/programs/sre/data.py @@ -4,7 +4,6 @@ from typing import ClassVar import pulumi_random -import yaml from pulumi import ComponentResource, Input, Output, ResourceOptions from pulumi_azure_native import ( authorization, @@ -785,7 +784,3 @@ def __init__( "key_vault_name": key_vault.name, "password_user_database_admin_secret": kvs_password_user_database_admin.name, } - - @staticmethod - def ansible_vars_file(**kwargs: str) -> str: - return yaml.safe_dump(kwargs, explicit_start=True, indent=2) diff --git a/data_safe_haven/infrastructure/programs/sre/desired_state.py b/data_safe_haven/infrastructure/programs/sre/desired_state.py index 051c5f498a..7faec9bc20 100644 --- a/data_safe_haven/infrastructure/programs/sre/desired_state.py +++ b/data_safe_haven/infrastructure/programs/sre/desired_state.py @@ -2,6 +2,7 @@ from collections.abc import Mapping, Sequence +import yaml from pulumi import ComponentResource, FileAsset, Input, Output, ResourceOptions from pulumi_azure_native import ( network, @@ -234,3 +235,7 @@ def __init__( ) self.storage_account_name = storage_account.name + + @staticmethod + def ansible_vars_file(**kwargs: str) -> str: + return yaml.safe_dump(kwargs, explicit_start=True, indent=2) diff --git a/tests/infrastructure/common/test_ip_ranges.py b/tests/infrastructure/common/test_ip_ranges.py index 20a60ff1bd..807c4f3f86 100644 --- a/tests/infrastructure/common/test_ip_ranges.py +++ b/tests/infrastructure/common/test_ip_ranges.py @@ -14,9 +14,7 @@ def test_vnet_and_subnets(self): assert SREIpRanges.data_configuration == AzureIPv4Range( "10.0.1.16", "10.0.1.23" ) - assert SREIpRanges.desired_state == AzureIPv4Range( - "10.0.1.24", "10.0.1.31" - ) + assert SREIpRanges.desired_state == AzureIPv4Range("10.0.1.24", "10.0.1.31") assert SREIpRanges.data_private == AzureIPv4Range("10.0.1.32", "10.0.1.39") assert SREIpRanges.firewall == AzureIPv4Range("10.0.1.64", "10.0.1.127") assert SREIpRanges.firewall_management == AzureIPv4Range( From 5c193fea9ee82773d3fe2525ab2b3a2223c8a6d8 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 13 Aug 2024 09:40:03 +0100 Subject: [PATCH 027/302] Use string asset for blob --- .../programs/sre/desired_state.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/data_safe_haven/infrastructure/programs/sre/desired_state.py b/data_safe_haven/infrastructure/programs/sre/desired_state.py index 7faec9bc20..52d90db5e5 100644 --- a/data_safe_haven/infrastructure/programs/sre/desired_state.py +++ b/data_safe_haven/infrastructure/programs/sre/desired_state.py @@ -3,7 +3,14 @@ from collections.abc import Mapping, Sequence import yaml -from pulumi import ComponentResource, FileAsset, Input, Output, ResourceOptions +from pulumi import ( + ComponentResource, + FileAsset, + Input, + Output, + ResourceOptions, + StringAsset, +) from pulumi_azure_native import ( network, resources, @@ -184,10 +191,12 @@ def __init__( blob_name="vars/pulumi_vars.yaml", container_name=container_desired_state.name, resource_group_name=props.resource_group_name, - source=Output.all( - gitea_hostname=props.gitea_hostname, - hedgedoc_hostname=props.hedgedoc_hostname, - ).apply(lambda kwargs: self.ansible_vars_file(**kwargs)), + source=StringAsset( + Output.all( + gitea_hostname=props.gitea_hostname, + hedgedoc_hostname=props.hedgedoc_hostname, + ).apply(lambda kwargs: self.ansible_vars_file(**kwargs)) + ), ) # Set up a private endpoint for the desired state storage account storage_account_endpoint = network.PrivateEndpoint( From d5920c8b8cf36e2ef6ac104b161f438fad8ad793 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 13 Aug 2024 09:48:41 +0100 Subject: [PATCH 028/302] Apply StringAsset to str not Output[str] --- .../infrastructure/programs/sre/desired_state.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/data_safe_haven/infrastructure/programs/sre/desired_state.py b/data_safe_haven/infrastructure/programs/sre/desired_state.py index 52d90db5e5..e84345fc4d 100644 --- a/data_safe_haven/infrastructure/programs/sre/desired_state.py +++ b/data_safe_haven/infrastructure/programs/sre/desired_state.py @@ -191,11 +191,11 @@ def __init__( blob_name="vars/pulumi_vars.yaml", container_name=container_desired_state.name, resource_group_name=props.resource_group_name, - source=StringAsset( - Output.all( - gitea_hostname=props.gitea_hostname, - hedgedoc_hostname=props.hedgedoc_hostname, - ).apply(lambda kwargs: self.ansible_vars_file(**kwargs)) + source=Output.all( + gitea_hostname=props.gitea_hostname, + hedgedoc_hostname=props.hedgedoc_hostname, + ).apply( + lambda kwargs: StringAsset(self.ansible_vars_file(**kwargs)) ), ) # Set up a private endpoint for the desired state storage account From b0febc764d6c1552e8a8f13b5cd97b6033d27004 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 13 Aug 2024 09:57:24 +0100 Subject: [PATCH 029/302] Add StringAsset to typings --- data_safe_haven/infrastructure/programs/sre/desired_state.py | 4 +--- typings/pulumi/__init__.pyi | 3 ++- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/data_safe_haven/infrastructure/programs/sre/desired_state.py b/data_safe_haven/infrastructure/programs/sre/desired_state.py index e84345fc4d..8700939af0 100644 --- a/data_safe_haven/infrastructure/programs/sre/desired_state.py +++ b/data_safe_haven/infrastructure/programs/sre/desired_state.py @@ -194,9 +194,7 @@ def __init__( source=Output.all( gitea_hostname=props.gitea_hostname, hedgedoc_hostname=props.hedgedoc_hostname, - ).apply( - lambda kwargs: StringAsset(self.ansible_vars_file(**kwargs)) - ), + ).apply(lambda kwargs: StringAsset(self.ansible_vars_file(**kwargs))), ) # Set up a private endpoint for the desired state storage account storage_account_endpoint = network.PrivateEndpoint( diff --git a/typings/pulumi/__init__.pyi b/typings/pulumi/__init__.pyi index e1468220dd..80ae2bf986 100644 --- a/typings/pulumi/__init__.pyi +++ b/typings/pulumi/__init__.pyi @@ -1,6 +1,6 @@ import pulumi.automation as automation import pulumi.dynamic as dynamic -from pulumi.asset import FileAsset +from pulumi.asset import FileAsset, StringAsset from pulumi.config import ( Config, ) @@ -27,5 +27,6 @@ __all__ = [ "Output", "Resource", "ResourceOptions", + "StringAsset", "UNKNOWN", ] From 9b48edb8996b4489c7306aecdd3d3f0da9b73b5c Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 13 Aug 2024 10:08:54 +0100 Subject: [PATCH 030/302] Correct cloudinit template argument name --- .../resources/workspace/workspace.cloud_init.mustache.yaml | 2 +- tests/infrastructure/programs/sre/test_workspaces.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml b/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml index 7137b94253..cfa8aebfd4 100644 --- a/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml +++ b/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml @@ -95,7 +95,7 @@ write_files: mounts: # Desired state configuration is in a blob container mounted as NFSv3 - - ["{{storage_account_data_desired_state_name}}.blob.core.windows.net:/{{storage_account_data_desired_state_name}}/desiredstate", /desired_state, nfs, "ro,_netdev,sec=sys,vers=3,nolock,proto=tcp"] + - ["{{storage_account_desired_state_name}}.blob.core.windows.net:/{{storage_account_desired_state_name}}/desiredstate", /desired_state, nfs, "ro,_netdev,sec=sys,vers=3,nolock,proto=tcp"] # Secure data is in a blob container mounted as NFSv3 - ["{{storage_account_data_private_sensitive_name}}.blob.core.windows.net:/{{storage_account_data_private_sensitive_name}}/ingress", /data, nfs, "ro,_netdev,sec=sys,vers=3,nolock,proto=tcp"] - ["{{storage_account_data_private_sensitive_name}}.blob.core.windows.net:/{{storage_account_data_private_sensitive_name}}/egress", /output, nfs, "rw,_netdev,sec=sys,vers=3,nolock,proto=tcp"] diff --git a/tests/infrastructure/programs/sre/test_workspaces.py b/tests/infrastructure/programs/sre/test_workspaces.py index 108ce162d0..e4a395eeef 100644 --- a/tests/infrastructure/programs/sre/test_workspaces.py +++ b/tests/infrastructure/programs/sre/test_workspaces.py @@ -6,10 +6,10 @@ class TestTemplateCloudInit: def test_template_cloudinit(self): cloudinit = SREWorkspacesComponent.template_cloudinit( - storage_account_data_desired_state_name="storageaccount", + storage_account_desired_state_name="sadesiredstate", ) assert ( - '- ["storageaccount.blob.core.windows.net:/storageaccount/desiredstate", /desired_state, nfs, "ro,' + '- ["sadesiredstate.blob.core.windows.net:/sadesiredstate/desiredstate", /desired_state, nfs, "ro,' in cloudinit ) From 56d4e8a532d975e520525f15f84099d74b017dff Mon Sep 17 00:00:00 2001 From: James Robinson Date: Mon, 12 Aug 2024 14:09:22 +0100 Subject: [PATCH 031/302] :bug: Ensure that icons directory is created --- .../workspace/ansible/desired_state.yaml | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index f5129c94e7..c87ca873ce 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -54,6 +54,18 @@ - apt-news - esm-cache + - name: Ensure necessary directories exist + ansible.builtin.file: + path: "{{ item }}" + state: directory + mode: '0755' + loop: + - /etc/skel/Desktop + - /etc/xdg/xfce4/terminal + - /etc/xrdp + - /usr/local/share/icons + - /usr/local/share/xrdp + - name: Enable bash autocompletion globally ansible.builtin.blockinfile: path: /etc/bash.bashrc @@ -124,17 +136,6 @@ validate: sshd -T -f %s notify: Restart sshd - - name: Ensure xrdp directories exist - ansible.builtin.file: - path: "{{ item }}" - state: directory - mode: '0755' - loop: - - /etc/skel/Desktop - - /etc/xdg/xfce4/terminal - - /etc/xrdp - - /usr/local/share/xrdp - - name: Copy xrdp settings ansible.builtin.copy: src: etc/xrdp/xrdp.ini From 913ccd0037083fb1af816a868c3a6d43c49a07b6 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Mon, 12 Aug 2024 16:08:47 +0100 Subject: [PATCH 032/302] :recycle: Simplify ansible setup by copying all files in a directory where possible --- .../workspace/ansible/desired_state.yaml | 39 +++++++------------ 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index c87ca873ce..b26afeeb33 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -172,7 +172,7 @@ regexp: '^TerminalEmulator=' line: 'TerminalEmulator=xfce4-terminal' - - name: Set default terminal colourscheme + - name: Copy default terminal colourscheme ansible.builtin.copy: src: etc/xdg/xfce4/terminal/terminalrc dest: /etc/xdg/xfce4/terminal/terminalrc @@ -202,24 +202,19 @@ - xrdp - xrdp-sesman - - name: Copy icons + # This will create directories if src or dest ends in '/' + - name: Copy desktop icons directory ansible.builtin.copy: - src: "usr/local/share/icons/{{ item }}" - dest: "/usr/local/share/icons/{{ item }}" + src: "usr/local/share/icons/" + dest: "/usr/local/share/icons/" mode: '0444' - loop: - - gitea.png - - hedgedoc.png - - name: Copy desktop files + # This will create directories if src or dest ends in '/' + - name: Copy desktop files directory ansible.builtin.copy: - src: "etc/skel/Desktop/{{ item }}" - dest: "/etc/skel/Desktop/{{ item }}" + src: "etc/skel/Desktop/" + dest: "/etc/skel/Desktop/" mode: '0755' - loop: - - input.desktop - - output.desktop - - shared.desktop - name: Template Gitea and Hedgedoc desktop files ansible.builtin.template: @@ -293,12 +288,12 @@ systemctl stop clamav-freshclam && freshclam && systemctl start clamav-freshclam creates: '/var/lib/clamav/main.{c[vl]d,inc}' - - name: Install ClamAV services and timer + # This will create directories if src or dest ends in '/' + - name: Copy ClamAV services directory ansible.builtin.copy: - src: "{{ item }}" + src: "etc/systemd/system/" dest: /etc/systemd/system/ mode: '0644' - with_fileglob: 'etc/systemd/system/clamav*' notify: Systemd daemon reload - name: Enable and start freshclam @@ -325,12 +320,12 @@ enabled: true state: started - - name: Copy smoke test files + # This will create directories if src or dest ends in '/' + - name: Copy smoke test files directory ansible.builtin.copy: - src: "{{ item }}" + src: "usr/local/smoke_tests/" dest: /usr/local/smoke_tests/ mode: '0755' - with_fileglob: 'usr/local/smoke_tests/*' handlers: @@ -344,10 +339,6 @@ name: sshd state: restarted - - name: Update PAM auth # noqa: no-changed-when - ansible.builtin.command: - cmd: pam-auth-update --enable mkhomedir ldap - # Run systemd daemon-reload. # https://www.freedesktop.org/software/systemd/man/systemctl.html#daemon-reload # Should be called when changes are made to .service or .timer files From 7eb831710afb8836dec708916dfa2eb1a8f41bd5 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Mon, 12 Aug 2024 16:12:35 +0100 Subject: [PATCH 033/302] :wrench: Do not create xrdp directories separately --- .../workspace/ansible/desired_state.yaml | 27 +++++++------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index b26afeeb33..2dcee486f9 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -54,18 +54,6 @@ - apt-news - esm-cache - - name: Ensure necessary directories exist - ansible.builtin.file: - path: "{{ item }}" - state: directory - mode: '0755' - loop: - - /etc/skel/Desktop - - /etc/xdg/xfce4/terminal - - /etc/xrdp - - /usr/local/share/icons - - /usr/local/share/xrdp - - name: Enable bash autocompletion globally ansible.builtin.blockinfile: path: /etc/bash.bashrc @@ -136,16 +124,18 @@ validate: sshd -T -f %s notify: Restart sshd + # This will create directories if src or dest ends in '/' - name: Copy xrdp settings ansible.builtin.copy: - src: etc/xrdp/xrdp.ini - dest: /etc/xrdp/xrdp.ini + src: etc/xrdp/ + dest: /etc/xrdp/ mode: '0644' + # This will create directories if src or dest ends in '/' - name: Copy xrdp logo ansible.builtin.copy: - src: usr/local/share/xrdp/dsh_logo_240x140_256color.bmp - dest: /usr/local/share/xrdp/dsh_logo_240x140_256color.bmp + src: usr/local/share/xrdp/ + dest: /usr/local/share/xrdp/ mode: '0444' - name: Disable xrdp root login @@ -172,10 +162,11 @@ regexp: '^TerminalEmulator=' line: 'TerminalEmulator=xfce4-terminal' + # This will create directories if src or dest ends in '/' - name: Copy default terminal colourscheme ansible.builtin.copy: - src: etc/xdg/xfce4/terminal/terminalrc - dest: /etc/xdg/xfce4/terminal/terminalrc + src: etc/xdg/xfce4/terminal/ + dest: /etc/xdg/xfce4/terminal/ mode: '0444' - name: Use a blank screensaver From d5fc6b7189cbb4031a8bd713b46dd76054641222 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 13 Aug 2024 11:36:21 +0100 Subject: [PATCH 034/302] Tidy ansible --- .../workspace/ansible/desired_state.yaml | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index 2dcee486f9..9dbd411a24 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -124,14 +124,12 @@ validate: sshd -T -f %s notify: Restart sshd - # This will create directories if src or dest ends in '/' - name: Copy xrdp settings ansible.builtin.copy: src: etc/xrdp/ dest: /etc/xrdp/ mode: '0644' - # This will create directories if src or dest ends in '/' - name: Copy xrdp logo ansible.builtin.copy: src: usr/local/share/xrdp/ @@ -162,7 +160,6 @@ regexp: '^TerminalEmulator=' line: 'TerminalEmulator=xfce4-terminal' - # This will create directories if src or dest ends in '/' - name: Copy default terminal colourscheme ansible.builtin.copy: src: etc/xdg/xfce4/terminal/ @@ -193,18 +190,16 @@ - xrdp - xrdp-sesman - # This will create directories if src or dest ends in '/' - name: Copy desktop icons directory ansible.builtin.copy: - src: "usr/local/share/icons/" - dest: "/usr/local/share/icons/" + src: usr/local/share/icons/ + dest: /usr/local/share/icons/ mode: '0444' - # This will create directories if src or dest ends in '/' - name: Copy desktop files directory ansible.builtin.copy: - src: "etc/skel/Desktop/" - dest: "/etc/skel/Desktop/" + src: etc/skel/Desktop/ + dest: /etc/skel/Desktop/ mode: '0755' - name: Template Gitea and Hedgedoc desktop files @@ -279,10 +274,9 @@ systemctl stop clamav-freshclam && freshclam && systemctl start clamav-freshclam creates: '/var/lib/clamav/main.{c[vl]d,inc}' - # This will create directories if src or dest ends in '/' - name: Copy ClamAV services directory ansible.builtin.copy: - src: "etc/systemd/system/" + src: etc/systemd/system/ dest: /etc/systemd/system/ mode: '0644' notify: Systemd daemon reload @@ -311,10 +305,9 @@ enabled: true state: started - # This will create directories if src or dest ends in '/' - name: Copy smoke test files directory ansible.builtin.copy: - src: "usr/local/smoke_tests/" + src: usr/local/smoke_tests/ dest: /usr/local/smoke_tests/ mode: '0755' From 57b8d144b06df6dd100752873bcad318f390f6c5 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 13 Aug 2024 13:55:08 +0100 Subject: [PATCH 035/302] Remove unused notify --- data_safe_haven/resources/workspace/ansible/desired_state.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index 9dbd411a24..b9a65f7d0f 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -96,7 +96,6 @@ new_module_path: pam_mkhomedir.so module_arguments: 'skel=/etc/skel umask=0022' state: after - notify: Update PAM auth - name: Don't prompt to change expired passwords via ldap community.general.pamd: From 3e1eb306532c57f3953152e16c9d81405fec803c Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 13 Aug 2024 13:59:54 +0100 Subject: [PATCH 036/302] Correct template argument --- data_safe_haven/resources/workspace/ansible/desired_state.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index b9a65f7d0f..88706cd01d 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -204,7 +204,7 @@ - name: Template Gitea and Hedgedoc desktop files ansible.builtin.template: src: "etc/skel/Desktop/{{ item }}.desktop.j2" - path: /etc/skel/Desktop/ + dest: /etc/skel/Desktop/ mode: '0755' loop: - gitea From c67fe5b857401118e1b3e26ac1d2bc2b73e8c0c5 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 13 Aug 2024 14:03:37 +0100 Subject: [PATCH 037/302] Use vars file in desired state play --- data_safe_haven/resources/workspace/ansible/desired_state.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index 88706cd01d..c34e3939f3 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -2,6 +2,8 @@ - name: Desired state configuration hosts: localhost become: true + vars_files: + - vars/pulumi_vars.yaml tasks: - name: Update package cache From 9427541b55716fc2e072f6d96a0bd42d3e551dc8 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 13 Aug 2024 14:09:23 +0100 Subject: [PATCH 038/302] Correct desktop file name --- data_safe_haven/resources/workspace/ansible/desired_state.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index c34e3939f3..5ec58cf64c 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -206,7 +206,7 @@ - name: Template Gitea and Hedgedoc desktop files ansible.builtin.template: src: "etc/skel/Desktop/{{ item }}.desktop.j2" - dest: /etc/skel/Desktop/ + dest: "/etc/skel/Desktop/{{ item }}.desktop" mode: '0755' loop: - gitea From 546764eb2bbc3eba4923b82faaf1614ab5c70825 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 8 Aug 2024 11:20:07 +0100 Subject: [PATCH 039/302] Wait for clamd.ctl to be created --- .../resources/workspace/ansible/desired_state.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index 5ec58cf64c..93a0f3f6f9 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -294,6 +294,10 @@ enabled: true state: started + - name: Wait for ClamAV daemon to finish initialising + ansible.builtin.wait_for: + path: /var/run/clamav/clamd.ctl + - name: Enable and start ClamAV on access scan ansible.builtin.systemd: name: clamav-clamonacc From 3fcc1aebed5ddf80e8abc6189aacdfdc122f1723 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 8 Aug 2024 14:48:44 +0100 Subject: [PATCH 040/302] Restart clamd when configuration is updated --- .../workspace/ansible/desired_state.yaml | 25 +++++++++++-------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index 93a0f3f6f9..2e1a4e742c 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -254,13 +254,26 @@ creates: /etc/audit/rules.d/50-privileged.rules notify: Restart auditd - - name: Copy ClamAV configuration + - name: Copy ClamAV daemon configuration ansible.builtin.copy: src: etc/clamav/clamd.conf dest: /etc/clamav/clamd.conf mode: '0444' owner: clamav group: adm + register: clamd + + - name: Enable and start ClamAV daemon + ansible.builtin.systemd: + name: clamav-daemon + enabled: true + state: started + + - name: Restart ClamAV daemon # noqa: no-handler + ansible.builtin.systemd: + name: clamav-daemon + state: restarted + when: clamd.changed - name: Set freshclam private mirror ansible.builtin.lineinfile: @@ -288,16 +301,6 @@ state: started enabled: true - - name: Enable and start ClamAV daemon - ansible.builtin.systemd: - name: clamav-daemon - enabled: true - state: started - - - name: Wait for ClamAV daemon to finish initialising - ansible.builtin.wait_for: - path: /var/run/clamav/clamd.ctl - - name: Enable and start ClamAV on access scan ansible.builtin.systemd: name: clamav-clamonacc From 3edb2145c1048cb3a8d9e641a48acc085abd0771 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 8 Aug 2024 15:34:41 +0100 Subject: [PATCH 041/302] Correct socket file name --- .../ansible/files/etc/systemd/system/clamav-clamonacc.service | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_safe_haven/resources/workspace/ansible/files/etc/systemd/system/clamav-clamonacc.service b/data_safe_haven/resources/workspace/ansible/files/etc/systemd/system/clamav-clamonacc.service index 0adf095db8..6320ed19b7 100644 --- a/data_safe_haven/resources/workspace/ansible/files/etc/systemd/system/clamav-clamonacc.service +++ b/data_safe_haven/resources/workspace/ansible/files/etc/systemd/system/clamav-clamonacc.service @@ -6,7 +6,7 @@ After=clamav-daemon.service syslog.target network.target [Service] Type=simple User=root -ExecStartPre=/bin/bash -c "while [ ! -S /var/run/clamav/clamd.ctl ]; do sleep 1; done" +ExecStartPre=/bin/bash -c "while [ ! -S /tmp/clamd.socket ]; do sleep 1; done" ExecStart=/usr/sbin/clamonacc --foreground=true Restart=on-failure RestartSec=30 From 626be8017c950ce2ebbd01aa107215450f63410e Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 13 Aug 2024 14:32:49 +0100 Subject: [PATCH 042/302] Move cloud init template to ansible --- .../workspace/ansible/desired_state.yaml | 24 +++++++- .../ansible/templates/etc/R/Rprofile.site | 6 ++ .../templates/etc/database_credential.j2 | 1 + .../ansible/templates/etc/nslcd.conf.j2 | 24 ++++++++ .../ansible/templates/etc/pip.conf.j2 | 5 ++ .../workspace.cloud_init.mustache.yaml | 57 ------------------- 6 files changed, 59 insertions(+), 58 deletions(-) create mode 100644 data_safe_haven/resources/workspace/ansible/templates/etc/R/Rprofile.site create mode 100644 data_safe_haven/resources/workspace/ansible/templates/etc/database_credential.j2 create mode 100644 data_safe_haven/resources/workspace/ansible/templates/etc/nslcd.conf.j2 create mode 100644 data_safe_haven/resources/workspace/ansible/templates/etc/pip.conf.j2 diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index 2e1a4e742c..98c2444f17 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -87,6 +87,12 @@ regexp: '^(passwd|group|shadow)(:.*)(? Date: Mon, 19 Aug 2024 03:07:06 +0000 Subject: [PATCH 043/302] :arrow_up: Update Python dependencies --- docs/requirements.txt | 2 +- requirements.txt | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/requirements.txt b/docs/requirements.txt index 0db8257f18..dffb60b4f0 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -67,7 +67,7 @@ requests==2.32.3 # sphinx snowballstemmer==2.2.0 # via sphinx -soupsieve==2.5 +soupsieve==2.6 # via beautifulsoup4 sphinx==8.0.2 # via diff --git a/requirements.txt b/requirements.txt index 16dd58c348..7930977289 100644 --- a/requirements.txt +++ b/requirements.txt @@ -174,13 +174,13 @@ protobuf==4.25.4 # via pulumi psycopg==3.2.1 # via data-safe-haven (pyproject.toml) -pulumi==3.128.0 +pulumi==3.129.0 # via # data-safe-haven (pyproject.toml) # pulumi-azure-native # pulumi-random # pulumi-tls -pulumi-azure-native==2.55.0 +pulumi-azure-native==2.56.0 # via data-safe-haven (pyproject.toml) pulumi-random==4.16.3 # via data-safe-haven (pyproject.toml) @@ -242,7 +242,7 @@ six==1.16.0 # azure-core # isodate # pulumi -typer==0.12.3 +typer==0.12.4 # via data-safe-haven (pyproject.toml) typing-extensions==4.12.2 # via From c64804fc6a3673cf8dfccb45260e28be468682a3 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 09:36:23 +0100 Subject: [PATCH 044/302] :heavy_plus_sign: Add pulumi-azuread --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 530c52be82..e4e2b8e9f4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -46,6 +46,7 @@ dependencies = [ "fqdn==1.5.1", "psycopg==3.2.3", "pulumi-azure-native==2.63.0", + "pulumi-azuread==5.53.4", "pulumi-random==4.16.6", "pulumi==3.134.1", "pydantic==2.9.2", From fc1c161ed04e01c1b8b5931994862b3c312018a6 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 11:50:53 +0100 Subject: [PATCH 045/302] :pushpin: Pin main dependencies, dropping requirements.txt --- pyproject.toml | 75 ++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 39 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index bf4fcec5b6..72ccd75264 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,42 +12,42 @@ authors = [ requires-python = "==3.12.*" license = { text = "BSD-3-Clause" } dependencies = [ - "appdirs>=1.4", - "azure-core>=1.26", - "azure-identity>=1.16.1", - "azure-keyvault-certificates>=4.6", - "azure-keyvault-keys>=4.6", - "azure-keyvault-secrets>=4.6", - "azure-mgmt-automation>=1.0", - "azure-mgmt-compute>=30.3", - "azure-mgmt-containerinstance>=10.1", - "azure-mgmt-dns>=8.0", - "azure-mgmt-keyvault>=10.3", - "azure-mgmt-msi>=7.0", - "azure-mgmt-network>=25.0", - "azure-mgmt-rdbms>=10.1", - "azure-mgmt-resource>=23.0", - "azure-mgmt-storage>=21.1", - "azure-storage-blob>=12.15", - "azure-storage-file-datalake>=12.10", - "azure-storage-file-share>=12.10", - "chevron>=0.14", - "cryptography>=42.0", - "fqdn>=1.5", - "msal>=1.21", - "psycopg>=3.1", - "pulumi>=3.80", - "pulumi-azure-native>=2.49.1", - "pulumi-random>=4.14", - "pulumi-tls>=5.0.3", - "pydantic>=2.4", - "pyjwt>=2.8", - "pytz>=2023.3", - "PyYAML>=6.0", - "rich>=13.4", - "simple-acme-dns>=3.0", - "typer>=0.9", - "websocket-client>=1.5", + "appdirs==1.4.4", + "azure-core==1.30.2", + "azure-identity==1.17.1", + "azure-keyvault-certificates==4.8.0", + "azure-keyvault-keys==4.9.0", + "azure-keyvault-secrets==4.8.0", + "azure-mgmt-automation==1.0.0", + "azure-mgmt-compute==32.0.0", + "azure-mgmt-containerinstance==10.1.0", + "azure-mgmt-dns==8.1.0", + "azure-mgmt-keyvault==10.3.1", + "azure-mgmt-msi==7.0.0", + "azure-mgmt-network==26.0.0", + "azure-mgmt-rdbms==10.1.0", + "azure-mgmt-resource==23.1.1", + "azure-mgmt-storage==21.2.1", + "azure-storage-blob==12.22.0", + "azure-storage-file-datalake==12.16.0", + "azure-storage-file-share==12.17.0", + "chevron==0.14.0", + "cryptography==43.0.0", + "fqdn==1.5.1", + "msal==1.30.0", + "psycopg==3.2.1", + "pulumi==3.129.0", + "pulumi-azure-native==2.56.0", + "pulumi-random==4.16.3", + "pulumi-tls==5.0.4", + "pydantic==2.8.2", + "pyjwt[crypto]==2.9.0", + "pytz==2024.1", + "pyyaml==6.0.2", + "rich==13.7.1", + "simple-acme-dns==3.1.0", + "typer==0.12.4", + "websocket-client==1.8.0", ] [project.scripts] @@ -66,9 +66,6 @@ omit= [ "data_safe_haven/resources/*", ] -[tool.hatch.envs.default] -pre-install-commands = ["pip install -r requirements.txt"] - [tool.hatch.envs.docs] detached = true dependencies = [ From 37fbf64713c11a1c6f487bd512967c0141ac35c8 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 11:51:59 +0100 Subject: [PATCH 046/302] :pushpin: Pin docs dependencies, dropping requirements.txt --- pyproject.toml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 72ccd75264..be063a0583 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -69,13 +69,12 @@ omit= [ [tool.hatch.envs.docs] detached = true dependencies = [ - "emoji>=2.10.0", - "myst-parser>=2.0.0", - "pydata-sphinx-theme>=0.15.0", - "Sphinx>=7.3.0", - "sphinx-togglebutton>0.3.0", + "emoji==2.12.1", + "myst-parser==4.0.0", + "pydata-sphinx-theme==0.15.4", + "sphinx==8.0.2", + "sphinx-togglebutton==0.3.2", ] -pre-install-commands = ["pip install -r docs/requirements.txt"] [tool.hatch.envs.docs.scripts] build = [ From 5fafea6d45ca635fe75c1cffad8fd13a3b0b385b Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 11:56:07 +0100 Subject: [PATCH 047/302] :pushpin: Pin linting dependencies --- pyproject.toml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index be063a0583..2067121c5e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -85,17 +85,17 @@ build = [ [tool.hatch.envs.lint] detached = true dependencies = [ - "ansible>=10.2.0", - "ansible-dev-tools>=24.7.1", - "black>=24.1.0", - "mypy>=1.0.0", - "pydantic>=2.4", - "ruff>=0.3.4", - "types-appdirs>=1.4.3.5", - "types-chevron>=0.14.2.5", - "types-pytz>=2023.3.0.0", - "types-PyYAML>=6.0.12.11", - "types-requests>=2.31.0.2", + "ansible==10.2.0", + "ansible-dev-tools==24.7.2", + "black==24.4.2", + "mypy==1.10.1", + "pydantic==2.8.0", + "ruff==0.5.0", + "types-appdirs==1.4.3.5", + "types-chevron==0.14.2.20240310", + "types-pytz==2024.1.0.20240417", + "types-PyYAML==6.0.12.20240311", + "types-requests==2.32.0.20240622", ] [tool.hatch.envs.lint.scripts] From 6b103e6cd6f217ecb493822a634e3f5fd01f0bc8 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 12:38:15 +0100 Subject: [PATCH 048/302] :pushpin: Pin test dependencies, dropping requirements.txt --- pyproject.toml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 2067121c5e..4dca41ec0b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -118,13 +118,12 @@ typing = "mypy {args:data_safe_haven}" [tool.hatch.envs.test] dependencies = [ - "coverage>=7.5.1", - "freezegun>=1.5", - "pytest>=8.1", - "pytest-mock>=3.14", - "requests-mock>=1.12", + "coverage==7.5.4", + "freezegun==1.5.1", + "pytest==8.2.2", + "pytest-mock==3.14.0", + "requests-mock==1.12.1", ] -pre-install-commands = ["pip install -r requirements.txt"] [tool.hatch.envs.test.scripts] test = "coverage run -m pytest {args: tests}" From bb633c6320ebc726dd34e3cc931cf4dd5464e1ea Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 12:59:35 +0100 Subject: [PATCH 049/302] :coffin: Remove requirements files --- docs/requirements.txt | 104 ------------- requirements-constraints.txt | 29 ---- requirements.txt | 273 ----------------------------------- 3 files changed, 406 deletions(-) delete mode 100644 docs/requirements.txt delete mode 100644 requirements-constraints.txt delete mode 100644 requirements.txt diff --git a/docs/requirements.txt b/docs/requirements.txt deleted file mode 100644 index dffb60b4f0..0000000000 --- a/docs/requirements.txt +++ /dev/null @@ -1,104 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# pip-compile --constraint=requirements-constraints.txt --output-file=docs/requirements.txt - -# -accessible-pygments==0.0.5 - # via pydata-sphinx-theme -alabaster==1.0.0 - # via sphinx -babel==2.16.0 - # via - # pydata-sphinx-theme - # sphinx -beautifulsoup4==4.12.3 - # via pydata-sphinx-theme -certifi==2024.7.4 - # via requests -charset-normalizer==3.3.2 - # via requests -docutils==0.21.2 - # via - # myst-parser - # pydata-sphinx-theme - # sphinx - # sphinx-togglebutton -emoji==2.12.1 - # via -r - -idna==3.7 - # via - # -c requirements-constraints.txt - # requests -imagesize==1.4.1 - # via sphinx -jinja2==3.1.4 - # via - # myst-parser - # sphinx -markdown-it-py==3.0.0 - # via - # mdit-py-plugins - # myst-parser -markupsafe==2.1.5 - # via jinja2 -mdit-py-plugins==0.4.1 - # via myst-parser -mdurl==0.1.2 - # via markdown-it-py -myst-parser==4.0.0 - # via -r - -packaging==24.1 - # via - # pydata-sphinx-theme - # sphinx -pydata-sphinx-theme==0.15.4 - # via -r - -pygments==2.18.0 - # via - # accessible-pygments - # pydata-sphinx-theme - # sphinx -pyyaml==6.0.2 - # via myst-parser -requests==2.32.3 - # via - # -c requirements-constraints.txt - # sphinx -snowballstemmer==2.2.0 - # via sphinx -soupsieve==2.6 - # via beautifulsoup4 -sphinx==8.0.2 - # via - # -r - - # myst-parser - # pydata-sphinx-theme - # sphinx-togglebutton -sphinx-togglebutton==0.3.2 - # via -r - -sphinxcontrib-applehelp==2.0.0 - # via sphinx -sphinxcontrib-devhelp==2.0.0 - # via sphinx -sphinxcontrib-htmlhelp==2.1.0 - # via sphinx -sphinxcontrib-jsmath==1.0.1 - # via sphinx -sphinxcontrib-qthelp==2.0.0 - # via sphinx -sphinxcontrib-serializinghtml==2.0.0 - # via sphinx -typing-extensions==4.12.2 - # via - # emoji - # pydata-sphinx-theme -urllib3==2.2.2 - # via - # -c requirements-constraints.txt - # requests -wheel==0.44.0 - # via sphinx-togglebutton - -# The following packages are considered to be unsafe in a requirements file: -# setuptools diff --git a/requirements-constraints.txt b/requirements-constraints.txt deleted file mode 100644 index ebcbb8ff2e..0000000000 --- a/requirements-constraints.txt +++ /dev/null @@ -1,29 +0,0 @@ -# Use this file to specify constraints on packages that we do not directly depend on -# It will be used by pip-compile when solving the environment, but only if the package is required otherwise - -# Exclude azure-identity < 1.16.1 (from https://github.com/alan-turing-institute/data-safe-haven/security/dependabot/17) -azure-identity >=1.16.1 - -# Exclude cryptography < 42.0.0 (from https://github.com/alan-turing-institute/data-safe-haven/security/dependabot/8) -# Exclude cryptography < 42.0.2 (from https://github.com/alan-turing-institute/data-safe-haven/security/dependabot/9) -# Exclude cryptography >= 38.0.0, < 42.0.4 (from https://github.com/alan-turing-institute/data-safe-haven/security/dependabot/10) -cryptography >=42.0.4 - -# Exclude dnspython < 2.6.1 (from https://github.com/alan-turing-institute/data-safe-haven/security/dependabot/13) -dnspython >=2.6.1 - -# Exclude idna < 3.7 (from https://github.com/alan-turing-institute/data-safe-haven/security/dependabot/11) -idna >=3.7 - -# Exclude jinja < 3.1.3 (from https://github.com/alan-turing-institute/data-safe-haven/security/dependabot/7) -# Exclude jinja < 3.1.4 (from https://github.com/alan-turing-institute/data-safe-haven/security/dependabot/14) -jinja >=3.1.4 - - -# Exclude requests >= 2.3.0, < 2.31.0 (from https://github.com/alan-turing-institute/data-safe-haven/security/dependabot/3) -# Exclude requests < 2.32.0 (from https://github.com/alan-turing-institute/data-safe-haven/security/dependabot/15) -requests >=2.32.0 - -# Exclude urllib3 >= 2.0.0, < 2.0.6 (from https://github.com/alan-turing-institute/data-safe-haven/security/dependabot/5) -# Exclude urllib3 >= 2.0.0, < 2.2.2 (from https://github.com/alan-turing-institute/data-safe-haven/security/dependabot/18) -urllib3 !=2.0.*,!=2.1.*,!=2.2.0,!=2.2.1 diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 7930977289..0000000000 --- a/requirements.txt +++ /dev/null @@ -1,273 +0,0 @@ -# -# This file is autogenerated by pip-compile with Python 3.12 -# by the following command: -# -# pip-compile --constraint=requirements-constraints.txt --output-file=requirements.txt pyproject.toml -# -acme==2.10.0 - # via simple-acme-dns -annotated-types==0.7.0 - # via pydantic -appdirs==1.4.4 - # via data-safe-haven (pyproject.toml) -arpeggio==2.0.2 - # via parver -attrs==24.2.0 - # via parver -azure-common==1.1.28 - # via - # azure-mgmt-automation - # azure-mgmt-compute - # azure-mgmt-containerinstance - # azure-mgmt-dns - # azure-mgmt-keyvault - # azure-mgmt-msi - # azure-mgmt-network - # azure-mgmt-rdbms - # azure-mgmt-resource - # azure-mgmt-storage -azure-core==1.30.2 - # via - # azure-identity - # azure-keyvault-certificates - # azure-keyvault-keys - # azure-keyvault-secrets - # azure-mgmt-core - # azure-storage-blob - # azure-storage-file-datalake - # azure-storage-file-share - # data-safe-haven (pyproject.toml) - # msrest -azure-identity==1.17.1 - # via - # -c requirements-constraints.txt - # data-safe-haven (pyproject.toml) -azure-keyvault-certificates==4.8.0 - # via data-safe-haven (pyproject.toml) -azure-keyvault-keys==4.9.0 - # via data-safe-haven (pyproject.toml) -azure-keyvault-secrets==4.8.0 - # via data-safe-haven (pyproject.toml) -azure-mgmt-automation==1.0.0 - # via data-safe-haven (pyproject.toml) -azure-mgmt-compute==32.0.0 - # via data-safe-haven (pyproject.toml) -azure-mgmt-containerinstance==10.1.0 - # via data-safe-haven (pyproject.toml) -azure-mgmt-core==1.4.0 - # via - # azure-mgmt-automation - # azure-mgmt-compute - # azure-mgmt-containerinstance - # azure-mgmt-dns - # azure-mgmt-keyvault - # azure-mgmt-msi - # azure-mgmt-network - # azure-mgmt-rdbms - # azure-mgmt-resource - # azure-mgmt-storage -azure-mgmt-dns==8.1.0 - # via data-safe-haven (pyproject.toml) -azure-mgmt-keyvault==10.3.1 - # via data-safe-haven (pyproject.toml) -azure-mgmt-msi==7.0.0 - # via data-safe-haven (pyproject.toml) -azure-mgmt-network==26.0.0 - # via data-safe-haven (pyproject.toml) -azure-mgmt-rdbms==10.1.0 - # via data-safe-haven (pyproject.toml) -azure-mgmt-resource==23.1.1 - # via data-safe-haven (pyproject.toml) -azure-mgmt-storage==21.2.1 - # via data-safe-haven (pyproject.toml) -azure-storage-blob==12.22.0 - # via - # azure-storage-file-datalake - # data-safe-haven (pyproject.toml) -azure-storage-file-datalake==12.16.0 - # via data-safe-haven (pyproject.toml) -azure-storage-file-share==12.17.0 - # via data-safe-haven (pyproject.toml) -certifi==2024.7.4 - # via - # msrest - # requests -cffi==1.17.0 - # via cryptography -charset-normalizer==3.3.2 - # via requests -chevron==0.14.0 - # via data-safe-haven (pyproject.toml) -click==8.1.7 - # via typer -cryptography==43.0.0 - # via - # -c requirements-constraints.txt - # acme - # azure-identity - # azure-keyvault-keys - # azure-storage-blob - # azure-storage-file-share - # data-safe-haven (pyproject.toml) - # josepy - # msal - # pyjwt - # pyopenssl -dill==0.3.8 - # via pulumi -dnspython==2.6.1 - # via - # -c requirements-constraints.txt - # simple-acme-dns -fqdn==1.5.1 - # via data-safe-haven (pyproject.toml) -grpcio==1.60.2 - # via pulumi -idna==3.7 - # via - # -c requirements-constraints.txt - # requests -isodate==0.6.1 - # via - # azure-keyvault-certificates - # azure-keyvault-keys - # azure-keyvault-secrets - # azure-mgmt-compute - # azure-mgmt-containerinstance - # azure-mgmt-dns - # azure-mgmt-keyvault - # azure-mgmt-network - # azure-mgmt-resource - # azure-mgmt-storage - # azure-storage-blob - # azure-storage-file-datalake - # azure-storage-file-share - # msrest -josepy==1.14.0 - # via acme -markdown-it-py==3.0.0 - # via rich -mdurl==0.1.2 - # via markdown-it-py -msal==1.30.0 - # via - # azure-identity - # data-safe-haven (pyproject.toml) - # msal-extensions -msal-extensions==1.2.0 - # via azure-identity -msrest==0.7.1 - # via - # azure-mgmt-automation - # azure-mgmt-msi - # azure-mgmt-rdbms -oauthlib==3.2.2 - # via requests-oauthlib -parver==0.5 - # via - # pulumi-azure-native - # pulumi-random - # pulumi-tls -portalocker==2.10.1 - # via msal-extensions -protobuf==4.25.4 - # via pulumi -psycopg==3.2.1 - # via data-safe-haven (pyproject.toml) -pulumi==3.129.0 - # via - # data-safe-haven (pyproject.toml) - # pulumi-azure-native - # pulumi-random - # pulumi-tls -pulumi-azure-native==2.56.0 - # via data-safe-haven (pyproject.toml) -pulumi-random==4.16.3 - # via data-safe-haven (pyproject.toml) -pulumi-tls==5.0.4 - # via data-safe-haven (pyproject.toml) -pycparser==2.22 - # via cffi -pydantic==2.8.2 - # via data-safe-haven (pyproject.toml) -pydantic-core==2.20.1 - # via pydantic -pygments==2.18.0 - # via rich -pyjwt[crypto]==2.9.0 - # via - # data-safe-haven (pyproject.toml) - # msal -pyopenssl==24.2.1 - # via - # acme - # josepy -pyrfc3339==1.1 - # via acme -pytz==2024.1 - # via - # acme - # data-safe-haven (pyproject.toml) - # pyrfc3339 -pyyaml==6.0.2 - # via - # data-safe-haven (pyproject.toml) - # pulumi -requests==2.32.3 - # via - # -c requirements-constraints.txt - # acme - # azure-core - # msal - # msrest - # requests-oauthlib -requests-oauthlib==2.0.0 - # via msrest -rich==13.7.1 - # via - # data-safe-haven (pyproject.toml) - # typer -semver==2.13.0 - # via - # pulumi - # pulumi-azure-native - # pulumi-random - # pulumi-tls -shellingham==1.5.4 - # via typer -simple-acme-dns==3.1.0 - # via data-safe-haven (pyproject.toml) -six==1.16.0 - # via - # azure-core - # isodate - # pulumi -typer==0.12.4 - # via data-safe-haven (pyproject.toml) -typing-extensions==4.12.2 - # via - # azure-core - # azure-identity - # azure-keyvault-certificates - # azure-keyvault-keys - # azure-keyvault-secrets - # azure-mgmt-compute - # azure-mgmt-keyvault - # azure-storage-blob - # azure-storage-file-datalake - # azure-storage-file-share - # psycopg - # pydantic - # pydantic-core - # typer -urllib3==2.2.2 - # via - # -c requirements-constraints.txt - # requests -validators==0.28.3 - # via simple-acme-dns -websocket-client==1.8.0 - # via data-safe-haven (pyproject.toml) - -# The following packages are considered to be unsafe in a requirements file: -# setuptools From f07c29925fd834e3156c9f207834b8992039cb6e Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 12:41:30 +0100 Subject: [PATCH 050/302] :wrench: Configure dependabot to update pyproject.toml --- .github/dependabot.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 732ed0c6b7..e949125e6e 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -7,3 +7,8 @@ updates: directory: "/" # The exact logic is unclear, but it recursively searches at least .github/workflows/ schedule: interval: "weekly" + # Python package update PRs + - package-ecosystem: pip # This will update 'pyproject.toml' + directory: "/" + schedule: + interval: weekly From c85d7cdfe5e65d0836fb32abfe487d6b4a67c95b Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 13:04:35 +0100 Subject: [PATCH 051/302] :coffin: Remove custom python update scripts --- .github/scripts/update_python_dependencies.sh | 23 ------- .../workflows/update_python_dependencies.yaml | 67 ------------------- 2 files changed, 90 deletions(-) delete mode 100755 .github/scripts/update_python_dependencies.sh delete mode 100644 .github/workflows/update_python_dependencies.yaml diff --git a/.github/scripts/update_python_dependencies.sh b/.github/scripts/update_python_dependencies.sh deleted file mode 100755 index b7134ea54d..0000000000 --- a/.github/scripts/update_python_dependencies.sh +++ /dev/null @@ -1,23 +0,0 @@ -#! /usr/bin/env sh -set -e - -# Check for required arguments -if [ "$#" -ne 2 ]; then - echo "Usage: update_python_dependencies [environment_name] [target]" - exit 1 -fi -ENV_NAME=$1 -TARGET=$2 - -# Check for pip-compile -if ! command -v pip-compile > /dev/null; then - echo "pip-compile could not be found" - exit 1 -fi - -# Run pip-compile -if [ "$ENV_NAME" = "default" ]; then - pip-compile -U pyproject.toml -c requirements-constraints.txt -o "$TARGET" -else - hatch env show --json | jq -r ".${ENV_NAME}.dependencies | .[]" | pip-compile - -U -c requirements-constraints.txt -o "$TARGET" -fi diff --git a/.github/workflows/update_python_dependencies.yaml b/.github/workflows/update_python_dependencies.yaml deleted file mode 100644 index 7342b6a309..0000000000 --- a/.github/workflows/update_python_dependencies.yaml +++ /dev/null @@ -1,67 +0,0 @@ ---- -name: Update Python dependencies - -# Run workflow on pushes to matching branches -on: # yamllint disable-line rule:truthy - schedule: - - cron: "0 3 * * 1" # run at 3:00 every Monday - workflow_dispatch: # allow this workflow to be manually triggered - - -jobs: - update_python_dependencies: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: 3.12 - - - name: Install dependencies - run: pip install hatch pip-tools - - - name: Update 'default' dependencies - run: .github/scripts/update_python_dependencies.sh default requirements.txt - - - name: Update 'docs' dependencies - run: .github/scripts/update_python_dependencies.sh docs docs/requirements.txt - - - name: Check for changes - shell: bash - run: git --no-pager diff -- . - - - name: Get current date - id: date - run: echo "date=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT - - - name: Create pull request - if: ${{ ! env.ACT }} - id: pull-request - uses: peter-evans/create-pull-request@v6.1.0 - with: - author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> - base: develop - body: | - :warning: In order for CI to run on this PR it needs to be manually closed and re-opened :warning: - - ### :arrow_heading_up: Summary - - Update Python dependencies from ${{ github.sha }} on ${{ steps.date.outputs.date }} - - ### :closed_umbrella: Related issues - None - - ### :microscope: Tests - Package versions only - branch: python-dependencies - commit-message: ":arrow_up: Update Python dependencies" - committer: GitHub Actions - delete-branch: true - draft: false - labels: | - affected: developers - severity: minor - type: enhancement - title: ":arrow_up: Update Python dependencies" From 47c78e9416746db2e035d389e3103100c657c6b0 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 13:25:37 +0100 Subject: [PATCH 052/302] :wrench: Use hatch to generate readthedocs requirements on-the-fly --- .readthedocs.yaml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index cc347e9fa2..54a99f12f1 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -7,10 +7,11 @@ version: 2 build: os: ubuntu-22.04 tools: - python: "3.11" - -sphinx: - configuration: docs/source/conf.py + python: "3.12" + jobs: + pre_create_environment: + - pip install hatch + - hatch -e docs dep show requirements > requirements-docs.txt formats: - htmlzip @@ -18,4 +19,7 @@ formats: python: install: - - requirements: docs/requirements.txt + - requirements: requirements-docs.txt + +sphinx: + configuration: docs/source/conf.py From eeb8056a6c7985c510fc5b6e9290610f0960df43 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 15:36:11 +0100 Subject: [PATCH 053/302] :wrench: Use hatch-pip-compile to pin transitive dependencies --- .hatch/requirements-docs.txt | 102 ++++++++ .hatch/requirements-lint.txt | 275 +++++++++++++++++++++ .hatch/requirements-test.txt | 453 +++++++++++++++++++++++++++++++++++ .hatch/requirements.txt | 298 +++++++++++++++++++++++ pyproject.toml | 16 +- 5 files changed, 1143 insertions(+), 1 deletion(-) create mode 100644 .hatch/requirements-docs.txt create mode 100644 .hatch/requirements-lint.txt create mode 100644 .hatch/requirements-test.txt create mode 100644 .hatch/requirements.txt diff --git a/.hatch/requirements-docs.txt b/.hatch/requirements-docs.txt new file mode 100644 index 0000000000..2e50512f61 --- /dev/null +++ b/.hatch/requirements-docs.txt @@ -0,0 +1,102 @@ +# +# This file is autogenerated by hatch-pip-compile with Python 3.12 +# +# - emoji==2.12.1 +# - myst-parser==4.0.0 +# - pydata-sphinx-theme==0.15.4 +# - sphinx==8.0.2 +# - sphinx-togglebutton==0.3.2 +# + +accessible-pygments==0.0.5 + # via pydata-sphinx-theme +alabaster==1.0.0 + # via sphinx +babel==2.16.0 + # via + # pydata-sphinx-theme + # sphinx +beautifulsoup4==4.12.3 + # via pydata-sphinx-theme +certifi==2024.7.4 + # via requests +charset-normalizer==3.3.2 + # via requests +docutils==0.21.2 + # via + # myst-parser + # pydata-sphinx-theme + # sphinx + # sphinx-togglebutton +emoji==2.12.1 + # via hatch.envs.docs +idna==3.7 + # via requests +imagesize==1.4.1 + # via sphinx +jinja2==3.1.4 + # via + # myst-parser + # sphinx +markdown-it-py==3.0.0 + # via + # mdit-py-plugins + # myst-parser +markupsafe==2.1.5 + # via jinja2 +mdit-py-plugins==0.4.1 + # via myst-parser +mdurl==0.1.2 + # via markdown-it-py +myst-parser==4.0.0 + # via hatch.envs.docs +packaging==24.1 + # via + # pydata-sphinx-theme + # sphinx +pydata-sphinx-theme==0.15.4 + # via hatch.envs.docs +pygments==2.18.0 + # via + # accessible-pygments + # pydata-sphinx-theme + # sphinx +pyyaml==6.0.2 + # via myst-parser +requests==2.32.3 + # via sphinx +snowballstemmer==2.2.0 + # via sphinx +soupsieve==2.6 + # via beautifulsoup4 +sphinx==8.0.2 + # via + # hatch.envs.docs + # myst-parser + # pydata-sphinx-theme + # sphinx-togglebutton +sphinx-togglebutton==0.3.2 + # via hatch.envs.docs +sphinxcontrib-applehelp==2.0.0 + # via sphinx +sphinxcontrib-devhelp==2.0.0 + # via sphinx +sphinxcontrib-htmlhelp==2.1.0 + # via sphinx +sphinxcontrib-jsmath==1.0.1 + # via sphinx +sphinxcontrib-qthelp==2.0.0 + # via sphinx +sphinxcontrib-serializinghtml==2.0.0 + # via sphinx +typing-extensions==4.12.2 + # via + # emoji + # pydata-sphinx-theme +urllib3==2.2.2 + # via requests +wheel==0.44.0 + # via sphinx-togglebutton + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt new file mode 100644 index 0000000000..d3d4ce526c --- /dev/null +++ b/.hatch/requirements-lint.txt @@ -0,0 +1,275 @@ +# +# This file is autogenerated by hatch-pip-compile with Python 3.12 +# +# - ansible==10.2.0 +# - ansible-dev-tools==24.7.2 +# - black==24.4.2 +# - mypy==1.10.1 +# - pydantic==2.8.2 +# - ruff==0.5.0 +# - types-appdirs==1.4.3.5 +# - types-chevron==0.14.2.20240310 +# - types-pytz==2024.1.0.20240417 +# - types-PyYAML==6.0.12.20240311 +# - types-requests==2.32.0.20240622 +# + +annotated-types==0.7.0 + # via pydantic +ansible==10.2.0 + # via hatch.envs.lint +ansible-builder==3.1.0 + # via + # ansible-dev-environment + # ansible-dev-tools + # ansible-navigator +ansible-compat==24.8.0 + # via + # ansible-lint + # molecule + # pytest-ansible +ansible-core==2.17.3 + # via + # ansible + # ansible-compat + # ansible-lint + # molecule + # pytest-ansible +ansible-creator==24.7.1 + # via ansible-dev-tools +ansible-dev-environment==24.7.0 + # via ansible-dev-tools +ansible-dev-tools==24.7.2 + # via hatch.envs.lint +ansible-lint==24.7.0 + # via + # ansible-dev-tools + # ansible-navigator +ansible-navigator==24.8.0 + # via ansible-dev-tools +ansible-runner==2.4.0 + # via ansible-navigator +ansible-sign==0.1.1 + # via ansible-dev-tools +attrs==24.2.0 + # via + # jsonschema + # referencing +bindep==2.11.0 + # via ansible-builder +black==24.4.2 + # via + # hatch.envs.lint + # ansible-lint +bracex==2.5 + # via wcmatch +cachetools==5.5.0 + # via tox +cffi==1.17.0 + # via + # cryptography + # onigurumacffi +chardet==5.2.0 + # via tox +click==8.1.7 + # via + # black + # click-help-colors + # molecule +click-help-colors==0.9.4 + # via molecule +colorama==0.4.6 + # via tox +cryptography==43.0.0 + # via ansible-core +distlib==0.3.8 + # via + # ansible-sign + # virtualenv +distro==1.9.0 + # via bindep +docutils==0.21.2 + # via python-daemon +enrich==1.2.7 + # via molecule +execnet==2.1.1 + # via pytest-xdist +filelock==3.15.4 + # via + # ansible-lint + # tox + # virtualenv +importlib-metadata==8.4.0 + # via ansible-lint +iniconfig==2.0.0 + # via pytest +jinja2==3.1.4 + # via + # ansible-core + # ansible-creator + # ansible-navigator + # molecule +jsonschema==4.23.0 + # via + # ansible-builder + # ansible-compat + # ansible-lint + # ansible-navigator + # molecule +jsonschema-specifications==2023.12.1 + # via jsonschema +lockfile==0.12.2 + # via python-daemon +markdown-it-py==3.0.0 + # via rich +markupsafe==2.1.5 + # via jinja2 +mdurl==0.1.2 + # via markdown-it-py +molecule==24.8.0 + # via ansible-dev-tools +mypy==1.10.1 + # via hatch.envs.lint +mypy-extensions==1.0.0 + # via + # black + # mypy +onigurumacffi==1.3.0 + # via ansible-navigator +packaging==24.1 + # via + # ansible-builder + # ansible-compat + # ansible-core + # ansible-lint + # ansible-runner + # bindep + # black + # molecule + # pyproject-api + # pytest + # pytest-ansible + # tox +parsley==1.3 + # via bindep +pathspec==0.12.1 + # via + # ansible-lint + # black + # yamllint +pbr==6.0.0 + # via bindep +pexpect==4.9.0 + # via ansible-runner +platformdirs==4.2.2 + # via + # black + # tox + # virtualenv +pluggy==1.5.0 + # via + # molecule + # pytest + # tox +ptyprocess==0.7.0 + # via pexpect +pycparser==2.22 + # via cffi +pydantic==2.8.2 + # via hatch.envs.lint +pydantic-core==2.20.1 + # via pydantic +pygments==2.18.0 + # via rich +pyproject-api==1.7.1 + # via tox +pytest==8.3.2 + # via + # pytest-ansible + # pytest-xdist + # tox-ansible +pytest-ansible==24.8.0 + # via + # ansible-dev-tools + # tox-ansible +pytest-xdist==3.6.1 + # via tox-ansible +python-daemon==3.0.1 + # via ansible-runner +python-gnupg==0.5.2 + # via ansible-sign +pyyaml==6.0.2 + # via + # ansible-builder + # ansible-compat + # ansible-core + # ansible-creator + # ansible-dev-environment + # ansible-lint + # ansible-navigator + # ansible-runner + # molecule + # tox-ansible + # yamllint +referencing==0.35.1 + # via + # jsonschema + # jsonschema-specifications +resolvelib==1.0.1 + # via ansible-core +rich==13.7.1 + # via + # ansible-lint + # enrich + # molecule +rpds-py==0.20.0 + # via + # jsonschema + # referencing +ruamel-yaml==0.18.6 + # via ansible-lint +ruamel-yaml-clib==0.2.8 + # via ruamel-yaml +ruff==0.5.0 + # via hatch.envs.lint +subprocess-tee==0.4.2 + # via + # ansible-compat + # ansible-dev-environment + # ansible-lint +tox==4.18.0 + # via tox-ansible +tox-ansible==24.8.0 + # via ansible-dev-tools +types-appdirs==1.4.3.5 + # via hatch.envs.lint +types-chevron==0.14.2.20240310 + # via hatch.envs.lint +types-pytz==2024.1.0.20240417 + # via hatch.envs.lint +types-pyyaml==6.0.12.20240311 + # via hatch.envs.lint +types-requests==2.32.0.20240622 + # via hatch.envs.lint +typing-extensions==4.12.2 + # via + # mypy + # pydantic + # pydantic-core +tzdata==2024.1 + # via ansible-navigator +urllib3==2.2.2 + # via types-requests +virtualenv==20.26.3 + # via tox +wcmatch==9.0 + # via + # ansible-lint + # molecule +yamllint==1.35.1 + # via ansible-lint +zipp==3.20.0 + # via importlib-metadata + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt new file mode 100644 index 0000000000..b02661eaa6 --- /dev/null +++ b/.hatch/requirements-test.txt @@ -0,0 +1,453 @@ +# +# This file is autogenerated by hatch-pip-compile with Python 3.12 +# +# [constraints] .hatch/requirements.txt (SHA256: f69a7b24505549799b2702a30abac1cfa1d85ea29ffe35d27691e5112ed51eb3) +# +# - coverage==7.5.4 +# - freezegun==1.5.1 +# - pytest==8.2.2 +# - pytest-mock==3.14.0 +# - requests-mock==1.12.1 +# - appdirs==1.4.4 +# - azure-core==1.30.2 +# - azure-identity==1.17.1 +# - azure-keyvault-certificates==4.8.0 +# - azure-keyvault-keys==4.9.0 +# - azure-keyvault-secrets==4.8.0 +# - azure-mgmt-automation==1.0.0 +# - azure-mgmt-compute==32.0.0 +# - azure-mgmt-containerinstance==10.1.0 +# - azure-mgmt-dns==8.1.0 +# - azure-mgmt-keyvault==10.3.1 +# - azure-mgmt-msi==7.0.0 +# - azure-mgmt-network==26.0.0 +# - azure-mgmt-rdbms==10.1.0 +# - azure-mgmt-resource==23.1.1 +# - azure-mgmt-storage==21.2.1 +# - azure-storage-blob==12.22.0 +# - azure-storage-file-datalake==12.16.0 +# - azure-storage-file-share==12.17.0 +# - chevron==0.14.0 +# - cryptography==43.0.0 +# - fqdn==1.5.1 +# - msal==1.30.0 +# - psycopg==3.2.1 +# - pulumi-azure-native==2.56.0 +# - pulumi-random==4.16.3 +# - pulumi-tls==5.0.4 +# - pulumi==3.129.0 +# - pydantic==2.8.2 +# - pyjwt[crypto]==2.9.0 +# - pytz==2024.1 +# - pyyaml==6.0.2 +# - rich==13.7.1 +# - simple-acme-dns==3.1.0 +# - typer==0.12.4 +# - websocket-client==1.8.0 +# + +acme==2.10.0 + # via + # -c .hatch/requirements.txt + # simple-acme-dns +annotated-types==0.7.0 + # via + # -c .hatch/requirements.txt + # pydantic +appdirs==1.4.4 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +arpeggio==2.0.2 + # via + # -c .hatch/requirements.txt + # parver +attrs==24.2.0 + # via + # -c .hatch/requirements.txt + # parver +azure-common==1.1.28 + # via + # -c .hatch/requirements.txt + # azure-mgmt-automation + # azure-mgmt-compute + # azure-mgmt-containerinstance + # azure-mgmt-dns + # azure-mgmt-keyvault + # azure-mgmt-msi + # azure-mgmt-network + # azure-mgmt-rdbms + # azure-mgmt-resource + # azure-mgmt-storage +azure-core==1.30.2 + # via + # -c .hatch/requirements.txt + # hatch.envs.test + # azure-identity + # azure-keyvault-certificates + # azure-keyvault-keys + # azure-keyvault-secrets + # azure-mgmt-core + # azure-storage-blob + # azure-storage-file-datalake + # azure-storage-file-share + # msrest +azure-identity==1.17.1 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +azure-keyvault-certificates==4.8.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +azure-keyvault-keys==4.9.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +azure-keyvault-secrets==4.8.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +azure-mgmt-automation==1.0.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +azure-mgmt-compute==32.0.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +azure-mgmt-containerinstance==10.1.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +azure-mgmt-core==1.4.0 + # via + # -c .hatch/requirements.txt + # azure-mgmt-automation + # azure-mgmt-compute + # azure-mgmt-containerinstance + # azure-mgmt-dns + # azure-mgmt-keyvault + # azure-mgmt-msi + # azure-mgmt-network + # azure-mgmt-rdbms + # azure-mgmt-resource + # azure-mgmt-storage +azure-mgmt-dns==8.1.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +azure-mgmt-keyvault==10.3.1 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +azure-mgmt-msi==7.0.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +azure-mgmt-network==26.0.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +azure-mgmt-rdbms==10.1.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +azure-mgmt-resource==23.1.1 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +azure-mgmt-storage==21.2.1 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +azure-storage-blob==12.22.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test + # azure-storage-file-datalake +azure-storage-file-datalake==12.16.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +azure-storage-file-share==12.17.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +certifi==2024.7.4 + # via + # -c .hatch/requirements.txt + # msrest + # requests +cffi==1.17.0 + # via + # -c .hatch/requirements.txt + # cryptography +charset-normalizer==3.3.2 + # via + # -c .hatch/requirements.txt + # requests +chevron==0.14.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +click==8.1.7 + # via + # -c .hatch/requirements.txt + # typer +coverage==7.5.4 + # via hatch.envs.test +cryptography==43.0.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test + # acme + # azure-identity + # azure-keyvault-keys + # azure-storage-blob + # azure-storage-file-share + # josepy + # msal + # pyjwt + # pyopenssl +dill==0.3.8 + # via + # -c .hatch/requirements.txt + # pulumi +dnspython==2.6.1 + # via + # -c .hatch/requirements.txt + # simple-acme-dns +fqdn==1.5.1 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +freezegun==1.5.1 + # via hatch.envs.test +grpcio==1.60.2 + # via + # -c .hatch/requirements.txt + # pulumi +idna==3.7 + # via + # -c .hatch/requirements.txt + # requests +iniconfig==2.0.0 + # via pytest +isodate==0.6.1 + # via + # -c .hatch/requirements.txt + # azure-keyvault-certificates + # azure-keyvault-keys + # azure-keyvault-secrets + # azure-mgmt-compute + # azure-mgmt-containerinstance + # azure-mgmt-dns + # azure-mgmt-keyvault + # azure-mgmt-network + # azure-mgmt-resource + # azure-mgmt-storage + # azure-storage-blob + # azure-storage-file-datalake + # azure-storage-file-share + # msrest +josepy==1.14.0 + # via + # -c .hatch/requirements.txt + # acme +markdown-it-py==3.0.0 + # via + # -c .hatch/requirements.txt + # rich +mdurl==0.1.2 + # via + # -c .hatch/requirements.txt + # markdown-it-py +msal==1.30.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test + # azure-identity + # msal-extensions +msal-extensions==1.2.0 + # via + # -c .hatch/requirements.txt + # azure-identity +msrest==0.7.1 + # via + # -c .hatch/requirements.txt + # azure-mgmt-automation + # azure-mgmt-msi + # azure-mgmt-rdbms +oauthlib==3.2.2 + # via + # -c .hatch/requirements.txt + # requests-oauthlib +packaging==24.1 + # via pytest +parver==0.5 + # via + # -c .hatch/requirements.txt + # pulumi-azure-native + # pulumi-random + # pulumi-tls +pluggy==1.5.0 + # via pytest +portalocker==2.10.1 + # via + # -c .hatch/requirements.txt + # msal-extensions +protobuf==4.25.4 + # via + # -c .hatch/requirements.txt + # pulumi +psycopg==3.2.1 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +pulumi==3.129.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test + # pulumi-azure-native + # pulumi-random + # pulumi-tls +pulumi-azure-native==2.56.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +pulumi-random==4.16.3 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +pulumi-tls==5.0.4 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +pycparser==2.22 + # via + # -c .hatch/requirements.txt + # cffi +pydantic==2.8.2 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +pydantic-core==2.20.1 + # via + # -c .hatch/requirements.txt + # pydantic +pygments==2.18.0 + # via + # -c .hatch/requirements.txt + # rich +pyjwt==2.9.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test + # msal +pyopenssl==24.2.1 + # via + # -c .hatch/requirements.txt + # acme + # josepy +pyrfc3339==1.1 + # via + # -c .hatch/requirements.txt + # acme +pytest==8.2.2 + # via + # hatch.envs.test + # pytest-mock +pytest-mock==3.14.0 + # via hatch.envs.test +python-dateutil==2.9.0.post0 + # via freezegun +pytz==2024.1 + # via + # -c .hatch/requirements.txt + # hatch.envs.test + # acme + # pyrfc3339 +pyyaml==6.0.2 + # via + # -c .hatch/requirements.txt + # hatch.envs.test + # pulumi +requests==2.32.3 + # via + # -c .hatch/requirements.txt + # acme + # azure-core + # msal + # msrest + # requests-mock + # requests-oauthlib +requests-mock==1.12.1 + # via hatch.envs.test +requests-oauthlib==2.0.0 + # via + # -c .hatch/requirements.txt + # msrest +rich==13.7.1 + # via + # -c .hatch/requirements.txt + # hatch.envs.test + # typer +semver==2.13.0 + # via + # -c .hatch/requirements.txt + # pulumi + # pulumi-azure-native + # pulumi-random + # pulumi-tls +shellingham==1.5.4 + # via + # -c .hatch/requirements.txt + # typer +simple-acme-dns==3.1.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +six==1.16.0 + # via + # -c .hatch/requirements.txt + # azure-core + # isodate + # pulumi + # python-dateutil +typer==0.12.4 + # via + # -c .hatch/requirements.txt + # hatch.envs.test +typing-extensions==4.12.2 + # via + # -c .hatch/requirements.txt + # azure-core + # azure-identity + # azure-keyvault-certificates + # azure-keyvault-keys + # azure-keyvault-secrets + # azure-mgmt-compute + # azure-mgmt-keyvault + # azure-storage-blob + # azure-storage-file-datalake + # azure-storage-file-share + # psycopg + # pydantic + # pydantic-core + # typer +urllib3==2.2.2 + # via + # -c .hatch/requirements.txt + # requests +validators==0.28.3 + # via + # -c .hatch/requirements.txt + # simple-acme-dns +websocket-client==1.8.0 + # via + # -c .hatch/requirements.txt + # hatch.envs.test + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt new file mode 100644 index 0000000000..4d64b48ff1 --- /dev/null +++ b/.hatch/requirements.txt @@ -0,0 +1,298 @@ +# +# This file is autogenerated by hatch-pip-compile with Python 3.12 +# +# - appdirs==1.4.4 +# - azure-core==1.30.2 +# - azure-identity==1.17.1 +# - azure-keyvault-certificates==4.8.0 +# - azure-keyvault-keys==4.9.0 +# - azure-keyvault-secrets==4.8.0 +# - azure-mgmt-automation==1.0.0 +# - azure-mgmt-compute==32.0.0 +# - azure-mgmt-containerinstance==10.1.0 +# - azure-mgmt-dns==8.1.0 +# - azure-mgmt-keyvault==10.3.1 +# - azure-mgmt-msi==7.0.0 +# - azure-mgmt-network==26.0.0 +# - azure-mgmt-rdbms==10.1.0 +# - azure-mgmt-resource==23.1.1 +# - azure-mgmt-storage==21.2.1 +# - azure-storage-blob==12.22.0 +# - azure-storage-file-datalake==12.16.0 +# - azure-storage-file-share==12.17.0 +# - chevron==0.14.0 +# - cryptography==43.0.0 +# - fqdn==1.5.1 +# - msal==1.30.0 +# - psycopg==3.2.1 +# - pulumi-azure-native==2.56.0 +# - pulumi-random==4.16.3 +# - pulumi-tls==5.0.4 +# - pulumi==3.129.0 +# - pydantic==2.8.2 +# - pyjwt[crypto]==2.9.0 +# - pytz==2024.1 +# - pyyaml==6.0.2 +# - rich==13.7.1 +# - simple-acme-dns==3.1.0 +# - typer==0.12.4 +# - websocket-client==1.8.0 +# + +acme==2.10.0 + # via simple-acme-dns +annotated-types==0.7.0 + # via pydantic +appdirs==1.4.4 + # via hatch.envs.default +arpeggio==2.0.2 + # via parver +attrs==24.2.0 + # via parver +azure-common==1.1.28 + # via + # azure-mgmt-automation + # azure-mgmt-compute + # azure-mgmt-containerinstance + # azure-mgmt-dns + # azure-mgmt-keyvault + # azure-mgmt-msi + # azure-mgmt-network + # azure-mgmt-rdbms + # azure-mgmt-resource + # azure-mgmt-storage +azure-core==1.30.2 + # via + # hatch.envs.default + # azure-identity + # azure-keyvault-certificates + # azure-keyvault-keys + # azure-keyvault-secrets + # azure-mgmt-core + # azure-storage-blob + # azure-storage-file-datalake + # azure-storage-file-share + # msrest +azure-identity==1.17.1 + # via hatch.envs.default +azure-keyvault-certificates==4.8.0 + # via hatch.envs.default +azure-keyvault-keys==4.9.0 + # via hatch.envs.default +azure-keyvault-secrets==4.8.0 + # via hatch.envs.default +azure-mgmt-automation==1.0.0 + # via hatch.envs.default +azure-mgmt-compute==32.0.0 + # via hatch.envs.default +azure-mgmt-containerinstance==10.1.0 + # via hatch.envs.default +azure-mgmt-core==1.4.0 + # via + # azure-mgmt-automation + # azure-mgmt-compute + # azure-mgmt-containerinstance + # azure-mgmt-dns + # azure-mgmt-keyvault + # azure-mgmt-msi + # azure-mgmt-network + # azure-mgmt-rdbms + # azure-mgmt-resource + # azure-mgmt-storage +azure-mgmt-dns==8.1.0 + # via hatch.envs.default +azure-mgmt-keyvault==10.3.1 + # via hatch.envs.default +azure-mgmt-msi==7.0.0 + # via hatch.envs.default +azure-mgmt-network==26.0.0 + # via hatch.envs.default +azure-mgmt-rdbms==10.1.0 + # via hatch.envs.default +azure-mgmt-resource==23.1.1 + # via hatch.envs.default +azure-mgmt-storage==21.2.1 + # via hatch.envs.default +azure-storage-blob==12.22.0 + # via + # hatch.envs.default + # azure-storage-file-datalake +azure-storage-file-datalake==12.16.0 + # via hatch.envs.default +azure-storage-file-share==12.17.0 + # via hatch.envs.default +certifi==2024.7.4 + # via + # msrest + # requests +cffi==1.17.0 + # via cryptography +charset-normalizer==3.3.2 + # via requests +chevron==0.14.0 + # via hatch.envs.default +click==8.1.7 + # via typer +cryptography==43.0.0 + # via + # hatch.envs.default + # acme + # azure-identity + # azure-keyvault-keys + # azure-storage-blob + # azure-storage-file-share + # josepy + # msal + # pyjwt + # pyopenssl +dill==0.3.8 + # via pulumi +dnspython==2.6.1 + # via simple-acme-dns +fqdn==1.5.1 + # via hatch.envs.default +grpcio==1.60.2 + # via pulumi +idna==3.7 + # via requests +isodate==0.6.1 + # via + # azure-keyvault-certificates + # azure-keyvault-keys + # azure-keyvault-secrets + # azure-mgmt-compute + # azure-mgmt-containerinstance + # azure-mgmt-dns + # azure-mgmt-keyvault + # azure-mgmt-network + # azure-mgmt-resource + # azure-mgmt-storage + # azure-storage-blob + # azure-storage-file-datalake + # azure-storage-file-share + # msrest +josepy==1.14.0 + # via acme +markdown-it-py==3.0.0 + # via rich +mdurl==0.1.2 + # via markdown-it-py +msal==1.30.0 + # via + # hatch.envs.default + # azure-identity + # msal-extensions +msal-extensions==1.2.0 + # via azure-identity +msrest==0.7.1 + # via + # azure-mgmt-automation + # azure-mgmt-msi + # azure-mgmt-rdbms +oauthlib==3.2.2 + # via requests-oauthlib +parver==0.5 + # via + # pulumi-azure-native + # pulumi-random + # pulumi-tls +portalocker==2.10.1 + # via msal-extensions +protobuf==4.25.4 + # via pulumi +psycopg==3.2.1 + # via hatch.envs.default +pulumi==3.129.0 + # via + # hatch.envs.default + # pulumi-azure-native + # pulumi-random + # pulumi-tls +pulumi-azure-native==2.56.0 + # via hatch.envs.default +pulumi-random==4.16.3 + # via hatch.envs.default +pulumi-tls==5.0.4 + # via hatch.envs.default +pycparser==2.22 + # via cffi +pydantic==2.8.2 + # via hatch.envs.default +pydantic-core==2.20.1 + # via pydantic +pygments==2.18.0 + # via rich +pyjwt==2.9.0 + # via + # hatch.envs.default + # msal +pyopenssl==24.2.1 + # via + # acme + # josepy +pyrfc3339==1.1 + # via acme +pytz==2024.1 + # via + # hatch.envs.default + # acme + # pyrfc3339 +pyyaml==6.0.2 + # via + # hatch.envs.default + # pulumi +requests==2.32.3 + # via + # acme + # azure-core + # msal + # msrest + # requests-oauthlib +requests-oauthlib==2.0.0 + # via msrest +rich==13.7.1 + # via + # hatch.envs.default + # typer +semver==2.13.0 + # via + # pulumi + # pulumi-azure-native + # pulumi-random + # pulumi-tls +shellingham==1.5.4 + # via typer +simple-acme-dns==3.1.0 + # via hatch.envs.default +six==1.16.0 + # via + # azure-core + # isodate + # pulumi +typer==0.12.4 + # via hatch.envs.default +typing-extensions==4.12.2 + # via + # azure-core + # azure-identity + # azure-keyvault-certificates + # azure-keyvault-keys + # azure-keyvault-secrets + # azure-mgmt-compute + # azure-mgmt-keyvault + # azure-storage-blob + # azure-storage-file-datalake + # azure-storage-file-share + # psycopg + # pydantic + # pydantic-core + # typer +urllib3==2.2.2 + # via requests +validators==0.28.3 + # via simple-acme-dns +websocket-client==1.8.0 + # via hatch.envs.default + +# The following packages are considered to be unsafe in a requirements file: +# setuptools diff --git a/pyproject.toml b/pyproject.toml index 4dca41ec0b..6f49a0bec1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,7 +66,16 @@ omit= [ "data_safe_haven/resources/*", ] +[tool.hatch.env] +requires = ["hatch-pip-compile"] + +[tool.hatch.envs.default] +type = "pip-compile" +lock-filename = ".hatch/requirements.txt" + [tool.hatch.envs.docs] +type = "pip-compile" +lock-filename = ".hatch/requirements-docs.txt" detached = true dependencies = [ "emoji==2.12.1", @@ -83,13 +92,15 @@ build = [ ] [tool.hatch.envs.lint] +type = "pip-compile" +lock-filename = ".hatch/requirements-lint.txt" detached = true dependencies = [ "ansible==10.2.0", "ansible-dev-tools==24.7.2", "black==24.4.2", "mypy==1.10.1", - "pydantic==2.8.0", + "pydantic==2.8.2", "ruff==0.5.0", "types-appdirs==1.4.3.5", "types-chevron==0.14.2.20240310", @@ -117,6 +128,9 @@ style = [ typing = "mypy {args:data_safe_haven}" [tool.hatch.envs.test] +type = "pip-compile" +lock-filename = ".hatch/requirements-test.txt" +pip-compile-constraint = "default" dependencies = [ "coverage==7.5.4", "freezegun==1.5.1", From be40018ed5f37f0c01f25f1ea0774aebd1f25cd9 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 15:37:53 +0100 Subject: [PATCH 054/302] :wrench: Update readthedocs config to use the pre-compiled requirements --- .readthedocs.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 54a99f12f1..145d005f83 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -8,10 +8,6 @@ build: os: ubuntu-22.04 tools: python: "3.12" - jobs: - pre_create_environment: - - pip install hatch - - hatch -e docs dep show requirements > requirements-docs.txt formats: - htmlzip @@ -19,7 +15,7 @@ formats: python: install: - - requirements: requirements-docs.txt + - requirements: .hatch/requirements-docs.txt sphinx: configuration: docs/source/conf.py From e878ee1b0f3119dde6d11d1575c43598bcd26cdf Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 15:44:52 +0100 Subject: [PATCH 055/302] :wrench: Group docs dependencies into an optional features --- .hatch/requirements-docs.txt | 2 +- pyproject.toml | 17 ++++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/.hatch/requirements-docs.txt b/.hatch/requirements-docs.txt index 2e50512f61..1831f0b013 100644 --- a/.hatch/requirements-docs.txt +++ b/.hatch/requirements-docs.txt @@ -4,8 +4,8 @@ # - emoji==2.12.1 # - myst-parser==4.0.0 # - pydata-sphinx-theme==0.15.4 -# - sphinx==8.0.2 # - sphinx-togglebutton==0.3.2 +# - sphinx==8.0.2 # accessible-pygments==0.0.5 diff --git a/pyproject.toml b/pyproject.toml index 6f49a0bec1..798817bcca 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,6 +50,15 @@ dependencies = [ "websocket-client==1.8.0", ] +[project.optional-dependencies] +docs = [ + "emoji==2.12.1", + "myst-parser==4.0.0", + "pydata-sphinx-theme==0.15.4", + "sphinx==8.0.2", + "sphinx-togglebutton==0.3.2", +] + [project.scripts] dsh = "data_safe_haven.commands.cli:main" @@ -77,13 +86,7 @@ lock-filename = ".hatch/requirements.txt" type = "pip-compile" lock-filename = ".hatch/requirements-docs.txt" detached = true -dependencies = [ - "emoji==2.12.1", - "myst-parser==4.0.0", - "pydata-sphinx-theme==0.15.4", - "sphinx==8.0.2", - "sphinx-togglebutton==0.3.2", -] +features = ["docs"] [tool.hatch.envs.docs.scripts] build = [ From 1b68889c459d2c926cefa75c95152f364b4b68a8 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 15:50:41 +0100 Subject: [PATCH 056/302] :wrench: Group linting dependencies into an optional feature --- .hatch/requirements-lint.txt | 4 ++-- pyproject.toml | 27 ++++++++++++++------------- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index d3d4ce526c..d499a044a8 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -1,8 +1,8 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# - ansible==10.2.0 # - ansible-dev-tools==24.7.2 +# - ansible==10.2.0 # - black==24.4.2 # - mypy==1.10.1 # - pydantic==2.8.2 @@ -10,7 +10,7 @@ # - types-appdirs==1.4.3.5 # - types-chevron==0.14.2.20240310 # - types-pytz==2024.1.0.20240417 -# - types-PyYAML==6.0.12.20240311 +# - types-pyyaml==6.0.12.20240311 # - types-requests==2.32.0.20240622 # diff --git a/pyproject.toml b/pyproject.toml index 798817bcca..a95b221d4e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,6 +58,19 @@ docs = [ "sphinx==8.0.2", "sphinx-togglebutton==0.3.2", ] +lint = [ + "ansible-dev-tools==24.7.2", + "ansible==10.2.0", + "black==24.4.2", + "mypy==1.10.1", + "pydantic==2.8.2", + "ruff==0.5.0", + "types-appdirs==1.4.3.5", + "types-chevron==0.14.2.20240310", + "types-pytz==2024.1.0.20240417", + "types-pyyaml==6.0.12.20240311", + "types-requests==2.32.0.20240622", +] [project.scripts] dsh = "data_safe_haven.commands.cli:main" @@ -98,19 +111,7 @@ build = [ type = "pip-compile" lock-filename = ".hatch/requirements-lint.txt" detached = true -dependencies = [ - "ansible==10.2.0", - "ansible-dev-tools==24.7.2", - "black==24.4.2", - "mypy==1.10.1", - "pydantic==2.8.2", - "ruff==0.5.0", - "types-appdirs==1.4.3.5", - "types-chevron==0.14.2.20240310", - "types-pytz==2024.1.0.20240417", - "types-PyYAML==6.0.12.20240311", - "types-requests==2.32.0.20240622", -] +features = ["lint"] [tool.hatch.envs.lint.scripts] all = [ From 0ff6956a71d231afd4c270cd077bfb6b4ca2679c Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 15:53:35 +0100 Subject: [PATCH 057/302] :wrench: Group testing dependencies into an optional feature --- .hatch/requirements-test.txt | 10 +++++----- pyproject.toml | 15 ++++++++------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index b02661eaa6..3c82df1538 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -3,11 +3,6 @@ # # [constraints] .hatch/requirements.txt (SHA256: f69a7b24505549799b2702a30abac1cfa1d85ea29ffe35d27691e5112ed51eb3) # -# - coverage==7.5.4 -# - freezegun==1.5.1 -# - pytest==8.2.2 -# - pytest-mock==3.14.0 -# - requests-mock==1.12.1 # - appdirs==1.4.4 # - azure-core==1.30.2 # - azure-identity==1.17.1 @@ -44,6 +39,11 @@ # - simple-acme-dns==3.1.0 # - typer==0.12.4 # - websocket-client==1.8.0 +# - coverage==7.5.4 +# - freezegun==1.5.1 +# - pytest-mock==3.14.0 +# - pytest==8.2.2 +# - requests-mock==1.12.1 # acme==2.10.0 diff --git a/pyproject.toml b/pyproject.toml index a95b221d4e..bb5a11b41a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -71,6 +71,13 @@ lint = [ "types-pyyaml==6.0.12.20240311", "types-requests==2.32.0.20240622", ] +test = [ + "coverage==7.5.4", + "freezegun==1.5.1", + "pytest-mock==3.14.0", + "pytest==8.2.2", + "requests-mock==1.12.1", +] [project.scripts] dsh = "data_safe_haven.commands.cli:main" @@ -135,13 +142,7 @@ typing = "mypy {args:data_safe_haven}" type = "pip-compile" lock-filename = ".hatch/requirements-test.txt" pip-compile-constraint = "default" -dependencies = [ - "coverage==7.5.4", - "freezegun==1.5.1", - "pytest==8.2.2", - "pytest-mock==3.14.0", - "requests-mock==1.12.1", -] +features = ["test"] [tool.hatch.envs.test.scripts] test = "coverage run -m pytest {args: tests}" From cd5063bf998024affc8bf705a5db2759c58d005e Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 16:01:24 +0100 Subject: [PATCH 058/302] :coffin: Drop unused dependencies --- .hatch/requirements-test.txt | 28 +--------------------------- .hatch/requirements.txt | 20 -------------------- pyproject.toml | 4 ---- 3 files changed, 1 insertion(+), 51 deletions(-) diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index 3c82df1538..828d0fb427 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -1,7 +1,7 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# [constraints] .hatch/requirements.txt (SHA256: f69a7b24505549799b2702a30abac1cfa1d85ea29ffe35d27691e5112ed51eb3) +# [constraints] .hatch/requirements.txt (SHA256: c343379df562adfb8afb50de03a572532da0b429432e9ab3c3f2703c04c0f8aa) # # - appdirs==1.4.4 # - azure-core==1.30.2 @@ -9,13 +9,11 @@ # - azure-keyvault-certificates==4.8.0 # - azure-keyvault-keys==4.9.0 # - azure-keyvault-secrets==4.8.0 -# - azure-mgmt-automation==1.0.0 # - azure-mgmt-compute==32.0.0 # - azure-mgmt-containerinstance==10.1.0 # - azure-mgmt-dns==8.1.0 # - azure-mgmt-keyvault==10.3.1 # - azure-mgmt-msi==7.0.0 -# - azure-mgmt-network==26.0.0 # - azure-mgmt-rdbms==10.1.0 # - azure-mgmt-resource==23.1.1 # - azure-mgmt-storage==21.2.1 @@ -25,11 +23,9 @@ # - chevron==0.14.0 # - cryptography==43.0.0 # - fqdn==1.5.1 -# - msal==1.30.0 # - psycopg==3.2.1 # - pulumi-azure-native==2.56.0 # - pulumi-random==4.16.3 -# - pulumi-tls==5.0.4 # - pulumi==3.129.0 # - pydantic==2.8.2 # - pyjwt[crypto]==2.9.0 @@ -69,13 +65,11 @@ attrs==24.2.0 azure-common==1.1.28 # via # -c .hatch/requirements.txt - # azure-mgmt-automation # azure-mgmt-compute # azure-mgmt-containerinstance # azure-mgmt-dns # azure-mgmt-keyvault # azure-mgmt-msi - # azure-mgmt-network # azure-mgmt-rdbms # azure-mgmt-resource # azure-mgmt-storage @@ -108,10 +102,6 @@ azure-keyvault-secrets==4.8.0 # via # -c .hatch/requirements.txt # hatch.envs.test -azure-mgmt-automation==1.0.0 - # via - # -c .hatch/requirements.txt - # hatch.envs.test azure-mgmt-compute==32.0.0 # via # -c .hatch/requirements.txt @@ -123,13 +113,11 @@ azure-mgmt-containerinstance==10.1.0 azure-mgmt-core==1.4.0 # via # -c .hatch/requirements.txt - # azure-mgmt-automation # azure-mgmt-compute # azure-mgmt-containerinstance # azure-mgmt-dns # azure-mgmt-keyvault # azure-mgmt-msi - # azure-mgmt-network # azure-mgmt-rdbms # azure-mgmt-resource # azure-mgmt-storage @@ -145,10 +133,6 @@ azure-mgmt-msi==7.0.0 # via # -c .hatch/requirements.txt # hatch.envs.test -azure-mgmt-network==26.0.0 - # via - # -c .hatch/requirements.txt - # hatch.envs.test azure-mgmt-rdbms==10.1.0 # via # -c .hatch/requirements.txt @@ -244,7 +228,6 @@ isodate==0.6.1 # azure-mgmt-containerinstance # azure-mgmt-dns # azure-mgmt-keyvault - # azure-mgmt-network # azure-mgmt-resource # azure-mgmt-storage # azure-storage-blob @@ -266,7 +249,6 @@ mdurl==0.1.2 msal==1.30.0 # via # -c .hatch/requirements.txt - # hatch.envs.test # azure-identity # msal-extensions msal-extensions==1.2.0 @@ -276,7 +258,6 @@ msal-extensions==1.2.0 msrest==0.7.1 # via # -c .hatch/requirements.txt - # azure-mgmt-automation # azure-mgmt-msi # azure-mgmt-rdbms oauthlib==3.2.2 @@ -290,7 +271,6 @@ parver==0.5 # -c .hatch/requirements.txt # pulumi-azure-native # pulumi-random - # pulumi-tls pluggy==1.5.0 # via pytest portalocker==2.10.1 @@ -311,7 +291,6 @@ pulumi==3.129.0 # hatch.envs.test # pulumi-azure-native # pulumi-random - # pulumi-tls pulumi-azure-native==2.56.0 # via # -c .hatch/requirements.txt @@ -320,10 +299,6 @@ pulumi-random==4.16.3 # via # -c .hatch/requirements.txt # hatch.envs.test -pulumi-tls==5.0.4 - # via - # -c .hatch/requirements.txt - # hatch.envs.test pycparser==2.22 # via # -c .hatch/requirements.txt @@ -399,7 +374,6 @@ semver==2.13.0 # pulumi # pulumi-azure-native # pulumi-random - # pulumi-tls shellingham==1.5.4 # via # -c .hatch/requirements.txt diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt index 4d64b48ff1..8ef5b1358f 100644 --- a/.hatch/requirements.txt +++ b/.hatch/requirements.txt @@ -7,13 +7,11 @@ # - azure-keyvault-certificates==4.8.0 # - azure-keyvault-keys==4.9.0 # - azure-keyvault-secrets==4.8.0 -# - azure-mgmt-automation==1.0.0 # - azure-mgmt-compute==32.0.0 # - azure-mgmt-containerinstance==10.1.0 # - azure-mgmt-dns==8.1.0 # - azure-mgmt-keyvault==10.3.1 # - azure-mgmt-msi==7.0.0 -# - azure-mgmt-network==26.0.0 # - azure-mgmt-rdbms==10.1.0 # - azure-mgmt-resource==23.1.1 # - azure-mgmt-storage==21.2.1 @@ -23,11 +21,9 @@ # - chevron==0.14.0 # - cryptography==43.0.0 # - fqdn==1.5.1 -# - msal==1.30.0 # - psycopg==3.2.1 # - pulumi-azure-native==2.56.0 # - pulumi-random==4.16.3 -# - pulumi-tls==5.0.4 # - pulumi==3.129.0 # - pydantic==2.8.2 # - pyjwt[crypto]==2.9.0 @@ -51,13 +47,11 @@ attrs==24.2.0 # via parver azure-common==1.1.28 # via - # azure-mgmt-automation # azure-mgmt-compute # azure-mgmt-containerinstance # azure-mgmt-dns # azure-mgmt-keyvault # azure-mgmt-msi - # azure-mgmt-network # azure-mgmt-rdbms # azure-mgmt-resource # azure-mgmt-storage @@ -81,21 +75,17 @@ azure-keyvault-keys==4.9.0 # via hatch.envs.default azure-keyvault-secrets==4.8.0 # via hatch.envs.default -azure-mgmt-automation==1.0.0 - # via hatch.envs.default azure-mgmt-compute==32.0.0 # via hatch.envs.default azure-mgmt-containerinstance==10.1.0 # via hatch.envs.default azure-mgmt-core==1.4.0 # via - # azure-mgmt-automation # azure-mgmt-compute # azure-mgmt-containerinstance # azure-mgmt-dns # azure-mgmt-keyvault # azure-mgmt-msi - # azure-mgmt-network # azure-mgmt-rdbms # azure-mgmt-resource # azure-mgmt-storage @@ -105,8 +95,6 @@ azure-mgmt-keyvault==10.3.1 # via hatch.envs.default azure-mgmt-msi==7.0.0 # via hatch.envs.default -azure-mgmt-network==26.0.0 - # via hatch.envs.default azure-mgmt-rdbms==10.1.0 # via hatch.envs.default azure-mgmt-resource==23.1.1 @@ -164,7 +152,6 @@ isodate==0.6.1 # azure-mgmt-containerinstance # azure-mgmt-dns # azure-mgmt-keyvault - # azure-mgmt-network # azure-mgmt-resource # azure-mgmt-storage # azure-storage-blob @@ -179,14 +166,12 @@ mdurl==0.1.2 # via markdown-it-py msal==1.30.0 # via - # hatch.envs.default # azure-identity # msal-extensions msal-extensions==1.2.0 # via azure-identity msrest==0.7.1 # via - # azure-mgmt-automation # azure-mgmt-msi # azure-mgmt-rdbms oauthlib==3.2.2 @@ -195,7 +180,6 @@ parver==0.5 # via # pulumi-azure-native # pulumi-random - # pulumi-tls portalocker==2.10.1 # via msal-extensions protobuf==4.25.4 @@ -207,13 +191,10 @@ pulumi==3.129.0 # hatch.envs.default # pulumi-azure-native # pulumi-random - # pulumi-tls pulumi-azure-native==2.56.0 # via hatch.envs.default pulumi-random==4.16.3 # via hatch.envs.default -pulumi-tls==5.0.4 - # via hatch.envs.default pycparser==2.22 # via cffi pydantic==2.8.2 @@ -259,7 +240,6 @@ semver==2.13.0 # pulumi # pulumi-azure-native # pulumi-random - # pulumi-tls shellingham==1.5.4 # via typer simple-acme-dns==3.1.0 diff --git a/pyproject.toml b/pyproject.toml index bb5a11b41a..a738b88524 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -18,13 +18,11 @@ dependencies = [ "azure-keyvault-certificates==4.8.0", "azure-keyvault-keys==4.9.0", "azure-keyvault-secrets==4.8.0", - "azure-mgmt-automation==1.0.0", "azure-mgmt-compute==32.0.0", "azure-mgmt-containerinstance==10.1.0", "azure-mgmt-dns==8.1.0", "azure-mgmt-keyvault==10.3.1", "azure-mgmt-msi==7.0.0", - "azure-mgmt-network==26.0.0", "azure-mgmt-rdbms==10.1.0", "azure-mgmt-resource==23.1.1", "azure-mgmt-storage==21.2.1", @@ -34,12 +32,10 @@ dependencies = [ "chevron==0.14.0", "cryptography==43.0.0", "fqdn==1.5.1", - "msal==1.30.0", "psycopg==3.2.1", "pulumi==3.129.0", "pulumi-azure-native==2.56.0", "pulumi-random==4.16.3", - "pulumi-tls==5.0.4", "pydantic==2.8.2", "pyjwt[crypto]==2.9.0", "pytz==2024.1", From e58dd1969543444046544357f53cadf5194d65d5 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 16:10:15 +0100 Subject: [PATCH 059/302] :art: Run sphinx-build directly rather than going through a Makefile --- docs/Makefile | 20 -------------------- docs/README.md | 45 +++++++++------------------------------------ pyproject.toml | 5 +---- 3 files changed, 10 insertions(+), 60 deletions(-) delete mode 100644 docs/Makefile diff --git a/docs/Makefile b/docs/Makefile deleted file mode 100644 index a2cf542beb..0000000000 --- a/docs/Makefile +++ /dev/null @@ -1,20 +0,0 @@ -# Minimal makefile for Sphinx documentation -# - -# You can set these variables from the command line, and also -# from the environment for the first two. -SPHINXOPTS ?= -SPHINXBUILD ?= sphinx-build -SOURCEDIR = source -BUILDDIR = build - -# Put it first so that "make" without argument is like "make help". -help: - @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) - -.PHONY: help Makefile - -# Catch-all target: route all unknown targets to Sphinx using the new -# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). -%: Makefile - @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/README.md b/docs/README.md index 488a2ab2b8..fba3bd695a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -2,25 +2,18 @@ The documentation is built from Markdown files using [Sphinx](https://www.sphinx-doc.org/) and [MyST parser](https://myst-parser.readthedocs.io/). -## Building the Documentation +## Requirements -Create a virtual environment +Install the following requirements before starting -```console -python3 -m venv ./venv -source ./venv/bin/activate -``` +- [Hatch](https://hatch.pypa.io/1.9/install/) -Install the python dependencies (specified in [`requirements.txt`](./requirements.txt)) - -```console -pip install -r requirements.txt -``` +## Building the Documentation -Use the [`Makefile`](./Makefile) to build the document site +Build the documentation with `hatch`. ```console -make html +> hatch run docs:build ``` The generated documents will be placed under `build/html/`. @@ -28,30 +21,10 @@ To view the documents open `build/html/index.html` in your browser. For example ```console -firefox build/html/index.html +> firefox build/html/index.html ``` ## Reproducible Builds -To improve the reproducibly of build at each commit, [`requirements.txt`](./requirements.txt) contains a complete list of dependencies and specific versions. - -The projects _direct_ dependencies are listed in [`requirements.in`](./requirements.in). -The full list is then generated using [`pip-compile`](https://pip-tools.readthedocs.io/en/latest/#requirements-from-requirements-in) - -```console -pip-compile requirements.in -``` - -### Updating Requirements - -All requirements can be updated with - -```console -pip-compile --upgrade requirements.in -``` - -Your virtual environment can be updated with - -```console -pip-sync -``` +We use [`pip-compile`](https://pip-tools.readthedocs.io/en/latest/) behind the scenes to ensure that each commit uses the same set of packages to build the documentation. +This means that each build is fully reproducible. diff --git a/pyproject.toml b/pyproject.toml index a738b88524..293a04d843 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -105,10 +105,7 @@ detached = true features = ["docs"] [tool.hatch.envs.docs.scripts] -build = [ - # Treat warnings as errors - "make -C docs html SPHINXOPTS='-W'" -] +build = "sphinx-build -M html docs/source/ docs/build/ --fail-on-warning" [tool.hatch.envs.lint] type = "pip-compile" From 231f8e57cbab4b49952a20c0f74519c3bc6f9f3b Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 16:46:56 +0100 Subject: [PATCH 060/302] :coffin: Remove unused mypy overrides --- .hatch/requirements-lint.txt | 9 ++++++++- pyproject.toml | 14 +++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index d499a044a8..f89d7602fe 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -5,6 +5,7 @@ # - ansible==10.2.0 # - black==24.4.2 # - mypy==1.10.1 +# - pandas-stubs==2.2.2.240807 # - pydantic==2.8.2 # - ruff==0.5.0 # - types-appdirs==1.4.3.5 @@ -134,6 +135,8 @@ mypy-extensions==1.0.0 # via # black # mypy +numpy==2.1.0 + # via pandas-stubs onigurumacffi==1.3.0 # via ansible-navigator packaging==24.1 @@ -150,6 +153,8 @@ packaging==24.1 # pytest # pytest-ansible # tox +pandas-stubs==2.2.2.240807 + # via hatch.envs.lint parsley==1.3 # via bindep pathspec==0.12.1 @@ -246,7 +251,9 @@ types-appdirs==1.4.3.5 types-chevron==0.14.2.20240310 # via hatch.envs.lint types-pytz==2024.1.0.20240417 - # via hatch.envs.lint + # via + # hatch.envs.lint + # pandas-stubs types-pyyaml==6.0.12.20240311 # via hatch.envs.lint types-requests==2.32.0.20240622 diff --git a/pyproject.toml b/pyproject.toml index 293a04d843..d4dcdafb51 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,9 +33,9 @@ dependencies = [ "cryptography==43.0.0", "fqdn==1.5.1", "psycopg==3.2.1", - "pulumi==3.129.0", "pulumi-azure-native==2.56.0", "pulumi-random==4.16.3", + "pulumi==3.129.0", "pydantic==2.8.2", "pyjwt[crypto]==2.9.0", "pytz==2024.1", @@ -51,14 +51,15 @@ docs = [ "emoji==2.12.1", "myst-parser==4.0.0", "pydata-sphinx-theme==0.15.4", - "sphinx==8.0.2", "sphinx-togglebutton==0.3.2", + "sphinx==8.0.2", ] lint = [ "ansible-dev-tools==24.7.2", "ansible==10.2.0", "black==24.4.2", "mypy==1.10.1", + "pandas-stubs==2.2.2.240807", "pydantic==2.8.2", "ruff==0.5.0", "types-appdirs==1.4.3.5", @@ -149,7 +150,7 @@ path = "data_safe_haven/version.py" disallow_subclassing_any = false # allow subclassing of types from third-party libraries files = "data_safe_haven" # run mypy over this directory mypy_path = "typings" # use this directory for stubs -plugins = "pydantic.mypy" # enable the pydantic plugin +plugins = ["pydantic.mypy"] # enable the pydantic plugin strict = true # enable all optional error checking flags [[tool.mypy.overrides]] @@ -160,19 +161,14 @@ module = [ "azure.keyvault.*", "azure.mgmt.*", "azure.storage.*", - "cryptography.*", "dns.*", "jwt.*", - "msal.*", "numpy.*", - "pandas.*", "psycopg.*", - "pulumi.*", "pulumi_azure_native.*", "pulumi_random.*", - "pulumi_tls.*", + "pulumi.*", "pymssql.*", - "rich.*", "simple_acme_dns.*", "sklearn.*", "websocket.*", From 69fc576c242aad97cddda13a9affb144e6e1d9ea Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 22 Aug 2024 18:51:38 +0100 Subject: [PATCH 061/302] :memo: Add instructions for installing with pipx --- docs/source/deployment/deploy_shm.md | 13 ------------- docs/source/deployment/deploy_sre.md | 13 ------------- docs/source/deployment/index.md | 14 ++++++++++---- 3 files changed, 10 insertions(+), 30 deletions(-) diff --git a/docs/source/deployment/deploy_shm.md b/docs/source/deployment/deploy_shm.md index c1cf238b09..098784004c 100644 --- a/docs/source/deployment/deploy_shm.md +++ b/docs/source/deployment/deploy_shm.md @@ -23,19 +23,6 @@ However, you may choose to use multiple SHMs if, for example, you want to separa ## Deployment -::::{admonition} Ensure you are using a hatch shell -:class: dropdown important - -You must use a `hatch` shell to run any `dsh` commands. -From the project base directory run: - -:::{code} shell -$ hatch shell -::: - -This ensures that you are using the intended version of Data Safe Haven with the correct set of dependencies. -:::: - Before deploying the Safe Haven Management (SHM) infrastructure you need to decide on a few parameters: **entra_tenant_id** diff --git a/docs/source/deployment/deploy_sre.md b/docs/source/deployment/deploy_sre.md index fb236e7963..be080908f2 100644 --- a/docs/source/deployment/deploy_sre.md +++ b/docs/source/deployment/deploy_sre.md @@ -4,19 +4,6 @@ These instructions will deploy a new Secure Research Environment (SRE). -::::{admonition} Ensure you are using a hatch shell -:class: dropdown important - -You must use a `hatch` shell to run any `dsh` commands. -From the project base directory run: - -:::{code} shell -$ hatch shell -::: - -This ensures that you are using the intended version of Data Safe Haven with the correct set of dependencies. -:::: - ::::{note} As the Basic Application Gateway is still in preview, you will need to run the following commands once per subscription: diff --git a/docs/source/deployment/index.md b/docs/source/deployment/index.md index 14082e3163..c83bb5ee61 100644 --- a/docs/source/deployment/index.md +++ b/docs/source/deployment/index.md @@ -22,7 +22,7 @@ Deploying an instance of the Data Safe Haven involves the following steps: Install the following requirements before starting - [Azure CLI](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) -- [Hatch](https://hatch.pypa.io/1.9/install/) +- [pipx](https://pipx.pypa.io/stable/installation/) - [Pulumi](https://www.pulumi.com/docs/get-started/install/) ### Docker Hub @@ -38,9 +38,15 @@ See [the instructions here](https://docs.docker.com/security/for-developers/acce ## Install the project -- Download or checkout the [latest supported version](https://github.com/alan-turing-institute/data-safe-haven/blob/develop/SECURITY.md) of this code from [GitHub](https://github.com/alan-turing-institute/data-safe-haven). -- Enter the base directory and install Python dependencies with `hatch` by doing the following: +- Look up the [latest supported version](https://github.com/alan-turing-institute/data-safe-haven/blob/develop/SECURITY.md) of this code from [GitHub](https://github.com/alan-turing-institute/data-safe-haven). +- Install the executable with `pipx` (using version 'v5.0.0' for this example) by running: :::{code} shell -$ hatch run true +$ pipx install git+https://github.com/alan-turing-institute/data-safe-haven.git@v5.0.0 +::: + +- Test that this has worked by checking the version + +:::{code} shell +$ dsh --version ::: From 699e09d6e374b766bbc6b1e86c6e50450247590c Mon Sep 17 00:00:00 2001 From: James Robinson Date: Tue, 27 Aug 2024 12:04:08 +0100 Subject: [PATCH 062/302] :sparkles: Create Pulumi deployment service principal during SHM setup --- .../infrastructure/programs/imperative_shm.py | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/data_safe_haven/infrastructure/programs/imperative_shm.py b/data_safe_haven/infrastructure/programs/imperative_shm.py index b13ec1680e..a594b6dae2 100644 --- a/data_safe_haven/infrastructure/programs/imperative_shm.py +++ b/data_safe_haven/infrastructure/programs/imperative_shm.py @@ -114,17 +114,18 @@ def deploy(self) -> None: msg = "Failed to create SHM resources." raise DataSafeHavenAzureError(msg) from exc + # Connect to GraphAPI + graph_api = GraphApi.from_scopes( + scopes=[ + "Application.ReadWrite.All", + "Domain.ReadWrite.All", + "Group.ReadWrite.All", + ], + tenant_id=self.config.shm.entra_tenant_id, + ) # Add the SHM domain to the Entra ID via interactive GraphAPI try: # Generate the verification record - graph_api = GraphApi.from_scopes( - scopes=[ - "Application.ReadWrite.All", - "Domain.ReadWrite.All", - "Group.ReadWrite.All", - ], - tenant_id=self.config.shm.entra_tenant_id, - ) verification_record = graph_api.add_custom_domain(self.config.shm.fqdn) # Add the record to DNS self.azure_sdk.ensure_dns_txt_record( @@ -142,6 +143,21 @@ def deploy(self) -> None: except (DataSafeHavenMicrosoftGraphError, DataSafeHavenAzureError) as exc: msg = f"Failed to add custom domain '{self.config.shm.fqdn}' to Entra ID." raise DataSafeHavenAzureError(msg) from exc + # Create an application for use by the pulumi-azuread module + try: + application_name = f"Data Safe Haven ({self.context.description}) Pulumi Service Principal" + graph_api.create_application( + application_name, + application_scopes=["Group.ReadWrite.All"], + delegated_scopes=[], + request_json={ + "displayName": application_name, + "signInAudience": "AzureADMyOrg", + }, + ) + except DataSafeHavenMicrosoftGraphError as exc: + msg = f"Failed to create deployment application in Entra ID." + raise DataSafeHavenAzureError(msg) from exc def teardown(self) -> None: """Destroy all created resources From 5d8fbd66a8c299769578911233970f89459a98ec Mon Sep 17 00:00:00 2001 From: James Robinson Date: Tue, 27 Aug 2024 12:15:59 +0100 Subject: [PATCH 063/302] :loud_sound: Better logging for domain delegation --- data_safe_haven/external/api/graph_api.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/data_safe_haven/external/api/graph_api.py b/data_safe_haven/external/api/graph_api.py index 70a3f298aa..17b97295bd 100644 --- a/data_safe_haven/external/api/graph_api.py +++ b/data_safe_haven/external/api/graph_api.py @@ -1060,17 +1060,17 @@ def verify_custom_domain( DataSafeHavenMicrosoftGraphError if domain could not be verified """ try: - # Create the Entra custom domain if it does not already exist + # Check whether the domain has been added to Entra ID domains = self.read_domains() if not any(d["id"] == domain_name for d in domains): msg = f"Domain {domain_name} has not been added to Entra ID." raise DataSafeHavenMicrosoftGraphError(msg) - # Wait until domain delegation is complete + # Loop until domain delegation is complete while True: # Check whether all expected nameservers are active with suppress(resolver.NXDOMAIN): self.logger.debug( - f"Checking [green]{domain_name}[/] domain verification status ..." + f"Checking [green]{domain_name}[/] domain registration status ..." ) active_nameservers = [ str(ns) for ns in iter(resolver.resolve(domain_name, "NS")) @@ -1080,11 +1080,11 @@ def verify_custom_domain( for nameserver in expected_nameservers ): self.logger.info( - f"Verified that domain [green]{domain_name}[/] is delegated to Azure." + f"Verified that [green]{domain_name}[/] is registered as a custom Entra ID domain." ) break self.logger.warning( - f"Domain [green]{domain_name}[/] is not currently delegated to Azure." + f"Domain [green]{domain_name}[/] is not currently registered as a custom Entra ID domain." ) # Prompt user to set domain delegation manually docs_link = "https://learn.microsoft.com/en-us/azure/dns/dns-delegate-domain-azure-dns#delegate-the-domain" @@ -1093,15 +1093,13 @@ def verify_custom_domain( ) ns_list = ", ".join([f"[green]{n}[/]" for n in expected_nameservers]) self.logger.info( - f"You will need to create an NS record pointing to: {ns_list}" + f"You will need to create NS records pointing to: {ns_list}" ) if not console.confirm( f"Are you ready to check whether [green]{domain_name}[/] has been delegated to Azure?", default_to_yes=True, ): - self.logger.error( - "Please use `az login` to connect to the correct Azure CLI account" - ) + self.logger.error("User terminated check for domain delegation.") raise typer.Exit(1) # Send verification request if needed if not any((d["id"] == domain_name and d["isVerified"]) for d in domains): From f4e6293bf107448fa697f33f0cb478880921a53f Mon Sep 17 00:00:00 2001 From: James Robinson Date: Tue, 27 Aug 2024 14:29:33 +0100 Subject: [PATCH 064/302] :wrench: Move Entra application name to context --- data_safe_haven/config/context.py | 48 ++++++++++--------- .../infrastructure/programs/imperative_shm.py | 5 +- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/data_safe_haven/config/context.py b/data_safe_haven/config/context.py index 426795bf93..dd939dece1 100644 --- a/data_safe_haven/config/context.py +++ b/data_safe_haven/config/context.py @@ -27,28 +27,8 @@ class Context(ContextBase, BaseModel, validate_assignment=True): _pulumi_encryption_key = None @property - def tags(self) -> dict[str, str]: - return { - "description": self.description, - "project": "Data Safe Haven", - "shm_name": self.name, - "version": __version__, - } - - @property - def work_directory(self) -> Path: - return config_dir() / self.name - - @property - def resource_group_name(self) -> str: - return f"shm-{self.name}-rg" - - @property - def storage_account_name(self) -> str: - # https://learn.microsoft.com/en-us/azure/storage/common/storage-account-overview#storage-account-name - # Storage account names must be between 3 and 24 characters in length and may - # contain numbers and lowercase letters only. - return f"shm{alphanumeric(self.name)[:21]}" + def entra_application_name(self) -> str: + return f"Data Safe Haven ({self.description}) Pulumi Service Principal" @property def key_vault_name(self) -> str: @@ -83,5 +63,29 @@ def pulumi_encryption_key_version(self) -> str: def pulumi_secrets_provider_url(self) -> str: return f"azurekeyvault://{self.key_vault_name}.vault.azure.net/keys/{self.pulumi_encryption_key_name}/{self.pulumi_encryption_key_version}" + @property + def resource_group_name(self) -> str: + return f"shm-{self.name}-rg" + + @property + def storage_account_name(self) -> str: + # https://learn.microsoft.com/en-us/azure/storage/common/storage-account-overview#storage-account-name + # Storage account names must be between 3 and 24 characters in length and may + # contain numbers and lowercase letters only. + return f"shm{alphanumeric(self.name)[:21]}" + + @property + def tags(self) -> dict[str, str]: + return { + "description": self.description, + "project": "Data Safe Haven", + "shm_name": self.name, + "version": __version__, + } + + @property + def work_directory(self) -> Path: + return config_dir() / self.name + def to_yaml(self) -> str: return yaml.dump(self.model_dump(), indent=2) diff --git a/data_safe_haven/infrastructure/programs/imperative_shm.py b/data_safe_haven/infrastructure/programs/imperative_shm.py index a594b6dae2..cc294b41fe 100644 --- a/data_safe_haven/infrastructure/programs/imperative_shm.py +++ b/data_safe_haven/infrastructure/programs/imperative_shm.py @@ -145,13 +145,12 @@ def deploy(self) -> None: raise DataSafeHavenAzureError(msg) from exc # Create an application for use by the pulumi-azuread module try: - application_name = f"Data Safe Haven ({self.context.description}) Pulumi Service Principal" graph_api.create_application( - application_name, + self.context.entra_application_name, application_scopes=["Group.ReadWrite.All"], delegated_scopes=[], request_json={ - "displayName": application_name, + "displayName": self.context.entra_application_name, "signInAudience": "AzureADMyOrg", }, ) From 6e44311dba43a2b92912848ed00b0cad13bc21e3 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Tue, 27 Aug 2024 15:48:28 +0100 Subject: [PATCH 065/302] :sparkles: Add set_keyvault_secret function to AzureSdk --- data_safe_haven/external/api/azure_sdk.py | 38 +++++++++++++++++++++-- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/data_safe_haven/external/api/azure_sdk.py b/data_safe_haven/external/api/azure_sdk.py index 1e816dfc13..034ee55a63 100644 --- a/data_safe_haven/external/api/azure_sdk.py +++ b/data_safe_haven/external/api/azure_sdk.py @@ -14,7 +14,7 @@ ) from azure.keyvault.certificates import CertificateClient, KeyVaultCertificate from azure.keyvault.keys import KeyClient, KeyVaultKey -from azure.keyvault.secrets import SecretClient +from azure.keyvault.secrets import KeyVaultSecret, SecretClient from azure.mgmt.compute.v2021_07_01 import ComputeManagementClient from azure.mgmt.compute.v2021_07_01.models import ( ResourceSkuCapabilities, @@ -447,7 +447,7 @@ def ensure_keyvault_key( """Ensure that a key exists in the KeyVault Returns: - str: The key ID + KeyVaultKey: The key Raises: DataSafeHavenAzureError if the existence of the key could not be verified @@ -472,7 +472,7 @@ def ensure_keyvault_key( ) return key except AzureError as exc: - msg = f"Failed to create key {key_name}." + msg = f"Failed to create key '{key_name}' in KeyVault '{key_vault_name}'." raise DataSafeHavenAzureError(msg) from exc def ensure_managed_identity( @@ -1283,6 +1283,38 @@ def set_blob_container_acl( msg = f"Failed to set ACL '{desired_acl}' on container '{container_name}'." raise DataSafeHavenAzureError(msg) from exc + def set_keyvault_secret( + self, + secret_name: str, + secret_value: str, + key_vault_name: str, + ) -> KeyVaultSecret: + """Ensure that a secret exists in the KeyVault + + Returns: + KeyVaultSecret: The secret + + Raises: + DataSafeHavenAzureError if the secret could not be set + """ + try: + # Connect to Azure clients + secret_client = SecretClient( + credential=self.credential(AzureSdkCredentialScope.KEY_VAULT), + vault_url=f"https://{key_vault_name}.vault.azure.net", + ) + + # Set secret to given value + self.logger.debug(f"Setting secret [green]{secret_name}[/]...") + secret = secret_client.set_secret(secret_name, secret_value) + self.logger.info(f"Set secret [green]{secret_name}[/].") + return secret + except AzureError as exc: + msg = ( + f"Failed to set secret '{secret_name}' in KeyVault '{key_vault_name}'." + ) + raise DataSafeHavenAzureError(msg) from exc + def storage_exists( self, storage_account_name: str, From 021ca4ea9d1cc229eaa4fab83ad2f32f3bdeb1ac Mon Sep 17 00:00:00 2001 From: James Robinson Date: Wed, 28 Aug 2024 11:54:48 +0100 Subject: [PATCH 066/302] :sparkles: Add entra_application_secret property to context --- data_safe_haven/config/context.py | 27 +++++++++++++++++++ data_safe_haven/external/api/azure_sdk.py | 2 +- .../infrastructure/programs/imperative_shm.py | 10 ++++++- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/data_safe_haven/config/context.py b/data_safe_haven/config/context.py index dd939dece1..36daa6e035 100644 --- a/data_safe_haven/config/context.py +++ b/data_safe_haven/config/context.py @@ -9,6 +9,7 @@ from data_safe_haven import __version__ from data_safe_haven.directories import config_dir +from data_safe_haven.exceptions import DataSafeHavenAzureError from data_safe_haven.external import AzureSdk from data_safe_haven.functions import alphanumeric from data_safe_haven.serialisers import ContextBase @@ -23,13 +24,39 @@ class Context(ContextBase, BaseModel, validate_assignment=True): storage_container_name: ClassVar[str] = "config" pulumi_storage_container_name: ClassVar[str] = "pulumi" pulumi_encryption_key_name: ClassVar[str] = "pulumi-encryption-key" + entra_application_secret_name: ClassVar[str] = "Pulumi Deployment Secret" + entra_application_kvsecret_name: ClassVar[str] = "pulumi-deployment-secret" _pulumi_encryption_key = None + _entra_application_secret = None @property def entra_application_name(self) -> str: return f"Data Safe Haven ({self.description}) Pulumi Service Principal" + @property + def entra_application_secret(self) -> str: + if not self._entra_application_secret: + azure_sdk = AzureSdk(subscription_name=self.subscription_name) + try: + application_secret = azure_sdk.get_keyvault_secret( + secret_name=self.entra_application_kvsecret_name, + key_vault_name=self.key_vault_name, + ) + self._entra_application_secret = application_secret + except DataSafeHavenAzureError: + return "" + return self._entra_application_secret + + @entra_application_secret.setter + def entra_application_secret(self, application_secret: str): + azure_sdk = AzureSdk(subscription_name=self.subscription_name) + azure_sdk.set_keyvault_secret( + secret_name=self.entra_application_kvsecret_name, + secret_value=application_secret, + key_vault_name=self.key_vault_name, + ) + @property def key_vault_name(self) -> str: # maximum of 24 characters allowed diff --git a/data_safe_haven/external/api/azure_sdk.py b/data_safe_haven/external/api/azure_sdk.py index 034ee55a63..6b64fcb6dc 100644 --- a/data_safe_haven/external/api/azure_sdk.py +++ b/data_safe_haven/external/api/azure_sdk.py @@ -689,7 +689,7 @@ def get_keyvault_secret(self, key_vault_name: str, secret_name: str) -> str: credential=self.credential(AzureSdkCredentialScope.KEY_VAULT), vault_url=f"https://{key_vault_name}.vault.azure.net", ) - # Ensure that secret exists + # Get secret if it exists try: secret = secret_client.get_secret(secret_name) if secret.value: diff --git a/data_safe_haven/infrastructure/programs/imperative_shm.py b/data_safe_haven/infrastructure/programs/imperative_shm.py index cc294b41fe..73893bff61 100644 --- a/data_safe_haven/infrastructure/programs/imperative_shm.py +++ b/data_safe_haven/infrastructure/programs/imperative_shm.py @@ -154,8 +154,16 @@ def deploy(self) -> None: "signInAudience": "AzureADMyOrg", }, ) + # Ensure that the application secret exists + if not self.context.entra_application_secret: + self.context.entra_application_secret = ( + graph_api.create_application_secret( + self.context.entra_application_name, + self.context.entra_application_secret_name, + ) + ) except DataSafeHavenMicrosoftGraphError as exc: - msg = f"Failed to create deployment application in Entra ID." + msg = "Failed to create deployment application in Entra ID." raise DataSafeHavenAzureError(msg) from exc def teardown(self) -> None: From d04e5e1c1518dd4a6d04c9da709f3cf594bcd079 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Wed, 28 Aug 2024 14:27:18 +0100 Subject: [PATCH 067/302] :sparkles: Add an Entra component --- data_safe_haven/commands/sre.py | 12 ++++++ .../programs/declarative_sre.py | 9 +++++ .../infrastructure/programs/sre/entra.py | 40 +++++++++++++++++++ .../infrastructure/project_manager.py | 4 ++ 4 files changed, 65 insertions(+) create mode 100644 data_safe_haven/infrastructure/programs/sre/entra.py diff --git a/data_safe_haven/commands/sre.py b/data_safe_haven/commands/sre.py index f37b7257ac..9ee82d0152 100644 --- a/data_safe_haven/commands/sre.py +++ b/data_safe_haven/commands/sre.py @@ -83,6 +83,18 @@ def deploy( stack.add_option( "azure-native:tenantId", sre_config.azure.tenant_id, replace=False ) + # Set Entra options + application = graph_api.get_application_by_name(context.entra_application_name) + stack.add_option("azuread:clientId", application["appId"], replace=True) + if not context.entra_application_secret: + msg = f"No Entra '{context.entra_application_secret_name}' was found. Please redeploy your SHM." + raise DataSafeHavenConfigError(msg) + stack.add_secret( + "azuread:clientSecret", context.entra_application_secret, replace=True + ) + stack.add_option( + "azuread:tenantId", shm_config.shm.entra_tenant_id, replace=True + ) # Load SHM outputs stack.add_option( "shm-admin-group-id", diff --git a/data_safe_haven/infrastructure/programs/declarative_sre.py b/data_safe_haven/infrastructure/programs/declarative_sre.py index c1525e4ed8..0aa7215767 100644 --- a/data_safe_haven/infrastructure/programs/declarative_sre.py +++ b/data_safe_haven/infrastructure/programs/declarative_sre.py @@ -18,6 +18,7 @@ from .sre.data import SREDataComponent, SREDataProps from .sre.desired_state import SREDesiredStateComponent, SREDesiredStateProps from .sre.dns_server import SREDnsServerComponent, SREDnsServerProps +from .sre.entra import SREEntraComponent, SREEntraProps from .sre.firewall import SREFirewallComponent, SREFirewallProps from .sre.identity import SREIdentityComponent, SREIdentityProps from .sre.monitoring import SREMonitoringComponent, SREMonitoringProps @@ -108,6 +109,14 @@ def __call__(self) -> None: ] ) + # Deploy Entra resources + SREEntraComponent( + "sre_entra", + SREEntraProps( + group_names=ldap_group_names, + ), + ) + # Deploy resource group resource_group = resources.ResourceGroup( "sre_resource_group", diff --git a/data_safe_haven/infrastructure/programs/sre/entra.py b/data_safe_haven/infrastructure/programs/sre/entra.py new file mode 100644 index 0000000000..1f44995f9f --- /dev/null +++ b/data_safe_haven/infrastructure/programs/sre/entra.py @@ -0,0 +1,40 @@ +"""Pulumi component for SRE Entra resources""" + +from collections.abc import Mapping + +from pulumi import ComponentResource, ResourceOptions +from pulumi_azuread import Group + +from data_safe_haven.functions import replace_separators + + +class SREEntraProps: + """Properties for SREEntraComponent""" + + def __init__( + self, + group_names: Mapping[str, str], + ) -> None: + self.group_names = group_names + + +class SREEntraComponent(ComponentResource): + """Deploy SRE Entra resources with Pulumi""" + + def __init__( + self, + name: str, + props: SREEntraProps, + opts: ResourceOptions | None = None, + ) -> None: + super().__init__("dsh:sre:EntraComponent", name, {}, opts) + + for group_id, group_description in props.group_names.items(): + Group( + replace_separators(f"{self._name}_group_{group_id}", "_"), + description=group_description, + display_name=group_description, + mail_enabled=False, + prevent_duplicate_names=True, + security_enabled=True, + ) diff --git a/data_safe_haven/infrastructure/project_manager.py b/data_safe_haven/infrastructure/project_manager.py index f9706ec096..dcb3941af2 100644 --- a/data_safe_haven/infrastructure/project_manager.py +++ b/data_safe_haven/infrastructure/project_manager.py @@ -146,6 +146,10 @@ def add_option(self, name: str, value: str, *, replace: bool) -> None: """Add a public configuration option""" self._options[name] = (value, False, replace) + def add_secret(self, name: str, value: str, *, replace: bool) -> None: + """Add a secret configuration option""" + self._options[name] = (value, True, replace) + def apply_config_options(self) -> None: """Set Pulumi config options""" try: From 51e82edeb21e854ee85c1fb2a38d7909d32c307f Mon Sep 17 00:00:00 2001 From: James Robinson Date: Wed, 28 Aug 2024 14:27:43 +0100 Subject: [PATCH 068/302] :coffin: Remove security group creation from SRE provisioning --- data_safe_haven/external/api/graph_api.py | 35 ------------------- .../provisioning/sre_provisioning_manager.py | 6 ---- 2 files changed, 41 deletions(-) diff --git a/data_safe_haven/external/api/graph_api.py b/data_safe_haven/external/api/graph_api.py index 17b97295bd..20201a4919 100644 --- a/data_safe_haven/external/api/graph_api.py +++ b/data_safe_haven/external/api/graph_api.py @@ -16,7 +16,6 @@ DataSafeHavenMicrosoftGraphError, DataSafeHavenValueError, ) -from data_safe_haven.functions import alphanumeric from data_safe_haven.logging import get_logger, get_null_logger from .credentials import DeferredCredential, GraphApiCredential @@ -314,40 +313,6 @@ def create_application_secret( msg = f"Could not create application secret '{application_secret_name}'." raise DataSafeHavenMicrosoftGraphError(msg) from exc - def create_group(self, group_name: str) -> None: - """Create an Entra group if it does not already exist - - Raises: - DataSafeHavenMicrosoftGraphError if the group could not be created - """ - try: - if self.get_id_from_groupname(group_name): - self.logger.info( - f"Found existing Entra group '[green]{group_name}[/]'.", - ) - return - self.logger.debug( - f"Creating Entra group '[green]{group_name}[/]'...", - ) - request_json = { - "description": group_name, - "displayName": group_name, - "groupTypes": [], - "mailEnabled": False, - "mailNickname": alphanumeric(group_name).lower(), - "securityEnabled": True, - } - self.http_post( - f"{self.base_endpoint}/groups", - json=request_json, - ).json() - self.logger.info( - f"Created Entra group '[green]{group_name}[/]'.", - ) - except Exception as exc: - msg = f"Could not create Entra group '{group_name}'." - raise DataSafeHavenMicrosoftGraphError(msg) from exc - def ensure_application_service_principal( self, application_name: str ) -> dict[str, Any]: diff --git a/data_safe_haven/provisioning/sre_provisioning_manager.py b/data_safe_haven/provisioning/sre_provisioning_manager.py index 1111bc573f..7c39046b86 100644 --- a/data_safe_haven/provisioning/sre_provisioning_manager.py +++ b/data_safe_haven/provisioning/sre_provisioning_manager.py @@ -71,11 +71,6 @@ def available_vm_skus(self) -> dict[str, dict[str, Any]]: self._available_vm_skus = azure_sdk.list_available_vm_skus(self.location) return self._available_vm_skus - def create_security_groups(self) -> None: - """Create groups in Entra ID""" - for group_name in self.security_group_params.values(): - self.graph_api.create_group(group_name) - def restart_remote_desktop_containers(self) -> None: """Restart the Guacamole container group""" guacamole_provisioner = AzureContainerInstance( @@ -137,6 +132,5 @@ def update_remote_desktop_connections(self) -> None: def run(self) -> None: """Apply SRE configuration""" - self.create_security_groups() self.update_remote_desktop_connections() self.restart_remote_desktop_containers() From 8a81de4778a209b8c00a348bad406a6181d3e38b Mon Sep 17 00:00:00 2001 From: James Robinson Date: Wed, 28 Aug 2024 14:36:11 +0100 Subject: [PATCH 069/302] :rotating_light: Fix linting and docstrings --- data_safe_haven/commands/sre.py | 7 +++++-- data_safe_haven/config/context.py | 15 +++++++++------ data_safe_haven/config/dsh_pulumi_config.py | 1 + data_safe_haven/config/shm_config.py | 3 +++ data_safe_haven/config/sre_config.py | 3 +++ pyproject.toml | 1 + 6 files changed, 22 insertions(+), 8 deletions(-) diff --git a/data_safe_haven/commands/sre.py b/data_safe_haven/commands/sre.py index 9ee82d0152..8f7d5c8d8c 100644 --- a/data_safe_haven/commands/sre.py +++ b/data_safe_haven/commands/sre.py @@ -85,9 +85,12 @@ def deploy( ) # Set Entra options application = graph_api.get_application_by_name(context.entra_application_name) - stack.add_option("azuread:clientId", application["appId"], replace=True) + if not application: + msg = f"No Entra application '{context.entra_application_name}' was found. Please redeploy your SHM." + raise DataSafeHavenConfigError(msg) + stack.add_option("azuread:clientId", application.get("appId", ""), replace=True) if not context.entra_application_secret: - msg = f"No Entra '{context.entra_application_secret_name}' was found. Please redeploy your SHM." + msg = f"No Entra application secret '{context.entra_application_secret_name}' was found. Please redeploy your SHM." raise DataSafeHavenConfigError(msg) stack.add_secret( "azuread:clientSecret", context.entra_application_secret, replace=True diff --git a/data_safe_haven/config/context.py b/data_safe_haven/config/context.py index 36daa6e035..cadd875260 100644 --- a/data_safe_haven/config/context.py +++ b/data_safe_haven/config/context.py @@ -17,15 +17,18 @@ class Context(ContextBase, BaseModel, validate_assignment=True): + """Context for a Data Safe Haven deployment.""" + + entra_application_kvsecret_name: ClassVar[str] = "pulumi-deployment-secret" + entra_application_secret_name: ClassVar[str] = "Pulumi Deployment Secret" + pulumi_encryption_key_name: ClassVar[str] = "pulumi-encryption-key" + pulumi_storage_container_name: ClassVar[str] = "pulumi" + storage_container_name: ClassVar[str] = "config" + admin_group_name: EntraGroupName description: str name: SafeString subscription_name: AzureSubscriptionName - storage_container_name: ClassVar[str] = "config" - pulumi_storage_container_name: ClassVar[str] = "pulumi" - pulumi_encryption_key_name: ClassVar[str] = "pulumi-encryption-key" - entra_application_secret_name: ClassVar[str] = "Pulumi Deployment Secret" - entra_application_kvsecret_name: ClassVar[str] = "pulumi-deployment-secret" _pulumi_encryption_key = None _entra_application_secret = None @@ -49,7 +52,7 @@ def entra_application_secret(self) -> str: return self._entra_application_secret @entra_application_secret.setter - def entra_application_secret(self, application_secret: str): + def entra_application_secret(self, application_secret: str) -> None: azure_sdk = AzureSdk(subscription_name=self.subscription_name) azure_sdk.set_keyvault_secret( secret_name=self.entra_application_kvsecret_name, diff --git a/data_safe_haven/config/dsh_pulumi_config.py b/data_safe_haven/config/dsh_pulumi_config.py index 63581d31dd..1aae87996c 100644 --- a/data_safe_haven/config/dsh_pulumi_config.py +++ b/data_safe_haven/config/dsh_pulumi_config.py @@ -12,6 +12,7 @@ class DSHPulumiConfig(AzureSerialisableModel): config_type: ClassVar[str] = "Pulumi" default_filename: ClassVar[str] = "pulumi.yaml" + encrypted_key: str | None projects: dict[str, DSHPulumiProject] diff --git a/data_safe_haven/config/shm_config.py b/data_safe_haven/config/shm_config.py index 0c48f41cdf..a32d06ed57 100644 --- a/data_safe_haven/config/shm_config.py +++ b/data_safe_haven/config/shm_config.py @@ -12,8 +12,11 @@ class SHMConfig(AzureSerialisableModel): + """Serialisable config for a Data Safe Haven management component.""" + config_type: ClassVar[str] = "SHMConfig" default_filename: ClassVar[str] = "shm.yaml" + azure: ConfigSectionAzure shm: ConfigSectionSHM diff --git a/data_safe_haven/config/sre_config.py b/data_safe_haven/config/sre_config.py index 5a5d6367e1..f4ee5ed6c9 100644 --- a/data_safe_haven/config/sre_config.py +++ b/data_safe_haven/config/sre_config.py @@ -23,8 +23,11 @@ def sre_config_name(sre_name: str) -> str: class SREConfig(AzureSerialisableModel): + """Serialisable config for a secure research environment component.""" + config_type: ClassVar[str] = "SREConfig" default_filename: ClassVar[str] = "sre.yaml" + azure: ConfigSectionAzure description: str dockerhub: ConfigSectionDockerHub diff --git a/pyproject.toml b/pyproject.toml index e4e2b8e9f4..098f8b06be 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -184,6 +184,7 @@ module = [ "numpy.*", "psycopg.*", "pulumi_azure_native.*", + "pulumi_azuread.*", "pulumi_random.*", "pulumi.*", "pymssql.*", From 210b273c27976c56f329b0e9cd3879aa091860b9 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Wed, 28 Aug 2024 15:30:55 +0100 Subject: [PATCH 070/302] :white_check_mark: Fix breaking tests --- tests/commands/conftest.py | 15 +++++++++++++++ tests/commands/test_sre.py | 2 ++ tests/conftest.py | 1 + 3 files changed, 18 insertions(+) diff --git a/tests/commands/conftest.py b/tests/commands/conftest.py index 6459c84d6c..e1b35d2aa1 100644 --- a/tests/commands/conftest.py +++ b/tests/commands/conftest.py @@ -26,6 +26,12 @@ def mock_azure_sdk_blob_exists_false(mocker): mocker.patch.object(AzureSdk, "blob_exists", return_value=False) +@fixture +def mock_contextmanager_assert_context(mocker, context) -> Context: + context._entra_application_secret = "dummy-secret" # noqa: S105 + mocker.patch.object(ContextManager, "assert_context", return_value=context) + + @fixture def mock_graph_api_add_custom_domain(mocker): mocker.patch.object( @@ -33,6 +39,15 @@ def mock_graph_api_add_custom_domain(mocker): ) +@fixture +def mock_graph_api_get_application_by_name(mocker, request): + mocker.patch.object( + GraphApi, + "get_application_by_name", + return_value={"appId": request.config.guid_application}, + ) + + @fixture def mock_graph_api_token(mocker): mocker.patch.object(GraphApi, "token", return_value="dummy-token") diff --git a/tests/commands/test_sre.py b/tests/commands/test_sre.py index dd6a9fba05..3594268dc8 100644 --- a/tests/commands/test_sre.py +++ b/tests/commands/test_sre.py @@ -6,11 +6,13 @@ def test_deploy( self, runner, mock_graph_api_token, # noqa: ARG002 + mock_contextmanager_assert_context, # noqa: ARG002 mock_ip_1_2_3_4, # noqa: ARG002 mock_pulumi_config_from_remote_or_create, # noqa: ARG002 mock_pulumi_config_upload, # noqa: ARG002 mock_shm_config_from_remote, # noqa: ARG002 mock_sre_config_from_remote, # noqa: ARG002 + mock_graph_api_get_application_by_name, # noqa: ARG002 mock_sre_project_manager_deploy_then_exit, # noqa: ARG002 ): result = runner.invoke(sre_command_group, ["deploy", "sandbox"]) diff --git a/tests/conftest.py b/tests/conftest.py index 055ee0ad47..4a953c408e 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -38,6 +38,7 @@ def pytest_configure(config): """Define constants for use across multiple tests""" config.guid_admin = "00edec65-b071-4d26-8779-a9fe791c6e14" + config.guid_application = "aa78dceb-4116-4713-8554-cf2b3027e119" config.guid_entra = "48b2425b-5f2c-4cbd-9458-0441daa8994c" config.guid_subscription = "35ebced1-4e7a-4c1f-b634-c0886937085d" config.guid_tenant = "d5c5c439-1115-4cb6-ab50-b8e547b6c8dd" From d74d299e5c9b4fd22c781f0cb393d5620ffd1a6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2024 09:54:24 +0000 Subject: [PATCH 071/302] :arrow_up: Bump typer from 0.12.4 to 0.12.5 Bumps [typer](https://github.com/fastapi/typer) from 0.12.4 to 0.12.5. - [Release notes](https://github.com/fastapi/typer/releases) - [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md) - [Commits](https://github.com/fastapi/typer/compare/0.12.4...0.12.5) --- updated-dependencies: - dependency-name: typer dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d4dcdafb51..64747cd31a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,7 @@ dependencies = [ "pyyaml==6.0.2", "rich==13.7.1", "simple-acme-dns==3.1.0", - "typer==0.12.4", + "typer==0.12.5", "websocket-client==1.8.0", ] From f158a5912dfc2158ef5378e458b5a5c69e0d4bc2 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 29 Aug 2024 11:26:39 +0100 Subject: [PATCH 072/302] :wrench: Add a GitHub action to update Dependabot PRs --- .github/workflows/dependabot_amend.yaml | 46 +++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 .github/workflows/dependabot_amend.yaml diff --git a/.github/workflows/dependabot_amend.yaml b/.github/workflows/dependabot_amend.yaml new file mode 100644 index 0000000000..4064ab08ba --- /dev/null +++ b/.github/workflows/dependabot_amend.yaml @@ -0,0 +1,46 @@ +--- +name: Amend Dependabot PRs + +on: # yamllint disable-line rule:truthy + push: + branches: + - dependabot/pip/** + pull_request: + branches: + - dependabot/pip/** + workflow_dispatch: # allow this workflow to be manually triggered + +# checkout needs 'contents:read' +# pull request needs 'pull-requests:write' and 'contents:write' +permissions: + contents: write + pull-requests: write + +jobs: + amend_dependabot_prs: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + + - name: Install hatch + run: pip install hatch + + - name: Update hatch requirements + run: | + rm .hatch/requirements*.txt + hatch run true + hatch -e docs run true + hatch -e lint run true + hatch -e test run true + + - name: Commit changes + uses: stefanzweifel/git-auto-commit-action@v5.0.1 + with: + commit_message: "[dependabot skip] :wrench: Update Python requirements files" + branch: ${{ github.head_ref }} From 75708d8f3e5271e7032a1e651d6627533e125ad4 Mon Sep 17 00:00:00 2001 From: jemrobinson Date: Thu, 29 Aug 2024 10:47:54 +0000 Subject: [PATCH 073/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-docs.txt | 2 +- .hatch/requirements-lint.txt | 8 ++++---- .hatch/requirements-test.txt | 8 ++++---- .hatch/requirements.txt | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.hatch/requirements-docs.txt b/.hatch/requirements-docs.txt index 1831f0b013..99be3ccc8c 100644 --- a/.hatch/requirements-docs.txt +++ b/.hatch/requirements-docs.txt @@ -30,7 +30,7 @@ docutils==0.21.2 # sphinx-togglebutton emoji==2.12.1 # via hatch.envs.docs -idna==3.7 +idna==3.8 # via requests imagesize==1.4.1 # via sphinx diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index f89d7602fe..9742155331 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -36,7 +36,7 @@ ansible-core==2.17.3 # ansible-lint # molecule # pytest-ansible -ansible-creator==24.7.1 +ansible-creator==24.8.0 # via ansible-dev-tools ansible-dev-environment==24.7.0 # via ansible-dev-tools @@ -162,7 +162,7 @@ pathspec==0.12.1 # ansible-lint # black # yamllint -pbr==6.0.0 +pbr==6.1.0 # via bindep pexpect==4.9.0 # via ansible-runner @@ -222,7 +222,7 @@ referencing==0.35.1 # jsonschema-specifications resolvelib==1.0.1 # via ansible-core -rich==13.7.1 +rich==13.8.0 # via # ansible-lint # enrich @@ -275,7 +275,7 @@ wcmatch==9.0 # molecule yamllint==1.35.1 # via ansible-lint -zipp==3.20.0 +zipp==3.20.1 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index 828d0fb427..8e8e3f29f0 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -1,7 +1,7 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# [constraints] .hatch/requirements.txt (SHA256: c343379df562adfb8afb50de03a572532da0b429432e9ab3c3f2703c04c0f8aa) +# [constraints] .hatch/requirements.txt (SHA256: b19ab9ee59eac52a338570d2169fec8b0e6537110fbf8852f03ee7a23c0399f5) # # - appdirs==1.4.4 # - azure-core==1.30.2 @@ -33,7 +33,7 @@ # - pyyaml==6.0.2 # - rich==13.7.1 # - simple-acme-dns==3.1.0 -# - typer==0.12.4 +# - typer==0.12.5 # - websocket-client==1.8.0 # - coverage==7.5.4 # - freezegun==1.5.1 @@ -212,7 +212,7 @@ grpcio==1.60.2 # via # -c .hatch/requirements.txt # pulumi -idna==3.7 +idna==3.8 # via # -c .hatch/requirements.txt # requests @@ -389,7 +389,7 @@ six==1.16.0 # isodate # pulumi # python-dateutil -typer==0.12.4 +typer==0.12.5 # via # -c .hatch/requirements.txt # hatch.envs.test diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt index 8ef5b1358f..20a3316565 100644 --- a/.hatch/requirements.txt +++ b/.hatch/requirements.txt @@ -31,7 +31,7 @@ # - pyyaml==6.0.2 # - rich==13.7.1 # - simple-acme-dns==3.1.0 -# - typer==0.12.4 +# - typer==0.12.5 # - websocket-client==1.8.0 # @@ -141,7 +141,7 @@ fqdn==1.5.1 # via hatch.envs.default grpcio==1.60.2 # via pulumi -idna==3.7 +idna==3.8 # via requests isodate==0.6.1 # via @@ -249,7 +249,7 @@ six==1.16.0 # azure-core # isodate # pulumi -typer==0.12.4 +typer==0.12.5 # via hatch.envs.default typing-extensions==4.12.2 # via From e22bb6b9eff1e534c572fcc1ce901bfe4b1be791 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2024 10:54:04 +0000 Subject: [PATCH 074/302] :arrow_up: Bump black from 24.4.2 to 24.8.0 Bumps [black](https://github.com/psf/black) from 24.4.2 to 24.8.0. - [Release notes](https://github.com/psf/black/releases) - [Changelog](https://github.com/psf/black/blob/main/CHANGES.md) - [Commits](https://github.com/psf/black/compare/24.4.2...24.8.0) --- updated-dependencies: - dependency-name: black dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 64747cd31a..98249321c2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -57,7 +57,7 @@ docs = [ lint = [ "ansible-dev-tools==24.7.2", "ansible==10.2.0", - "black==24.4.2", + "black==24.8.0", "mypy==1.10.1", "pandas-stubs==2.2.2.240807", "pydantic==2.8.2", From 43502d2552077ed011fd2ee0fed7719dce94c6df Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2024 10:54:20 +0000 Subject: [PATCH 075/302] :arrow_up: Bump types-requests from 2.32.0.20240622 to 2.32.0.20240712 Bumps [types-requests](https://github.com/python/typeshed) from 2.32.0.20240622 to 2.32.0.20240712. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-requests dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 64747cd31a..657838da2e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,7 +66,7 @@ lint = [ "types-chevron==0.14.2.20240310", "types-pytz==2024.1.0.20240417", "types-pyyaml==6.0.12.20240311", - "types-requests==2.32.0.20240622", + "types-requests==2.32.0.20240712", ] test = [ "coverage==7.5.4", From 893f76756e29966dd143c81cc5feecf87e27b483 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 29 Aug 2024 11:00:14 +0000 Subject: [PATCH 076/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-lint.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index 9742155331..e91ee3fdd7 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -3,7 +3,7 @@ # # - ansible-dev-tools==24.7.2 # - ansible==10.2.0 -# - black==24.4.2 +# - black==24.8.0 # - mypy==1.10.1 # - pandas-stubs==2.2.2.240807 # - pydantic==2.8.2 @@ -58,7 +58,7 @@ attrs==24.2.0 # referencing bindep==2.11.0 # via ansible-builder -black==24.4.2 +black==24.8.0 # via # hatch.envs.lint # ansible-lint From 16d622657f47f2db23bbd29f24ed04eab3cb62f8 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 29 Aug 2024 12:00:32 +0100 Subject: [PATCH 077/302] :memo: Add classifiers --- pyproject.toml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 64747cd31a..150991af38 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -9,7 +9,19 @@ description = "An open-source framework for creating secure environments to anal authors = [ { name = "Data Safe Haven development team", email = "safehavendevs@turing.ac.uk" }, ] +readme = "README.md" requires-python = "==3.12.*" +classifiers = [ + "Development Status :: 5 - Production/Stable", + "Environment :: Console", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: BSD License", + "Operating System :: OS Independent", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.12", + "Topic :: Security", + "Topic :: System :: Systems Administration", +] license = { text = "BSD-3-Clause" } dependencies = [ "appdirs==1.4.4", From c7a7a406ef2a57679fb45777695f13989b68dd4c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 29 Aug 2024 11:00:49 +0000 Subject: [PATCH 078/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-lint.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index 9742155331..0e3ceed669 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -12,7 +12,7 @@ # - types-chevron==0.14.2.20240310 # - types-pytz==2024.1.0.20240417 # - types-pyyaml==6.0.12.20240311 -# - types-requests==2.32.0.20240622 +# - types-requests==2.32.0.20240712 # annotated-types==0.7.0 @@ -256,7 +256,7 @@ types-pytz==2024.1.0.20240417 # pandas-stubs types-pyyaml==6.0.12.20240311 # via hatch.envs.lint -types-requests==2.32.0.20240622 +types-requests==2.32.0.20240712 # via hatch.envs.lint typing-extensions==4.12.2 # via From 3fa1326c81762e8d3f88bc3177e7a24a795d6be6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2024 11:04:33 +0000 Subject: [PATCH 079/302] :arrow_up: Bump ruff from 0.5.0 to 0.6.2 Bumps [ruff](https://github.com/astral-sh/ruff) from 0.5.0 to 0.6.2. - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.5.0...0.6.2) --- updated-dependencies: - dependency-name: ruff dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 33f688a7ba..a2951cbf98 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -61,7 +61,7 @@ lint = [ "mypy==1.10.1", "pandas-stubs==2.2.2.240807", "pydantic==2.8.2", - "ruff==0.5.0", + "ruff==0.6.2", "types-appdirs==1.4.3.5", "types-chevron==0.14.2.20240310", "types-pytz==2024.1.0.20240417", From fc831ee76e377068593e739d80baca5c9bb10d1b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2024 11:04:41 +0000 Subject: [PATCH 080/302] :arrow_up: Bump ansible-dev-tools from 24.7.2 to 24.8.0 Bumps [ansible-dev-tools](https://github.com/ansible/ansible-dev-tools) from 24.7.2 to 24.8.0. - [Release notes](https://github.com/ansible/ansible-dev-tools/releases) - [Commits](https://github.com/ansible/ansible-dev-tools/compare/v24.7.2...v24.8.0) --- updated-dependencies: - dependency-name: ansible-dev-tools dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 33f688a7ba..16d3ef039d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -55,7 +55,7 @@ docs = [ "sphinx==8.0.2", ] lint = [ - "ansible-dev-tools==24.7.2", + "ansible-dev-tools==24.8.0", "ansible==10.2.0", "black==24.8.0", "mypy==1.10.1", From d1398d4a99202f9302cf42173d88742e94ce7fa9 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 29 Aug 2024 12:10:19 +0100 Subject: [PATCH 081/302] :memo: Add project URLs --- pyproject.toml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pyproject.toml b/pyproject.toml index 150991af38..27f8bdfa11 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,6 +58,11 @@ dependencies = [ "websocket-client==1.8.0", ] +[project.urls] +Documentation = "https://data-safe-haven.readthedocs.io" +Issues = "https://github.com/alan-turing-institute/data-safe-haven/issues" +Source = "https://github.com/alan-turing-institute/data-safe-haven" + [project.optional-dependencies] docs = [ "emoji==2.12.1", From 803adf36cd17f3e23e395a88fb216ea70978fdd2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 29 Aug 2024 11:10:56 +0000 Subject: [PATCH 082/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-lint.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index ba090bca4a..681f694d7f 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -1,7 +1,7 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# - ansible-dev-tools==24.7.2 +# - ansible-dev-tools==24.8.0 # - ansible==10.2.0 # - black==24.8.0 # - mypy==1.10.1 @@ -40,7 +40,7 @@ ansible-creator==24.8.0 # via ansible-dev-tools ansible-dev-environment==24.7.0 # via ansible-dev-tools -ansible-dev-tools==24.7.2 +ansible-dev-tools==24.8.0 # via hatch.envs.lint ansible-lint==24.7.0 # via From ccf81142c575fae0be8aac66c05b1b40a710d7f9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 29 Aug 2024 11:10:58 +0000 Subject: [PATCH 083/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-lint.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index ba090bca4a..c9edb99241 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -7,7 +7,7 @@ # - mypy==1.10.1 # - pandas-stubs==2.2.2.240807 # - pydantic==2.8.2 -# - ruff==0.5.0 +# - ruff==0.6.2 # - types-appdirs==1.4.3.5 # - types-chevron==0.14.2.20240310 # - types-pytz==2024.1.0.20240417 @@ -235,7 +235,7 @@ ruamel-yaml==0.18.6 # via ansible-lint ruamel-yaml-clib==0.2.8 # via ruamel-yaml -ruff==0.5.0 +ruff==0.6.2 # via hatch.envs.lint subprocess-tee==0.4.2 # via From a2670f495dec0f72a2072ac5ac2aacd6e33969af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2024 11:17:54 +0000 Subject: [PATCH 084/302] :arrow_up: Bump rich from 13.7.1 to 13.8.0 Bumps [rich](https://github.com/Textualize/rich) from 13.7.1 to 13.8.0. - [Release notes](https://github.com/Textualize/rich/releases) - [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md) - [Commits](https://github.com/Textualize/rich/compare/v13.7.1...v13.8.0) --- updated-dependencies: - dependency-name: rich dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f5a384081e..038a9b93ec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -52,7 +52,7 @@ dependencies = [ "pyjwt[crypto]==2.9.0", "pytz==2024.1", "pyyaml==6.0.2", - "rich==13.7.1", + "rich==13.8.0", "simple-acme-dns==3.1.0", "typer==0.12.5", "websocket-client==1.8.0", From 136d98a034b2c4b15e7086accf792b847e7046c8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2024 11:18:01 +0000 Subject: [PATCH 085/302] :arrow_up: Bump coverage from 7.5.4 to 7.6.1 Bumps [coverage](https://github.com/nedbat/coveragepy) from 7.5.4 to 7.6.1. - [Release notes](https://github.com/nedbat/coveragepy/releases) - [Changelog](https://github.com/nedbat/coveragepy/blob/master/CHANGES.rst) - [Commits](https://github.com/nedbat/coveragepy/compare/7.5.4...7.6.1) --- updated-dependencies: - dependency-name: coverage dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f5a384081e..4d79dd8a68 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -86,7 +86,7 @@ lint = [ "types-requests==2.32.0.20240712", ] test = [ - "coverage==7.5.4", + "coverage==7.6.1", "freezegun==1.5.1", "pytest-mock==3.14.0", "pytest==8.2.2", From baa6342a5d0fd6a32799e96f9b1dbcf41ec2bbb8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2024 11:19:58 +0000 Subject: [PATCH 086/302] :arrow_up: Bump mypy from 1.10.1 to 1.11.2 Bumps [mypy](https://github.com/python/mypy) from 1.10.1 to 1.11.2. - [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md) - [Commits](https://github.com/python/mypy/compare/v1.10.1...v1.11.2) --- updated-dependencies: - dependency-name: mypy dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ce704dac3b..a8eb1550f8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -75,7 +75,7 @@ lint = [ "ansible-dev-tools==24.8.0", "ansible==10.2.0", "black==24.8.0", - "mypy==1.10.1", + "mypy==1.11.2", "pandas-stubs==2.2.2.240807", "pydantic==2.8.2", "ruff==0.6.2", From 3011cc7ab8d6601d8bfc3bb352bfe8bcad009a21 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 29 Aug 2024 12:22:10 +0100 Subject: [PATCH 087/302] :see_no_evil: Ignore dist/ directory where packages are built --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 15607a9be1..379a4e5be1 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,7 @@ environment_configs/package_lists/dependency-cache.json # Python build caches __pycache__/ .venv/ +dist/ # Development tools .vscode From 9f9aebe2be1a2dc70d9cfa2a0312a81233415e29 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 29 Aug 2024 11:24:26 +0000 Subject: [PATCH 088/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-test.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index 8e8e3f29f0..86db1954ae 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -35,7 +35,7 @@ # - simple-acme-dns==3.1.0 # - typer==0.12.5 # - websocket-client==1.8.0 -# - coverage==7.5.4 +# - coverage==7.6.1 # - freezegun==1.5.1 # - pytest-mock==3.14.0 # - pytest==8.2.2 @@ -179,7 +179,7 @@ click==8.1.7 # via # -c .hatch/requirements.txt # typer -coverage==7.5.4 +coverage==7.6.1 # via hatch.envs.test cryptography==43.0.0 # via From 681ac1c008b5f79d24d92822aac26b48fcc5bece Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 29 Aug 2024 11:24:34 +0000 Subject: [PATCH 089/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-test.txt | 6 +++--- .hatch/requirements.txt | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index 8e8e3f29f0..7c20b3e4f9 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -1,7 +1,7 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# [constraints] .hatch/requirements.txt (SHA256: b19ab9ee59eac52a338570d2169fec8b0e6537110fbf8852f03ee7a23c0399f5) +# [constraints] .hatch/requirements.txt (SHA256: 365b4203340e8df7dd57ca98c416bc8607b8ea289aafee948a100eb9f6c8122e) # # - appdirs==1.4.4 # - azure-core==1.30.2 @@ -31,7 +31,7 @@ # - pyjwt[crypto]==2.9.0 # - pytz==2024.1 # - pyyaml==6.0.2 -# - rich==13.7.1 +# - rich==13.8.0 # - simple-acme-dns==3.1.0 # - typer==0.12.5 # - websocket-client==1.8.0 @@ -363,7 +363,7 @@ requests-oauthlib==2.0.0 # via # -c .hatch/requirements.txt # msrest -rich==13.7.1 +rich==13.8.0 # via # -c .hatch/requirements.txt # hatch.envs.test diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt index 20a3316565..724f3de8b5 100644 --- a/.hatch/requirements.txt +++ b/.hatch/requirements.txt @@ -29,7 +29,7 @@ # - pyjwt[crypto]==2.9.0 # - pytz==2024.1 # - pyyaml==6.0.2 -# - rich==13.7.1 +# - rich==13.8.0 # - simple-acme-dns==3.1.0 # - typer==0.12.5 # - websocket-client==1.8.0 @@ -231,7 +231,7 @@ requests==2.32.3 # requests-oauthlib requests-oauthlib==2.0.0 # via msrest -rich==13.7.1 +rich==13.8.0 # via # hatch.envs.default # typer From 7d44939313507bda3784cbcf709e4f094115af3b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 29 Aug 2024 11:26:32 +0000 Subject: [PATCH 090/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-lint.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index 3287434fa9..9c898cb076 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -4,7 +4,7 @@ # - ansible-dev-tools==24.8.0 # - ansible==10.2.0 # - black==24.8.0 -# - mypy==1.10.1 +# - mypy==1.11.2 # - pandas-stubs==2.2.2.240807 # - pydantic==2.8.2 # - ruff==0.6.2 @@ -129,7 +129,7 @@ mdurl==0.1.2 # via markdown-it-py molecule==24.8.0 # via ansible-dev-tools -mypy==1.10.1 +mypy==1.11.2 # via hatch.envs.lint mypy-extensions==1.0.0 # via From 060161c190175b25af6458d06c4f56d60b576098 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2024 11:28:25 +0000 Subject: [PATCH 091/302] :arrow_up: Bump types-pyyaml from 6.0.12.20240311 to 6.0.12.20240808 Bumps [types-pyyaml](https://github.com/python/typeshed) from 6.0.12.20240311 to 6.0.12.20240808. - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: types-pyyaml dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 42b772b1e8..0ec4ebab17 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -82,7 +82,7 @@ lint = [ "types-appdirs==1.4.3.5", "types-chevron==0.14.2.20240310", "types-pytz==2024.1.0.20240417", - "types-pyyaml==6.0.12.20240311", + "types-pyyaml==6.0.12.20240808", "types-requests==2.32.0.20240712", ] test = [ From 003353090009c51d6da7c5febcf640511de9785c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 29 Aug 2024 11:34:26 +0000 Subject: [PATCH 092/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-lint.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index 9c898cb076..2b2c37f777 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -11,7 +11,7 @@ # - types-appdirs==1.4.3.5 # - types-chevron==0.14.2.20240310 # - types-pytz==2024.1.0.20240417 -# - types-pyyaml==6.0.12.20240311 +# - types-pyyaml==6.0.12.20240808 # - types-requests==2.32.0.20240712 # @@ -254,7 +254,7 @@ types-pytz==2024.1.0.20240417 # via # hatch.envs.lint # pandas-stubs -types-pyyaml==6.0.12.20240311 +types-pyyaml==6.0.12.20240808 # via hatch.envs.lint types-requests==2.32.0.20240712 # via hatch.envs.lint From f5801c6d1a77a06b096d29054cdf7631285e527f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2024 11:40:06 +0000 Subject: [PATCH 093/302] :arrow_up: Bump ansible from 10.2.0 to 10.3.0 Bumps [ansible](https://github.com/ansible-community/ansible-build-data) from 10.2.0 to 10.3.0. - [Changelog](https://github.com/ansible-community/ansible-build-data/blob/main/docs/release-process.md) - [Commits](https://github.com/ansible-community/ansible-build-data/compare/10.2.0...10.3.0) --- updated-dependencies: - dependency-name: ansible dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index c61e9c6039..883d466e2e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -73,7 +73,7 @@ docs = [ ] lint = [ "ansible-dev-tools==24.8.0", - "ansible==10.2.0", + "ansible==10.3.0", "black==24.8.0", "mypy==1.11.2", "pandas-stubs==2.2.2.240807", From f22ecd65d9ce5ff5503ab73e85cb21fdd260b3cd Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 29 Aug 2024 12:37:28 +0100 Subject: [PATCH 094/302] :bug: Group dependabot updates into a smaller number of PRs --- .github/dependabot.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index e949125e6e..fddbbc6f48 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -12,3 +12,8 @@ updates: directory: "/" schedule: interval: weekly + groups: + production-dependencies: + dependency-type: "production" + development-dependencies: + dependency-type: "development" From 6826dc948286e4682ad817872434fa90413f17c2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 29 Aug 2024 11:46:34 +0000 Subject: [PATCH 095/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-lint.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index 2b2c37f777..380751b1a2 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -2,7 +2,7 @@ # This file is autogenerated by hatch-pip-compile with Python 3.12 # # - ansible-dev-tools==24.8.0 -# - ansible==10.2.0 +# - ansible==10.3.0 # - black==24.8.0 # - mypy==1.11.2 # - pandas-stubs==2.2.2.240807 @@ -17,7 +17,7 @@ annotated-types==0.7.0 # via pydantic -ansible==10.2.0 +ansible==10.3.0 # via hatch.envs.lint ansible-builder==3.1.0 # via From 742712fc7b2594039c293010d7b85e27cad677e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 29 Aug 2024 11:59:01 +0000 Subject: [PATCH 096/302] :arrow_up: Bump the production-dependencies group with 4 updates Bumps the production-dependencies group with 4 updates: [azure-mgmt-compute](https://github.com/Azure/azure-sdk-for-python), [pulumi-azure-native](https://github.com/pulumi/pulumi-azure-native), [pulumi](https://github.com/pulumi/pulumi) and [pytest](https://github.com/pytest-dev/pytest). Updates `azure-mgmt-compute` from 32.0.0 to 33.0.0 - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-mgmt-compute_32.0.0...azure-mgmt-compute_33.0.0) Updates `pulumi-azure-native` from 2.56.0 to 2.58.0 - [Release notes](https://github.com/pulumi/pulumi-azure-native/releases) - [Changelog](https://github.com/pulumi/pulumi-azure-native/blob/master/CHANGELOG_OLD.md) - [Commits](https://github.com/pulumi/pulumi-azure-native/compare/v2.56.0...v2.58.0) Updates `pulumi` from 3.129.0 to 3.130.0 - [Release notes](https://github.com/pulumi/pulumi/releases) - [Changelog](https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md) - [Commits](https://github.com/pulumi/pulumi/compare/v3.129.0...v3.130.0) Updates `pytest` from 8.2.2 to 8.3.2 - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/8.2.2...8.3.2) --- updated-dependencies: - dependency-name: azure-mgmt-compute dependency-type: direct:production update-type: version-update:semver-major dependency-group: production-dependencies - dependency-name: pulumi-azure-native dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: pulumi dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: pytest dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies ... Signed-off-by: dependabot[bot] --- pyproject.toml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 883d466e2e..802c32f6f8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ dependencies = [ "azure-keyvault-certificates==4.8.0", "azure-keyvault-keys==4.9.0", "azure-keyvault-secrets==4.8.0", - "azure-mgmt-compute==32.0.0", + "azure-mgmt-compute==33.0.0", "azure-mgmt-containerinstance==10.1.0", "azure-mgmt-dns==8.1.0", "azure-mgmt-keyvault==10.3.1", @@ -45,9 +45,9 @@ dependencies = [ "cryptography==43.0.0", "fqdn==1.5.1", "psycopg==3.2.1", - "pulumi-azure-native==2.56.0", + "pulumi-azure-native==2.58.0", "pulumi-random==4.16.3", - "pulumi==3.129.0", + "pulumi==3.130.0", "pydantic==2.8.2", "pyjwt[crypto]==2.9.0", "pytz==2024.1", @@ -89,7 +89,7 @@ test = [ "coverage==7.6.1", "freezegun==1.5.1", "pytest-mock==3.14.0", - "pytest==8.2.2", + "pytest==8.3.2", "requests-mock==1.12.1", ] From e01773ce4c08759aaee375df19d4c3856353bcc1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Thu, 29 Aug 2024 12:05:12 +0000 Subject: [PATCH 097/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-test.txt | 18 +++++++++--------- .hatch/requirements.txt | 12 ++++++------ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index 2dfb318986..e6adb7ea65 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -1,7 +1,7 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# [constraints] .hatch/requirements.txt (SHA256: 365b4203340e8df7dd57ca98c416bc8607b8ea289aafee948a100eb9f6c8122e) +# [constraints] .hatch/requirements.txt (SHA256: 30ac5f207e4be0d5d72da1bd05a4ddfc74a30d7232eff22fc56117c735101fd5) # # - appdirs==1.4.4 # - azure-core==1.30.2 @@ -9,7 +9,7 @@ # - azure-keyvault-certificates==4.8.0 # - azure-keyvault-keys==4.9.0 # - azure-keyvault-secrets==4.8.0 -# - azure-mgmt-compute==32.0.0 +# - azure-mgmt-compute==33.0.0 # - azure-mgmt-containerinstance==10.1.0 # - azure-mgmt-dns==8.1.0 # - azure-mgmt-keyvault==10.3.1 @@ -24,9 +24,9 @@ # - cryptography==43.0.0 # - fqdn==1.5.1 # - psycopg==3.2.1 -# - pulumi-azure-native==2.56.0 +# - pulumi-azure-native==2.58.0 # - pulumi-random==4.16.3 -# - pulumi==3.129.0 +# - pulumi==3.130.0 # - pydantic==2.8.2 # - pyjwt[crypto]==2.9.0 # - pytz==2024.1 @@ -38,7 +38,7 @@ # - coverage==7.6.1 # - freezegun==1.5.1 # - pytest-mock==3.14.0 -# - pytest==8.2.2 +# - pytest==8.3.2 # - requests-mock==1.12.1 # @@ -102,7 +102,7 @@ azure-keyvault-secrets==4.8.0 # via # -c .hatch/requirements.txt # hatch.envs.test -azure-mgmt-compute==32.0.0 +azure-mgmt-compute==33.0.0 # via # -c .hatch/requirements.txt # hatch.envs.test @@ -285,13 +285,13 @@ psycopg==3.2.1 # via # -c .hatch/requirements.txt # hatch.envs.test -pulumi==3.129.0 +pulumi==3.130.0 # via # -c .hatch/requirements.txt # hatch.envs.test # pulumi-azure-native # pulumi-random -pulumi-azure-native==2.56.0 +pulumi-azure-native==2.58.0 # via # -c .hatch/requirements.txt # hatch.envs.test @@ -329,7 +329,7 @@ pyrfc3339==1.1 # via # -c .hatch/requirements.txt # acme -pytest==8.2.2 +pytest==8.3.2 # via # hatch.envs.test # pytest-mock diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt index 724f3de8b5..5cba20d34f 100644 --- a/.hatch/requirements.txt +++ b/.hatch/requirements.txt @@ -7,7 +7,7 @@ # - azure-keyvault-certificates==4.8.0 # - azure-keyvault-keys==4.9.0 # - azure-keyvault-secrets==4.8.0 -# - azure-mgmt-compute==32.0.0 +# - azure-mgmt-compute==33.0.0 # - azure-mgmt-containerinstance==10.1.0 # - azure-mgmt-dns==8.1.0 # - azure-mgmt-keyvault==10.3.1 @@ -22,9 +22,9 @@ # - cryptography==43.0.0 # - fqdn==1.5.1 # - psycopg==3.2.1 -# - pulumi-azure-native==2.56.0 +# - pulumi-azure-native==2.58.0 # - pulumi-random==4.16.3 -# - pulumi==3.129.0 +# - pulumi==3.130.0 # - pydantic==2.8.2 # - pyjwt[crypto]==2.9.0 # - pytz==2024.1 @@ -75,7 +75,7 @@ azure-keyvault-keys==4.9.0 # via hatch.envs.default azure-keyvault-secrets==4.8.0 # via hatch.envs.default -azure-mgmt-compute==32.0.0 +azure-mgmt-compute==33.0.0 # via hatch.envs.default azure-mgmt-containerinstance==10.1.0 # via hatch.envs.default @@ -186,12 +186,12 @@ protobuf==4.25.4 # via pulumi psycopg==3.2.1 # via hatch.envs.default -pulumi==3.129.0 +pulumi==3.130.0 # via # hatch.envs.default # pulumi-azure-native # pulumi-random -pulumi-azure-native==2.56.0 +pulumi-azure-native==2.58.0 # via hatch.envs.default pulumi-random==4.16.3 # via hatch.envs.default From 034a3d309ce4781ab34d5a3fe1fbe0d741a7c97f Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 29 Aug 2024 13:37:21 +0100 Subject: [PATCH 098/302] :memo: Update installation instructions --- docs/source/deployment/index.md | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/docs/source/deployment/index.md b/docs/source/deployment/index.md index c83bb5ee61..38fc1cdf64 100644 --- a/docs/source/deployment/index.md +++ b/docs/source/deployment/index.md @@ -39,12 +39,30 @@ See [the instructions here](https://docs.docker.com/security/for-developers/acce ## Install the project - Look up the [latest supported version](https://github.com/alan-turing-institute/data-safe-haven/blob/develop/SECURITY.md) of this code from [GitHub](https://github.com/alan-turing-institute/data-safe-haven). -- Install the executable with `pipx` (using version 'v5.0.0' for this example) by running: +- Install the executable with `pipx` by running: :::{code} shell -$ pipx install git+https://github.com/alan-turing-institute/data-safe-haven.git@v5.0.0 +$ pipx install data-safe-haven ::: +- Or install a specific version with + +:::{code} shell +$ pipx install data-safe-haven==5.0.0 +::: + +::::{admonition} [Advanced] install into a virtual environment +:class: dropdown caution + +If you prefer, you can install this package into a virtual environment: + +:::{code} shell +$ python -m venv /path/to/new/virtual/environment +$ source /path/to/new/virtual/environment/bin/activate +$ pip install data-safe-haven +::: +:::: + - Test that this has worked by checking the version :::{code} shell From b819a772d99aa01dc5fe6ce875a62cd353ce0c83 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 29 Aug 2024 13:40:40 +0100 Subject: [PATCH 099/302] :memo: Add instructions for PyPI upload --- docs/README.md | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/docs/README.md b/docs/README.md index fba3bd695a..3b98ee18e3 100644 --- a/docs/README.md +++ b/docs/README.md @@ -12,17 +12,31 @@ Install the following requirements before starting Build the documentation with `hatch`. -```console -> hatch run docs:build -``` +:::{code} bash +$ hatch run docs:build +::: The generated documents will be placed under `build/html/`. To view the documents open `build/html/index.html` in your browser. For example -```console -> firefox build/html/index.html -``` +:::{code} bash +$ firefox build/html/index.html +::: + +## Publishing a new release to PyPI + +- Build the tarball and wheel + +:::{code} bash +$ hatch run build +::: + +- Upload to PyPI, providing your API token at the prompt + +:::{code} bash +$ hatch run publish --user __token__ +::: ## Reproducible Builds From e50864f0610f89cd3e0c0a59ec8dd58259f8338b Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 29 Aug 2024 14:28:14 +0100 Subject: [PATCH 100/302] Replace emoji codes with characters in README --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index ea48d1bb19..f2495381f7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![Data Safe Haven cartoon by Scriberia for The Alan Turing Institute](docs/source/_static/scriberia_diagram.jpg) -# :eyes: What is the Turing Data Safe Haven? +# 👀 What is the Turing Data Safe Haven? The **Turing Data Safe Haven** is an open-source framework for creating secure environments to analyse sensitive data. It provides a set of scripts and templates that will allow you to deploy, administer and use your own secure environment. @@ -17,7 +17,7 @@ It was developed as part of the Alan Turing Institute's [Data Safe Havens in the [![All Contributors](https://img.shields.io/badge/all_contributors-49-orange.svg?style=flat-square)](#contributors-) -## :family: Community & support +## 🧑‍🧑‍🧒 Community & support - Visit the [Data Safe Haven website](https://data-safe-haven.readthedocs.io) for full documentation and useful links. - Join our [Slack server](https://join.slack.com/t/turingdatasafehaven/shared_invite/zt-104oyd8wn-DyOufeaAQFiJDlG5dDGk~w) to ask questions, discuss features, and for general API chat. @@ -25,7 +25,7 @@ It was developed as part of the Alan Turing Institute's [Data Safe Havens in the - Look through our [issues on GitHub](https://github.com/alan-turing-institute/data-safe-haven/issues) to see what we're working on and progress towards specific fixes. - Subscribe to the [Data Safe Haven newsletter](https://tinyletter.com/turingdatasafehaven) for release announcements. -## :open_hands: Contributing +## 👐 Contributing We are keen to transition our implementation from being a [Turing](https://www.turing.ac.uk/) project to being a community owned platform. We have worked together with the community to develop the policy, processes and design decisions for the Data Safe Haven. @@ -113,7 +113,7 @@ See our [Code of Conduct](CODE_OF_CONDUCT.md) and our [Contributor Guide](CONTRI -## :cake: Releases +## 🍰 Releases If you're new to the project, why not check out our [latest release](https://github.com/alan-turing-institute/data-safe-haven/releases/latest)? @@ -124,12 +124,12 @@ Read our [versioning scheme](VERSIONING.md) for how we number and label releases When making a new release, open an issue on GitHub and choose the `Release checklist` template, which can be used to track the completion of security checks for the release. -## :mailbox_with_mail: Vulnerability disclosure +## 📬 Vulnerability disclosure We value those who take the time and effort to report security vulnerabilities. If you believe you have found a security vulnerability, please report it as outlined in our [Security and vulnerability disclosure policy](SECURITY.md). -## :bow: Acknowledgements +## 🙇 Acknowledgements We are grateful for the following support for this project: @@ -137,7 +137,7 @@ We are grateful for the following support for this project: - The UKRI Strategic Priorities Fund - AI for Science, Engineering, Health and Government programme ([EP/T001569/1](https://gow.epsrc.ukri.org/NGBOViewGrant.aspx?GrantRef=EP/T001569/1)), particularly the "Tools, Practices and Systems" theme within that grant. - Microsoft's generous [donation of Azure credits](https://www.microsoft.com/en-us/research/blog/microsoft-accelerates-data-science-at-the-alan-turing-institute-with-5m-in-cloud-computing-credits/) to the Alan Turing Institute. -## :warning: Disclaimer +## ⚠️ Disclaimer The Alan Turing Institute and its group companies ("we", "us", the "Turing") make no representations, warranties, or guarantees, express or implied, regarding the information contained in this repository, including but not limited to information about the use or deployment of the Data Safe Haven and/or related materials. We expressly exclude any implied warranties or representations whatsoever including without limitation regarding the use of the Data Safe Haven and related materials for any particular purpose. From 5a943122e3aae3f7cf966189ff4784155602da6b Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 29 Aug 2024 15:48:42 +0100 Subject: [PATCH 101/302] :coffin: Remove private repository mentions --- CONTRIBUTING.md | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index de58af3841..6cf735ebc5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -23,7 +23,6 @@ Jump to the following sections: - [Writing in markdown](#writing-in-markdown) - [Project management through issues](#project-management-through-issues) - [Issues as conversations](#issues-as-conversations) - - [Working in a private repository](#working-in-a-private-repository) - [Who's involved in the project](#whos-involved-in-the-project) - [Make a change with a pull request](#making-a-change-with-a-pull-request) - [Make a change to the documentation](#making-a-change-to-the-documentation) @@ -176,17 +175,6 @@ Alternatively (and this is encouraged) you can use the issue to keep track of wh

-### Working in a private repository - -As one of the goals of this project is to build a secure infrastructure for data storage and analysis, our project will very likely include some code with security vulnerabilities! -Therefore we're keeping the repository private until we're confident that our work is secure. - -Please note that the plan is to make the contents of this repository openly available. -Please be considerate of the content you add and use professional and inclusive language at all times. - -As we're working in a private repository you may not be able to see the repository if you aren't signed in. -So if you see a 404 page and you're confident you have the correct url, go back to [github.com](https://github.com) to make sure that you're signed into your account. - ### Making a change with a pull request To contribute to the codebase you'll need to submit a **pull request**. From 3ed26f78e6e99686b90c81173ce26aec6af76e85 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 29 Aug 2024 15:49:30 +0100 Subject: [PATCH 102/302] :coffin: Remove contents section --- CONTRIBUTING.md | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6cf735ebc5..9e47e0aa73 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,26 +8,6 @@ It can truly only succeed with a interdisciplinary team working together. The point of these contributing guidelines are to help you participate as easily as possible. If you have any questions that aren't discussed below, please let us know by [opening an issue](#project-management-through-issues). -## Contents - -Been here before? -Already know what you're looking for in this guide? -Jump to the following sections: - -- [A DevOps development philosophy](#a-devops-development-philosophy) - - [Project workflow](#project-workflow) - - [Project meetings](#project-meetings) - - [Communications within the team and asking for help](#communications-within-the-team-and-asking-for-help) -- [Contributing through GitHub](#contributing-through-github) - - [Discussions vs Issues](#discussions-vs-issues) - - [Writing in markdown](#writing-in-markdown) - - [Project management through issues](#project-management-through-issues) - - [Issues as conversations](#issues-as-conversations) - - [Who's involved in the project](#whos-involved-in-the-project) - - [Make a change with a pull request](#making-a-change-with-a-pull-request) - - [Make a change to the documentation](#making-a-change-to-the-documentation) - - [Adding new contributors](#adding-new-contributors) - ## A DevOps development philosophy For the Data Safe Haven project, we follow a DevOps development philosophy. @@ -74,7 +54,7 @@ Discussions around particular tasks should be conducted **when the work is being ### Communications within the team and asking for help -As this team is distributed, not working full-time on this project and often working asynchronously, we do not have any form of daily meeting or stand-up +As this team is distributed, not working full-time on this project and often working asynchronously, we do not have any form of daily meeting or stand-up. The best way to work around this absence is to **commit to sharing updates as regularly as possible**. Please see the section on [project management through issues](#project-management-through-issues) below on how to do this via GitHub. From 59d5e465c30fd21ec92caa68da7ca55470f5795f Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 29 Aug 2024 15:55:51 +0100 Subject: [PATCH 103/302] :coffin: Removed some boilerplate about using GitHub --- CONTRIBUTING.md | 82 ++++++------------------------------------------- 1 file changed, 9 insertions(+), 73 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9e47e0aa73..060921fd47 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -60,10 +60,6 @@ Please see the section on [project management through issues](#project-managemen ## Contributing through GitHub -[git](https://git-scm.com) is a really useful tool for version control. [GitHub](https://github.com) sits on top of git and supports collaborative and distributed working. -We know that it can be daunting to start using `git` and `GitHub` if you haven't worked with them in the past, but the team are happy to help you figure out any of the jargon or confusing instructions you encounter! :heart: -In order to contribute via GitHub you'll need to set up a free account and sign in. Here are some [instructions](https://docs.github.com/en/get-started/signing-up-for-github/signing-up-for-a-new-github-account) to help you get going. - We use the [Gitflow Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow).

@@ -101,93 +97,33 @@ Good examples of issues are When opening an issue, pick a suitable template (if possible) to make the process easier. -### Writing in Markdown - -GitHub has a helpful page on [getting started with writing and formatting on GitHub](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github). - -Most of the writing that you'll do will be in [Markdown](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax). -You can think of Markdown as a few little symbols around your text that will allow GitHub to render the text with a little bit of formatting. -For example you could write words as bold ( `**bold**` ), or in italics ( `*italics*` ), or as a [link](https://youtu.be/dQw4w9WgXcQ) ( `[link](https://youtu.be/dQw4w9WgXcQ)` ) to another webpage. - -`GitHub` issues render markdown really nicely. -The goal is to allow you to focus on the content rather than worry too much about how things are laid out! - ### Project management through issues -Please regularly check out the agreed upon tasks at the [issues list][https://github.com/alan-turing-institute/data-safe-haven/issues]. -Every issue should have labels assigned to it from the following scheme. -At least one label from each category ( `type` , `affected` and `severity` ) should be assigned to each issue - don't worry if you need to change these over time, they should reflect the current status of the issue. - -| Category | Labels | -| :------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| type | | -| affected | | -| severity | | - -Other labels which may or may not be relevant are meta labels (for collecting related issues) and the "good first issue" label for signalling issues that new contributors might like to tackle. -If an issue is closed without being completed, one of the `closed` labels should be attached to it to explain why. - -| Category | Labels | -| :------: | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| meta | | -| other | | -| closed | | +Please regularly check out the agreed upon tasks at the [issues list](https://github.com/alan-turing-institute/data-safe-haven/issues). +Issues should be tagged with an appropriate [label](https://github.com/alan-turing-institute/data-safe-haven/issues/labels) by a member of the development team. +Each issue should be assigned to an appropriate [milestone](https://github.com/alan-turing-institute/data-safe-haven/milestones). -If you have an idea for a piece of work to complete, please **open an issue**. If you have been assigned an issue, please be ready to explain in the [project meeting](#project-meetings) what your progress has been. In a perfect world you'll have completed the task, documented everything you need to and we'll be able to **close** the issue (to mark it as complete). ### Issues as conversations +If you have an idea for a piece of work to complete, please **open an issue**. + The name `issue` comes from a concept of catching errors (bugs :bug:) in software, but for this project they are simply our **tasks**. -They should be concrete enough to be done in a week or so. If an issue is growing to encompass more than one task, consider breaking it into multiple issues. You can think of the issues as **conversations** about a particular topic. `GitHub`'s tagline is **social coding** and the issues are inspired by social media conversations. - -You can [mention a user](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#mentioning-people-and-teams) by putting `@` infront of their github id. -For example, `@KirstieJane` will send a notification to `Kirstie Whitaker` so she knows to visit the issue and (for example) reply to your question. - Alternatively (and this is encouraged) you can use the issue to keep track of where you're up to with the task and add information about next steps and barriers. -

- -

- ### Making a change with a pull request -To contribute to the codebase you'll need to submit a **pull request**. - -If you're updating the code or other documents in the repository, the following steps are a guide to help you contribute in a way that will be easy for everyone to review and accept with ease :sunglasses:. - -#### 1. Make sure there is an issue for this that is clear about what work you're going to do - -This allows other members of the Data Safe Haven project team to confirm that you aren't overlapping with work that's currently underway and that everyone is on the same page with the goal of the work you're going to carry out. - -[This blog](https://www.igvita.com/2011/12/19/dont-push-your-pull-requests) is a nice explanation of why putting this work in up front is so useful to everyone involved. - -#### 2. Fork Data Safe Haven repository to your profile - -Follow [the instructions here](https://docs.github.com/en/get-started/quickstart/fork-a-repo) to fork the [Data Safe Haven repository](https://github.com/alan-turing-institute/data-safe-haven). - -This is now your own unique copy of the Data Safe Haven repository. Changes here won't affect anyone else's work, so it's a safe space to explore edits to the code or documentation! -Make sure to [keep your fork up to date](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork) with the upstream repository, otherwise you can end up with lots of dreaded [merge conflicts](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/about-merge-conflicts). - -#### 3. Make the changes you've discussed - -Try to keep the changes focused. If you submit a large amount of work in all in one go it will be much more work for whomever is reviewing your pull request. [Help them help you](https://media.giphy.com/media/uRb2p09vY8lEs/giphy.gif) :wink: -If you feel tempted to "branch out" then please make a [new branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository) and a [new issue](https://github.com/alan-turing-institute/data-safe-haven/issues) to go with it. - -#### 4. Submit a pull request - -Once you submit a [pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request), a member of the Safe Haven project team will review your changes to confirm that they can be merged into the codebase. - -A [review](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews) will probably consist of a few questions to help clarify the work you've done. Keep an eye on your github notifications and be prepared to join in that conversation. - -You can update your [fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo) of the data safe haven [repository](https://github.com/alan-turing-institute/data-safe-haven) and the pull request will automatically update with those changes. **You don't need to submit a new pull request when you make a change in response to a review.** +To contribute to the codebase you'll need to: -GitHub has a [nice introduction](https://docs.github.com/en/get-started/quickstart/github-flow) to the pull request workflow, but please [get in touch](#get-in-touch) if you have any questions :balloon:. +- [fork the repository](https://docs.github.com/en/get-started/quickstart/fork-a-repo) to your own GitHub profile +- make your changes [on a branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository) +- submit a [pull request](https://docs.github.com/en/get-started/quickstart/github-flow) ### Making a change to the documentation From e18fb8ad3a5fdefaf710dec049570d16b9e7dc65 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Thu, 29 Aug 2024 16:01:57 +0100 Subject: [PATCH 104/302] :truck: Move docs instructions to CONTRIBUTING.md --- CONTRIBUTING.md | 67 ++++++++++++++++++++++++++++++++++++------------- docs/README.md | 44 -------------------------------- 2 files changed, 49 insertions(+), 62 deletions(-) delete mode 100644 docs/README.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 060921fd47..14c1ab607c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -34,7 +34,7 @@ The most pertinent features of the DevOps methodology for this project are: - **automation**: maximal automation is the primary goal - **quality**: full integration testing each time features are added -### Project workflow +## Project workflow Although we are not following an Agile workflow, we still think that the following features are important: @@ -70,11 +70,19 @@ This means that: - checking out the `latest` branch, will give you the latest tagged release - the `develop` branch, which is the default branch of the repository, contains the latest cutting-edge code that has not yet made it into a release -- releases are made by branching from `develop` into a branch called `release-` - - deployment is tested from this release and any necessary integration changes are made on this branch - - the branch is then merged into `latest` (which is tagged) as the next release **and** into `develop` so that any fixes are included there - we prefer to use [merge commits](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/about-merge-methods-on-github) in order to avoid rewriting the git history +### Issues as conversations + +If you have an idea for a piece of work to complete, please **open an issue**. + +The name `issue` comes from a concept of catching errors (bugs :bug:) in software, but for this project they are simply our **tasks**. +If an issue is growing to encompass more than one task, consider breaking it into multiple issues. + +You can think of the issues as **conversations** about a particular topic. +`GitHub`'s tagline is **social coding** and the issues are inspired by social media conversations. +Alternatively (and this is encouraged) you can use the issue to keep track of where you're up to with the task and add information about next steps and barriers. + ### Discussions vs Issues **Discussions** are the best place for informal talk about the project @@ -106,16 +114,7 @@ Each issue should be assigned to an appropriate [milestone](https://github.com/a If you have been assigned an issue, please be ready to explain in the [project meeting](#project-meetings) what your progress has been. In a perfect world you'll have completed the task, documented everything you need to and we'll be able to **close** the issue (to mark it as complete). -### Issues as conversations - -If you have an idea for a piece of work to complete, please **open an issue**. - -The name `issue` comes from a concept of catching errors (bugs :bug:) in software, but for this project they are simply our **tasks**. -If an issue is growing to encompass more than one task, consider breaking it into multiple issues. - -You can think of the issues as **conversations** about a particular topic. -`GitHub`'s tagline is **social coding** and the issues are inspired by social media conversations. -Alternatively (and this is encouraged) you can use the issue to keep track of where you're up to with the task and add information about next steps and barriers. +## Contributing your changes ### Making a change with a pull request @@ -128,12 +127,44 @@ To contribute to the codebase you'll need to: ### Making a change to the documentation The docs, including for older releases, are available [here](https://data-safe-haven.readthedocs.io). - You should follow the same instructions as above to [make a change with a pull request](#making-a-change-with-a-pull-request) when editing the documentation. -To preview your changes, you can build the docs locally. See [docs/README.md](docs/README.md). +The documentation is built from Markdown files using [Sphinx](https://www.sphinx-doc.org/) and [MyST parser](https://myst-parser.readthedocs.io/). +To preview your changes, you can build the docs locally with `hatch`: + +```console +> hatch run docs:build +``` + +- The generated documents will be placed under `build/html/`. +- To view the documents open `build/html/index.html` in your browser, for example: + +```console +> firefox build/html/index.html +``` + +## Preparing a new release + +Releases are made by branching from `develop` into a branch called `release-` + +- deployment is tested from this release and any necessary integration changes are made on this branch +- the branch is then merged into `latest` (which is tagged) as the next release **and** into `develop` so that any fixes are included there + +The release can then be published to PyPI: + +- Build the tarball and wheel + +```console +> hatch run build +``` + +- Upload to PyPI, providing your API token at the prompt + +```console +> hatch run publish --user __token__ +``` -### Who's involved in the project +## Who's involved in the project Take a look at the full list of contributors on our [README](README.md). @@ -149,7 +180,7 @@ To add new contributor to the README table, see the [all-contributors CLI docume You can get in touch with the development team at safehavendevs@turing.ac.uk. -## Thank you! +**Thank you!** You're awesome! :wave::smiley: diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index 3b98ee18e3..0000000000 --- a/docs/README.md +++ /dev/null @@ -1,44 +0,0 @@ -# Documentation - -The documentation is built from Markdown files using [Sphinx](https://www.sphinx-doc.org/) and [MyST parser](https://myst-parser.readthedocs.io/). - -## Requirements - -Install the following requirements before starting - -- [Hatch](https://hatch.pypa.io/1.9/install/) - -## Building the Documentation - -Build the documentation with `hatch`. - -:::{code} bash -$ hatch run docs:build -::: - -The generated documents will be placed under `build/html/`. -To view the documents open `build/html/index.html` in your browser. -For example - -:::{code} bash -$ firefox build/html/index.html -::: - -## Publishing a new release to PyPI - -- Build the tarball and wheel - -:::{code} bash -$ hatch run build -::: - -- Upload to PyPI, providing your API token at the prompt - -:::{code} bash -$ hatch run publish --user __token__ -::: - -## Reproducible Builds - -We use [`pip-compile`](https://pip-tools.readthedocs.io/en/latest/) behind the scenes to ensure that each commit uses the same set of packages to build the documentation. -This means that each build is fully reproducible. From 1a16929cdf14886143ba5c0068f4a5e1c9530cc9 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 30 Aug 2024 10:59:00 +0100 Subject: [PATCH 105/302] Add PyPI version badge (with link) --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f2495381f7..32f46c80ac 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ It provides a set of scripts and templates that will allow you to deploy, admini It was developed as part of the Alan Turing Institute's [Data Safe Havens in the Cloud](https://www.turing.ac.uk/research/research-projects/data-safe-havens-cloud) project. [![Documentation](https://readthedocs.org/projects/data-safe-haven/badge/?version=latest)](https://data-safe-haven.readthedocs.io/en/latest/?badge=latest) +[![PyPI - Version](https://img.shields.io/pypi/v/data-safe-haven)](https://pypi.org/project/data-safe-haven/) [![Lint code](https://github.com/alan-turing-institute/data-safe-haven/actions/workflows/lint_code.yaml/badge.svg)](https://github.com/alan-turing-institute/data-safe-haven/actions/workflows/lint_code.yaml) [![Test code](https://github.com/alan-turing-institute/data-safe-haven/actions/workflows/test_code.yaml/badge.svg)](https://github.com/alan-turing-institute/data-safe-haven/actions/workflows/test_code.yaml) [![Latest version](https://img.shields.io/github/v/release/alan-turing-institute/data-safe-haven?style=flat&label=Latest&color=%234B78E6)](https://github.com/alan-turing-institute/data-safe-haven/releases) From c41141b027b41bf9fbb8d6a73c5c087a3c95f69a Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 30 Aug 2024 11:01:23 +0100 Subject: [PATCH 106/302] Reorder badges --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 32f46c80ac..9b4e808a64 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,11 @@ The **Turing Data Safe Haven** is an open-source framework for creating secure e It provides a set of scripts and templates that will allow you to deploy, administer and use your own secure environment. It was developed as part of the Alan Turing Institute's [Data Safe Havens in the Cloud](https://www.turing.ac.uk/research/research-projects/data-safe-havens-cloud) project. -[![Documentation](https://readthedocs.org/projects/data-safe-haven/badge/?version=latest)](https://data-safe-haven.readthedocs.io/en/latest/?badge=latest) [![PyPI - Version](https://img.shields.io/pypi/v/data-safe-haven)](https://pypi.org/project/data-safe-haven/) +[![Latest version](https://img.shields.io/github/v/release/alan-turing-institute/data-safe-haven?style=flat&label=Latest&color=%234B78E6)](https://github.com/alan-turing-institute/data-safe-haven/releases) +[![Documentation](https://readthedocs.org/projects/data-safe-haven/badge/?version=latest)](https://data-safe-haven.readthedocs.io/en/latest/?badge=latest) [![Lint code](https://github.com/alan-turing-institute/data-safe-haven/actions/workflows/lint_code.yaml/badge.svg)](https://github.com/alan-turing-institute/data-safe-haven/actions/workflows/lint_code.yaml) [![Test code](https://github.com/alan-turing-institute/data-safe-haven/actions/workflows/test_code.yaml/badge.svg)](https://github.com/alan-turing-institute/data-safe-haven/actions/workflows/test_code.yaml) -[![Latest version](https://img.shields.io/github/v/release/alan-turing-institute/data-safe-haven?style=flat&label=Latest&color=%234B78E6)](https://github.com/alan-turing-institute/data-safe-haven/releases) [![Slack](https://img.shields.io/badge/Join%20us!-yellow?style=flat&logo=slack&logoColor=white&labelColor=4A154B&label=Slack)](https://join.slack.com/t/turingdatasafehaven/signup) ![Licence](https://img.shields.io/github/license/alan-turing-institute/data-safe-haven) [![Citation](https://img.shields.io/badge/citation-cite%20this%20project-informational)](https://github.com/alan-turing-institute/data-safe-haven/blob/develop/CITATION.cff) From d57457ab3a1720e774f8ad21c3d55dad7deac686 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 30 Aug 2024 14:20:56 +0100 Subject: [PATCH 107/302] Add downloads badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9b4e808a64..fb50820978 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ It provides a set of scripts and templates that will allow you to deploy, admini It was developed as part of the Alan Turing Institute's [Data Safe Havens in the Cloud](https://www.turing.ac.uk/research/research-projects/data-safe-havens-cloud) project. [![PyPI - Version](https://img.shields.io/pypi/v/data-safe-haven)](https://pypi.org/project/data-safe-haven/) +[![PyPI - Downloads](https://img.shields.io/pypi/dm/data-safe-haven)](https://pypi.org/project/data-safe-haven/) [![Latest version](https://img.shields.io/github/v/release/alan-turing-institute/data-safe-haven?style=flat&label=Latest&color=%234B78E6)](https://github.com/alan-turing-institute/data-safe-haven/releases) [![Documentation](https://readthedocs.org/projects/data-safe-haven/badge/?version=latest)](https://data-safe-haven.readthedocs.io/en/latest/?badge=latest) [![Lint code](https://github.com/alan-turing-institute/data-safe-haven/actions/workflows/lint_code.yaml/badge.svg)](https://github.com/alan-turing-institute/data-safe-haven/actions/workflows/lint_code.yaml) From c95ef84c09d8780e442d06ce9e02387a35b221a9 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 30 Aug 2024 14:22:47 +0100 Subject: [PATCH 108/302] Replace newsletter with email --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fb50820978..e250dc6beb 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ It was developed as part of the Alan Turing Institute's [Data Safe Havens in the - Join our [Slack server](https://join.slack.com/t/turingdatasafehaven/shared_invite/zt-104oyd8wn-DyOufeaAQFiJDlG5dDGk~w) to ask questions, discuss features, and for general API chat. - Open a [discussion on GitHub](https://github.com/alan-turing-institute/data-safe-haven/discussions) for general questions, feature suggestions, and help with our deployment scripts. - Look through our [issues on GitHub](https://github.com/alan-turing-institute/data-safe-haven/issues) to see what we're working on and progress towards specific fixes. -- Subscribe to the [Data Safe Haven newsletter](https://tinyletter.com/turingdatasafehaven) for release announcements. +- Send us an [email](mailto:safehavendevs@turing.ac.uk). ## 👐 Contributing From 4c3ed5f7989c99eb46d5e7eb717404ad12e8bd96 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 30 Aug 2024 14:24:07 +0100 Subject: [PATCH 109/302] Change Slack "server" to "workspace" --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e250dc6beb..da05f510aa 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ It was developed as part of the Alan Turing Institute's [Data Safe Havens in the ## 🧑‍🧑‍🧒 Community & support - Visit the [Data Safe Haven website](https://data-safe-haven.readthedocs.io) for full documentation and useful links. -- Join our [Slack server](https://join.slack.com/t/turingdatasafehaven/shared_invite/zt-104oyd8wn-DyOufeaAQFiJDlG5dDGk~w) to ask questions, discuss features, and for general API chat. +- Join our [Slack workspace](https://join.slack.com/t/turingdatasafehaven/shared_invite/zt-104oyd8wn-DyOufeaAQFiJDlG5dDGk~w) to ask questions, discuss features, and for general API chat. - Open a [discussion on GitHub](https://github.com/alan-turing-institute/data-safe-haven/discussions) for general questions, feature suggestions, and help with our deployment scripts. - Look through our [issues on GitHub](https://github.com/alan-turing-institute/data-safe-haven/issues) to see what we're working on and progress towards specific fixes. - Send us an [email](mailto:safehavendevs@turing.ac.uk). From 77da1f387261e8d2ea2cd56f4c3b39daa0c1760a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 03:26:54 +0000 Subject: [PATCH 110/302] :arrow_up: Bump ruff in the production-dependencies group Bumps the production-dependencies group with 1 update: [ruff](https://github.com/astral-sh/ruff). Updates `ruff` from 0.6.2 to 0.6.3 - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.6.2...0.6.3) --- updated-dependencies: - dependency-name: ruff dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 802c32f6f8..ee20e04b88 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -78,7 +78,7 @@ lint = [ "mypy==1.11.2", "pandas-stubs==2.2.2.240807", "pydantic==2.8.2", - "ruff==0.6.2", + "ruff==0.6.3", "types-appdirs==1.4.3.5", "types-chevron==0.14.2.20240310", "types-pytz==2024.1.0.20240417", From 5fba1eddcb1e488e20c50cbaca342c01d7af3e3e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 2 Sep 2024 03:33:14 +0000 Subject: [PATCH 111/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-docs.txt | 2 +- .hatch/requirements-lint.txt | 4 ++-- .hatch/requirements-test.txt | 4 ++-- .hatch/requirements.txt | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.hatch/requirements-docs.txt b/.hatch/requirements-docs.txt index 99be3ccc8c..7bb7b057b6 100644 --- a/.hatch/requirements-docs.txt +++ b/.hatch/requirements-docs.txt @@ -18,7 +18,7 @@ babel==2.16.0 # sphinx beautifulsoup4==4.12.3 # via pydata-sphinx-theme -certifi==2024.7.4 +certifi==2024.8.30 # via requests charset-normalizer==3.3.2 # via requests diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index 380751b1a2..a7b04ea1cc 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -7,7 +7,7 @@ # - mypy==1.11.2 # - pandas-stubs==2.2.2.240807 # - pydantic==2.8.2 -# - ruff==0.6.2 +# - ruff==0.6.3 # - types-appdirs==1.4.3.5 # - types-chevron==0.14.2.20240310 # - types-pytz==2024.1.0.20240417 @@ -235,7 +235,7 @@ ruamel-yaml==0.18.6 # via ansible-lint ruamel-yaml-clib==0.2.8 # via ruamel-yaml -ruff==0.6.2 +ruff==0.6.3 # via hatch.envs.lint subprocess-tee==0.4.2 # via diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index e6adb7ea65..8458c182a9 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -1,7 +1,7 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# [constraints] .hatch/requirements.txt (SHA256: 30ac5f207e4be0d5d72da1bd05a4ddfc74a30d7232eff22fc56117c735101fd5) +# [constraints] .hatch/requirements.txt (SHA256: 6fc3384d70e2398ec8bf13c97bbb52f561f0a65ddd18d90f81f7d7dd20a209d7) # # - appdirs==1.4.4 # - azure-core==1.30.2 @@ -158,7 +158,7 @@ azure-storage-file-share==12.17.0 # via # -c .hatch/requirements.txt # hatch.envs.test -certifi==2024.7.4 +certifi==2024.8.30 # via # -c .hatch/requirements.txt # msrest diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt index 5cba20d34f..e91a41ccd1 100644 --- a/.hatch/requirements.txt +++ b/.hatch/requirements.txt @@ -109,7 +109,7 @@ azure-storage-file-datalake==12.16.0 # via hatch.envs.default azure-storage-file-share==12.17.0 # via hatch.envs.default -certifi==2024.7.4 +certifi==2024.8.30 # via # msrest # requests From 8720a3e0a9fe08f803ee4acfb1ecfe14dde27584 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 2 Sep 2024 10:27:42 +0100 Subject: [PATCH 112/302] Update data_safe_haven/infrastructure/common/ip_ranges.py Co-authored-by: James Robinson --- data_safe_haven/infrastructure/common/ip_ranges.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_safe_haven/infrastructure/common/ip_ranges.py b/data_safe_haven/infrastructure/common/ip_ranges.py index 2fb3279ca3..aa201f3878 100644 --- a/data_safe_haven/infrastructure/common/ip_ranges.py +++ b/data_safe_haven/infrastructure/common/ip_ranges.py @@ -14,8 +14,8 @@ class SREIpRanges: apt_proxy_server = vnet.next_subnet(8) clamav_mirror = vnet.next_subnet(8) data_configuration = vnet.next_subnet(8) - desired_state = vnet.next_subnet(8) data_private = vnet.next_subnet(8) + desired_state = vnet.next_subnet(8) firewall = vnet.next_subnet(64) # 64 address minimum firewall_management = vnet.next_subnet(64) # 64 address minimum guacamole_containers = vnet.next_subnet(8) From 96fb5518c6e9016808a69ee60bc2f62c427f4a6f Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 2 Sep 2024 16:25:43 +0100 Subject: [PATCH 113/302] Correct ip range test --- tests/infrastructure/common/test_ip_ranges.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/infrastructure/common/test_ip_ranges.py b/tests/infrastructure/common/test_ip_ranges.py index 807c4f3f86..2c4dc749d3 100644 --- a/tests/infrastructure/common/test_ip_ranges.py +++ b/tests/infrastructure/common/test_ip_ranges.py @@ -14,8 +14,8 @@ def test_vnet_and_subnets(self): assert SREIpRanges.data_configuration == AzureIPv4Range( "10.0.1.16", "10.0.1.23" ) - assert SREIpRanges.desired_state == AzureIPv4Range("10.0.1.24", "10.0.1.31") - assert SREIpRanges.data_private == AzureIPv4Range("10.0.1.32", "10.0.1.39") + assert SREIpRanges.data_private == AzureIPv4Range("10.0.1.24", "10.0.1.31") + assert SREIpRanges.desired_state == AzureIPv4Range("10.0.1.32", "10.0.1.39") assert SREIpRanges.firewall == AzureIPv4Range("10.0.1.64", "10.0.1.127") assert SREIpRanges.firewall_management == AzureIPv4Range( "10.0.1.128", "10.0.1.191" From 4d4c06c7a08c95ed66e741979ce50c3b065ef40f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 00:39:11 +0000 Subject: [PATCH 114/302] :arrow_up: Bump cryptography from 43.0.0 to 43.0.1 in /.hatch Bumps [cryptography](https://github.com/pyca/cryptography) from 43.0.0 to 43.0.1. - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/43.0.0...43.0.1) --- updated-dependencies: - dependency-name: cryptography dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- .hatch/requirements-lint.txt | 2 +- .hatch/requirements-test.txt | 4 ++-- .hatch/requirements.txt | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index a7b04ea1cc..6537e891a5 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -81,7 +81,7 @@ click-help-colors==0.9.4 # via molecule colorama==0.4.6 # via tox -cryptography==43.0.0 +cryptography==43.0.1 # via ansible-core distlib==0.3.8 # via diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index 8458c182a9..fc4a1be95f 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -21,7 +21,7 @@ # - azure-storage-file-datalake==12.16.0 # - azure-storage-file-share==12.17.0 # - chevron==0.14.0 -# - cryptography==43.0.0 +# - cryptography==43.0.1 # - fqdn==1.5.1 # - psycopg==3.2.1 # - pulumi-azure-native==2.58.0 @@ -181,7 +181,7 @@ click==8.1.7 # typer coverage==7.6.1 # via hatch.envs.test -cryptography==43.0.0 +cryptography==43.0.1 # via # -c .hatch/requirements.txt # hatch.envs.test diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt index e91a41ccd1..ca5fe00336 100644 --- a/.hatch/requirements.txt +++ b/.hatch/requirements.txt @@ -19,7 +19,7 @@ # - azure-storage-file-datalake==12.16.0 # - azure-storage-file-share==12.17.0 # - chevron==0.14.0 -# - cryptography==43.0.0 +# - cryptography==43.0.1 # - fqdn==1.5.1 # - psycopg==3.2.1 # - pulumi-azure-native==2.58.0 @@ -121,7 +121,7 @@ chevron==0.14.0 # via hatch.envs.default click==8.1.7 # via typer -cryptography==43.0.0 +cryptography==43.0.1 # via # hatch.envs.default # acme From 24c3d997227cb47f6cc62da2f5cc307c657efb92 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 4 Sep 2024 00:39:13 +0000 Subject: [PATCH 115/302] :arrow_up: Bump cryptography from 43.0.0 to 43.0.1 Bumps [cryptography](https://github.com/pyca/cryptography) from 43.0.0 to 43.0.1. - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/43.0.0...43.0.1) --- updated-dependencies: - dependency-name: cryptography dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index ee20e04b88..aedd107220 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,7 @@ dependencies = [ "azure-storage-file-datalake==12.16.0", "azure-storage-file-share==12.17.0", "chevron==0.14.0", - "cryptography==43.0.0", + "cryptography==43.0.1", "fqdn==1.5.1", "psycopg==3.2.1", "pulumi-azure-native==2.58.0", From 47cf3667316ebc5eeabdde15d2a8d7cb7ef76336 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Wed, 4 Sep 2024 00:45:28 +0000 Subject: [PATCH 116/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-lint.txt | 2 +- .hatch/requirements-test.txt | 4 ++-- .hatch/requirements.txt | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index 6537e891a5..7b681b99d9 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -135,7 +135,7 @@ mypy-extensions==1.0.0 # via # black # mypy -numpy==2.1.0 +numpy==2.1.1 # via pandas-stubs onigurumacffi==1.3.0 # via ansible-navigator diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index fc4a1be95f..8458c182a9 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -21,7 +21,7 @@ # - azure-storage-file-datalake==12.16.0 # - azure-storage-file-share==12.17.0 # - chevron==0.14.0 -# - cryptography==43.0.1 +# - cryptography==43.0.0 # - fqdn==1.5.1 # - psycopg==3.2.1 # - pulumi-azure-native==2.58.0 @@ -181,7 +181,7 @@ click==8.1.7 # typer coverage==7.6.1 # via hatch.envs.test -cryptography==43.0.1 +cryptography==43.0.0 # via # -c .hatch/requirements.txt # hatch.envs.test diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt index ca5fe00336..e91a41ccd1 100644 --- a/.hatch/requirements.txt +++ b/.hatch/requirements.txt @@ -19,7 +19,7 @@ # - azure-storage-file-datalake==12.16.0 # - azure-storage-file-share==12.17.0 # - chevron==0.14.0 -# - cryptography==43.0.1 +# - cryptography==43.0.0 # - fqdn==1.5.1 # - psycopg==3.2.1 # - pulumi-azure-native==2.58.0 @@ -121,7 +121,7 @@ chevron==0.14.0 # via hatch.envs.default click==8.1.7 # via typer -cryptography==43.0.1 +cryptography==43.0.0 # via # hatch.envs.default # acme From 77c01a9c65763068782db21c515e4b8966573499 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Wed, 4 Sep 2024 00:45:41 +0000 Subject: [PATCH 117/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-lint.txt | 4 ++-- .hatch/requirements-test.txt | 6 +++--- .hatch/requirements.txt | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index a7b04ea1cc..7b681b99d9 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -81,7 +81,7 @@ click-help-colors==0.9.4 # via molecule colorama==0.4.6 # via tox -cryptography==43.0.0 +cryptography==43.0.1 # via ansible-core distlib==0.3.8 # via @@ -135,7 +135,7 @@ mypy-extensions==1.0.0 # via # black # mypy -numpy==2.1.0 +numpy==2.1.1 # via pandas-stubs onigurumacffi==1.3.0 # via ansible-navigator diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index 8458c182a9..472849bb22 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -1,7 +1,7 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# [constraints] .hatch/requirements.txt (SHA256: 6fc3384d70e2398ec8bf13c97bbb52f561f0a65ddd18d90f81f7d7dd20a209d7) +# [constraints] .hatch/requirements.txt (SHA256: 708a9ffce4fcf182c879e0116140849bf78eac89e883d410dfa5fd9535d4d040) # # - appdirs==1.4.4 # - azure-core==1.30.2 @@ -21,7 +21,7 @@ # - azure-storage-file-datalake==12.16.0 # - azure-storage-file-share==12.17.0 # - chevron==0.14.0 -# - cryptography==43.0.0 +# - cryptography==43.0.1 # - fqdn==1.5.1 # - psycopg==3.2.1 # - pulumi-azure-native==2.58.0 @@ -181,7 +181,7 @@ click==8.1.7 # typer coverage==7.6.1 # via hatch.envs.test -cryptography==43.0.0 +cryptography==43.0.1 # via # -c .hatch/requirements.txt # hatch.envs.test diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt index e91a41ccd1..ca5fe00336 100644 --- a/.hatch/requirements.txt +++ b/.hatch/requirements.txt @@ -19,7 +19,7 @@ # - azure-storage-file-datalake==12.16.0 # - azure-storage-file-share==12.17.0 # - chevron==0.14.0 -# - cryptography==43.0.0 +# - cryptography==43.0.1 # - fqdn==1.5.1 # - psycopg==3.2.1 # - pulumi-azure-native==2.58.0 @@ -121,7 +121,7 @@ chevron==0.14.0 # via hatch.envs.default click==8.1.7 # via typer -cryptography==43.0.0 +cryptography==43.0.1 # via # hatch.envs.default # acme From 71eb3a2254d81298fc1848ea8fb31090b36eaa41 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 03:14:52 +0000 Subject: [PATCH 118/302] :arrow_up: Bump peter-evans/create-pull-request from 6.1.0 to 7.0.1 Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 6.1.0 to 7.0.1. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v6.1.0...v7.0.1) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/update_docker_versions.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update_docker_versions.yaml b/.github/workflows/update_docker_versions.yaml index 6c26183892..67e08f9d1b 100644 --- a/.github/workflows/update_docker_versions.yaml +++ b/.github/workflows/update_docker_versions.yaml @@ -40,7 +40,7 @@ jobs: - name: Create pull request if: ${{ ! env.ACT }} id: pull-request - uses: peter-evans/create-pull-request@v6.1.0 + uses: peter-evans/create-pull-request@v7.0.1 with: author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> base: develop From 0a50b3e7d4a0f207f47644a7470a6f4147bf6db3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 03:34:57 +0000 Subject: [PATCH 119/302] :arrow_up: Bump the production-dependencies group with 7 updates Bumps the production-dependencies group with 7 updates: | Package | From | To | | --- | --- | --- | | [cryptography](https://github.com/pyca/cryptography) | `43.0.0` | `43.0.1` | | [pulumi-azure-native](https://github.com/pulumi/pulumi-azure-native) | `2.58.0` | `2.59.0` | | [pulumi-random](https://github.com/pulumi/pulumi-random) | `4.16.3` | `4.16.4` | | [pulumi](https://github.com/pulumi/pulumi) | `3.130.0` | `3.131.0` | | [pydantic](https://github.com/pydantic/pydantic) | `2.8.2` | `2.9.0` | | [ruff](https://github.com/astral-sh/ruff) | `0.6.3` | `0.6.4` | | [types-requests](https://github.com/python/typeshed) | `2.32.0.20240712` | `2.32.0.20240907` | Updates `cryptography` from 43.0.0 to 43.0.1 - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/43.0.0...43.0.1) Updates `pulumi-azure-native` from 2.58.0 to 2.59.0 - [Release notes](https://github.com/pulumi/pulumi-azure-native/releases) - [Changelog](https://github.com/pulumi/pulumi-azure-native/blob/master/CHANGELOG_OLD.md) - [Commits](https://github.com/pulumi/pulumi-azure-native/compare/v2.58.0...v2.59.0) Updates `pulumi-random` from 4.16.3 to 4.16.4 - [Release notes](https://github.com/pulumi/pulumi-random/releases) - [Changelog](https://github.com/pulumi/pulumi-random/blob/master/CHANGELOG_OLD.md) - [Commits](https://github.com/pulumi/pulumi-random/compare/v4.16.3...v4.16.4) Updates `pulumi` from 3.130.0 to 3.131.0 - [Release notes](https://github.com/pulumi/pulumi/releases) - [Changelog](https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md) - [Commits](https://github.com/pulumi/pulumi/compare/v3.130.0...v3.131.0) Updates `pydantic` from 2.8.2 to 2.9.0 - [Release notes](https://github.com/pydantic/pydantic/releases) - [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md) - [Commits](https://github.com/pydantic/pydantic/compare/v2.8.2...v2.9.0) Updates `ruff` from 0.6.3 to 0.6.4 - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.6.3...0.6.4) Updates `types-requests` from 2.32.0.20240712 to 2.32.0.20240907 - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: cryptography dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: pulumi-azure-native dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: pulumi-random dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: pulumi dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: pydantic dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: ruff dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: types-requests dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies ... Signed-off-by: dependabot[bot] --- pyproject.toml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ee20e04b88..5c6290c4c7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,13 +42,13 @@ dependencies = [ "azure-storage-file-datalake==12.16.0", "azure-storage-file-share==12.17.0", "chevron==0.14.0", - "cryptography==43.0.0", + "cryptography==43.0.1", "fqdn==1.5.1", "psycopg==3.2.1", - "pulumi-azure-native==2.58.0", - "pulumi-random==4.16.3", - "pulumi==3.130.0", - "pydantic==2.8.2", + "pulumi-azure-native==2.59.0", + "pulumi-random==4.16.4", + "pulumi==3.131.0", + "pydantic==2.9.0", "pyjwt[crypto]==2.9.0", "pytz==2024.1", "pyyaml==6.0.2", @@ -77,13 +77,13 @@ lint = [ "black==24.8.0", "mypy==1.11.2", "pandas-stubs==2.2.2.240807", - "pydantic==2.8.2", - "ruff==0.6.3", + "pydantic==2.9.0", + "ruff==0.6.4", "types-appdirs==1.4.3.5", "types-chevron==0.14.2.20240310", "types-pytz==2024.1.0.20240417", "types-pyyaml==6.0.12.20240808", - "types-requests==2.32.0.20240712", + "types-requests==2.32.0.20240907", ] test = [ "coverage==7.6.1", From bac1896c47c3e193059fd2447a656630252f4262 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 9 Sep 2024 03:41:07 +0000 Subject: [PATCH 120/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-lint.txt | 32 +++++++++++++++++--------------- .hatch/requirements-test.txt | 32 ++++++++++++++++++-------------- .hatch/requirements.txt | 28 +++++++++++++++------------- 3 files changed, 50 insertions(+), 42 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index a7b04ea1cc..434cdc639d 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -6,13 +6,13 @@ # - black==24.8.0 # - mypy==1.11.2 # - pandas-stubs==2.2.2.240807 -# - pydantic==2.8.2 -# - ruff==0.6.3 +# - pydantic==2.9.0 +# - ruff==0.6.4 # - types-appdirs==1.4.3.5 # - types-chevron==0.14.2.20240310 # - types-pytz==2024.1.0.20240417 # - types-pyyaml==6.0.12.20240808 -# - types-requests==2.32.0.20240712 +# - types-requests==2.32.0.20240907 # annotated-types==0.7.0 @@ -66,7 +66,7 @@ bracex==2.5 # via wcmatch cachetools==5.5.0 # via tox -cffi==1.17.0 +cffi==1.17.1 # via # cryptography # onigurumacffi @@ -81,7 +81,7 @@ click-help-colors==0.9.4 # via molecule colorama==0.4.6 # via tox -cryptography==43.0.0 +cryptography==43.0.1 # via ansible-core distlib==0.3.8 # via @@ -95,7 +95,7 @@ enrich==1.2.7 # via molecule execnet==2.1.1 # via pytest-xdist -filelock==3.15.4 +filelock==3.16.0 # via # ansible-lint # tox @@ -135,7 +135,7 @@ mypy-extensions==1.0.0 # via # black # mypy -numpy==2.1.0 +numpy==2.1.1 # via pandas-stubs onigurumacffi==1.3.0 # via ansible-navigator @@ -166,7 +166,7 @@ pbr==6.1.0 # via bindep pexpect==4.9.0 # via ansible-runner -platformdirs==4.2.2 +platformdirs==4.3.2 # via # black # tox @@ -180,9 +180,9 @@ ptyprocess==0.7.0 # via pexpect pycparser==2.22 # via cffi -pydantic==2.8.2 +pydantic==2.9.0 # via hatch.envs.lint -pydantic-core==2.20.1 +pydantic-core==2.23.2 # via pydantic pygments==2.18.0 # via rich @@ -235,14 +235,14 @@ ruamel-yaml==0.18.6 # via ansible-lint ruamel-yaml-clib==0.2.8 # via ruamel-yaml -ruff==0.6.3 +ruff==0.6.4 # via hatch.envs.lint subprocess-tee==0.4.2 # via # ansible-compat # ansible-dev-environment # ansible-lint -tox==4.18.0 +tox==4.18.1 # via tox-ansible tox-ansible==24.8.0 # via ansible-dev-tools @@ -256,7 +256,7 @@ types-pytz==2024.1.0.20240417 # pandas-stubs types-pyyaml==6.0.12.20240808 # via hatch.envs.lint -types-requests==2.32.0.20240712 +types-requests==2.32.0.20240907 # via hatch.envs.lint typing-extensions==4.12.2 # via @@ -264,10 +264,12 @@ typing-extensions==4.12.2 # pydantic # pydantic-core tzdata==2024.1 - # via ansible-navigator + # via + # ansible-navigator + # pydantic urllib3==2.2.2 # via types-requests -virtualenv==20.26.3 +virtualenv==20.26.4 # via tox wcmatch==9.0 # via diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index 8458c182a9..330b3cba3e 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -1,7 +1,7 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# [constraints] .hatch/requirements.txt (SHA256: 6fc3384d70e2398ec8bf13c97bbb52f561f0a65ddd18d90f81f7d7dd20a209d7) +# [constraints] .hatch/requirements.txt (SHA256: 2177bc09e5b9a737487d4d13abe4e8c165b743b8e0e8a8af19249130fafb5a3c) # # - appdirs==1.4.4 # - azure-core==1.30.2 @@ -21,13 +21,13 @@ # - azure-storage-file-datalake==12.16.0 # - azure-storage-file-share==12.17.0 # - chevron==0.14.0 -# - cryptography==43.0.0 +# - cryptography==43.0.1 # - fqdn==1.5.1 # - psycopg==3.2.1 -# - pulumi-azure-native==2.58.0 -# - pulumi-random==4.16.3 -# - pulumi==3.130.0 -# - pydantic==2.8.2 +# - pulumi-azure-native==2.59.0 +# - pulumi-random==4.16.4 +# - pulumi==3.131.0 +# - pydantic==2.9.0 # - pyjwt[crypto]==2.9.0 # - pytz==2024.1 # - pyyaml==6.0.2 @@ -163,7 +163,7 @@ certifi==2024.8.30 # -c .hatch/requirements.txt # msrest # requests -cffi==1.17.0 +cffi==1.17.1 # via # -c .hatch/requirements.txt # cryptography @@ -181,7 +181,7 @@ click==8.1.7 # typer coverage==7.6.1 # via hatch.envs.test -cryptography==43.0.0 +cryptography==43.0.1 # via # -c .hatch/requirements.txt # hatch.envs.test @@ -246,7 +246,7 @@ mdurl==0.1.2 # via # -c .hatch/requirements.txt # markdown-it-py -msal==1.30.0 +msal==1.31.0 # via # -c .hatch/requirements.txt # azure-identity @@ -285,17 +285,17 @@ psycopg==3.2.1 # via # -c .hatch/requirements.txt # hatch.envs.test -pulumi==3.130.0 +pulumi==3.131.0 # via # -c .hatch/requirements.txt # hatch.envs.test # pulumi-azure-native # pulumi-random -pulumi-azure-native==2.58.0 +pulumi-azure-native==2.59.0 # via # -c .hatch/requirements.txt # hatch.envs.test -pulumi-random==4.16.3 +pulumi-random==4.16.4 # via # -c .hatch/requirements.txt # hatch.envs.test @@ -303,11 +303,11 @@ pycparser==2.22 # via # -c .hatch/requirements.txt # cffi -pydantic==2.8.2 +pydantic==2.9.0 # via # -c .hatch/requirements.txt # hatch.envs.test -pydantic-core==2.20.1 +pydantic-core==2.23.2 # via # -c .hatch/requirements.txt # pydantic @@ -410,6 +410,10 @@ typing-extensions==4.12.2 # pydantic # pydantic-core # typer +tzdata==2024.1 + # via + # -c .hatch/requirements.txt + # pydantic urllib3==2.2.2 # via # -c .hatch/requirements.txt diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt index e91a41ccd1..b93fe6b24a 100644 --- a/.hatch/requirements.txt +++ b/.hatch/requirements.txt @@ -19,13 +19,13 @@ # - azure-storage-file-datalake==12.16.0 # - azure-storage-file-share==12.17.0 # - chevron==0.14.0 -# - cryptography==43.0.0 +# - cryptography==43.0.1 # - fqdn==1.5.1 # - psycopg==3.2.1 -# - pulumi-azure-native==2.58.0 -# - pulumi-random==4.16.3 -# - pulumi==3.130.0 -# - pydantic==2.8.2 +# - pulumi-azure-native==2.59.0 +# - pulumi-random==4.16.4 +# - pulumi==3.131.0 +# - pydantic==2.9.0 # - pyjwt[crypto]==2.9.0 # - pytz==2024.1 # - pyyaml==6.0.2 @@ -113,7 +113,7 @@ certifi==2024.8.30 # via # msrest # requests -cffi==1.17.0 +cffi==1.17.1 # via cryptography charset-normalizer==3.3.2 # via requests @@ -121,7 +121,7 @@ chevron==0.14.0 # via hatch.envs.default click==8.1.7 # via typer -cryptography==43.0.0 +cryptography==43.0.1 # via # hatch.envs.default # acme @@ -164,7 +164,7 @@ markdown-it-py==3.0.0 # via rich mdurl==0.1.2 # via markdown-it-py -msal==1.30.0 +msal==1.31.0 # via # azure-identity # msal-extensions @@ -186,20 +186,20 @@ protobuf==4.25.4 # via pulumi psycopg==3.2.1 # via hatch.envs.default -pulumi==3.130.0 +pulumi==3.131.0 # via # hatch.envs.default # pulumi-azure-native # pulumi-random -pulumi-azure-native==2.58.0 +pulumi-azure-native==2.59.0 # via hatch.envs.default -pulumi-random==4.16.3 +pulumi-random==4.16.4 # via hatch.envs.default pycparser==2.22 # via cffi -pydantic==2.8.2 +pydantic==2.9.0 # via hatch.envs.default -pydantic-core==2.20.1 +pydantic-core==2.23.2 # via pydantic pygments==2.18.0 # via rich @@ -267,6 +267,8 @@ typing-extensions==4.12.2 # pydantic # pydantic-core # typer +tzdata==2024.1 + # via pydantic urllib3==2.2.2 # via requests validators==0.28.3 From 37c8ce4ea3f1151d4db20d2b1be29f65c103a43f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 10:05:57 +0000 Subject: [PATCH 121/302] :arrow_up: Bump the production-dependencies group across 1 directory with 7 updates Bumps the production-dependencies group with 7 updates in the / directory: | Package | From | To | | --- | --- | --- | | [cryptography](https://github.com/pyca/cryptography) | `43.0.0` | `43.0.1` | | [pulumi-azure-native](https://github.com/pulumi/pulumi-azure-native) | `2.58.0` | `2.59.0` | | [pulumi-random](https://github.com/pulumi/pulumi-random) | `4.16.3` | `4.16.4` | | [pulumi](https://github.com/pulumi/pulumi) | `3.130.0` | `3.131.0` | | [pydantic](https://github.com/pydantic/pydantic) | `2.8.2` | `2.9.1` | | [ruff](https://github.com/astral-sh/ruff) | `0.6.3` | `0.6.4` | | [types-requests](https://github.com/python/typeshed) | `2.32.0.20240712` | `2.32.0.20240907` | Updates `cryptography` from 43.0.0 to 43.0.1 - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/43.0.0...43.0.1) Updates `pulumi-azure-native` from 2.58.0 to 2.59.0 - [Release notes](https://github.com/pulumi/pulumi-azure-native/releases) - [Changelog](https://github.com/pulumi/pulumi-azure-native/blob/master/CHANGELOG_OLD.md) - [Commits](https://github.com/pulumi/pulumi-azure-native/compare/v2.58.0...v2.59.0) Updates `pulumi-random` from 4.16.3 to 4.16.4 - [Release notes](https://github.com/pulumi/pulumi-random/releases) - [Changelog](https://github.com/pulumi/pulumi-random/blob/master/CHANGELOG_OLD.md) - [Commits](https://github.com/pulumi/pulumi-random/compare/v4.16.3...v4.16.4) Updates `pulumi` from 3.130.0 to 3.131.0 - [Release notes](https://github.com/pulumi/pulumi/releases) - [Changelog](https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md) - [Commits](https://github.com/pulumi/pulumi/compare/v3.130.0...v3.131.0) Updates `pydantic` from 2.8.2 to 2.9.1 - [Release notes](https://github.com/pydantic/pydantic/releases) - [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md) - [Commits](https://github.com/pydantic/pydantic/compare/v2.8.2...v2.9.1) Updates `ruff` from 0.6.3 to 0.6.4 - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.6.3...0.6.4) Updates `types-requests` from 2.32.0.20240712 to 2.32.0.20240907 - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: cryptography dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: pulumi-azure-native dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: pulumi-random dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: pulumi dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: pydantic dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: ruff dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: types-requests dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies ... Signed-off-by: dependabot[bot] --- pyproject.toml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ee20e04b88..21f3e59fc7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,13 +42,13 @@ dependencies = [ "azure-storage-file-datalake==12.16.0", "azure-storage-file-share==12.17.0", "chevron==0.14.0", - "cryptography==43.0.0", + "cryptography==43.0.1", "fqdn==1.5.1", "psycopg==3.2.1", - "pulumi-azure-native==2.58.0", - "pulumi-random==4.16.3", - "pulumi==3.130.0", - "pydantic==2.8.2", + "pulumi-azure-native==2.59.0", + "pulumi-random==4.16.4", + "pulumi==3.131.0", + "pydantic==2.9.1", "pyjwt[crypto]==2.9.0", "pytz==2024.1", "pyyaml==6.0.2", @@ -77,13 +77,13 @@ lint = [ "black==24.8.0", "mypy==1.11.2", "pandas-stubs==2.2.2.240807", - "pydantic==2.8.2", - "ruff==0.6.3", + "pydantic==2.9.1", + "ruff==0.6.4", "types-appdirs==1.4.3.5", "types-chevron==0.14.2.20240310", "types-pytz==2024.1.0.20240417", "types-pyyaml==6.0.12.20240808", - "types-requests==2.32.0.20240712", + "types-requests==2.32.0.20240907", ] test = [ "coverage==7.6.1", From 94a01ff814b48253420a772d3ef6b4d7cc7fe93a Mon Sep 17 00:00:00 2001 From: craddm Date: Mon, 9 Sep 2024 10:12:42 +0000 Subject: [PATCH 122/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-lint.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index 434cdc639d..4758e2185f 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -24,7 +24,7 @@ ansible-builder==3.1.0 # ansible-dev-environment # ansible-dev-tools # ansible-navigator -ansible-compat==24.8.0 +ansible-compat==24.9.0 # via # ansible-lint # molecule @@ -36,9 +36,9 @@ ansible-core==2.17.3 # ansible-lint # molecule # pytest-ansible -ansible-creator==24.8.0 +ansible-creator==24.9.0 # via ansible-dev-tools -ansible-dev-environment==24.7.0 +ansible-dev-environment==24.9.0 # via ansible-dev-tools ansible-dev-tools==24.8.0 # via hatch.envs.lint From ff63fa85de8f59c83699b75229f570ba724a98df Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 9 Sep 2024 10:14:11 +0000 Subject: [PATCH 123/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-lint.txt | 30 +++++++++++++++--------------- .hatch/requirements-test.txt | 28 ++++++++++++++-------------- .hatch/requirements.txt | 26 +++++++++++++------------- 3 files changed, 42 insertions(+), 42 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index 7b681b99d9..7290af1e06 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -6,13 +6,13 @@ # - black==24.8.0 # - mypy==1.11.2 # - pandas-stubs==2.2.2.240807 -# - pydantic==2.8.2 -# - ruff==0.6.3 +# - pydantic==2.9.1 +# - ruff==0.6.4 # - types-appdirs==1.4.3.5 # - types-chevron==0.14.2.20240310 # - types-pytz==2024.1.0.20240417 # - types-pyyaml==6.0.12.20240808 -# - types-requests==2.32.0.20240712 +# - types-requests==2.32.0.20240907 # annotated-types==0.7.0 @@ -24,7 +24,7 @@ ansible-builder==3.1.0 # ansible-dev-environment # ansible-dev-tools # ansible-navigator -ansible-compat==24.8.0 +ansible-compat==24.9.0 # via # ansible-lint # molecule @@ -36,9 +36,9 @@ ansible-core==2.17.3 # ansible-lint # molecule # pytest-ansible -ansible-creator==24.8.0 +ansible-creator==24.9.0 # via ansible-dev-tools -ansible-dev-environment==24.7.0 +ansible-dev-environment==24.9.0 # via ansible-dev-tools ansible-dev-tools==24.8.0 # via hatch.envs.lint @@ -66,7 +66,7 @@ bracex==2.5 # via wcmatch cachetools==5.5.0 # via tox -cffi==1.17.0 +cffi==1.17.1 # via # cryptography # onigurumacffi @@ -95,7 +95,7 @@ enrich==1.2.7 # via molecule execnet==2.1.1 # via pytest-xdist -filelock==3.15.4 +filelock==3.16.0 # via # ansible-lint # tox @@ -166,7 +166,7 @@ pbr==6.1.0 # via bindep pexpect==4.9.0 # via ansible-runner -platformdirs==4.2.2 +platformdirs==4.3.2 # via # black # tox @@ -180,9 +180,9 @@ ptyprocess==0.7.0 # via pexpect pycparser==2.22 # via cffi -pydantic==2.8.2 +pydantic==2.9.1 # via hatch.envs.lint -pydantic-core==2.20.1 +pydantic-core==2.23.3 # via pydantic pygments==2.18.0 # via rich @@ -235,14 +235,14 @@ ruamel-yaml==0.18.6 # via ansible-lint ruamel-yaml-clib==0.2.8 # via ruamel-yaml -ruff==0.6.3 +ruff==0.6.4 # via hatch.envs.lint subprocess-tee==0.4.2 # via # ansible-compat # ansible-dev-environment # ansible-lint -tox==4.18.0 +tox==4.18.1 # via tox-ansible tox-ansible==24.8.0 # via ansible-dev-tools @@ -256,7 +256,7 @@ types-pytz==2024.1.0.20240417 # pandas-stubs types-pyyaml==6.0.12.20240808 # via hatch.envs.lint -types-requests==2.32.0.20240712 +types-requests==2.32.0.20240907 # via hatch.envs.lint typing-extensions==4.12.2 # via @@ -267,7 +267,7 @@ tzdata==2024.1 # via ansible-navigator urllib3==2.2.2 # via types-requests -virtualenv==20.26.3 +virtualenv==20.26.4 # via tox wcmatch==9.0 # via diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index 8458c182a9..fc6192643a 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -1,7 +1,7 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# [constraints] .hatch/requirements.txt (SHA256: 6fc3384d70e2398ec8bf13c97bbb52f561f0a65ddd18d90f81f7d7dd20a209d7) +# [constraints] .hatch/requirements.txt (SHA256: c14e839cb8bd2024658fcf9f42498ef62d1b24ce75057d607bf6787ce2a89f1b) # # - appdirs==1.4.4 # - azure-core==1.30.2 @@ -21,13 +21,13 @@ # - azure-storage-file-datalake==12.16.0 # - azure-storage-file-share==12.17.0 # - chevron==0.14.0 -# - cryptography==43.0.0 +# - cryptography==43.0.1 # - fqdn==1.5.1 # - psycopg==3.2.1 -# - pulumi-azure-native==2.58.0 -# - pulumi-random==4.16.3 -# - pulumi==3.130.0 -# - pydantic==2.8.2 +# - pulumi-azure-native==2.59.0 +# - pulumi-random==4.16.4 +# - pulumi==3.131.0 +# - pydantic==2.9.1 # - pyjwt[crypto]==2.9.0 # - pytz==2024.1 # - pyyaml==6.0.2 @@ -163,7 +163,7 @@ certifi==2024.8.30 # -c .hatch/requirements.txt # msrest # requests -cffi==1.17.0 +cffi==1.17.1 # via # -c .hatch/requirements.txt # cryptography @@ -181,7 +181,7 @@ click==8.1.7 # typer coverage==7.6.1 # via hatch.envs.test -cryptography==43.0.0 +cryptography==43.0.1 # via # -c .hatch/requirements.txt # hatch.envs.test @@ -246,7 +246,7 @@ mdurl==0.1.2 # via # -c .hatch/requirements.txt # markdown-it-py -msal==1.30.0 +msal==1.31.0 # via # -c .hatch/requirements.txt # azure-identity @@ -285,17 +285,17 @@ psycopg==3.2.1 # via # -c .hatch/requirements.txt # hatch.envs.test -pulumi==3.130.0 +pulumi==3.131.0 # via # -c .hatch/requirements.txt # hatch.envs.test # pulumi-azure-native # pulumi-random -pulumi-azure-native==2.58.0 +pulumi-azure-native==2.59.0 # via # -c .hatch/requirements.txt # hatch.envs.test -pulumi-random==4.16.3 +pulumi-random==4.16.4 # via # -c .hatch/requirements.txt # hatch.envs.test @@ -303,11 +303,11 @@ pycparser==2.22 # via # -c .hatch/requirements.txt # cffi -pydantic==2.8.2 +pydantic==2.9.1 # via # -c .hatch/requirements.txt # hatch.envs.test -pydantic-core==2.20.1 +pydantic-core==2.23.3 # via # -c .hatch/requirements.txt # pydantic diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt index e91a41ccd1..3ff15e9afa 100644 --- a/.hatch/requirements.txt +++ b/.hatch/requirements.txt @@ -19,13 +19,13 @@ # - azure-storage-file-datalake==12.16.0 # - azure-storage-file-share==12.17.0 # - chevron==0.14.0 -# - cryptography==43.0.0 +# - cryptography==43.0.1 # - fqdn==1.5.1 # - psycopg==3.2.1 -# - pulumi-azure-native==2.58.0 -# - pulumi-random==4.16.3 -# - pulumi==3.130.0 -# - pydantic==2.8.2 +# - pulumi-azure-native==2.59.0 +# - pulumi-random==4.16.4 +# - pulumi==3.131.0 +# - pydantic==2.9.1 # - pyjwt[crypto]==2.9.0 # - pytz==2024.1 # - pyyaml==6.0.2 @@ -113,7 +113,7 @@ certifi==2024.8.30 # via # msrest # requests -cffi==1.17.0 +cffi==1.17.1 # via cryptography charset-normalizer==3.3.2 # via requests @@ -121,7 +121,7 @@ chevron==0.14.0 # via hatch.envs.default click==8.1.7 # via typer -cryptography==43.0.0 +cryptography==43.0.1 # via # hatch.envs.default # acme @@ -164,7 +164,7 @@ markdown-it-py==3.0.0 # via rich mdurl==0.1.2 # via markdown-it-py -msal==1.30.0 +msal==1.31.0 # via # azure-identity # msal-extensions @@ -186,20 +186,20 @@ protobuf==4.25.4 # via pulumi psycopg==3.2.1 # via hatch.envs.default -pulumi==3.130.0 +pulumi==3.131.0 # via # hatch.envs.default # pulumi-azure-native # pulumi-random -pulumi-azure-native==2.58.0 +pulumi-azure-native==2.59.0 # via hatch.envs.default -pulumi-random==4.16.3 +pulumi-random==4.16.4 # via hatch.envs.default pycparser==2.22 # via cffi -pydantic==2.8.2 +pydantic==2.9.1 # via hatch.envs.default -pydantic-core==2.20.1 +pydantic-core==2.23.3 # via pydantic pygments==2.18.0 # via rich From 3dd6a4f8bc934a20f11de49202efb6d7b7897d66 Mon Sep 17 00:00:00 2001 From: craddm Date: Mon, 9 Sep 2024 11:29:26 +0000 Subject: [PATCH 124/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-lint.txt | 4 +--- .hatch/requirements-test.txt | 6 +----- .hatch/requirements.txt | 2 -- 3 files changed, 2 insertions(+), 10 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index 43a3c02d17..7290af1e06 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -264,9 +264,7 @@ typing-extensions==4.12.2 # pydantic # pydantic-core tzdata==2024.1 - # via - # ansible-navigator - # pydantic + # via ansible-navigator urllib3==2.2.2 # via types-requests virtualenv==20.26.4 diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index ac19272777..fc6192643a 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -1,7 +1,7 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# [constraints] .hatch/requirements.txt (SHA256: 2177bc09e5b9a737487d4d13abe4e8c165b743b8e0e8a8af19249130fafb5a3c) +# [constraints] .hatch/requirements.txt (SHA256: c14e839cb8bd2024658fcf9f42498ef62d1b24ce75057d607bf6787ce2a89f1b) # # - appdirs==1.4.4 # - azure-core==1.30.2 @@ -410,10 +410,6 @@ typing-extensions==4.12.2 # pydantic # pydantic-core # typer -tzdata==2024.1 - # via - # -c .hatch/requirements.txt - # pydantic urllib3==2.2.2 # via # -c .hatch/requirements.txt diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt index 5f932a2866..3ff15e9afa 100644 --- a/.hatch/requirements.txt +++ b/.hatch/requirements.txt @@ -267,8 +267,6 @@ typing-extensions==4.12.2 # pydantic # pydantic-core # typer -tzdata==2024.1 - # via pydantic urllib3==2.2.2 # via requests validators==0.28.3 From 7cc8c64a0e33cbb1c9a76374bc1e12db19f00c38 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 13 Sep 2024 12:31:26 +0100 Subject: [PATCH 125/302] Correct error for non-existent config --- data_safe_haven/commands/config.py | 3 ++- data_safe_haven/serialisers/azure_serialisable_model.py | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data_safe_haven/commands/config.py b/data_safe_haven/commands/config.py index 218c735aa9..08f17005c9 100644 --- a/data_safe_haven/commands/config.py +++ b/data_safe_haven/commands/config.py @@ -8,6 +8,7 @@ from data_safe_haven import console from data_safe_haven.config import ContextManager, DSHPulumiConfig, SHMConfig, SREConfig from data_safe_haven.exceptions import ( + DataSafeHavenAzureError, DataSafeHavenAzureStorageError, DataSafeHavenConfigError, DataSafeHavenError, @@ -130,7 +131,7 @@ def show( except DataSafeHavenAzureStorageError as exc: logger.critical("Ensure SHM is deployed before attempting to use SRE configs.") raise typer.Exit(1) from exc - except DataSafeHavenError as exc: + except DataSafeHavenAzureError as exc: logger.critical( f"No configuration exists for an SRE named '{name}' for the selected context." ) diff --git a/data_safe_haven/serialisers/azure_serialisable_model.py b/data_safe_haven/serialisers/azure_serialisable_model.py index 389522376f..33fa3ead6c 100644 --- a/data_safe_haven/serialisers/azure_serialisable_model.py +++ b/data_safe_haven/serialisers/azure_serialisable_model.py @@ -5,7 +5,6 @@ from data_safe_haven.exceptions import ( DataSafeHavenAzureError, DataSafeHavenAzureStorageError, - DataSafeHavenError, ) from data_safe_haven.external import AzureSdk @@ -44,7 +43,7 @@ def from_remote( except DataSafeHavenAzureStorageError as exc: msg = f"Storage account '{context.storage_account_name}' does not exist." raise DataSafeHavenAzureStorageError(msg) from exc - except DataSafeHavenError as exc: + except DataSafeHavenAzureError as exc: msg = f"Could not load file '{filename or cls.default_filename}' from Azure storage." raise DataSafeHavenAzureError(msg) from exc From 39244d210aa213f167d5e9c47b9dde35012a0e66 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 13 Sep 2024 12:43:17 +0100 Subject: [PATCH 126/302] Handle failure to validate --- data_safe_haven/commands/config.py | 6 ++++++ data_safe_haven/serialisers/azure_serialisable_model.py | 4 ++++ data_safe_haven/serialisers/yaml_serialisable_model.py | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/data_safe_haven/commands/config.py b/data_safe_haven/commands/config.py index 08f17005c9..2f6d092d19 100644 --- a/data_safe_haven/commands/config.py +++ b/data_safe_haven/commands/config.py @@ -13,6 +13,7 @@ DataSafeHavenConfigError, DataSafeHavenError, DataSafeHavenPulumiError, + DataSafeHavenTypeError, ) from data_safe_haven.external.api.azure_sdk import AzureSdk from data_safe_haven.infrastructure import SREProjectManager @@ -136,6 +137,11 @@ def show( f"No configuration exists for an SRE named '{name}' for the selected context." ) raise typer.Exit(1) from exc + except DataSafeHavenTypeError as exc: + logger.warning( + f"Remote configuration for SRE '{name}' is not valid." + ) + raise typer.Exit(1) from exc config_yaml = sre_config.to_yaml() if file: with open(file, "w") as outfile: diff --git a/data_safe_haven/serialisers/azure_serialisable_model.py b/data_safe_haven/serialisers/azure_serialisable_model.py index 33fa3ead6c..6c280298db 100644 --- a/data_safe_haven/serialisers/azure_serialisable_model.py +++ b/data_safe_haven/serialisers/azure_serialisable_model.py @@ -5,6 +5,7 @@ from data_safe_haven.exceptions import ( DataSafeHavenAzureError, DataSafeHavenAzureStorageError, + DataSafeHavenTypeError ) from data_safe_haven.external import AzureSdk @@ -46,6 +47,9 @@ def from_remote( except DataSafeHavenAzureError as exc: msg = f"Could not load file '{filename or cls.default_filename}' from Azure storage." raise DataSafeHavenAzureError(msg) from exc + except DataSafeHavenTypeError as exc: + msg = f"'{filename or cls.default_filename}' does not contain a valid {cls.config_type} configuration." + raise DataSafeHavenTypeError(msg) from exc @classmethod def from_remote_or_create( diff --git a/data_safe_haven/serialisers/yaml_serialisable_model.py b/data_safe_haven/serialisers/yaml_serialisable_model.py index 6541defbae..3423260fd5 100644 --- a/data_safe_haven/serialisers/yaml_serialisable_model.py +++ b/data_safe_haven/serialisers/yaml_serialisable_model.py @@ -56,7 +56,7 @@ def from_yaml(cls: type[T], settings_yaml: str) -> T: logger.error( f"[red]{'.'.join(map(str, error.get('loc', [])))}: {error.get('input', '')}[/] - {error.get('msg', '')}" ) - msg = f"Could not load {cls.config_type} configuration." + msg = f"{cls.config_type} configuration is invalid." raise DataSafeHavenTypeError(msg) from exc def to_filepath(self, config_file_path: PathType) -> None: From 3fd27d289b2b6c376fd250f3e536fec1684eb1e5 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 13 Sep 2024 12:54:31 +0100 Subject: [PATCH 127/302] Print invalid configuration file --- data_safe_haven/commands/config.py | 26 ++++++++++++++++++++++++-- data_safe_haven/config/__init__.py | 3 ++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/data_safe_haven/commands/config.py b/data_safe_haven/commands/config.py index 2f6d092d19..a6780d0f3a 100644 --- a/data_safe_haven/commands/config.py +++ b/data_safe_haven/commands/config.py @@ -6,7 +6,7 @@ import typer from data_safe_haven import console -from data_safe_haven.config import ContextManager, DSHPulumiConfig, SHMConfig, SREConfig +from data_safe_haven.config import ContextManager, DSHPulumiConfig, SHMConfig, SREConfig, sre_config_name from data_safe_haven.exceptions import ( DataSafeHavenAzureError, DataSafeHavenAzureStorageError, @@ -40,6 +40,7 @@ def show_shm( "or `dsh context switch` to select one." ) raise typer.Exit(1) from exc + try: config = SHMConfig.from_remote(context) except DataSafeHavenError as exc: @@ -47,7 +48,9 @@ def show_shm( "SHM must be deployed before its configuration can be displayed." ) raise typer.Exit(1) from exc + config_yaml = config.to_yaml() + if file: with open(file, "w") as outfile: outfile.write(config_yaml) @@ -68,7 +71,9 @@ def available() -> None: "or `dsh context switch` to select one." ) raise typer.Exit(1) from exc + azure_sdk = AzureSdk(context.subscription_name) + try: blobs = azure_sdk.list_blobs( container_name=context.storage_container_name, @@ -79,9 +84,11 @@ def available() -> None: except DataSafeHavenAzureStorageError as exc: logger.critical("Ensure SHM is deployed before attempting to use SRE configs.") raise typer.Exit(1) from exc + if not blobs: logger.info(f"No configurations found for context '{context.name}'.") raise typer.Exit(0) + pulumi_config = DSHPulumiConfig.from_remote(context) sre_status = {} for blob in blobs: @@ -94,6 +101,7 @@ def available() -> None: pulumi_config=pulumi_config, create_project=True, ) + try: sre_status[sre_config.name] = ( "No output values" not in stack.run_pulumi_command("stack output") @@ -103,6 +111,7 @@ def available() -> None: f"Failed to run Pulumi command querying stack outputs for SRE '{sre_config.name}'." ) raise typer.Exit(1) from exc + headers = ["SRE Name", "Deployed"] rows = [[name, "x" if deployed else ""] for name, deployed in sre_status.items()] console.print(f"Available SRE configurations for context '{context.name}':") @@ -119,6 +128,7 @@ def show( ) -> None: """Print the SRE configuration for the selected SRE and Data Safe Haven context""" logger = get_logger() + try: context = ContextManager.from_file().assert_context() except DataSafeHavenConfigError as exc: @@ -127,6 +137,7 @@ def show( "or `dsh context switch` to select one." ) raise typer.Exit(1) from exc + try: sre_config = SREConfig.from_remote_by_name(context, name) except DataSafeHavenAzureStorageError as exc: @@ -139,10 +150,20 @@ def show( raise typer.Exit(1) from exc except DataSafeHavenTypeError as exc: logger.warning( - f"Remote configuration for SRE '{name}' is not valid." + f"Remote configuration for SRE '{name}' is not valid. Dumping remote file." + ) + azure_sdk = AzureSdk(subscription_name=context.subscription_name) + config_yaml = azure_sdk.download_blob( + sre_config_name(name), + context.resource_group_name, + context.storage_account_name, + context.storage_container_name, ) + console.print(config_yaml) raise typer.Exit(1) from exc + config_yaml = sre_config.to_yaml() + if file: with open(file, "w") as outfile: outfile.write(config_yaml) @@ -167,6 +188,7 @@ def template( # Serialisation warnings are therefore suppressed to avoid misleading the users into # thinking there is a problem and contaminating the output. config_yaml = sre_config.to_yaml(warnings=False) + if file: with open(file, "w") as outfile: outfile.write(config_yaml) diff --git a/data_safe_haven/config/__init__.py b/data_safe_haven/config/__init__.py index b78acd6ab1..76d3bbfe67 100644 --- a/data_safe_haven/config/__init__.py +++ b/data_safe_haven/config/__init__.py @@ -3,7 +3,7 @@ from .dsh_pulumi_config import DSHPulumiConfig from .dsh_pulumi_project import DSHPulumiProject from .shm_config import SHMConfig -from .sre_config import SREConfig +from .sre_config import SREConfig, sre_config_name __all__ = [ "Context", @@ -12,4 +12,5 @@ "DSHPulumiProject", "SHMConfig", "SREConfig", + "sre_config_name", ] From a4b3bbb04c1da183637426c2f94efa34e8e965f9 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 13 Sep 2024 12:57:45 +0100 Subject: [PATCH 128/302] Run lint:fmt --- data_safe_haven/commands/config.py | 8 +++++++- data_safe_haven/serialisers/azure_serialisable_model.py | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/data_safe_haven/commands/config.py b/data_safe_haven/commands/config.py index a6780d0f3a..9bf49205a5 100644 --- a/data_safe_haven/commands/config.py +++ b/data_safe_haven/commands/config.py @@ -6,7 +6,13 @@ import typer from data_safe_haven import console -from data_safe_haven.config import ContextManager, DSHPulumiConfig, SHMConfig, SREConfig, sre_config_name +from data_safe_haven.config import ( + ContextManager, + DSHPulumiConfig, + SHMConfig, + SREConfig, + sre_config_name, +) from data_safe_haven.exceptions import ( DataSafeHavenAzureError, DataSafeHavenAzureStorageError, diff --git a/data_safe_haven/serialisers/azure_serialisable_model.py b/data_safe_haven/serialisers/azure_serialisable_model.py index 6c280298db..1a9f206485 100644 --- a/data_safe_haven/serialisers/azure_serialisable_model.py +++ b/data_safe_haven/serialisers/azure_serialisable_model.py @@ -5,7 +5,7 @@ from data_safe_haven.exceptions import ( DataSafeHavenAzureError, DataSafeHavenAzureStorageError, - DataSafeHavenTypeError + DataSafeHavenTypeError, ) from data_safe_haven.external import AzureSdk From 72bb514b056325676f230125be9ef39d75415be7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 03:26:45 +0000 Subject: [PATCH 129/302] :arrow_up: Bump peter-evans/create-pull-request from 7.0.1 to 7.0.2 Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.1 to 7.0.2. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v7.0.1...v7.0.2) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/update_docker_versions.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update_docker_versions.yaml b/.github/workflows/update_docker_versions.yaml index 67e08f9d1b..6e290c3447 100644 --- a/.github/workflows/update_docker_versions.yaml +++ b/.github/workflows/update_docker_versions.yaml @@ -40,7 +40,7 @@ jobs: - name: Create pull request if: ${{ ! env.ACT }} id: pull-request - uses: peter-evans/create-pull-request@v7.0.1 + uses: peter-evans/create-pull-request@v7.0.2 with: author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> base: develop From f61d14d47b61591fa4dc27a6c97108a2fe91576b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 03:59:37 +0000 Subject: [PATCH 130/302] :arrow_up: Bump the production-dependencies group with 13 updates Bumps the production-dependencies group with 13 updates: | Package | From | To | | --- | --- | --- | | [azure-core](https://github.com/Azure/azure-sdk-for-python) | `1.30.2` | `1.31.0` | | [psycopg](https://github.com/psycopg/psycopg) | `3.2.1` | `3.2.2` | | [pulumi-azure-native](https://github.com/pulumi/pulumi-azure-native) | `2.59.0` | `2.60.1` | | [pulumi-random](https://github.com/pulumi/pulumi-random) | `4.16.4` | `4.16.5` | | [pulumi](https://github.com/pulumi/pulumi) | `3.131.0` | `3.132.0` | | [pytz](https://github.com/stub42/pytz) | `2024.1` | `2024.2` | | [rich](https://github.com/Textualize/rich) | `13.8.0` | `13.8.1` | | [ansible](https://github.com/ansible-community/ansible-build-data) | `10.3.0` | `10.4.0` | | [pandas-stubs](https://github.com/pandas-dev/pandas-stubs) | `2.2.2.240807` | `2.2.2.240909` | | [ruff](https://github.com/astral-sh/ruff) | `0.6.4` | `0.6.5` | | [types-pytz](https://github.com/python/typeshed) | `2024.1.0.20240417` | `2024.2.0.20240913` | | [types-requests](https://github.com/python/typeshed) | `2.32.0.20240907` | `2.32.0.20240914` | | [pytest](https://github.com/pytest-dev/pytest) | `8.3.2` | `8.3.3` | Updates `azure-core` from 1.30.2 to 1.31.0 - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-core_1.30.2...azure-core_1.31.0) Updates `psycopg` from 3.2.1 to 3.2.2 - [Changelog](https://github.com/psycopg/psycopg/blob/master/docs/news.rst) - [Commits](https://github.com/psycopg/psycopg/compare/3.2.1...3.2.2) Updates `pulumi-azure-native` from 2.59.0 to 2.60.1 - [Release notes](https://github.com/pulumi/pulumi-azure-native/releases) - [Changelog](https://github.com/pulumi/pulumi-azure-native/blob/master/CHANGELOG_OLD.md) - [Commits](https://github.com/pulumi/pulumi-azure-native/compare/v2.59.0...v2.60.1) Updates `pulumi-random` from 4.16.4 to 4.16.5 - [Release notes](https://github.com/pulumi/pulumi-random/releases) - [Changelog](https://github.com/pulumi/pulumi-random/blob/master/CHANGELOG_OLD.md) - [Commits](https://github.com/pulumi/pulumi-random/compare/v4.16.4...v4.16.5) Updates `pulumi` from 3.131.0 to 3.132.0 - [Release notes](https://github.com/pulumi/pulumi/releases) - [Changelog](https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md) - [Commits](https://github.com/pulumi/pulumi/compare/v3.131.0...v3.132.0) Updates `pytz` from 2024.1 to 2024.2 - [Release notes](https://github.com/stub42/pytz/releases) - [Commits](https://github.com/stub42/pytz/compare/release_2024.1...release_2024.2) Updates `rich` from 13.8.0 to 13.8.1 - [Release notes](https://github.com/Textualize/rich/releases) - [Changelog](https://github.com/Textualize/rich/blob/master/CHANGELOG.md) - [Commits](https://github.com/Textualize/rich/compare/v13.8.0...v13.8.1) Updates `ansible` from 10.3.0 to 10.4.0 - [Changelog](https://github.com/ansible-community/ansible-build-data/blob/main/docs/release-process.md) - [Commits](https://github.com/ansible-community/ansible-build-data/compare/10.3.0...10.4.0) Updates `pandas-stubs` from 2.2.2.240807 to 2.2.2.240909 - [Changelog](https://github.com/pandas-dev/pandas-stubs/blob/main/docs/release_procedure.md) - [Commits](https://github.com/pandas-dev/pandas-stubs/compare/v2.2.2.240807...v2.2.2.240909) Updates `ruff` from 0.6.4 to 0.6.5 - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.6.4...0.6.5) Updates `types-pytz` from 2024.1.0.20240417 to 2024.2.0.20240913 - [Commits](https://github.com/python/typeshed/commits) Updates `types-requests` from 2.32.0.20240907 to 2.32.0.20240914 - [Commits](https://github.com/python/typeshed/commits) Updates `pytest` from 8.3.2 to 8.3.3 - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/8.3.2...8.3.3) --- updated-dependencies: - dependency-name: azure-core dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: psycopg dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: pulumi-azure-native dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: pulumi-random dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: pulumi dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: pytz dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: rich dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: ansible dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: pandas-stubs dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: ruff dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: types-pytz dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: types-requests dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: pytest dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies ... Signed-off-by: dependabot[bot] --- pyproject.toml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 21f3e59fc7..0e492c2132 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,7 @@ classifiers = [ license = { text = "BSD-3-Clause" } dependencies = [ "appdirs==1.4.4", - "azure-core==1.30.2", + "azure-core==1.31.0", "azure-identity==1.17.1", "azure-keyvault-certificates==4.8.0", "azure-keyvault-keys==4.9.0", @@ -44,15 +44,15 @@ dependencies = [ "chevron==0.14.0", "cryptography==43.0.1", "fqdn==1.5.1", - "psycopg==3.2.1", - "pulumi-azure-native==2.59.0", - "pulumi-random==4.16.4", - "pulumi==3.131.0", + "psycopg==3.2.2", + "pulumi-azure-native==2.60.1", + "pulumi-random==4.16.5", + "pulumi==3.132.0", "pydantic==2.9.1", "pyjwt[crypto]==2.9.0", - "pytz==2024.1", + "pytz==2024.2", "pyyaml==6.0.2", - "rich==13.8.0", + "rich==13.8.1", "simple-acme-dns==3.1.0", "typer==0.12.5", "websocket-client==1.8.0", @@ -73,23 +73,23 @@ docs = [ ] lint = [ "ansible-dev-tools==24.8.0", - "ansible==10.3.0", + "ansible==10.4.0", "black==24.8.0", "mypy==1.11.2", - "pandas-stubs==2.2.2.240807", + "pandas-stubs==2.2.2.240909", "pydantic==2.9.1", - "ruff==0.6.4", + "ruff==0.6.5", "types-appdirs==1.4.3.5", "types-chevron==0.14.2.20240310", - "types-pytz==2024.1.0.20240417", + "types-pytz==2024.2.0.20240913", "types-pyyaml==6.0.12.20240808", - "types-requests==2.32.0.20240907", + "types-requests==2.32.0.20240914", ] test = [ "coverage==7.6.1", "freezegun==1.5.1", "pytest-mock==3.14.0", - "pytest==8.3.2", + "pytest==8.3.3", "requests-mock==1.12.1", ] From 71f94d83c00f7ad09d787064c840937d98d2646a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 16 Sep 2024 04:05:40 +0000 Subject: [PATCH 131/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-docs.txt | 6 ++--- .hatch/requirements-lint.txt | 44 ++++++++++++++++++------------------ .hatch/requirements-test.txt | 38 +++++++++++++++---------------- .hatch/requirements.txt | 32 +++++++++++++------------- 4 files changed, 60 insertions(+), 60 deletions(-) diff --git a/.hatch/requirements-docs.txt b/.hatch/requirements-docs.txt index 7bb7b057b6..d91423da7b 100644 --- a/.hatch/requirements-docs.txt +++ b/.hatch/requirements-docs.txt @@ -30,7 +30,7 @@ docutils==0.21.2 # sphinx-togglebutton emoji==2.12.1 # via hatch.envs.docs -idna==3.8 +idna==3.10 # via requests imagesize==1.4.1 # via sphinx @@ -44,7 +44,7 @@ markdown-it-py==3.0.0 # myst-parser markupsafe==2.1.5 # via jinja2 -mdit-py-plugins==0.4.1 +mdit-py-plugins==0.4.2 # via myst-parser mdurl==0.1.2 # via markdown-it-py @@ -93,7 +93,7 @@ typing-extensions==4.12.2 # via # emoji # pydata-sphinx-theme -urllib3==2.2.2 +urllib3==2.2.3 # via requests wheel==0.44.0 # via sphinx-togglebutton diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index 7290af1e06..250189144b 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -2,22 +2,22 @@ # This file is autogenerated by hatch-pip-compile with Python 3.12 # # - ansible-dev-tools==24.8.0 -# - ansible==10.3.0 +# - ansible==10.4.0 # - black==24.8.0 # - mypy==1.11.2 -# - pandas-stubs==2.2.2.240807 +# - pandas-stubs==2.2.2.240909 # - pydantic==2.9.1 -# - ruff==0.6.4 +# - ruff==0.6.5 # - types-appdirs==1.4.3.5 # - types-chevron==0.14.2.20240310 -# - types-pytz==2024.1.0.20240417 +# - types-pytz==2024.2.0.20240913 # - types-pyyaml==6.0.12.20240808 -# - types-requests==2.32.0.20240907 +# - types-requests==2.32.0.20240914 # annotated-types==0.7.0 # via pydantic -ansible==10.3.0 +ansible==10.4.0 # via hatch.envs.lint ansible-builder==3.1.0 # via @@ -29,7 +29,7 @@ ansible-compat==24.9.0 # ansible-lint # molecule # pytest-ansible -ansible-core==2.17.3 +ansible-core==2.17.4 # via # ansible # ansible-compat @@ -42,11 +42,11 @@ ansible-dev-environment==24.9.0 # via ansible-dev-tools ansible-dev-tools==24.8.0 # via hatch.envs.lint -ansible-lint==24.7.0 +ansible-lint==24.9.0 # via # ansible-dev-tools # ansible-navigator -ansible-navigator==24.8.0 +ansible-navigator==24.9.0 # via ansible-dev-tools ansible-runner==2.4.0 # via ansible-navigator @@ -100,7 +100,7 @@ filelock==3.16.0 # ansible-lint # tox # virtualenv -importlib-metadata==8.4.0 +importlib-metadata==8.5.0 # via ansible-lint iniconfig==2.0.0 # via pytest @@ -127,7 +127,7 @@ markupsafe==2.1.5 # via jinja2 mdurl==0.1.2 # via markdown-it-py -molecule==24.8.0 +molecule==24.9.0 # via ansible-dev-tools mypy==1.11.2 # via hatch.envs.lint @@ -153,7 +153,7 @@ packaging==24.1 # pytest # pytest-ansible # tox -pandas-stubs==2.2.2.240807 +pandas-stubs==2.2.2.240909 # via hatch.envs.lint parsley==1.3 # via bindep @@ -166,7 +166,7 @@ pbr==6.1.0 # via bindep pexpect==4.9.0 # via ansible-runner -platformdirs==4.3.2 +platformdirs==4.3.3 # via # black # tox @@ -188,12 +188,12 @@ pygments==2.18.0 # via rich pyproject-api==1.7.1 # via tox -pytest==8.3.2 +pytest==8.3.3 # via # pytest-ansible # pytest-xdist # tox-ansible -pytest-ansible==24.8.0 +pytest-ansible==24.9.0 # via # ansible-dev-tools # tox-ansible @@ -222,7 +222,7 @@ referencing==0.35.1 # jsonschema-specifications resolvelib==1.0.1 # via ansible-core -rich==13.8.0 +rich==13.8.1 # via # ansible-lint # enrich @@ -235,7 +235,7 @@ ruamel-yaml==0.18.6 # via ansible-lint ruamel-yaml-clib==0.2.8 # via ruamel-yaml -ruff==0.6.4 +ruff==0.6.5 # via hatch.envs.lint subprocess-tee==0.4.2 # via @@ -244,19 +244,19 @@ subprocess-tee==0.4.2 # ansible-lint tox==4.18.1 # via tox-ansible -tox-ansible==24.8.0 +tox-ansible==24.9.0 # via ansible-dev-tools types-appdirs==1.4.3.5 # via hatch.envs.lint types-chevron==0.14.2.20240310 # via hatch.envs.lint -types-pytz==2024.1.0.20240417 +types-pytz==2024.2.0.20240913 # via # hatch.envs.lint # pandas-stubs types-pyyaml==6.0.12.20240808 # via hatch.envs.lint -types-requests==2.32.0.20240907 +types-requests==2.32.0.20240914 # via hatch.envs.lint typing-extensions==4.12.2 # via @@ -265,7 +265,7 @@ typing-extensions==4.12.2 # pydantic-core tzdata==2024.1 # via ansible-navigator -urllib3==2.2.2 +urllib3==2.2.3 # via types-requests virtualenv==20.26.4 # via tox @@ -275,7 +275,7 @@ wcmatch==9.0 # molecule yamllint==1.35.1 # via ansible-lint -zipp==3.20.1 +zipp==3.20.2 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index fc6192643a..f412019e78 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -1,10 +1,10 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# [constraints] .hatch/requirements.txt (SHA256: c14e839cb8bd2024658fcf9f42498ef62d1b24ce75057d607bf6787ce2a89f1b) +# [constraints] .hatch/requirements.txt (SHA256: 1d37c61a2bf2b9a3930fcd5ea63e6e2f9c363b251da61419363d0e3fa970dd73) # # - appdirs==1.4.4 -# - azure-core==1.30.2 +# - azure-core==1.31.0 # - azure-identity==1.17.1 # - azure-keyvault-certificates==4.8.0 # - azure-keyvault-keys==4.9.0 @@ -23,22 +23,22 @@ # - chevron==0.14.0 # - cryptography==43.0.1 # - fqdn==1.5.1 -# - psycopg==3.2.1 -# - pulumi-azure-native==2.59.0 -# - pulumi-random==4.16.4 -# - pulumi==3.131.0 +# - psycopg==3.2.2 +# - pulumi-azure-native==2.60.1 +# - pulumi-random==4.16.5 +# - pulumi==3.132.0 # - pydantic==2.9.1 # - pyjwt[crypto]==2.9.0 -# - pytz==2024.1 +# - pytz==2024.2 # - pyyaml==6.0.2 -# - rich==13.8.0 +# - rich==13.8.1 # - simple-acme-dns==3.1.0 # - typer==0.12.5 # - websocket-client==1.8.0 # - coverage==7.6.1 # - freezegun==1.5.1 # - pytest-mock==3.14.0 -# - pytest==8.3.2 +# - pytest==8.3.3 # - requests-mock==1.12.1 # @@ -73,7 +73,7 @@ azure-common==1.1.28 # azure-mgmt-rdbms # azure-mgmt-resource # azure-mgmt-storage -azure-core==1.30.2 +azure-core==1.31.0 # via # -c .hatch/requirements.txt # hatch.envs.test @@ -212,7 +212,7 @@ grpcio==1.60.2 # via # -c .hatch/requirements.txt # pulumi -idna==3.8 +idna==3.10 # via # -c .hatch/requirements.txt # requests @@ -281,21 +281,21 @@ protobuf==4.25.4 # via # -c .hatch/requirements.txt # pulumi -psycopg==3.2.1 +psycopg==3.2.2 # via # -c .hatch/requirements.txt # hatch.envs.test -pulumi==3.131.0 +pulumi==3.132.0 # via # -c .hatch/requirements.txt # hatch.envs.test # pulumi-azure-native # pulumi-random -pulumi-azure-native==2.59.0 +pulumi-azure-native==2.60.1 # via # -c .hatch/requirements.txt # hatch.envs.test -pulumi-random==4.16.4 +pulumi-random==4.16.5 # via # -c .hatch/requirements.txt # hatch.envs.test @@ -329,7 +329,7 @@ pyrfc3339==1.1 # via # -c .hatch/requirements.txt # acme -pytest==8.3.2 +pytest==8.3.3 # via # hatch.envs.test # pytest-mock @@ -337,7 +337,7 @@ pytest-mock==3.14.0 # via hatch.envs.test python-dateutil==2.9.0.post0 # via freezegun -pytz==2024.1 +pytz==2024.2 # via # -c .hatch/requirements.txt # hatch.envs.test @@ -363,7 +363,7 @@ requests-oauthlib==2.0.0 # via # -c .hatch/requirements.txt # msrest -rich==13.8.0 +rich==13.8.1 # via # -c .hatch/requirements.txt # hatch.envs.test @@ -410,7 +410,7 @@ typing-extensions==4.12.2 # pydantic # pydantic-core # typer -urllib3==2.2.2 +urllib3==2.2.3 # via # -c .hatch/requirements.txt # requests diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt index 3ff15e9afa..817fa2f7ca 100644 --- a/.hatch/requirements.txt +++ b/.hatch/requirements.txt @@ -2,7 +2,7 @@ # This file is autogenerated by hatch-pip-compile with Python 3.12 # # - appdirs==1.4.4 -# - azure-core==1.30.2 +# - azure-core==1.31.0 # - azure-identity==1.17.1 # - azure-keyvault-certificates==4.8.0 # - azure-keyvault-keys==4.9.0 @@ -21,15 +21,15 @@ # - chevron==0.14.0 # - cryptography==43.0.1 # - fqdn==1.5.1 -# - psycopg==3.2.1 -# - pulumi-azure-native==2.59.0 -# - pulumi-random==4.16.4 -# - pulumi==3.131.0 +# - psycopg==3.2.2 +# - pulumi-azure-native==2.60.1 +# - pulumi-random==4.16.5 +# - pulumi==3.132.0 # - pydantic==2.9.1 # - pyjwt[crypto]==2.9.0 -# - pytz==2024.1 +# - pytz==2024.2 # - pyyaml==6.0.2 -# - rich==13.8.0 +# - rich==13.8.1 # - simple-acme-dns==3.1.0 # - typer==0.12.5 # - websocket-client==1.8.0 @@ -55,7 +55,7 @@ azure-common==1.1.28 # azure-mgmt-rdbms # azure-mgmt-resource # azure-mgmt-storage -azure-core==1.30.2 +azure-core==1.31.0 # via # hatch.envs.default # azure-identity @@ -141,7 +141,7 @@ fqdn==1.5.1 # via hatch.envs.default grpcio==1.60.2 # via pulumi -idna==3.8 +idna==3.10 # via requests isodate==0.6.1 # via @@ -184,16 +184,16 @@ portalocker==2.10.1 # via msal-extensions protobuf==4.25.4 # via pulumi -psycopg==3.2.1 +psycopg==3.2.2 # via hatch.envs.default -pulumi==3.131.0 +pulumi==3.132.0 # via # hatch.envs.default # pulumi-azure-native # pulumi-random -pulumi-azure-native==2.59.0 +pulumi-azure-native==2.60.1 # via hatch.envs.default -pulumi-random==4.16.4 +pulumi-random==4.16.5 # via hatch.envs.default pycparser==2.22 # via cffi @@ -213,7 +213,7 @@ pyopenssl==24.2.1 # josepy pyrfc3339==1.1 # via acme -pytz==2024.1 +pytz==2024.2 # via # hatch.envs.default # acme @@ -231,7 +231,7 @@ requests==2.32.3 # requests-oauthlib requests-oauthlib==2.0.0 # via msrest -rich==13.8.0 +rich==13.8.1 # via # hatch.envs.default # typer @@ -267,7 +267,7 @@ typing-extensions==4.12.2 # pydantic # pydantic-core # typer -urllib3==2.2.2 +urllib3==2.2.3 # via requests validators==0.28.3 # via simple-acme-dns From 3ed2c7f00102f6a1258494a3280d9b695e1cbbe8 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 16 Sep 2024 09:47:50 +0100 Subject: [PATCH 132/302] Fix invalid configuration tests --- tests/commands/test_config_sre.py | 4 ++-- tests/config/test_context_manager.py | 4 ++-- tests/config/test_pulumi.py | 2 +- tests/serialisers/test_azure_serialisable_model.py | 2 +- tests/serialisers/test_yaml_serialisable_model.py | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/commands/test_config_sre.py b/tests/commands/test_config_sre.py index ddd5529903..dba4b2d805 100644 --- a/tests/commands/test_config_sre.py +++ b/tests/commands/test_config_sre.py @@ -4,9 +4,9 @@ from data_safe_haven.config import ContextManager, SREConfig from data_safe_haven.config.sre_config import sre_config_name from data_safe_haven.exceptions import ( + DataSafeHavenAzureError, DataSafeHavenAzureStorageError, DataSafeHavenConfigError, - DataSafeHavenError, ) from data_safe_haven.external import AzureSdk @@ -73,7 +73,7 @@ def test_no_storage_account(self, mocker, runner): def test_incorrect_sre_name(self, mocker, runner): sre_name = "sandbox" mocker.patch.object( - SREConfig, "from_remote_by_name", side_effect=DataSafeHavenError(" ") + SREConfig, "from_remote_by_name", side_effect=DataSafeHavenAzureError(" ") ) result = runner.invoke(config_command_group, ["show", sre_name]) assert "No configuration exists for an SRE" in result.stdout diff --git a/tests/config/test_context_manager.py b/tests/config/test_context_manager.py index 1118d1bbb3..cd30e84f82 100644 --- a/tests/config/test_context_manager.py +++ b/tests/config/test_context_manager.py @@ -114,7 +114,7 @@ def test_missing_selected(self, context_yaml): ) with pytest.raises( DataSafeHavenTypeError, - match="Could not load ContextManager configuration.", + match="ContextManager configuration is invalid.", ): ContextManager.from_yaml(context_yaml) @@ -124,7 +124,7 @@ def test_invalid_selected_input(self, context_yaml): ) with pytest.raises( DataSafeHavenTypeError, - match="Could not load ContextManager configuration.", + match="ContextManager configuration is invalid.", ): ContextManager.from_yaml(context_yaml) diff --git a/tests/config/test_pulumi.py b/tests/config/test_pulumi.py index 3bb57b1a38..4054e063bf 100644 --- a/tests/config/test_pulumi.py +++ b/tests/config/test_pulumi.py @@ -115,7 +115,7 @@ def test_from_yaml_not_dict(self): def test_from_yaml_validation_error(self): not_valid = "projects: -3" with raises( - DataSafeHavenTypeError, match="Could not load Pulumi configuration." + DataSafeHavenTypeError, match="Pulumi configuration is invalid." ): DSHPulumiConfig.from_yaml(not_valid) diff --git a/tests/serialisers/test_azure_serialisable_model.py b/tests/serialisers/test_azure_serialisable_model.py index 093d4f70d9..d25463780c 100644 --- a/tests/serialisers/test_azure_serialisable_model.py +++ b/tests/serialisers/test_azure_serialisable_model.py @@ -118,7 +118,7 @@ def test_from_yaml_validation_error(self): with raises( DataSafeHavenTypeError, - match="Could not load Example configuration.", + match="Example configuration is invalid.", ): ExampleAzureSerialisableModel.from_yaml(yaml) diff --git a/tests/serialisers/test_yaml_serialisable_model.py b/tests/serialisers/test_yaml_serialisable_model.py index cd27ea612b..ecf4a2ca52 100644 --- a/tests/serialisers/test_yaml_serialisable_model.py +++ b/tests/serialisers/test_yaml_serialisable_model.py @@ -74,7 +74,7 @@ def test_from_yaml_validation_error(self): ) with raises( DataSafeHavenTypeError, - match="Could not load Example configuration.", + match="Example configuration is invalid.", ): ExampleYAMLSerialisableModel.from_yaml(yaml) From 704ace28450882d5eb49710e41e2fca470416c6d Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 16 Sep 2024 09:50:54 +0100 Subject: [PATCH 133/302] Fix linting --- tests/config/test_pulumi.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/config/test_pulumi.py b/tests/config/test_pulumi.py index 4054e063bf..e93e0f982a 100644 --- a/tests/config/test_pulumi.py +++ b/tests/config/test_pulumi.py @@ -114,9 +114,7 @@ def test_from_yaml_not_dict(self): def test_from_yaml_validation_error(self): not_valid = "projects: -3" - with raises( - DataSafeHavenTypeError, match="Pulumi configuration is invalid." - ): + with raises(DataSafeHavenTypeError, match="Pulumi configuration is invalid."): DSHPulumiConfig.from_yaml(not_valid) def test_upload(self, mocker, pulumi_config, context): From 0b37f88b5eba989e1ead4d31fc5ca91cb0c84fb4 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 16 Sep 2024 10:04:29 +0100 Subject: [PATCH 134/302] Add test for config dumping --- tests/commands/test_config_sre.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/commands/test_config_sre.py b/tests/commands/test_config_sre.py index dba4b2d805..a8664ecf2e 100644 --- a/tests/commands/test_config_sre.py +++ b/tests/commands/test_config_sre.py @@ -7,6 +7,7 @@ DataSafeHavenAzureError, DataSafeHavenAzureStorageError, DataSafeHavenConfigError, + DataSafeHavenTypeError, ) from data_safe_haven.external import AzureSdk @@ -41,6 +42,25 @@ def test_show_file(self, mocker, runner, sre_config_yaml, tmp_path): template_text = f.read() assert sre_config_yaml in template_text + def test_show_invalid_config(self, mocker, runner, context, sre_config_yaml): + mocker.patch.object( + SREConfig, "from_remote_by_name", side_effect=DataSafeHavenTypeError(" ") + ) + mock_method = mocker.patch.object( + AzureSdk, "download_blob", return_value=sre_config_yaml + ) + sre_name = "sandbox" + result = runner.invoke(config_command_group, ["show", sre_name]) + + assert result.exit_code == 1 + assert sre_config_yaml in result.stdout + mock_method.assert_called_once_with( + sre_config_name(sre_name), + context.resource_group_name, + context.storage_account_name, + context.storage_container_name, + ) + def test_no_context(self, mocker, runner): sre_name = "sandbox" mocker.patch.object( From de48ba0bd878ab34604c54cbcdcf11cd5db8b251 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 16 Sep 2024 11:48:52 +0100 Subject: [PATCH 135/302] Add test for validation error from remote --- tests/serialisers/test_azure_serialisable_model.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tests/serialisers/test_azure_serialisable_model.py b/tests/serialisers/test_azure_serialisable_model.py index d25463780c..22d8a16e3f 100644 --- a/tests/serialisers/test_azure_serialisable_model.py +++ b/tests/serialisers/test_azure_serialisable_model.py @@ -137,3 +137,12 @@ def test_from_remote(self, mocker, context, example_config_yaml): context.storage_account_name, context.storage_container_name, ) + + def test_from_remote_validation_error(self, mocker, context, example_config_yaml): + example_config_yaml = example_config_yaml.replace("5", "abc") + mocker.patch.object(AzureSdk, "download_blob", return_value=example_config_yaml) + with raises( + DataSafeHavenTypeError, + match="'file.yaml' does not contain a valid Example configuration.", + ): + ExampleAzureSerialisableModel.from_remote(context) From 126bb23b65550bf46a1bf4d62bc10de179248c01 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 16 Sep 2024 15:03:07 +0100 Subject: [PATCH 136/302] Update mount points in docs --- docs/source/deployment/security_checklist.md | 10 +++--- .../security/reference_configuration.md | 6 ++-- docs/source/index.md | 2 +- .../data_ingress.md | 2 +- .../roles/researcher/accessing_the_sre.md | 2 +- docs/source/roles/researcher/using_the_sre.md | 34 +++++++++---------- 6 files changed, 28 insertions(+), 28 deletions(-) diff --git a/docs/source/deployment/security_checklist.md b/docs/source/deployment/security_checklist.md index 451a4fd070..2737b1cb5c 100644 --- a/docs/source/deployment/security_checklist.md +++ b/docs/source/deployment/security_checklist.md @@ -454,12 +454,12 @@ To minimise the risk of unauthorised access to the dataset while the ingress vol ### Turing configuration setting: -- Research users can write to the `/output` volume. -- A {ref}`role_system_manager` can view and download data in the `/output` volume via `Azure Storage Explorer`. +- Research users can write to the `/mnt/output` volume. +- A {ref}`role_system_manager` can view and download data in the `/mnt/output` volume via `Azure Storage Explorer`. ### Implication: -- SREs contain an `/output` volume, in which SRE users can store data designated for egress. +- SREs contain an `/mnt/output` volume, in which SRE users can store data designated for egress. ### Verify by: @@ -469,7 +469,7 @@ To minimise the risk of unauthorised access to the dataset while the ingress vol - Open up a file explorer and search for the various storage volumes ```{attention} -{{white_check_mark}} Verify that: the `/output` volume exists and can be read and written to. +{{white_check_mark}} Verify that: the `/mnt/output` volume exists and can be read and written to. ``` ```{attention} @@ -481,7 +481,7 @@ To minimise the risk of unauthorised access to the dataset while the ingress vol - As the {ref}`role_system_manager`, follow the instructions in the [project manager documentation](../roles/project_manager/data_egress.md#data-egress-process) on how to access files set for egress with `Azure Storage Explorer`. ```{attention} -{{white_check_mark}} Verify that: you can see the files written to the `/output` storage volume. +{{white_check_mark}} Verify that: you can see the files written to the `/mnt/output` storage volume. ``` ```{attention} diff --git a/docs/source/design/security/reference_configuration.md b/docs/source/design/security/reference_configuration.md index 5d508cdebd..fa848ec730 100644 --- a/docs/source/design/security/reference_configuration.md +++ b/docs/source/design/security/reference_configuration.md @@ -102,12 +102,12 @@ To minimise the risk of unauthorised access to the dataset while the ingress vol ### Turing configuration setting:: -- Users can write to the `/output` volume. -- A {ref}`role_system_manager` can view and download data in the `/output` volume via **Azure Storage Explorer**. +- Users can write to the `/mnt/output` volume. +- A {ref}`role_system_manager` can view and download data in the `/mnt/output` volume via **Azure Storage Explorer**. ### Implication: -- SRE users can mark data as ready for egress approval by placing it in the `/output` volume. +- SRE users can mark data as ready for egress approval by placing it in the `/mnt/output` volume. ## 9. Software ingress diff --git a/docs/source/index.md b/docs/source/index.md index 2383953e7e..764b06ec38 100644 --- a/docs/source/index.md +++ b/docs/source/index.md @@ -27,7 +27,7 @@ We have developed: - A proposed default set of technical security measures for each tier. - A set of infrastructure-as-code tools which will allow anyone to deploy their own isolated research environment. -If this sounds interesting to you, take a look at our GitHub releases: [![Data Safe Haven releases](https://img.shields.io/static/v1?label=Data%20Safe%20Haven&message=Releases&style=flat&logo=github)](https://github.com/alan-turing-institute/data-safe-haven/releases). +If this sounds interesting to you, take a look at our GitHub releases: [![Data Safe Haven releases](https://img.shields.io/static/v1?label=Data%20Safe%20Haven&message=Releases&style=flat&logo=github)](https://github.com/alan-turing-institute/mnt/input-safe-haven/releases). ## Documentation structure diff --git a/docs/source/roles/data_provider_representative/data_ingress.md b/docs/source/roles/data_provider_representative/data_ingress.md index e0f80c8ce2..589979b543 100644 --- a/docs/source/roles/data_provider_representative/data_ingress.md +++ b/docs/source/roles/data_provider_representative/data_ingress.md @@ -64,7 +64,7 @@ If you upload this file then researchers will be able to independently verify da Here are instructions to generate a checksum file using the `md5sum` algorithm for a data set stored in a directory called `data`. ```console -find ./data/ -type fl -exec md5sum {} + > hashes.txt +find ./mnt/input/ -type fl -exec md5sum {} + > hashes.txt ``` `find` searches the `data` directory for files and symbolic links (`-type fl`). diff --git a/docs/source/roles/researcher/accessing_the_sre.md b/docs/source/roles/researcher/accessing_the_sre.md index eac7fe804f..3f6600df72 100644 --- a/docs/source/roles/researcher/accessing_the_sre.md +++ b/docs/source/roles/researcher/accessing_the_sre.md @@ -175,5 +175,5 @@ When you are connected to a workspace, you may switch to another by bringing up ::: :::{tip} -Any files in the **/output/**, **/home/** or **/shared** folders on other workspaces will be available in this workspace too. +Any files in the **/mnt/output/**, **/home/** or **/mnt/shared** folders on other workspaces will be available in this workspace too. ::: diff --git a/docs/source/roles/researcher/using_the_sre.md b/docs/source/roles/researcher/using_the_sre.md index 8c1aecf614..41752c1c06 100644 --- a/docs/source/roles/researcher/using_the_sre.md +++ b/docs/source/roles/researcher/using_the_sre.md @@ -53,8 +53,8 @@ For instance, describing in detail what a dataset contains and how it will be us SREs are designed to be ephemeral and only deployed for as long as necessary. It is likely that the infrastructure, and data, will be permanently deleted when work has concluded. -The `/output/` directory is designed for storing output to be kept after a project concludes. -You should move such data to the `/output/` directory and contact your designated contact about data egress. +The `/mnt/output/` directory is designed for storing output to be kept after a project concludes. +You should move such data to the `/mnt/output/` directory and contact your designated contact about data egress. :::{important} You are responsible for deciding what is worth archiving. @@ -63,8 +63,8 @@ You are responsible for deciding what is worth archiving. While working on the project: - store all your code in a **Gitea** repository. -- store all resources that might be useful to the rest of the project in the **/shared/** folder. -- store anything that might form an output from the project (_e.g._ images, documents or output datasets) in the **/output/** folder. +- store all resources that might be useful to the rest of the project in the **/mnt/shared/** folder. +- store anything that might form an output from the project (_e.g._ images, documents or output datasets) in the **/mnt/output/** folder. See {ref}`the section on sharing files ` to find out more about where to store your files. @@ -244,45 +244,45 @@ Type `yes` to install the packages. There are several shared folder on each workspace that all collaborators within a research project team can see and access: -- [input data](#input-data): in the **/data/** folder -- [shared space](#shared-space): in the **/shared/** folder -- [output resources](#output-resources): in the **/output/** folder +- [input data](#input-data): in the **/mnt/input/** folder +- [shared space](#shared-space): in the **/mnt/shared/** folder +- [output resources](#output-resources): in the **/mnt/output/** folder ### Input data -Data that has been approved and brought into the secure research environment can be found in the **/data/** folder. +Data that has been approved and brought into the secure research environment can be found in the **/mnt/input/** folder. -- The contents of **/data/** will be identical on all workspaces in your SRE. +- The contents of **/mnt/input/** will be identical on all workspaces in your SRE. - Everyone working on your project will be able to access it. - Everyone has **read-only access** to the files stored here. -If you are using the Data Safe Haven as part of an organised event, you might find additional resources in the **/data/** folder, such as example slides or document templates. +If you are using the Data Safe Haven as part of an organised event, you might find additional resources in the **/mnt/input/** folder, such as example slides or document templates. :::{important} -You will not be able to change any of the files in **/data/**. -If you want to make derived datasets, for example cleaned and reformatted data, please add those to the **/shared/** or **/output/** folders. +You will not be able to change any of the files in **/mnt/input/**. +If you want to make derived datasets, for example cleaned and reformatted data, please add those to the **/mnt/shared/** or **/mnt/output/** folders. ::: ### Shared space -The **/shared/** folder should be used for any work that you want to share with your group. +The **/mnt/shared/** folder should be used for any work that you want to share with your group. -- The contents of **/shared/** will be identical on all workspaces in your SRE. +- The contents of **/mnt/shared/** will be identical on all workspaces in your SRE. - Everyone working on your project will be able to access it - Everyone has **read-and-write access** to the files stored here. ### Output resources -Any outputs that you want to extract from the secure environment should be placed in the **/output/** folder on the workspace. +Any outputs that you want to extract from the secure environment should be placed in the **/mnt/output/** folder on the workspace. -- The contents of **/output/** will be identical on all workspaces in your SRE. +- The contents of **/mnt/output/** will be identical on all workspaces in your SRE. - Everyone working on your project will be able to access it - Everyone has **read-and-write access** to the files stored here. Anything placed in here will be considered for data egress - removal from the secure research environment - by the project's principal investigator together with the data provider. :::{tip} -You may want to consider having subfolders of **/output/** to make the review of this directory easier. +You may want to consider having subfolders of **/mnt/output/** to make the review of this directory easier. ::: ## {{pill}} Version control using Gitea From 22c754f4c0b50f9d91df2faf2f75333088ced505 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 17 Sep 2024 10:28:12 +0100 Subject: [PATCH 137/302] Add NFSV3StorageAccount component --- .../infrastructure/components/__init__.py | 2 + .../components/wrapped/__init__.py | 2 + .../wrapped/nfsv3_storage_account.py | 68 +++++++++++++++++++ .../infrastructure/programs/sre/data.py | 43 ++---------- .../programs/sre/desired_state.py | 42 ++---------- 5 files changed, 80 insertions(+), 77 deletions(-) create mode 100644 data_safe_haven/infrastructure/components/wrapped/nfsv3_storage_account.py diff --git a/data_safe_haven/infrastructure/components/__init__.py b/data_safe_haven/infrastructure/components/__init__.py index cc6bcb15a4..5273fade9b 100644 --- a/data_safe_haven/infrastructure/components/__init__.py +++ b/data_safe_haven/infrastructure/components/__init__.py @@ -19,6 +19,7 @@ SSLCertificateProps, ) from .wrapped import ( + NFSV3StorageAccount, WrappedLogAnalyticsWorkspace, ) @@ -34,6 +35,7 @@ "LocalDnsRecordProps", "MicrosoftSQLDatabaseComponent", "MicrosoftSQLDatabaseProps", + "NFSV3StorageAccount", "PostgresqlDatabaseComponent", "PostgresqlDatabaseProps", "SSLCertificate", diff --git a/data_safe_haven/infrastructure/components/wrapped/__init__.py b/data_safe_haven/infrastructure/components/wrapped/__init__.py index fc5f8c8f61..48c5570168 100644 --- a/data_safe_haven/infrastructure/components/wrapped/__init__.py +++ b/data_safe_haven/infrastructure/components/wrapped/__init__.py @@ -1,5 +1,7 @@ from .log_analytics_workspace import WrappedLogAnalyticsWorkspace +from .nfsv3_storage_account import NFSV3StorageAccount __all__ = [ + "NFSV3StorageAccount", "WrappedLogAnalyticsWorkspace", ] diff --git a/data_safe_haven/infrastructure/components/wrapped/nfsv3_storage_account.py b/data_safe_haven/infrastructure/components/wrapped/nfsv3_storage_account.py new file mode 100644 index 0000000000..0787970fef --- /dev/null +++ b/data_safe_haven/infrastructure/components/wrapped/nfsv3_storage_account.py @@ -0,0 +1,68 @@ +from collections.abc import Mapping, Sequence + +from pulumi import Input, Output, ResourceOptions +from pulumi_azure_native import storage + +from data_safe_haven.external import AzureIPv4Range + + +class NFSV3StorageAccount(storage.StorageAccount): + encryption_args = storage.EncryptionArgs( + key_source=storage.KeySource.MICROSOFT_STORAGE, + services=storage.EncryptionServicesArgs( + blob=storage.EncryptionServiceArgs( + enabled=True, key_type=storage.KeyType.ACCOUNT + ), + file=storage.EncryptionServiceArgs( + enabled=True, key_type=storage.KeyType.ACCOUNT + ), + ), + ) + + def __init__( + self, + resource_name: str, + *, + account_name: Input[str], + allowed_ip_addresses: Input[Sequence[str]], + location: Input[str], + resource_group_name: Input[str], + subnet_id: Input[str], + opts: ResourceOptions, + tags: Input[Mapping[str, Input[str]]], + ): + self.resource_group_name_ = Output.from_input(resource_group_name) + super().__init__( + resource_name, + account_name=account_name, + enable_https_traffic_only=True, + enable_nfs_v3=True, + encryption=self.encryption_args, + is_hns_enabled=True, + kind=storage.Kind.BLOCK_BLOB_STORAGE, + location=location, + minimum_tls_version=storage.MinimumTlsVersion.TLS1_2, + network_rule_set=storage.NetworkRuleSetArgs( + bypass=storage.Bypass.AZURE_SERVICES, + default_action=storage.DefaultAction.DENY, + ip_rules=Output.from_input(allowed_ip_addresses).apply( + lambda ip_ranges: [ + storage.IPRuleArgs( + action=storage.Action.ALLOW, + i_p_address_or_range=str(ip_address), + ) + for ip_range in sorted(ip_ranges) + for ip_address in AzureIPv4Range.from_cidr(ip_range).all_ips() + ] + ), + virtual_network_rules=[ + storage.VirtualNetworkRuleArgs( + virtual_network_resource_id=subnet_id, + ) + ], + ), + resource_group_name=resource_group_name, + sku=storage.SkuArgs(name=storage.SkuName.PREMIUM_ZRS), + opts=opts, + tags=tags, + ) diff --git a/data_safe_haven/infrastructure/programs/sre/data.py b/data_safe_haven/infrastructure/programs/sre/data.py index cff4045db3..6cf5edb869 100644 --- a/data_safe_haven/infrastructure/programs/sre/data.py +++ b/data_safe_haven/infrastructure/programs/sre/data.py @@ -31,6 +31,7 @@ from data_safe_haven.infrastructure.components import ( BlobContainerAcl, BlobContainerAclProps, + NFSV3StorageAccount, SSLCertificate, SSLCertificateProps, ) @@ -459,52 +460,16 @@ def __init__( # Deploy sensitive data blob storage account # - This holds the /data and /output containers that are mounted by workspaces # - Azure blobs have worse NFS support but can be accessed with Azure Storage Explorer - storage_account_data_private_sensitive = storage.StorageAccount( + storage_account_data_private_sensitive = NFSV3StorageAccount( f"{self._name}_storage_account_data_private_sensitive", # Storage account names have a maximum of 24 characters account_name=alphanumeric( f"{''.join(truncate_tokens(stack_name.split('-'), 11))}sensitivedata{sha256hash(self._name)}" )[:24], - enable_https_traffic_only=True, - enable_nfs_v3=True, - encryption=storage.EncryptionArgs( - key_source=storage.KeySource.MICROSOFT_STORAGE, - services=storage.EncryptionServicesArgs( - blob=storage.EncryptionServiceArgs( - enabled=True, key_type=storage.KeyType.ACCOUNT - ), - file=storage.EncryptionServiceArgs( - enabled=True, key_type=storage.KeyType.ACCOUNT - ), - ), - ), - kind=storage.Kind.BLOCK_BLOB_STORAGE, - is_hns_enabled=True, + allowed_ip_addresses=props.data_private_sensitive_ip_addresses, location=props.location, - minimum_tls_version=storage.MinimumTlsVersion.TLS1_2, - network_rule_set=storage.NetworkRuleSetArgs( - bypass=storage.Bypass.AZURE_SERVICES, - default_action=storage.DefaultAction.DENY, - ip_rules=Output.from_input( - props.data_private_sensitive_ip_addresses - ).apply( - lambda ip_ranges: [ - storage.IPRuleArgs( - action=storage.Action.ALLOW, - i_p_address_or_range=str(ip_address), - ) - for ip_range in sorted(ip_ranges) - for ip_address in AzureIPv4Range.from_cidr(ip_range).all_ips() - ] - ), - virtual_network_rules=[ - storage.VirtualNetworkRuleArgs( - virtual_network_resource_id=props.subnet_data_private_id, - ) - ], - ), + subnet_id=props.subnet_data_private_id, resource_group_name=props.resource_group_name, - sku=storage.SkuArgs(name=storage.SkuName.PREMIUM_ZRS), opts=child_opts, tags=child_tags, ) diff --git a/data_safe_haven/infrastructure/programs/sre/desired_state.py b/data_safe_haven/infrastructure/programs/sre/desired_state.py index 8700939af0..8e1fc6c8a0 100644 --- a/data_safe_haven/infrastructure/programs/sre/desired_state.py +++ b/data_safe_haven/infrastructure/programs/sre/desired_state.py @@ -17,7 +17,6 @@ storage, ) -from data_safe_haven.external import AzureIPv4Range from data_safe_haven.functions import ( alphanumeric, replace_separators, @@ -32,6 +31,7 @@ from data_safe_haven.infrastructure.components import ( BlobContainerAcl, BlobContainerAclProps, + NFSV3StorageAccount, ) from data_safe_haven.resources import resources_path from data_safe_haven.types import AzureDnsZoneNames @@ -84,49 +84,15 @@ def __init__( # Deploy desired state storage account # - This holds the /desired_state container that is mounted by workspaces # - Azure blobs have worse NFS support but can be accessed with Azure Storage Explorer - storage_account = storage.StorageAccount( + storage_account = NFSV3StorageAccount( f"{self._name}_storage_account", - # Storage account names have a maximum of 24 characters account_name=alphanumeric( f"{''.join(truncate_tokens(stack_name.split('-'), 11))}desiredstate{sha256hash(self._name)}" )[:24], - enable_https_traffic_only=True, - enable_nfs_v3=True, - encryption=storage.EncryptionArgs( - key_source=storage.KeySource.MICROSOFT_STORAGE, - services=storage.EncryptionServicesArgs( - blob=storage.EncryptionServiceArgs( - enabled=True, key_type=storage.KeyType.ACCOUNT - ), - file=storage.EncryptionServiceArgs( - enabled=True, key_type=storage.KeyType.ACCOUNT - ), - ), - ), - kind=storage.Kind.BLOCK_BLOB_STORAGE, - is_hns_enabled=True, + allowed_ip_addresses=props.admin_ip_addresses, location=props.location, - network_rule_set=storage.NetworkRuleSetArgs( - bypass=storage.Bypass.AZURE_SERVICES, - default_action=storage.DefaultAction.DENY, - ip_rules=Output.from_input(props.admin_ip_addresses).apply( - lambda ip_ranges: [ - storage.IPRuleArgs( - action=storage.Action.ALLOW, - i_p_address_or_range=str(ip_address), - ) - for ip_range in sorted(ip_ranges) - for ip_address in AzureIPv4Range.from_cidr(ip_range).all_ips() - ] - ), - virtual_network_rules=[ - storage.VirtualNetworkRuleArgs( - virtual_network_resource_id=props.subnet_desired_state_id, - ) - ], - ), resource_group_name=props.resource_group_name, - sku=storage.SkuArgs(name=storage.SkuName.PREMIUM_ZRS), + subnet_id=props.subnet_desired_state_id, opts=child_opts, tags=child_tags, ) From 435697b1effa8fd6c4a71d52cced829ce30aa75a Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 17 Sep 2024 14:18:56 +0100 Subject: [PATCH 138/302] Add composite resource for NFS blob containers --- .../infrastructure/components/__init__.py | 4 + .../components/composite/__init__.py | 3 + .../composite/nfsv3_blob_container.py | 75 +++++++++++++++++++ .../infrastructure/programs/sre/data.py | 55 +++----------- .../programs/sre/desired_state.py | 29 ++----- 5 files changed, 99 insertions(+), 67 deletions(-) create mode 100644 data_safe_haven/infrastructure/components/composite/nfsv3_blob_container.py diff --git a/data_safe_haven/infrastructure/components/__init__.py b/data_safe_haven/infrastructure/components/__init__.py index 5273fade9b..89a127b8d8 100644 --- a/data_safe_haven/infrastructure/components/__init__.py +++ b/data_safe_haven/infrastructure/components/__init__.py @@ -4,6 +4,8 @@ LocalDnsRecordProps, MicrosoftSQLDatabaseComponent, MicrosoftSQLDatabaseProps, + NFSV3BlobContainerComponent, + NFSV3BlobContainerProps, PostgresqlDatabaseComponent, PostgresqlDatabaseProps, VMComponent, @@ -35,6 +37,8 @@ "LocalDnsRecordProps", "MicrosoftSQLDatabaseComponent", "MicrosoftSQLDatabaseProps", + "NFSV3BlobContainerComponent", + "NFSV3BlobContainerProps", "NFSV3StorageAccount", "PostgresqlDatabaseComponent", "PostgresqlDatabaseProps", diff --git a/data_safe_haven/infrastructure/components/composite/__init__.py b/data_safe_haven/infrastructure/components/composite/__init__.py index f111bab028..e4254a50ed 100644 --- a/data_safe_haven/infrastructure/components/composite/__init__.py +++ b/data_safe_haven/infrastructure/components/composite/__init__.py @@ -3,6 +3,7 @@ MicrosoftSQLDatabaseComponent, MicrosoftSQLDatabaseProps, ) +from .nfsv3_blob_container import NFSV3BlobContainerComponent, NFSV3BlobContainerProps from .postgresql_database import PostgresqlDatabaseComponent, PostgresqlDatabaseProps from .virtual_machine import LinuxVMComponentProps, VMComponent @@ -12,6 +13,8 @@ "LocalDnsRecordProps", "MicrosoftSQLDatabaseComponent", "MicrosoftSQLDatabaseProps", + "NFSV3BlobContainerComponent", + "NFSV3BlobContainerProps", "PostgresqlDatabaseComponent", "PostgresqlDatabaseProps", "VMComponent", diff --git a/data_safe_haven/infrastructure/components/composite/nfsv3_blob_container.py b/data_safe_haven/infrastructure/components/composite/nfsv3_blob_container.py new file mode 100644 index 0000000000..98564918a0 --- /dev/null +++ b/data_safe_haven/infrastructure/components/composite/nfsv3_blob_container.py @@ -0,0 +1,75 @@ +from pulumi import ComponentResource, Input, ResourceOptions +from pulumi_azure_native import storage + +from data_safe_haven.infrastructure.components.dynamic.blob_container_acl import ( + BlobContainerAcl, + BlobContainerAclProps, +) + + +class NFSV3BlobContainerProps: + def __init__( + self, + acl_user: Input[str], + acl_group: Input[str], + acl_other: Input[str], + apply_default_permissions: Input[bool], + container_name: Input[str], + resource_group_name: Input[str], + storage_account: Input[storage.StorageAccount], + subscription_name: Input[str], + ): + self.acl_user = acl_user + self.acl_group = acl_group + self.acl_other = acl_other + self.apply_default_permissions = apply_default_permissions + self.container_name = container_name + self.resource_group_name = resource_group_name + self.storage_account = storage_account + self.subscription_name = subscription_name + + +class NFSV3BlobContainerComponent(ComponentResource): + def __init__( + self, + name: str, + props: NFSV3BlobContainerProps, + opts: ResourceOptions | None = None, + ): + super().__init__("dsh:common:NFSV3BlobContainerComponent", name, {}, opts) + child_opts = ResourceOptions.merge(opts, ResourceOptions(parent=self)) + + storage_container = storage.BlobContainer( + f"{self._name}_blob_container_{props.container_name}", + account_name=props.storage_account.name, + container_name=props.container_name, + default_encryption_scope="$account-encryption-key", + deny_encryption_scope_override=False, + public_access=storage.PublicAccess.NONE, + resource_group_name=props.resource_group_name, + opts=ResourceOptions.merge( + child_opts, + ResourceOptions(parent=props.storage_account), + ), + ) + BlobContainerAcl( + f"{storage_container._name}_acl", + BlobContainerAclProps( + acl_user=props.acl_user, + acl_group=props.acl_group, + acl_other=props.acl_other, + apply_default_permissions=props.apply_default_permissions, + container_name=storage_container.name, + resource_group_name=props.resource_group_name, + storage_account_name=props.storage_account.name, + subscription_name=props.subscription_name, + ), + opts=ResourceOptions.merge( + child_opts, + ResourceOptions(parent=props.storage_account), + ), + ) + + self.name = storage_container.name + + self.register_outputs({}) diff --git a/data_safe_haven/infrastructure/programs/sre/data.py b/data_safe_haven/infrastructure/programs/sre/data.py index 6cf5edb869..e416eaa8e8 100644 --- a/data_safe_haven/infrastructure/programs/sre/data.py +++ b/data_safe_haven/infrastructure/programs/sre/data.py @@ -29,8 +29,8 @@ get_name_from_rg, ) from data_safe_haven.infrastructure.components import ( - BlobContainerAcl, - BlobContainerAclProps, + NFSV3BlobContainerComponent, + NFSV3BlobContainerProps, NFSV3StorageAccount, SSLCertificate, SSLCertificateProps, @@ -474,68 +474,35 @@ def __init__( tags=child_tags, ) # Deploy storage containers - storage_container_egress = storage.BlobContainer( + NFSV3BlobContainerComponent( f"{self._name}_blob_egress", - account_name=storage_account_data_private_sensitive.name, - container_name="egress", - default_encryption_scope="$account-encryption-key", - deny_encryption_scope_override=False, - public_access=storage.PublicAccess.NONE, - resource_group_name=props.resource_group_name, - opts=ResourceOptions.merge( - child_opts, - ResourceOptions(parent=storage_account_data_private_sensitive), - ), - ) - storage_container_ingress = storage.BlobContainer( - f"{self._name}_blob_ingress", - account_name=storage_account_data_private_sensitive.name, - container_name="ingress", - default_encryption_scope="$account-encryption-key", - deny_encryption_scope_override=False, - public_access=storage.PublicAccess.NONE, - resource_group_name=props.resource_group_name, - opts=ResourceOptions.merge( - child_opts, - ResourceOptions(parent=storage_account_data_private_sensitive), - ), - ) - # Set storage container ACLs - BlobContainerAcl( - f"{storage_container_egress._name}_acl", - BlobContainerAclProps( + NFSV3BlobContainerProps( acl_user="rwx", acl_group="rwx", acl_other="rwx", # due to an Azure bug `apply_default_permissions=True` also gives user # 65533 ownership of the fileshare (preventing use inside the SRE) apply_default_permissions=False, - container_name=storage_container_egress.name, + container_name="egress", resource_group_name=props.resource_group_name, - storage_account_name=storage_account_data_private_sensitive.name, + storage_account=storage_account_data_private_sensitive, subscription_name=props.subscription_name, ), - opts=ResourceOptions.merge( - child_opts, ResourceOptions(parent=storage_container_egress) - ), ) - BlobContainerAcl( - f"{storage_container_ingress._name}_acl", - BlobContainerAclProps( + NFSV3BlobContainerComponent( + f"{self._name}_blob_ingress", + NFSV3BlobContainerProps( acl_user="rwx", acl_group="r-x", acl_other="r-x", # ensure that the above permissions are also set on any newly created # files (eg. with Azure Storage Explorer) apply_default_permissions=True, - container_name=storage_container_ingress.name, + container_name="ingress", resource_group_name=props.resource_group_name, - storage_account_name=storage_account_data_private_sensitive.name, + storage_account=storage_account_data_private_sensitive, subscription_name=props.subscription_name, ), - opts=ResourceOptions.merge( - child_opts, ResourceOptions(parent=storage_container_ingress) - ), ) # Set up a private endpoint for the sensitive data storage account storage_account_data_private_sensitive_endpoint = network.PrivateEndpoint( diff --git a/data_safe_haven/infrastructure/programs/sre/desired_state.py b/data_safe_haven/infrastructure/programs/sre/desired_state.py index 8e1fc6c8a0..5ec650d7e9 100644 --- a/data_safe_haven/infrastructure/programs/sre/desired_state.py +++ b/data_safe_haven/infrastructure/programs/sre/desired_state.py @@ -29,8 +29,8 @@ get_name_from_rg, ) from data_safe_haven.infrastructure.components import ( - BlobContainerAcl, - BlobContainerAclProps, + NFSV3BlobContainerComponent, + NFSV3BlobContainerProps, NFSV3StorageAccount, ) from data_safe_haven.resources import resources_path @@ -97,37 +97,20 @@ def __init__( tags=child_tags, ) # Deploy desired state share - container_desired_state = storage.BlobContainer( + container_desired_state = NFSV3BlobContainerComponent( f"{self._name}_blob_desired_state", - account_name=storage_account.name, - container_name="desiredstate", - default_encryption_scope="$account-encryption-key", - deny_encryption_scope_override=False, - public_access=storage.PublicAccess.NONE, - resource_group_name=props.resource_group_name, - opts=ResourceOptions.merge( - child_opts, - ResourceOptions(parent=storage_account), - ), - ) - # Set storage container ACLs - BlobContainerAcl( - f"{container_desired_state._name}_acl", - BlobContainerAclProps( + NFSV3BlobContainerProps( acl_user="r-x", acl_group="r-x", acl_other="r-x", # ensure that the above permissions are also set on any newly created # files (eg. with Azure Storage Explorer) apply_default_permissions=True, - container_name=container_desired_state.name, + container_name="desiredstate", resource_group_name=props.resource_group_name, - storage_account_name=storage_account.name, + storage_account=storage_account, subscription_name=props.subscription_name, ), - opts=ResourceOptions.merge( - child_opts, ResourceOptions(parent=container_desired_state) - ), ) # Create file assets to upload desired_state_directory = (resources_path / "workspace" / "ansible").absolute() From 2bae206d125ad4db721d47dc3023bc4f802e51f7 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 17 Sep 2024 15:09:44 +0100 Subject: [PATCH 139/302] Correct path to install_deb script --- data_safe_haven/resources/workspace/ansible/desired_state.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index 7287d3d262..3361ffe760 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -29,7 +29,7 @@ tags: apt ansible.builtin.script: executable: /bin/bash - cmd: "/desired_state/install_deb.sh {{ item.source }} {{ item.filename }} {{ item.sha256 }}" + cmd: "/var/local/ansible/install_deb.sh {{ item.source }} {{ item.filename }} {{ item.sha256 }}" creates: "{{ item.creates }}" loop: "{{ deb_packages[ansible_facts.distribution_release] }}" From cb8969792ec9fb4bbb3e2be3323c7ce64bb62616 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 17 Sep 2024 15:11:46 +0100 Subject: [PATCH 140/302] Correct paths in comments --- data_safe_haven/infrastructure/programs/sre/data.py | 4 ++-- data_safe_haven/infrastructure/programs/sre/desired_state.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/data_safe_haven/infrastructure/programs/sre/data.py b/data_safe_haven/infrastructure/programs/sre/data.py index e416eaa8e8..ede49ba62c 100644 --- a/data_safe_haven/infrastructure/programs/sre/data.py +++ b/data_safe_haven/infrastructure/programs/sre/data.py @@ -458,7 +458,7 @@ def __init__( ), ) # Deploy sensitive data blob storage account - # - This holds the /data and /output containers that are mounted by workspaces + # - This holds the /mnt/input and /mnt/output containers that are mounted by workspaces # - Azure blobs have worse NFS support but can be accessed with Azure Storage Explorer storage_account_data_private_sensitive = NFSV3StorageAccount( f"{self._name}_storage_account_data_private_sensitive", @@ -569,7 +569,7 @@ def __init__( ) # Deploy data_private_user files storage account - # - This holds the /home and /shared containers that are mounted by workspaces + # - This holds the /home and /mnt/shared containers that are mounted by workspaces # - Azure Files has better NFS support but cannot be accessed with Azure Storage Explorer # - Allows root-squashing to be configured # From https://learn.microsoft.com/en-us/azure/storage/files/files-nfs-protocol diff --git a/data_safe_haven/infrastructure/programs/sre/desired_state.py b/data_safe_haven/infrastructure/programs/sre/desired_state.py index 5ec650d7e9..185fbfabfc 100644 --- a/data_safe_haven/infrastructure/programs/sre/desired_state.py +++ b/data_safe_haven/infrastructure/programs/sre/desired_state.py @@ -82,7 +82,7 @@ def __init__( child_tags = {"component": "data"} | (tags if tags else {}) # Deploy desired state storage account - # - This holds the /desired_state container that is mounted by workspaces + # - This holds the /var/local/ansible container that is mounted by workspaces # - Azure blobs have worse NFS support but can be accessed with Azure Storage Explorer storage_account = NFSV3StorageAccount( f"{self._name}_storage_account", From aa46d236dc62a78414a384a9486b84c91a2e74e8 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 17 Sep 2024 15:42:49 +0100 Subject: [PATCH 141/302] Update pulumi component properties --- .../programs/declarative_sre.py | 20 +++++------ .../programs/sre/desired_state.py | 27 +++++++++++++++ .../infrastructure/programs/sre/workspaces.py | 33 ------------------- 3 files changed, 36 insertions(+), 44 deletions(-) diff --git a/data_safe_haven/infrastructure/programs/declarative_sre.py b/data_safe_haven/infrastructure/programs/declarative_sre.py index 0017474f6a..483d21355b 100644 --- a/data_safe_haven/infrastructure/programs/declarative_sre.py +++ b/data_safe_haven/infrastructure/programs/declarative_sre.py @@ -344,11 +344,20 @@ def __call__(self) -> None: self.stack_name, SREDesiredStateProps( admin_ip_addresses=self.config.sre.admin_ip_addresses, + clamav_mirror_hostname=clamav_mirror.hostname, + database_service_admin_password=data.password_database_service_admin, dns_private_zones=dns.private_zones, gitea_hostname=user_services.gitea_server.hostname, hedgedoc_hostname=user_services.hedgedoc_server.hostname, + ldap_group_filter=ldap_group_filter, + ldap_group_search_base=ldap_group_search_base, + ldap_server_hostname=identity.hostname, + ldap_server_port=identity.server_port, + ldap_user_filter=ldap_user_filter, + ldap_user_search_base=ldap_user_search_base, location=self.config.azure.location, resource_group=resource_group, + software_repository_hostname=user_services.software_repositories.hostname, subnet_desired_state=networking.subnet_desired_state, subscription_name=self.context.subscription_name, ), @@ -361,22 +370,11 @@ def __call__(self) -> None: SREWorkspacesProps( admin_password=data.password_workspace_admin, apt_proxy_server_hostname=apt_proxy_server.hostname, - clamav_mirror_hostname=clamav_mirror.hostname, data_collection_rule_id=monitoring.data_collection_rule_vms.id, data_collection_endpoint_id=monitoring.data_collection_endpoint.id, - database_service_admin_password=data.password_database_service_admin, - gitea_hostname=user_services.gitea_server.hostname, - hedgedoc_hostname=user_services.hedgedoc_server.hostname, - ldap_group_filter=ldap_group_filter, - ldap_group_search_base=ldap_group_search_base, - ldap_server_hostname=identity.hostname, - ldap_server_port=identity.server_port, - ldap_user_filter=ldap_user_filter, - ldap_user_search_base=ldap_user_search_base, location=self.config.azure.location, maintenance_configuration_id=monitoring.maintenance_configuration.id, resource_group_name=resource_group.name, - software_repository_hostname=user_services.software_repositories.hostname, sre_name=self.config.name, storage_account_desired_state_name=desired_state.storage_account_name, storage_account_data_private_user_name=data.storage_account_data_private_user_name, diff --git a/data_safe_haven/infrastructure/programs/sre/desired_state.py b/data_safe_haven/infrastructure/programs/sre/desired_state.py index 185fbfabfc..94ccf2b737 100644 --- a/data_safe_haven/infrastructure/programs/sre/desired_state.py +++ b/data_safe_haven/infrastructure/programs/sre/desired_state.py @@ -43,23 +43,41 @@ class SREDesiredStateProps: def __init__( self, admin_ip_addresses: Input[Sequence[str]], + clamav_mirror_hostname: Input[str], + database_service_admin_password: Input[str], dns_private_zones: Input[dict[str, network.PrivateZone]], gitea_hostname: Input[str], hedgedoc_hostname: Input[str], + ldap_group_filter: Input[str], + ldap_group_search_base: Input[str], + ldap_server_hostname: Input[str], + ldap_server_port: Input[int], + ldap_user_filter: Input[str], + ldap_user_search_base: Input[str], location: Input[str], resource_group: Input[resources.ResourceGroup], + software_repository_hostname: Input[str], subscription_name: Input[str], subnet_desired_state: Input[network.GetSubnetResult], ) -> None: self.admin_ip_addresses = admin_ip_addresses + self.clamav_mirror_hostname = clamav_mirror_hostname + self.database_service_admin_password = database_service_admin_password self.dns_private_zones = dns_private_zones self.gitea_hostname = gitea_hostname self.hedgedoc_hostname = hedgedoc_hostname + self.ldap_group_filter = ldap_group_filter + self.ldap_group_search_base = ldap_group_search_base + self.ldap_server_hostname = ldap_server_hostname + self.ldap_server_port = Output.from_input(ldap_server_port).apply(str) + self.ldap_user_filter = ldap_user_filter + self.ldap_user_search_base = ldap_user_search_base self.location = location self.resource_group_id = Output.from_input(resource_group).apply(get_id_from_rg) self.resource_group_name = Output.from_input(resource_group).apply( get_name_from_rg ) + self.software_repository_hostname = software_repository_hostname self.subnet_desired_state_id = Output.from_input(subnet_desired_state).apply( get_id_from_subnet ) @@ -141,8 +159,17 @@ def __init__( container_name=container_desired_state.name, resource_group_name=props.resource_group_name, source=Output.all( + clamav_mirror_hostname=props.clamav_mirror_hostname, + database_service_admin_password=props.database_service_admin_password, gitea_hostname=props.gitea_hostname, hedgedoc_hostname=props.hedgedoc_hostname, + ldap_group_filter=props.ldap_group_filter, + ldap_group_search_base=props.ldap_group_search_base, + ldap_server_hostname=props.ldap_server_hostname, + ldap_server_port=props.ldap_server_port, + ldap_user_filter=props.ldap_user_filter, + ldap_user_search_base=props.ldap_user_search_base, + software_repository_hostname=props.software_repository_hostname, ).apply(lambda kwargs: StringAsset(self.ansible_vars_file(**kwargs))), ) # Set up a private endpoint for the desired state storage account diff --git a/data_safe_haven/infrastructure/programs/sre/workspaces.py b/data_safe_haven/infrastructure/programs/sre/workspaces.py index ca8a605963..d6c22bce53 100644 --- a/data_safe_haven/infrastructure/programs/sre/workspaces.py +++ b/data_safe_haven/infrastructure/programs/sre/workspaces.py @@ -24,22 +24,11 @@ def __init__( self, admin_password: Input[str], apt_proxy_server_hostname: Input[str], - clamav_mirror_hostname: Input[str], data_collection_endpoint_id: Input[str], data_collection_rule_id: Input[str], - database_service_admin_password: Input[str], - gitea_hostname: Input[str], - hedgedoc_hostname: Input[str], - ldap_group_filter: Input[str], - ldap_group_search_base: Input[str], - ldap_server_hostname: Input[str], - ldap_server_port: Input[int], - ldap_user_filter: Input[str], - ldap_user_search_base: Input[str], location: Input[str], maintenance_configuration_id: Input[str], resource_group_name: Input[str], - software_repository_hostname: Input[str], sre_name: Input[str], storage_account_desired_state_name: Input[str], storage_account_data_private_sensitive_name: Input[str], @@ -52,22 +41,11 @@ def __init__( self.admin_password = Output.secret(admin_password) self.admin_username = "dshadmin" self.apt_proxy_server_hostname = apt_proxy_server_hostname - self.clamav_mirror_hostname = clamav_mirror_hostname self.data_collection_rule_id = data_collection_rule_id self.data_collection_endpoint_id = data_collection_endpoint_id - self.database_service_admin_password = database_service_admin_password - self.gitea_hostname = gitea_hostname - self.hedgedoc_hostname = hedgedoc_hostname - self.ldap_group_filter = ldap_group_filter - self.ldap_group_search_base = ldap_group_search_base - self.ldap_server_hostname = ldap_server_hostname - self.ldap_server_port = Output.from_input(ldap_server_port).apply(str) - self.ldap_user_filter = ldap_user_filter - self.ldap_user_search_base = ldap_user_search_base self.location = location self.maintenance_configuration_id = maintenance_configuration_id self.resource_group_name = resource_group_name - self.software_repository_hostname = software_repository_hostname self.sre_name = sre_name self.storage_account_desired_state_name = storage_account_desired_state_name self.storage_account_data_private_user_name = ( @@ -116,17 +94,6 @@ def __init__( # Load cloud-init file cloudinit = Output.all( apt_proxy_server_hostname=props.apt_proxy_server_hostname, - clamav_mirror_hostname=props.clamav_mirror_hostname, - database_service_admin_password=props.database_service_admin_password, - gitea_hostname=props.gitea_hostname, - hedgedoc_hostname=props.hedgedoc_hostname, - ldap_group_filter=props.ldap_group_filter, - ldap_group_search_base=props.ldap_group_search_base, - ldap_server_hostname=props.ldap_server_hostname, - ldap_server_port=props.ldap_server_port, - ldap_user_filter=props.ldap_user_filter, - ldap_user_search_base=props.ldap_user_search_base, - software_repository_hostname=props.software_repository_hostname, storage_account_desired_state_name=props.storage_account_desired_state_name, storage_account_data_private_user_name=props.storage_account_data_private_user_name, storage_account_data_private_sensitive_name=props.storage_account_data_private_sensitive_name, From d62c0ccea190a76639b0101cb19cc2281677c01b Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Wed, 18 Sep 2024 12:35:06 +0100 Subject: [PATCH 142/302] Correct template names --- .../resources/workspace/ansible/desired_state.yaml | 6 +++--- .../templates/etc/R/{Rprofile.site => Rprofile.site.j2} | 0 2 files changed, 3 insertions(+), 3 deletions(-) rename data_safe_haven/resources/workspace/ansible/templates/etc/R/{Rprofile.site => Rprofile.site.j2} (100%) diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index 3361ffe760..e70bb1c54e 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -335,9 +335,9 @@ mode: '0444' loop: - src: etc/pip.conf.j2 - dest: /etc/ - - src: etc/R/Rprofile.site - dest: /etc/R/ + dest: /etc/pip.conf + - src: etc/R/Rprofile.site.j2 + dest: /etc/R/Rprofile.site - name: Copy smoke test files directory ansible.builtin.copy: diff --git a/data_safe_haven/resources/workspace/ansible/templates/etc/R/Rprofile.site b/data_safe_haven/resources/workspace/ansible/templates/etc/R/Rprofile.site.j2 similarity index 100% rename from data_safe_haven/resources/workspace/ansible/templates/etc/R/Rprofile.site rename to data_safe_haven/resources/workspace/ansible/templates/etc/R/Rprofile.site.j2 From 9e6b1b9c8fd162124a6f2e502f431c39043b4326 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 19 Sep 2024 09:10:51 +0100 Subject: [PATCH 143/302] Rename class --- data_safe_haven/infrastructure/components/__init__.py | 4 ++-- data_safe_haven/infrastructure/components/wrapped/__init__.py | 4 ++-- .../components/wrapped/nfsv3_storage_account.py | 2 +- data_safe_haven/infrastructure/programs/sre/data.py | 4 ++-- data_safe_haven/infrastructure/programs/sre/desired_state.py | 4 ++-- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/data_safe_haven/infrastructure/components/__init__.py b/data_safe_haven/infrastructure/components/__init__.py index 89a127b8d8..7531491bf8 100644 --- a/data_safe_haven/infrastructure/components/__init__.py +++ b/data_safe_haven/infrastructure/components/__init__.py @@ -21,8 +21,8 @@ SSLCertificateProps, ) from .wrapped import ( - NFSV3StorageAccount, WrappedLogAnalyticsWorkspace, + WrappedNFSV3StorageAccount, ) __all__ = [ @@ -39,7 +39,7 @@ "MicrosoftSQLDatabaseProps", "NFSV3BlobContainerComponent", "NFSV3BlobContainerProps", - "NFSV3StorageAccount", + "WrappedNFSV3StorageAccount", "PostgresqlDatabaseComponent", "PostgresqlDatabaseProps", "SSLCertificate", diff --git a/data_safe_haven/infrastructure/components/wrapped/__init__.py b/data_safe_haven/infrastructure/components/wrapped/__init__.py index 48c5570168..ef6e7374d2 100644 --- a/data_safe_haven/infrastructure/components/wrapped/__init__.py +++ b/data_safe_haven/infrastructure/components/wrapped/__init__.py @@ -1,7 +1,7 @@ from .log_analytics_workspace import WrappedLogAnalyticsWorkspace -from .nfsv3_storage_account import NFSV3StorageAccount +from .nfsv3_storage_account import WrappedNFSV3StorageAccount __all__ = [ - "NFSV3StorageAccount", + "WrappedNFSV3StorageAccount", "WrappedLogAnalyticsWorkspace", ] diff --git a/data_safe_haven/infrastructure/components/wrapped/nfsv3_storage_account.py b/data_safe_haven/infrastructure/components/wrapped/nfsv3_storage_account.py index 0787970fef..181839e71d 100644 --- a/data_safe_haven/infrastructure/components/wrapped/nfsv3_storage_account.py +++ b/data_safe_haven/infrastructure/components/wrapped/nfsv3_storage_account.py @@ -6,7 +6,7 @@ from data_safe_haven.external import AzureIPv4Range -class NFSV3StorageAccount(storage.StorageAccount): +class WrappedNFSV3StorageAccount(storage.StorageAccount): encryption_args = storage.EncryptionArgs( key_source=storage.KeySource.MICROSOFT_STORAGE, services=storage.EncryptionServicesArgs( diff --git a/data_safe_haven/infrastructure/programs/sre/data.py b/data_safe_haven/infrastructure/programs/sre/data.py index ede49ba62c..9e18666277 100644 --- a/data_safe_haven/infrastructure/programs/sre/data.py +++ b/data_safe_haven/infrastructure/programs/sre/data.py @@ -31,9 +31,9 @@ from data_safe_haven.infrastructure.components import ( NFSV3BlobContainerComponent, NFSV3BlobContainerProps, - NFSV3StorageAccount, SSLCertificate, SSLCertificateProps, + WrappedNFSV3StorageAccount, ) from data_safe_haven.types import AzureDnsZoneNames @@ -460,7 +460,7 @@ def __init__( # Deploy sensitive data blob storage account # - This holds the /mnt/input and /mnt/output containers that are mounted by workspaces # - Azure blobs have worse NFS support but can be accessed with Azure Storage Explorer - storage_account_data_private_sensitive = NFSV3StorageAccount( + storage_account_data_private_sensitive = WrappedNFSV3StorageAccount( f"{self._name}_storage_account_data_private_sensitive", # Storage account names have a maximum of 24 characters account_name=alphanumeric( diff --git a/data_safe_haven/infrastructure/programs/sre/desired_state.py b/data_safe_haven/infrastructure/programs/sre/desired_state.py index 94ccf2b737..73466d6c5b 100644 --- a/data_safe_haven/infrastructure/programs/sre/desired_state.py +++ b/data_safe_haven/infrastructure/programs/sre/desired_state.py @@ -31,7 +31,7 @@ from data_safe_haven.infrastructure.components import ( NFSV3BlobContainerComponent, NFSV3BlobContainerProps, - NFSV3StorageAccount, + WrappedNFSV3StorageAccount, ) from data_safe_haven.resources import resources_path from data_safe_haven.types import AzureDnsZoneNames @@ -102,7 +102,7 @@ def __init__( # Deploy desired state storage account # - This holds the /var/local/ansible container that is mounted by workspaces # - Azure blobs have worse NFS support but can be accessed with Azure Storage Explorer - storage_account = NFSV3StorageAccount( + storage_account = WrappedNFSV3StorageAccount( f"{self._name}_storage_account", account_name=alphanumeric( f"{''.join(truncate_tokens(stack_name.split('-'), 11))}desiredstate{sha256hash(self._name)}" From 8eaedbac486dd77823f442befcb8f82fac1fe418 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 19 Sep 2024 14:50:16 +0100 Subject: [PATCH 144/302] Split desired state playbook into task files --- .../workspace/ansible/desired_state.yaml | 356 ++---------------- .../workspace/ansible/tasks/auditd.yaml | 37 ++ .../workspace/ansible/tasks/clamav.yaml | 60 +++ .../ansible/tasks/global_config.yaml | 20 + .../workspace/ansible/tasks/ldap.yaml | 34 ++ .../ansible/tasks/package_proxy.yaml | 12 + .../workspace/ansible/tasks/packages.yaml | 42 +++ .../workspace/ansible/tasks/smoke_tests.yaml | 13 + .../workspace/ansible/tasks/sshd.yaml | 18 + .../workspace/ansible/tasks/ubuntu_pro.yaml | 10 + .../workspace/ansible/tasks/xfce.yaml | 64 ++++ .../workspace/ansible/tasks/xrdp.yaml | 46 +++ 12 files changed, 378 insertions(+), 334 deletions(-) create mode 100644 data_safe_haven/resources/workspace/ansible/tasks/auditd.yaml create mode 100644 data_safe_haven/resources/workspace/ansible/tasks/clamav.yaml create mode 100644 data_safe_haven/resources/workspace/ansible/tasks/global_config.yaml create mode 100644 data_safe_haven/resources/workspace/ansible/tasks/ldap.yaml create mode 100644 data_safe_haven/resources/workspace/ansible/tasks/package_proxy.yaml create mode 100644 data_safe_haven/resources/workspace/ansible/tasks/packages.yaml create mode 100644 data_safe_haven/resources/workspace/ansible/tasks/smoke_tests.yaml create mode 100644 data_safe_haven/resources/workspace/ansible/tasks/sshd.yaml create mode 100644 data_safe_haven/resources/workspace/ansible/tasks/ubuntu_pro.yaml create mode 100644 data_safe_haven/resources/workspace/ansible/tasks/xfce.yaml create mode 100644 data_safe_haven/resources/workspace/ansible/tasks/xrdp.yaml diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index e70bb1c54e..25d669acf0 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -6,350 +6,38 @@ - vars/pulumi_vars.yaml tasks: - - name: Update package cache - tags: apt - ansible.builtin.apt: - update_cache: true - cache_valid_time: 600 + - name: Install packages + ansible.builtin.import_tasks: tasks/packages.yaml - - name: List apt packages to install - tags: apt - ansible.builtin.debug: - msg: "{{ apt_packages.common | union(apt_packages[ansible_facts.distribution_release]) }}" + - name: Disable Ubuntu Pro services + ansible.builtin.import_tasks: tasks/ubuntu_pro.yaml - - name: Install apt packages - tags: apt - ansible.builtin.apt: - name: "{{ apt_packages.common | union(apt_packages[ansible_facts.distribution_release]) }}" - state: present - async: 3600 - poll: 30 + - name: Configure auditd + ansible.builtin.import_tasks: tasks/auditd.yaml - - name: Install deb packages - tags: apt - ansible.builtin.script: - executable: /bin/bash - cmd: "/var/local/ansible/install_deb.sh {{ item.source }} {{ item.filename }} {{ item.sha256 }}" - creates: "{{ item.creates }}" - loop: "{{ deb_packages[ansible_facts.distribution_release] }}" + - name: Configure sshd + ansible.builtin.import_tasks: tasks/sshd.yaml - - name: Install snap packages - community.general.snap: - name: "{{ item.name }}" - classic: "{{ item.classic }}" - state: present - loop: "{{ snap_packages }}" + - name: Configure ClamAV + ansible.builtin.import_tasks: tasks/clamav.yaml - # https://ubuntu.com/server/docs/nvidia-drivers-installation#installing-the-drivers-on-servers-andor-for-computing-purposes - - name: Use ubuntu-drivers to install Nvidia drivers # noqa: no-handler - tags: nvidia - ansible.builtin.command: - cmd: ubuntu-drivers install --gpgpu - creates: /usr/bin/nvidia-smi + - name: Globally configure default user settings + ansible.builtin.import_tasks: tasks/global_config.yaml - - name: Disable and stop Ubuntu Pro services - ansible.builtin.systemd: - name: "{{ item }}" - state: stopped - enabled: false - loop: - - apt-news - - esm-cache - - - name: Enable bash autocompletion globally - ansible.builtin.blockinfile: - path: /etc/bash.bashrc - block: | - # enable bash completion in interactive shells - if [ ! $(shopt -oq posix) ]; then - if [ -f /usr/share/bash-completion/bash_completion ]; then - . /usr/share/bash-completion/bash_completion - elif [ -f /etc/bash_completion ]; then - . /etc/bash_completion - fi - fi - - - name: Copy bashrc skeleton - ansible.builtin.copy: - src: etc/skel/bashrc - dest: /etc/skel/.bashrc - mode: '0755' - - - name: Copy xsession skeleton - ansible.builtin.copy: - src: etc/skel/xsession - dest: /etc/skel/.xsession - mode: '0444' - - - name: Add ldap to /etc/nsswitch.conf - ansible.builtin.replace: - path: /etc/nsswitch.conf - regexp: '^(passwd|group|shadow)(:.*)(? /etc/audit/rules.d/50-privileged.rules - creates: /etc/audit/rules.d/50-privileged.rules - notify: Restart auditd - - - name: Copy ClamAV daemon configuration - ansible.builtin.copy: - src: etc/clamav/clamd.conf - dest: /etc/clamav/clamd.conf - mode: '0444' - owner: clamav - group: adm - register: clamd - - - name: Enable and start ClamAV daemon - ansible.builtin.systemd: - name: clamav-daemon - enabled: true - state: started - - - name: Restart ClamAV daemon # noqa: no-handler - ansible.builtin.systemd: - name: clamav-daemon - state: restarted - when: clamd.changed - - - name: Set freshclam private mirror - ansible.builtin.lineinfile: - path: /etc/clamav/freshclam.conf - line: "PrivateMirror {{ clamav_mirror_hostname }}" - state: present - - # This is required to fetch definitions for the clamav daemon to run - - name: Initial freshclam run # noqa: command-instead-of-module - ansible.builtin.shell: - cmd: | - systemctl stop clamav-freshclam && freshclam && systemctl start clamav-freshclam - creates: '/var/lib/clamav/main.{c[vl]d,inc}' - - - name: Copy ClamAV services directory - ansible.builtin.copy: - src: etc/systemd/system/ - dest: /etc/systemd/system/ - mode: '0644' - notify: Systemd daemon reload - - - name: Enable and start freshclam - ansible.builtin.systemd: - name: clamav-freshclam - state: started - enabled: true - - - name: Enable and start ClamAV on access scan - ansible.builtin.systemd: - name: clamav-clamonacc - enabled: true - state: started - - - name: Enable and start ClamAV timer - ansible.builtin.systemd: - name: clamav-clamdscan.timer - enabled: true - state: started + - name: Configure Xrdp + ansible.builtin.import_tasks: tasks/xrdp.yaml - - name: Template pip and CRAN global configuration - ansible.builtin.template: - src: "{{ item.src }}" - dest: "{{ item.dest }}" - mode: '0444' - loop: - - src: etc/pip.conf.j2 - dest: /etc/pip.conf - - src: etc/R/Rprofile.site.j2 - dest: /etc/R/Rprofile.site + - name: Configure Xfce + ansible.builtin.import_tasks: tasks/xfce.yaml - - name: Copy smoke test files directory - ansible.builtin.copy: - src: usr/local/smoke_tests/ - dest: /usr/local/smoke_tests/ - mode: '0755' + - name: Configure package proxies + ansible.builtin.import_tasks: tasks/package_proxy.yaml - - name: Write database credential for smoke tests - ansible.builtin.template: - src: etc/database_credential.j2 - dest: /etc/database_credential - mode: '0400' + - name: Provision smoke tests + ansible.builtin.import_tasks: tasks/smoke_tests.yaml handlers: - name: Restart auditd diff --git a/data_safe_haven/resources/workspace/ansible/tasks/auditd.yaml b/data_safe_haven/resources/workspace/ansible/tasks/auditd.yaml new file mode 100644 index 0000000000..9fc12bf728 --- /dev/null +++ b/data_safe_haven/resources/workspace/ansible/tasks/auditd.yaml @@ -0,0 +1,37 @@ +--- + +- name: Enable and start auditd service + tags: auditd + ansible.builtin.systemd: + name: auditd + enabled: true + state: started + +- name: Get minimum uid # noqa: inline-env-var + tags: auditd + ansible.builtin.command: + cmd: awk '/^\s*UID_MIN/{print $2}' /etc/login.defs + register: uid_min + changed_when: false + +- name: Template auditd rules + tags: auditd + ansible.builtin.template: + src: etc/audit/rules.d/audit.rules.j2 + dest: /etc/audit/rules.d/audit.rules + mode: '0640' + notify: Restart auditd + +- name: Copy auditd privileged executable rules script + tags: auditd + ansible.builtin.copy: + src: usr/local/bin/privileged-rules + dest: /usr/local/bin/privileged-rules + mode: '0500' + +- name: Generate auditd privileged executable rules + tags: auditd + ansible.builtin.shell: + cmd: /usr/local/bin/privileged-rules > /etc/audit/rules.d/50-privileged.rules + creates: /etc/audit/rules.d/50-privileged.rules + notify: Restart auditd diff --git a/data_safe_haven/resources/workspace/ansible/tasks/clamav.yaml b/data_safe_haven/resources/workspace/ansible/tasks/clamav.yaml new file mode 100644 index 0000000000..6f99576e1f --- /dev/null +++ b/data_safe_haven/resources/workspace/ansible/tasks/clamav.yaml @@ -0,0 +1,60 @@ +--- + +- name: Copy ClamAV daemon configuration + ansible.builtin.copy: + src: etc/clamav/clamd.conf + dest: /etc/clamav/clamd.conf + mode: '0444' + owner: clamav + group: adm + register: clamd + +- name: Enable and start ClamAV daemon + ansible.builtin.systemd: + name: clamav-daemon + enabled: true + state: started + +- name: Restart ClamAV daemon # noqa: no-handler + ansible.builtin.systemd: + name: clamav-daemon + state: restarted + when: clamd.changed + +- name: Set freshclam private mirror + ansible.builtin.lineinfile: + path: /etc/clamav/freshclam.conf + line: "PrivateMirror {{ clamav_mirror_hostname }}" + state: present + +# This is required to fetch definitions for the clamav daemon to run +- name: Initial freshclam run # noqa: command-instead-of-module + ansible.builtin.shell: + cmd: | + systemctl stop clamav-freshclam && freshclam && systemctl start clamav-freshclam + creates: '/var/lib/clamav/main.{c[vl]d,inc}' + +- name: Copy ClamAV services directory + ansible.builtin.copy: + src: etc/systemd/system/ + dest: /etc/systemd/system/ + mode: '0644' + notify: Systemd daemon reload + +- name: Enable and start freshclam + ansible.builtin.systemd: + name: clamav-freshclam + state: started + enabled: true + +- name: Enable and start ClamAV on access scan + ansible.builtin.systemd: + name: clamav-clamonacc + enabled: true + state: started + +- name: Enable and start ClamAV timer + ansible.builtin.systemd: + name: clamav-clamdscan.timer + enabled: true + state: started diff --git a/data_safe_haven/resources/workspace/ansible/tasks/global_config.yaml b/data_safe_haven/resources/workspace/ansible/tasks/global_config.yaml new file mode 100644 index 0000000000..7b8ab9177a --- /dev/null +++ b/data_safe_haven/resources/workspace/ansible/tasks/global_config.yaml @@ -0,0 +1,20 @@ +--- + +- name: Enable bash autocompletion globally + ansible.builtin.blockinfile: + path: /etc/bash.bashrc + block: | + # enable bash completion in interactive shells + if [ ! $(shopt -oq posix) ]; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi + fi + +- name: Copy bashrc skeleton + ansible.builtin.copy: + src: etc/skel/bashrc + dest: /etc/skel/.bashrc + mode: '0755' diff --git a/data_safe_haven/resources/workspace/ansible/tasks/ldap.yaml b/data_safe_haven/resources/workspace/ansible/tasks/ldap.yaml new file mode 100644 index 0000000000..7698b1fd2b --- /dev/null +++ b/data_safe_haven/resources/workspace/ansible/tasks/ldap.yaml @@ -0,0 +1,34 @@ +--- + +- name: Add ldap to /etc/nsswitch.conf + ansible.builtin.replace: + path: /etc/nsswitch.conf + regexp: '^(passwd|group|shadow)(:.*)(? Date: Fri, 20 Sep 2024 10:00:40 +0100 Subject: [PATCH 145/302] Update docs/source/roles/data_provider_representative/data_ingress.md Co-authored-by: James Robinson --- docs/source/roles/data_provider_representative/data_ingress.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/roles/data_provider_representative/data_ingress.md b/docs/source/roles/data_provider_representative/data_ingress.md index 589979b543..659ee706ad 100644 --- a/docs/source/roles/data_provider_representative/data_ingress.md +++ b/docs/source/roles/data_provider_representative/data_ingress.md @@ -61,7 +61,7 @@ They are common algorithms built into many operating systems, and included in th You can generate a checksum file, which can be used to verify the integrity of files. If you upload this file then researchers will be able to independently verify data integrity within the environment. -Here are instructions to generate a checksum file using the `md5sum` algorithm for a data set stored in a directory called `data`. +Here are instructions to generate a checksum file using the `md5sum` algorithm for a data set stored in the `input` directory. ```console find ./mnt/input/ -type fl -exec md5sum {} + > hashes.txt From 08eabc989213a27c8b69481109af57f4ac57afe7 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 20 Sep 2024 10:49:39 +0100 Subject: [PATCH 146/302] Add force option for config upload --- data_safe_haven/commands/config.py | 69 +++++++++++++++++++----------- 1 file changed, 43 insertions(+), 26 deletions(-) diff --git a/data_safe_haven/commands/config.py b/data_safe_haven/commands/config.py index 9bf49205a5..932e0e4932 100644 --- a/data_safe_haven/commands/config.py +++ b/data_safe_haven/commands/config.py @@ -155,17 +155,7 @@ def show( ) raise typer.Exit(1) from exc except DataSafeHavenTypeError as exc: - logger.warning( - f"Remote configuration for SRE '{name}' is not valid. Dumping remote file." - ) - azure_sdk = AzureSdk(subscription_name=context.subscription_name) - config_yaml = azure_sdk.download_blob( - sre_config_name(name), - context.resource_group_name, - context.storage_account_name, - context.storage_container_name, - ) - console.print(config_yaml) + dump_remote_config(context, name, logger) raise typer.Exit(1) from exc config_yaml = sre_config.to_yaml() @@ -204,7 +194,13 @@ def template( @config_command_group.command() def upload( - file: Annotated[Path, typer.Argument(help="Path to configuration file")], + file: Annotated[Path, typer.Argument(help="Path to configuration file.")], + force: Annotated[ # noqa: FBT002 + bool, + typer.Option( + help="Skip validation and difference calculation of remote configuration." + ), + ] = False, ) -> None: """Upload an SRE configuration to the Data Safe Haven context""" context = ContextManager.from_file().assert_context() @@ -220,24 +216,45 @@ def upload( config = SREConfig.from_yaml(config_yaml) # Present diff to user - if SREConfig.remote_exists(context, filename=config.filename): - if diff := config.remote_yaml_diff(context, filename=config.filename): - for line in "".join(diff).splitlines(): - logger.info(line) - if not console.confirm( - ( - "Configuration has changed, " - "do you want to overwrite the remote configuration?" - ), - default_to_yes=False, - ): + if (not force) and SREConfig.remote_exists(context, filename=config.filename): + try: + if diff := config.remote_yaml_diff(context, filename=config.filename): + for line in "".join(diff).splitlines(): + logger.info(line) + if not console.confirm( + ( + "Configuration has changed, " + "do you want to overwrite the remote configuration?" + ), + default_to_yes=False, + ): + raise typer.Exit() + else: + console.print("No changes, won't upload configuration.") raise typer.Exit() - else: - console.print("No changes, won't upload configuration.") - raise typer.Exit() + except DataSafeHavenError as exc: + dump_remote_config(context, config.name, logger) + console.print( + "To overwrite the remote config, use `dsh config upload --force`" + ) + raise typer.Exit(1) from exc try: config.upload(context, filename=config.filename) except DataSafeHavenError as exc: logger.critical("No infrastructure found for the selected context.") raise typer.Exit(1) from exc + + +def dump_remote_config(context, name, logger): + logger.warning( + f"Remote configuration for SRE '{name}' is not valid. Dumping remote file." + ) + azure_sdk = AzureSdk(subscription_name=context.subscription_name) + config_yaml = azure_sdk.download_blob( + sre_config_name(name), + context.resource_group_name, + context.storage_account_name, + context.storage_container_name, + ) + console.print(config_yaml) From d161f86bf31f63d8c130703374905d6ab16c237c Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 20 Sep 2024 12:42:04 +0100 Subject: [PATCH 147/302] Add type hints --- data_safe_haven/commands/config.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/data_safe_haven/commands/config.py b/data_safe_haven/commands/config.py index 932e0e4932..dcef1e7976 100644 --- a/data_safe_haven/commands/config.py +++ b/data_safe_haven/commands/config.py @@ -1,5 +1,6 @@ """Command group and entrypoints for managing DSH configuration""" +from logging import Logger from pathlib import Path from typing import Annotated, Optional @@ -24,6 +25,7 @@ from data_safe_haven.external.api.azure_sdk import AzureSdk from data_safe_haven.infrastructure import SREProjectManager from data_safe_haven.logging import get_logger +from data_safe_haven.serialisers import ContextBase config_command_group = typer.Typer() @@ -246,7 +248,7 @@ def upload( raise typer.Exit(1) from exc -def dump_remote_config(context, name, logger): +def dump_remote_config(context: ContextBase, name: str, logger: Logger) -> None: logger.warning( f"Remote configuration for SRE '{name}' is not valid. Dumping remote file." ) From 0cac24c657a5716a3f732b810e2e2f1072bee112 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 20 Sep 2024 14:38:50 +0100 Subject: [PATCH 148/302] Correct exception type --- data_safe_haven/commands/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_safe_haven/commands/config.py b/data_safe_haven/commands/config.py index dcef1e7976..830cda32ee 100644 --- a/data_safe_haven/commands/config.py +++ b/data_safe_haven/commands/config.py @@ -234,7 +234,7 @@ def upload( else: console.print("No changes, won't upload configuration.") raise typer.Exit() - except DataSafeHavenError as exc: + except DataSafeHavenTypeError as exc: dump_remote_config(context, config.name, logger) console.print( "To overwrite the remote config, use `dsh config upload --force`" From 5d7f9fafb60875c733b5e0581be8fc8926186663 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 20 Sep 2024 14:40:04 +0100 Subject: [PATCH 149/302] Add test for invalid remote config on upload --- tests/commands/test_config_sre.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/commands/test_config_sre.py b/tests/commands/test_config_sre.py index a8664ecf2e..8771129c9e 100644 --- a/tests/commands/test_config_sre.py +++ b/tests/commands/test_config_sre.py @@ -281,5 +281,24 @@ def test_upload_no_file(self, mocker, runner): def test_upload_file_does_not_exist(self, mocker, runner): mocker.patch.object(Path, "is_file", return_value=False) result = runner.invoke(config_command_group, ["upload", "fake_config.yaml"]) + assert result.exit_code == 1 assert "Configuration file 'fake_config.yaml' not found." in result.stdout + + def test_upload_invalid_config(self, mocker, runner, context, sre_config_file, sre_config_yaml): + sre_name = "SandBox" + sre_filename = sre_config_name(sre_name) + + mock_exists = mocker.patch.object(SREConfig, "remote_exists", return_value=True) + mocker.patch.object( + SREConfig, "remote_yaml_diff", side_effect=DataSafeHavenTypeError(" ") + ) + mocker.patch.object( + AzureSdk, "download_blob", return_value=sre_config_yaml + ) + + result = runner.invoke(config_command_group, ["upload", str(sre_config_file)]) + + mock_exists.assert_called_once_with(context, filename=sre_filename) assert result.exit_code == 1 + assert sre_config_yaml in result.stdout + assert "To overwrite the remote config, use `dsh config upload --force`" in result.stdout From 1bb954649b942e8968ca0ae726eb4d47dda17887 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Fri, 20 Sep 2024 14:45:19 +0100 Subject: [PATCH 150/302] Add test for force upload --- tests/commands/test_config_sre.py | 41 ++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/tests/commands/test_config_sre.py b/tests/commands/test_config_sre.py index 8771129c9e..134705ae20 100644 --- a/tests/commands/test_config_sre.py +++ b/tests/commands/test_config_sre.py @@ -284,7 +284,9 @@ def test_upload_file_does_not_exist(self, mocker, runner): assert result.exit_code == 1 assert "Configuration file 'fake_config.yaml' not found." in result.stdout - def test_upload_invalid_config(self, mocker, runner, context, sre_config_file, sre_config_yaml): + def test_upload_invalid_config( + self, mocker, runner, context, sre_config_file, sre_config_yaml + ): sre_name = "SandBox" sre_filename = sre_config_name(sre_name) @@ -292,13 +294,40 @@ def test_upload_invalid_config(self, mocker, runner, context, sre_config_file, s mocker.patch.object( SREConfig, "remote_yaml_diff", side_effect=DataSafeHavenTypeError(" ") ) - mocker.patch.object( - AzureSdk, "download_blob", return_value=sre_config_yaml - ) + mocker.patch.object(AzureSdk, "download_blob", return_value=sre_config_yaml) result = runner.invoke(config_command_group, ["upload", str(sre_config_file)]) - mock_exists.assert_called_once_with(context, filename=sre_filename) assert result.exit_code == 1 + + mock_exists.assert_called_once_with(context, filename=sre_filename) assert sre_config_yaml in result.stdout - assert "To overwrite the remote config, use `dsh config upload --force`" in result.stdout + assert ( + "To overwrite the remote config, use `dsh config upload --force`" + in result.stdout + ) + + def test_upload_invalid_config_force( + self, mocker, runner, context, sre_config_file, sre_config_yaml + ): + sre_name = "SandBox" + sre_filename = sre_config_name(sre_name) + + mocker.patch.object( + SREConfig, "remote_yaml_diff", side_effect=DataSafeHavenTypeError(" ") + ) + mock_upload = mocker.patch.object(AzureSdk, "upload_blob", return_value=None) + + result = runner.invoke( + config_command_group, ["upload", "--force", str(sre_config_file)] + ) + + assert result.exit_code == 0 + + mock_upload.assert_called_once_with( + sre_config_yaml, + sre_filename, + context.resource_group_name, + context.storage_account_name, + context.storage_container_name, + ) From 29580b34665d1efc918b060f7d8182aa664ed824 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 03:14:43 +0000 Subject: [PATCH 151/302] :arrow_up: Bump peter-evans/create-pull-request from 7.0.2 to 7.0.5 Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7.0.2 to 7.0.5. - [Release notes](https://github.com/peter-evans/create-pull-request/releases) - [Commits](https://github.com/peter-evans/create-pull-request/compare/v7.0.2...v7.0.5) --- updated-dependencies: - dependency-name: peter-evans/create-pull-request dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/update_docker_versions.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update_docker_versions.yaml b/.github/workflows/update_docker_versions.yaml index 6e290c3447..7dcdb9d155 100644 --- a/.github/workflows/update_docker_versions.yaml +++ b/.github/workflows/update_docker_versions.yaml @@ -40,7 +40,7 @@ jobs: - name: Create pull request if: ${{ ! env.ACT }} id: pull-request - uses: peter-evans/create-pull-request@v7.0.2 + uses: peter-evans/create-pull-request@v7.0.5 with: author: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com> base: develop From 6859b77df52d012b9897ab8d640186c2392203df Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 03:57:53 +0000 Subject: [PATCH 152/302] :arrow_up: Bump the production-dependencies group with 11 updates Bumps the production-dependencies group with 11 updates: | Package | From | To | | --- | --- | --- | | [azure-identity](https://github.com/Azure/azure-sdk-for-python) | `1.17.1` | `1.18.0` | | [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.22.0` | `12.23.0` | | [azure-storage-file-datalake](https://github.com/Azure/azure-sdk-for-python) | `12.16.0` | `12.17.0` | | [azure-storage-file-share](https://github.com/Azure/azure-sdk-for-python) | `12.17.0` | `12.18.0` | | [pulumi-azure-native](https://github.com/pulumi/pulumi-azure-native) | `2.60.1` | `2.62.0` | | [pulumi](https://github.com/pulumi/pulumi) | `3.132.0` | `3.133.0` | | [pydantic](https://github.com/pydantic/pydantic) | `2.9.1` | `2.9.2` | | [emoji](https://github.com/carpedm20/emoji) | `2.12.1` | `2.13.0` | | [ansible-dev-tools](https://github.com/ansible/ansible-dev-tools) | `24.8.0` | `24.9.0` | | [ruff](https://github.com/astral-sh/ruff) | `0.6.5` | `0.6.7` | | [types-pyyaml](https://github.com/python/typeshed) | `6.0.12.20240808` | `6.0.12.20240917` | Updates `azure-identity` from 1.17.1 to 1.18.0 - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-identity_1.17.1...azure-identity_1.18.0) Updates `azure-storage-blob` from 12.22.0 to 12.23.0 - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-storage-blob_12.22.0...azure-storage-blob_12.23.0) Updates `azure-storage-file-datalake` from 12.16.0 to 12.17.0 - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-storage-file-datalake_12.16.0...azure-storage-file-datalake_12.17.0) Updates `azure-storage-file-share` from 12.17.0 to 12.18.0 - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-storage-file-share_12.17.0...azure-storage-file-share_12.18.0) Updates `pulumi-azure-native` from 2.60.1 to 2.62.0 - [Release notes](https://github.com/pulumi/pulumi-azure-native/releases) - [Changelog](https://github.com/pulumi/pulumi-azure-native/blob/master/CHANGELOG_OLD.md) - [Commits](https://github.com/pulumi/pulumi-azure-native/compare/v2.60.1...v2.62.0) Updates `pulumi` from 3.132.0 to 3.133.0 - [Release notes](https://github.com/pulumi/pulumi/releases) - [Changelog](https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md) - [Commits](https://github.com/pulumi/pulumi/compare/v3.132.0...v3.133.0) Updates `pydantic` from 2.9.1 to 2.9.2 - [Release notes](https://github.com/pydantic/pydantic/releases) - [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md) - [Commits](https://github.com/pydantic/pydantic/compare/v2.9.1...v2.9.2) Updates `emoji` from 2.12.1 to 2.13.0 - [Release notes](https://github.com/carpedm20/emoji/releases) - [Changelog](https://github.com/carpedm20/emoji/blob/master/CHANGES.md) - [Commits](https://github.com/carpedm20/emoji/compare/v2.12.1...v2.13.0) Updates `ansible-dev-tools` from 24.8.0 to 24.9.0 - [Release notes](https://github.com/ansible/ansible-dev-tools/releases) - [Commits](https://github.com/ansible/ansible-dev-tools/compare/v24.8.0...v24.9.0) Updates `ruff` from 0.6.5 to 0.6.7 - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.6.5...0.6.7) Updates `types-pyyaml` from 6.0.12.20240808 to 6.0.12.20240917 - [Commits](https://github.com/python/typeshed/commits) --- updated-dependencies: - dependency-name: azure-identity dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: azure-storage-blob dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: azure-storage-file-datalake dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: azure-storage-file-share dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: pulumi-azure-native dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: pulumi dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: pydantic dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: emoji dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: ansible-dev-tools dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: ruff dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: types-pyyaml dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies ... Signed-off-by: dependabot[bot] --- pyproject.toml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 0e492c2132..8cf44d2c29 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ license = { text = "BSD-3-Clause" } dependencies = [ "appdirs==1.4.4", "azure-core==1.31.0", - "azure-identity==1.17.1", + "azure-identity==1.18.0", "azure-keyvault-certificates==4.8.0", "azure-keyvault-keys==4.9.0", "azure-keyvault-secrets==4.8.0", @@ -38,17 +38,17 @@ dependencies = [ "azure-mgmt-rdbms==10.1.0", "azure-mgmt-resource==23.1.1", "azure-mgmt-storage==21.2.1", - "azure-storage-blob==12.22.0", - "azure-storage-file-datalake==12.16.0", - "azure-storage-file-share==12.17.0", + "azure-storage-blob==12.23.0", + "azure-storage-file-datalake==12.17.0", + "azure-storage-file-share==12.18.0", "chevron==0.14.0", "cryptography==43.0.1", "fqdn==1.5.1", "psycopg==3.2.2", - "pulumi-azure-native==2.60.1", + "pulumi-azure-native==2.62.0", "pulumi-random==4.16.5", - "pulumi==3.132.0", - "pydantic==2.9.1", + "pulumi==3.133.0", + "pydantic==2.9.2", "pyjwt[crypto]==2.9.0", "pytz==2024.2", "pyyaml==6.0.2", @@ -65,24 +65,24 @@ Source = "https://github.com/alan-turing-institute/data-safe-haven" [project.optional-dependencies] docs = [ - "emoji==2.12.1", + "emoji==2.13.0", "myst-parser==4.0.0", "pydata-sphinx-theme==0.15.4", "sphinx-togglebutton==0.3.2", "sphinx==8.0.2", ] lint = [ - "ansible-dev-tools==24.8.0", + "ansible-dev-tools==24.9.0", "ansible==10.4.0", "black==24.8.0", "mypy==1.11.2", "pandas-stubs==2.2.2.240909", - "pydantic==2.9.1", - "ruff==0.6.5", + "pydantic==2.9.2", + "ruff==0.6.7", "types-appdirs==1.4.3.5", "types-chevron==0.14.2.20240310", "types-pytz==2024.2.0.20240913", - "types-pyyaml==6.0.12.20240808", + "types-pyyaml==6.0.12.20240917", "types-requests==2.32.0.20240914", ] test = [ From 517d76ddcf0a62d2e54d5b75b674885df78f087d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 23 Sep 2024 04:04:08 +0000 Subject: [PATCH 153/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-docs.txt | 4 ++-- .hatch/requirements-lint.txt | 34 ++++++++++++++++---------------- .hatch/requirements-test.txt | 38 ++++++++++++++++++++---------------- .hatch/requirements.txt | 34 +++++++++++++++++--------------- 4 files changed, 58 insertions(+), 52 deletions(-) diff --git a/.hatch/requirements-docs.txt b/.hatch/requirements-docs.txt index d91423da7b..cbf3704cc8 100644 --- a/.hatch/requirements-docs.txt +++ b/.hatch/requirements-docs.txt @@ -1,7 +1,7 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# - emoji==2.12.1 +# - emoji==2.13.0 # - myst-parser==4.0.0 # - pydata-sphinx-theme==0.15.4 # - sphinx-togglebutton==0.3.2 @@ -28,7 +28,7 @@ docutils==0.21.2 # pydata-sphinx-theme # sphinx # sphinx-togglebutton -emoji==2.12.1 +emoji==2.13.0 # via hatch.envs.docs idna==3.10 # via requests diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index 250189144b..dd3f6f0306 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -1,17 +1,17 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# - ansible-dev-tools==24.8.0 +# - ansible-dev-tools==24.9.0 # - ansible==10.4.0 # - black==24.8.0 # - mypy==1.11.2 # - pandas-stubs==2.2.2.240909 -# - pydantic==2.9.1 -# - ruff==0.6.5 +# - pydantic==2.9.2 +# - ruff==0.6.7 # - types-appdirs==1.4.3.5 # - types-chevron==0.14.2.20240310 # - types-pytz==2024.2.0.20240913 -# - types-pyyaml==6.0.12.20240808 +# - types-pyyaml==6.0.12.20240917 # - types-requests==2.32.0.20240914 # @@ -24,7 +24,7 @@ ansible-builder==3.1.0 # ansible-dev-environment # ansible-dev-tools # ansible-navigator -ansible-compat==24.9.0 +ansible-compat==24.9.1 # via # ansible-lint # molecule @@ -40,9 +40,9 @@ ansible-creator==24.9.0 # via ansible-dev-tools ansible-dev-environment==24.9.0 # via ansible-dev-tools -ansible-dev-tools==24.8.0 +ansible-dev-tools==24.9.0 # via hatch.envs.lint -ansible-lint==24.9.0 +ansible-lint==24.9.2 # via # ansible-dev-tools # ansible-navigator @@ -95,7 +95,7 @@ enrich==1.2.7 # via molecule execnet==2.1.1 # via pytest-xdist -filelock==3.16.0 +filelock==3.16.1 # via # ansible-lint # tox @@ -166,7 +166,7 @@ pbr==6.1.0 # via bindep pexpect==4.9.0 # via ansible-runner -platformdirs==4.3.3 +platformdirs==4.3.6 # via # black # tox @@ -180,13 +180,13 @@ ptyprocess==0.7.0 # via pexpect pycparser==2.22 # via cffi -pydantic==2.9.1 +pydantic==2.9.2 # via hatch.envs.lint -pydantic-core==2.23.3 +pydantic-core==2.23.4 # via pydantic pygments==2.18.0 # via rich -pyproject-api==1.7.1 +pyproject-api==1.8.0 # via tox pytest==8.3.3 # via @@ -201,7 +201,7 @@ pytest-xdist==3.6.1 # via tox-ansible python-daemon==3.0.1 # via ansible-runner -python-gnupg==0.5.2 +python-gnupg==0.5.3 # via ansible-sign pyyaml==6.0.2 # via @@ -235,14 +235,14 @@ ruamel-yaml==0.18.6 # via ansible-lint ruamel-yaml-clib==0.2.8 # via ruamel-yaml -ruff==0.6.5 +ruff==0.6.7 # via hatch.envs.lint subprocess-tee==0.4.2 # via # ansible-compat # ansible-dev-environment # ansible-lint -tox==4.18.1 +tox==4.20.0 # via tox-ansible tox-ansible==24.9.0 # via ansible-dev-tools @@ -254,7 +254,7 @@ types-pytz==2024.2.0.20240913 # via # hatch.envs.lint # pandas-stubs -types-pyyaml==6.0.12.20240808 +types-pyyaml==6.0.12.20240917 # via hatch.envs.lint types-requests==2.32.0.20240914 # via hatch.envs.lint @@ -267,7 +267,7 @@ tzdata==2024.1 # via ansible-navigator urllib3==2.2.3 # via types-requests -virtualenv==20.26.4 +virtualenv==20.26.5 # via tox wcmatch==9.0 # via diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index f412019e78..5d157d9435 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -1,11 +1,11 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# [constraints] .hatch/requirements.txt (SHA256: 1d37c61a2bf2b9a3930fcd5ea63e6e2f9c363b251da61419363d0e3fa970dd73) +# [constraints] .hatch/requirements.txt (SHA256: 8b759a5b8831c68c9bc2082b978e8406ff4ee3c40eca455b217a671533e23d46) # # - appdirs==1.4.4 # - azure-core==1.31.0 -# - azure-identity==1.17.1 +# - azure-identity==1.18.0 # - azure-keyvault-certificates==4.8.0 # - azure-keyvault-keys==4.9.0 # - azure-keyvault-secrets==4.8.0 @@ -17,17 +17,17 @@ # - azure-mgmt-rdbms==10.1.0 # - azure-mgmt-resource==23.1.1 # - azure-mgmt-storage==21.2.1 -# - azure-storage-blob==12.22.0 -# - azure-storage-file-datalake==12.16.0 -# - azure-storage-file-share==12.17.0 +# - azure-storage-blob==12.23.0 +# - azure-storage-file-datalake==12.17.0 +# - azure-storage-file-share==12.18.0 # - chevron==0.14.0 # - cryptography==43.0.1 # - fqdn==1.5.1 # - psycopg==3.2.2 -# - pulumi-azure-native==2.60.1 +# - pulumi-azure-native==2.62.0 # - pulumi-random==4.16.5 -# - pulumi==3.132.0 -# - pydantic==2.9.1 +# - pulumi==3.133.0 +# - pydantic==2.9.2 # - pyjwt[crypto]==2.9.0 # - pytz==2024.2 # - pyyaml==6.0.2 @@ -86,7 +86,7 @@ azure-core==1.31.0 # azure-storage-file-datalake # azure-storage-file-share # msrest -azure-identity==1.17.1 +azure-identity==1.18.0 # via # -c .hatch/requirements.txt # hatch.envs.test @@ -145,16 +145,16 @@ azure-mgmt-storage==21.2.1 # via # -c .hatch/requirements.txt # hatch.envs.test -azure-storage-blob==12.22.0 +azure-storage-blob==12.23.0 # via # -c .hatch/requirements.txt # hatch.envs.test # azure-storage-file-datalake -azure-storage-file-datalake==12.16.0 +azure-storage-file-datalake==12.17.0 # via # -c .hatch/requirements.txt # hatch.envs.test -azure-storage-file-share==12.17.0 +azure-storage-file-share==12.18.0 # via # -c .hatch/requirements.txt # hatch.envs.test @@ -194,6 +194,10 @@ cryptography==43.0.1 # msal # pyjwt # pyopenssl +debugpy==1.8.5 + # via + # -c .hatch/requirements.txt + # pulumi dill==0.3.8 # via # -c .hatch/requirements.txt @@ -277,7 +281,7 @@ portalocker==2.10.1 # via # -c .hatch/requirements.txt # msal-extensions -protobuf==4.25.4 +protobuf==4.25.5 # via # -c .hatch/requirements.txt # pulumi @@ -285,13 +289,13 @@ psycopg==3.2.2 # via # -c .hatch/requirements.txt # hatch.envs.test -pulumi==3.132.0 +pulumi==3.133.0 # via # -c .hatch/requirements.txt # hatch.envs.test # pulumi-azure-native # pulumi-random -pulumi-azure-native==2.60.1 +pulumi-azure-native==2.62.0 # via # -c .hatch/requirements.txt # hatch.envs.test @@ -303,11 +307,11 @@ pycparser==2.22 # via # -c .hatch/requirements.txt # cffi -pydantic==2.9.1 +pydantic==2.9.2 # via # -c .hatch/requirements.txt # hatch.envs.test -pydantic-core==2.23.3 +pydantic-core==2.23.4 # via # -c .hatch/requirements.txt # pydantic diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt index 817fa2f7ca..7f883242b6 100644 --- a/.hatch/requirements.txt +++ b/.hatch/requirements.txt @@ -3,7 +3,7 @@ # # - appdirs==1.4.4 # - azure-core==1.31.0 -# - azure-identity==1.17.1 +# - azure-identity==1.18.0 # - azure-keyvault-certificates==4.8.0 # - azure-keyvault-keys==4.9.0 # - azure-keyvault-secrets==4.8.0 @@ -15,17 +15,17 @@ # - azure-mgmt-rdbms==10.1.0 # - azure-mgmt-resource==23.1.1 # - azure-mgmt-storage==21.2.1 -# - azure-storage-blob==12.22.0 -# - azure-storage-file-datalake==12.16.0 -# - azure-storage-file-share==12.17.0 +# - azure-storage-blob==12.23.0 +# - azure-storage-file-datalake==12.17.0 +# - azure-storage-file-share==12.18.0 # - chevron==0.14.0 # - cryptography==43.0.1 # - fqdn==1.5.1 # - psycopg==3.2.2 -# - pulumi-azure-native==2.60.1 +# - pulumi-azure-native==2.62.0 # - pulumi-random==4.16.5 -# - pulumi==3.132.0 -# - pydantic==2.9.1 +# - pulumi==3.133.0 +# - pydantic==2.9.2 # - pyjwt[crypto]==2.9.0 # - pytz==2024.2 # - pyyaml==6.0.2 @@ -67,7 +67,7 @@ azure-core==1.31.0 # azure-storage-file-datalake # azure-storage-file-share # msrest -azure-identity==1.17.1 +azure-identity==1.18.0 # via hatch.envs.default azure-keyvault-certificates==4.8.0 # via hatch.envs.default @@ -101,13 +101,13 @@ azure-mgmt-resource==23.1.1 # via hatch.envs.default azure-mgmt-storage==21.2.1 # via hatch.envs.default -azure-storage-blob==12.22.0 +azure-storage-blob==12.23.0 # via # hatch.envs.default # azure-storage-file-datalake -azure-storage-file-datalake==12.16.0 +azure-storage-file-datalake==12.17.0 # via hatch.envs.default -azure-storage-file-share==12.17.0 +azure-storage-file-share==12.18.0 # via hatch.envs.default certifi==2024.8.30 # via @@ -133,6 +133,8 @@ cryptography==43.0.1 # msal # pyjwt # pyopenssl +debugpy==1.8.5 + # via pulumi dill==0.3.8 # via pulumi dnspython==2.6.1 @@ -182,24 +184,24 @@ parver==0.5 # pulumi-random portalocker==2.10.1 # via msal-extensions -protobuf==4.25.4 +protobuf==4.25.5 # via pulumi psycopg==3.2.2 # via hatch.envs.default -pulumi==3.132.0 +pulumi==3.133.0 # via # hatch.envs.default # pulumi-azure-native # pulumi-random -pulumi-azure-native==2.60.1 +pulumi-azure-native==2.62.0 # via hatch.envs.default pulumi-random==4.16.5 # via hatch.envs.default pycparser==2.22 # via cffi -pydantic==2.9.1 +pydantic==2.9.2 # via hatch.envs.default -pydantic-core==2.23.3 +pydantic-core==2.23.4 # via pydantic pygments==2.18.0 # via rich From cfb58c22a11a5c9327432807ed36315051083a90 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 23 Sep 2024 09:55:57 +0100 Subject: [PATCH 154/302] Add tags --- .../resources/workspace/ansible/desired_state.yaml | 13 ++++++++++++- .../resources/workspace/ansible/tasks/packages.yaml | 1 + .../tasks/{global_config.yaml => user_config.yaml} | 0 3 files changed, 13 insertions(+), 1 deletion(-) rename data_safe_haven/resources/workspace/ansible/tasks/{global_config.yaml => user_config.yaml} (100%) diff --git a/data_safe_haven/resources/workspace/ansible/desired_state.yaml b/data_safe_haven/resources/workspace/ansible/desired_state.yaml index 25d669acf0..9deaf9d93d 100644 --- a/data_safe_haven/resources/workspace/ansible/desired_state.yaml +++ b/data_safe_haven/resources/workspace/ansible/desired_state.yaml @@ -8,36 +8,47 @@ tasks: - name: Install packages ansible.builtin.import_tasks: tasks/packages.yaml + tags: packages - name: Disable Ubuntu Pro services ansible.builtin.import_tasks: tasks/ubuntu_pro.yaml + tags: ubuntu_pro - name: Configure auditd ansible.builtin.import_tasks: tasks/auditd.yaml + tags: auditd - name: Configure sshd ansible.builtin.import_tasks: tasks/sshd.yaml + tags: sshd - name: Configure ClamAV ansible.builtin.import_tasks: tasks/clamav.yaml + tags: clamav - name: Globally configure default user settings - ansible.builtin.import_tasks: tasks/global_config.yaml + ansible.builtin.import_tasks: tasks/user_config.yaml + tags: user_conf - name: Configure LDAP ansible.builtin.import_tasks: tasks/ldap.yaml + tags: ldap - name: Configure Xrdp ansible.builtin.import_tasks: tasks/xrdp.yaml + tags: xrdp - name: Configure Xfce ansible.builtin.import_tasks: tasks/xfce.yaml + tags: xfce - name: Configure package proxies ansible.builtin.import_tasks: tasks/package_proxy.yaml + tags: package_proxies - name: Provision smoke tests ansible.builtin.import_tasks: tasks/smoke_tests.yaml + tags: smoke_tests handlers: - name: Restart auditd diff --git a/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml b/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml index 0a6c2192d5..6ffec6514f 100644 --- a/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml +++ b/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml @@ -28,6 +28,7 @@ loop: "{{ deb_packages[ansible_facts.distribution_release] }}" - name: Install snap packages + tags: snap community.general.snap: name: "{{ item.name }}" classic: "{{ item.classic }}" diff --git a/data_safe_haven/resources/workspace/ansible/tasks/global_config.yaml b/data_safe_haven/resources/workspace/ansible/tasks/user_config.yaml similarity index 100% rename from data_safe_haven/resources/workspace/ansible/tasks/global_config.yaml rename to data_safe_haven/resources/workspace/ansible/tasks/user_config.yaml From 67213da62c432eae1fd41f3e22afb0c07431f144 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 23 Sep 2024 10:38:26 +0100 Subject: [PATCH 155/302] Use blocks --- .../workspace/ansible/tasks/auditd.yaml | 5 - .../workspace/ansible/tasks/clamav.yaml | 6 +- .../workspace/ansible/tasks/packages.yaml | 32 +++---- .../workspace/ansible/tasks/xfce.yaml | 91 ++++++++++--------- 4 files changed, 70 insertions(+), 64 deletions(-) diff --git a/data_safe_haven/resources/workspace/ansible/tasks/auditd.yaml b/data_safe_haven/resources/workspace/ansible/tasks/auditd.yaml index 9fc12bf728..212c63aa1e 100644 --- a/data_safe_haven/resources/workspace/ansible/tasks/auditd.yaml +++ b/data_safe_haven/resources/workspace/ansible/tasks/auditd.yaml @@ -1,21 +1,18 @@ --- - name: Enable and start auditd service - tags: auditd ansible.builtin.systemd: name: auditd enabled: true state: started - name: Get minimum uid # noqa: inline-env-var - tags: auditd ansible.builtin.command: cmd: awk '/^\s*UID_MIN/{print $2}' /etc/login.defs register: uid_min changed_when: false - name: Template auditd rules - tags: auditd ansible.builtin.template: src: etc/audit/rules.d/audit.rules.j2 dest: /etc/audit/rules.d/audit.rules @@ -23,14 +20,12 @@ notify: Restart auditd - name: Copy auditd privileged executable rules script - tags: auditd ansible.builtin.copy: src: usr/local/bin/privileged-rules dest: /usr/local/bin/privileged-rules mode: '0500' - name: Generate auditd privileged executable rules - tags: auditd ansible.builtin.shell: cmd: /usr/local/bin/privileged-rules > /etc/audit/rules.d/50-privileged.rules creates: /etc/audit/rules.d/50-privileged.rules diff --git a/data_safe_haven/resources/workspace/ansible/tasks/clamav.yaml b/data_safe_haven/resources/workspace/ansible/tasks/clamav.yaml index 6f99576e1f..4bb887f571 100644 --- a/data_safe_haven/resources/workspace/ansible/tasks/clamav.yaml +++ b/data_safe_haven/resources/workspace/ansible/tasks/clamav.yaml @@ -34,11 +34,13 @@ systemctl stop clamav-freshclam && freshclam && systemctl start clamav-freshclam creates: '/var/lib/clamav/main.{c[vl]d,inc}' -- name: Copy ClamAV services directory +- name: Copy ClamAV services ansible.builtin.copy: - src: etc/systemd/system/ + src: "{{ item }}" dest: /etc/systemd/system/ mode: '0644' + with_fileglob: + - "etc/systemd/system/clamav-*" notify: Systemd daemon reload - name: Enable and start freshclam diff --git a/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml b/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml index 6ffec6514f..e71d371b22 100644 --- a/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml +++ b/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml @@ -1,26 +1,26 @@ --- -- name: Update package cache +- name: Apt packages tags: apt - ansible.builtin.apt: - update_cache: true - cache_valid_time: 600 + block: + - name: Update package cache + ansible.builtin.apt: + update_cache: true + cache_valid_time: 600 -- name: List apt packages to install - tags: apt - ansible.builtin.debug: - msg: "{{ apt_packages.common | union(apt_packages[ansible_facts.distribution_release]) }}" + - name: List apt packages to install + ansible.builtin.debug: + msg: "{{ apt_packages.common | union(apt_packages[ansible_facts.distribution_release]) }}" -- name: Install apt packages - tags: apt - ansible.builtin.apt: - name: "{{ apt_packages.common | union(apt_packages[ansible_facts.distribution_release]) }}" - state: present - async: 3600 - poll: 30 + - name: Install apt packages + ansible.builtin.apt: + name: "{{ apt_packages.common | union(apt_packages[ansible_facts.distribution_release]) }}" + state: present + async: 3600 + poll: 30 - name: Install deb packages - tags: apt + tags: deb ansible.builtin.script: executable: /bin/bash cmd: "/var/local/ansible/install_deb.sh {{ item.source }} {{ item.filename }} {{ item.sha256 }}" diff --git a/data_safe_haven/resources/workspace/ansible/tasks/xfce.yaml b/data_safe_haven/resources/workspace/ansible/tasks/xfce.yaml index e7703fdc95..504a78e372 100644 --- a/data_safe_haven/resources/workspace/ansible/tasks/xfce.yaml +++ b/data_safe_haven/resources/workspace/ansible/tasks/xfce.yaml @@ -1,31 +1,37 @@ --- -- name: Set default terminal - ansible.builtin.lineinfile: - path: /etc/xdg/xfce4/helpers.rc - regexp: '^TerminalEmulator=' - line: 'TerminalEmulator=xfce4-terminal' +- name: Xfce terminal + tags: xfce_terminal + block: + - name: Set default terminal + ansible.builtin.lineinfile: + path: /etc/xdg/xfce4/helpers.rc + regexp: '^TerminalEmulator=' + line: 'TerminalEmulator=xfce4-terminal' -- name: Copy default terminal colourscheme - ansible.builtin.copy: - src: etc/xdg/xfce4/terminal/ - dest: /etc/xdg/xfce4/terminal/ - mode: '0444' + - name: Copy default terminal colourscheme + ansible.builtin.copy: + src: etc/xdg/xfce4/terminal/ + dest: /etc/xdg/xfce4/terminal/ + mode: '0444' -# This doesn't work -# Possibly a bug in xfce4 < 4.18 -# https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/55 -- name: Disable xfce4 screen saver (screen lock) - ansible.builtin.lineinfile: - path: /etc/xdg/autostart/xfce4-screensaver.desktop - line: 'Hidden=true' - state: present +- name: Xfce screen saver + tags: xfce_screensaver + block: + # This doesn't work + # Possibly a bug in xfce4 < 4.18 + # https://gitlab.xfce.org/apps/xfce4-screensaver/-/issues/55 + - name: Disable xfce4 screen saver (screen lock) + ansible.builtin.lineinfile: + path: /etc/xdg/autostart/xfce4-screensaver.desktop + line: 'Hidden=true' + state: present -- name: Use a blank screensaver - ansible.builtin.lineinfile: - path: /etc/X11/Xresources/x11-common - line: 'xscreensaver.mode: blank' - state: present + - name: Use a blank screensaver + ansible.builtin.lineinfile: + path: /etc/X11/Xresources/x11-common + line: 'xscreensaver.mode: blank' + state: present - name: Set default keyboard ansible.builtin.replace: @@ -36,26 +42,29 @@ - {key: "XKBMODEL", value: "pc105"} - {key: "XKBLAYOUT", value: "gb"} -- name: Copy desktop icons directory - ansible.builtin.copy: - src: usr/local/share/icons/ - dest: /usr/local/share/icons/ - mode: '0444' +- name: Desktop configuration + tags: xfce_desktop + block: + - name: Copy desktop icons directory + ansible.builtin.copy: + src: usr/local/share/icons/ + dest: /usr/local/share/icons/ + mode: '0444' -- name: Copy desktop files directory - ansible.builtin.copy: - src: etc/skel/Desktop/ - dest: /etc/skel/Desktop/ - mode: '0755' + - name: Copy desktop files directory + ansible.builtin.copy: + src: etc/skel/Desktop/ + dest: /etc/skel/Desktop/ + mode: '0755' -- name: Template Gitea and Hedgedoc desktop files - ansible.builtin.template: - src: "etc/skel/Desktop/{{ item }}.desktop.j2" - dest: "/etc/skel/Desktop/{{ item }}.desktop" - mode: '0755' - loop: - - gitea - - hedgedoc + - name: Template Gitea and Hedgedoc desktop files + ansible.builtin.template: + src: "etc/skel/Desktop/{{ item }}.desktop.j2" + dest: "/etc/skel/Desktop/{{ item }}.desktop" + mode: '0755' + loop: + - gitea + - hedgedoc - name: Add polkit rule to allow colord ansible.builtin.copy: From 884215059ccc4755c879239b6a23137ba8a418d7 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 23 Sep 2024 14:18:25 +0100 Subject: [PATCH 156/302] Add dependency on desired state for workspaces --- data_safe_haven/infrastructure/programs/declarative_sre.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/data_safe_haven/infrastructure/programs/declarative_sre.py b/data_safe_haven/infrastructure/programs/declarative_sre.py index 483d21355b..c1525e4ed8 100644 --- a/data_safe_haven/infrastructure/programs/declarative_sre.py +++ b/data_safe_haven/infrastructure/programs/declarative_sre.py @@ -1,6 +1,7 @@ """Pulumi declarative program""" import pulumi +from pulumi import ResourceOptions from pulumi_azure_native import resources from data_safe_haven.config import Context, SREConfig @@ -384,6 +385,7 @@ def __call__(self) -> None: virtual_network=networking.virtual_network, vm_details=list(enumerate(self.config.sre.workspace_skus)), ), + opts=ResourceOptions(depends_on=[desired_state]), tags=self.tags, ) From 7f24334a944ebdde851ae800132ea99340e743eb Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Mon, 23 Sep 2024 13:28:54 +0000 Subject: [PATCH 157/302] More detailed error message --- data_safe_haven/external/api/azure_sdk.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_safe_haven/external/api/azure_sdk.py b/data_safe_haven/external/api/azure_sdk.py index 1dce416320..1e816dfc13 100644 --- a/data_safe_haven/external/api/azure_sdk.py +++ b/data_safe_haven/external/api/azure_sdk.py @@ -436,7 +436,7 @@ def ensure_keyvault( ) return key_vaults[0] except AzureError as exc: - msg = f"Failed to create key vault {key_vault_name}." + msg = f"Failed to create key vault {key_vault_name}. Check if a key vault with the same name already exists in a deleted state." raise DataSafeHavenAzureError(msg) from exc def ensure_keyvault_key( From 19dff16ba40856f2ee17b6519f5115a12576ea8a Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Mon, 23 Sep 2024 13:29:32 +0000 Subject: [PATCH 158/302] Incorrect or missing admin group name now raises an error --- data_safe_haven/external/api/graph_api.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/data_safe_haven/external/api/graph_api.py b/data_safe_haven/external/api/graph_api.py index ce87648fa9..e08311d941 100644 --- a/data_safe_haven/external/api/graph_api.py +++ b/data_safe_haven/external/api/graph_api.py @@ -515,7 +515,7 @@ def get_service_principal_by_name( except (DataSafeHavenMicrosoftGraphError, StopIteration): return None - def get_id_from_groupname(self, group_name: str) -> str | None: + def get_id_from_groupname(self, group_name: str) -> str: try: return str( next( @@ -525,7 +525,8 @@ def get_id_from_groupname(self, group_name: str) -> str | None: )["id"] ) except (DataSafeHavenMicrosoftGraphError, StopIteration): - return None + msg = "Admin group not found. Check that the group exists and that you have the correct permissions." + raise DataSafeHavenMicrosoftGraphError(msg) from None def get_id_from_username(self, username: str) -> str | None: try: From 560917fec8ceb5ac1cdb531ea34461afead1026d Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Mon, 23 Sep 2024 13:29:59 +0000 Subject: [PATCH 159/302] catch admin group ID error when deploying SHM --- data_safe_haven/config/shm_config.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/data_safe_haven/config/shm_config.py b/data_safe_haven/config/shm_config.py index 2f5ef85f01..18af10d78b 100644 --- a/data_safe_haven/config/shm_config.py +++ b/data_safe_haven/config/shm_config.py @@ -4,6 +4,7 @@ from typing import ClassVar, Self +from data_safe_haven.exceptions import DataSafeHavenMicrosoftGraphError from data_safe_haven.external import AzureSdk from data_safe_haven.serialisers import AzureSerialisableModel, ContextBase @@ -27,10 +28,14 @@ def from_args( ) -> SHMConfig: """Construct an SHMConfig from arguments.""" azure_sdk = AzureSdk(subscription_name=context.subscription_name) - admin_group_id = ( - azure_sdk.entra_directory.get_id_from_groupname(context.admin_group_name) - or "admin-group-id-not-found" - ) + try: + admin_group_id = azure_sdk.entra_directory.get_id_from_groupname( + context.admin_group_name + ) + except DataSafeHavenMicrosoftGraphError as exc: + msg = f"Failed to get ID for group '{context.admin_group_name}'" + raise DataSafeHavenMicrosoftGraphError(msg) from exc + return SHMConfig.model_construct( azure=ConfigSectionAzure.model_construct( location=location, From 3705f432f7fc947ff82598e538bacfc453630fb1 Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Mon, 23 Sep 2024 14:13:21 +0000 Subject: [PATCH 160/302] Catch incorrect admin group error --- data_safe_haven/commands/shm.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/data_safe_haven/commands/shm.py b/data_safe_haven/commands/shm.py index b6694c7daa..60ff4ce112 100644 --- a/data_safe_haven/commands/shm.py +++ b/data_safe_haven/commands/shm.py @@ -10,6 +10,7 @@ DataSafeHavenAzureAPIAuthenticationError, DataSafeHavenConfigError, DataSafeHavenError, + DataSafeHavenMicrosoftGraphError, ) from data_safe_haven.infrastructure import ImperativeSHM from data_safe_haven.logging import get_logger @@ -103,6 +104,10 @@ def deploy( fqdn=fqdn, location=location, ) + except DataSafeHavenMicrosoftGraphError as exc: + msg = "Cannot deploy SHM without appropriate admin group membership." + logger.critical(msg) + raise typer.Exit(1) from exc except DataSafeHavenError as exc: msg = "Failed to load SHM configuration." logger.critical(msg) From 74de9364255e4755e578235a43a5632badf946c1 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 24 Sep 2024 09:32:25 +0100 Subject: [PATCH 161/302] Wait for pulumi_vars.yaml in cloud init --- .../resources/workspace/workspace.cloud_init.mustache.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml b/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml index 5252001e95..5694f1c88c 100644 --- a/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml +++ b/data_safe_haven/resources/workspace/workspace.cloud_init.mustache.yaml @@ -93,5 +93,7 @@ runcmd: # Run desired state service # ------------------------- + - echo ">=== Waiting for Pulumi vars file... ===<" + - while (! test -f /var/local/ansible/vars/pulumi_vars.yaml) do sleep 5; done - echo ">=== Running initial desired state configuration... ===<" - systemctl start desired-state From 4afd621dd0c91dcc8d7019edbee383477139f22c Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 24 Sep 2024 15:06:44 +0100 Subject: [PATCH 162/302] docs: add @mattwestby as a contributor --- .all-contributorsrc | 9 +++++++++ README.md | 5 ++++- docs/source/contributing/index.md | 3 +++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index 54a6a36e65..20c0996d58 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -609,6 +609,15 @@ "bug", "doc" ] + }, + { + "login": "mattwestby", + "name": "mattwestby", + "avatar_url": "https://avatars.githubusercontent.com/u/91054185?v=4", + "profile": "https://github.com/mattwestby", + "contributions": [ + "bug" + ] } ], "contributorsSortAlphabetically": true, diff --git a/README.md b/README.md index da05f510aa..622f76facd 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ It was developed as part of the Alan Turing Institute's [Data Safe Havens in the ![Licence](https://img.shields.io/github/license/alan-turing-institute/data-safe-haven) [![Citation](https://img.shields.io/badge/citation-cite%20this%20project-informational)](https://github.com/alan-turing-institute/data-safe-haven/blob/develop/CITATION.cff) -[![All Contributors](https://img.shields.io/badge/all_contributors-49-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-50-orange.svg?style=flat-square)](#contributors-) ## 🧑‍🧑‍🧒 Community & support @@ -101,10 +101,13 @@ See our [Code of Conduct](CODE_OF_CONDUCT.md) and our [Contributor Guide](CONTRI harisood
harisood

📖 🐛 🤔 🔍 📋 📆 📣 💬 📢 🛡️ 📓 kevinxufs
kevinxufs

📖 🤔 🛡️ + mattwestby
mattwestby

🐛 miguelmorin
miguelmorin

💻 📖 🤔 ⚠️ oforrest
oforrest

📖 🤔 📆 📣 🖋 rwinstanley1
rwinstanley1

📖 🤔 📆 🛡️ vollmersj
vollmersj

📖 🐛 🤔 🖋 + + warwick26
warwick26

💻 🤔 diff --git a/docs/source/contributing/index.md b/docs/source/contributing/index.md index 3d51d07e46..37f5e26f9d 100644 --- a/docs/source/contributing/index.md +++ b/docs/source/contributing/index.md @@ -64,10 +64,13 @@ harisood
harisood

📖 🐛 🤔 🔍 📋 📆 📣 💬 📢 🛡️ 📓 kevinxufs
kevinxufs

📖 🤔 🛡️ + mattwestby
mattwestby

🐛 miguelmorin
miguelmorin

💻 📖 🤔 ⚠️ oforrest
oforrest

📖 🤔 📆 📣 🖋 rwinstanley1
rwinstanley1

📖 🤔 📆 🛡️ vollmersj
vollmersj

📖 🐛 🤔 🖋 + + warwick26
warwick26

💻 🤔 From 409f003263617aa39caaf101244d19b57aa02410 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Wed, 25 Sep 2024 10:41:39 +0100 Subject: [PATCH 163/302] WIP: use appropriate provider for SHM DNS record --- .../infrastructure/programs/declarative_sre.py | 1 + .../infrastructure/programs/sre/networking.py | 16 ++++++++++++++-- typings/pulumi_azure_native/__init__.pyi | 2 ++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/data_safe_haven/infrastructure/programs/declarative_sre.py b/data_safe_haven/infrastructure/programs/declarative_sre.py index 483d21355b..f7a68a3579 100644 --- a/data_safe_haven/infrastructure/programs/declarative_sre.py +++ b/data_safe_haven/infrastructure/programs/declarative_sre.py @@ -140,6 +140,7 @@ def __call__(self) -> None: resource_group_name=resource_group.name, shm_fqdn=shm_fqdn, shm_resource_group_name=self.context.resource_group_name, + shm_subscription_id=..., shm_zone_name=shm_fqdn, sre_name=self.config.name, user_public_ip_ranges=self.config.sre.research_user_ip_addresses, diff --git a/data_safe_haven/infrastructure/programs/sre/networking.py b/data_safe_haven/infrastructure/programs/sre/networking.py index c11d89bc17..2b32066986 100644 --- a/data_safe_haven/infrastructure/programs/sre/networking.py +++ b/data_safe_haven/infrastructure/programs/sre/networking.py @@ -3,7 +3,7 @@ from collections.abc import Mapping from pulumi import ComponentResource, Input, Output, ResourceOptions -from pulumi_azure_native import network +from pulumi_azure_native import network, provider from data_safe_haven.functions import alphanumeric, replace_separators from data_safe_haven.infrastructure.common import ( @@ -27,6 +27,7 @@ def __init__( resource_group_name: Input[str], shm_fqdn: Input[str], shm_resource_group_name: Input[str], + shm_subscription_id: Input[str], shm_zone_name: Input[str], sre_name: Input[str], user_public_ip_ranges: Input[list[str]], @@ -44,6 +45,7 @@ def __init__( self.resource_group_name = resource_group_name self.shm_fqdn = shm_fqdn self.shm_resource_group_name = shm_resource_group_name + self.shm_subscription_id = shm_subscription_id self.shm_zone_name = shm_zone_name self.sre_name = sre_name self.user_public_ip_ranges = user_public_ip_ranges @@ -1856,6 +1858,12 @@ def __init__( opts=child_opts, tags=child_tags, ) + shm_provider = provider.Provider( + provider.ProviderArgs( + location=props.location, + subscription_id=props.shm_subscription_id, + ) + ) shm_ns_record = network.RecordSet( f"{self._name}_ns_record", ns_records=sre_dns_zone.name_servers.apply( @@ -1867,7 +1875,11 @@ def __init__( ttl=3600, zone_name=shm_dns_zone.name, opts=ResourceOptions.merge( - child_opts, ResourceOptions(parent=sre_dns_zone) + child_opts, + ResourceOptions( + parent=sre_dns_zone, + provider=shm_provider, + ), ), ) network.RecordSet( diff --git a/typings/pulumi_azure_native/__init__.pyi b/typings/pulumi_azure_native/__init__.pyi index 56be0a1e3a..598b0a9e6c 100644 --- a/typings/pulumi_azure_native/__init__.pyi +++ b/typings/pulumi_azure_native/__init__.pyi @@ -12,6 +12,7 @@ import pulumi_azure_native.managedidentity as managedidentity import pulumi_azure_native.network as network import pulumi_azure_native.operationalinsights as operationalinsights import pulumi_azure_native.operationsmanagement as operationsmanagement +import pulumi_azure_native.provider as provider import pulumi_azure_native.resources as resources import pulumi_azure_native.sql as sql import pulumi_azure_native.storage as storage @@ -30,6 +31,7 @@ __all__ = [ "network", "operationalinsights", "operationsmanagement", + "provider", "resources", "sql", "storage", From 8a5c03bf532616bbfa37f5a34f5f7e62cfdf7fc8 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Wed, 25 Sep 2024 10:55:08 +0100 Subject: [PATCH 164/302] Populate shm subscription id Pulumi opt --- data_safe_haven/commands/sre.py | 5 +++++ data_safe_haven/infrastructure/programs/declarative_sre.py | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/data_safe_haven/commands/sre.py b/data_safe_haven/commands/sre.py index de0d96f6b2..9194f9d54c 100644 --- a/data_safe_haven/commands/sre.py +++ b/data_safe_haven/commands/sre.py @@ -96,6 +96,11 @@ def deploy( shm_config.shm.fqdn, replace=True, ) + stack.add_option( + "shm-subscription-id", + shm_config.azure.subscription_id, + replace=True, + ) # Deploy Azure infrastructure with Pulumi try: diff --git a/data_safe_haven/infrastructure/programs/declarative_sre.py b/data_safe_haven/infrastructure/programs/declarative_sre.py index ebf08d2c37..a219c6422a 100644 --- a/data_safe_haven/infrastructure/programs/declarative_sre.py +++ b/data_safe_haven/infrastructure/programs/declarative_sre.py @@ -53,6 +53,7 @@ def __call__(self) -> None: shm_admin_group_id = self.pulumi_opts.require("shm-admin-group-id") shm_entra_tenant_id = self.pulumi_opts.require("shm-entra-tenant-id") shm_fqdn = self.pulumi_opts.require("shm-fqdn") + shm_subscription_id = self.pulumi_opts.require("shm-subscription-id") # Construct DockerHubCredentials dockerhub_credentials = DockerHubCredentials( @@ -141,7 +142,7 @@ def __call__(self) -> None: resource_group_name=resource_group.name, shm_fqdn=shm_fqdn, shm_resource_group_name=self.context.resource_group_name, - shm_subscription_id=..., + shm_subscription_id=shm_subscription_id, shm_zone_name=shm_fqdn, sre_name=self.config.name, user_public_ip_ranges=self.config.sre.research_user_ip_addresses, From 3fa705866bf02acd8e55218abf4951bb8d87671c Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Wed, 25 Sep 2024 10:26:55 +0000 Subject: [PATCH 165/302] add function for checking entra group exists, remove try except --- data_safe_haven/external/api/graph_api.py | 32 ++++++++++++++--------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/data_safe_haven/external/api/graph_api.py b/data_safe_haven/external/api/graph_api.py index e08311d941..2406007004 100644 --- a/data_safe_haven/external/api/graph_api.py +++ b/data_safe_haven/external/api/graph_api.py @@ -140,7 +140,11 @@ def add_user_to_group( """ try: user_id = self.get_id_from_username(username) - group_id = self.get_id_from_groupname(group_name) + if self.entra_group_exists(group_name): + group_id = self.get_id_from_groupname(group_name) + else: + msg = f"Group '{group_name}' not found." + raise DataSafeHavenMicrosoftGraphError(msg) json_response = self.http_get( f"{self.base_endpoint}/groups/{group_id}/members", ).json() @@ -321,7 +325,7 @@ def create_group(self, group_name: str) -> None: DataSafeHavenMicrosoftGraphError if the group could not be created """ try: - if self.get_id_from_groupname(group_name): + if self.entra_group_exists(group_name): self.logger.info( f"Found existing Entra group '[green]{group_name}[/]'.", ) @@ -515,18 +519,17 @@ def get_service_principal_by_name( except (DataSafeHavenMicrosoftGraphError, StopIteration): return None + def entra_group_exists(self, group_name: str) -> bool: + return bool(any(x["displayName"] == group_name for x in self.read_groups())) + def get_id_from_groupname(self, group_name: str) -> str: - try: - return str( - next( - group - for group in self.read_groups() - if group["displayName"] == group_name - )["id"] - ) - except (DataSafeHavenMicrosoftGraphError, StopIteration): - msg = "Admin group not found. Check that the group exists and that you have the correct permissions." - raise DataSafeHavenMicrosoftGraphError(msg) from None + return str( + next( + group + for group in self.read_groups() + if group["displayName"] == group_name + )["id"] + ) def get_id_from_username(self, username: str) -> str | None: try: @@ -1016,6 +1019,9 @@ def remove_user_from_group( """ try: user_id = self.get_id_from_username(username) + if not self.entra_group_exists(group_name): + msg = f"Group '{group_name}' not found." + raise DataSafeHavenMicrosoftGraphError(msg) group_id = self.get_id_from_groupname(group_name) # Check whether user is in group json_response = self.http_get( From a7809bf701c1e8a0a171664b17387bce0ff7d4f8 Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Wed, 25 Sep 2024 10:27:58 +0000 Subject: [PATCH 166/302] Use new entra_group_exists check and raise error if not found --- data_safe_haven/config/shm_config.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/data_safe_haven/config/shm_config.py b/data_safe_haven/config/shm_config.py index 18af10d78b..7a30b74b1f 100644 --- a/data_safe_haven/config/shm_config.py +++ b/data_safe_haven/config/shm_config.py @@ -28,14 +28,13 @@ def from_args( ) -> SHMConfig: """Construct an SHMConfig from arguments.""" azure_sdk = AzureSdk(subscription_name=context.subscription_name) - try: + if azure_sdk.entra_directory.entra_group_exists(context.admin_group_name): admin_group_id = azure_sdk.entra_directory.get_id_from_groupname( context.admin_group_name ) - except DataSafeHavenMicrosoftGraphError as exc: - msg = f"Failed to get ID for group '{context.admin_group_name}'" - raise DataSafeHavenMicrosoftGraphError(msg) from exc - + else: + msg = f"Admin group '{context.admin_group_name}' not found. Check the group name." + raise DataSafeHavenMicrosoftGraphError(msg) return SHMConfig.model_construct( azure=ConfigSectionAzure.model_construct( location=location, From afc3faefd01b12dc296d1fad67d67f7b9fb421f7 Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Wed, 25 Sep 2024 11:44:28 +0000 Subject: [PATCH 167/302] switch to validate_entra_group function --- data_safe_haven/external/api/graph_api.py | 46 +++++++++++++---------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/data_safe_haven/external/api/graph_api.py b/data_safe_haven/external/api/graph_api.py index 2406007004..70a3f298aa 100644 --- a/data_safe_haven/external/api/graph_api.py +++ b/data_safe_haven/external/api/graph_api.py @@ -140,11 +140,7 @@ def add_user_to_group( """ try: user_id = self.get_id_from_username(username) - if self.entra_group_exists(group_name): - group_id = self.get_id_from_groupname(group_name) - else: - msg = f"Group '{group_name}' not found." - raise DataSafeHavenMicrosoftGraphError(msg) + group_id = self.validate_entra_group(group_name) json_response = self.http_get( f"{self.base_endpoint}/groups/{group_id}/members", ).json() @@ -325,7 +321,7 @@ def create_group(self, group_name: str) -> None: DataSafeHavenMicrosoftGraphError if the group could not be created """ try: - if self.entra_group_exists(group_name): + if self.get_id_from_groupname(group_name): self.logger.info( f"Found existing Entra group '[green]{group_name}[/]'.", ) @@ -519,17 +515,30 @@ def get_service_principal_by_name( except (DataSafeHavenMicrosoftGraphError, StopIteration): return None - def entra_group_exists(self, group_name: str) -> bool: - return bool(any(x["displayName"] == group_name for x in self.read_groups())) + def validate_entra_group(self, group_name: str) -> str: + """ + Ensure that an Entra group exists and return its ID - def get_id_from_groupname(self, group_name: str) -> str: - return str( - next( - group - for group in self.read_groups() - if group["displayName"] == group_name - )["id"] - ) + Raises: + DataSafeHavenMicrosoftGraphError if the group does not exist + """ + if group_id := self.get_id_from_groupname(group_name): + return group_id + else: + msg = f"Group '{group_name}' not found." + raise DataSafeHavenMicrosoftGraphError(msg) + + def get_id_from_groupname(self, group_name: str) -> str | None: + try: + return str( + next( + group + for group in self.read_groups() + if group["displayName"] == group_name + )["id"] + ) + except (DataSafeHavenMicrosoftGraphError, StopIteration): + return None def get_id_from_username(self, username: str) -> str | None: try: @@ -1019,10 +1028,7 @@ def remove_user_from_group( """ try: user_id = self.get_id_from_username(username) - if not self.entra_group_exists(group_name): - msg = f"Group '{group_name}' not found." - raise DataSafeHavenMicrosoftGraphError(msg) - group_id = self.get_id_from_groupname(group_name) + group_id = self.validate_entra_group(group_name) # Check whether user is in group json_response = self.http_get( f"{self.base_endpoint}/groups/{group_id}/members", From 21233b446c95f16ba37f0ef26c0159317b6ee2a9 Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Wed, 25 Sep 2024 11:44:41 +0000 Subject: [PATCH 168/302] use validate_entra_group function --- data_safe_haven/config/shm_config.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/data_safe_haven/config/shm_config.py b/data_safe_haven/config/shm_config.py index 7a30b74b1f..0c48f41cdf 100644 --- a/data_safe_haven/config/shm_config.py +++ b/data_safe_haven/config/shm_config.py @@ -28,13 +28,13 @@ def from_args( ) -> SHMConfig: """Construct an SHMConfig from arguments.""" azure_sdk = AzureSdk(subscription_name=context.subscription_name) - if azure_sdk.entra_directory.entra_group_exists(context.admin_group_name): - admin_group_id = azure_sdk.entra_directory.get_id_from_groupname( + try: + admin_group_id = azure_sdk.entra_directory.validate_entra_group( context.admin_group_name ) - else: + except DataSafeHavenMicrosoftGraphError as exc: msg = f"Admin group '{context.admin_group_name}' not found. Check the group name." - raise DataSafeHavenMicrosoftGraphError(msg) + raise DataSafeHavenMicrosoftGraphError(msg) from exc return SHMConfig.model_construct( azure=ConfigSectionAzure.model_construct( location=location, From 2a8c8825271b37bdaba9b4e1cc142bb01e4597c7 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Wed, 25 Sep 2024 12:52:21 +0100 Subject: [PATCH 169/302] Add resource name to provider --- data_safe_haven/infrastructure/programs/sre/networking.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data_safe_haven/infrastructure/programs/sre/networking.py b/data_safe_haven/infrastructure/programs/sre/networking.py index 2b32066986..9f51421ef7 100644 --- a/data_safe_haven/infrastructure/programs/sre/networking.py +++ b/data_safe_haven/infrastructure/programs/sre/networking.py @@ -1859,10 +1859,11 @@ def __init__( tags=child_tags, ) shm_provider = provider.Provider( + "shm_provider", provider.ProviderArgs( location=props.location, subscription_id=props.shm_subscription_id, - ) + ), ) shm_ns_record = network.RecordSet( f"{self._name}_ns_record", From 16047574c977d3e0d48f337c1bb094569aa35164 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Wed, 25 Sep 2024 13:10:19 +0100 Subject: [PATCH 170/302] Add log messages for SRE deployment --- data_safe_haven/commands/sre.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data_safe_haven/commands/sre.py b/data_safe_haven/commands/sre.py index de0d96f6b2..f37b7257ac 100644 --- a/data_safe_haven/commands/sre.py +++ b/data_safe_haven/commands/sre.py @@ -77,6 +77,9 @@ def deploy( sre_config.azure.subscription_id, replace=False, ) + logger.info( + f"SRE will be deployed to subscription '[green]{sre_config.azure.subscription_id}[/]'" + ) stack.add_option( "azure-native:tenantId", sre_config.azure.tenant_id, replace=False ) @@ -96,6 +99,7 @@ def deploy( shm_config.shm.fqdn, replace=True, ) + logger.info(f"SRE will be registered in shm '[green]{shm_config.shm.fqdn}[/]'") # Deploy Azure infrastructure with Pulumi try: From 4af69181b078c6409432304d5310230817e1cbab Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Wed, 25 Sep 2024 14:28:30 +0100 Subject: [PATCH 171/302] Replace script with tasks --- .../ansible/host_vars/localhost.yaml | 2 -- .../workspace/ansible/install_deb.sh | 33 ------------------- .../workspace/ansible/tasks/install_deb.yaml | 13 ++++++++ .../workspace/ansible/tasks/packages.yaml | 6 ++-- 4 files changed, 15 insertions(+), 39 deletions(-) delete mode 100644 data_safe_haven/resources/workspace/ansible/install_deb.sh create mode 100644 data_safe_haven/resources/workspace/ansible/tasks/install_deb.yaml diff --git a/data_safe_haven/resources/workspace/ansible/host_vars/localhost.yaml b/data_safe_haven/resources/workspace/ansible/host_vars/localhost.yaml index 1baab38e7f..f6900fcd7c 100644 --- a/data_safe_haven/resources/workspace/ansible/host_vars/localhost.yaml +++ b/data_safe_haven/resources/workspace/ansible/host_vars/localhost.yaml @@ -137,12 +137,10 @@ deb_packages: - source: https://download1.rstudio.org/electron/jammy/amd64 filename: rstudio-2024.04.2-764-amd64.deb sha256: 1d0bd2f54215f514a8a78a4d035c7804218bb8fafa417aa5083d341e174e6452 - creates: /usr/bin/rstudio noble: - source: https://download1.rstudio.org/electron/jammy/amd64 filename: rstudio-2024.04.2-764-amd64.deb sha256: 1d0bd2f54215f514a8a78a4d035c7804218bb8fafa417aa5083d341e174e6452 - creates: /usr/bin/rstudio snap_packages: - name: codium diff --git a/data_safe_haven/resources/workspace/ansible/install_deb.sh b/data_safe_haven/resources/workspace/ansible/install_deb.sh deleted file mode 100644 index c3d4fb9919..0000000000 --- a/data_safe_haven/resources/workspace/ansible/install_deb.sh +++ /dev/null @@ -1,33 +0,0 @@ -#! /bin/bash - -# Require three arguments: remote name, debfile name and sha256 hash -if [ $# -ne 3 ]; then - echo "FATAL: Incorrect number of arguments" - exit 1 -fi -PACKAGE_REMOTE=$1 -PACKAGE_DEBFILE=$2 -PACKAGE_HASH=$3 - -# Download and verify the .deb file -echo "Downloading and verifying deb file ${PACKAGE_DEBFILE}" -mkdir -p /tmp/build/ -wget -nv "${PACKAGE_REMOTE}/${PACKAGE_DEBFILE}" -P /tmp/build/ -ls -alh "/tmp/build/${PACKAGE_DEBFILE}" -echo "$PACKAGE_HASH /tmp/build/${PACKAGE_DEBFILE}" > "/tmp/${PACKAGE_DEBFILE}_sha256.hash" -if [ "$(sha256sum -c "/tmp/${PACKAGE_DEBFILE}_sha256.hash" | grep FAILED)" != "" ]; then - echo "FATAL: Checksum did not match expected for $PACKAGE_DEBFILE" - exit 1 -fi - -# Wait until the package repository is not in use -while ! apt-get check >/dev/null 2>&1; do - echo "Waiting for another installation process to finish..." - sleep 1 -done - -# Install and cleanup -echo "Installing deb file: ${PACKAGE_DEBFILE}" -apt install -y "/tmp/build/${PACKAGE_DEBFILE}" -echo "Cleaning up" -rm "/tmp/build/${PACKAGE_DEBFILE}" diff --git a/data_safe_haven/resources/workspace/ansible/tasks/install_deb.yaml b/data_safe_haven/resources/workspace/ansible/tasks/install_deb.yaml new file mode 100644 index 0000000000..eea2283ba4 --- /dev/null +++ b/data_safe_haven/resources/workspace/ansible/tasks/install_deb.yaml @@ -0,0 +1,13 @@ +--- + +- name: Fetch deb + ansible.builtin.get_url: + url: "{{ item.source }}/{{ item.filename }}" + dest: /tmp/build/ + checksum: "sha256:{{ item.sha256 }}" + register: debfile + +- name: Install deb + ansible.builtin.apt: + deb: "{{ debfile.dest }}" + state: present diff --git a/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml b/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml index e71d371b22..9b01bfa6c8 100644 --- a/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml +++ b/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml @@ -21,10 +21,8 @@ - name: Install deb packages tags: deb - ansible.builtin.script: - executable: /bin/bash - cmd: "/var/local/ansible/install_deb.sh {{ item.source }} {{ item.filename }} {{ item.sha256 }}" - creates: "{{ item.creates }}" + ansible.builtin.include_tasks: + file: tasks/install_deb.yaml loop: "{{ deb_packages[ansible_facts.distribution_release] }}" - name: Install snap packages From 0ee3a5adb0c9e11399ec5171a6248a96463e5884 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Wed, 25 Sep 2024 14:53:21 +0100 Subject: [PATCH 172/302] Add file mode --- .../resources/workspace/ansible/tasks/install_deb.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/data_safe_haven/resources/workspace/ansible/tasks/install_deb.yaml b/data_safe_haven/resources/workspace/ansible/tasks/install_deb.yaml index eea2283ba4..3616954c30 100644 --- a/data_safe_haven/resources/workspace/ansible/tasks/install_deb.yaml +++ b/data_safe_haven/resources/workspace/ansible/tasks/install_deb.yaml @@ -5,6 +5,7 @@ url: "{{ item.source }}/{{ item.filename }}" dest: /tmp/build/ checksum: "sha256:{{ item.sha256 }}" + mode: '0400' register: debfile - name: Install deb From f75422ef6c26f63399f3ae3d281185afc836f472 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Wed, 25 Sep 2024 16:38:47 +0100 Subject: [PATCH 173/302] Correct filename --- .../resources/workspace/ansible/tasks/install_deb.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_safe_haven/resources/workspace/ansible/tasks/install_deb.yaml b/data_safe_haven/resources/workspace/ansible/tasks/install_deb.yaml index 3616954c30..f79da81b88 100644 --- a/data_safe_haven/resources/workspace/ansible/tasks/install_deb.yaml +++ b/data_safe_haven/resources/workspace/ansible/tasks/install_deb.yaml @@ -3,7 +3,7 @@ - name: Fetch deb ansible.builtin.get_url: url: "{{ item.source }}/{{ item.filename }}" - dest: /tmp/build/ + dest: "/tmp/{{ item.filename }}" checksum: "sha256:{{ item.sha256 }}" mode: '0400' register: debfile From 59540e04121b5b3997259045fabc6b22e27da9d8 Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Wed, 25 Sep 2024 18:58:20 +0000 Subject: [PATCH 174/302] remove unneeded extension --- .devcontainer/devcontainer.json | 1 - 1 file changed, 1 deletion(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index f8e49feed9..6055634d9f 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -10,7 +10,6 @@ }, "extensions": [ "github.vscode-pull-request-github", - "ms-vscode.azure-account", "ms-python.python", "christian-kohler.path-intellisense" ], From 0fd8434f5846457244d12934d39ea7baefe2b397 Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Wed, 25 Sep 2024 18:58:39 +0000 Subject: [PATCH 175/302] Update and AZ CLI version and remove sphinx dependency installation --- .devcontainer/Dockerfile | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index b2ac959fe6..cf76351384 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -22,7 +22,7 @@ RUN mkdir -p /etc/apt/keyrings \ && chmod go+r /etc/apt/keyrings/microsoft.gpg # Set package versions -ARG AZURE_CLI_VERSION="2.59.0" +ARG AZURE_CLI_VERSION="2.64.0" ARG DISTRIBUTION # Add the Azure CLI repository @@ -52,10 +52,6 @@ RUN groupadd --gid $USER_GID $USERNAME \ # Set the default user USER $USERNAME -# Install Sphinx dependencies -COPY ./docs/requirements.txt /build/requirements.txt -RUN pip3 install -r /build/requirements.txt - # Set PATH for pulumi - pulumi installed as feature to work round installing as root ENV PATH=$PATH:/home/${USERNAME}/.pulumi/bin From 74f62175bc954656a374263da2d8cd012fc78db9 Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Wed, 25 Sep 2024 19:16:17 +0000 Subject: [PATCH 176/302] remove sphinx from apt installs --- .devcontainer/Dockerfile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index cf76351384..52eb8aa1f3 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -6,8 +6,7 @@ RUN apt-get update \ && export DEBIAN_FRONTEND=noninteractive \ && apt-get -y install --no-install-recommends \ git \ - libssl-dev \ - python3-sphinx + libssl-dev # Install Azure-CLI RUN apt-get update \ From d327acdbf35c6c83b3529c2ec084402cf6c40efd Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Thu, 26 Sep 2024 11:29:28 +0100 Subject: [PATCH 177/302] Add SHM location to SHM provider --- data_safe_haven/commands/sre.py | 5 +++++ data_safe_haven/infrastructure/programs/declarative_sre.py | 2 ++ data_safe_haven/infrastructure/programs/sre/networking.py | 4 +++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/data_safe_haven/commands/sre.py b/data_safe_haven/commands/sre.py index 58fb5438f2..e36b3876b2 100644 --- a/data_safe_haven/commands/sre.py +++ b/data_safe_haven/commands/sre.py @@ -99,6 +99,11 @@ def deploy( shm_config.shm.fqdn, replace=True, ) + stack.add_option( + "shm-location", + shm_config.azure.location, + replace=True, + ) stack.add_option( "shm-subscription-id", shm_config.azure.subscription_id, diff --git a/data_safe_haven/infrastructure/programs/declarative_sre.py b/data_safe_haven/infrastructure/programs/declarative_sre.py index a219c6422a..f597099b3b 100644 --- a/data_safe_haven/infrastructure/programs/declarative_sre.py +++ b/data_safe_haven/infrastructure/programs/declarative_sre.py @@ -53,6 +53,7 @@ def __call__(self) -> None: shm_admin_group_id = self.pulumi_opts.require("shm-admin-group-id") shm_entra_tenant_id = self.pulumi_opts.require("shm-entra-tenant-id") shm_fqdn = self.pulumi_opts.require("shm-fqdn") + shm_location = self.pulumi_opts.require("shm-location") shm_subscription_id = self.pulumi_opts.require("shm-subscription-id") # Construct DockerHubCredentials @@ -141,6 +142,7 @@ def __call__(self) -> None: location=self.config.azure.location, resource_group_name=resource_group.name, shm_fqdn=shm_fqdn, + shm_location=shm_location, shm_resource_group_name=self.context.resource_group_name, shm_subscription_id=shm_subscription_id, shm_zone_name=shm_fqdn, diff --git a/data_safe_haven/infrastructure/programs/sre/networking.py b/data_safe_haven/infrastructure/programs/sre/networking.py index 9f51421ef7..4bfec2ca2f 100644 --- a/data_safe_haven/infrastructure/programs/sre/networking.py +++ b/data_safe_haven/infrastructure/programs/sre/networking.py @@ -26,6 +26,7 @@ def __init__( location: Input[str], resource_group_name: Input[str], shm_fqdn: Input[str], + shm_location: Input[str], shm_resource_group_name: Input[str], shm_subscription_id: Input[str], shm_zone_name: Input[str], @@ -44,6 +45,7 @@ def __init__( self.location = location self.resource_group_name = resource_group_name self.shm_fqdn = shm_fqdn + self.shm_location = shm_location self.shm_resource_group_name = shm_resource_group_name self.shm_subscription_id = shm_subscription_id self.shm_zone_name = shm_zone_name @@ -1861,7 +1863,7 @@ def __init__( shm_provider = provider.Provider( "shm_provider", provider.ProviderArgs( - location=props.location, + location=props.shm_location, subscription_id=props.shm_subscription_id, ), ) From c59dc049a5eab41fc8f18fdbadc2cc310448ac66 Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Fri, 27 Sep 2024 16:06:01 +0000 Subject: [PATCH 178/302] Catch validation errors on config upload --- data_safe_haven/commands/config.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/data_safe_haven/commands/config.py b/data_safe_haven/commands/config.py index 830cda32ee..8c51da4ab3 100644 --- a/data_safe_haven/commands/config.py +++ b/data_safe_haven/commands/config.py @@ -215,7 +215,11 @@ def upload( else: logger.critical(f"Configuration file '{file}' not found.") raise typer.Exit(1) - config = SREConfig.from_yaml(config_yaml) + try: + config = SREConfig.from_yaml(config_yaml) + except DataSafeHavenTypeError as exc: + logger.error("Check for missing or incorrect fields in the configuration.") + raise typer.Exit(1) # Present diff to user if (not force) and SREConfig.remote_exists(context, filename=config.filename): From 1178622b3983223a5bab46e144e23a42c7ca4468 Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Fri, 27 Sep 2024 16:06:25 +0000 Subject: [PATCH 179/302] Provide more readable error message for config validation errors --- data_safe_haven/serialisers/yaml_serialisable_model.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_safe_haven/serialisers/yaml_serialisable_model.py b/data_safe_haven/serialisers/yaml_serialisable_model.py index 3423260fd5..1ab5a031f8 100644 --- a/data_safe_haven/serialisers/yaml_serialisable_model.py +++ b/data_safe_haven/serialisers/yaml_serialisable_model.py @@ -54,7 +54,7 @@ def from_yaml(cls: type[T], settings_yaml: str) -> T: ) for error in exc.errors(): logger.error( - f"[red]{'.'.join(map(str, error.get('loc', [])))}: {error.get('input', '')}[/] - {error.get('msg', '')}" + f"{error.get('msg', '')}: [red]{'.'.join(map(str, error.get('loc', [])))}.[/] Original input: [red]{error.get('input', '')}[/]" ) msg = f"{cls.config_type} configuration is invalid." raise DataSafeHavenTypeError(msg) from exc From bbaf29a4f6ff10b13a607aa1dbe24c8359cc4c5d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Sep 2024 03:33:50 +0000 Subject: [PATCH 180/302] Bump the production-dependencies group with 7 updates Bumps the production-dependencies group with 7 updates: | Package | From | To | | --- | --- | --- | | [azure-storage-blob](https://github.com/Azure/azure-sdk-for-python) | `12.23.0` | `12.23.1` | | [psycopg](https://github.com/psycopg/psycopg) | `3.2.2` | `3.2.3` | | [pulumi-azure-native](https://github.com/pulumi/pulumi-azure-native) | `2.62.0` | `2.63.0` | | [pulumi-random](https://github.com/pulumi/pulumi-random) | `4.16.5` | `4.16.6` | | [pulumi](https://github.com/pulumi/pulumi) | `3.133.0` | `3.134.1` | | [emoji](https://github.com/carpedm20/emoji) | `2.13.0` | `2.13.2` | | [ruff](https://github.com/astral-sh/ruff) | `0.6.7` | `0.6.8` | Updates `azure-storage-blob` from 12.23.0 to 12.23.1 - [Release notes](https://github.com/Azure/azure-sdk-for-python/releases) - [Changelog](https://github.com/Azure/azure-sdk-for-python/blob/main/doc/esrp_release.md) - [Commits](https://github.com/Azure/azure-sdk-for-python/compare/azure-storage-blob_12.23.0...azure-storage-blob_12.23.1) Updates `psycopg` from 3.2.2 to 3.2.3 - [Changelog](https://github.com/psycopg/psycopg/blob/master/docs/news.rst) - [Commits](https://github.com/psycopg/psycopg/compare/3.2.2...3.2.3) Updates `pulumi-azure-native` from 2.62.0 to 2.63.0 - [Release notes](https://github.com/pulumi/pulumi-azure-native/releases) - [Changelog](https://github.com/pulumi/pulumi-azure-native/blob/master/CHANGELOG_OLD.md) - [Commits](https://github.com/pulumi/pulumi-azure-native/compare/v2.62.0...v2.63.0) Updates `pulumi-random` from 4.16.5 to 4.16.6 - [Release notes](https://github.com/pulumi/pulumi-random/releases) - [Changelog](https://github.com/pulumi/pulumi-random/blob/master/CHANGELOG_OLD.md) - [Commits](https://github.com/pulumi/pulumi-random/compare/v4.16.5...v4.16.6) Updates `pulumi` from 3.133.0 to 3.134.1 - [Release notes](https://github.com/pulumi/pulumi/releases) - [Changelog](https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md) - [Commits](https://github.com/pulumi/pulumi/compare/v3.133.0...v3.134.1) Updates `emoji` from 2.13.0 to 2.13.2 - [Release notes](https://github.com/carpedm20/emoji/releases) - [Changelog](https://github.com/carpedm20/emoji/blob/master/CHANGES.md) - [Commits](https://github.com/carpedm20/emoji/compare/v2.13.0...v2.13.2) Updates `ruff` from 0.6.7 to 0.6.8 - [Release notes](https://github.com/astral-sh/ruff/releases) - [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md) - [Commits](https://github.com/astral-sh/ruff/compare/0.6.7...0.6.8) --- updated-dependencies: - dependency-name: azure-storage-blob dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: psycopg dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: pulumi-azure-native dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: pulumi-random dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: pulumi dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: emoji dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: ruff dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies ... Signed-off-by: dependabot[bot] --- pyproject.toml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 8cf44d2c29..530c52be82 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,16 +38,16 @@ dependencies = [ "azure-mgmt-rdbms==10.1.0", "azure-mgmt-resource==23.1.1", "azure-mgmt-storage==21.2.1", - "azure-storage-blob==12.23.0", + "azure-storage-blob==12.23.1", "azure-storage-file-datalake==12.17.0", "azure-storage-file-share==12.18.0", "chevron==0.14.0", "cryptography==43.0.1", "fqdn==1.5.1", - "psycopg==3.2.2", - "pulumi-azure-native==2.62.0", - "pulumi-random==4.16.5", - "pulumi==3.133.0", + "psycopg==3.2.3", + "pulumi-azure-native==2.63.0", + "pulumi-random==4.16.6", + "pulumi==3.134.1", "pydantic==2.9.2", "pyjwt[crypto]==2.9.0", "pytz==2024.2", @@ -65,7 +65,7 @@ Source = "https://github.com/alan-turing-institute/data-safe-haven" [project.optional-dependencies] docs = [ - "emoji==2.13.0", + "emoji==2.13.2", "myst-parser==4.0.0", "pydata-sphinx-theme==0.15.4", "sphinx-togglebutton==0.3.2", @@ -78,7 +78,7 @@ lint = [ "mypy==1.11.2", "pandas-stubs==2.2.2.240909", "pydantic==2.9.2", - "ruff==0.6.7", + "ruff==0.6.8", "types-appdirs==1.4.3.5", "types-chevron==0.14.2.20240310", "types-pytz==2024.2.0.20240913", From 64b7d0ef37927585c1c60bbf7b4fb3fa4c206f32 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" Date: Mon, 30 Sep 2024 03:40:10 +0000 Subject: [PATCH 181/302] [dependabot skip] :wrench: Update Python requirements files --- .hatch/requirements-docs.txt | 8 +++----- .hatch/requirements-lint.txt | 12 ++++++------ .hatch/requirements-test.txt | 26 +++++++++++++------------- .hatch/requirements.txt | 24 ++++++++++++------------ 4 files changed, 34 insertions(+), 36 deletions(-) diff --git a/.hatch/requirements-docs.txt b/.hatch/requirements-docs.txt index cbf3704cc8..bb76c36f54 100644 --- a/.hatch/requirements-docs.txt +++ b/.hatch/requirements-docs.txt @@ -1,7 +1,7 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# - emoji==2.13.0 +# - emoji==2.13.2 # - myst-parser==4.0.0 # - pydata-sphinx-theme==0.15.4 # - sphinx-togglebutton==0.3.2 @@ -28,7 +28,7 @@ docutils==0.21.2 # pydata-sphinx-theme # sphinx # sphinx-togglebutton -emoji==2.13.0 +emoji==2.13.2 # via hatch.envs.docs idna==3.10 # via requests @@ -90,9 +90,7 @@ sphinxcontrib-qthelp==2.0.0 sphinxcontrib-serializinghtml==2.0.0 # via sphinx typing-extensions==4.12.2 - # via - # emoji - # pydata-sphinx-theme + # via pydata-sphinx-theme urllib3==2.2.3 # via requests wheel==0.44.0 diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index dd3f6f0306..dca69b3675 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -7,7 +7,7 @@ # - mypy==1.11.2 # - pandas-stubs==2.2.2.240909 # - pydantic==2.9.2 -# - ruff==0.6.7 +# - ruff==0.6.8 # - types-appdirs==1.4.3.5 # - types-chevron==0.14.2.20240310 # - types-pytz==2024.2.0.20240913 @@ -62,7 +62,7 @@ black==24.8.0 # via # hatch.envs.lint # ansible-lint -bracex==2.5 +bracex==2.5.post1 # via wcmatch cachetools==5.5.0 # via tox @@ -235,7 +235,7 @@ ruamel-yaml==0.18.6 # via ansible-lint ruamel-yaml-clib==0.2.8 # via ruamel-yaml -ruff==0.6.7 +ruff==0.6.8 # via hatch.envs.lint subprocess-tee==0.4.2 # via @@ -263,13 +263,13 @@ typing-extensions==4.12.2 # mypy # pydantic # pydantic-core -tzdata==2024.1 +tzdata==2024.2 # via ansible-navigator urllib3==2.2.3 # via types-requests -virtualenv==20.26.5 +virtualenv==20.26.6 # via tox -wcmatch==9.0 +wcmatch==10.0 # via # ansible-lint # molecule diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index 5d157d9435..8922d805a1 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -1,7 +1,7 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# [constraints] .hatch/requirements.txt (SHA256: 8b759a5b8831c68c9bc2082b978e8406ff4ee3c40eca455b217a671533e23d46) +# [constraints] .hatch/requirements.txt (SHA256: 96b56280f43c84615a59c1be2b4c1a2d404e2d46448c219a5c63f7f6e532e976) # # - appdirs==1.4.4 # - azure-core==1.31.0 @@ -17,16 +17,16 @@ # - azure-mgmt-rdbms==10.1.0 # - azure-mgmt-resource==23.1.1 # - azure-mgmt-storage==21.2.1 -# - azure-storage-blob==12.23.0 +# - azure-storage-blob==12.23.1 # - azure-storage-file-datalake==12.17.0 # - azure-storage-file-share==12.18.0 # - chevron==0.14.0 # - cryptography==43.0.1 # - fqdn==1.5.1 -# - psycopg==3.2.2 -# - pulumi-azure-native==2.62.0 -# - pulumi-random==4.16.5 -# - pulumi==3.133.0 +# - psycopg==3.2.3 +# - pulumi-azure-native==2.63.0 +# - pulumi-random==4.16.6 +# - pulumi==3.134.1 # - pydantic==2.9.2 # - pyjwt[crypto]==2.9.0 # - pytz==2024.2 @@ -145,7 +145,7 @@ azure-mgmt-storage==21.2.1 # via # -c .hatch/requirements.txt # hatch.envs.test -azure-storage-blob==12.23.0 +azure-storage-blob==12.23.1 # via # -c .hatch/requirements.txt # hatch.envs.test @@ -194,11 +194,11 @@ cryptography==43.0.1 # msal # pyjwt # pyopenssl -debugpy==1.8.5 +debugpy==1.8.6 # via # -c .hatch/requirements.txt # pulumi -dill==0.3.8 +dill==0.3.9 # via # -c .hatch/requirements.txt # pulumi @@ -285,21 +285,21 @@ protobuf==4.25.5 # via # -c .hatch/requirements.txt # pulumi -psycopg==3.2.2 +psycopg==3.2.3 # via # -c .hatch/requirements.txt # hatch.envs.test -pulumi==3.133.0 +pulumi==3.134.1 # via # -c .hatch/requirements.txt # hatch.envs.test # pulumi-azure-native # pulumi-random -pulumi-azure-native==2.62.0 +pulumi-azure-native==2.63.0 # via # -c .hatch/requirements.txt # hatch.envs.test -pulumi-random==4.16.5 +pulumi-random==4.16.6 # via # -c .hatch/requirements.txt # hatch.envs.test diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt index 7f883242b6..484696e37e 100644 --- a/.hatch/requirements.txt +++ b/.hatch/requirements.txt @@ -15,16 +15,16 @@ # - azure-mgmt-rdbms==10.1.0 # - azure-mgmt-resource==23.1.1 # - azure-mgmt-storage==21.2.1 -# - azure-storage-blob==12.23.0 +# - azure-storage-blob==12.23.1 # - azure-storage-file-datalake==12.17.0 # - azure-storage-file-share==12.18.0 # - chevron==0.14.0 # - cryptography==43.0.1 # - fqdn==1.5.1 -# - psycopg==3.2.2 -# - pulumi-azure-native==2.62.0 -# - pulumi-random==4.16.5 -# - pulumi==3.133.0 +# - psycopg==3.2.3 +# - pulumi-azure-native==2.63.0 +# - pulumi-random==4.16.6 +# - pulumi==3.134.1 # - pydantic==2.9.2 # - pyjwt[crypto]==2.9.0 # - pytz==2024.2 @@ -101,7 +101,7 @@ azure-mgmt-resource==23.1.1 # via hatch.envs.default azure-mgmt-storage==21.2.1 # via hatch.envs.default -azure-storage-blob==12.23.0 +azure-storage-blob==12.23.1 # via # hatch.envs.default # azure-storage-file-datalake @@ -133,9 +133,9 @@ cryptography==43.0.1 # msal # pyjwt # pyopenssl -debugpy==1.8.5 +debugpy==1.8.6 # via pulumi -dill==0.3.8 +dill==0.3.9 # via pulumi dnspython==2.6.1 # via simple-acme-dns @@ -186,16 +186,16 @@ portalocker==2.10.1 # via msal-extensions protobuf==4.25.5 # via pulumi -psycopg==3.2.2 +psycopg==3.2.3 # via hatch.envs.default -pulumi==3.133.0 +pulumi==3.134.1 # via # hatch.envs.default # pulumi-azure-native # pulumi-random -pulumi-azure-native==2.62.0 +pulumi-azure-native==2.63.0 # via hatch.envs.default -pulumi-random==4.16.5 +pulumi-random==4.16.6 # via hatch.envs.default pycparser==2.22 # via cffi From 1f89c0ae2e56cbcef574f36256cbb74f418ca025 Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Mon, 30 Sep 2024 10:29:59 +0000 Subject: [PATCH 182/302] Fix linting --- data_safe_haven/commands/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_safe_haven/commands/config.py b/data_safe_haven/commands/config.py index 8c51da4ab3..dd6e3be6ba 100644 --- a/data_safe_haven/commands/config.py +++ b/data_safe_haven/commands/config.py @@ -219,7 +219,7 @@ def upload( config = SREConfig.from_yaml(config_yaml) except DataSafeHavenTypeError as exc: logger.error("Check for missing or incorrect fields in the configuration.") - raise typer.Exit(1) + raise typer.Exit(1) from exc # Present diff to user if (not force) and SREConfig.remote_exists(context, filename=config.filename): From 37616eb526c36a2e3327364eb2c9eadd0d77c9bf Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 30 Sep 2024 15:27:58 +0100 Subject: [PATCH 183/302] Add note about premium storage SKU names --- docs/source/deployment/deploy_sre.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/source/deployment/deploy_sre.md b/docs/source/deployment/deploy_sre.md index be080908f2..add1f1a2e0 100644 --- a/docs/source/deployment/deploy_sre.md +++ b/docs/source/deployment/deploy_sre.md @@ -73,6 +73,8 @@ sre: All VM SKUs you want to deploy must support premium SSDs. - See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/disks-types#premium-ssds) for more details on premium SSD support. +- SKUs that support premium SSD have a lower case 's' in their name. + See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-naming-conventions) for a full naming convention explanation. - See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/) for a full list of valid SKUs ::: From d0fffe73b760aebaa9a0ccb9f0e24a50f2ead4f4 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 30 Sep 2024 15:32:55 +0100 Subject: [PATCH 184/302] Add note on CPU architecture --- docs/source/deployment/deploy_sre.md | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/docs/source/deployment/deploy_sre.md b/docs/source/deployment/deploy_sre.md index add1f1a2e0..a977a5c584 100644 --- a/docs/source/deployment/deploy_sre.md +++ b/docs/source/deployment/deploy_sre.md @@ -69,13 +69,23 @@ sre: :::: +:::{hint} +- See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/) for a full list of valid Azure VM SKUs +::: + :::{important} All VM SKUs you want to deploy must support premium SSDs. -- See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/disks-types#premium-ssds) for more details on premium SSD support. - SKUs that support premium SSD have a lower case 's' in their name. - See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-naming-conventions) for a full naming convention explanation. -- See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/) for a full list of valid SKUs +- See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-naming-conventions) for a full naming convention explanation. +- See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/disks-types#premium-ssds) for more details on premium SSD support. +::: + +:::{important} +All VM SKUs you want to deploy must have CPUs with the `x86_64` architecture. + +- SKUs with a lower case 'p' in their name have the ARM architecture and should not be used. +- See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-naming-conventions) for a full naming convention explanation. ::: From a935d578b0b8b3ed9362d6a070d9c58983d1c962 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 30 Sep 2024 15:36:11 +0100 Subject: [PATCH 185/302] Add note about ClamAV memory use --- docs/source/deployment/deploy_sre.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/source/deployment/deploy_sre.md b/docs/source/deployment/deploy_sre.md index a977a5c584..dc432eff23 100644 --- a/docs/source/deployment/deploy_sre.md +++ b/docs/source/deployment/deploy_sre.md @@ -86,7 +86,13 @@ All VM SKUs you want to deploy must have CPUs with the `x86_64` architecture. - SKUs with a lower case 'p' in their name have the ARM architecture and should not be used. - See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-naming-conventions) for a full naming convention explanation. +::: + +:::{important} +The antivirus process running on each workspace consumes around 1.3 GiB at idle. +This usage will roughly double for a short period each day while its database is updated. +You should take this into account when choosing a VM size and pick a SKU with enough memory overhead for your workload and the antivirus service. ::: ## Upload the configuration file From 882155580afb09576efc0809443440fd7aa97ffa Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 30 Sep 2024 15:45:16 +0100 Subject: [PATCH 186/302] Add note about GPU sizes --- docs/source/deployment/deploy_sre.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/source/deployment/deploy_sre.md b/docs/source/deployment/deploy_sre.md index dc432eff23..5ee2226bde 100644 --- a/docs/source/deployment/deploy_sre.md +++ b/docs/source/deployment/deploy_sre.md @@ -95,6 +95,14 @@ This usage will roughly double for a short period each day while its database is You should take this into account when choosing a VM size and pick a SKU with enough memory overhead for your workload and the antivirus service. ::: +:::{imporant} +Only GPUs supported by CUDA and the Nvidia GPU drivers can be used. +['N' series](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/overview#gpu-accelerated) SKUs feature GPUs. +The NC and ND families a recommended as they feature GPUs designed for general purpose computation rather than graphics processing. + +There is no key to distinguish SKUs with Nvidia GPUs, however newer SKUs contain the name of the accelerator. +::: + ## Upload the configuration file - Upload the config to Azure. This will validate your file and report any problems. From b123be377868f70b968f355af982ab2308f94f1b Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 30 Sep 2024 15:55:54 +0100 Subject: [PATCH 187/302] Add size recommendations --- docs/source/deployment/deploy_sre.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/source/deployment/deploy_sre.md b/docs/source/deployment/deploy_sre.md index 5ee2226bde..67efdc4549 100644 --- a/docs/source/deployment/deploy_sre.md +++ b/docs/source/deployment/deploy_sre.md @@ -103,6 +103,19 @@ The NC and ND families a recommended as they feature GPUs designed for general p There is no key to distinguish SKUs with Nvidia GPUs, however newer SKUs contain the name of the accelerator. ::: +:::{hint} +Picking a good VM size depends on a lot of variables. +You should think about your expected use case and what kind of resources you need. + +As some general recommendations, + +- For general purpose the D family gives decent performance and a good balance of CPU and memory. + The [Dsv6 series](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/general-purpose/dsv6-series#sizes-in-series) is a good starting point and can be scaled from 2 CPUs and 8 GB RAM to 128 CPUs and 512 GB RAM. + `Standard_D8s_v6` should give reasonable performance for a single concurrent user. +- For GPU accelerated fork, the NC family provides Nvidia GPUs and a good balance of CPU and memory. + In order of increasing throughput, the `NCv3` series features Nvidia V100 GPUs, the `NC_A100_v4` series features Nvidia A100 GPUs, and the `NCads_H100_v5` series features Nvidia H100 GPUs. +::: + ## Upload the configuration file - Upload the config to Azure. This will validate your file and report any problems. From a8fba4e642769065b85148d74b577aa6502da80e Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 30 Sep 2024 15:56:34 +0100 Subject: [PATCH 188/302] Correct directive --- docs/source/deployment/deploy_sre.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/deployment/deploy_sre.md b/docs/source/deployment/deploy_sre.md index 67efdc4549..6ae1d0cf3b 100644 --- a/docs/source/deployment/deploy_sre.md +++ b/docs/source/deployment/deploy_sre.md @@ -95,7 +95,7 @@ This usage will roughly double for a short period each day while its database is You should take this into account when choosing a VM size and pick a SKU with enough memory overhead for your workload and the antivirus service. ::: -:::{imporant} +:::{important} Only GPUs supported by CUDA and the Nvidia GPU drivers can be used. ['N' series](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/overview#gpu-accelerated) SKUs feature GPUs. The NC and ND families a recommended as they feature GPUs designed for general purpose computation rather than graphics processing. From e71d2013a85d78fd7bb83b9d0b01f8bccd04d22e Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Mon, 30 Sep 2024 16:01:49 +0100 Subject: [PATCH 189/302] Add more specific GPU recommendations --- docs/source/deployment/deploy_sre.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/source/deployment/deploy_sre.md b/docs/source/deployment/deploy_sre.md index 6ae1d0cf3b..eca3edc58f 100644 --- a/docs/source/deployment/deploy_sre.md +++ b/docs/source/deployment/deploy_sre.md @@ -111,9 +111,12 @@ As some general recommendations, - For general purpose the D family gives decent performance and a good balance of CPU and memory. The [Dsv6 series](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/general-purpose/dsv6-series#sizes-in-series) is a good starting point and can be scaled from 2 CPUs and 8 GB RAM to 128 CPUs and 512 GB RAM. - `Standard_D8s_v6` should give reasonable performance for a single concurrent user. + - `Standard_D8s_v6` should give reasonable performance for a single concurrent user. - For GPU accelerated fork, the NC family provides Nvidia GPUs and a good balance of CPU and memory. In order of increasing throughput, the `NCv3` series features Nvidia V100 GPUs, the `NC_A100_v4` series features Nvidia A100 GPUs, and the `NCads_H100_v5` series features Nvidia H100 GPUs. + - `Stanard_NC6s_v3` should give reasonable performance for a single concurrent user with AI/ML workloads. + Scaling up in the same series (for example `Standard_NC12s_v3`) gives more accelerators of the same type. + Alternatively a series with more recent GPUs should give better performance. ::: ## Upload the configuration file From 1fc5210a7e6bb24bd6594dbf1a4cbc961bbcc260 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Mon, 30 Sep 2024 16:49:57 +0100 Subject: [PATCH 190/302] :wrench: Update to v0.6.0 of guacamole-user-sync --- data_safe_haven/infrastructure/programs/sre/remote_desktop.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_safe_haven/infrastructure/programs/sre/remote_desktop.py b/data_safe_haven/infrastructure/programs/sre/remote_desktop.py index 89ef40d7f5..3be1207c77 100644 --- a/data_safe_haven/infrastructure/programs/sre/remote_desktop.py +++ b/data_safe_haven/infrastructure/programs/sre/remote_desktop.py @@ -297,7 +297,7 @@ def __init__( ), ), containerinstance.ContainerArgs( - image="ghcr.io/alan-turing-institute/guacamole-user-sync:v0.5.0", + image="ghcr.io/alan-turing-institute/guacamole-user-sync:v0.6.0", name="guacamole-user-sync"[:63], environment_variables=[ containerinstance.EnvironmentVariableArgs( From c726230a5e593bf73c6f6415c4155a79106ee9bc Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 1 Oct 2024 09:13:57 +0100 Subject: [PATCH 191/302] Fix markdown linting --- docs/source/deployment/deploy_sre.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/source/deployment/deploy_sre.md b/docs/source/deployment/deploy_sre.md index eca3edc58f..dae7cea8bf 100644 --- a/docs/source/deployment/deploy_sre.md +++ b/docs/source/deployment/deploy_sre.md @@ -70,7 +70,7 @@ sre: :::: :::{hint} -- See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/) for a full list of valid Azure VM SKUs +See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/) for a full list of valid Azure VM SKUs ::: :::{important} @@ -79,6 +79,7 @@ All VM SKUs you want to deploy must support premium SSDs. - SKUs that support premium SSD have a lower case 's' in their name. - See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-naming-conventions) for a full naming convention explanation. - See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/disks-types#premium-ssds) for more details on premium SSD support. + ::: :::{important} @@ -86,6 +87,7 @@ All VM SKUs you want to deploy must have CPUs with the `x86_64` architecture. - SKUs with a lower case 'p' in their name have the ARM architecture and should not be used. - See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-naming-conventions) for a full naming convention explanation. + ::: :::{important} @@ -111,12 +113,13 @@ As some general recommendations, - For general purpose the D family gives decent performance and a good balance of CPU and memory. The [Dsv6 series](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/general-purpose/dsv6-series#sizes-in-series) is a good starting point and can be scaled from 2 CPUs and 8 GB RAM to 128 CPUs and 512 GB RAM. - - `Standard_D8s_v6` should give reasonable performance for a single concurrent user. + - `Standard_D8s_v6` should give reasonable performance for a single concurrent user. - For GPU accelerated fork, the NC family provides Nvidia GPUs and a good balance of CPU and memory. In order of increasing throughput, the `NCv3` series features Nvidia V100 GPUs, the `NC_A100_v4` series features Nvidia A100 GPUs, and the `NCads_H100_v5` series features Nvidia H100 GPUs. - - `Stanard_NC6s_v3` should give reasonable performance for a single concurrent user with AI/ML workloads. + - `Stanard_NC6s_v3` should give reasonable performance for a single concurrent user with AI/ML workloads. Scaling up in the same series (for example `Standard_NC12s_v3`) gives more accelerators of the same type. Alternatively a series with more recent GPUs should give better performance. + ::: ## Upload the configuration file From ece98379505037811ace31e60c88949680226840 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 1 Oct 2024 09:18:14 +0100 Subject: [PATCH 192/302] Add lint script for docs --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index 530c52be82..50ddf3181f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -124,6 +124,7 @@ features = ["docs"] [tool.hatch.envs.docs.scripts] build = "sphinx-build -M html docs/source/ docs/build/ --fail-on-warning" +lint = "mdl --style .mdlstyle.rb ./docs/source" [tool.hatch.envs.lint] type = "pip-compile" From ffd592bf050fd68b6605b4588efeb00ab0cdc9c7 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 1 Oct 2024 13:59:02 +0100 Subject: [PATCH 193/302] Fix typos Co-authored-by: Matt Craddock --- docs/source/deployment/deploy_sre.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/source/deployment/deploy_sre.md b/docs/source/deployment/deploy_sre.md index dae7cea8bf..e28cc16bdd 100644 --- a/docs/source/deployment/deploy_sre.md +++ b/docs/source/deployment/deploy_sre.md @@ -76,7 +76,7 @@ See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/) for :::{important} All VM SKUs you want to deploy must support premium SSDs. -- SKUs that support premium SSD have a lower case 's' in their name. +- SKUs that support premium SSDs have a lower case 's' in their name. - See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-naming-conventions) for a full naming convention explanation. - See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/disks-types#premium-ssds) for more details on premium SSD support. @@ -94,13 +94,13 @@ All VM SKUs you want to deploy must have CPUs with the `x86_64` architecture. The antivirus process running on each workspace consumes around 1.3 GiB at idle. This usage will roughly double for a short period each day while its database is updated. -You should take this into account when choosing a VM size and pick a SKU with enough memory overhead for your workload and the antivirus service. +You should take this into account when choosing a VM size and pick an SKU with enough memory overhead for your workload and the antivirus service. ::: :::{important} Only GPUs supported by CUDA and the Nvidia GPU drivers can be used. ['N' series](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/overview#gpu-accelerated) SKUs feature GPUs. -The NC and ND families a recommended as they feature GPUs designed for general purpose computation rather than graphics processing. +The NC and ND families are recommended as they feature GPUs designed for general purpose computation rather than graphics processing. There is no key to distinguish SKUs with Nvidia GPUs, however newer SKUs contain the name of the accelerator. ::: @@ -111,10 +111,10 @@ You should think about your expected use case and what kind of resources you nee As some general recommendations, -- For general purpose the D family gives decent performance and a good balance of CPU and memory. +- For general purpose use, the D family gives decent performance and a good balance of CPU and memory. The [Dsv6 series](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/general-purpose/dsv6-series#sizes-in-series) is a good starting point and can be scaled from 2 CPUs and 8 GB RAM to 128 CPUs and 512 GB RAM. - `Standard_D8s_v6` should give reasonable performance for a single concurrent user. -- For GPU accelerated fork, the NC family provides Nvidia GPUs and a good balance of CPU and memory. +- For GPU accelerated work, the NC family provides Nvidia GPUs and a good balance of CPU and memory. In order of increasing throughput, the `NCv3` series features Nvidia V100 GPUs, the `NC_A100_v4` series features Nvidia A100 GPUs, and the `NCads_H100_v5` series features Nvidia H100 GPUs. - `Stanard_NC6s_v3` should give reasonable performance for a single concurrent user with AI/ML workloads. Scaling up in the same series (for example `Standard_NC12s_v3`) gives more accelerators of the same type. From b90c96d6ade862f79ad91d981d1731c6213f862b Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 1 Oct 2024 14:01:18 +0100 Subject: [PATCH 194/302] Add full stop --- docs/source/deployment/deploy_sre.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/deployment/deploy_sre.md b/docs/source/deployment/deploy_sre.md index e28cc16bdd..b6ae50a11a 100644 --- a/docs/source/deployment/deploy_sre.md +++ b/docs/source/deployment/deploy_sre.md @@ -70,7 +70,7 @@ sre: :::: :::{hint} -See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/) for a full list of valid Azure VM SKUs +See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/) for a full list of valid Azure VM SKUs. ::: :::{important} From 134c9e59911b042d6caeb4fb8706d22eb655bdf3 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Tue, 1 Oct 2024 14:01:58 +0100 Subject: [PATCH 195/302] Adjust wording --- docs/source/deployment/deploy_sre.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/deployment/deploy_sre.md b/docs/source/deployment/deploy_sre.md index b6ae50a11a..d4161ea579 100644 --- a/docs/source/deployment/deploy_sre.md +++ b/docs/source/deployment/deploy_sre.md @@ -74,7 +74,7 @@ See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/) for ::: :::{important} -All VM SKUs you want to deploy must support premium SSDs. +All VM SKUs you deploy must support premium SSDs. - SKUs that support premium SSDs have a lower case 's' in their name. - See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-naming-conventions) for a full naming convention explanation. @@ -83,7 +83,7 @@ All VM SKUs you want to deploy must support premium SSDs. ::: :::{important} -All VM SKUs you want to deploy must have CPUs with the `x86_64` architecture. +All VM SKUs you deploy must have CPUs with the `x86_64` architecture. - SKUs with a lower case 'p' in their name have the ARM architecture and should not be used. - See [here](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-naming-conventions) for a full naming convention explanation. From da837e7bbf1c5100a6fae863c519b5a10c0b0ce4 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Tue, 1 Oct 2024 14:05:54 +0100 Subject: [PATCH 196/302] :arrow_up: Upgrade dependencies --- .hatch/requirements-lint.txt | 2 +- .hatch/requirements-test.txt | 10 +++++++++- .hatch/requirements.txt | 6 ++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/.hatch/requirements-lint.txt b/.hatch/requirements-lint.txt index dca69b3675..ee7edc0299 100644 --- a/.hatch/requirements-lint.txt +++ b/.hatch/requirements-lint.txt @@ -242,7 +242,7 @@ subprocess-tee==0.4.2 # ansible-compat # ansible-dev-environment # ansible-lint -tox==4.20.0 +tox==4.21.0 # via tox-ansible tox-ansible==24.9.0 # via ansible-dev-tools diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index 8922d805a1..c3f079ada4 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -1,7 +1,7 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# [constraints] .hatch/requirements.txt (SHA256: 96b56280f43c84615a59c1be2b4c1a2d404e2d46448c219a5c63f7f6e532e976) +# [constraints] .hatch/requirements.txt (SHA256: 69488923545009ea59b421629909ae529ee7ea3a4a3780b3a967123c9a3c7251) # # - appdirs==1.4.4 # - azure-core==1.31.0 @@ -25,6 +25,7 @@ # - fqdn==1.5.1 # - psycopg==3.2.3 # - pulumi-azure-native==2.63.0 +# - pulumi-azuread==5.53.4 # - pulumi-random==4.16.6 # - pulumi==3.134.1 # - pydantic==2.9.2 @@ -274,6 +275,7 @@ parver==0.5 # via # -c .hatch/requirements.txt # pulumi-azure-native + # pulumi-azuread # pulumi-random pluggy==1.5.0 # via pytest @@ -294,11 +296,16 @@ pulumi==3.134.1 # -c .hatch/requirements.txt # hatch.envs.test # pulumi-azure-native + # pulumi-azuread # pulumi-random pulumi-azure-native==2.63.0 # via # -c .hatch/requirements.txt # hatch.envs.test +pulumi-azuread==5.53.4 + # via + # -c .hatch/requirements.txt + # hatch.envs.test pulumi-random==4.16.6 # via # -c .hatch/requirements.txt @@ -377,6 +384,7 @@ semver==2.13.0 # -c .hatch/requirements.txt # pulumi # pulumi-azure-native + # pulumi-azuread # pulumi-random shellingham==1.5.4 # via diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt index 484696e37e..b89c709d70 100644 --- a/.hatch/requirements.txt +++ b/.hatch/requirements.txt @@ -23,6 +23,7 @@ # - fqdn==1.5.1 # - psycopg==3.2.3 # - pulumi-azure-native==2.63.0 +# - pulumi-azuread==5.53.4 # - pulumi-random==4.16.6 # - pulumi==3.134.1 # - pydantic==2.9.2 @@ -181,6 +182,7 @@ oauthlib==3.2.2 parver==0.5 # via # pulumi-azure-native + # pulumi-azuread # pulumi-random portalocker==2.10.1 # via msal-extensions @@ -192,9 +194,12 @@ pulumi==3.134.1 # via # hatch.envs.default # pulumi-azure-native + # pulumi-azuread # pulumi-random pulumi-azure-native==2.63.0 # via hatch.envs.default +pulumi-azuread==5.53.4 + # via hatch.envs.default pulumi-random==4.16.6 # via hatch.envs.default pycparser==2.22 @@ -241,6 +246,7 @@ semver==2.13.0 # via # pulumi # pulumi-azure-native + # pulumi-azuread # pulumi-random shellingham==1.5.4 # via typer From ecdd71deb33346c26eb1139e7e6f9b69797e8712 Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Tue, 1 Oct 2024 13:31:16 +0000 Subject: [PATCH 197/302] Detect that SRE is not deployed and print informative message --- data_safe_haven/commands/users.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/data_safe_haven/commands/users.py b/data_safe_haven/commands/users.py index e250bc9fd5..f3c2a79dd0 100644 --- a/data_safe_haven/commands/users.py +++ b/data_safe_haven/commands/users.py @@ -83,6 +83,10 @@ def list_users( # Load Pulumi config pulumi_config = DSHPulumiConfig.from_remote(context) + if sre not in pulumi_config.project_names: + msg = f"Could not load Pulumi settings for '{sre}'. Is the SRE deployed?" + logger.info(msg) + raise typer.Exit(0) # List users from all sources users = UserHandler(context, graph_api) users.list(sre, pulumi_config) From 0fcbef27fa43645bfc3051c64c20d4052044ac48 Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Tue, 1 Oct 2024 15:18:19 +0000 Subject: [PATCH 198/302] Change to exit_code == 1 --- data_safe_haven/commands/users.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_safe_haven/commands/users.py b/data_safe_haven/commands/users.py index f3c2a79dd0..cdc5111d7b 100644 --- a/data_safe_haven/commands/users.py +++ b/data_safe_haven/commands/users.py @@ -86,7 +86,7 @@ def list_users( if sre not in pulumi_config.project_names: msg = f"Could not load Pulumi settings for '{sre}'. Is the SRE deployed?" logger.info(msg) - raise typer.Exit(0) + raise typer.Exit(1) # List users from all sources users = UserHandler(context, graph_api) users.list(sre, pulumi_config) From fa753938aaa26a098de60366712dff616672715b Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Tue, 1 Oct 2024 15:18:35 +0000 Subject: [PATCH 199/302] Add test for invalid_sre given to list_users --- tests/commands/test_users.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/commands/test_users.py b/tests/commands/test_users.py index a9feb25ee2..c1b183c922 100644 --- a/tests/commands/test_users.py +++ b/tests/commands/test_users.py @@ -26,6 +26,17 @@ def test_invalid_shm( assert result.exit_code == 1 assert "Have you deployed the SHM?" in result.stdout + def test_invalid_sre( + self, + mock_pulumi_config_from_remote, # noqa: ARG002 + mock_shm_config_from_remote, # noqa: ARG002 + runner, + ): + result = runner.invoke(users_command_group, ["list", "my_sre"]) + + assert result.exit_code == 1 + assert "Is the SRE deployed?" in result.stdout + class TestRegister: def test_invalid_shm( From 8484eef051fe21699b76f3a00370b775fb8f4437 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Tue, 1 Oct 2024 16:54:36 +0100 Subject: [PATCH 200/302] :arrow_up: Switch to psycopg[binary] --- .hatch/requirements-test.txt | 8 ++++++-- .hatch/requirements.txt | 4 +++- pyproject.toml | 2 +- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.hatch/requirements-test.txt b/.hatch/requirements-test.txt index 8922d805a1..23e0ee75b8 100644 --- a/.hatch/requirements-test.txt +++ b/.hatch/requirements-test.txt @@ -1,7 +1,7 @@ # # This file is autogenerated by hatch-pip-compile with Python 3.12 # -# [constraints] .hatch/requirements.txt (SHA256: 96b56280f43c84615a59c1be2b4c1a2d404e2d46448c219a5c63f7f6e532e976) +# [constraints] .hatch/requirements.txt (SHA256: 19aa4d0b689e048428b83c4e2a649423a7ab393c2c2fd7eaa2464bb456f70826) # # - appdirs==1.4.4 # - azure-core==1.31.0 @@ -23,7 +23,7 @@ # - chevron==0.14.0 # - cryptography==43.0.1 # - fqdn==1.5.1 -# - psycopg==3.2.3 +# - psycopg[binary]==3.2.3 # - pulumi-azure-native==2.63.0 # - pulumi-random==4.16.6 # - pulumi==3.134.1 @@ -289,6 +289,10 @@ psycopg==3.2.3 # via # -c .hatch/requirements.txt # hatch.envs.test +psycopg-binary==3.2.3 + # via + # -c .hatch/requirements.txt + # psycopg pulumi==3.134.1 # via # -c .hatch/requirements.txt diff --git a/.hatch/requirements.txt b/.hatch/requirements.txt index 484696e37e..e4e1b27923 100644 --- a/.hatch/requirements.txt +++ b/.hatch/requirements.txt @@ -21,7 +21,7 @@ # - chevron==0.14.0 # - cryptography==43.0.1 # - fqdn==1.5.1 -# - psycopg==3.2.3 +# - psycopg[binary]==3.2.3 # - pulumi-azure-native==2.63.0 # - pulumi-random==4.16.6 # - pulumi==3.134.1 @@ -188,6 +188,8 @@ protobuf==4.25.5 # via pulumi psycopg==3.2.3 # via hatch.envs.default +psycopg-binary==3.2.3 + # via psycopg pulumi==3.134.1 # via # hatch.envs.default diff --git a/pyproject.toml b/pyproject.toml index 530c52be82..43ee6cddae 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -44,7 +44,7 @@ dependencies = [ "chevron==0.14.0", "cryptography==43.0.1", "fqdn==1.5.1", - "psycopg==3.2.3", + "psycopg[binary]==3.2.3", "pulumi-azure-native==2.63.0", "pulumi-random==4.16.6", "pulumi==3.134.1", From b9f4ecca6795b95cd029bd3f53d83f0eced4c425 Mon Sep 17 00:00:00 2001 From: James Robinson Date: Tue, 1 Oct 2024 16:44:50 +0100 Subject: [PATCH 201/302] :white_check_mark: Add test for Context.entra_application_name --- tests/config/test_context_manager.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/config/test_context_manager.py b/tests/config/test_context_manager.py index cd30e84f82..8fd7391040 100644 --- a/tests/config/test_context_manager.py +++ b/tests/config/test_context_manager.py @@ -29,6 +29,9 @@ def test_invalid_subscription_name(self, context_dict): ): Context(**context_dict) + def test_entra_application_name(self, context): + assert context.entra_application_name == "Data Safe Haven (Acme Deployment) Pulumi Service Principal" + def test_tags(self, context): assert context.tags["description"] == "Acme Deployment" assert context.tags["project"] == "Data Safe Haven" From 6c1d0bfa0e95f8d57a58687044cb3cc83033cfb9 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Wed, 2 Oct 2024 09:57:09 +0100 Subject: [PATCH 202/302] Replace DBeaver with Beekeeper Studio --- .../resources/workspace/ansible/host_vars/localhost.yaml | 3 +-- .../resources/workspace/ansible/tasks/packages.yaml | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/data_safe_haven/resources/workspace/ansible/host_vars/localhost.yaml b/data_safe_haven/resources/workspace/ansible/host_vars/localhost.yaml index f6900fcd7c..55ee5e6340 100644 --- a/data_safe_haven/resources/workspace/ansible/host_vars/localhost.yaml +++ b/data_safe_haven/resources/workspace/ansible/host_vars/localhost.yaml @@ -145,7 +145,6 @@ deb_packages: snap_packages: - name: codium classic: true - - name: dbeaver-ce - classic: false + - name: beekeeper-studio - name: pycharm-community classic: true diff --git a/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml b/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml index 9b01bfa6c8..1e21678d4e 100644 --- a/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml +++ b/data_safe_haven/resources/workspace/ansible/tasks/packages.yaml @@ -29,7 +29,7 @@ tags: snap community.general.snap: name: "{{ item.name }}" - classic: "{{ item.classic }}" + classic: "{{ item.classic | default('false')}}" state: present loop: "{{ snap_packages }}" From dad208f6a8137b99af8b702bb0c3c285fa77a133 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Wed, 2 Oct 2024 10:01:11 +0100 Subject: [PATCH 203/302] Update mounted drive paths --- .../usr/local/smoke_tests/run_all_tests.bats | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/run_all_tests.bats b/data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/run_all_tests.bats index bc73d824f7..38f8803a16 100644 --- a/data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/run_all_tests.bats +++ b/data_safe_haven/resources/workspace/ansible/files/usr/local/smoke_tests/run_all_tests.bats @@ -42,20 +42,24 @@ check_db_credentials() { # Mounted drives # -------------- -@test "Mounted drives (/data)" { - run bash test_mounted_drives.sh -d data +@test "Mounted drives (/mnt/input)" { + run bash test_mounted_drives.sh -d mnt/input [ "$status" -eq 0 ] } @test "Mounted drives (/home)" { run bash test_mounted_drives.sh -d home [ "$status" -eq 0 ] } -@test "Mounted drives (/output)" { - run bash test_mounted_drives.sh -d output +@test "Mounted drives (/mnt/output)" { + run bash test_mounted_drives.sh -d mnt/output [ "$status" -eq 0 ] } -@test "Mounted drives (/shared)" { - run bash test_mounted_drives.sh -d shared +@test "Mounted drives (/mnt/shared)" { + run bash test_mounted_drives.sh -d mnt/shared + [ "$status" -eq 0 ] +} +@test "Mounted drives (/var/local/desired_state)" { + run bash test_mounted_drives.sh -d var/local/desired_state [ "$status" -eq 0 ] } From 32525ff4fecd53faf2d9cfaa5219cf7b8fb649b5 Mon Sep 17 00:00:00 2001 From: Matt Craddock <5796417+craddm@users.noreply.github.com> Date: Wed, 2 Oct 2024 10:23:40 +0000 Subject: [PATCH 204/302] Remove unrelated code change --- data_safe_haven/commands/shm.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/data_safe_haven/commands/shm.py b/data_safe_haven/commands/shm.py index 60ff4ce112..b6694c7daa 100644 --- a/data_safe_haven/commands/shm.py +++ b/data_safe_haven/commands/shm.py @@ -10,7 +10,6 @@ DataSafeHavenAzureAPIAuthenticationError, DataSafeHavenConfigError, DataSafeHavenError, - DataSafeHavenMicrosoftGraphError, ) from data_safe_haven.infrastructure import ImperativeSHM from data_safe_haven.logging import get_logger @@ -104,10 +103,6 @@ def deploy( fqdn=fqdn, location=location, ) - except DataSafeHavenMicrosoftGraphError as exc: - msg = "Cannot deploy SHM without appropriate admin group membership." - logger.critical(msg) - raise typer.Exit(1) from exc except DataSafeHavenError as exc: msg = "Failed to load SHM configuration." logger.critical(msg) From ed0cbb3987f50ca33ddd9052fea9952dde9a2a93 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Wed, 2 Oct 2024 13:53:10 +0100 Subject: [PATCH 205/302] Update database software in user software list --- .../roles/researcher/snippets/software_database.partial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/roles/researcher/snippets/software_database.partial.md b/docs/source/roles/researcher/snippets/software_database.partial.md index e47f443c17..d76766476e 100644 --- a/docs/source/roles/researcher/snippets/software_database.partial.md +++ b/docs/source/roles/researcher/snippets/software_database.partial.md @@ -1,3 +1,3 @@ -- `DBeaver` desktop database management software +- `Beekeeper Studio` desktop database management software - `psql` a command line PostgreSQL client - `unixodbc-dev` driver for interacting with Microsoft SQL databases From 576bbc094d2a083d7e49126bb356540c6e711e4a Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Wed, 2 Oct 2024 13:53:44 +0100 Subject: [PATCH 206/302] Correct MS SQL database username --- docs/source/roles/researcher/using_the_sre.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/roles/researcher/using_the_sre.md b/docs/source/roles/researcher/using_the_sre.md index 41752c1c06..8630fd35a0 100644 --- a/docs/source/roles/researcher/using_the_sre.md +++ b/docs/source/roles/researcher/using_the_sre.md @@ -529,7 +529,7 @@ Official tutorials for [MSSQL](https://learn.microsoft.com/en-us/sql/sql-server/ :class: dropdown note - **Server name** : mssql._SRE\_URL_ (e.g. mssql.sandbox.projects.example.org) -- **Username**: databaseadmin +- **Username**: databaseadmin@shm-_SHM\_NAME_-sre-_SRE\_NAME_-db-server-mssql - **Password**: provided by your {ref}`System Manager ` - **Database name**: provided by your {ref}`System Manager ` - **Port**: 1433 From f4808feace911c368b1021a02d9aec61edd1c603 Mon Sep 17 00:00:00 2001 From: Jim Madge Date: Wed, 2 Oct 2024 14:16:04 +0100 Subject: [PATCH 207/302] Update database connection instructions --- .../images/db_beekeeper_studio_mssql.png | Bin 0 -> 265768 bytes .../images/db_beekeeper_studio_postgres.png | Bin 0 -> 220130 bytes .../images/db_dbeaver_connect_mssql.png | Bin 486485 -> 0 bytes .../images/db_dbeaver_connect_postgresql.png | Bin 485555 -> 0 bytes .../images/db_dbeaver_driver_download.png | Bin 138674 -> 0 bytes .../images/db_dbeaver_select_mssql.png | Bin 550429 -> 0 bytes .../images/db_dbeaver_select_postgresql.png | Bin 714115 -> 0 bytes docs/source/roles/researcher/using_the_sre.md | 124 +++++------------- 8 files changed, 35 insertions(+), 89 deletions(-) create mode 100644 docs/source/roles/researcher/images/db_beekeeper_studio_mssql.png create mode 100644 docs/source/roles/researcher/images/db_beekeeper_studio_postgres.png delete mode 100644 docs/source/roles/researcher/images/db_dbeaver_connect_mssql.png delete mode 100644 docs/source/roles/researcher/images/db_dbeaver_connect_postgresql.png delete mode 100644 docs/source/roles/researcher/images/db_dbeaver_driver_download.png delete mode 100644 docs/source/roles/researcher/images/db_dbeaver_select_mssql.png delete mode 100644 docs/source/roles/researcher/images/db_dbeaver_select_postgresql.png diff --git a/docs/source/roles/researcher/images/db_beekeeper_studio_mssql.png b/docs/source/roles/researcher/images/db_beekeeper_studio_mssql.png new file mode 100644 index 0000000000000000000000000000000000000000..fede151a4a79c00cffd5ca6715b2424feac9989c GIT binary patch literal 265768 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�sJu^4Av@m7(F283r9W?`RsK+6VNB>bv3*#yPEm<4^ zA~5=+NLcOmWvFpwwH_WG=#M9YeGI8JJ2GU+s z6ddYD(%Jd~P>5C=s0r(UWj!Q>r(KS}y`8#w>ul-V39x2KNRBslc3GAU^(c`U{w%!y`Z1SBnxv z(*PNMHE00X)-OwDzP&HoHqhbDndx}4XkY57WQhD-dI?Nw)Qa%Th(~%4WV#i9Bm@to zfeAbi8kkLlAo`$$Q^=(B8bm|-`FDo|AW2dIppgK{HMLmOigwNzxL3V_;R@=?=0u*i zRVT}JQ=t2G$S1%xeQ{?`^ER(J!rn9sS%{9#v>(_uTQ_2qQwwy@##x;oJ#`-<_k zeeJQ8fZJ_aGeyY7SSpQcB19rYbKj+|uI@eOVPQic(EOk}zg}wsg3_GW`cbzdip%!0 zw!ch5;n%MomyU$rN(MCsV~0~#m6e+uf7}kLR{)a;#~OulW&N7H>)$Q{N*doi2LQP8 zcWv!7jvS;MboJ|5u$-de-kq-~6b^Ri5KF_4(pVwIP3udr3WXdF_OLx{j58PF8Ahs(N4M;&evQ%D%G0@&1_I zPq#Ymmwi$=Yt9DTG8#OeXDB37uKSGjYV+2Bhmc%FsUinN)2^v~XR%gCCK53Zz%n$B zqUBiO_@*@mBef4#d#VbvHEffMOL;+N#x?1j4vPtA^^Kjh5@%u1h&c1_YLO^7rS~4g zGL5&Bh|^*CYw6eDx7xpvooJx-#Z$1bu~o#xf+dq#dkV(VEbx+(%e%|VOR7pj#3|1r z3As(;XW|totD(v57rnmesxLjXc#~esS^*Q)AAI1A|ARka@kaxdb_FVrZfY(Vo3PX1 zq)pdLlihLEVztG13h?cr`l%6~J-Z@^$cgyH-ohBxw#9)Op%42}f}O0!^Hd%dI26Vl z6czc^t8Jg86q9KH2#`WLS*Q2_-q~6)({o`hJFEC>MKxe0rT9p!OP3*I2Hl0IaXaaL z>4x1uA_+gUR8YaTklyTAW+s>HKtib^W*rOiLb=u;w#+c2@&1xjdfe zOkSVio@Ij*#LYj%^EhSQESooz&s?>--qniT|FyBPeNJZ+FrC{YQ8`^}w`{OnL36g5 zjtH^q`OW2MRUVY!&qJajmCmIPsFP$6>k7#YTPBZTeK4|RzJ)LJnad*fn;##GG(EjM9lXk6 zk1~ROcd}@RPgL6$zU;iT&p(~DpIJ+sV@b+iSm$V{-v?4y+qcVENz{jil++i0ht*W5 zsQ3&1lfl5Tg^%gEW3gwXV<$V87yIH)ubtczr4n8(wn`ek5%lmx@3z%gsu9s#euA7M zZPyC)*=BtxoX6c&7(72~Klh2CdrDzGYwT|cdXl^8$Aa#r@%&}3at(&2Eg+#nsgbrv zCnj^|X)nj@iBt!8JHnM%p8MVgUhh84j`2J+pQZ$v#{|`NadanSn;#s6)e!ZOV_moV zWOO`gGT^?bTwoUw5+3#TN#t-}E9wg5rt`S2 zmTR^$%GwNekHL_Sw44I?wIL$*@SJ~Z~{aGG(aO_D+xOU{aE&82ZcedDC$niZg4GDbUChG$GcoIyN|MO8XgYZZ@8Vwv=!Yu z*EZ<3iJz`ok4o?2EROEI5IxfNRE#Migf0OMCMN(Anm?Mv4pptW-w|l4)uf8jP@neL zCKbWz{-nG_ImvxBp`Pn1%*dn?%gL{n3|qQ(!w=_-YZs2^o-W=aYu2_KtFOnd>Aw_ThHJW&E=|wD=}Ml) zF)bDQt`6K6WE-|QNxUJ=6)J2pUN_poQ&eNdSjG_ExJ#|R?#ba0Q9g=uKi@r0MV?3v z_lc!>x)6?i9cznZXy1}Pd<%1N`rXvtOKHnK7pNu?5v#X?2g!w_mZn658e3=oMJ2+% z*a)0*RBV()Ba`lt()k78nF0OYYmp%0DQDxg|sl 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

Gn#X(A>8ChOYzP#ZIz!A>-b;);Nb;>AJFW(5k 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℘w;ITH7*B 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 literal 0 HcmV?d00001 diff --git a/docs/source/roles/researcher/images/db_beekeeper_studio_postgres.png b/docs/source/roles/researcher/images/db_beekeeper_studio_postgres.png new file mode 100644 index 0000000000000000000000000000000000000000..473f40cda204fd8f75f6f4ad5dd544b2d5c36731 GIT binary patch literal 220130 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

wC$-pZO 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

OVz7!=m6v`ivYmGqt;W{IfMp{R+E8|F=NKu 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

}v*2j}B{F*{4;6zVHh6oRYDx&Q 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

~jCXQH)S{2OVfNc4OY4n}7ASo8zg=!bhld(>e1 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%0A);dT@` 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

452M0 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�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

PFZwmLC%r3W3Jd4Y0J5;iK#-2u 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

@L9F%bCNY)>vw*}OqjVe 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∨`PA|+bmU}20cV>L^l&VO4Z(U4eTj(}|4D4-RmgLt!2ETzj zyYBL`;#Mlz~v3pS`Zn>QspiMdYn z&rk$Zo0J9MfR#%l^UjNA)}n*iaGWc?U&ZTN4pkMxY`ygubvA!b7%xAgiL<|c?X#Gn zBeg^z!*#bv%U>!C__#GCm>eYaxdU!}T6y~~Nvt8ef&1xSI0a(wpumIVr2^Mxa+xAl z?wdV(I9?L~`(6KTSZOrEH{iH93A{sY(?eaEzT-y7k|Voe*JJcJl|z+y#oj&`-TU$x zyOJUZX&UvAIALH;U^~ol>S>v4W9D3!=>>hJwvoxy`(4k8@)$TD9n*W@fhk4#a5!+Q z;G!G*u-7|k=sn|$GWJeR^CAJ~PV80N^~2J&jGvE;1&MTma$9zup(Y?U31Mc)7`6tL^vEN{CEo;9sD zBw9MPn7I>g9jR`m==MEE4bQyF`|i(&)|9uDHX{6qo>e8EeP-4MBU3+&i zaGf29yHTRs02#`eggv7CN%|8hGo#YvGK-_9(e$1@yy{}mS*lEHf*yYf?&lh`U^24A zJd_)*jvKpX=^4d8yb1q6)cO2SYadqeP#2X}~=?pz})Z!pi>k_JWDJNT~ zm8IpjJ3Fs4B+Jd_$kx}pdFF-gEx4HZV6IT<9)Gi}*d$O^q(5j)wR5}t@kHo{P_^tY4lUPhm`b9Do# zC|H+f3ws;O!`dbcxMieTQRTK%jW9Idh2<}SVJjEC7i!)SVNqu5aLIw*9_P zl-gHseMJ2Rd>MlgdxZ)K7QVh8Kh?eZ9&5<}#j%MmA4yxApY)RSe?gEiN%O90k5SZ? z#dk0jb*1~N?N(U`Rx7?8;*i0UXbv)=wL=fK31T1YqDaBMCgFq$P7DodNFU1hKtY5wB~==xb#W# z5!xD?OE!1?SUZy&uC*V)%g2X6c}kbI@B>m9&|Df76;(_`rL1$K26q7`1C;?Z8Yol} zf?xBq%aSG=$$cGgbh09wIL%|g|CpMJtZLU4j_likhwEDh>6u1{wPy9D%7#Amg$J z-hQ`fuCpOjLf^c@D@$vNR~xOjfn5^-K&-5G7#c{Roa+M|tTijSw?iLiyRy)$k*&d> zo=9vFV6Eb4Sa>eaG%}-Z`r`oGG`8!EV z1TykNaf_w5*n!t3g||6%7Ss`mDl7~eC~67iluH;cCk=+8`P^R=`-&Jhd*B^c7+ki^ zEuhR9#2jx9%?xBJ?_j#A)ltsRAqh~>dKJcFUrMmGtLp%~1_n%22-hw4-~C=%LIx}p zKq{l||HS`kp%gfiC-))qS%HnCfWZtZmp|)y1R3kj*x)JnjEK&bTh&u_WiS4Wks~$s z9R%~#(Jlt>x>3uh=O#<566X(OMP~kL-)CRXFk}UqznblkIKnCLjv?~(y`WgdO^-N) z$z4BKEI?*3teK&4-*+MAZ|T zqg}RNJKz{t!|fR{f_O^yLOVxb%cVln45ryP&piAZ;7>u#1a|eH*Ywn$jFyBWpDe|M z83oM+uPbgtPlpr%uKEcoW<)!o4WWlx&YT+a{0F1wE~C}z<;{*wF6}K5!ak38iQ{E# z3)m};O$GvjZ&ZTT08|v)qF=&47EES7)9^m?QqLAWbw|?luy9rU(x)ciWvQ1<*$J+P^ zDNCtGA%KW88Jx)Be0zRT%UK}ks$4saA8e_=hS)1cJx*oTew?D>TeYjd@0ESm^}vDz z^6)wlVh#B@KdtCLI!`Gsh>_+vHyXczu^CuOZ2cIK3HX zx!bMAM`1r9dU>PLP#}dU0bX`HYJ=wzk~^*oxn$3KerWDST?OkL8Egb3)h@yJ*%wPf zoTN!5QuBOWVq&f!(|xOT)}QoeGQQ1wxCU2adjc8w+IEB2NXo1l`|f*X4K;SBy0<>> z58Y#0PqtbHb_s$y*#gvFC;C%#KKYNIf#M6&$oQER&v%zx7YaYLRo}F#91lnc{(}z` z(np7l=k>pS9?KFW0&{ZL*razd#ZIJ;?1te;YS8?$QKzV=AElMs2z$VJJ>)On`}A6F zW3EDXmVgyhZ1ciKF7S2J2x~1GXJ1LGh9UCJWx2v@h^xbV?MuYKrjV$2cAw+#w2iJA(x6^} z{2RDkwndQpa;W=rd`{fJj$TqwU;pumz^FpMr;q0f$-}a*#H*1D|B}*@?FaHTd(fHIuZuIwoEeZGW_nj=42`2+pD6vyHJUP&bs4NpL!@ZsUqY%K^U3hU_vA`=V98KZm{_*s*{UtY9ceq{c0}_4A z7#vl;*3^wJQUCqxlAHBRy_Flev3p&hVN({vG792wRnQW~NMlUg`$0#^$;m87la<_o zs)L9pzb4AugeCO+n3?hB(|2tten!iy%<;z~I0l{+5EWE%)HY@DBc`~) zHAPYS#tF^`qqUX+uY3)%*4@2e9PKCv^5UGL#ivwIp6peBfSOASNgonSim&hrzW!&S z3i2Nz=>nu%lK4F_9U`5X&A41=j%wLHSif8K9XP2m1t}kE5Bu2Ml?QuEJ3A{c8P$!w z-eDH*YWL~w-aP!y6l|#6?cke7FG6E+Re(W)1qt~4_ZyzilfM|5v~aO;pn+UOZi4b> zk!#3HC^1C3Bnz9I`y)&11qwQ$;IR)Sl{$ZrbS{9So1E$lyI4U0Z+J*^+BFAkQ4R1A zf(%B2gDgR(v%kH?-Iz;x8!ayb3~n5pEWf-nb1^(3`p^}}hgj3R%8}vuC5Yg?j0^LL?0}2hczn)Vo9OsenEeAj zU_kanCeB`6UIwoN(h)N_j+SPgt#tq4-sE|3FCJq(% z1EDRAn2t;kRa42I=;;}ES)kXVKVq*ZtX(CoEWFGk$q!TWML^BRp^l-HZ+bpen;b+* zcrULk{41=8kzl(4J7z<6Auus}4m8JuW!GwVd;JMz$;{5#SvLUXb#yrGN7%4(F=5%2 zu*Zib-NxHPwLF8_lnKzsJU@Sl^V^E)T|)Pe(NCX9WC`%<-FY$N-ta3Du@4v}d|DWt z_|bl%^-wo~m%|kBuU!ED9GFx~g(ruG%b$s}M8O6rF(8X1N=yWq>M`}SVO&A)NytGn z*xed7E4jPBHqYM-)Y+fSnyz1Sb8-$vAr%K!H z_qA%T4Rkx!Iq`J#&U5jDfEwJZ0c8Z0h?D)4elzncajvT`)H%zBKJ}kt zU6*2mZ;)d>? zt8shMPAo%WcG%P&ydbEZ$l;eY&WpfOA@m;B{N1Ky9blL(Dzus;hw;kjT?V>HP^{Vz zoI%Dd7g>i{L~#fi6kpf{U9!uuRrXm?6%TA?Yl%ZNC{bnN!TF8VMV!C)rh(7J78<6V`=2o2a}QEWaA(Xe z$cz83caW5JB3CkbLgGO+@XtQ;@i)9r{(tsM-SBdfbw=eDITIRmYmA3>VJa_T0IKle z5xJ1kzH3Q4Ikx&SSURiUw&Zo(?dPb55^N4Cz zhGCF!9cTsBzUDDgpb3rNr4s`Qg;}Em5&-d(_Dz1=FXjQCG=5=Qii!X*WqWWLjxn>k zx>1oWIGox{JK$w(;9D@>Iws{y46jcdqzCG!{SGYtXO(*+zMr4ZXyPFJZflzuvKD+EPM*(?1w4mwG~| zp46!Izp&9t}OdaAB{8HzsIbqS@D{rVbR1DA>f z5j{4%=h1^g*3OB4r?Ll_H-J_ZVTrarE98?5BTj&!F4=vriJ7;iAEKYu&KC$oIxK9) z1Sl%1sc>;ORpAxYigurE4QMFLuZVJHvnU7LKAG$43OaC&O73>?G^J^8m1TuHM&U-A zYsVX);co!EXTuk|T*(TcVNth4Cvlj&rJu&t*m>B<8?* z6+XASbN@7+=Tc^ag z#j7X27>D<7-ZZq=LD zVjXjJ=s{$0P^lADFnVYtcB_9wPU83Kjj>X|4DqioTLIl7pNw!P-5q4H?kb_}Ds9*c z#T`$B%sS|cdwmq&gKluZW9-={a!VBwTl$3(RErst;SJ5g5W@tJOf>(7ir5brJTupl zzfv(xLX_sj$U~Vmfi31CKbdR#BDQi7ALgrbCLkDf=_W&(_Cq01&5tk7z3&SGB-M)q zT;3wYo{lfHgpUO#+MB?hQWJ+DQaR6sfB;m!O5vL3vfBwA0)wW7&tESQ7tRobu|NSi zIa)6LH(qH(P;O`G^{~vYs`Uv-P5 z6lFQ$FP$v677F!V3n0l2>HQA)QjfiwRXd!LEK8>DOaW z3Se~5k9HI9KPz+|%R}x7`MI4YDH5eSJ3Lcc-3VAOqaA=CQHbA50H)TT7=dtD`8O5Q zA2ny}UH-JV`_G;;vkDwpfI1z}T=LgBnR^$(t|~sh>!U}6Db}WS>Ty@r;d$RV#e>2T z^BhY00bDs8UZ{Zos;mN+vtNuEM^X_WSw}MXE4hyy}GqK$EaG zzr-aQ7UuT6fh1m2KEzr@qNd6uv<=M21;!@H`UR&}QgVm>v7Tj-_wjjY$C<^Ja^{jz z3sjp(+m#fL>Xr;|4Z(st3zkv|LA;U9LMT*lsTVoMQxlpYR^>POMjdn~eJo!XJRTMd za1bOPm>3?T2v`enm))pE<0GL1l{$ur=xV(|*!f4lEarY6>n(LMhcR~`fT7QlGz2kSh?QX_` zYaBsq>cTstvNyD>hk3Z^E=jkebM^~g`Tqx1KL0d<$q(f+>^=k9^bm`WyU3R* zk9Yh}&VQHqBTVdFV;a!y(r!f-Vdck(Oq?Hgy~wAS3RYUHiKLsP&phPfl_?j0+PIwR zT8{MnvmxgP7MA>eAG+1CiHXsAd}(H98AJq4Xbt5Tle(k%&EoH6;q3qPb|f&dO#;gl zW&KH?j-P{YHRcLpf=2lSQtWK6E%C(biZ`kS50zY<^X6U`B7M_pfISbwNGUzzdJjz zC=JB{-oj?^&VZN_;XbLpVumOQ3M9V$%UES#oD>FPzauRdZ`{c;y zSPnmS#xlSxP*b#Llc46!%{eo55Qp_duBX*wesceJM_SRvjY@%Wz^C;$=h^oP0V}vf ze~KS)mQqE{KZm_B=DXc})T3Qt6w#spyZ8~?^~-@^9BACUu=LL4-CyTdO0P*gY|4C(H$?b1feB_UXjVRu-#Gp zZ$}I+Ojx2xF?(X*uHeJ*oMjQd5^6w-WCwyQ0@=rUY{?r62He(j(ubqpe3ZbtnK9|* zV$hlvj>v)P=P|F>2s|T~+g;UqEQCa$QArre0@){Ensq;f^1TvHc0+S|!WO8tcUot92hpBy>Z@gM<^kP|Tfrrk?e&(mr~ILz=QDuR!D#AlX>D&e-eDeLHR zpz2h4If~tJJrHCc_4btSsPZb1LLJ)k5PJNPJm5x7+4*#Z`7yxdM3?y%k$ZWyBy%^k zZEXJ4OG-{@#j^4K*rmA{b_8|c;LbG5CB=rrvQL+1)9T7i--8fn*0-ZIfi1VNcuAr7 zw!$yBQ4%C_Ef_aZkRx_$qgTEo+-Gs%eM0w(AN)mFZ^v1oWpWV)@K&1A9$Kdl$5;D} z|6~2zQc$m6?=kan6CG^4_99}mZ@_aw{F?s4X}QLN2WSVv(Vlu<(MTRWl*Qrn{r38o zF~w7dQtZAE?N#p~^?^_f)B?{uEsnzZl{+r%SV~Pg{b%$0=xA57S&E&9ll@vM>&`N^XripJ}>*UOX?qb8I3hHqOH<)dAkN58P7Zsfc&9@7kkBw@kR%{5q z5$!!id%9=f%@&tYwL8TLfp~6PT^bq-RD~r2)T41Dp{NBT5#vvt7Zo*~T6el6WeP$A zB4a^v?=mF97lvHf6E5%e&95uzfb`9z6jZZk2@NQ&_%D|v6WTSoPF?uHB=K2jLqgR< zu*Tv1>-NvDw4)c!F8VN#l6U5@@ zo=>1vrB9(XJK4OQms}<(>~P_w7?^Spj7k3mD~*^7Z={2A3yBvch2{%6*MG-Y+ok=P z;|@e>8z%*NyxF_^(|1XNe)g&=?Bmqs2vQ;9M~A`@o3KlF?1nq&6OIQyxA=>dwe=Ra z$>Uo```w8=-7zA>=79;eXNrNl8S0m!fb-kLu=wQQeNRE0nq1|Byf!lfPubdOh@8;i z<+iwtAMb6S*iET=-uy#?W3aiK%thK{*-C&6uKU5PEm8tleX#^sGY#R7^eaGc)R=(F z%|p>#L#XxS@u-OJ?Re73V;8etdSz?B)t;)zc$WRy>{Gyp?rG69?ur}*^~bL-y}sYY zLq^(JoD}=silLyr-tSYaF;&xmitjE-HX%6w;aF$=zIyEY|A_kPhbG{++l|qUNS6qL zL3fXmkQ7uvx?37XH;A-IH==;FAUSC^N=7$hbi?R|yYG9y@4f%P*nZ%A&hwn}oYSAM zyWQXK-PY1jgt#?jCSK3lo*c zrVqR_TXD+P-C}%H{P$#-YRGeLXm(?$xaCJ7N9Mb<-1g}$ebNG59b#znG@a5{b?>xo z^IikIJ(WkFYjo8vI}^MP+!ns9de?clzE$Q7Vd9W^PG_5&r^F?6Pl5XgzqWe^CSa@X zj8%SwJBYo*#NNf(d%5D7P(W#C5VvR`6>?fV%^QC~BcyB4* zb}xg@`H{YjIF=o`%Wl#$LJ3YGp}L7>c)1am&lFvJ6Jr7224ATEa56jz)%f>fFWxrcv*S10Ot`bptZ(NC7bX#+OF>AK<_QPJGI+~mUX?#IC^H2e2L zQ_BuZ|BZK+e_a_&^06eMJbN5XOg~j%INu^)w7ngSPCw^I-!N&TwUjq(2D8`b9aG*+ zU-AH)Y=ZAp=V=svbZM7Z@kxsBC@T>jdxB2!6wr)Eows$Q|khb$Bb- z^}I2=y>Vyu(zFe(`&;v`CSe9>vwWpDE@PxYbTKIMwu-4moMmBu(YowzB)n!OaCw8& zRr1@923{|4X_c@P%^RkYu@lc~pX$?%EB-HCSW;Qy-_zR(*7Fo{dOC)s6|~kGcHhO@sP345JNaFo0cD%o5Uw*n z|NjW6E->M}*v5)G?|{{9>VnBXJeTQ@K;(|re(!R_BIk+w17w$jLr)x42}*K=xaz~Z zMT4Pbfw_){CgblYPumJ}cb7qMg~*gUyP`F%7rfMHwTFgSW)9FxcV!X zX{%xhY6>;nBY8)sN4iYeZ4dW1=q|dE!xCGYH8@M~#5+(fEsIBc_fBDWOd0Lwc)?Ju zI6OG`YS7fPYgw5kxR@_=)f6jL(&x~Dol(<$P4QinHzOT$vKkHVHf<*A@EK~(ImcGo z=`prT3Gl_tW{L57G)r)Z?Gl$%H~pyS!B^eSGChu)N8-czS(#mz&bYfnyO$^7WJ}7B z2Z~6ioRM?k4h96-xZR}g=1MP-#4u;XD$7lhAV3OydntWRLmei%AzWlj<&3X|deP^x zrvF(aYy5kO@Fp`HHFsFmp`sb+veZ^7QP-|jDn};$lW>-HyfD7}C!m1miRGt1i%mgc zK+T6D#xg`dy!FzvPW#zDvZob>xKFP_=anA1~*nROY+4-nP7s$tgO zis|+imEo_V9GU$|%epf(laZjcv9YnfK?d&H_*2}#9jOtLRsX7H1oVl1j&eXodCMEq zSj=Lihkk>G`CWyfNY0=@Q1nFpWFd4FsdF&W_vUkrf*SpnczJq?KP3&U_&Jfc2%u*7fX@#a9Z@lQhTcnZdv>k9$uAp{o&K8Uf)V&K*V1mOc=0!o zQtAsP$K3F}I6I2uPgx;{xd~h$BeguOw{kQ4f#8GUU)$+wnF)4VQ0lAGt&9j(F>K4m z)H~e{61skCljV3sVtt@fkZzL<$pa>*#>8AnhmBeOEg)GG&9_Rn=Mr?nfH^N>A~{q^ zq@}+WyNL<0e8i-1Zzq5^wQtxcbneEFR{DN(I~GQNPM4L)v?2Dj@mM*IiT^&tjam=0 zSV1vK#nxzf6E14f8Q+NBG+Fb#1o&!n^UA1*C7cM^kdK{ndl_VAQKaYUZv_s!SS4&DI- z;EbWnx*DN0Ny*F0QFh3P{y}L<-sntu?R z({ex{rF5&K_Z1u2gog;E%k0yyZ2uhj5Jkq<#3rvi43plTB}&g0d4g4bClsir&>pOT$JFwImoh@t&E-Icv9xE0~y|A4stKxA}*vq<@wXm6tMpzb5ZI zlVk%B@|)i%e7K@hT(C-_I@)=AJB9Q3X6eDi@>_5S@bR)CcsL(iuuixebz_V7HIFTY zGR3dL-1BR7@M-cezzQzsUnDNM(){l!@I(tNjni@awtDyajBI_O`Gj`OvlHE-lPV`^ zJMGI`jv3Zbl~(>k^O6c&TzzZ+s>7`KnHstR1--#Kgoh8NRVz*9@1-uvvRmg7<`f@Z)l4W<*?#nqYK`iQuI=gNjQG-abT4-G?DsW*P2)ZazTTP5H(1g1gv2N%e&ni6~>F*qOSu(fTYZBi0{bzK!1oH`b$J*Esi8*aab@SWw||c1Squ9UawYT!$|HFopylv4i_rI9Q={ zK#mD9cC#7V9#r^31apmCEt{~33S-E9LefguIk=zQ==JCXo*z(wicCo<8=PJWz;O`_ z;WU*+Jlv7tQ{#DAR5}7SkD8g~DA}N54ao%&Zqk&O2_N0DUUg%UDkwxLRusFcSDpa^ z+irK%{%G)RiY^!K;AhL#7J2i>ZTjq9(+%WNwh%~(C#RW&bLC_Vss4zYSqsxmxIkbL zHav}f+{v-;Hj$jtYEYs#(q>dM=x7-zU@?&ozDWs#=0DtSy3_ARds9Tw-R%rk^LL7U zAy0B~ymK>5FxD3<48Wxvuy1V%yh)qtKO=Ly6}0_B`WSkLIh}~l)48FY*ZA}njqA^d zNS+o=BSO9`4fZjuFGS}R`LLLtTiMs zE-I5BjSl#^7=A&O&l~?)djrc)bLhfCzWrw5#V^*q&ZL>q3`|%V8jm~}s>e23BQHAj zY9G$6kxj}N8SS7X_CCtTc{uF2>(IBIyL!(iLA0LBuHJVR`&*7vo0`O96Iqf&G6KkI zX8EKD(U^XB2ti~-WcfPv!i;dJs4NA22^~$dQK3)QW9Dn4kF#JLLb*9u@~mP40Ah*v zEf))mie6#X*U}CQ?sffrxaaR)2KiTt>ygO^jOFQi^@$|P?6&y?c&0kn&RcO7X!aj_ zOu+rsCZVPsm#u9mnLag#noUWLs^wKj32V-@=beN_?RYO#W!4J~vn(KiLXLD~Zcc3d znD#pIm?cTXJT?DT2{i}@U9y1vzQxZUG}%*H)C%?tll`s3-^Gt`w`?A_j8QGHmt9XJ zI>{6kVk4Dq@REX(eIg}nOTh2j^9MQ z2r=8jffd;*3&oMX06qs2n$s%a9m7LGKzVJfRv&<4F804!{Z(4pp-vE2NbzVzK17JY zkr^Da2dOD%bj zFV;+G(fA8n;r;MJU4yMz-F`1L^yXR=(;o^Ge{kBvn;y^<5BfJ5o0@yf;kltht5`$g zfsz;N-nH`g^tf?$YX5iFaT9hy+X>-DM8>a9K=J|(_I@A(o{ypBv_xgXFDqVNFs=}< zxB47xA8LNOareO9I}IogOn9_I^C}ft4Iw_*YW_36zvxkY?pv#eaxR&!8{c=F>|U&L zHL#a_zA*g10rWXeIG9JAaH7k{ieG#X-(fF}hP&S@LQ}2sjr$_d6R7o9=-TiZ>V=Ex z4)N*0)z9*=KO_aO{6+*=FvL>6K#gW;EJ$el+N8GSLWoLt*jGW ztqk&dc0G|E!cP=Sj$c)!#!=WRuLGZ;?m@!$`O?83_KD)+x@GKN%K}%E8ALyAT@xqw zf#;~j5^i^@P3@m6&k2cD6;+06X`{@QgiUy3*5VwYW@%nI+zkun|# z4MEw8R_6m!3o%_e$5K-x=EeUKyyVeJk`t-rdQ?s1zuk(;48fBjqVncb!kouJXX|<| zsX`g6{XvQ-T@%jzci27^;Gd?mMCbC5Fr&FFTC7w`R)gsJQ3?}}V=higO2&s{ zn)ZpCi1`DISye`?@0z*uGRHL%K{Mwj7Mi~-;Y)Usx7K5-?3E&imQH!CxcG)q@2F4Xlc_El^Z|kvXPE{6ZVC~P7nZ@4(3I~28ZIC<7 z{=CaHVX}j81#ILKta&OwvE4U%I>UJD^>PZHQ$8OE{Z<8bjFZdRjIBMa`8I@CU%C(> z&2lio@Kspe50d*mg*pU3bG(y0;+$@t?*VDTTEfpE-^+zxfKwJ6;KXErmIca3quQF? z{I=T*e|_}s&rBcQlMJ=r-7NjG9caG=KNL+HlS19R^&}#DDj_4nBAxTZ2r3QrSOXz- z^1%dJ1tAltr>c7=y(IYI{_vqn=`LB9ZO1zp$1Iu&K+Pd?-xz!&ih~zW`lxM`@(bWI zUo@urtC{i>#Vy4YpU>j!2qsi>P0BYzZz^cv0l|I7Wg04;$<6OJS0<1itYazQ?X8~Q zt-f|k$ZQuu>Un58quIqx%5xbG(~g3YlD-sE*z9_ShwnV}{AM?OCmx0-!PbC!x1`qz zDkp-yf8lE`HM<)~-UzKaq#jN-; zL7nc(Fw}B0Yr5ywju=tMN&~*81)NpX`-s=V+Izg}*ak+5ya2W&XYo6caBtZT+0O&y z5qly0ifnk4LdA9C2uJh39Bxd+^RhF&cc+#j1MefKmjUrSdpW+Bn~3`gufMC!Rbu0F%S&R*ufDmi+G|*JQCSGWjpFsXl)_AJHu!u(wQY$X_14=m zxGP1>>Gv=5a%D{aUsBTv{n$A#B(H)r@Q_zY!??-6%o#@;x%!iTbti%-wBI?0h$h_O zM{iNV_}wXqTUmgL6j*NRok1#9aEAExxG}kc&INny=jl8EvCg1nvW`_Om>%`{-L4C2&lkYp1E1&{(E!%LvcDRzthMb-HgK`*{@24{BQg$sF0Lh}(U~rvWdDN zC-6mxRaGRBfdDX;#GK3)NiRQ*GoRzK@L!RrwpH5IaV_xV(Ib-HdV@7;EG5k?>#Byv zWdmXFYoYVW>gIlYB&~S~S1pV$H!rF(02jU^!J#zp#kV-tEscY_~T_JDL)5V_? ziyHB}e6%WldI7$Be=cEWxsn0ZFRZk}AT8`D^j;3frM`89q7zvZks#DQQegOfp&@>Swn zJ)d7Q*0~=)ALn!B%9fQL3+fT6#l9hueml!t_H0nIli_eRyy9>)`R$*0ih4n-pBov) zBoryr+l#7_H2LD#5%uw-y1(cFl~0*a;2RudQF4Za9p6(ucINk6nhebF&v{;nF9CHC zGPa^?BV-~->*@Y5(Xi*YjjLhCXugDfigR-*M}uHu@ZQNg%D7kULn3`QQa*L1s+-abZ3{tV-XmzFD)lNSnm5rt7hL4L(Gpr+p~Tv~ZD$-MW+ zkusja7p)J}BOAZGIS4G=2dhFwJ&R|XH=l$wqwybqT8YkOj+}ON8V+NV8q4&;|IwN0 zgBiK?*Gk|yVv9lrf>JE;-%rh0FQ3ZZ&`Ev8jl%W(&>y>rNRGH5>MtGx6z6ZLvqxDK zQ%g}xYDLImo5X4SBjxpQ8_fvDOki`%JE660ETG(F^R=9A2`L^gbI$NW>b9#5hO;jg zC8?^P=>)?1lMQIUhIYg=>BAy66X_LfFm53pGUyS6m}VMuDB{;sE6tCW)5SMI*`0)J z4c0mVINVwjn{5fhEssCevn5(m7)klvs{9SLLrcfYk^W_~CvWrEOc*x%?!%7vK5iF* z_S%!GRp^*in@9|26TP68OiL!WZIn(%$UG1`^Zh8u3@u<(;sBQG~sh z*CqY>KpZGuQzWxFY(f6n&lN}`c`kI{-a)J=LzYo+q1UeT`*^%$668TI&Jc7PDo&OJ z3Oi~pw`Z|~5Bci#d)1H<^v%3|^}z^}THNO!OZf;1w6lI{A}w{ z30r=(rC~q{<%fE6Zw{iRxvJ>|O22HDGOXx`4quhLM1|R6=jZ;BYP`JZw;f7ofb(F! z#CPi8@=GZW=(=p3{&GhEXHJ!t*= zp`#-kgcJ)hB&ytQN)Ruw6Kpyjri$a@DmsrG#8cbX&gHq5Z;q(_)~DZOt_9r+fy@nN3VTneE}-tRwez>}eTLCV%g4 zCfIbcW$q?9_KWa0wbmD^4!nHJL^T~DT+WwNVIM+X$tudA_S4LIV^TOLNLyEypQ49r zKkfVFi}|5PfM<$YTXwUMeUsq4?QB)}v%!QlCU9X@>K$oMgEAhN4EVfaLn&YRw+qLV=H`_y&BqT75|D2C z_?W;T|lNsxJN7@v9(WtEMy>qFz+k=iM)7&W84=ZYxK|EPgR52 z1pD9URvo9Y#|YvT`hK#rldeZ$rY3H;#OFQh4mQTwu@`kDNLsLsRDgas^7N2uUD>2o zXqgrGCi7y6k=pEbNVw~ovgPNHp7#DXfnph&ld(&|n~m05osdT5RD&c`eCK-aZ)8Cz zp9vO}KcpYvP@MTb1g``nv}ng%>$y78vW*^dD7y$KIqmblmd;d7i0p%a49cX{Z`0}C z44!0^ee*-Nml;^Uh!w4qCeob$MMN=X1B=6>wv9U%@tAWm_Xk}^pO^E{?@QU8GWxTR@)fg%xcJah3SHZ) zyCt&zFnS;%$awy9N%Bxk{Ru?4>al%D(+#*1ZpIzH!kLhtRNkd^2SI=@!dm@?tdDTj z{XZeoxFV2c-<%XiX>K!0?n0S52On^FcVx9e*x=Nr`qPAXQyGpe*Wk>}Zy8P3% z=!W~^qfxwef>SJ!dX?$?fYRDd=o~F-yZZbm|=`~iKBUabLcS8++H}T~T z1%|qpSNw7%--Ey4%m1dayYpd@=99*@-;my6%z=Wcc-;GT`p1bbFVDhnm}@XKC@IZ} z99L>-IH97>-+oWLx@~(c8F~%x7`Hm`?>|@HLdis~GkwVNRDyWNdo5YYu2)r=8x5=s zWbQ(s=L4(1ltUVemEZ!8@p0rswarARGPoeE;*eQQufz26{&LHvtW$FhAAa#_V~wBO z$c)R~Ckm9a=RqygoLD@LCRJ`R?)j&K5Uh5=Su!m)Oh0b=b;-WtTF~1x*JoMkjnAEr zL|VA$OuOlcML+L#TVl4wpN|>@eBwlnPK;YT`K?n+`hUEppU|kt9yV1m*!oXN?a3uZ z?~+*aw>aT&sk1mzYR|o=PWzAp3h$cj_|;=_|5GZW!nmZrrb$UHv=MuOo!ZbiEF~gJ zzwRSS!xx7U3wiL1Mcv7Nt{IwvpP7k?-R=?Q+Mz|;3`K<6!f4UgT~-FL6dlmiEOVH^ zMe0=^K^og;VN5F^*Jv}jndFcK$Gf>PyXpiFdUtnocqIno2o-IFj9;yoxVuxkRGKuL zI%d=iU3NE`s2W1c_U!6X0v5E-(vC!>{_!;=6CeSy!4I7`q`A|Tx~4`Wc!r4{@SZt;v2XA>N+`vSpqC?i;$sjNU>RVU~2D-bY_so@4{_ z*`e~}4C$5n_v^U(tB~8+&m?e$_an-Qf{@GIKHZk!kH&wae1h2ID2O>t76B~bn8v3UU zczHT(d=S=Y{N@)0ZeJJp`W|%iR}Nl*%jGZP9Mr{~1OvI`h-?m32-|#P|1{%=Qyhh@ z>&glvzTW)}X?+=@pgnGS|HHI_TkDfs?=g;x5CEVOB5Kj}ERDFTkzQ;_=B68b&*oxg zex2Am|E9yLg*AnT*+m7QW7k)u(_Pob+FF=Zk^N-RB*P z-@?;`>&Vtvf!;{AQ8}QBb~Guo6zYInM7mZL)b7menGtGH@rtew=KLz{qq=;@(?mMM z+o_Tncd0%%w`Ltd;zp<0mGB{;Kl6zfs;aWC9GWtp`+#?!1#=dqss}56JT3$tma8a6xZ}hb~1O69tEEyta}$b zdDT1T0Z-UJu!syanmB9K6U5#IjEMKF588OCgaXFjfSmb1a>TptUAh5k>gz*-IhT~-G~-;JTvSz1QV ztHygmCByi1o0(50{fln2bx18It6Q$;UQCi%fX#qv@UH~8kx1o~+h>FFa=H#MujLEw zJTEC-NR;|UTe_3h9RO-h7vmC?M{^7NE2_7XEIH#CHp5ugRIeB=UO7&P+=yicBHdGi z0%!;$unJ|L^Nka#Q$x>|4jWp#rz^G8gkQ6$y085Rw)XZ%x8&}KTlxH9pG@cZN z!YypZdHwbJ2i*m;_1CLffZ(+b$^ibfa#iTzNVLyjj-~Qs;uczlX`dPP=1Z)a)CZme zAkgKzvBt{i+IC5vcPu9~{afk3udje~v;pvOBFYc7X7fbajrXEq)E9l#)L@pwQ=^Rr4mNiQ6#mU2xN4A%ObLYADT8%so3Q{w)2a zB4{-ZlHRGo=qv^8A!kbzDQullV*$?wRjhB(+Ps4qZSwp1UpRfgmyq27g>vdt?f=}p zr9?-S566GmPUvM=eubaOM~6=9fqXYr*b_;~mX;C&Y6_mISFJ$wl1e;8Died0Hu+#e$uQ7!*ZF}o~<~vOch1ujznBX-^iYt zImO1DG#(mc+k1BV^90301|99_@e%s)Hr<*kV*94UtX)CW zjF2S9-?-x|COkPEx_nvQeylb58F^5WfuV&DLJ|NM!$tw}Jf`qX^s>TvH29JYPjKlH zCK@N^)?}(eFA$TL@&^K1Soj(vLE=QeXf33DHqlX>+4Nzk$m8KCOD@V#*@&F)v#(M7 zq0iD?%uU|Id1D(ls*b;;T#^fc^jqaV^xT`N?Y3p)rZ8*e);=ziWeqPBV$LXwU{FEf zY(}NhRPAgPkMwc!7RTU1Gkv3kdyiH*q2~B10e5H9)&vdw(kI+^D(cf7T*#oy#^BYu zaQD#0`NlPtfL;MSDp@A3VHFTojC5A2iumeIvR|VYQSE%%RmUd*g(1DEz_bMNc+UDC z;oV#^PhKU(eIs75IP%vcQ`%ujW7Hp`V9fC7dPAm1uLb@)&dpUz7%-##LE#}XeZity zv%r-r-93o!?kJPn|DriofL?s)tD9cR^}bsTL``17L#~tMr0gs{+m0{ZoYb@j^f&;8FfJ@VR=XXvOLlL_(-FRdKj~zE^L-=xi4)zL2&XdcB*u#1=$UKv&FK59z9Ie1qE4>-%)lKEyQK@G8#?|XN^QrY4|PWCmk z^S|sb5>tTDDt~CWzrXMIlk5CO;wEG79H4WctAEQ++fiq^KR3~q0=4F8PQ=;F)2;n=#L(>W+KDHPxLqKe9fki`g=UJF-#M2r!GK zF8!@3LEG|lFf=N)*XyP?ZX!FgrL=2@-em6DROJ5|W(=?!Dc%uTyr7?88BX={1cRVw zr9o?N%#YI4Qnzn;NHm*{{uTEcrUo4Fj6SiM#76BW;3f^{wQqq`$9=PEtDSJ(?IHDD zyV9;G&pLyxBBQ}0HGTH1@ata^CnV5hAFdF)461GOo{(Du;ixQYi#v}8)aJrMi(+k0 z0;9M952W?EC^2SRqR4Sn!UQq%OUx7@5eo<$ceUmt8?3bCOz;P-PCsl{_dj)xj!ox< zd@qbi^ypxai^}|wmWlZUr{LQXuq*m}<%GB859Ji8P=esNRVM=|T}UVp^_zR&K?gxw z;SUi@Pfg#Qt9;z2D#yoVc(4r>Z@&OTmKYqtch`ufA5`-rfIfAMyOuu;jU^9Y6WX9V zEzYT_GB03plpk94zp>URot4~?ZyFZDn29oLXF2H6KfC3d0mxE3z;lZ`AkvQSCS16` z;20o#yG(|IJe3{5LDGKq0iU~Pb`bMaT&w60E>ew zY_hDuug}NNo(ZyMHVYNYSyh0_Orfs5BiyCatb@PUqT5f0KitfTOcxs@9Y*aSw1SQ) z^Vd)J@-`Wv!h}v7{Cxr^Nmut!3C^wXb^HPkVQOvnepS~MI1t)w65dUEw-m7ZPiW>D z?lLZKHFiPV`=A(V%TNl;=<^0J$uRw?v`|ZV)uVjm4|?ZSwZn%|heO2?VCS^V#c;Yw zfGS)MPgXmUw9|7U5nEBilez!ue5&rs^*{;kz9C+(zSmwcb-8P8IyRVP3zia(5f0HOQNP_%Xuq6W*Y}(jFzSN>HX5+`=Dq;qS2r(59~Vz zS<-^lp=Lpu&J=Hsg4h6oqofgBb$9ji%*^2HQ~jgSX=7eK#W?PSMBDVbO@u^&1m_d1 zh#ukK>~r0>CNBbc5*?4eO~j9);?EgfUnCPfVrz#+Om!@Y7*+1r?7O`$8ALeyEYQ=}!&vy`8u3)sM7u@&r1jL{D39)YxkbLv{#99p4tiuu z6Z6p!sD3R=6Gqi+tFeB;nEpY|^q&M|yeXG#)_!Ifjz8Y*V;Lqo9Ob1{X*!}h+%Z6k zoT?aOkJ>w0UegX~WN5@jP6Q99VnNq+tR>pVWef9oWme5#o!K^%TKGs$52@}rD-z`E zENh&1G!rX<_(%cLe1UkD<4jdHQ`-v3r49xjyo8qEVDk zU|OV%0!Dmw=U$yOxDvl_ugxUwJ#oKN{m@9?MI+2m+0RgjEeT7PAd_T15aO`|Fp4!T zG0?W(JGQgdU37Ia@Ek*y!+lRXmXmoCXYz|X8O-o6$eIK4w5XvJucA@^gpwM@fg@k> z5KsRVsa+{)fkVe45$ZhjdYsq{ZmNK!fIG=*Npxoj!{Wdz9p?QCYy|0yvSXhNFj=Y))MzQl&v~(-_e6OWtNnDf7xJ9~xCZ*XO!yxH zWEJx51hN`08t_w}2Muc;djfoC)q?gMag`)N3U!mja_(gK@O_!=Ob%*(RQDx=`*UPM z>qd^5JeF6oheS!HAxmH>?q3@Y0m(tC+#}m2|Aq#3XLjmjSdRAU_nwZW^nYt6C&;(gWfXrrc4nlvB0{t^H zhl)|7MM%!V{ZFk9z8hTFQ{7`;e;pSkUU-YkAN%95*1gopD~Ns3erAkuU*H!4W;`;c zQvzc3VU({ZCCa(NBWo)l%hn*V_E>!J%&cOy=K?csl4CfSDKCy|Ik>bzd@xfb{RS}` zI(%V$Qu9#o5^{_WRh1PJH)!aWrTExX+UV<{de!z2LoBf0=iF zUuCT2-{y)?Zp9&L6to?-TiGf zl{`MktHgE!h{;L|&D2`9`i}#L_&ZP84CMKn8!>gDZphQIt7!rqo1d{XylY0)D)1&Q zn(%a?PYR6U^+gYwLyc5lYW2zq{CdA+ihg*I630dDHNkKt*8Xi(UC*4($22Q1F*RnY zul&$bd^viL9ssFWV;wo=Jot9LwkV_c`V_eUO35 z>ylQyP;}UZVJPp!zg4*SA?d{y_7j^T(M?zeab5xKMc0oP+Jw^w6ExR3U)yp}jDwyB*iw}2#Y-P@}KeH)|Jwdv_1A1H{gB6D;Lmo`_Kscmy!5NRW zm_QZoNQgS{Lm_ClVnlIM&&0R)L_YIv+m#WgsLNta;BQ(CgZA?J0pOZS)Yt!NQ{I-y z;}Q~J>`ZvSsAJ?&wVw5|dG2vYNe=BQcAgu{lRd(VpSIrn?&-x7>v^YEA-gY$U<&|| zY(b9u)sNJ795=18f{|eL6<+RXMG&{`(`O+u{OlZbd_l50RKf(MqW5oI)<5Z7Jj;As z+@^BB97xg zp6^dP#nXol;dZ+CVt^zZvp9123_r6CzTZ3$y)tzFf&aLCIy?c7HeMvZ`56RAJKuUp z>0$>?K*eMBcSsAIx@;;H`fvcOJg*r6}I7T^_EC1ho!V7Ao2Ig^K#GRgmX z?S=ntB};Q`Sne_Zzc>aX4GZxe)OJV*E~xMu0g1fD)}roeV(5det!BS_`9Pkfl97L_ zq1z~mfedP%Jk9$A3&Q5jAUI>-3)9Mx?Ax!1n2vcn?aZccPTC5UjhxoTz8Zq?8b<%~ zW?QDu9J#-@OIbV>Ps9_~0$?9GFl8+)5{XS&0rIuD>BY8BIp*CK_a9bd9biQ}FE4O9 zL~}Ebj`@u*a3mBNOGX05I*SiLhb8XP8|4@8IIcdDmgpG8c9pBE~U=wKbqN$i(RM)<5r_^{VC9Dx;X| z$ceXZ%3=sn&-qi+dJ1vUqd}lce&5$vHwlyl!`)C^s2|wi&Rll7+hyz0Rx|g=?U5{% z>z96L2(v}n>Te1&`TP{%C%mClPI z;e8CCTd)?mN)Ea-hrXX)u1E1&bMqFQKa=oveFr2HO z*hTCJV+n7^{HuGvq?|6ws!^kjt-b0-^sgBv9t`8#X8C~{0QI)>_#D2;78y9Eiq$ZV z{dV*sK3BUv1`fww$d$~Wy5jZ;Yzq2$e6zJ%Hi8Ihe{{Ou#!vYI=mMBiGI-UfG2wVH`Vm4Kl82}$|XyZ-Om%oMl)M?E+MT4CQ zl2dP?L%6Yyo(Ug4;waZ-n(&zdei-@Z+#FKxUseVqJRm{r>%~tnZs|N#b*GZoy+uKW z#-7s+)eiJN8+;wkF`x7)!$mXsBq6QR;8TO=%_`F%-U-Id97^bqU0^vv6dmP{&D@|5 zz1xC=k2AT4?4AI)`C+tn2P|84i1t1bq$}I(;yky<6=FXz7!ALdeL!Bcl|+we=D+Pa z6f$|F>qWm9P0Df_HN8rRg!GL!UM2`Lp%S;u_djFI)mvOBnYipEJ{M9I`k@ zF{h>Jr&9!f3O76`R_|r{R%$74dA09@^iFCFyzzF_yWe_e_FDNkQ_o>7SIliJ&}_W$ z1vYfFlW~MtZuoHV0(l0zCuOpAE()hFT{C`=enw)_pY)r34ezex2>FVn%uXl?voy4` zGSvCaL{k0NU$=_a?sjYhH)E9V_H-N}H8nbd*;HrAl^&a=nMPLBys<|+=vBqq#CqAE z(}a(B-X{e3&LnPROvW-;CJsQG2kN&|3NAH zJ@$s!i#F*Cju8hs$Nf%aIyBa^2D^yk_k!B7_93Zy{^{nD&h`?~ zQ2B?_1^F0{zsGu}5A*WziO)_fL()u@-A|UTdTD^@a$E|p6oab>xWqWUq^V0qdHmq5 zWY5<5KHUA9{Ok1cg6x27LD!8+CiCX`L5zTI+w`jo-UKzLkp6|nnySSH=knII+@bUS zz-sOECP5tJ#&_mA-=*OSg`@w1tl9EQzETnPPX)G*piJBMDyYit*PmV*+Z+DM&lf~1 z`JbF_KQ?=*J0wz|xcjpAfO*|5qOD7VOEQ0T zB(X>fc*d{C!U{5vb_(D_~-}WoL4`6KbHHO63%m^d&*C3{v0*OTztpveQKS*ek*J_&K ztN_(d4lE_X#PmIvQvo{Vj&9;*>>9?dkBKL=FYtiO@`)oHI8bw6l~zBIVHN~? z1U5jRp`qT-cPyA?1ly*7X3FMN?nS=QS*#yKyNcR=a5Xf{PwuWT2;D3AJE9o=QM%8nO24)oNW3Ah z`P@RNZrl=3*6m!i{V|>?nO3U_vivn%v&#NJFCuK&FFRo=kW=@vJA*x?Eb!KW@P^KD z9GegLPLE3={UZyf+SJ9eIGzi!gEg^JZJ11vpkOO{G2=W_8nhByL^P}55ax8BlO`-M z%Y6Ka?hbB#B#f)-s3RMrqAy=JuZZ7`vfLHYL&MJ#??(~y!x&X;B%H;Co|@CT?QU4| zaAuh;dVlAv{1bmYc?ScDFf+Ob|7Hv16(ZyxM%v@hD|>?1*ug=@Z3J6kPR@MawB6m? ztwm6p0*eGEb0z=FH3|1vVn#`_E8A_pVu9L%P+I}Pz63U~`;03n%cZTQ9-VoiVef)=Yo-PuP;;$XgU zdK!MF;NNPb@P=}#`&oy*m%C=)YwUc20gaL7{MtB-gSe^~yEMU+h?3M|?Z0za$Dz%jHjUh}-bhHq@tok+v$x^|?PN%n5d5AdAi z7t&cR+-l%yOrQugAZI5q^qMdZZq0+L90_ojCWnXZ`Uy;17W(Nvz%a-*-Kl?8ZtiyX z?SRF|rHO`>V*@itV;UCvJIJRytPTu^#C}v{W{PL-r`#~h&7}}vU8yr>zCepCovL7r zF@)J-=*kKAs&d^yakL`h(Nvl$)}8 zbaC>x=>%1VuFp>Sh5J)_6qOPbOmUl(W#}Jke%G1es5ei!MN0k%|d1u(feqXJ7?Z*Fg<2!HOCHl!iP1qb8y~v@n7qu<&rlA31pD^4$Uc5Oz-&-H% zVH3#WlRfNq*Yd#)0<)PgpyX?$rrE=kKYC?)Ns8Fm&(VncT4W-xu4**87Bv#@=WV?U z?4$9W=kVTf0CQ}JZ@b_;`vvMg{Lmp#@>yh8%W&sCz~M+iEV9u zRP%~=qlbHYZq>1O?}=#uvvqYI!r!#J{apa}Igd(Hk|Pa8_cjZM4x}^T)}1k5SLt7; zCzbsuRR@x`rP5TL;_my0;khPK#tOW?S{Sa%h_g|Pv$x>!qH*X;YvX=X z814LWE|E>fHW=t*B5}E~=W5vE3e* z%zEt2sP6$4=(_A{nN)tc%+Dx8!+987CNGn{-}163QE&F>m&z{c1swOh|K3U#hG^Ny zW~TLQdiU#wvT#K8NY=R8UG;|JPbXeA37mOz8#mOXk9{qr!Y;}IE@fF5Ov)1`qa@Kw zx1;X6shOxGs*jdl?BLemdG|}dCgU{(;={=VrQ$ld$pBh@6lR}nyG71yUz6Rx{iwdyK-sJnzG+dZnX98!sSbQa#%7a6U5Qz% zvMRG=jbyF94d8GwUs9uV8(4|7eL&&1+_R3a1nm@IXK4@L@l4eD- zr|7OsS(mgw*!RAi+8(r&cx@Z6dr;ebjUXdog&P%Fxc^E~9dm1w&r_4EV6t7ngO6w3 zL2!CiX1PqiFTNIXfmJn203Ky2V@H)OWW{$v8bV!pqy%xl6K zwt5pQi18%mRj@d-+9q=Uz)M>rAnJ@M@#(F$J0}Tu$~_t~l#cSw`{!=Aeds{yis>9e z79AU&EOvL_KMqh>N_z^;$q{35mG?)rub+@xt8uEa#%G`2Gqm07{S{r#dpxE6(R!!$ z9fhBHhV7goow)j{S}o;ua_*xg8I#5cmDmQ-028v9JHZb!Sk0vdgY#AoYehDn#E4$F zo2001*gsAI`Osd!vs0{MoB#7ksiZ;bXHg9TmqlKvNu3J+e%I)(7l=>uosTd!vr!m> zGfj%-eY1NJoolNXm=`+znLe~O(e5j^YH$AuX-s&?(sfG!^EK)@?y7BWEMQuo{(2?Q zWhySy^nTbB>QLy~MpvA;;I3^Q22d9Ej=6R|uVd{pZx=LU8w0o&N<$OsH+@bBLPmbq zl@aXKrck4;bcYJ`xLbKMHffPxp}&Z(EmmjX%H(Vz|1!%+>D#7#k4uTHDmat{%1sCl zzbbL{OGIcj73Ck$JFp~InFtL9=w})(=-YRI%VAj^U!GBJydJyL909H6lrXJ|&wo~< zbuUW<$H|#gV}lz)c`F9KQcIz^ap!^p}yvB)^9T?g`9OcawS3g0{ zi$_oznva{4IoBs%3V!B`d1&^vfgCT-ymEb%fypfkP{Q**{VfMsgXG)+TLItPY=E&Oc7=c_Tpu@fnZAT`8TJQ(SFn#Fu6tLIN!yG@@&Y%|!^5QO~0YvA0eW!e_I z%7oTI1aG1FB?RtB3X;rf>VDs$|Hyi$U826Epx5*#t*a%=tD_KY7vf$J(|`;g1{XN= z3bFY&cC{bMNGu}0Kq>pSwwjq1o$2jMBdVMnW*K*@bI?IwRrl!q29Y^TTIT~vg)TFJ zy$y@WvaYuHt4h~5V_$Fy(?;w5sudy%pSDZVVuRB9GS6O&)=Oj#j21_%va!aWEOA;* zUG#jl7Jel#4O}U3$YK??oou>4*l+RbN)f_u+3=!5 z^xYaR>Fw3E?Ydz!)dC&*`SjH$x7BA&-E6)?oF|x&D(!lm(xkJC1RCF6NcETe-v-5b zsoyno0K-Q^sF7KLIQ-o7IQvPHuS19M9U`pzUbMg%Uo{)ba?81DK#1F!rs?l@j~;w;+ljDx@N2vc&T7iapsTT8UwnL+YNy8!wX$Mbu_gmgZ;T#sX?uuDz^_aZ@o^&A)Iqx=FF7{rDn{EB8K-Dd`cznqfGh)l?x1) zet5Z?Ezr^;(F>duSQW2oYyQ<^HIf4LH(!U2nDzLig%X=@ka6K1R{^a%#Z`bWe0b<;d{97v-`|m4;u^Lf$Cm1k&!r2gQ0#4)@%& z<)DMj6g?=p;V{QhrP1Cxamm-@W-*$ITYyLzIrk!1j*6@-E60Tp`R2+;wJ$j(0z@s6 zYTQ3_g`VSmPojgfeRV$jxmzuwbJ%Uqn|hRK#6s*s`IoN6d!J^btF@sV_X!tIVjPW3 z3-qSRnvFM^A(!=HL|<5;s#g+PiaLz?JMo;*!koedY2o~2tkN{`GOJ8mu|<5ZWK$XW zzEP=J`f!k^r*bFJUq^=g!>XR`j#K`zY{jy!@J z_ABPD$j1*iYo1*7hwxHPBq#xLvt zSpEJq$nxPNwUBHQJ~H}O-bJ!kG*~ASH1p;%B8!=_os9E@b5!`3aP%MBpZYHiDv%7Z z$pe;^VxW4})%GKs+5;;QKu+HT4wsd3yF3`@+leRP8xOY8&h~6Qvaj0Pg#e(FY@MTM;~+@8BTfwX4_$xn-^mEIsC_i1E=>=L$v@UNw%Ae8gL~ClkX>~nMi^f4O4zjwBIRay)OnB6D`@VKbI8-I9;rId zlI>+PO)0M9rh|LM@lbiPx`1C*M#%xeKm0VsiddrMT^8Jgi~>_A@vhWQ+@tO#D3yhI z6vczp51mWvJ`YPz+PZ7g>|Ol026UfDtkaqL*5iiiJa7q>ElLxjKdG4QPpeppYq8?PBqrRjNC(VJv`8LZwjnGrmFm29cKc=~S9~G=y zeVS0|9zDIv3Ui8H8yR47ft*vCRgq*j!}ZV1W-nd2oObofO2a^Pf6wR7(sh$RuBq&2 zymDXHpZ-LuOTcZZj7t>0qaI;O7d`4;yr<6Rv$sg~da5?49sV@5rlxI9kzW8)MuAAW z;POq_Wu?Z*rtL4A`LvVjpkk-B8Myf{ZPa()vEs-^pOTg1wIoR%qgWTr=2^dz@g!*B zNWPGWH9#6I#1kJk^q1b^pdV$e+fM8LV87)x`1?}K_KNENEALGIA~cx>5_UN6H`5@X z=b#}XuHRT)fK8%*u`R!Sa6IiR1p3;!5gi4P zamjHjem=`Ql$1R-^uPeBC=0lQS4XA%kx7nMH+>?&;dCrPk6!kmL)(Wv{%}?LtVQ#< z)M(+$M4*W3Ot2J3$CZ~Qe=L>+5f3K*MYYScrK?n%t}11HUd(6i#+ZusZu>-epI{qD zKQ^Ceklj`98#NC3emCoa>0q9aCSwvex{VGi?3R z3Fm4!{pBxAq+>5TJ=SF-M=7k?r;XMl# z)lRP1ivH!Obc&U-YiPgO#Fb42;?7bMFJLVp$pYaG;{Q>@y&mZdJBdA0DYyI?NJc99 z-Qa!YdN1?DRM-FISDGp50HVtj*!TxGh1^@!Q_shO}{i#qE<=W#?U93>Sx zzO_#W+CDzd8q}wz$WA2C_02bHNuN zL+)P}lSw8Z00^1QO`61AX}c-Rq=k`w9S_4xVE~Z$pZH;a?F+ha5_`BjedG{)iC*;v zr+L}dhgK;gP0x#4iCXFQ=P`p!7%&~|1Byt|1YoZ+sBB2T7K@tw5EtH} zc}iIjI_B#)!?3CtLD`eH62WwNWtFk@(sAH9dFwsVGm|%RYBx*Hp>oM&`A?y*8`R{w z>`R(bSLe8LMK~rb)9=QqGa;KD)_=l8HUKaDd|!TjI2&iIed->ep;9Jf9g#qV4PWfb z@G#0cwCU97sj|x$pDz&yy=&GLa7%XOHP+X+cxqfPHX}0_JcOe_jMGLqmsMDU-t&U$ zR=zzmeR``zDB&T*i2%Ga^f-sllk2R7%*BN{-$2!UQ>qlwPGM5*RV}=#X(P7jpEAn) zLR1;{?&`i@+CO(q?HkOHv}^AabvINLb635J4&j9^nYo0$K;r^`?PYZSljAY1zv9JL z1<){L)nQEgZDQQKp5=W}HPts7fg8&2E@Dz@y5(u=<@lnWg3&*dJC!9bnzBhrlxMX@ z$M=KD(N_#RP^=`y$wf=6djb6=X1sLoHO^I@>rxZ{L?8VJQlfTvpao=i-PBB)F zTZpH?ggO~z2R3J8&vR9B2&oN=>iqH7-#sr9_tqe+lTus*S?i;$=-&KKT#}NcY;jvR z&h#X_xD_1v>WNb(D&^-LShDGSZd>K7I* zF6iv?P<~Jw{q{K2g&f}y!=DlKtR?t(E?XB(nygXf8zdM5W@#1=Sg$4S)y#Qpu%#s5 zq;>7YdVO6f*Xvh8?ajXU$9k%LrK@Sx_94v<`ig5i{tG9+szpG-Hv3{wxo8{JO2_TEMGd3dCMDg z2e0{p;Jl|8xNvg9&10Y`XCykB;&DEOj@nM-@4OU-Oj$7j5B_kFsrCZBi)Pw=5z1!# zB2a9EUiZ@Eu53_~Kx3x7-*P%ltR zv40WYqR|UDt5rs562!|VHM2hXg6VE6SW?zRSFClFIccf!pnIbU3m4GL5;>1%Q^llN z-MEyLP;<5ws=8a=atwHPfM%^a;}r!)^GlVnNq$cGpFkGc+s#)7Tw(PzzVutNz^N}j z(}I@b7#vzOCG9HRR-$+m3i#QO(}n-yEyeex?m-I~%2wL~s`JM62}TCS5frpfQdFp| z$b62g(qfbuUgy2=@ks(J&SW-L8SI;5W7L+8KJz98_6hdp-IR2zw=J&G+cz#)OgB5; z7XF8{BTJ8(0?l4z4Ew9R;A0`iDOB#B>Tgj#+;q^Y^)Zu~j=)wlKjC%UYp%vvWAEIi ziRS4S7Qd$VAjyl;;LYwXO;}!CSJ&OP_~eC4XpN{x**z!P$I3Knmu5J~rYX?WzNwx; zsp|}+6cl3Sg_1cGS-8vz)-9#D168W`Z^J(bO*XhzGV0{T`G4Akwp|At!kO1UJE!I@ z`)u?FvJbasG#}ojg+y6vBnr5@t0Z?x&|`HZUs&`_O-JsyI~J7QNldnX)|3ivvstj+ z*?e)`qbdlB%yWAcp#0HM4#36omcb}KzSO0%(FTef9}N_Fa%oGJecuYV47^6;nhzcv zvkrkg8N zGc6r|Aa0<{vEpZ!6dXwR4;vLS2qlBO72#O@E2m;Da+{9?>RN~+m!ktOT1c|jt?5H@ zJV_`EHd+X*CxdvHQ&HPo!+`I*w{}Ux)GiVF$}r_bJxeb3_p37Cp0`Eq50p38e#Gkj z1)Oh1E)(E-tyZUh{W5Lp1#Wa)a$2I(E^bF01GW{{tY_NdAgm9X+|g~kxFxGgZ~MWC z+86Nf%P;?DZ12e@72=c`x#+YtLu8?<-83@&<@cKvKLN@f6U*Y z-LPvT0P8+}>8;43$E0q|mFD*=UcD^i zeU+}~BL&GC=uv-T4Ky?~u;OAIP4$Pru<|k;2@C8&$s@xC;N(QrROyBP z-f84<`{2XS2W-DL0{%A}F~H=zx>gYydiFpr`kx5&fSerZUR($--vLoVdP@{JApEVl zOyc8G;$u?Ki7(~&g_<>Pv^e8dBIwfZhudJ^`JJkephP0$i4-ScompchO2L41pcnN{ zEff%E0}cF@!71en4CYC7x6dC>$=!yrsT7bHdXJDKcMsKp9fwKvjX69(jjs=zAngQ zmZ`wt5}mPV7-&G}-H*)2{y*I-MQ z)ji{uEaD{I-w2YxW?s6ozS@%6DSVmW>|WP90wk4cc^t;5J}N3MUK9~^o7BV9p-}4+ zBaS6h(J2M7&xId^9u@z#ew)g_*_MqdlpUv}X;pyFCVQRzKLPtPov~R^dUc6IbzNPZ zn2e@oBpm(iyYVyrXecuDIu2n|+@_tBY>d00=4&ec=X;C(`Q8i><@?i%`xu&cy)@P6 z5DUoX$VWL^RMTCaO`jtg43|vAe$GVPwISUOI-u{MsrwZ867%{Z+84DHe>_`nx?7wa z8y2+Ac7=-K+Qz69;XOj9(D8%mG~RdPtnFWYu@0;BLV}(p}a{0wQoQbu*YLdKud}oPRsPD*4j|k_EYuM;?I&R z$dSiB&cq@CTzx=nbrr0qwlj=q0*WsG?Onvt`T{=sffq4ljT;9H;6p;tDxd*!swP(- zUe);Xu5UA2RZT%hm-PZrpifVDC42*p?1Hl{5SbTFD&YvHZ%$KzMFoWq-Nz4+@&Zm8*)sin$S zqyB5^c8xVtWg=Q#t+&ht_WQJ$oap-x<~j*zJ{rmzF|E`QkfFcURt}tZ;!FoZgDva#TNM;rq+A z`?JdE&(0dZ9lihgt)Y+3)5~W(p*Sge-a!8uX$FBzNxFTftRfa{0m+UB@8yA&7Vpq@7FcgFRMY;h)z%{$`E1=(UtannIvcv=|1t6DLk>-PCUNZEzr~N&L7n8 zKg2Vu^K}YlK|KBSU72{QtGE{U#I7Ve_Q)aznOtMYuQq4NZ3umZ(;9h z0I75amYvb3 zJ$dwO^;5oB?ctqP$fC0E?k=lgfb01-B}6AW;b5kXAK_-7VE8#Dp-@GSf2CV1Z)9Yy z+HrKPBkrd6!5U~b$j1lSO|!I<`Ue@nHrs383t_DhFK$u(9Sbv=OUOZhDub?p0g@fb3ZyB)5cB@Y&e(NiWlSTQmR>ysik&2ej5Pte!61 zi7ycdAo{N-y6BNLKK+};`S%sG;G-51Erz+dWdq7wfkUJwO>!abyYX1q6-aB;kJ;VZ zx1i7cJKdgy$zjGfri_cKw>%=16nwRU(v~3Yxs1rPF!p;H1o%?|L%o3fG8u%`@a^8F z2Nhn*Oy?}ZR3`)d*;__oZ(!usKv7PWv1M^f*JJGM6_Ewh%wt4O-lVK#X*IjoJP=gZ zp}B7s2ivXj4OAK&*RL1RjD(rsfR3soxsMynGrE2`kRdZq<^&n1OH6BLF!Te4=H?qE zoaORi14%}o!H;cfWn^W>ixPo?IMGB&?&lM~Ml8zD)O76@lBVw_|!&ZH(=!8g-1wq(uZCIb7Fuzyi; z{|*`d-TuDtP~W}H#@Y-iTm?K?!^)-`4*5kmN?|~LTtI=vaemC74?lBbw<}RUYn7tvJf!r1^<) zaQ#7BlH6JyLYiDrmq~wnG?EIhNre}o9$zWeawb6)ZiWt5mh%HRngp(FXg(It+#4~n z7$-II&P25WK042LB^;0xqgU^feLmf8T@K zs%&2hw+U!5yfr-c`rfdp_`5J9U%j)DgoWSTHe7*M`-?JUX}`;~{s%d?Fj6D4eftmF zz?WJn9AHC38|+V7nqwQG;rS0QjUOKSUg=3-F=I4qaOBDDb}Fk;bd-5^Czn+6@{J4v zn$ccv<_<%q);D|4V4+@&m%xS>8w`7C!ublm5oDzdEBRjgE#sjCI(mj zs+~I$ZqbNuI9-Q;0|HRZMMMfvGsWA}H?P06vH;cvH%}jtZJ@z3&bYeX;G?AAaYV;X zG}R>l$F;Rj#ZN7HIB#-ZAPT)e%UiXIgRyH8BBI@*JXz&t79p8a^**BqA=_`&27 zIq(o-qJKMH_rP6%953|c|ANMT!nf@R(UZBZVZINJ>p3p^t|o13lKR$Q1#<@;uAIt; zC@D&eH}tC{+|hd*v{*elbrUaNymp?kTLYs|EJ84OR~%X8G6&VO5(ThL8vfG1(Am z{3zNLtBWrOBmG+f%ifD>n^?6P8YYb|U`>el1AfFSknA{*)&i-}bNIrC_aS4Mr{kGk zgapS_X%Y*nw25{mbq8o+1XPFgp)Ber;u3LGxpAW^6Li6;OTMO412m;*&Bq`Jq+3AncW%auBmZqXa+ihGEW+)*rDgy*<4p0)&*|-CXm8x0J zP0(n4!<(;wt4~1~_Ho5fWJp6m?Yc`LkDNtkEUC{3&c_8eE^W8g%%obS8Xu);IZ=8x zQ93~{i6(H^BCY)nnrQjPNbM?NyXN_@o^bd#^n(PixcyFU_F{#Da`$;UBn&4KRhz4o z$VFK1E^Vl)C#C(AAl-ZWU54NrLdZv0=iY9c>w;RfI~DGr8F)3Pg)ehh6>Rnr1JjXP z&F$k;`KjeuSQR8>6&Ehrsh$i2=IH=Q-G_25UOmiiRu$WKeE~8zw=Fg*B@q?|pN#(x z9-MXoiITm@-(~U=4@FWT?3cI1MUyIt*D+vT!uoEE1o5=LbS&Ai-hJNKY9z87Yw*Hp zH3>M8VaNa!;C%nCWPj{B+-L7Zxv8i#49QZPW-7UL0O%J(+Of$=WEu$h0`z(i&uV?B zN=_HgPcrBAE4qV!qRv}p>z$1oo9ft^Vy62tlvg)|BT9i_@G1e0M2?o2)?2m5@Oh9O zob2}FO7b%kQ@h~6Z~IU$qRNz@`&k}|E7D5+&0=lHC4Ooaa{xF@Ig}dP{Fs>FB8X?wv911h#QqN+ZVg2x zH9jRZ74G}I`~jF5b;;!OvurZ`yjGm!v|q2;qY9OCIt`0}C^^s6SDf)0ex$ZClxUvD zaYxmA-Z(~!jq+4?C4~ZGNNcORlJM5S!~#E}?(6prkr*5^sIA^-EoQ3bj)GCV&3r3R z(6LUO0@AoOr;nR3P53-i(@o;R?o5Y=hfmI|tDd!=7o6Z-Sw}d{1Dg=eINNHOYVX|z z9r7BNS7s7cu$iYADIdY3Ry*(IAN=R&;38{coI_!);iM3d*vzEQ87*-`*Cgo|#Pn%yB(u>s zV>g=$&tkYl^}B|NxBu(~z#i4TuF>ipVDFV)-3hl*`K|I;+s%$usW{)_I}4jBHbW#? z_>Jph9Z^oLk?aj!B=-UpySBQ?>cs77O#8lhW}Wag%w<2^&=i*#KN-WL^w=hvmaXSrpBreDxzf2BgD*W> zQLSFbA&CbUeYM2!2$v~`>C@It|Fs&v^Iz?yE9rWMeYbM8co4cTQ;u61Wg&Rjmd?&vcmj|MJzo_VPi;hjmtTbh5e>m8mvnvt zL)*vFc`y{243|p|VA@Kg^+gTIIoYvKuO}upACd|WIm12-!8FTYbrr*}D)$)}|73yI z8X-m~nzc1JuaZwTj+80bKV$^C6<(;aij9M6Hkhv84 z9le|jM^+C5e^@u+NR!~48i}YzM;;1m$)MTC0UNc8lhkuv3Br0_hZ`hf@n@P@z5mDt zzF}5Eh)5(xZ-zpge16XO;cDEnPqF8x=VKdo-T~h9q*@9$Qrxn};abzs!ehH4Z$wR_ zWNkM3b=Ikj6vs_hnW4Oo+zvKXEvHFav_97vk3jp?f>-N{08Dzja3uZ*1B}EfsIUuR zFaG~Y09R^KHMsM{+VzAikS}ivLZkF*=9V>|;G5okS!!0t19~9|06-Fv{ zg=^`-zgD!Q*d$|b+y#D}UE1!NjK)gZq&}%E0JD!!Ov*6}3iGEpMZ#>FSL$5W{IW^+eF%6oh#2l8M z?>AN`2ORuzW7+aPoAmRsk4WuVwD5ff^f*0ONQIbKSU{11E4nb&|G(S(QJ>U=1e_^` zXUnj^ND5O%G?cnLwtxmRWPKhpSXcWfQVg?h@p2p6fKc9-PIR~5N+cDML*K5%T}~0&5<))9hlcw$ zK-e@p*K-wJ%5P+_1y7%F&&#BMIHqP(ajIC#hkht82I)zl;1 zYYnPSVPTZNul$ag^+Rsh>7?q3!p$~-KnaQ7JDBA=?`Tl;9-cP(oCJ347I7?qY#BqK zq!owMMu={YU=c`MBhjaEwnU`UwSlm{mplY&7Zw$*p6@m?e)upfAt?curR@TtJASDd zutm7<=;&A(vWq)chi-vJ`N<)ilIB%90NGmlE<5kd3iDbRsW+d|NJPTFfcHORvlQDG zIYRWk2;ti*XR-vHP3b0p1skapgCL&$(eBs!D+)Xtt4`TcD6C3<$>Foe8{-p$hJtAz z=T!B2aY~!lonLAtyf$?_i*CA<0#+ zwSydvpR2ex$5^cBYgdsM!^JC=SGm?A791RfB;AreOL_0Yn7X(bw}4_H32D*aTRY$8 zX5pq(YV(J+K9+)91kaD8yPbWsdJ9;4Ps{bT!dtnpHhh6w4X2~$n~fL0Gfb48bd`?% z_Q2f6o@J^yPaAzekml|Bp^+oSM%~|>>I3^Esw*m_kiM%QiS3fH+=D7ARfh25HJ{)` zpTGe33%3ySNhAoOQ8Vt#1hSNHS63M~A;c zaO!+1FYA_o?L3CgfPXs1MK1B{FiAKdNj-TsI+%K3_$0}zYyH+7OkF|{M~!W`jsY4y zcgTkv;*uylpY%<|p<2j`nLien2$fgp*X9_A$-jLwq%fI;>U!z(7__mCi-bY8LQQYt zM;!-_=laSULpp%s#fbCW@q_~y!Tk3H>#gH*i-||UnlJd**VC!#hL`(Z`v;O|r6E5h zxVtsGx!<2Ao$pw1mjxYiHahBVPTEHSxOl>u^BG6uNiJcf?qQHfR5hPcS~nGh)LN!W z^%q}=Ws-zNg-)vM1cF2-9hOWn?#uH{8qTQiWXGyj^vtf!$yXE=!(i^Ls6`BBY8HR7Xaq|v4`3*-e8qUjnyYm-X6#q6V`JaDGrt4w%?XIu{ z8?0fS<{WQqB{~Ui+;vfeyLqmPU9{?)m-i$AS9j4ik>#c9tw=5LtiS?VbvqT08JA_n zOA!`h6~lRF9Wl5p~a(RW;^m4svpY55o9PFlCRx)wT)FQx&b|zGsi$y-K6x@HR6u+gNc&&t4u~ zCkW+}4+>5*<$yei<*hzGR>W1<6rb+to>y5dv*UipxRjCX$bds$M|+S$qNiVw z>IgubBgXiMfq}vQl9G!&B?Y`Wa<~2P%Y|1g+Lth&KCxt93XRQugV;#*`KDxRZpSS8 zmjvZM`%0JTv~w^9?P2W`Ay(rfnOA3{%ctiO@UB(!U<&;4@$uTSnUZsB7dsQvbIjQG ze0S2+Qr@?3-_3&z%V#EVd>eLjn+`?A&eR0B08XED@3TEhPtaMsf}Uc3gc?w=9u1&b z&yb)SWGR*uEmv%+T-nk00VrI%=B0~uFsh?jdqbGK+Jr2Qyf`}UHBI8U!e}czS;

Mk)u*)H~_Ro=AVEw3l4xFvl6$T?M+>26j)8cr(U`rOFiMLSib z2zzWnP!{J{T5sz(TCzW+A%@3?oS&A*-i)ew7@XFqXMPB3Z)FUv7FQ6*tDK)mtG4R^ zyhe~_7TdeE=!cZ!F^T?+J6QndhP2VWoHJ>O-63O)^=sul0<*f2lOh}1JRabjnm zuTvQ567z|uMj+?}WaS@;eFFdZzYsmrr5ISK+*@zWEI^yW8D3ZNrgy5?@2Jxe(misE z;6xgg415lXW4VvBhR8L@LQyy*1VxJ?HMDh<8L{BIX%xRDVXD*D(2COm6{goHlSXb} zw=RPuSF7d?ZQS`lP7e<`K}gJmPOJASFZWK3bNX>$Zsl}|55ok!*FwlHJij3{f*Bj5|P$Eg6 z0}j^WP#ro5_f}2Xhsr_qE)&Pwf_%8a(wO73_wdAv_!?$3aRcS@+-I?mr}65&`c?bd z6jS?}B3NM|v#Eo(PeN@>SSx3VkZz{JdZM3km05k@2%;;&S|Umg0}eTdqACKHTa#cV zCD^_WlM<6W_-@k-TsJY?Czq12JCmyw>;YHDW&W9;@z zQf#I^CYU%BXN#X<$e{QzXZ=#(Rhp{_)4RAKH>($8q(1+NK#E9XxzW+fkQ~{QL!oRfOLVfyl z80tAcaJZvyZ{^{w!{KG;;thUiQ(oWTQVxgoFsjP~1xOLI&!%~840=w@&TZDJR&@A4 z@lpw=mX;=Up9ocU5xl&7FtOCs#n}-nPXN^hz6G0*`;~Pm1<%x+Zb3p`(=zgw0Y*#d z8CA;i^7!4~f&^~Mz2?uYI4CZb&YB3Nq`i0Hm4I(pN~WS$SIEs6?vJH8kNkv0tEJXo z6`MXdiw`-`<-R+w$mq7<`UG@~@JB0myF%bn8MtSj0`kP>rBS}T*BsMFYE02^ZHYZt zS`vfn1;~-QEX;au&pf`51poLpJb(srQH*Rv#V|558tdwo!e%y1oSosy+byh&dfhfQ z@4e&x4?d=?c_@e$lEzYVt%=6o^CJ{Vel`8}LQJa((CSnJDkmQb?z30mv0rEc{6xR^ zlWXeC+kZOH?U{zNKHT0XgFLz!f5)_TAGh)ig$Obns=>T9cKr5&?!d@VbcYO*X|{pb z3<>U)m|m&Oo6vVG87j`3oB)VAy_+e2*@3WFO&i=q2GGL3RdrxxgtM}+g(9F^qP35K z-xTkNK}Qzd>e+^LEZz@xS#5+)v3sG!R%2` zy@^1-GFIg2I|dR%_P|dzTQ#rS(+;{LGW2d8Hz%) zMV=D%kH(oa{buM6(VBjum@%|CUjY|B#zHwLH2cuY4O?}&mr#j7{Ze)z0+3d#|e z)9?9p;eVkTcjdiwqEhe0OwEh(kQ4(q2aK(Xfu&qX-e1pleo2o5#P=!2=v;|&v$|{U z?KYy!$!2xd5tGmoq=0x7^+?&=T2k&yBfI>s?oR*2IbI#Bg)dWiSkozb6r7k;Nr`8x>u$ZeIQQc?_g!H-$Za9yI0Y*Ahd+VfJaQux ziCw0K(3T#IWpdZOY%ldh;nXiYEyRqsvCAB2;gTl8^E6RIN@BmTHmWBp;byf%l6w46 z$VmO-LLne`&5d~GG=>XxW{q;!$n3Cs;#oI#J0$MQnLa=0_~c}%cZX25S>0WjWS_eZc?&pFZQ>1PUO@VDmM>^ zLJaePmMrz-Zzf2tR2s^j64pPcO`z;H$Bm3gs<5fx)fJul73>wh#ALzLHDU6a)`VQ| z8Qa*?`^V`YS=* z{g+B2*noy#tP5?Pqf*C@-TL_Q5smPXH? zZ^*fuh94Ab2kcLMT;VSp5?`Pa1#oe}a;qN`3w3%EpW4NC_q{C6nm(dmbbeY+S^fYv zdJMfSHeZ&NS{OL3%eTg3^1}@s(aO(G`q&#)G{3GAZ=|kMyiKLyT7&+5FlbiAZ zs%hspmf1KU3iGMql8-^W7tlSjzN?A+6V)5{QIiU<7dIKl_?s$=4-3SYoZP(1tK|&G zhQup+eh3GWgbPPBl2jTYyP`?^g*Q| z&;?LsYG`D;Kkos+(Wi%+LixlhvQ}$NuO462`Ptv$X8rc9VIt#PJ2_4CK=69VgRML? zV}27Z6)M-u{Y7hQA-<{U0p@@N1>o@55z+LC>(yFRwOI3s5WkFuH4 zo@ZTcU&!svXte20o!SwXB!89rzqaY$RTVo1mVFq&kydQGZA|x$jd>!(FJs!X6evnS z1h(q?m37nDlH>Eh%gGbd+@Z)h&pPXL@7#b6MJj?K)%1o?1~^k~P`}lh5>4J!;>9>d z4QfqCkJ}kl_0{t>$${ABH6MR-%XMcpHZpV&_nJolIXuBBh8omAyF5e5S8pgAT$9`q zxEepUk)@a+SmEy%};!;di&BY;?1Mkt~$zp!Ul7i@>tGW{69_PH?FGw0z>Q)j@2?_He$TjT#MM=- z^*?-L*_X^F97mUE)A`8;%xLKCW$4wv*RyhNjUDFu;fPI^V zFQlotAE*$rdGC`^sX;BrM#IS(e5V)jhg+_PxJ6H|@sZ-v-}*w-KzP|kl11P=j&S0B z!PAf(e4XF1=%XA%pZrpj_Q28HGArlW*}QHDg2cOm6dvSBedec+_m$|891EjmB5_TP zuFp4g`OZ4~(p5KOkh$}@Z?N&-!5*yKkPe11QrAr43+V-gm88hkrOT=e*87JD&aQ=Y_sF$Xh8ZyU$Ax$Tp{)lzl^Dw4b_cQAcd9*}wKy9ykB#0A^y&usL5YQEqQ6WLe&=N- zoupH2U`3Rf(TJ~nPON)jY`$j2s(a5lj}mDtWui01piw*`mS}%`Uu3t30BR3;dbN49 zaRTVb%>vR0_AV~J3WP+2yq`S_-7D^nL_JL7E5XercP(}>)vx%3iYLROu=@@>ohf09 z`Iz6n4U-D;0t1hZmib8+F_`lCdf)D&lhLhiBNrW=@t$CjWh8CJdki15q-7&Ow!=jl z6)5E*%JT~3ylAPZ%gdH5^UxRoy{|k1FVyjd##@?^G^29Ne4|$C0G=Gb$9`DAMZ)pv zu^fi0-8qJ`I@9e`%XYOWNWF<$ZiK5KKv5Rwe}0%qaY$Zxt>`|Bh;OsSx8$Qib79qw{A;Pm;42E@((V#}sySJ=V^J2V3fbCom}%+f>C zTS!#a9xt!D%r5%fMG@!7ErvS%CAZaWr`pp68BZN3kM1>jE+{d;OEf=E;SDzxXk^Y5 zWcj}z6C4BScz1;~N{7E6IPVgWmUe{i&+&_Idc7=0OMsqx7dFne$N!4f8}T{pS62Gp zw=auB_-ttj2Dg?W6kqUI^&yIhM$(S8utr5P2ydjp;Mr{^%~Zx-M=`+{vf4*&H_1Ax zhtH9Q7~`%Otn<+mW~IsgbzbPy(srXj%cgWwOK&2UE{&q*021w!-b{Q0+oW*8R&7CHWmDs^jq%?ddA zI+z#pw@+~0EFBJ;2RXd?)WAJ;g*_!Q(Aa?2g^#3GIMp1#`LE}G@(A3S@?OVXh&ev- zoAF62U<0BHKjKFYl9Wo}*@v8yM3kc0o&?ZFImS8+rRW^u@#brjM+k?&5kv7iD#l*3 zPBt?Qo#uA6wGmVNY2xFYj~1VLaP4}w+f zQC4-#NF4EakCCHkz;U$NOLed7YJew*4nao`)$z7mATz9~hD^&Rl5}A~Q9Evk5MdMC zwx~~HX-l?wb;81w!w1T!h`pMzo`VVB^`|aFmI;zML{?g{r8On#9%oP`XnH=gwbJLzdHv;yVcFo+cqV0|^9ns|9IdX;e7(V@NYZgs1tce|sa2K-29bHh7+X{`#xfJ||2Y|W|8C>H z;(9?q(Bb-LpH#Q&$|7{3onQ;?g!SowDC{!h-+W^jlzhPQVzbE3<;mjC3 z<;aFK9BB;(Z*$y=iH$Y%_is{q(Qp6m9l^%JcOoCRR^#Tw)S4Rj`QwVIh7z8#nf5SJ z(&|h(|6`sz%uN6D^Aq$kN@M2A_tgKy%meXlU|KmNM4`8h3nd$T9CWY_o5sDVDlP45 zXcUjyM^!d71pRq_L_KLz;r>j3+C<#|Ah+zU5AN?I$J5ZpcuW~QYNltXvUB7S;O8|Z zta#^JpP$Ct*MT5_KF1aIfW0KdCHz?MHm>%}1-xkFW!Rl7p%;fqN?M4|^8O8jGZoNg z{h+2{kYijduZ{7bs(Spm&zR04kMA`LuWT%%%n8u|9jq4U;-S&#Dp&Ay%FQmitobA^ zJ~}#@f#(pQsJb6S=P;|D8?T3(R9iXuZkvTF+roWxn>tmW$#< zQFZ>9Pbxk0InY|(6(ZSDFg7kZPT#KdL4-xZ;C#`<(!ML9$rix{VA}S`ZiODWSY<9E6ak@K(%K#r&j*#lgvji&wpVV@=HPVt5E_V%wKsl?y`Nc9@uNoQPw=l()X1r_gHe0Kxl=;R)-t!_HNDA#9o zX$t9|A_95f>kng^|2r~$CKDY%8Vc}pTMgBg1Ks09Zi1zY266N^jIJr%q7(+F7d^QS zM$VGtIJ88+yv=ISP1~7t34)HPJ`m=cwG`yi@nx(|;*bo)fjFF!h>V<2EG&8CPf;Rj zDJ@&xa{LO}Vi%Uid=naXq|ouosV1U zo)VT-3`D4*QuRi+Eggg>B-xPFpNFnIjdkE^Gzp~E&@m1R{EJrcJ)%e1t=WhYfTtv~$3ieN|c zN=sRzRqxhHUzNDm*i-6w85$Z_b%wCgGSb2ehBJ|3!l7}WU2B7;YKhZ6W&ix}h3^iw z^UIL>Qo?l$P>~%41?k zEI9grNXS+81pXZ4-g14ICb5?S=)+-cReJhUXEOLb{cXBeH-u{31F6Ow1Rl>6iZu{@-e#FM!T1WPb_W8jQ( zaPS{Y{*hIs{Dk?0L5AS7Lja3NmeKh&;ZBuZejd{~C{D0;;KpOOjT+|*pyV{X2BqD5RwWj+> znoyKzI?CiARlAo<6T+7yKnMl5 zryLCqH%XPI1hP1A-zn$9L+o^1r@ltgF4g1_0fjp>Zdgo~>`{FVr`pYIFPEO~A# zYuU@zwf|2TWB3^zWJnOwMPFL}Xtwo$ooWHZrY%}*6hX)~y=Ic|S$qKz&B=_%I@W;O zZ-b3l(fZMApF`iW7TbjBA|l0#leqZ@pKmX-yAY_?fevd9q!Q4#^i~?urn>MuYMEmKRV z2^>_MSgKk|l&nVI?8>a<-Jpb~-};WTA}&A3Xg_P^cg~h}m^O*IW$v|Wl#^>Y?c>l@ zdQzP~xU1BLH0Mt?<;sn0->iR_ z?RehAch%8_-(3BDCc65HsTx(y=<1Jz%o6#`ys-WLU#1%_JAqS4Uohw{=~WhiJ5+jj z=z>L?-n_TLV($s0N;GWl%urh0@ehrl-B?NNb!o;x&e*{VNlBCrjvf<9aeY5TV?-j1 zUT#z;PboEVnj#I2>Nx7JTYyJNQthvqYz~6P+eRl&dKkP>niKHJ?k>*QWnOw{@a&nY z(MRM=0}=G~JO1P=Yjj5c#btELJrc?4G}8bWK@s@^Ib<99U+!B}4(Abq-rmBuS~zNr zmzQVe&!2qmk~)?ld}Rrx@C0st5+B%YOIZKTmG^zmpGulTSWZ!9)n4yuR&_n@6bKIFYzQ z_W$hxnC^r{eT2c6pN0bmr-1s&-8lzd_HP%fTTPc))Go+Q2j8~J2dw=Qc7h%?1*{H^ zWrO!RW}-S@=CIv$QCTrY&W_r$kH7k_8kvOX?+U#m01l{Ym$Ek?XfrtsK6nqf#@m@u z8srP=$`WV}rT>DLOo6*wi?sBZjmIR>mtFF5qquKg#-b=$5%lfKoG}c~Qk8}#hoFD5&r%E6k4kad zYvcbiISzsUd#tzqKGtU6GV%ov!O<@c!1vW^Z3h3h+ra}Kr`4^Ww<1>`BRZLdtXY3( zKL45c+6OmbdEbaPLhtjjCr`?0%Zt*#PSp9~QS%m^Fb9eo-8Iex6e>JvobcwL+_YLElLN@x?;SmzBt$JTULY+k{E)%XYd9G@7=yf-K-*|Lo6Md}r1x&I5LX7pkh!WzS$5^_b2r zmBiMAV))FlS8Y+ui+{WXF?auOkviu>;0Csi2hMU;pvPH!;Ag1lR3qeSvPv(FpO)9k zg`dn6bNB2|hN6-p8U5`UL-oJ*4pZa$)SAOwUQt2N<}eRbv-Uu{QddvU-rZq*!kqtQ ztXz0xTDj`M+QUy@-T*oTeR*p@#c#HjxJDVR%rA8Z!m}oV&JkZoctul#e*W$qeZfDT z3Y`?NJ`rQq^+Zs2@C5Vqt!tjq=&&HOwm(QieJ3Ktx?n3Nlp1oj?WE3s2ly+!^iGG2 zLm*H#C|Q#b7b_uj|INJnQ>^kO!}TAPOtg-}L#vS4I*1FeVz-_x)#bFvSR54t53D^ObzTg*AEq z_{$3SqGIg$3Gj*(txKNZ-(N+@FAD?^2H&K2%vn;5n1fjAD=P`f9C{~EZh2uPxw*f# zx9!Nb;S=xQ+ZjKzc=r4+<}UgoG&^4t&L;ys0&q_eiP+sI?GU&bndl-g`COjiQn%PA zi9c7d|2k~*)_7^y5B}Hx^!tI;fQ5YP)Gq%DyuYEs{r6P8`pKty4UCYpz3=z)K2$RV zLGPJSphnDdhsj0j)y*9%$H#Tjf^EBu9G?h{3jvf}v*VtU=WS13h01;gLEaEPBj)-P z;4g-g1+ymjbPu`4CjY9md-=}7&RlU5wXY*lBvCV+YslX4XoM7Ky0)7 zPlV|04RCq8S!O(jKypu1BVWvdDgnQa9Te6`1yIoMDfc5w840P1dZLxON7$@i4VdXS zgE}G)ZGVS^MfAO(5>(HvdTdJXPtQ!MKv&r!X1Yq*uf%6)U{u-riF4RSS1V*Bd|U^d z0e(n!-m5N8;1a;i%R38*epx=PGJt)te{WwKb3)=*>Q21Vk4^(~prVdK>X?X*;n}gt zd|%%i#ig01z&Cg^XMg|6A7sH{EdXAwwkzGQIuf`L@~y6w+OL8!C@xMsHm-r^@E{A6 zPcfJ4piYHUB;B@v>6OqlKYN{_VFVlGhO30BxVIa z&`0w!{<$wMJgtYwGFMoj9ffjGCnLXYp>_C--p|$aUcyl1_UvQVlqPyv|BOK=DzeDg z>$A0nS{U4@cg`mU7b%7r18R zRK-nA^D`2&C3*LQv>ntK-g}>kkb&-TadGkJ|CV(_Z|~K1UEoD3=YoYy2_Y1VXIVs0 zltQqF9KI1#gY!gJS3^lj+4LV^t8QXa1XTqKin25Hw@{)r=H40#7x*{6v)ZYFfyJt%NH;bVXbidQ-U14t-Sr3 zYCY`i?Vrt%2JdRZhVolji;BMgGfP-i27;*L+(}~+41PsEFnIw)3#CJS$BldtG;qv; zj3=tM_c_SX;sltwPWzfU?J=kMV<{U-akrC#Zu8_F>}+Cs92Gp^4kk;%zF_seBPb|% zvNJ8{Ni)HG`gcr0NJPYpPwKqYzfg);lD3?;<*Y9xH8Ybz!oOkCXE;6dnSoIbn~wjH zkkn?&K&P;T#0E*u`*J(jtzQJFiibIDlQcmIByhTjMsOY(h>HlEpQR9$S=srG)suZ< zax!O8uR#-T6{lK{Psj;}E*`i>@xUi0bQ_&ek~0lrTjJW_CPo>*)jOiberjsb9$SZY zfT^dtod>6;lwCLI`NzI!jERbxB9)mtJSr_I83e?9ibbMj`|uw+-kda6_a-VHHa6^sR1^DNx0t6$%C^4# zfj7-49R1U>1=xYy$5r>-=oQjX`rV$5A^F0I!v0j5?<)YI6q)MjDZe^9(h!aav|NXq zQzIyew*|5uw13t5I5ju*H1uhDW~K)uj|8azw5g7>c7sPoy>_sQ5E3U#x8ENSA%VW4 zxuQV<&E5lUvF(@=Qw-7ap3k5Fg!O1N~{GWck%5-iT)p;>2WXz1Ps zi(wUypL4*$w`I$b7ILt)T+%jHEQ%2$NEhL()@K3 zN!6999REt==TfX8Kz>vk1nSMoAcmKGtT)L@XQV063!Q++gm z+>+A-Y9Fh6V7|vp)?Zp3+9Z{aoE|iNh^WfbS6cB#C1LPt9Ygz-Jm2#Nvj>MlCx z9<#1j4>^z5>eU5unDuS$qP15ox|oN%Lyqf9)a(;bJS=3ZDGL65;L>5L!xF(qZ~f|x zCKqRjPwHz-Cm12u)Yb{d*#P3ARxD#$Y*G2S?gKHp%JFI8h)@rm_rNekxY*shcTWaI z7VEMV$c}#h)b>~(prLZ7HsR^n`0_qLj-EV3Btm0eYMvo?#I;B6>6)`XzS-wq~Q|_Na8hPdAY&IGTFKZ#qIeS<;!?Wt9F#C$n@S|@u zi3Xv8ovlq0N6c6GXF{;*hjptx9CIyGH`7oXl;&!EX>rx##~O+ZofeguDq(A}%Yfz3(J3w(9idy#U8yeH z@Is}Gooo(q7~;Gf?`mY#Go7A9!*_PhT_w^h+dKqzp}pIM@BW!1*OLLpLJPktWkor( z;2hO7!{C1Ll1Z~-oXEd`?0l2&aHh0(5S?xwbx%nJ8fp|P!4X%$VGskh0S_91g1r>T zqP(j)-fC87b99$~aOfRFVN|2mR2H- zu&1To+_-S9I+6w%>vCx-exPNMln-hX9 zAQ}nz`u5w1@A3s5hiP<4L$;0%jcE%dU7Zx6GQ~pk&2<(JqVs6Ivr}X}GFP*k&(-Kd znP%oEByC8BF08_0HpI1O9FlI8!Z;ge`hw#5*P~)$$Zkqj#BOHsBNw)?m#_lM*}m>- zo!`FBA4ajPu{D$q3RE-zuCF+wzS@PBGRaIpAFynwi_o~ft@u4L;SfRqv-p{nbCc@v zhj+L#grqwzf!8EzTJmBWPth#GcD!bMleE|Syz4-tR{q&{q+#hsT0!02*aw9B;QJdJ z8xHThM>(3cY>Pf}bTlKchmI0Mu2wlaGX4JOExt_+5OAD)I@@EfJ2#qQ*GLKUR*q8W z0BzkVAI0W=ZB_{o|bnJlv zwf;+vwE!9*nXpNnr4$1b3BqCrzt75-)8RF}u%}o3C0Frot=7It*h0_O;IlYcklL@G z!J`62C2g&HKN*OLZK&jVreYRIlUkjr7Vg+gER6u#el0@c{7c4_45ECFh`Tmw!#{CQ zX6!d_TeGxRay1D$(sYQIc&R%j#e+8qbF&pZspbWZVo;nk$jWAt^9sH?joT3+=k+O* z;X!&_E5X9Iz1b!Z&pJ^ckBBA7KNY8&uaphh&XgJ=DmDo-9wQ4>z7UR<-AD`MH>tZ zXXfa&7pIoSrgT>|_&wm1MexfG+>BH5op6{Q{oG|D7r4Hn!4>8vBWJj#g z0do)N4C1Zlt-Ur8>j8j%xXfQ4evJ zTlo!QFqIVWG|6NO_KrG%VdyCiNtxfDNw;EA-Z77PJBhDD!!^c4tccyU*S?pV6;~^a zjMEgQI{r2nOX7QQ*NrX7n6SEm+7_$6=l%c8lXldAY;+-tumT3K0W=4#(gL%)$Y$NF z?8JCpz3K}QVVWvY@G|_2Ndm_9vpj)vm#JeZPbGF|C6@nVB%P9tdR8FDi8AMx$)~Uv zvn~m&c73wpD9MNy6g?b$#P>+1=OsMt@x=NIQD1Uy$>ZNMepuz2f`6aT!m2&B$`+FR#cUTh@#Hr_EOq&KFRoPcDGd8@Efhwz17N(A4AuAiGfH_BROQTh>aNGM|+YH1X5 z)_Kf{7>(D#YkPl3ewzL;=uA$SBKjf3N*x-TCS-p7ZDO7fJ9 zb`_8P1wj1lbkRPger)L^0+PxT+@UQUjk?`_QMdI3S@PT=549JADioeBu=ol-?jQ$BS2>|%2kXZOvsu1kFS%648w*z!HWYWv>eRI_U_-Lc>H}_? zuTBGQl1bf6!{U&aiu3dHJh!aI>c&7^y>ohW;on88ND6H9Y}n}xj{(Zh4W$CsxrHJD zkjL9i)H6MB3U}+chg3RVqcW{`(xZ&l2e#*XT=$(rd6c^k?4>=X&G0a8@5|5-kMDky zXGO+X^A$w&>q(Wg0?Ds?onS`_DvtabW&|z055?ldQc7xiN>H!^jX9+v1L&zX}$a z{)Tg}xj9Ecx+gXlri6Y!XC8qU@U-wtRRUx8WFze7*yz0}?%G(R9OdgePEJUCsfLuB zdF2p35k8BT8=gG+{%37j;D){8#yXCr3cg|L5C(=>xYM&=KhIEMj6NVq$7BcWYVZBJ zp>1GxP`VtL_AMxUZ&EOp*fSD4kfwr4fiQbtQUte$1Z{hYKxd$CjXC}WkPcQZqnn*K z4GTQ8vw-v@XF3r|9&}m2xynpE zP|@b}!v}zqdK8ARc=dg^!Qz|$Wjqk=UU^x_eD_VfoMrkLs-PzAf6>u=y=^ya=e0NI z9gq@uzV_g_oOB!jNBsl838eUokKEE;>IIC9SafC327=g~VtXx00F?-* z>z9dX#89qkHU!*c`X6qwXO=~)vlBu~O589VN8(m9b#5>DEm3P^9ZoAoYKN;{%Y0nC{ zrZLwKA(C`s<;Q>E%B~f2(u_63GB?EL{gq8I$3x6+^hc_=LF9lHzUG|Ld|RZ@GbeL>Knlh)99bW3 zvjQFA8jo$hYZV zbMKQOh^yI_YcBb-jQM(MML|NF1gA6Sv?9AA+bVS`QBR(_qcT}gj;4avC!QDUOGIaT zMyWAnxU^~1VYd)L&AMB=6qE}tQi~1h?%o-U?OPWBS#1_ivDS0Ze>mh-=qsy5tGee@ zxqPwp=qajc8&0-v`dI9K*{ANbGtck4sdXkp0UJ}LA><2Q8LQ{RVH7FtCG|DajM8sg zvPTBdbgr(Ii!I0NhCE;3)lF_Dcvosj!yzeou89BN&VuaFUvM_c(Uj|j*DO`DWa$$W zcPxOne+O);Yb0(!%l&4-AA8w9Z2a;J5INXH(zdf(r{+a6F;VLX~zUT0%j*D!?Q2Gehy28#$J4ZR#i8i!BQ)yeEcbX?4D z%}uX7qK&p-EQ5J;4(b{cCNp(@v|&t5?R$U>f!j~Yc<#|17L1$Sw4ZDhWYr(-*qb8u z=B1pj`6p=zjb)3RW=2PWQp>b4Z+{oQa0rGD3@W4c$26qf_4G|m8NaXK;;9Wr8%bH2 zHCF?2dxRu~@2Gk=aV)1qL-Pi{;~;7AS2;7|76ET*1K>78vF3djGYyf}Spf%PNb4bU z8JlQ#sd>+t*4zH8hw;O{1=ueHm8iDY(DV7K(w>IbeLD42A5hu6Bv3Gl8gBgy5P zYG=}*&F`9Qe6Hq*a4xc2o_qCIDA)@9!%a=$|HYU;!ee!S%>b3zWb`(JzvT^ENPV_$G8~70HNvoc34`5l+7Hs#Z#}}e zgY7vG{)hZ@9z}Lwa>uvzt`p&xRx3_XT3)m^n~mJ?>7vZ`l1|)PBvE4_?UKffSEnir z7nqA<^xk8;&?5Ug!K3xX!x($I-wZ*RliqH|_VLq!iuK^;tr!fBEIS=i(8QQW;F{I!Ye~mDjf%5=^q80F7#V zXDa~9SJUP`#*q&fI=<)56aMR~QboABbOY)!(-NH`0Zu9h-J2`$OB!K*r~9F&S-hyh zjJLK}g7E0rEJ>FFTVW(E{ijG(BGHz|#RA68&BQ;Kpw zITD-n;QoR+IUBVI0DW9kptzwqO!Q{cbILq`;E4-roTdw#v}~$>YZnf3{RnY*1K{BW zBDVkPsQo`X4SFAs`M!sYZk~mT@nvYWy&x3&O7@ebX{3T`f$6i;NJb7@%h@uK4C(b* z80pRfSZc9KW_BNO2;8fu54REj_P#c(*pj3w06Q5F{P8qGr?tMz&lV+*+G)9Nxsg|| z_HOjpO$~d7mKE*gT&>P^>YCFT;8#KYxOw7|#wyw(%5)VQ;0FM&J=EkCjKM<=^bUK! z`>g!Mk?-S(96&kbG%gACo25p|d%_?(3dv1|S)MwRm+c`Pb0!p3L+N6{!2XbArM#i< z2UgGE@S0=D;{S1DYCNkYT8OBY^xHrB)$vhmmdV@%VWNh~F32IA6+1QPNy+pz%o1PB z?$lf#F*SLt0n+5gYc4{GJo%FIQ?2)2=^RssyM_2s6 zEtQl)BB7|h9gxtc^31QW)Jr{Bsw9!#+qw={mQt@Dy@9va1&mahTLu)=1Y(yA?C%9x zH4(8zN2{R*p#di&ncywzAh-LAVs0N^dD$s|^dem9GofzUweoM%kRCUm(mnTH!NL`6 z9-uqu{ExxvG^Ji1?PGGi$NY$wKA(8Qcl$SIOU$TTA34Z+FA7!^z06+L?RL8xT}SM>ogUV{8@RdX z`F(gOGi)j9>cHTEs8sN7&p}f0gQsf$XqgeJ0@$_L`S+Oy82q(mgpics-(dsun%{wY zr*%ZoB9Mi0e6K6u5r9^m`N^Kdem!P_uJ1uL)gPd$fb?yRvisTk+)lcg1QIO7N^TVLg#0_79ay{)bwmt{q>vG2#X)Rw9t7cGA~~? zX|GZl7?#Cmy;foAc{m`PbT>!9m;eS2ee^9=K4*7bt^bSCs|MC#ue=xpb;PIH|NC(de%> zZb$C`8*uIRrH5t7d8K7zCJ0dX%r8SCe}=$s!{RJ|7!YROd;6jQazuc4#k9$8PfNH! zEappc$4A>WK|+_ahlH4d}A8_&i6Y&!? z$-28Pfj_u%Qj22;m`>EE%zWHfAT{>XVEVJtj?Zx6eA^rejD8%Y+fg)$a-=_hqwX}M z6wiWQyx9owyv@5uO_UKVI#~-4XpE9g8gW##j6m6A!0?N)7hTkMr{9r&ukS@mpixL# zm)?2|o{d2+CTaHqctzBfk+XWHUL@a$Hh8`E@+~1mciD7wba;YBxK)xF75G0~pKtJ- zU1D!2#IK)io&_f=?4Oeh0KX%OFVP^*2VRVN`0HxAeEfAE#kn>j4ZD6oP zk!$#N7@ehL%(pdG->Ypjk0m!ZHw|v1N-U%N$9Lrc=NQwu>4YZ~W}71&Z{K( zzOlJ9?e>RClZJJg92N{n-_yP6T?x2@rCUdPV%L(iMNam!+lkA)cALpmJP7lF<75t_ zF4wX_FKSuG1c$}#p_XmTo`?UCE+~iTBfsXdj=hbUB)IBVrgpR8e(A<42WeHIT zi;*R!%c4G=bEQBeB_{#8p%ji?bu8#Ubh1?j^tg8Kpvldy4@Yr#p6 zZ%l)lO$^Lb%kI2~1}5g=bF~xs?%sGRob+8gRSx>0-h8|!mgD@#jY zoI@3ljXmSY+{Nbeb@zaefg9pws$YS|+b@}aBEh&2CR7QN{^{Ii8xb_{x+DCZAGJ7z zn8WbQx@X{LbO3f3XPm1=VyeDo>0@vpbkB#Lw=0<#AYeeKFQ~zydq~4L!QI}3f|E`g z)2XQ`B2S%>ii3;sB5K>%Fli#Md>;+BA+4S3e$(q^q@k!HJ-smT#sx@h;Tqj?P3v7s z$(@+8rB?^CeMlrQJsagB@-7!mk86OqLIT!3KuwXw*E% z1>YBxjPym=Mi90?>t-3XP94f`&^+dySeM~P1a*7iu+gJH(x7}(MG9PY z2t((HV`7hL*QE<_BNYfN_kfz*-OP*uIa)q{eO24IpbTjqw0KCQz%8Ih8#1Sw%u_!W zEr#j4pYA%xIIrgFTE!EdX!b!L13F1QYfjGoT<7-~RZ>Eq!=|7qs%jK z+B0XigH?5M9U2;_=fi^Kx!NJkr+bYP_&nnvsouCk{P-2_F%PxXB=ll^Ef;odaNqG^ zhSdY7j~?x~zR{B!uwgY_>dNE$qESEr6mxofT<`l7+;h6kZU^r7zJE?(_Uy*{C`&jD z|AF`@bpG9GU;jv@uLJv=`F}LpX!;Hs=H=e zAU={77a-UJ9n-P&ZeOmyNvi=b*nG1?-^hS(eYfGml^P>OX;7S;S)h0D+&m8I3En|S z4*nK}`3Ek_2*F`K@Fh^BTrgeNh%A)5f*{XD9<*N{G~6G?g@eN86+FW=SG{kVPWdR**s?a3vAYig)g(NZQT&iLG3lx*K_SK+d`{_?b(RQ`+e+asc=nCy7DaLXBweD(Mr^Eo?SH^8P4~e zmgkyWNs;~G+_Eq;{lQMF(23%5^}4prP|I07^>TMQ3EVV*dlA5o_(7!W3yRr_Wjm@5 zTyeqORd!A`=bcxe_{H%gNtT-RsBV@a%Vl3@l^#H_ z&}^J9h%+o3DoTGRWAGZ;Z~iMisY!tuWLMB@75lIX6x zz0`d%I)tKg?oAqf`j7Gm95?`a=G7mi-JJY59Mg611|cduG&v-H_31lNGZmZyFhh!| zpy0V&^2@CtAbdH{UBo4|J||n)bVOzI<5n#0U+&dD4Nc$azU2>05#Yhl#&xLHC&!WB zl*B)<*-y~RsDg&|a6L7Xi5{8;oYxH7DfbA4YFdzph?jb4r7An-7C8Az%E#1(kuuZ? zeyT@uIBDTz-_ilbCrwSWBBLe0m$h6xL?Tm!goPV!wO?pUMk%t)B5`op)^%rKUb;F2 zDzx%;0&`2iw5~sP5YF&9K9>}Kfw$?TP@-29Lys|x)v7Z(;1Y7pZ}K{ryCw*uIW^R| zodoVPu^3_(O}jL2Mh9ggX7P};O5bXZg{b1^>L;l@_Z*l-SkZ${kre6^PIPXlNyfpdA> zOLixtS0F?AaK&|xJl}8>o1NV@6J2t>?7)i6r;S5orG6$eSLd@NfpCpPTaAb$A<^0n zI%nsC(a#%f`G%inf6CjwAoM5hP1%e(iVnT*eXU8L`(4-NyY&rR9EzO?bI zzqzORIlJM~fLkD4{q-KihJ`+Rz^wb|&z%sFRsS^EXMF$&xFo9GWHVd(v$ksT&sD9R zQIG!}6#b-dy5V@@_=&Jf>GA2Q!jIw*KEpkorTT7Z+3tN_(6IrD*+s_b!ZAK6b+ZuI zQE-=i;J7P{9-xlwc#Cs-1e~>neb_r_5I9*50f2<17vQ~G`pJYzo|f7SRi1bvdIVs5 zpN{^`@0VQ%yr0$3<1E#6W3TqQos+XCGW&%)755js!cpxnSrM$C<5sxi!>`rVmH@7Z z+wj2fkOkAt*T18LnT-)hZ9CP-MwV?Rgcj`WP=Q)q8i%8%t(k2DIY=E~VkjTHzXw5o zz#e;2jck6-J#)LB6SI?_k}=7)w&vH2@*kO2Iw;J`8(Z+khK5R<0+&m?tq)S?UR~43N7K1<@#oJMiB1l47tQn> z672A?@03D>3?@Oeh1@B>M$;V04;vN-kY%+QBqzn zy;uq+HR1q;ExF~8n4KsqhsOK9ADMTAj(LyGXOuR0r>Pu-BbUgLyszfo{wygv@OWo$ z8bA(}mR^UvtcWvwpa>@{kNm;w8`#{ER{>Zl~b^UL12YHqh#7zCV_J2Ao*QL2eSc!m|5X2 zj6PJ*(&Pz=01NfE=oV_Y4R~a4p%Hzzg>Hbi{X$YoEL-CsD2NXKBh7NWSjSLuZK#&{C-Q)hUMp0#yJ-K7i708pgN?3}24LN%i zb~<0*9lYj72t^YN~POYx_8>7R~Pa+p}XHC^v-I;V6gY}@)$igOvHnP3l} zQl1;^9JZGb$U7=6t!0SPn6}g7Y2;IZ@PR&2!G2lt6!JEo-7%kuo7^CV!A}h8L5Ju&&uXE%BtD)qpU5K_Et9}44D%yL& zMQo8nacF3$;h7Kibg?N*;P)de?R?tmb9SZ%g1O>Eo@|rQy9x4QSh9?u^Ubn0=kGo; zk9Yg*?l78UgD;jA{EcK((s{9vGFr(pr{0fzwR`>vx$ac*wTBNq@f?4DUspB_oxGj& z68jvye7rTresVmycy?UdSmi4*NsHxFPb9lsJA?A7wJh;FY@r&tgu0VXP6K7S`h{Dt}Hyf}=g z*%$SxEml%YGw2-XWx`u-uJ$u$ceB@2iy2VfcJ-K+cQ0__#lQuKxnbDvf^>mCgpj_N6g+X|EdSY8cx*( zib;@v)GjDMVP#`ez+X*!es%$(@n$r;2t`q+rgdKI5l5M}Oa)NisVFNO#uCKFstYz) zXSNF|x5Yx1rzj~rIovd}`xU*2&PKQ7<-&t*;m>Uit=JF-58x`Hs^Iv!Y%Yz*OP!aN zy?yup;&J>FktEL=Fs04T;~@>0LyEl3Tw3`bYU^rwuIqT|lK5+0E9X5PIV+$2ZD_o! zCzdcdccXLIXvnK78-6KZE21ygOhXTZ?=hClF7%tVvyDo(QFJ`Vj2 z_~={{Hq+w!_Y*vB_N40az9WpksvgXV!B!RZ2P~}sLZwmy{~wixAE_uG%K$qEhvQC8 z%MF)iXRF$23?^>A-nCmH{ZN!MUHfJJtqwYvq%dLoe2WuD(7((u~c!Ct%h(>Gr8nNJsgXiW;Golo6eF ztFNSy%ft%op&7cw8N!im+tiB8>k_$w1$UP5=G{@1uwB8|w4M0|;dd!ybHQaPu68o$ zqq9v+o;D1E%UM05q=bqV8`Gcrgf|*u9vK#qze0d5Sot)WzkAFNYH5;&iI_4bKPlDd zR`vHc0xvhr?Taf`SS{|S?+4ta^Cn}{cIkWc+p;y5t|!smEL==|BYDWjz8&}Vq4|^; zA=iKgrRT~yYWFNmtVsI$%);{*utT?@X#nF~h(8Z9gepI~+rz}fL>|=6>Z#7(LaX4w zpnsc-DtE+`hRyl5e{7DBw>^b0r{nAFeSv&N1=uUmydPVpp>28uwQ}n_dK7y-F;`i8 zWlKic<$cH0p^5fKi9Ii^~Q7L5XuR`(P&*Dqe^rr1RXF``>t6Z(NZ z4fg*<*;__c6?gx>(%nc%H%NmLlG1{NfOJU+N^F`^>i6wCHVO^ygM|0R-Uswj ztbK7SU?rQ=t5EE1L?jrcXx{9`cY=>~lEn%JY-fU0!Uj=Dn;g#9U@i{reJL#Jv8W~p z&3TSUNdPxxr%`Z)wKortp?6Ro)cCZN*W16X!+IHC`aqmS#ub(Mk_E;Ry=&J?E$*}S zNe0*hfoA}8ynDs%$&}hWabRy@1l`g>?{ckrNS*dao4cd4Miq#q_*yIpZ+RPEj<~%c z-geH3i#m|Tbo1i%VluRIMj5q8ekUQsss(faxTmrQ_|jW>Qcj_NU~Zao2^`xBYwobr z=s^T<(v4E)obud1ay-Ad_y194Jx*hRx_-(yudX34M`ovoGGrKV07{=~FF=-c{R^yK z>i`g1SaQ=`QXLST(DB|xP<|ZT7Zer`y>qUrt*%@X&W5)*m@PJ7;f0;n`iHC3Ow{{F zElazL^Z%uhWip>X*-@j!AjM?hh>lpLW2q2Fc@rdNQ2^sBR&C$s!HQm96;{cZD1{Zi zcH#I(!OtH0B#KkHrFL89q?$lp=1gcyRE$=t+kU?RbSnd56GH)&T3)(+EV`Qg?fR6l zt+V;xq=ATK)VaC2;;N$YMpYLEZi9uGHUgn~vYn_73MXQ|Ln>*uQc#zHnpukortlzA z9mZQoU@2peZVnGATc>3UL!XUknKAKqeFLyr!QXl(-Wh2IdBo9};+)xY1%Z^8|B@-Q z#QsN{c#A;_e~60ircD5LUI)b-X|Yzq9GVE>5VNA4By|EZ8k#y0w}WZqj`!-{zFJvT zr)%UFH@r@titHHw@bax4Pf)UX?>kHodl5VSvexm+tAJktS0p6x?*;~=tjKk&skZCr zN`0wb_;aFv%~2cfA%xl4I@&e6A8cMv{EPmhLISjHyT2R~aY64h@ZpI0l9{Qtg)g)^ z^k4G*Y)JubdEx!5^(#W1w<^^Q4Z0(dsJA~74BK=pbsZ{+YR)2CmNF3HCHjwA`+AH=vnBr!jfJ!sJ-JEQ0-jUV z`lAa89s{jn`sEUxwWt*zK$6+5rI98}i{U4k5UC{eM4{{IZ`qTMn}-Ptry+Kw20U^niY#(=kV2^XlWjp2&Z5h%kkx zKU`7*v*Wt$eeBR5{X^4Er34oF9+~$t{Qo=4@!x-uBzQ6iT(2iFBcz$HfBlUS@zPat z+0`5~b8d(zi81pXHwk<`M7M!c_y2{}h`9U~f&RVNRNf#A>n^U%8*WrN*ReIczYz5n zf&wQ*1!y6M{(Eo#__4%82t2A(Eny+xo8rsW%Wn4XQMq?CU#!EN=I5>Z&Rd`J!zhX* zD*!MZZCf|XJ1`Pj0@c&ew`EHF<8uFpg!Y1#cG(tB66L42eaBql(nbfxUjbG-LOApT z8?^gqMFg{22on^_l#8SSsgu!!oqzzfXr-=;+CQAdf6+E-JWp!TAc6fLJS}i|78mi7 zT0wK)u^eGxpdg~@yWMYqOfT4Z@Dcb*AEeL;{^#`H|GtsCG4XDF@``oSq zc^O9plM=)QwH02%Tn85w|E^tMx6s!$tf;AZtshmw&^n*jis?2u>&S;VEY^Geqx{)s z38-hThv-?QF^@W%F{>ZXrHx5j%l!ofsMWdQVa0m?9%QRr;^OK|$6`{#E!xTh${vxA zINVmOB|USV8x#Fk$??B0qu(Bexrj>2F8IjkHNXXZ8pN;qKLqk6*z5_C$ZTxg`E7yK z>(eLI7O7F%%me#1kN)Z0%lp4V4`&zcmTh75C?xRdOnKUz2-S$W!LtZXPA z@6!s-_)k2Jc@lBs?bir(=v!DMysoRBnZ0Sm!Nr;Vdlp|(T&#m#S{Lb3@CKtprJ&s_dxA!=xuIbVw3RK~4_1*>3`4%(Aq!fC3dE*d7~?t;?8r z=(_wn)@r-dzv~-MlX!mKgscu|I-v=PascvW(0J5}`~lvtQ3JaGhFlN|B&(R9&(Uo* zQaB+;a#)s(dVctEMFOv1qpa!!;QE>;l(sCx2X>s|v}Br)#CbFXOv_#1rC|F)*}e%Y zk?>arncTcVyY>g?7+`Z_A{b=Q?>x=G$xf|-v3_kEBA>iBv9Orfu-vo-$UB{-rL+cR zsU7Y?#Y6ubYX$%wSM}byx?RBjY%wY|fVV#}Ii)8n>n`UERR03l4zYlEC^BXvs6)AI z>*6w$n5fN(+8(qcBu$jQBW$4@8A%eEsE>@<*xyb7W`kBp{8Cd}g&6|o`e)yO3m;A` z?qNmaeHK$9rS`Gl9ZR9F3@r#5F@J7sC3a}AOZv35JDP%M_>*wpX^<|(KS%a~BSlAV zGx_j>twMp(bhNVI<40|MX=x;Q5f7xb?i83)dv;>7=tKzb7va#-Leo%A-fWrsVCE*y z#{!2GUilBhwkAd3>RiF@XqrzVYG20Q7iiU+R84GiVGrPd)lAY{GXZwmDq8cJfEC%VZCd~^qVV3}zWm6aKU0pYKj7GT^{*3i zAv@b@{3|R;BCGHqKq$((@x8x%YR_Y45!+FJ-31UBW+PIcr0(PHl_YSv7^&Zg9r`)A zE93!!q<^JcRM`sNfw4Yd`p%af1wp0I#dPe#C#}by_yZ;5Ux;u8Q_~J6!2+*rCdhbv zR&QK(x5b(A_3L$Uuc`v-kWfn(LM3sL0nM-N-gOet`_E`OZ#Fj0`{zF3u zElcm8*+1Yv0Tpr{m7bw~H-MUp6!*1rs;a7`*01aT{nFYRRQ2=cj&l)UkJVsI0e)>j zvJVlg;)6;F-)%W&AJv}E>TUyq8rOz2>*ptBW-DMbg^nT4Wm`gkQ!3XnclNhhjGV0c zMOT3L<$_yDe!jd)ozz9G7!albPyLe+ik)Z+40Ahe$+5P7drPwR4BpVU-z_Cu(7UP~_6bHvoc90A~g};5=A{ zvKu)8oI=gI=3$%+aFFl5+ENw$`_3uFfdEUUM-bRBaup*yg!>8b!Dn(90d>lM8Mm13 z2DR@ZAp&b^?~Qm2A$4n3kTFf*!i6=OQ*nw<7q)e$`oExxC~<)c18Kuv=o*2`^H?eK z9Rqujsh4ZU!5lCOyw{a3&|PpoZEz)1@jGz%s!-{pB3Pu9vuO3r6NrE+fAVj|zk!c! zqYVF{0}LCnFWa(2?YCN4WdG@rT8{LE9mO7@qO&|9F?f|rki ze)N%RYG9p;K6jBkcdknHb1Db+oX=lb0Bd`d|GHa%qyt+@RT1pO$g)NQa369qU6SN~ z0zr>q!Rt5l|8kt}!2cRjbR=NS@O(iZ7*UADUI22!mSJ7s8;ssPzLsHmpS31&$3y)I z^HIoIwo3Bf@c)1Q@audF9IpcjT*Vdxl-ZJ~4$c;Wk-E3h1tWv{k4aW)Z?m6Le#j&6 zZ3k}1E&F;^yMOF`%s|ZZzm=~_*llYE+%Mtnpul&(V)_Z zqOM46$aS?x1Za4;jV;*NnJnuJ=H=z>ACDsx6&2N8F8VG4B8NDxjNLA>iwY>z1{kG& z@>Dnng37>}w5MDpTrT?|Ooj~h>ayd$0++a2adaCfvi8^}=HLeXyd6F%&kLv%mHf*r z^Q#TH@;`vd$TIuo*Q|59_;u~p$cz5x-W1c$mD|(O;2$>}h-iwm#`h1B>?LVb6o@;% z+bQacEZf(_o~1XS3jHPXL*x5H^SV}u(SHKLk`DlfsH;pJOC+9iZv#WGv-9??tU@~yp5)v|jxWYG5G=(dB>6J6}oBoe7zZ8&9CJw_j zz4tFdh}0gH7QfwyzZ=P)cAD@FUqEE>eBAM6X}Whg`=5MEJ{)+wX;R~#ydS*2d>PGS z>9PIf&^}3bZIh#x^;mItS#{;Up;qMimQ<+h(b zjSBo}0=OOGR;k!>KwGe;u1??D8Vk9eBpbgjW2IwpD}=L*L;s^o!UO=bH1p2>sI{m1 zXHGS3tb~1;Q^nH71?S!ZZWwD}FENIq>!*#p@};s8^{v|%2ZDnhm--h<%ZVISm?5>q z`nq1?T#oGQMGk0diKk=tlFm{mD0H1u{z4QBJK4FpB2?1tu3K3-;|0YWVdDMwlqz(B z%ZiO818{dlyd4)~QGtUL@ zw;%dfDkS@E@Ocj5)jCZtPCTBBOI;uMUKdU*&xEz8;;QO17WIAFZ*3H3vMyN_+%Laq z&6fLlxeL9FI_^dn)o+y`ipoa5e09f3-hHU}ATZ6oqPpVh?yCn`B$-E@S{EZ!T5;T+ zeq@%rzM=_VR9Z$5UvzW-yLkP_$iB6yS$t=>S9UoV-T&6?fLkXcLs;x%7tTVyu|Heahf z>KAqh9%7OH-m=XW=ecX!nI@^lj>|mNvTU@f8 zLgcM|0X#lF5q@ibB!8}h#8osUZ|P=WbXH&4Hj-OhB>dW6S^!{FpPo92g9pg(K1ssx zQL0b+Pp&*{_n*Ll-tkff^~iI}0#~b9EiLdjB2DA zd(fKF%vPP!S5hkam|u^Z_j`M7Ek_J|^h{z!yQHXTZlN7ugm9@#_}ok<;!oC9WRCuP z@$)Wqrp!#}qZs7Y88;TdEM7m8=J}@ST_5J5nUFwxMO2TRC@oaJE2C@wq>h6|XX9oW?UwL| zzLDNVuqImzFXnUEmf!s)XmPv`9caJq5x&?&G3jKC`ja(;?4sdG9;YYa^=O?MVYm7V z`*eC&aTU_rZHaU0?pptRiW_@?vj%ua$3~3HoC8&CZ^50jAzVSeD=F>%SMQXr>71ZX z!x=u;fL!yzl-NIs0-trK_)@cMk&Id78*6%PR(%J;>!5(OI2~-FcbjjIkVzy?F*wA9 zN#0+!e+XfO&aB31wP2@1XsF3+GkmTwmYFTRe>DN@-bMq~!qfGYtbqZR4PBPf0q+yo zI%;iuYlHFu!*`ax4%KNiSR2dq*hJibL-W$RS9aXG4!}U+MlINjHz+^6J40plBsb=Y z$bre;)Ru2*+%-7l63>^=g#q=)vh?j%cGTU5kYQ=7xr>58qy*|4k;YmSCCub(bh`da zXC{2s`oTbLE*&Lnr^fEO&ExRZU>ZAe6kv6j!0yhD)I&QpX-_RFrZ*V{1+a(n{y-S( z+AO!EWa4HdE%55kmeL3NChuDauwCvtibmW)eu}}@9{E1Z)%?N4N~&PIc2W!dYnm3C zU%);!pnTuAZws@X30vnf5IRIuD0p)N9>hSt|0$tTX54yk&%Z#Ys;c@##Gh9;($L?R z_&ujbhb{eTAn%Xx-2gz$a9;q{c^sG+X-2INXI9AM$3JD2+ zzIPOjfv4?PtS~~D`Q_naov>(u+LW3lCmHd|C8!p!<*I7tiW(OcQFv>7`tQ?^RT;#4uqb{X9klLSx^XHRH8!rWG{Ih)q5Tpy}Ga4mJ3a)gJV@(b{O1|*0M%OHzxfhh;=z^H-w_}Wl z2V1LR82iJK5k7gyEjcw+E%_ZpS3fc;^6Cm}r_Icyn(RSk!@tx^G7)d!q)z!rQq$hc za{;z3&Pki=_LOxzjT$_?*69quYt3&}ceFv#=1qtq1m|XA5B>Vw^;eQ3XoAF1?5c)>q{oCWM=K?i$vM9i68bxl|V$jeX_Oz_H6WxOov5|OR9MF15U zQ<5&*F3o)VAF#%zJ}GiJe7xCpGO#+&eA?!Jku?B5u{+H#HMi}WDT8mTnAzDQ`+W4TKmIVGbvtk9^AJm~XJ<2Q{4xk+QS#$$hhhBrBV;r@ z8)DW=Nlwc+tr8nNd2PWSaGPI2cM+c2c>$BT3C z$xoJ+kG%t}fs>8XYU9eZ$@nv@S-5mW4L3U;wM4jzC0 zxlFnBC#7APYnP~#=rg5e0LKqagLzaoM(gO zWE3V%&-~(486XhRI=}o8gJ{p&9(~t~JK;wHLhO39Id@#TDBHz}1qt&4-~FM}Wfj!l@NZ@HWGcbaqJSwcG&N=?G;@34;aDTNSVev2*|VP z-Oh8HfhbFMEY2vuEG*;p#^oDi)oIk*)u!O78NCpg%#>5PIExcGjlG9G4Q_|*V~a_W z>B-t9a#Xvp&3@c2@}PPR#gAoC61?`R?x=IDI#qfat`YBJI;_cq^!}>$<6KM;vkBSR`0CiBqZo)!kGtM3&~Y32p0j=u<(_{l zs@;Vn>0m0e`G&L95}^BJw$gN6zO(1>Nt;`RE<0Q|^t`zh<1YP?Y3s_-EUG@PT#lr}K7Kn*x#YUz!oE@ay^0M+@rJmpSBBod zN=n~(6I*yhvhm_T!gGSVVAJSu_)YNPVlyP;cEKe*uffRCz0wk65q2yzo}hb|zA2q? z7uf)XuCTqDohA56Eu~w3qz79>_M(ky71mh)mZv6noWe$aRZc+jA}yCSC|Kt9_C_oX z^-$OSafFbg^*fpeug=nxrf)R)Wuhn^31H!-sdmsWG?ym7qm;^wDqV97m)wLGoK-WH z-@X$4rKcZ0KUR_FOuNR=j3X!UZuh}+!rO`r{;h$T)F|?Wx&R;U{fR?eZh&3q=MPj6pYmte zQ~o>{cO++$&Tw#H` z&_$8XXC}_Hp`B&*+}E^d5QKeub947OmYy^)1z5d$Gp>(~0_^8*0e33UK{DnD=ppVa zTfbM7t;Rf7P(uY9px2=*s0p_@y`AlI0@$cy$FapnpKmav#v-GlW;#x?7Hwn~sI*t! zMUtC_3y#i%7L)lWG4r2GJ5>UM?JcJlN-WSw`T!;$3@};Cfc@_e&KAaDbe~?$i2H9{ zEYvN|VERxRLcs)FO+IeTAIdENKxy$*I`qp7FdX-Jh;uMAgRTpE*pgY&l69erMf7?# zY(>P_OEJOs_5{pVi@ACI%E#(4DEfCrO;Roq95E(CVlB=#7}uCas10w^9s?B@3C1~s z5kb~NBieQzy~|6AT-M$G%?f(K4!}P zu9!5VF_)}oSJ-%7zW%ChV6qX~Qr0n~=$dl%wjTlANWbVPz@c1xis{xt^zGf%F$3w^ zwS7<%yq0>JR*>2kY+_#Kx++O^8KpFY>myp~>~(eDZt(dznIxUtLCUS74UPCTfe}}Q zvBdygj9DoR=9lS(4r;%amgje3;)~iWBIUk5PeGF2qY!N++&mTevEK(6vc}_pz~3*W zn?vcl%XBU>%@6tq~_^*7{IAEFL$J=hXyxhqTz5Ee+8JLU-LYOkR zHU52plZRGZ)%-ZOd*zmvzm$CNATr@iIdTZ3&2X}vm{Pt6pTq6#^8(W4bJmE)Z{PQ? z?-j%L#|)pyZ+H}ahxl?^pY(7_OTd?$-&T-`3w2gdezyY@4_H0w~^c?twoGLz7Vp?QD$h$m;|9}<^R5$d@vsS z*rGH6u&Sau4v{Zdo~&yHXdph7S&)E%WHF*lggsWu_=q2?Oi%#Ycz{%@Y@d7X4uF~t zN|vnr-7ppIGKX{)p`nyivgqylbp~q7i^QG%>{$o)+0i`|KJdR>^vm37pNMNp>1Alq z6v?UmGMQ<_yPmxa5DYVhF5}F9ou^)~6cZC`;oium2;x~SEtq)i_Q%0}GF0#g`Xvtu z;{Vf2Djb*NfZITI(yb}I-hEw}7cGeV^AicmEdP{^2bYkM-S4P}WmU_J>`d-)DU#dQ z1eif}INC_`KL+R?_%B3gTaNo0zG8p`FG=7Rj=#lx&ZZxZqoQoSI%3{ekKBx0%r%_$ zJ`esw!O?&TvJt_o@S1fXM^dzra1+n+EdYq7fbmf}|4ix-jzo}sC^-L9{~FyP+$kk+ ziWm3y5!%@vN0}w@k4c02&GUfWKNBKREJ`!-?w_^}7t>ZFPbnyV-o25x$t$Vq$J81~jOlH~slfwhBlTA5e^?j*xD`N#dEeRpA+nzy+b=jU)6l2uiSTC^$zA*#i zMNriOD80P%G`|-&3N(K-l}u49pN_GJZv86O<5jF)bGd$Vw9NtgGeUzl99o3vXIq^r;j>u!%g}{xsgKP{8*#}js_C1laY6ay4~$dCFE;B)XXg-YlC2Af%$d$}4#;Rr z*#q%|I4%w*kw`G>aheT&)U=C8RaVYXv8y|grLUxaeE zPrLb!=*nDbHU4ZOR=R4h(0`A&p-P-7{B@q7?getpPONN%8N|zxsDX#!I(Qy(0{!T@ zTV0xSo%6myIqgqP@*}l^ue>;|XN-66vQSx)!4D{cS-Gj9Bs1plKo_qz#b#$+l6&9A z>7G01J3A%reBe7%eS>?a?SmTV4>VR7L@L4^z3<=_HlsjB zBF|%wI}G#3X2zZ)sXoX#`Rf@sB`>LySGI=93#-3ga65h0oK(AL26HLDZ&GM0w6AG* zTUE||oy!IvjK4^*tSYozH_f|-+>gAB-lQ3q2yiL9F{YFVJs;s$Ay*PUKNR(#j7(6C zN|uMd8~Kv(KD>*9Z{$pHI|zE3tUdPj8jSk}zwpmCix36>qJbvzOEAtEcLZ3eQG3H} zD>EwB*sQhQaXrjply^n>68_736|;tP-#_m8ZHqA}odV`iHVpE@LEHGptbE#L?yOlR z^`^(qNjLYKDMe!z^9!cOIRbm+L{bD6cq&-wT#^M&C{KTrFp21Dg_GOuBU(}$B6yOb zDxUUgmECBIEG7;&B7ebfp%#s@pDg_YK8Q7dHQPX>Jb#fMHmyJ=ds-Ml!4Rg&fbu;3 zsI2+8Q8v4xcjac>QsrGCWtEsmE!*W4WM5>6XXrj_G%;{3xol)Q-IUA}px4-7a&A+8 z2(r!0-IN?QB#42vIKm**Rh6F;iOTpRqElr5?kzM49*IWmrsB;=#ZzajcF+<>5?WWJ-Fe&UWn8#% z5DYBTVGz8aQR|Oz4jXU`6^yucJD7j&Cu({-`qm42vs0uPxXt#mYR>1i7v%nD#of&= zn|oZ@d``1PX2jbH*)GzQAD~^$>fh+dxY(f)wxWH?T4AZOrL=;y#^yye4SpyGoxqO7 zI>r?oVY#0#%p*UO#PP=y%zWy3fq|jkWs?Y%w$d%9O<^*o*L}0mqNMb0c^5^dIecG={&A={J3EIY(&3e zo^CKImY=~LKUd9m%2_z5l-x>>@KFI2LLlY<=W;dTVZluhzP*t;6+h+JrCXD0xhA-V z8h(MlTQ%yxqkyT}a=(rbEbVDNT&bG{cvmF_8ij1w>4_sb3-yvRt*GIDD!tnBRtFB z|7~?K6c@v#V$Yx^3KdNC)1AxK0L48-m~oFLZ^fJ`_eZ}=m7`n{dE@n-H#EK91!zep zA}q)6Q3~Pwg2l$L@K2aS#iv9XB_Mw0cjPZ9`Mhub#7HwcCD-XNtcgUZ#X%rc8yiRE z!Ua^qj?<+hjBo?hfr=KQ`fI=qO^u(N<2(*MxgnDO<%a5Ct3W^5zZX4gCIFFXSto%h zUQkym2Ub99YY4tn&=KH9ze zRd6a8dGAmBnVX`RP4FOGKLZrqg8o!rP~5g}?68UHuY``i_6W&etN3_~(JM9*Bh*=M zmbznk6I+uYbgI7u_#943&Gu)#6@R1~(Pf90_bre!LlRtEb~y-fOzrXyq=lW_%PssR zb!o44bi{tV^>fS0RXCT_)isfl`i>RuE5Il2Vc;2IyLiy0A434*u;E#u6mw;?(fF+b zoiqF0w>wo9i06Bm>0Wra(8RqrQw6*DF*je)_w%>G3XVT-OneSnL!M@qjJeOQ{$i!9 zhAYj{2s@3RdT5;in#amNS?(s ztCZjTu69o?Z9#lDbp)To3Ob&RW@&~AIh$y<{lRQld`Uh(wa8BIRm54DF%UA)LDAs2 zc|jFkPv1>1r%H0E1CH_S+0>iwAoWhKHSlxzg9r7YAqxO?pgmsgTl4q&I?M` z1Nd{U-{=ILayp9nv>s=ES-*K?7!K)>LXlCmv28BpC zp$M}0imuuHm|0~oiH#t+@r!ZWDUKB!=~<7OLh`DK3%A4hs@5;kKAk#9N99 zTVvZx35pzyN1o3-FB$NZ$OT82X$e7O2BQmEnG}{hYY+k>`pD>sx!fkYI{OzUqE0dm z?>3OKaCX+!f;7l+QF>WjJW}vzOOJyVi;q1_9^W>h4WmR5T}aD7IALDu2legvVz-D4 z7ppv?uS7R_+9~CMM^nduH|>P(Zysm9PSR)K>_AB$CQRSb+pWH#G+X$NE$iJiRI=2( z*On41l4I2C3uD2KM*p3xcd~V|24=siEPPZ|DVda(Z<~eeL@D_)+1h@G?i6q(G1u;= zi9?ek1LP8cvpjNq33{N(uY+t`s|jai-PDV{=oi<_xdISzp^z7B4D`5ZSYwgsZq^dp zM$v+XB5wL$B{q6&gw^dNV98&3Z;S`IqOA=nH@(mD9M4*XeEukhljolanv>ip3VTpm zUwC=gGr~h!US0!QXle~F8;UAuVPepQ{o|v$3 z#1}y`-_gbANX{?*jshK=C7ho_Xz2sQqIoDKtq3s2 z^5QA*K{m7DG4wB;SabXZQ9FZae5}%qgK=BwL03lne<~$MG!e6$V zF2Zcu^@&h~@@n6)wQvv8Ixcsh@aJKl9r7MJV1MISGZofPh>dVOSadTfO`SO(Jf9IQ z$?d8t@A9{^u@Ox$Qnq;IA4$^Bx+rrLDMqcawg`*{rGWI#P`XOkCaI6}tkO&E@1`9H zh~{v16p|w66=hXSC56F9CevByq7gP^R=TMx`)&_+DEezH*F7nEUV9j6b8m)BMj}_d zF=dA>>dM@2`lLl?64NEdPF|I?-!qvDDy)8EeoYH+wuh$8;={sN9^9n$!Zq* zmP;UFnc!mAfN9KRnoA1wp<8r8$2Pg#vVgJvZ6w{b`S4UTjj^TJd48OCjUpWUVY%lI zj(0lF-LMetYr4x;I%#He@$`uj`UTgm>u6Bz)s$$U&8N(vPca?fr~#gUaRk)Brk51k zoY@FTr&)egdyakIy!Llo;>yVA3)t5?BnNo?+9mnYr&i^ols_NN)s1Aqd4hO+Q(Nuf zqK9ZQnsy7bZ0hQTo)&*3^QxvO&R5_$UsgP`>e`ayMaatCnQ`gJ+<2}0@VclVw0KO} zWdCVG8fY ze$P>kGl5eL*2ZGKfA6x+2a3rA|WY2T==I}iKj!$ zn>v_b<5Z!z;-Q=1G>_hTR3qt>t~%mZV(L;sb;dY|H2ZNBm-o4=Iy=lg!?|jG%h%y< zsa|bRD3`muRWL{A$rqje#}`@Qg>a_w3cRuw!HLY*#58r@HMtR2$*ktRQI5CV5;_xJ zTb?M=Rz752?U)=^DS0lSE5Q~74o}8l#hXrQ$D>#AnBYGb?vYcR+K=9+&xMVRTybxQ z?8`9HtV?k%S-m&jr`f9Wlog5G{Zdn>5^|%WzIb#HfxCKv>KP>3VWmnHGr zGk)@48M7@$qTzwuY<+xqB=dD+YdCD*)qFn0)3t}OS#C7PJ}~2;c)nfozEJ2fpKDU- zp&<6e?i$fF>JNEKWagAld|0rruzpn%! zd|??a{51Qw0ogI(IbLxM6iIa7;ztT(XP z^HSk+9(M8|MK3;m)v&QBDCmWPXD{P$w>?q?0zrq9drR(`GLdh^>lLY#5i$kca)xl7 zUNdN$+B0542BNIx{8Yzf+kpp#pzxhmLr2#p>zitF9s%jO`8iO?&Aa&S|7ii zBVoHy{uP-zBs<`Nx<8&iOw|?+^&rh)XG#0J{0i`m0LO8Bo=@bnTPY!{l9|tn`l2Do zU(J^nGPo`YhsRYRdT{nQMHH9eSL8Vi5v()wWr(>(V|m|uGwVk;MZ1uhvMo+ow$|Rl z9Q;Z=EjW3n0=7QQYh68`@BEO0Yjfe?tK=5aZxW5#n6Ey4`m&}X+wOJ z@lr~_!haYHkNe4@T)GxLS3LrCZ|=HgUunBx3cY$3uDF51ApY}3$zuZlA&fYnVFRWJ zQ!U*}UpWP~~9!qjE5=3@HOYR$Z|K=g~WrS^!SGRL;(81%o;auzeu2r)v_wXlzaT4Z(0 zsme)A4%&s0gPF}=?h;JWh|&-W%I$w90`ZOw?Xfh{1T6iUoSa|mFLR{pB(tUrJQJE4 z*V=s3{$lFU0h!Y8dEhr9kaY;y-}<|;V(W&RjJ=LD0SHx!*%C?U8kduql<+IZSdD!K z!_t}MiaR$5svashCTp^0?gs^xUEGX$jQH)09Ug;vN2 zZwSli6Kf3Tys`8NMmr5uB8?Z=fVltq6ww`?aAsxFX-eIl-1|I$-4oh;i$jq2yNn2w zkrezUJkX$PZi1byOq66;Moq6PU^d$!u>`+E>6X96NB9mA(rLV_}42XZSayytM)N$blu`{2!<*rYq8I09s~?&2|Q z_$Kk6Onxn5qve=)KJz}<6P`nhudbw;#R_!@e*4W)?}nMYvPxr{m>xb@o@7^7MelkP zK(~S{6?rS=>VWSeDE#^p>Z|_Xd?&bTTswnDu|KGPMhew6muJI+l0PYf$F6*nl1)}P z>n)))=P-(B@GDp<%%De92NO5>yeP+*gdT2syS^jgHR2_|w(>f63uQ{WjFNAa!8_7% z<5n#1=gGs59SQj38|7fY{CSPXFUj0;BPb{$ZdhJy@XDB4F`-NcgwUVKYkC|+4(1+0 zB*?48B%-L*cdUg;><9alEd*(A$fa2!M!lu1BkrhLX*a zl*H`pOUrv-lgAa(6fz!$InyMx48Zf2di|s^8_5G0dn_sG+q%mu_)i}BgF&IEOefXy zH_J{n?5Ov`UX^PCw@IIecXNl034)I+j%8N-g?mD#DmMcmVOf;l=PYmY_y-_{0y1VG|_T{PC4^I z(PH4GUy&F*#nl_?lD7o!z_(cNGJe{>S3Qa=<&sIa< z4T(6iO4lw)wxybryE0;pGBgN|boVtVUv9e3-0{`*b2*=MJ<8$h>Jx+y5^=M zvSq$fNj4j*7B#y_jZL5bPewohWCW4;Aay#PL-G&pi&%|@kwhS^>p?{%DdywEYyGiB zVT{)yf}E3)-^TTaPt^qt3%ll;N1Hys>P+(3qKy%sQ%B)C0uj@4;Mes@M(`yy$m>Jr zL+YY5Je?{ewapKZ&2<&8HNm864XCh#W;-Y#J0 z^U<$1U(Fm!RH37&E7<#rj_`2&`exSaUO>#qQA>-}NA!s1dxTcoih?N?G?=XS?)7z9 zt5!~jcP`nig$x-1yUaEtmGrFVVO*4iz=%XS{o#Fu87zWq{Z1h%#s_2d)oP95ZSAKv z)fiL7<-$ND8FX(nhRJkqMgGFgPfL;awDA1DnsM(eE)KQ05hv*3w6#2Kgnh0L9l{i= zK+#ulwOp8{;Lu^ZK9M*4R3+^}5$kGO1~It%@N;g5>FR}Hlj}&Xd4vMdCx`oFFYzKXH@W32=z<^NiEfo5Ti2?M_6Q1Iba@4*c@@)WUYHw7STd+ z+529&M~rXv;M{sD(#s6;U6c+-2m&fpsE_xXYGYr?2muwI5+)0v-k_SB``V#;)5{UA zyZ+RPJoP9%)$Z~OIb>Y%w=%}wS|7$LW*4ZnOJ#s7rd?tUMI}Ho43u@Yy^`MjJ&AC< zoidFAQM#&k*}lyB`1|MNQ1E*}6B`*AH98UfkF61*{AjK@N{zAIUBz2r>uexQ&+JDp z!1IhPwz}6LG;1tf`fvw56fv$h-z}yXd>|gQ8F3*T8yNH}_BkdZ$RW$x<}B?&?Wt0e z$n-RH{UNM!a&l-9UivvfOv(w2!t!wYw2#8Hz%bt8KBQL>8 z|4nH=(SDt&J!90H6w`nk0&x>?3so>rCvR|>JG0@L=4k3WC|$_Q_&hm&{;K5gt9=^& zIn{2!LlnajdNDe3)&iwiAhvy)e%yXuMfqrY_onHvB~_&pY+#U12of>hVu8zeoW2f) zH4i2!!2#fQxuprMi68yP$2S&^KN&vKw|>v`Up#-gAu8gIaVGPo6q>5 zZ(Y~hQ}b*CXYwB}z*YU`gtnTM@eC}P8(sRm0a^`R`ig#D$zNjw7h)KKJMH#a{5}Z$ zSSAnjj~53!ABVB=4lu!WmLz{ye7b{Wc$pie$wMe{nrc1?$bBNw;F zzLa_2{BW}?7qnJn@k(>K;pdlU8y+MJWLsP>$DZq+%odfU#3URKhx?27V~tF5SBJha zs(2TpK}M!yFTJ!U#j8jpRAD1TkKOM?a=4Ye$shLf>m-5RQu? zj1@Gc2odg7EnFw$m80Te^~WmAJW0UH9#7`Clpztr5pmt;k#@jtERZ5O#9BVcB$n*+oPcXj|xwXi&3U0O!4}w?~ z&}Q)(Hyx*zP=&$O(uR^aq~iUB{Wf(T|2Xl~s;gkzkY!g+L)N2dKJ)}h z%-$aSr!*}wRTd(3CD=duy&@17ksNkKJAm*36$W9!2lb+m>nU@wz9?nlBsKk@eBkZf zvu6GSJ3U1P`?UfI-Qo`m@j^Ab?6PGZd<~B5C?Yl~&2FF~JJgP2SnpKCXQ|-Jz~q=s zDU;3mY5Es4|2h{ z?DV23VD=A>VfUh>$68+=2ke6PE^1v%JFff`zJmvZRf=+8&*|Y=)CywCWg}zrR=e@y z!lpNj9#n6jpVx#TXsN+YsL32J1aii5om5lfN{yOLcfY4O+6D1gPrXUnQrLJi z8}9FbfuXP_;)KuLVn!(msd(OTzB{FsBK;`Y>ij{Lmc3JE(2D@0%b~=~Zh!z2Mx1q& zH03%linkE|8Vzg?n0)oD0gH@xaLan|lf7dj16|TM-k&gzXJHsFDAY=F(6;^ zF0qD#mFA?41#-Wts|U;tuxt31psXmPBB*aiVX+s(&#Jz-I7?oJY|2P8d3JeU%vkaTy$|w6QzvlBDQ{0nJYDh23KOL7f7$cV zvvAo=aZqYK;Nwu{YhI$^C1louaV{35wKL=L^AZ)eVv$KL-&i#H+BcN=r9vy1Ps1?vhSvHYFV*wdqa?K@d>7kxi$7AdNI^ zx;Nc?i*ug$_kH7g&Ut_T$QUwMYt4J!an0+FDH9o&m$%}4Hh?Fcn$=L8!oTQcbaPj= zlqga;&Zz!!fxg-BzKIXJmO~r1z5bfZUTXYRM~Uk2WSM?$lwG69A6&uj>L3lT27A1^ym<0>VhE_} zDHqouufNgG<+2);+x&)flVF2|@vxD-CmBJgh)&;@nhEXj2Si;50}JHN9tMW2Q#8NPvL-=NtvhmJTpHSCxQimV=IBmEQBE1%*U z9?;kL)P?Xy_8rNI=a=Yj1q@-uokt&6+Hgs|#0n4-CYMc|9_=>RxtUH9D~x=M@J*xD ztAWsfT<%KW2UHWEhZ@|?o;^5zAI`NIz|eg?@1gWwS@r(;sp>ayWtBzz62$U@KCEG_^C5O|lmL*@klE`ms3uIem)xEJC+;`n% zCzXz*0)jCCB;BH%KGa(9B!Fs_b=73&GLJPq&=yueO){;qOSUOVnl-R(qK+B-S#Jm) zGyEYo$O6;1pyr%=RoN#48?3MB)(zpOUUVv=UX=PR9p0sI<6YHl(6o>BB5$vL*lE+X zZv>;7@KxMzvJ_d;Q!Cdqs?_R)|Iyr@NQ)%y5Ut$F8gl+Oe-M zPFWmi3u0<*1h(ZZyE{d>gWR-xXKyu4^~LntpEI=qK?-vHPs3p&E6(*ZWvKE+Ft zbGb)^Wz*Xs;(FXYtZ@6|vs?{6I3L(CUgyJ0G1lo9bt+IsJY@B!@o#-EY)`C-gpx2M z6n3X3GmgU$bXoFJqP)766==Hsz47?_3FT>$)>YC7I7e1Ex{8yhfRU+V&^Vwv=F?N8 z9s)$ZbqMmXR%C*UrUs{zQ#?J<=(7|V=v%u49{9O1ki`sL@`15pgIn+yDviU8a+DP! zYBq->Xo#z0GXFFb<45qL3f`|-QdTn@19&kggE{To^#C_3wiW;tdvzN<l6BJssbOA5z zV6WhKa~1FY#nk>^Tz!r-i>ZoENy?pQ!=NW%rn_sz{ll-Sn1A!}{lKt#w4Y_x zF=(=|&|&&EBnzg0%IZLN>QDN41GEsr+P%$YwH}1l?TyqF?XZ&K-Izmn*M>a(B6RKj zJBp(=GJw;z1vqWiGF=4tFPr47@uZ=w z49*U}?eM)Kpa(TGN=iA3Rnnp}QaTDwKc;^|>4w z?mW7}vxsR|&h?>k@NKllpgB1Ld|Xvr+dC)BSd=2)*#h;Zxe(HD!&Qux9bUv8^)jE@ zF2O6fU&Q}98k!ZJ@{u~_8V=CWXhsW0c5!KfyPVyo$+Q~4m0JPUVb{7CE#?V!M$OGb zyO_~Yv_npeZTFjP4G4zHKZJ;?}O#T zZ_$Qo(zQ5Q3OLE(tH!LyAN!UM|3h=-6!+tDuR+wTSLT;0aM|^bG95-GQV|owc~S&G zmD7k}5E_K%!OY~NER9q#RB9YfSVUn7L2_toRL2-F?lx*kIXAcSy=gOz5h|-c9@uJo z1R;L4(zP4SjRJjG?VcVcXZF#^$t1xHOJ=xIVy;q%)+OtmN0P>_1EE1tRWsAf5-}6} z$7}0E$w8Zmkq%NPsK_Agapyc0(?P<*`K-aE(WD&C^o&mRw2Zu9xi+1`DKpp=FcW=t zk+KX#FF$94jP^@@9u=)U3ButF3lJ5ZHIOVBnTgLic6ojDMr^b-t-`pD0eY)@PGit9sfu`s zFojA_M)pvCiL4qTwkB4x^oO2%m|q}v*``M%ObNopuG>7;n$rIaZD_AbKE%v8xb^g^ z$-5;QAgrI5B~AoxZlnJQ6g>F|#7hEzvF2u9`$UluI6x%sa$lJJJB`s|qp`rma#i21 z1!fpAtfBIduaeL+r92E5zgfXgz7OV}XJP1Nyy1x`M67_Uh|{HW`Hs&y!{ z+~t59j=M?t;;#e>en}z!a(&R`fxkm1RQy!!)}xxzruZ}ogQJ-*Rq*L<&TZpf5P5M1m{YQR&60n=A)IW2 zPv!MGX$K2Ym~r&7RUO;pT_v_l1ed{*9vBH{)6}_GdUZeV$oi@4*$yxD%bBR{G8}Md zP*BkC*__#2g!x`e%5be_*KJpULI?q*w4n_io4;^AgFK>ai|AF=O_K1MANR~-eL$O4 zfSpkAd>`yTmv3hC9L)*~jODz$GgWfe5ZWb+F;eJ}rPy@x1w4Sh zGwl4t;*3g-brto-&zn1Hcp}>01aQPv zF4L{ztdd{#aC7irbNX(N(XxK9rZH(|?TnJ<9!3%%|NXGN>DA;B)kqf_O~lN*WHw|O zgwYYk`Qhf6%t}T@Jf-G|KUoH3npKuYY=Dsf1AG2cvWms=Etr5xM(XFVk?=3I7>9ay z$ZT>BFisos#&ve1eH%p^1w1g+G$cHlBsTZON2m8G8kq}~ynnf2i@8Ppn-e6f?VXSP zXSmF8KE>6I(d~bJC7=M#4khM6A8yur)G1PnG){=h%8!L$|FHWA~R8NAMDrN zFC~TSi}m8bd3pJ%VvYPutysS{gWO5M#RupEEm15rJgg(ho9HUsP%=%jp-WAE$xYokS>#ti-sY6#MOlQctDaZD#Q-@$iW%D7!^2GHbR6K)6ht#oPxeTg5T7dj?*E` zKwa@nT&h<#)_NTdSpLgco7>;zI2$-BLnF*^J%F;-mV&NZB27Azs2*idug`jDJlTbDk%@w^1 zIdb8QWZF?R*gA<3fwfTND}=va3^dHZZcBQ&*kZkn3@=_IH#4$BG{+tI+DkVVh_Z^* zL)gQ|7LS_3T{9#f_$6!U$NO;zFhr)2qBryGSfJ|~0&lb!e5aXu)gnFW3~*+3a;Rtr z3>(}v<15E0gDb$bt^A=6-4P9}k+j?1JptheZEk&RQHd+W_(asRm!B^DWN8=#`p{M* z%^5emn8rqXNO69g`29@(bi<+_^WNO|+7u??eKfcXh1uu~-K$F7oS;uu>8e6D?5=x~ z>0=EXt!}KNPGD^L24BxHtNVqQvXtlc_@otW_dmQlHkr9lcW4l0c%G1~eD{9|XULuc zWr#Y}Gx>lH&O-B0Dy-0~q*|P`+Gd+QbN4$wba2k8Db$hK@&y;S7dFngJm zo{q~X;1m}1F5zMVbqvj-Yog}o(QAvl)SZ}U*_^%!#v!6E{_sx!Np!FUM|bhB#vU7a z!D8_?tJPlr^fnv*-rJgzO;-UT?xr_Pl$CU$oQ{b2RST}z;3`!Yatx|d%nbpEE;rvU zc`a=$5upo5r76vugSv*g=Zb&6dcZPWoj(XzJ`B0u(4M?)4ZtMInh0#iXLmw-Ba-VO zd^zyO&AHt) zpF~PY#8PU;clGC}4Z!OR6xvjpFf}>)Bqgr9JBlN_g%Vwa*b z&|6@(v;}@vb*&p;Lpq_xcqecmI++!A->it?+;8lztU+u|UOF;Y5Xd$4b)xr6;!7{nER+yipZ zA#cCJ7~`n)L}#Sp)L7jP)fh4-p#~wVX%ZJ^y(9PPuSQA7h9mvy5M%+p4f&Ly-ByEr zlq@o0PQ(%IO5QtblNC_Dq|Wjd>obz(JrNOGinH8eT_j(U+56z=VHQ%3F=x?{c9ODm z*LSIc+u(k2=tz#u8zpaevSNyE$yf+FwoyT%FO{T_jID--X|zouRedU?LF@aEWu)gW75vvk-6Y%B2jYb2Ba{64wS+|#v}D-^^dIB|;iN=c<08sCO(mUfglEM5-KHl3A-yRX%ai z_nbdPMH3_?{3bs*H#=*-X(qt<{Q0#3?OmcECk6azIsTu-$-s1j!`Q{TbKe4&H-Nvi zt~e8%4YE1%18%Q#{f{#k73XZHzKCb-*8pjFTetRJ6&1Kpn?LuC>LBh6Z53toPed#V zNoEOfst)N_MzQSWaV^U1CPAK5=wbf5~C)dyu~#rAb~xxmpnf(eR?pXEtB>z-fe>2CnI~yC;CN>uce0dX#rtu&mLoJ4YDh`Al4aC^V?4GP#~dh3gPx`b)cCanL@z= zyG|6gm2iBmaGK3>wS1lX?i1<&#Dcpd$>p5(V@%nr^pTnKpyLc{W0@xB&s)2@Y1vXY zwDz&I5`6M;QD@(@$j1ZL``?<-YguPwy_kq*TMiULh;8ShTJHXY17^7jNCOSAdh+dl&=>|B1v|XsndGI)ep{9I30)Ln zsTyxZbQQ*TpVplv$UyE>h1FQqo_rli)g@~^8?!~^bvmQ5LH=*no$ z;fI3uc-dBejTG}zLLE_kyb@Q51aES9DrQT{jX@KjPoF%z%MAvks7*8&U&OqAC3wO? z7IY@pD+R$r(`9jZyEYcSbwa4cd0#n=hRj2XOSv7f6iCDqw;M$Kfe2K*nS82l|zpsW+aZTJ>L23@&IlmT_H67m>)>SgD-#Z0|teG!Y zl|u+_tUpBjL@PX4F~tZWoSTQcvPVOnyXNk`9a>VK!0R=_zc36&>%}4TMnq2LTW2lkTE>F2Pq0TQ^?m5Ad5(;%WGrE9Dj?}3Ny9$~2@ZEJ0)3z! zPH-MR5EsZmL&tn^A?u8S-y*vM^gcg1^lO`wzwW!qy=e2hV}B*kkJl@#!sFlK&m~Z= zMI#>nR6x#j%QBY>;@Qh6C8%OZlF1hmd;V)DkI@^WDvOanLAd`!!u9DN)SwSpvPBUI z@3)FXYJN8wm0r;d#3ZiQV?7mKd)kZGVc|NoA&Az}8Q%pVAaWOsE7r4QE%^|mHbxq5 z_(tVj19M4|AX5rzPrYiBfRt=GA!Dv0n8DNdb1oL6^3B|>+A0)t@oGbMjpv5|>a6QV zwjqq`(d3;*8T^8u{m(3b#&^on1-7(zQTGk$FySf8j~4@V-@iUje2ci6?h&=C3M$@$ z^#{r74}KY0rjfhR`I7tPVl64RDywjZw(0>pF9n>XBNPxxR#Zj44wTe!=aQ4I^PF^W z3r4O`mWuFA$;`@6oYK{6J|XBA>c#va1S?Gs4seB!Nhd|^(JOrO26`%ib_WcRT<@pH zf+tt+$4Fe3S2Ksak^E!p5Pyi4SS2*{kbWxcJGUe6F*YY+>=(*I{n;5`(%0jw%@j8X zTp7jQs#5HijWsvA^vG3S0o69YA{y{ip)FV9BlL@@RxL#lkYp$&2g{0%-ZvpBcc$oR{31{Ysgni7&rf3eqVDF)`bNz?nAgv_qw<4YNmQo$| z^C0XxHR_kaKGh6nW>4TUAv8B;W|#Eekm8_2!S;|>W*uk&Qrh+XHz_Ec1&F}}QEtPV zf_qEdSA?$`M?z3AqK&W$t}t>W_3;O!GN@cio}(tpWv(?Z1{!3bBr8JA)MjbS3CE&% z;s`$q;*OEV@evEeujDC=fn$~%0_ebKf5kUFy!K) zlAH++I*FLF%Bp18oW1nRd6vM)yl&BSQe98!n#5XNuiojTGWKdp1L)c`ulJ63YqXGbzj|nFVpv9A7}Al zwjv!VBaCk&(WVur)t`f2cw4QS9cyoD@}uGHjmimX8Fl5jmC%PRE6vM=+m2wT)?&A< zP;zFTd&wA+3A%S{DC>6z9mqFR9X1iHui(w~5X(L|=U$QybfJDR@VIdfG~QEx_7pX! z=l$ukYwZ#NXVx>e3HCp35u$~~H|_0;tLSJO5V<2AGH#cR+k*Qpfu?--pIAQ$^Wsyy zK1!-Nn?4!1XwEJOgaQr5gVPU$;?cB8Nn9L>ptxehUUYx%^Bavm^l1<#)dxrc?4B-| zHcjb3?$AbO14+XjP689vbUHTTbPYNoWbS8Pd-0YEVre>$$L&PmCdR1fWIrU6@w(ZJ zP&!tfog*^mZ2nU{qQxxxaCkrd2BUp*h)12^_m{4DGv^VoJmW;ntIq@BVebn2u3rB7#a(rlH~n;D^uBC{MU%H!MgFGbw#0l} z;=S~P!4RBmw~xF3L;gS}_lL8?=rj5P6#qeE*MPjGbYl?N$1h`7aW@-}##q%7=@>rq z@G?g8z$BJ50v3KuKrPF?+abW99fxS2Bkc=UNZgDzJ9lQFnnIxgl1 z?|aiMJh!7EIGnTVCB5iDD0zB}vVABWK3j{z|d^ zUPJlG1hOoMhdrs(Y{f8g60F#QQ6NTbdY7Da{l-Nn7)nV-q;5)44zb{&lQG6Ovb8X)n-Jjv?pG#K0Pztb4pA>?SS==n-$Af*!ZFCJA(a}=Lu|4o`=R)R=YRVq@* z>nIt^4O~cr`DxhY?Xx>&@nkNru8%*9tY7Xfzg29mSFXh2B%5d6X3r9Vh-XBfCyQ+P zMd86FDsV}f!ggTO4t5(mPeAoqo0m}@P;M3m+$RmgC&@M6ktc&ioqYcz_GiRXlr^+p z2@{Q%(q;YUdOEs^Dk4 zPi%vLx(H!&lsj7K)jbT)kQgbFcJTIA0)nI=dwzOO2$$IDk)!F>7>t`k1D~D{ z+NSO-Rpku@lVy!j~VjNMXINL5o%hNsMwK&0Yl72A(Xx7e0A2Ue4qva%6Q7JLVTV>D{r@m z-+!d{m~XE9eW>&L4t6(k zW3q?34jlous6S3X3?^(<95&Bb&vr5ZRPH7a^^m44hF_xqA>HJO28lO41dEC$-UqjW~o3NU;`&gItTa0+v?D_b^q>ImqONEg2nlFuv!hq9M=%#eWl zV#!i5?C`W}Ox3qx)+)IP9bO7|&EgJot-nAM12JAvzI$)9ipJ;|Ck+oeFqqC2sT1*Zqq9n`caH%eK+0vTs|skaXQTQk%$zROrvn#ruoS1Y7OF^}LRbg0Q0tSU%bW z`*Byxje@aaJ_+&J#x?WpR~5CajQLhhD9kO9v=9uN2!Ioajf{*G3TI1NSm&a7n2Tch zFb7b6y%B9)$W{QJQc`#NU?_LgVRiPk?XT5Q9wxwvcr91|tZUoGQqtE_HPYuC+4tG}EQV1D$Au1}#tt)8on z?`xCNTpg)_1-%R7k@l@R`c_eai5}@gJsV-uQ0J^P*c8meTwqi%Y}y{h@Ks-ca>fDX zK8aJIlfQ5|^u`_kEKB$Bhx@6{l(GAFvZ$F6mo3}*&n+_(z06ekcZ0bHD5bQ2#YF(0n#=fM zfLQTnWd;ffH&QWN23=YKAN!%jbp%k}_4=5!A#4Z=t|GMO3Krx58P_>Rn}L|*W7(qD$qhKgR%!9c)h;C@L)^oV`~~~UH$Z<#r*RVgHpnQmXt^T zp|jRF)Zl3l>Gf$UTf??A%ZvHdgtkW}4)}X%2ei@t6(Ig8%NpN8U@!jV%k((^Cw3H~ z^^qnxs6bN?R(C|FBN`^>JdBU)f*+e-ippBP#(n_GcLWgr;YX>||Hw;2<||N6`dQm; zQwXl(ro4mq?G5m&?;SE{OoIRPmw!F3G7?zvuSW_{fv6IA{YRZ&*}L5azj#Y@i;)4n zFGD7o{J!?juLd5_&Lr^{e+aDIs-2A!ety)^bdAm@9yatezrRm{(g5V zMZ-=UxCmSTu0ua6t<<#*b>UyX(#81=POC(n0vI3)sdQ-yyBLIUA$u4eMZgvsb{%%K^SvT0yV>Ih zv=r1D!2EB@04Q9LC6X~PX|0kfE;>2{sG{N$$qgVsKU^ZHcXyI+rMz==r`d$vBi=}E zPTg)c)Ypb(3wu0U6zt874o{eC*js32ILS48_B31MO5O&S0uIzvhl(O1<{4k;%i_15 zU89~usFi8nI_vIOsBiwMW8TV*h$vcF*=jjj+fL%(CYkW~85-4?MeI%LjS9v1CRAiZ#ds=k%DsE8#(Jcyd##2;RG4I{!h~XWZcb9yQ+I0y z`iFWcHO~OBDYVZw)MP=gu)Ulg-Zc7cD-?hKjv9{9^2%dxo`_gfqfrX?&i#KAhX!_f zM)r%59C6eJa9oJn=5T06Mnf73g}X^=JUgCog*&)da_Q`*=GyS|uDX zR?7C$MnIX=3DgeJj5^%7M3JQ=p+%*@QTQ6r-1#t^<+v=%KT7PQ4XuB z>RZXFo>}LPH7P{=uyRyHu(2;#hKAcWSgglOTdXCa z%25Kag;>K&91SHyyIavar|A(9%s6uKmupwFA4ek^>ZaqMy-`u^z^vk~g*nfz?rtfd z`2*FF*jm_gFaBc|X^DZl7%#UU^$f!5rzONHYbvj*6;fjqWC_7M_O>kc_EaTB;;>V~cc@g_`wOKGqdGck{nbN7w+NaH51Xma(VlOS`8iP>(`u6cpofv{Ca!5D6h4Z z&E4S-$a^;5f9X*-i79VH|J^Y;BW+-{AKduq^D+L}r0VY0s7HwH3owC1+k1|7`} zp=v0Nse2X5&$@F{eURt%ws7X~yM@bo_E zEfrN9<8aIG&M$}oiuYgQMCBR^!}{{|kN0`yY1%kwNkP%QJ4Ll_>+aNe{2mVj~UFNJW zx-^Sy#y@Za?oV=~l(L6NuJjyY27hfEe0$AaFA|VLUHJ+Nk^r`VS>WIC@d|DybTa3e zLDBy0GnY{&2oZLtDr!m+X5{ zp?D?+1Y%JZ-IZ)m)j7g>O7ML=-K2&|K|eqB49hWk>iN32)G8L-WBYjhXwc+d13Ow% z1uDIKyMSHHg}{02sBi1*oj{j*3PmNO|8{HImi_OF9owEMVVVu}WGzhr*Qi`y`}pDk z-}c6Jl@(M~dq@tiul3pt0K$J$)my~2ZV2zS?Z>++C;~)Tq@}5c+U`lPWZ! zsr>HA<|85hFT3@hP+!^mh(^4L=OY@{JN#EPv%L%;KZ&pD2!Jk^IpQ58W9|RNcm5qx zzdgoJZKRqI13*d$dQm=hDyz!kAw(^ZkX4#OZt6iw6Km4{7ZQ7GqP40iNUY0fip|tl ze*Z3fNe(8WWP{}brv~cFdz=63`|PlQ*qK_S4ty&4Jb@T5J-oN1(g6z$#QGnCaAdl= z_dxtN*x#-LdVBvh=>LVhOq(82x3@kJyZ>7J$t!Rc2Aprddro4_ZWTDU*yR(oy!yXL z5NJyv1Tc_6&ez9hIh$N+(J$hgSBJF%2ojyQUiaTo-hVzWi1sz`0kls9SFlx}v>&Qj zOz;$;jK?urNvZyc{MBkZN1}@w0;N-dz=F$IH`o6+Ec5rWtR7*{aV_8j2ZL`qi&9@h z|Ma}w6o%JhjZK~cO^@G8>Y%0n_htG0wJbi@zn3+^0&-k=u`RmjP{Dtf`5wT@sMrR| zO9JrvO#Q*ZA5+-r+5Xt?z7}=W8jlp^hG%3DNrT$bqh1^DUV7dA13cAZLz*f>HCwoT z^cQSA6Z|39*Vk%A(?0&2eXG>VyX!rDGr6BR4`9#&r{!(~d1vi?OZvrc$X22J1E4Yd zMZk%KrcVs>t3Uy}^-;E?2-+OU2`^Hm@4TGx@;bdVOHWV7dXWZNvTHjxmiz~;(qTi0 zcRD+JpVtJ$4Z9^${W<-v-k4u`c~xfX_&>rFHg?yE?S}9S@hCP6d1C=gx1wEElkN2# zKT*3;b!^d*9lYB;r^sS=$POqs8bUHI$M`A?ZyFJUm%&h9lSuk+gs>9$|P%cAPO z@6U<<0U%d?!&0Lex)zd#G7gkg<#F=x^M+4NrB>$I2FtdxnoC~$cw={*8L&&W_gzUS z9s9w$4al8=^WP3OSjyofIe)pdS~M8n9R3i2tL_ zrlJRB{K+^n%#c42Z=`TS!>~i=w_76_1seznBOql_Ov<)T4^H+?9Hx^zrPyq$lE3bW zXrR%;e`wwTm=;A9;oGhj?`{Jk^ey0@&t>-kcJ_Lvxxp|_4n;6 z&u(@Y`2fJ}C=Y|agVun51o12+2<*mClo>rbdU{9I0|V-YPGAbHW7LO(oP*zsi>(e; z-`Aht_%x*&c&<hrdBTy5D~ya3cu14(!NOa)pt@a{ySf)gn}e{6P) zxb_8{}FmIXwTB>4Dps?CKr(mBz%Lp`2Dk9W~cVic$ z1QizpaRoa%pz0r@w_?}_lC?BsI}>(x^x^wtOW>>MVXxX^U`ZnY5&-mY;V*zzOAkDP z*qGO~9tX@j7H=GrDMQJ`1b8raZr}C)QvAV?19g($bKv0~NRs#DM ziN~i06@zQUX^8-X`PtYFhFz}J;DE7HdIAC72F}U0|3WZ={|@WjY35{9l5q&ZwICes93?Ib}1_7vGFzAQ)I5q?N z-?Afi3aI}F*$syNB|Gnbm7Tvd7I@qLSfSi8(~ars$LX`(#oJv9U9TutitJ4xfjTq^ z$NLOif=8dDG9WS%(QqYKR<8=^T0Q>Bak(_0YruBuJNQ@B{MXw{Wsv46+jzMiscN{?b(5*kV+C0O~mvFdW&PnFU$v(OCrnPDFO{zf*7jp{N7YbQA1Y7~>7OUL(%ed1q7*?OW zU{-i;lBTNo2Q~HZEpy!iD+TD@@^8N$q=3aRO-Zqjqp3MEBop*2s7vRpTDNqw@Ju6^ zwEs7pgoGrOcCbgGN<8_8alrXr#`e8xt{AWIZ?`hZB#f#2(IohLF&7BdpHyzaDy6McK^=2Dc{ZW5j|9gHy zWF&#hIG5=`D&2<4(#M9hih zt$d@~jf&UpmWvl%VM(Et#n!<##{Q>SoDq|6?DX_SonK@zW3Z&u?d@hM5nQfbbQFFI zEEA(=VgmXT-}ue9`0`g`**Q6>u=3QZG1Rt~OnR_480(fBzi9J&ATV=x=Q(x12m|JQ zb_O9nm$0_BZfYnk*=+?n?T?ajZ@ck-EZuj3!@I&U!uRLu!xIt`j%sorhMY;Z4l#W% z4p5(;qc*U{&S`jjNSO^Z5@WSu*K4&do49ZAgIp&42RAdl`D_^MSF1YT>^b6qTN)=Y zwJn}y?}F>(V21`21HWwc*yjr8 z>R`5s`}FKQ^zP<7ob}n%GfZ+Z6x}-f<^WjOo?@_mpA*U>dFJ!}uD)zeYPoL4ja<|R zcZ)>e4xXP)pQA*0B|{?7Smm+1z5gN{gQA+xY4Nv%O36H>vABQ$VVD!fpEFoo-w=k@ zv>HLB^(g!G^XslWUE>#XwNq4G;YncRz{v+j&n(>*O6Jor7e5UV;3!v~060*g(kNdI z36-HMf>pC%g8tGm-ECH~-svOr|9>jwDy>jF0SE>{d3Dk_X*l2rLe{=CfMQpZ9ToIF zH>7-paF}0a&=7Wab0J?fn>fRQNiKq>%Wi@#?>v$Z5IB6{lCl_zd4Dp!?lt@)5IiIm z7Q4F(M5^^!2doBDF{n9HzoFe{?EoP(MW250V7>{5Qo6Ud*J00bsdWJ#?bJ#oPn1Io?XTHi|aRBf$)bN*!O)$=7ZU`h;Xi>Uv* z+!f+1<+m647seD&GmqlUk>n=1eWfmm*3l_pk3EzMQX#_g{W*f`8|2P+R%^?jP5h33 z_N|Pq53Y0s-$s!lP^seh51iE(W|IM{wsK`u^?e7^T$PPpN1U=_)wxVH4? zc^BhJiPGgyJ#cw!;1K*H3^T~4#>(MwOfSuStMf2B_e*hUarwrY%&`3KV)!j*7Mn_yV>&KT8RNbB)#-Ld7s}*B zyhX06e6S&r3P3Yb!NW~a;5EGgE{^CIsYrbn%41z zHW%R3)z<0@b-dWuRhqyrL8kKa*qb3Y_TA?d?DU)??^VRRs@K@VEG$o>>KD5`>T=!~ zB8u_~F5M&9(nKnb9yKLoRN;|@Hch9^>}WW=9rbN?BORE z472qi_-Kj*%=oEy5umlr(kwiM{IA^!TY-CsNTymU-4m08c@nWIq}F1XsnPzV00BVu z;a8x&y661zd{fN|#XX#&wx#{E^wwyc%kO=i!145z!EODRk~txiQI#6PFOrZ55;K8%ncZkt@uQI|t-apVGig}N z>8eqS#JMmXPgh!3QeA(a3lRD9ai>pq<=OM@*7~u@Q|zFhkk?tyMrA4FUj*7%aXnK< zLS|%;Q%o2@JoJ4>%eV9Lo{NbI$i|;O8%tRB26)^Njw$uk&2u$P3Q#CDBN_awqRD`Y~1`}79V#T13g+YYh|gYMaElElA97-cYH*oI%p}xCai+T zK6YQLzbjvP>n2dJDy_g!y`Ysx>c|`8Q>}fcA zX4_=5E~#Rh#jOjnC!Ag$yzKj|{mqZb`qpxaeR`>IN;qdkPbyVwtgUf6KNkFpb=e7~ zc$XRMIxaRc(<~KOq3LTmuvv^K4K>eYZpbB2gi0F@?gv&un--e_OBESm^u|fw??u>g z#IGd(O%UF%Z#Y2?78}+b$}60q&UX^}euZL$QYOmF&seQ^vFaHM#MrPAu^X)t zObYhzcX<)j#rE|!aFKUeXNLeogh?^3Nd&lKBkt7VHI;Rku6I1J<^pvT9wx9g6_i~zzCDfk2((OfL1B1Aw?@OglQm|7d>B& z6tlAOX=UxFszb|TD$iCiHmJQkYS)rlzri>VTX~2o$T|>osX-AX#Qy$#;0nkZr;Ov5 zBm%78n7*a_06=8C+$f&W`2>_)b%ymb^u|erDKkBzk^O?(SbwhLOL1Q{W zFDm^#NAccMTn7_DU7a!2tIPD)y)jFq9_j1T)lgX)n#K1FFo)mKoWdqjG}E$Rg?!SR;xcXS$|7?_*tybW<3h&qnvg#bqF82XMZ>h#C|Gf z?tOG&6BJ}F^Kx2qAAyV*w=tzZCG2=b z(z~AdxwzmhqXjT)K%vJOD>m9u!%Gb_Crt{?nIiVlXcIg@`y2j+m_$VC?q&V>vt?>` z!`Z^Rc)(Zz*E#dsp6Go^m(5`#Mc3RVypWfuE}p;Rs53g9+*yVfl|u%1w*F1*QOKEBvJ-7LB1QtXrox- zUt8o37n|)XImu@QRQ2$16mOZwz5PlFmx<&Y{!VQ5{ z=G#4ZOVyuqt)Xb=g87Ep->rdx6TK)Q?(f9y6UCCfad(PBH`;*0L5O|R9s6U)UmBC_ zs_4tf+!HQ%S7rOH!H!7gKEtcr!^8iam`||(KA2GJ2h0ED&R&CX9ml^wD(c+c9HXdf zyWuV5zTJYwNlht*QisP9!lx#`C_Pnh>F@BFx&Uln#{`LSSfVkZz-^r@t*TK z=j^@D-rS0+RrbGHlW}e$pYFK=I13#N4`@W$Lq^Xe9%=GRk)9pDqhllaMVkF{Lr!BP zaLX}h1&iM|Pj=tYJwEPB3i{to!jCn3qaYgsyusJUCo7PuHD%Ue_g}~q${PC!5v4UFB2n zu-!n}4m|u(#Mm^L<*$)$W5}E=o(P)b~T>OibK#lD-x zd2erkZn#DVyVju={A)`h8OwD7%8CcJFSljiHXjx~4l%Gex;I0-a{N1w+Jstn3`0Sl zljGX^^0&Chk`_}|q|1_si|F%7#N*^<9G#}uM{|ywm$tIVy-o*UIdFM%CTgJoj)|VV z{33?My3rDI%_VotFX;3pzVAc@f}-_vk!jiK4BmOuAwYIP9VNu)ccqbIq~s>~5{}zM zD1f$-ywX)GJTy(oSyBV#q(-VU7cK40+{h`ExaJM=nc^5HBQdKc$;^c%$*M^>W|Q?^J(dqt0J(am4K9hkeZD zuqPU!vzr{CdmGKk%YD~)nZ6Z@F58i?)+4N#ten@l*1;mF^pd33$g9MzeghM z?;~OUOCm^IqlRtS3!dKn7)EhTmC;KY7wvm{f+5$L=x^oMA?Dk+J!nl_C;wV?Ui8n` z$>Ma);Q;P}vpZjXL>*%F{Fl0aF8&h4?&!PpwNdl?XiJ{>$lv79dIF4^;PpnU#-)g=l!D$G*HV7nI_ui*OLT}Fu_CR%# z$a(ms1x4QDA@UVah=!i1(5%nTeYj4O4cMz`U=kt@v8DPK_e>A;_=?K`{;I;@`<;@f zEeQ!Q6UjO2_mWEl58`M1=Qx%Ntny83ccEWqD-;4Ii|Kaa&zm zvkm`57bL`eo+sfkp!8h(pSigz+;O_shqk6UsX$-j53skzkk_xb<`&HOFMiLTbEpbS zy+M~lzYTZkt*zHW15F=05e-8?2#G|$Sl+nN&%VBLKr#BZ0Bi8|oB@ZpoW9=EHm1~n z?*U1Z@}*|r10t+qp_)ufmM9V@q%l8!s#K{QDkDR+eL+ih)(wl;z<#157qSX{hBmbE z_^`lBx51MHG4lV?Sf=2!)@hH5XXdULPtoLeDHrMb8#;(`{@9P@=^XMvh4zUUV5h5V zWY~9odmSP9P$bDqxBGa1sWJ*Rx-$^R#TCDp1pyDF8_5&3V<;z>1;wYhNUt>Wgee1H zKS8lCw>z5WZ+@}R^OYMyQEh+9ERSfc?YE!#54x?KEjG(ey@8l*(W8*}oJJ9s4E5TP ztwIjX#IPm@apYfU=OX`9!R9-gO$;24+=$Vkq)*79O)ukED-`kTG45fdzyQYx5zT6{cWu&yg?3XOmCi~81$5R#a%+!o zzI8E#A^c%0h}09vTTJJnt_J&wWt2Bj;C3*y(8+YY_>WA70uMLWUQ0pz=90=&;7voG zk?!uiQ%=$xtT#$fa}jPg8!s_wM)(_xY`6m&a`q&ZI}ZDzZMVP4hLT=H*vftOAhvCn zRoM5ZBBsG@2mKnhB#9V%5Jwf-!TezVwOdF@RE3bm{hjbO{(Trva3@c|^-EOc>|Sze(KrbEYIq?UB7jN4}YTgx}Z7wXFn_wg1nHP!1B&q z4EX*Do@0Oz+a{DD=XEjEVB8%m;y9R<3_INJ7X2%SsGa}!@ksHPx!jqnSm>#N?-~%d z#?V_JO$qm={Oz#H`lx=sI*gv|ep6Z#j*Xp}Y@T5@@lf|Oo8#I@1XqJ+k*ZdUz4U); zz?Je<&yD&?eFX(X{9=f^$0yl?*9ec7@omGJa z9>SM!^QSok&DLp7;XL;J=}9+-9L){#8i3fUR}eWhKnOtjwQmM5kf`&Yj1U(Qq-t%B zn2d2SZnol2^j=O2ZoU&GoL9Pmue3O1p zO|0GJovs2#JI_?OC)Wyx3c7*<=ry^ww3{91>}dqLuB$+-KIMYtZSXbTzi6CQl%RIu z(^??hM3rmm?E;>_7sHa8-vkCsB7S1lYFkwUbL{Uqk+ z4>EFVpM=2Y`SK)F@k7d*2>Tl9hts;E!I*zGL8ni12Ifnbw4ar1hZTOW*gW zW5kvRV9~xL<0*SD^l-O3njZTWz8Mc+6hm!q_i^+ilX%4j=95vAU3Qudc4%} zee~E2vzE#s4y|&kQn;IDO6W}IGUsIug=lsV#6=euuhA9Y!#I5Df30(nn>Zz6K&2UI zi=AHYuKHiHhq*j>A=bM2WKumDF6!`C6WT|4oN2sieHSY>NxJbYt5O8z45t>lYT$2Z zWU{?ClOA}>?fy{5*go`8!#BNR7@FgBe&tSru%rg$_2o|u zzP19vX|9p4iex1JCkG%@_z#a~u-i$j!s*PoO2Pwm!%oh|HfzmAwtxJPB3%@vxovuz zCXRwGm%XRteiw8)>hrxiSKN?%=U3|#?=wfo#E|SO#==#X=62>%f%)js4}mNmofIp( zV_*4}ML+h@tvsMTs0}J;4m^wYpgkfiJa)AkFiKEEp{SHJx;1ML;P5+d-^k2uIqerY zNO>|Q30#@pLEHsCnX~J8c0~%F2F(y3i8hDP;8S+yIZ~(Bm||8|xYVA`i`+#>K57Y7 zikD3_eJC6q(lM ze1_Qg50m&MKYEj6uoLg$YhD}J?QNb$xn~u0v;j|98=*#tj%O@-&q7JV{a*$bXUUO; ze3pI26pPA=_pP{C8V^bOmzVseLy7$4FDLJUGpSD2AZVQOoV87RXC+^Lz<-CpjSFC1}+D_J-6s$&^uo5EBdJL`K@1mpFS=|HAfE7xEtJU+q@@QsM)bQL_g0r2~? z-VONLMtQtOgyem4AbDJLhIO_fVy?l61>a+EE3E8A%w~*ei0 z+%Ff7L_8!>6{7}&R{q%t!ERlp5OK$G9yU~0qBjNMRS3Pm^_#mDA2p5;YoPl z%{ol8dTRv6_2G@O_nVO-?hzvyB@|1k&;Nux7eL$Rzwrv`cBnCj^sAvT*yQu}bEl*q@o`h1EsOs4CUqyG(WN4?yeg2{q?!|t_ZF`5$pqFU zy2SM1eX$-Am|B&*>SeWZ&m#| zvV(5*dx8dL!UUxJc+Y-ita>lx(EVomDivpCd$Qs%UXgt5)0;#-MvgPN_erHsa0N~& z1pYzzkW)oYh!@(pd8c+t4MgAbRO~~)&6V7os<=)ZZZoCp$Y4e%{CIUQDM9TyEb`UE zRF9vP-K2ReH*huDCY>ZRGiz)m5vKo=N3JC|?o@NksAt|eaZ^^{sH=fztZ5@Oe8e`u zR(s7`oShdw?lQIe~IXi^do48lzhO*oDH1Ifk1=OjI78E@Oj(buQ=_6nG zQ5Jb4g<_RW8P&qKKbbK|dBMH8OEPBu>-AYPq>GMrC}8V$60v^Mehk`wJv~IyeJ+3S z+zx^~UCn!r;))dTroHNGk+`3Wg3OY7^g}w+!6A_!8H=VrqjkOR!jC|zJQxSxLQ>SM zFFrldB6XPDapWeIRl_Br7gW42U-*3wUYNMQ+?TUp*-uL8o}3yS5mt_LC3&j-jshJX$|NLBr% zs?FLvZDXrJV&$I^+O9vyUH;DtpxH@!6MnM-8l^wT4jb;ZMyU|&xnU$ZWM)U9(hPkU z!mWg}o9b7ISbGBW#j1SkBVUgw3znY8a34Vb!Mjs;_?h>Rpr_&uUA`^*cY@H~U zAaqj;C{?8PofTu(uQnxfPSN(M>)5m^W3PnLIMo&Up0@7CyaDedD)toiN6TE!*#Xh1 zLz(j)H5*p%Cd|dHiYbLLj5KYvAFz{3XdEh?q!+;t2c_!2GZ>RxHhaPp(6*Fiq{-G@ zT4@~@YiY%97OgMlD===?-D|>De`LMjqQRu{ZofUnIg5G>fZtAL>HY3C_cgS9Ezb#o zfs z4Qm8RuylUtx2|mQz}y)^@#$jxW&YPcsYdQ$g-$x(DF zN|l~1V7IqzGg2aWhH>E5z!RExj8Fx*Ii@ zu%!KzzFzxg(cwVb*UmH4+WwaL^hIlB-pyegW{TsP;%GVtE&;Rd*C~0|3SQVq!iBi?u2hLQwAC*dRi;SYG}^~Crq(+Sm?41ryq>Z;qEPt=(R>NdS%C#MAEC#0#?7v$8UcW?9g=!u>ijN-Al6tPtsL(}_l=Yendz$2IRh(x2+h=_?sx1ZJTrIRg?DPWJlB{8g#%e$9+CF67;eOz?&HFPmZ zPR>_QvpYvx0R;#!o%3T;-TqD98J2wGWRAI|Mbqi%+wq&DGdK_evL(&Ud%Ok;Y{ z#huV_at_^P0!=Z?oz;adI6u~ulJlDm1C|6<04g3RUgDwb=_y}EkMo_6EUECvV#30e zSW?-@79-jh7*WrH{s|J$_r{1&A!T5&F}bMH>Azvz)gavL)KD(Wd)!U7JGswM?6TI6 zB%-GsA@Huqm;uP1sRUt35ANGoy~bxp0(Enllw3WoT833N%QN3gO|s~I$|8jF{In}h zO>JdJ3Pgq%lxPQ^si=t|%mVHi=`)>?i!r?rMqR7P@Px4BJBnIo2ClWX>m!uA2953~ zgAIX4MOIwW^)D$I)_@n+$(mxUTuTEE59u6GG%}M4*hX7gKs9MmEv&7Ga-Io4$@p-KF z!Kl+*ew$cK0D~9`Tkn@{KRG6%WopO)%%NaHrWoP%Ar_QomNAxf^WTx$0hMBsBwR)| zE$qg%LwnWUMkO?LKP#M~?(CMkmoU+N22Z>eTMB=HKx>UT-D9QyP7#r*x_#)hX50SE zSsoa5W+ms%zKxuD;H`88I|+uK9DA-?rt`D1Po9AzgAdAjfz`J~--`0d znxbwD(t3)N4S$$<>7SO;Kh(Ub=}S6Rj?cCFsp7~cc|WGV`cCS?I#@mTBaEGd8}`*i(mgBe^S;PX#R0e@ahtdo6!}Bk_r@6Rd_xz? zxzXg6KKxHYxgg5}hHyOw$C?(;b4K~0yFW$a^PX<)$c5s`PEK|Gl4a2I6E=dw9ku@5 z{?~r<` z)J(Sv0Jc3#!YSb$xsB2zh(#LT16U!l1-0woZI6}E#3K9omRQzz2w3`#2RjMlow(-JZl}W zWgk*nQcFDmqRs}2PyY(z5@k3A11EtE@Oc&s{yXV=V3et2`uO$?bGxmaWHAqk&iTEximCF!%k~ zd)5)%`W$m_lMNpUJdDrRvAcJD7*W^b{wP~{FxX_kjk}JI_{AC$Ia3u76Dqg=apSbY z?#Q8lVtu7{f9ln3e{1%Tjx1iKd}Q&ixaL<4GnyampC|TGR?ql}|837y;)s=hWf3>P zA$?lvYXUrw{Y0)n5;px1{ta7_FyJ5#=ZBKuFqo7i(Jt8EoAUv%ljFKQ7}l^nDBF=E z?k*6M#XS)T=?l0vep1q$lC*ivrRbfQDBJAdfcK?f5E5aiXuzllqcDbuGT$l zV1y#aM>H*+)2<_DthK!Fc~HN=N$eoU1#jo3o7{%&hvI%DL*l&pfD82$|MpkT>-kjq z=Nkx_B=ZloVDn%xw}S6P`1^H~-86iogztETzDSn+2Hq5=H_~l?rIuGBZPVr3kGs_P3k>%V;1$zgE_fGYD zl0f z;t?$U_bOQTiR|38YMam-E|rh5wHLMQgt2~VnEc*yN0gSR@eo_gP9V{bG(Krm{Oixp zgD2^{U)4?Mc#~R|gHKnz6SsO9UUD>cC32z5`!NYgmCZ;-VjViw1YX7Z3JyLUbw3?> zJdLJ-qZj!5J&Cs?en?k~o(7T<5RTH3{Pe#&w`9t9s}bYM#u+L4Fsf)Wo_s@rFn0 znlf9#kao~YL)tPb>on4c8u($2oXZ9&S}9G>$qo+u-@aR3U&+Ya$LOsj+u_mZoV3qn z>B-v~C`SQ^PyTZE;~e#@+i`(099>M*Dfcn`6m&tOF7F6Ix3s@4HC@p3z25VYv~p&Q z*c$f?*!A!~TE~Uj9hs=es9YUycRf)f;MAUo$D?kz1N}OUH{DN7z<^VmBybwM=6f`r zv5j=e=QS(b5t-!aI{b3K;7L(gr;IRsUsn8gsE&ZyD;~WupVVSrPePkSeEPeR=RZfS z*BerNLaitCeZTW`@MR*1Hfi=5T{PM&ZymbASiBQC_zz^FocC|{X+@=QTKrybG8EYk z=*0f8N*0gDvM$gc1NUliH@7fwNZ0J!)A1V1FmJJcL7pFYm)Ed%N}~0|TVd*5o%;%^#9VT$Cgvo6{+p&W1;wE9mTw*C3NIO`y&b zK7Fp%1MYD3xk+$W_kOrk^N|?D*mrWt)qmQGc^y;G8CkG6N5>zh`ILOb#VxiD`ovW zu<9H$qI#bWPw@3ud{Ey_9>4WB!tChSRf{eL5}AR{n+FF0^P`VPvH!FyTP~dI_7qj> zdcO!f@1@RAG%62`EG!JQrCN|uT5NF*0fKh0I;`h%m;h2`iOFB?edKbnSz2*l>x(;t z->ZS8wzjNul#!k%6$V)l+;t|yKjKeWrM*Ztqi4*Bk7I+P71JsXLi)UWZd-jmSn^>i zUX3Suj;5HDac@LA2)3Q~xG1)+4FoA7ZG#1*kZSruA7jEF-~LIxKy-RBzE_rxCt0rF z9gW%fmXl^Z^|9@S8a0y@lP`Fm!ikE3ZC1_YH^l`8-WL8=m0FLx10vM_*qrd!AM>j} zs;B17eJ01)1w*_a1R3a^V1}qb;fEXL#qHck;4^PFHa0~vSKS)lT~{Ng(**lhnC>nQ z5rKE;SS8A9T9)hUEqymm!C>EGtp+%wAX6VX6-d-L65{BJY|LI&Dib?aI>t0PBlF;W-I80 zkI5Ftig%n_1F{wSarU{s7oA5=(qdkGMx}=15D9x;aGVHq-V^odzgwj8|MlY``R8BI z7T101Y|`qMtqE+cKi`Cdx!)C;za@ADXw5_S?-LF)2nBB&lX9tRl_}F@#gKmGzKiWV z8AtxhWxwD4i3(r6KjQ`T6vf~jy6=xSDe;J=8t-r|mzwLAsa$j?cG0xfrU&kyK-5e5 zOu}oy?a~ua3B`KVk{d2cq9MVax3b@!t~LTchNqc7ZjmqwM(t!Vq38o`Sf*xT0c4=6 zchfJ|}d6=}~z-e%xH z%si3zG*Qo@$yZFHAUq@HdIl!;asx=6e04PLukd|N`t>APnOCmZ&}Ih+VMU;pS*yq; zvCK2YvSD7MDt=Xrun4>_EMnNT0pHVib;j?p6x5E_+gFmFs#C&g!~`t z2Kjx_L%Z*@x&`{*0Kws-8GN77-l+SLRYrTV%jSa3 zBp@cs1T=EF(KR^{v||`-O25M}Top*)FYv`5AbSB|Kt@iZNeF+og28VMy}U( z*3}e*E#2TNk`b2arP@YC8bciZ#Hd+WB@vl;@$+4DwX$GSw$vmEJ!x+Z6lVZ1 zHl^hhMt~5fpjg87$ z@f$s1SmWej*)}_dy)u_U=v07cVlGU2#h5ooCXq#abVOdq%Rq^@e^Q$q=8c82k^ZYu z+&?yCdKOUV15yMC?!OS2+80Wnz&w(-o9 zGQ8lXBAAYt;LJ6_S>VZBUJXp^$0nP%!hM$&eYKZC-0RA_BNL?98=pt*= z?Li@fON8DpHL?W8Cm>31I0~ARCzavk-sH$oN=%O^TGoNDw;O@oWb90eypg%iCOc$` zuc9o!;Jd)=omIhY!+(f1m1E4lvYEBv{2e_Pn#%0o2_H7RPeqmkInqf0Gs44@9|=NJ zI(Hr;uVV3^r*+iHv+`PQh4u{y$i_pUBJd;`)Z?X26XEss+SvIda_6^dCkK1#axB6E zBX}P@NRCn*?7R%yJ*$9Zkjjq!%6zm@ld=|@1Tl@8Wi$-U=J&&B-dgTA9lHr8up5&b z(NIh(4_SH7Y+WU>9+%BJIic>?iJT2KCpN7iNjJvh;|4K!pYwmqmtjVeY1Z3uiR1h? zk>PB)A2afJte1!4szc{V_t!LAaPnGux)M{f@)u@GFWT&$(bG%3V6;!j?JBUMx)HyddS@y8}j_k8)_67el;N5EiM;k_ghuXT-(S#;KuqNvU^T4L4`c8L`BofqVqgbwoJLSZ5p>SzCsx$~k z-xlAb7(Er@kpJmuY#Un|-|eL|o*Ef_ZAeQoR|m4a-SO>#`~GS^Azg^^4fuFzXc<7Z zI!Xqdv-h&4s~hT{*pqy@1x2efExE5(Y;FHPgs4LeNxj*-qvQJ?&Bymfb9KEB7L)Ob z5^MPDT!-qpy~{)oIWzNzguP*;pxjpc05Y|X>{9BmU6wqh794FO4(g^43oy-7_+{gY zh!i@W@uwkzO3U1t&NGru4IqD?l43V^)@fWg6koe{_%?;fhzKgp0dMv=jwq&2lQo;Y zz=8Gd^@fsA_@K}?Tw*#-9R{{CrM-5-ie=GbkJQaM`+C`S-hYwnsaK8X}_CH2% zOG)a)@^vp9-KQNrNFSt4h>Tw&DI;>W-spcXPjmhSe084W95H;;O|O7_jm)n^tPF(; z&Ib?hK%qUy7!MI@yS6vuLyd$nd5aNs`_V9AI#e1E)KnqYM)HYrxC(36BQiU*;Luav zfp%BsyUfJLivk_=3wodo7)Tkeixv9PR`N44q$!t>QLDKa`#5S50>s#rL|hu&+y|j| zy;rCwouPx&32rp|XO+YWf&YAdcx$!UzqGLh9pE|UVmWrb7oAW1J`R6(^S56$)YN(9 zkS#D*d2Us?Sf^t{Ju53;zahe1=#=?>q)*A4Sn^BwPtKWf0PO14^8xjMOW5c0I@UX} zL6f;+ZrwCevo>m^0SUf!!ofgu=i6ig`NcY*sEbs=i}@~V+QYYd1!9bObANb>PWC)B zzED;c18AFl7dRW#=oE?9WeloSmP#Gout|t!(Tgn&rONU2oXS)IL7JM9KK3!f1$&nQ?Wt9sxU!a4y(W$FbEl^LFaqz1gTYGj^PbTsoR8?{gpGMEXA( zXeA;`(1hh>kCE6_YDAA!*v}t)FT;3q--Leg+k*mmeM;y4?M;#A5Z7 zYHeXs|6cz#roy?qcaOQ2B3W@cf;xcZ#m&HZZe+^HR8flWp{Qk)nCp2`$YQ@LJHE(N zatJztl@UEqlNKLH!>|+zQvGbiS^|F$1VzZDi6aL0pHq>^qTx1iQ-EWpnN$cvo1NG2 z17Ium^0Oz9M~R(@*4=p%LcYKxN<|okZHw!+LfFwtvCSgU0-jEy#fNyXHMStXAX(zo z7$~6V<`{C$iOio*-~WALSCzp&Bu9rYP2zVTIHG6v_4nsN8cSKvgIuY|QP~Kb@DG^E z_28)_mm_;;Y#k=eIymj`LR7_}UH=TFTN|r7zAfy2UQ&yKC>hFW>}LtSME=shMvK?L z=F+4AjrT?8)Cef`UIA^LXWa}iHQ84tw z+zdya1!qgYx7Htz=Kb{ikr8%HUsjZbX|-mm9u#g&dp z_JTqt;R44qm+1*PNOLkQ$cAfs3f+vFWsp@*ivGo$K^O*IjxX1s*QY?MPWy&{t*06- zG~x33-S@lj(UOgCV~JZYKtCP#NX$B}qG9R=)u8iHW@y@p7_+YR|B*Vr&fi^`O1UpN z7p_C_xpO=+kNzUQ?I#bC|H^GYefj71k>6oH1E?;7xexxSc1-{kyRmNlL;nlI0`=uV z3J%h%X_nw$!iJxppGovH$tHYBv&eVTC}y=@la*`{R+~rTf#SADzwuOk(!Io%6pwAK zWb;iotdXJn;kt%haoq{B=DaT*u0>K$;+y+~ew*bNtw^CIQcIY5Mvy_nfh?>PG`mCI?H()o^k@d_eyUPtB~|n((OgS!KmE$z`W#RuJ_*zHKR=sR zq*?LE4Z!Y%4Yf!d$cx-c+tfgJWM)NQ(DzyM{@xQ$ce|?vxE|E}+D*7Xy^ptfjVJpY z?U1X}ByoKfJ}Vjq`4ra>;`>XIi~uy~&{KEu{g;^1!wc^BC#qObG!4I{i-)V*`R6rH zA=^3NcH(3QiPpgtewV8`TqIbmATSf_mvs2ch?Zwj zPw?UAo`1H!h7XeQ`~(?y(Z!JQ>C^Uql#LZYo`z)e*^(m{Aza6Er8KoT!HX`-HC{G(cE7Q^h$3aF;Z;~A~e#A_L$+_zLhRx{h> zF7Q=v(R2ZIQpxoRMVid~T8c_?RKxin<;kTn$Ht8|1z{FJDMA(5sO?@S`kZx|47Gmj zphBL_3UgRySV|TPJI#%Vw%UOAPuChY8}?8jaTq|k5uGkn0z1hi)I#-?cRAXs+t>kk zfz758nc(R1&q6xlA_<7v)D{>s=fAnPE68eZoOla;KF9r5d3n zf}E+46ZX+8dto+yO+2OZ`o&i3^l{puF2B%BQ=i^g;>@ecr0)G-@)K(_Kf~W1d^$q> z`~qQ}ui^#Q{d&c|)#>JbyS}=g43to-%KeCnS3G>FG97TSGt6zh{F0y&n$$;67+*`DW(a-i5%RGa?Vl$w@H$J z8KQd!>B%l_)4WFB99TZmD}rp&F%q(k2f6^aHzN;(9(1hS_T>jn72kUX=Q#0#>5 z*0wo7m#n2&$m#zx7xFoK0CS04Xx zO2tT}lw9g)wO~9kpX0KVjg^JKrV?!UQfV1~mI0PRXubuOzU zb=tJ~V z-)Ni~vgsit$h{8YVohJ~k+;K+Wd8WwHHTUL86$G+zQL7Yr|ik}NFRTCUV`qh=vFRX zWE!uiv+pzJ`EH9WIvvM-D#k#Lu={dic5m(EgNuhbvnYRNW&y zDeyvG@s?R^-k`d}$l8Ok!UL4H%Q|mM(d`I}E%@iQ=!AD<*e-y>wDuQZG~{CEY~(rz z^e=LyXrtI?(!7ngzu_w5<-tACTAkN2v2yvRIV%WWKGi^4V%0pUg_T3awfBDqdna^% zB_GHQU}W2>LrUT zR4yvQ+;YryF5jEu#H5E5r!j@7&$VxpFfrtV4F8IUWKi?_e)fi9YZZ08VsQ-rvP3bA zl7~JS3MG(}V^}TYVgbzojii8_fJrp5kBgDg`E|qeFBvi8F$e~u!4>syKl99zhAQQV zt;LOIIh962lC{5Y3%fSmf4^qK2Zfd(6S=o*30os@De<2Pu~!<_ts-ssKKZOm{-^W^ zlq{fQCewPZH9+C`@gt#fNjhO25l1mOEh~+SwNhKgc8oCmRP-$KcJV&b9g~*jLe3rU zqPnqoRz?$RU29xT4oHJU#>N$eMS3nNK04S_$98jrEqOambkrV26MFZ zh2rLca)EyW@2sjJ_If!)t4EO+D)3H@l2!_5#Np~GHj6MAWH0pn*YoW7{W&mj%6)GF zr*tk&5-Eb;%eh%o>~gR{v!PYFH88u6_V!iJ5$OlebTrfws&O__{>19RMy9booojjD zNB#aLZt;`H5F7thvhRSsbGsgu62VDFCtYEEkMxd+S)J%^;$5?wluVo~>RS>y2E)m0 zi5aDbh22DS)(6{22oW3d%7AabNzg1gV&cQ4cHa^IQV+h2`wV(k%+8LX7$!1ViVDj= zY4pw#i20#jFZg(nm*U573zsE}cCR3|VC(C~kKU7S&{MYXIFM#%`D>#0l-l$;uFuku zx=Cgo3NEd?StC06^Ftf8>7Up^nZh9!J{1GezJkH8FFf2AwF!p&U$!%nbYRUUwVkI{1oET@l;)H%i3xJ_eyn6eqs6M_|YIXnE z9e>ROxA5W^;?8s-wWKrO^dcr#eJX$xOO>#j|7u@-!dOP$3Xm}R*h7=gw%~P4eTyR| zYE%mLyYNGSmBm=S1dOBJ$E0%^rv5i_2g`l_%+*|?VbZ>b~iB+fGN zpvTC8>0X{sNIbB5Af}kEV2}zB;`m8ShoOSA)iUbDor&d&%7^CVz#`YvX?LLgg{;U) z0rl-#VBSduvZm4N#^Q!ObL{n1&%{NlHGPoxa+?EnqEUiTs~9)q!Jm*0+&;77vo;@1 z9~P0Pw~T1BR-d9Xq{s%tOLfU7XfG7lJ`7jQdoB()=~uV_6O8e!DI(Buou3E=RMYlV zawKRWzaa)*CF+w=V98CNqe>nKz#e59S9JY$$-{7(nI7;zzDW?SK-`JU?$S=is4|LCX1z zX+Bye*&29G1EIwtmnSsS^L-mW_%<2*#m(`Ze@;InzL+j8suDQQjY1GSi^R*U7ZB}d zh@7y@zM`;e-^V^zld~PJSKn`HajdDge$3d_etushzE6mWdJ*Eo#fC`MPX#6bELdoN z;!Wpz^m$*=vr)|Ay5yUehSAd!0+(r?pJ$gK@ML#-e2`L5j#6V@C>mPAO=BYLxxX3} zJz%8aLZ#4u^^(Suog{1BolLUhqY{dSFY>alVt3mU$?{(Oqx@jad6GZfBkjSRVE zg#z(|7_1g4ZSHu*_ou<=8GMS~#unnPt43h}%CfUT*X()V4wv=UkETWTDhv$uom|DD5=-lnR+2^# zO{75!pnnCc=${LnB{I%YUG*q_E16_c0s;_GlZ z?}UQ00`3p5DK;+Gr`~3g`ec!N`?Bf~AoZL%&}9NbjY#66>%s-*@@8Ws5ObhVli1#%ZyU zS?=ttg!+Gjt&^;}-bfKviTEXEVUW6bP1(6K?uZhaIey~v*03K5aV4fl-gHD|$v${O zWm(-tbWNQ;E3n)n8C{y}S^<{Es3R?0IofpqwG*7BqjgW6KDGN6;m5_^4ppEmg@0q^ zZmP=bBKVfpI0cXs+O+h#5*) zpq6{BLUo}CzYRn{ywekXKP4&&UVM;B`u5tj%eIYkyQ$LuBEKJt^vK0`V(&nr-#^$_ zPvR`FZmso3)QoxN))3@Xb9S@*?vFPWbjTBqv|YdRw?AU0Nz`#(nI z1aL(dCgz*ycm?cyfk1x!#hPZAR3rqSOv#!(GkTS@W@AZoJGk;^^gb^mfpBNT5$r5X zI={5?vgbut4JM?a{eW0pURTB`|3wJyA1^tCVIrRpsM%h`K_9g%R~RiX83!9XK5$z z1Pv(0p40WW0O9p)Q4q(KwJ*sX@bi{kGx-43i{DKVTCY3YpQ^=Id7Whc_tBCax>rQI z#gVbhFd5(L#-}bm3Od)IT~5nb0jCF=N9ER27u;^dWggaO8V6SLZk;MPPq)OQ%eDpi z?W|zc@3YU@2kF_VZ_B~&+6`RZ`JV0vAXJ^b1a6DK0nKMsV6V#u=bERm-2E!BjWA;Q zNb#}DgKGC)V*1_W)FRjaBke7qs$AQ((Ip_#oze}`Al;1uQqm>eU2~EmEgjM!NGgr= z1e7jmX(lr1X41`h(QohleS59{oHNdGFor{iKJSxv-`Dl0W#eNz^{6Jn(HR6bo1G_~ z-w>@?bmX?H<2THBfEYP$=H`awW)2CkKFEzlH>YcQ!7#8%(Vv=aG#$vvh9G8{Odd0jsS;%SVyK~~E3J`?`N}SS>B;9NJ zCj4pwQSedn8m}}cU0+P=HkUYs(_n1Fjie1gEnl{lxK0m!bPMEUoGJZR{pm4Eh!sAv zBZ!^0y(PAF^e;b(rL0{DoR@$)nVO-(FPb?0hC7t;@_XH1)={Y6XQ2h<2#;vi)rqtp zZ`gR}A9w=ozLJ5`-w2OFN%w#|-SKt6ev1?3LihkwuyVD^4BW<^XSwa`;UGFu4x}u! z1%r&P`M0zQ9^}!*hN8Ll1SJ@{XYF@F%V!!N(P}^UL^hPY*>PkNf=|uM56#b0JrrYl zL^c402q6+}hrKQ@FQcr6(o88$+^tz(8(40uIksX>=&vmZ=NTFTT<*19oxo?cl zbR#zV5v;tT0^0Eu4?lNx?87J4&VtXMx$M`=xL!8xU75`Wz6sR*MDB%obkzCDbvwEA z5ho3vv#%@C9PPv2xQbDY`rRFN{>U>%U1ze*6_h&$U!82Fe5!Udxv8Zar9=?(%xRd0 z?q7*lwA|g1?{VC;8b73!B~Tir+qlfLOCg47+Fu-fstn5lEo1SSbzW$u zzvu0`sp2gj3(jWgv8bG8%juWK{i|#DuLe)PvjS~iK>jF<0d$V zo=~`A?`gmKD~M;bmUy5ij6K)JtGiAZoo`lyiP9NA8?^Htm${D*P|zqt#*uXK_zztM z9PkuP%Yd4HfS`?)90qn%+!|$~`R(AK?f2Cup125Y!y?H16{@jruyXUVqe}qi=2Etn zwF1~(osV-X6#!^-92uT-Je>;#FgSqO>p6Ns{4cm=mI zEhb<`yTZ!bV<6{$2cPy~MW~499O`R=7?NbQrc452Lp4U}2AICM2%JcL>&lx6+Dy4} zGda3_iM$NZyah<^3F!dCZA6DQbm7`y{~25?@tfZ)>dN6_EJ@@P@a{*A@PO>0vbc_l4eU`G4^dSD`-s zhz7-Pp})Gw8c(1=qssw>h%@+JirNVP0^X4@-xu@z-*gH=(3s!%D1d{L7}>g#fe$!f z%?H%$oj<78K;wR7Lq)HkB_`s<)ZLg!f&Rd!#5PD6Xyw{o<`v*?g=lf!Ohh&q3)({IZLC7y`(qnR2s1Q6(O?E%?qx zajpYTks~}-1GeIa5zpBJ{_V;+xYT%Fd=R{O7zj*ij4Qu?0>-T~DYW~07 zEAubQPq78sUNAyeA;9oK$ob*g00bH~1&MPCU3|#5^a<;ZVIZ6w|6Qh|yaD>ONI4x3 z8HUIXAJD=?a=z zygY_^ANg-XfGHstJQ~HZ(`CTmr8_%~s4LXVXHL>Yj47Bq3^AQ$s`zB^YZ0x%_nzDQyUUG5A&FIYcIuWy7b zSclc7NF3m@JX+=YY?kcXcKSKtq~~w13ecX^KHsv0d>P3FL25h;TP|DU zYijv644YaS z1k7c+^C0_x0p+=|6NV@45)Sh=*>;Q{nLvOc3BLn~nd2FMWrOiJp>xsSHbxM^AMeo# zYs`-rpaV0*b3{$3d(*75bn=CCt>0?x;HXw&h#-zC_j^ z&Bg8p=l}96|C2Iq)E`ChmcPp8Z6V6HLCkT-%~6`XuVs^MWP(-Y0TtI7bE$S-;3m!( zE6&ZR%HwEcz{iXJH8B4jXre1!MkYBR^tkNLp$cM@s}$0B>W zFj4NZvV7#WT(v*KcPTvLa02A7Fe?2hvc=&1(kgFF-a`_h2F%6U8KjxZq8Fa%E623go!T!U%gA%t^4bQl;n6)A71h~Q&4)IW%6qJ+B}03rWQ^a}dGH2jYYBLDrDM{$5?y6kSyTr>X29cUN9A`uq_m(jK!Ku#jJ(vG~Lu$}Q7l<3mw5=s}mh)Z!G65s+?gUV2 zx3*tfEC0`H{@0m$h&`O5SWl_l<}|?jbAOOqS^sW)jnb){ukI#+6)r!Kc?uKOk?H@? z%vF8qp(|QVTc+!(S@Jn!Mq{MTS*LRIqNs?=qpyl9&rX9x*x{n?$wje~6hKPk6tu|t zH?{vChRnk|8v*Es49+ne+ZmzSH}|wqwDsjFuea_D&_>EtvT0i)xb{vLS^UX3U{r8Y z2s-~02gHA_QH%gM%Vz60R|4>}_WMh_={1)f2gze8h`Ity7+7kU_sD~3ks~G!1)|QR z4^k@33XCPN^>b#DBqKAkQ_J7`RFi6Zwe!~bpDt$*0?nIJ3uG)5IXSsJkeVyWa~n10 zar=*L$G?S|WS}gt_I=XRI~B<7M7tqFlmUvIPxlk91NZ?@%L_~mZxQO{$OQG7j{y5# z^CAEpyD~;b{*9nzvj-hDIXxW}q7?6ZOG|y|GXuA!gJLHhkC*{a~l_r}+TE zT?Kiev=KmYB2BY*Du^&khar{s_-YX10hJAi)H^YbCn{m{oRiSeAJ0 zJz?e6u~7{JxQg7|2PFl_{8+%nNG75?E6$b&efetmYU z{b+7$V^fv2pb$ra2~Y;q6Ff>{R7L9y$395(xy}Fm22WlCq+dHZ34kNx>!MRGIM2tb zlj#OYsQO`STYz$;mbA!kW~2wq$SAVHWFEH<8^L-c2h-Qwc$o` zN9P~d*QhH|WJekhfm%Jxo#}9Z?u*O6=R{3iJz?7C#_Z4MJ$`>47w`~$U7Sl#KW_@) z)${EPzz;}Mf&8#_bZ|ol?j{Q0NstO#*fidr&38_gYKjOi1iJrk@91}>x)l<@ ztV%UiriaflWsFg4HG=lx6CmE#Y2e#H;PvA-6j^_wpGEFevIl$t3nAY`La#TfR}}UZ z+xm`jJHz8b0QRHM#KgoZpVMtF|GBSRiqlWI0IP&cEpTgb;BAV;>8oY-?3LYLlqUdF z(V{pBaC@$CPTnE|>If0}d*&|`k9U9EDpa+*zq8*6B8VXYlGdkB62$u;$mek)uGpSF zB*wzN16gv@#aAk?Aa#h!?N@VvdBe8=oi%>{XE>!NqnUeu^U`jyfYGiN<9)*)7Ke$T zp4&YQ4DhHJT>?;?p}&f}ZJD6sou$rHfXlx`X>wq+B>Bg`BwN{P{cm&OUkOF>ptc9Q z!9Os%H5|AcqudYU{YQYp%9EW5TJx?vE*miTsmRn0UggUE884}GC)@3RpGc5+grp9x zvrdH}<_{H>yvu)NWf!-k0vz0q&$Gz+kpwNo`rTcXJ?2`T8Ml*`BDiyL!C~4BkRaV zs%#*1WM}BNuC+DK#k@N?frmam;3ch4gMR*}Ve*-`}NB#(AhjWa5rhxhah<~=yQ5&^VX65iquwt*iRNtjMFilt>? zlg{{eLPOQDM}ibLlcY}Bx6to}yjQ3cnkV17-0>(hu_MG&y{OPaHRmw5*Ph7x6DhMe7cOxP$$fy>!b=G_D+Fvthi~&9)6!bc`Jb!@Eh@gqU{m5( z%~(J#ak?Y`9PqG}sv9eVM;qx(_s z>5+!Z1Zw5u4^yJO9?lUX!=ex_7)^;WolJXq?6b3ZV;JZzCg+9X6=q=FZmqL(YP}o- zezB~^!hq9}a{q!#4R-!cgE`CR5dqlNY|`458!*`sZ1suz(?P*%_B7CFKl@5R>&?jk zvG%k0E!8C;xopUoOcuNbgne`qV!(0_aCF12kA`;+0A`p;e z*5wUJ7&gbh(Xf5U!~(ngrMw&yAW!~!s<4^-oi->Olg!GV8Z+$%=WojSw_v(t1ekss zNn$C5th(kQ;Ny1I_P#gsjz%#n}uh}-UrdOxVRqp5a7 z+TXEtt*Eo3sYLgR5WJITLi$P66Lc6u!aaV%+80t$yom!#mdFv!bDg_#EopL*68@49 zw$t@F(sbs~)XUGhy%=IcWRh>-d$4%kVF_;ikt<+gZa^3oOJdctqi0xg3hZ~C^w^iX z2Mq~?QI^9h1|tO&1?bix8NV$iw2#yJ5^mqK#ZCGX}d=yy@YAKs;`lW(S% z;QzEHD6I~0=qWmF^lJAff~lZUEII{k-I7q+6$Z3TQ`ikp&&YcZB=?&hO|rZvlz<#3-A25l`Loj^t}xk)iOZ zZiUp}pcKAxS&Zv^z_w_Jpewq?ml2w5t0MWfp)q` z8VRpm(9F&Ebr+x?SgkldDMUDp%LyVn7dF>Z)zrlD{FyQW_fMMjss);xm6_@lhfWbw z7!uu*%f^U;kk78}#hVGnS{(Dv=K(h$x*o-htP#L56(8Gew(pL42@pVf?adM10li(B z)AN9BS0|NgyA#Ft>mPzRLC}x~dxBwHXDD4nfzmk?l@GiISsBMaf~2rU*p`?#Atmj7^gi z(Z{ZAbX_v&*mZWTPng2H(DZl~2tHffCVn<-&0n!x1~@1~Xh1vXv!&OyiVckDfeIu86U8HGk8$(xkXf-Vfj0Bb z$?eiSJF_VCKo6gZ4BIIPla7HsRFIu|ka#+y{d3=uPB(oYH+|>#;3pj|2W_l_Rqmz> zjjsAST90VodEwqA8oGCPvo}@NlrRlP*LTeq^e1(6y}*|f#Co-w*5dYaP9cX~^cK0) zxI@}d)2(EwqVqCkV!vj2k`3}=-9a#NfxI99OM|2Jwa|Vem8(N-&yy_p>*x)SN@FSz2kOX1KmkUjXu$#YBR47B!BB_JNIXEQ%Vn;7vVbmWFAP z(5@^Y^P)KseIC68i!;{cM2p6#_Z|Sb1Zh(7sCWD@B6cI)(YDeV==!xPcb5n9Ch-sR zS8k>)K4>b~t9q+~C)}%b3I~!j)4G#{^gE<5_@=9%^P4D)r|z-6cSZ@(LwsW~F4;ke z;R#}=?H@vROO`yP6Xq2C``ejf?KYOkPgt{Y?Ey>WRaC{b@OF9Ma(ML62J;3l<@MP< zI%n%lY_9>)ZPaN~PT5~RHRLDm(<;d+ocZEWK%}%TT;s0Y8^(U0W(Dd-a<#&aWfi>; zY}Kpm3f^pv+5$3a6*7g>fy-S6W+-%UuiZ^`#~ftch~UTQ8=1c1FMTObTs!5>e&G+q zob{hk&@R8S59a(g9Nkg{Xt~^UJYYojYeVrvl3=59*rd$Cbz@Is9FWNwgcPj zu6o~A&kxu8J4Dl!9!zm%ZR7cm*J!bYoYP<uKKRG=$ zD{RK5*n?TBf}%BCT=j}S@T-vM{q;ttE7TFmK3-AkiXD zs4(Z}?9F&&C9fiJx4G`6y^pW&Wp5S3dx@%kNPl4g=g3r?BtT) zw91m^s~m2=jEH#8Wr&3QBA&%nCf!!T{I)BgQiwHrI9os?m@79%g_hY<0!9LfpuT>V zOai(=VsIsTm8|$~yvO~$Nr17?cJ#vQP4s=sECaT|W*T8i7#;>376sK(QE~W2w%Y3P zqSB|6^4(+UuS_Y8>Mv43BH-Oy8JbDVib^MT5uI@x!e`0CC}r| z7J3_&A@-35=l#Z9ufD7SeMR&vTdpp$`#sQkF_!vj` zq%yoys$=r3C-ynG(w=8!v;4yfv6NVu05cEdWL#-EWNH}{O8Y(7r{)NYhm&Tg#Cd9H z*0fQyhz4nEBgfwtVXu?y^z)Psc=k<#1D%|9TwT+*xt@8)o-$JHB`&a0F0rfC#b&lR z-HmH2dUH>cyYy?^}(Q zDh-&@=%v3AEgrht)*JtDw)di8PK96PR84U`WwVSRy7uxP`FK7)zYT*x8rZFva>Kc z!HxHem)&HiCg(ICandky$bV69nq0WLN{+0bfmm&AlulaTqc? z7t0Q_cQ~zUNXYg8CF;+@uGQ%-->;@?aY%>7r=X$>hT=_zfxm7WxOL*qm+_kE=9(IL z>b^*AhRwM9P15a+dp|diUw!!w&R7GywAweXS6cldbFsr8Yu~${hy)Q06%xQ1=;H!uV?bd(MaGjR*mzH@2s+Py3fW8c62;O=R3Df4<{j>`3?Q|p*=*^ zYro1oiqE=Qmfr7Ef{z_K*@<0D|AzRv5dLfN%hjaAyKAyevd?iUexaiM@+=-`P^VRX z`Y!t3O2{P<9Tdf+258tjoSJKh##m`Il?e~WTf?TFd}5Cn^tMR_C8b4s$=2O_AqPCx$<)*`Z z>YgBN{_NbGUod`R_z!NtzegZWFp;jv;8s`NR$I*UPwuuxI76P2_T@{YiP>wX@n|8X zppO@pZIp?=I`uz~zOEnMQ1T*ejC8P5ZcO=Lt zblf36>DX^=+0#E>A4b=-j28A$wq#CfE7HRSV{M*$L;V$mW7Z`t==)k~+zORPPeqkMPU!THk{h8VyrKR{k{g70_!9DlM(F4xi%$}6VtS@0 z7PH$M!oL-aD-dQ1)4l^LEZGBf*F6f6;K-aVa?@MiR#e*OXasxU-h=R*74{$n=Uae! zudB}zCkrO{cIYF{JV*hlJ8E5sfGD7s_ z!f1^vtQkj3H>O%D{}qaW^wIK|HdDS!8A@m-&^490UTQTa3+i*&?!|l0g>@~5QSNW= zD9D2M#F>g8rkh<|&B#PT#->Qg)<*=OWM!Jpsr1Q4q$1YP1{WYrj2(r+4Eq}7v%S|( z^p1CF!)`#h%u&RgJe<$2BE6HdD>32Xb&t$8>gSzmU4LDPl>-ph&0X^f2I6S#0oyvJ z0C0wktGbyoJ9+-P+Q~0rHf-K?rm4W6KPNhLDE+wD^c!c^Ni4>TumwV~#eba!g-T}g zTE~WhktC#5dCnuZ#KA`v*$vDK0oTv2GhG)U;M$+<&i4Uy_Ds=aoCuC(p#>I>00Mji z(=$$(*!hC_3czihQ)N3*bU0^Unf}CJ%|^N`wvM|~I^LCGdKptGWe#EpaH9XLb-d;m zi>pAk&s~>H;J+Fpi{*y4`ZnNxerPmZX8f`ELMzGAzfmG6Zi+;fJ%qntF#@+!E=(tF zV-5+di^mfJj{7BxrP$|oB_e;yMT9~bzB;B5cvux8*mAw^+i_w$;fUscqHab$-u)iY?4W$RrAsc$R=d-|&y!c{`kD>xb%Jt>AzG>Skx zzoUDvgY?$>NSO0BaEvPO*`mb5SPgWL?S$9G`xho`#mc^FykcK6&$Q#M#hol97?`$uC z+@9-KL$?d96WN__A8E@Jv3BChesxL^Metfj#~FFfx$QCxJYC*qU$@$&msg;Co9vYT z2`{oi`BYK8ed3RDs*70~?oS$V`9Qh;>w9n_&?e^)&b+|*SPa8B?3e88r_sI6ZCh5S zf$}7JdZs-Mvzu{-s#A47JRWJu!B3|hPTalRp4jpB*W2W}XwK7&1e@FzTdR5^$WPCSzlbkR={r zO(MrdEXC_Ju2Rhej`DN(QPRa#$VCx9E3hbB3pICd47f!W!BVBw2pfN%dt+Wgy*94zGdG)wbNnRw{r8$|Q4RSq58-oG2l_LECXf%z+Gcpq#t1d6q21QQN<4%?^CE=(&;2 zh{K&*^5pw|yy!ENz+2BurZqH7rF-IP@z)z4^QCD0IMcs1`1dj`tAMvLQ_dHHO#((m zm%b(6S-g|MIPGuxug{F%A}1U(htb0@ zd{PiQo*>SAe~;%LMLRW=!8Z{haPnyOWaQLBb7*w>gvID1Q|Gtzjz-H*xwT0m7fjo= zf?bgfSZ@c8RbN5YNJkwwi}~zx9L9pn7XhTQcl^CAy#`1{-fa)D{RY4+6r96R0L)_z z!AdS<_l<$^7b&8esCm?hD8*`QB|wqER8Q3y3Vj4U3PT5R)fP=L`IK@{gz>Y&U_PM*ta6e|0+%xuibJXR_P4hUk+$4S~CjzgiHB4d|X8AZ7$Z(GDz7X9zD)1_9Lhl1# z!}?)fNc00=1F!eZAHIeTf)H)JQfUWfa(V>S`5Moisl$^A)yz{G=%@JE_@EHKg6Dj! z=L>6LRi>R`hco7Jv%<~iIlhE#=HN6Sz$7ZAFzX6h#l2b)Lw!7Qe+RC$^SiLeW>sFR z>ms|5+~&X$$CfyW?`UH@T&68!f!yZ!9lbz*(QFf0rPnBlu!Mjf*v}n<*G27$`#C4z zN?`rb#WzIknbXY!ej^Do^2Yi<6%YUOwt#HrB8mqKoDqyV{u!q`LV(n`NDfjeg$jmO zMR3cdB`60-U17WZOlp{yK4;yflMk1LNFm2Ht)gDX86(_w%{4%=6tJkc_3*_W^H8b3 z!=VF+B?_c-54Ty_k!G#&kVu<)v8jX{x@I4fW&#n}`IEo;k#K>k1}v%ES|F}8Ay%ee zH-J*lQ}@Upql+vL_W`xNnS^%t&D*Q9`GW{uQ7fo7XgklBgvq(taxhgd7i%CQLoNAw z4L2NqxCh|Z2PpU!avjE9XdUGXjI0VkD^+aS0l;F!p?s~J$0zq<>Oc@dRi5c z$?N^9q(U3Y0cMr@>Pmt1L|XG#lYj#Wxa%bzet!5Z*>BaPyB$L%0!3k~{fcjkwrq)1 zgd7X83%ppNA_y>V2cw%k2CZNU=<7x><$yZ+nkxNo?TPXe7Hp!$9y{}`lXuO3iW9dB zlqgaApp**5k&k`KqT0MCA8m^2ef&O?J&wkL1L>*p2Nao*5C^3;PkBf}acoxb&QvRL z4nSeRFVTM7=goFw+ues&%Us|e&C&q{$TRHsez`w`IUcmN9yO9V8#{bCfUqj#M=E7j zIYi$E{}OROQ`Ys|c(#U_X5GPl`G}dMjQV8x^89F!b2h8(bjl#+m&Gf*{E%bb?(ZD? z_kSx^lB@*6X?V^tF@2hzj7hlSaL5V6>Kmq1!R71A^1Qpme&gWqSDzfz=ajQje;YdrN;|?kZbcph@_k^P==@=z4K+)6 zt!VO=hPiuOpV{bf*ZfXpYX#&eCU>1yQy&{cjb_HKpq9oAtqX}0MG-{^g;9e7Bbj&} zuxQyr*7h2fD!9^QIJi$}5HNvexK%S;GQalAKF)y8d>R^`7OjC|D6IKtppw8q-sQ9@7(g}0ur2B`pf5n-yBt?K0!@Ssi9%OB zWzrt8f$fG()R_Bgmy<=m%=lF`1!KG;c;EGSBQKeXbM1cd97<6%l4gbZ(p$#0R0>Ik za+m+QEHV801bs%-GSET5ll~s-T{n9woD92t>^nK z%hN}bbZo2GfhRJ@7M(tc7Q+PVsPua+!uv~iBkg*-_u*|mt-WM<^fZI0RH#ydrO%dK z=SHc`48e~M(|m8>z3f@5pG8&^gk(~zYLJ3UR5(I-Xu2W=TdMxx`zL{6U6Exjif#4x zf3F>C#SglB3F#htAM)dIsF!G^jreMW0HOudG6W+i^qc_qZ9GHd5wAuKjAcua8rsJq zZ|rhHFi|x4O-~4xI0zNhmCxNUWudYY>2f79*;ClY@N$`h}EFIX4IW zk74_3#3uaGF8zrNj0dI!D*J+>^@r~}H{HsPKCCQ;Mx(%G>4{bWF*jXqQq1+Xd-;JK zXJOfZ-x;;o(hxI9@Kw{^I;LR>kfIh_swvcOy`y#W9C1)At48 z3DjkHVk?RYK**HySl0>C4yiu8!RsseEnm&=u4->M=(o%(C7M4jVLX%`8F^ud zeIf~>eq0xxu}iw5zNrlqgh+~N!hY}*pnY%D%)>NJEJjZ;P$GCAThN3f5+by42KPcw zR~TmH2ZdPD_wY64Q9s_6rN!BfzgYXE5C>2~HOfi4)51T-7|kRhnaI7~GsB+D5mg?p(Z@zWEB%uU>%evO#@zWjg^*!cr3?q!E% z1qJ#sdR#-`C4f;QT8fG-adYSiaK8{n6w*r1)fDQ|G9F4@1mhG_x(K=+$?6v1(5(G@%gU3D_Ed3c@Fjxxgwdx7#>X!6h5BCg<-m3@nFInKWiA_WbicYYK0I>tGJcR zp%bS=qRt5^otZ3~$R95#!wCE^v1~~|;tUkRWALrSfsqQ?X z@+7unH$xBmkh;duU^~Hxs~X(Fp4-%|p${n~Akm>eFQ2r=(2~G0)hRy1d6(d&nqc}2 z>a~?@_}_w`?33xUuKBq-dv^b>4e=)xwJQ9vW{q2^r`TQd=$sJhN+7Kj(V)Neqh^c> zh$ly#T8uZvPzdylH(TWAcG`$%|zlpZg)H3dwb@M^^c z5>J}YAvB%L0*;@)3WeRLLU^7zE9G=mK6lQ56W_xOIPphY`TTEMWdCZtoXV_MH*}p) zK}!|vgmf#GTo2EAD}zTmBhuDBpberVyrxA6jvMO zt3>YMi#sE~T{FS_roqAT;wTX7{-1@9C*f=qhL#Q_s42i_CKLz3EU45du z?K>Jxm=TVZun%@gz;Twi>yP_k#tro8yv|d!1+0*9h5-hqI0>|_c_4eEHR8Kmdhau! zXliyQb63Ak87)cQy0R!>Iq>>8E0~LtK8THse9mW*L2Ehi?|oLBQXhfphkXBd{1(T8 zjEZ-mC_=K?QgPftS;n3CEGRYQoJH|7m4-(LklPB;u2%*Y1RBoqf!B$&@sf~)LVqGUrCo^xNfxqNnQCTu-IwA%j5u{I_nQ(XI4{Z+&5aT$&mDa5aA+?nyKWq6?XgV4-|Ue6-y0Bp4x@3%-1{>zLBcr2w1 zPKnJ1+g>eVIz`ra)}ne@L-Z^C3N95FN%Xh97Cn*H>oxOjJUNlP^(}=dllcXVa_R&O z8Zd-?BuTTS1_ZYy)#dodAJLd6jlcQRvy};Z4qx9vHACH@OW>U1hRW$r^UP1v-o3>Y zkAA-W-9pqoH5G;w>h{+A%4Pf>faE({JUzIfw_t*?3##w6`-{}w0$z?hRBSLiR^Nt9 zlLmu!d~a}2N7R#&?kq#Sc&86t;pWxX*H>HK-=yN>@elI#C4cZiANAtv6jA>Qa9(QK z3ym6~{UD>@TbzreN#cKj>sD=Ugf?PabS{e)0m|DakQWtVlR-m?eWZ$oZj1WrwbwJK z?qm}>@iPb@F(VXLTuEBF%#J1Q_wKD5uCI-lJ?RLUz&suBrJJ3=72J?}n90ourMkSW z@?}pb)1)Y}p8a0n{pI~~)4~06Ae>jkfBS3kNtxU;)mY5lWMXde5pY5J$B_I{nB4rD zQmRqg?cKqB+aO<279_^(N8lrP&pC1^4QF$HHyPbvW6Vezf?K(N;E6)uYJvkt9e2GU zh>7-m@O8rd_Wg|xWdafFPYY3a53|;Q?0$INYMTCv_5FplA|03~QImp&!<;?YO-nIy zz=J-z#)80#hy2|fV)a>GudF1}zyF{GO9D1EYJ~_EO%#SR+mD_OGUoIYSJG(^0OlO@ z5&Tz^=c8%EA-j%oJjfXQr;f3l$AXy#EGDs{nK9AsC>UG(uMAq>^F?nXi0k#pI=WzG zWM#n6#?4V`dyU>?)`}<7AkMBcbc5E`!vZ5+X@6#olk-~TdvxQ9%J-p?i3klepjz-7 zAN;*hGpL{LIE^D|gnQ)$-&uDw7o=2(2m5QAMQ0DU()7)+mziVBhCn^*g@ALT6#-Q@ zS<{jH92H&YhPuTxOYkO}p3*YuN$}1C*TWIB!W76n<5ldS`2tDSz|9!YB|g)>-k+Gs z^hpx);7vdUaegyep=p|(=NE>w5tuNZvq8ek1NU@d=Xj_1I$XH?WpmwI73YI`sJ?Mw z21drq<@#n?IMLw@s{{j-mX3lQ3QB!4!NHRs9FT1);yAt_;A*;eqOPw|q-;-$> zpTK6dlOR%AU5c~=U#N(+Og=`iBI@2Bl{Oco@#9X-=LjrL8O_j}L|f6^+|zBi`r-0a zOi+Ec6tn{WPEgEA5!fFveQ+Z3J_&|LY^~hcKN)+!EOGZF`u;DCHzzab5!xb=3umH~ zcPA$IrNwHut$~NWX8;YVq!Vqic>ZK#6$ww=a#Wx7{lVSMk_f=lsd`sh*=ycZlRr*H zXCH@y=*uzm;T~l3jc)1=HWIkJ0tZ+_!a0UB&IRVh3fgYI+;3Dy*G)H5>%~!s?2mB6 z63{=*tP`#8j&J17=iY7IKZc9M1XR~AoQsA&S)(9^#`Go~p%Zh=08D=-Eq`5C-oJ5= zX#l}u9MYza+;=xd?hYi}u_P}04?w04l)=i5Psx=Qs8kQZIiJf=sb1dIa&1?#;OHe~y#Ogl)L~sI?!OWZMTqaU2-E7Yw zjL~fYXcZH5(+*jZzDJFTQt@Ntu98wL}Pph+ltN zMOsG#t#IyiEcV055}^N|-;zCUVLPp@0UTCp16d};&lVKO=vnUAd7%ZZzAleAgv5hd=P zhjk>j0_^As(W=*(ejJgNYogzo>Gyt+3G8YPS-a}@bdy!&vAWV-1&3oNW=NQQr6K;2 zWNDQXeN5deTIl%v+3N;I z_|#aWg!Yb1muBeaX(k0p7<&ghjxzxk#)m=|k;oHwc6MBNPu6PmyL8!d<{S_BD+=gs z*Vm|WMO6hB*OTr~#$+*Z+=-j1?N@~o_qPr02Q(L+fu}If6w{YvGvHNSL~?0> zYXYMkI$7Q>arY2BE=%eafr;PJCk`a>M0CUp&9W@zt2(gA%-m`9VGn%dDN z{H!`vzXIavh&XaGcWhaOYHbB-x#ZVq!oAkMRNj#IEpMWqUElvaSgC*{hxrC0xO7yO)WxGCu&(xUUTm zn#VLONw@8F_McJRE#JSX{6&j8H*s)do=n17#oYN0h2w6SijquaKpBk~)F9`$0{Z*BO#KmKqGPo)-TlN5O-D+b)0S!BsTm$y#ET!I?S1uGoC~_%J zmPPS**7^A5koLSrdhO{dJHavk7kgj*7S-PMt%!o4bT@;PNJ~je3IYN$NK1+201`t> zN_R>r-OUU!fJzDo(mluk(lNx)`ffbWb6-dA=bXRby)J$jxY&DtXYJMNv)1ZgOe<#N zoR~J4@$voEqdCjeN+=R)j!w)IaqzI9+vwR3(F%tH&^QkToJ+Lc9zrA?d@(gEyO}W z>bW6L&I;`Jum1ShX~J4sT+vA{Kmy@sUj8N<2FE>+L7)j}6q~DfW~7YnF};0(#r`x=c&x!ZeBn?c&i3O?))C5}6vw^br=g4&-&x4kGWQZ9VdLOZId$8R zZ-SYqk;2f_zy{iY)kRFI7V`sC6tU|>rQZg7>8m3Du8SwzLc+o_wzFnOAIE{D`QUX|B;rRS&RpLC>7nj zLdB|#?t0ks*x&={GYS;F%$@N=NTq>?B>+^*>#3ZH7r?GwCDf5=cXSghF?TFLh82ZSuZttE} z2W=)HhR|=(hxSO=;>113rO@m_!9-b97 zy3J{eZ_AA?Q|Gftw-1Mm6?fFu|zOODz@VC;+*6*Bj+3yHuyI1@cKP3g%o#?~Db{Jc;DDCX+w-|2r ziW7R+Rb3IXoCwo3#)uQjbuy<+A;i&L?(vp`EKFGN#*4fStFU)ONv{^#sfTphFpKcKaaAYzC=)O;;~c7ASmdJ3UfSzPYl@bL4S`oy4! zhOpF{D3MXE)?mkScQO%e4C=;nst3yq#L&+{dV4#&>L|+=d1`UwBUrzo*q& zZSsMt)}6|GY3n?;`d2*6g~X}}=(QgUuxL4&uevFfyi#qK82;rc!fjWWx;D6GU!PHF zxq3KJi%g9xfOu(Xjrg2@Yzze|F-&2uh@i(&rx&x-iX>(XSaF(xa>ZXvth4S3?pxf; zY^O!*ZAhh^G+J>QF4D<-^rpxLcNowqQ$wGjxUW6Yo?05{q&)01YMR&qMT`UVZtSTFzDfVcvO zcZlPj>)}SJajg3d&RfqKQcgacoRg>zgcIv@e|A+7$~wQlI8gi&Ei5Q$o=DX1;k$uR z(?CDd4>+|@<|KZ|0WnZYUt!`^yj}bhLmCQa8oM(Ck4&sJJg=a1eE#07K)0h z;x-0U^6Y3Wf&I}|+ci|c!~u;RT7ZQi|U z^>f!M3-55D9j7PzC;hOx@m^hgM674x5;@VQP12ohT1G}Wo7foUO`EN@3&;;~4FiuW znq{*}AXJnq3R;b!$Gif%0eXCs14r}5M3JDO1VnXE+y29yH#_HFJLzIHdu=FYkeoOI z;~*>$)8BrcOk(31BNk|AQ$|xG8TVKD6#ebfZ3GbOB43Sx)=y_rP=%zJ(x)2QGXF1@ zS5Kq;{&yBYFtIU_2*P*eOGJjYnA@g8+dyf@q4bIsu+49_Z#Tiz!qMaT{M<3YMDU_- z0xu+^!za%-mv`fhc2D)vLw8+~J9?BAnQ>`c!}1VzRi>&N^pJHrCC*6jEK%=UCo%}) zeG1B+q$W(H&Np&Heegw4V?=vH+DVeG37Yn;kKBwm%c4s^i#_`|%*!|Z#VOqt1s0Zb zs312aucG5P38gRj^uW6!66?(??lGaU2LGd5@=MIwg61ulr{62@Yb2+62=qGLzVd6Cm z4+ElP5d0!Slz8mw0orc-3Z~ch5++7Rr={|^zGXf;dy8Q%q!@`}i#vm~p?B~>ik!kPn3q$zGR(pPA~^5rI+3WNN27a& zcYw@Vc28anV{c1krSBqpPUNtu1!E^mZpU$RVV~Uk$iAhqXffO2c<6hdGE8abvp^bR(AmV;Jo!wp%*~nORB`j zIWG;6C6no_NJ~K;oAxe-Qa-a>&UeY3gxtZ~Ud311n#AYzyl8wO&*E%)#(~{vGOoL* zvF(175;}z1`u0)Icw_78w$?dn*iw3pQD#fDH7hQ)oT!eM>2L#gdQar%&OFp*TKbIf zXIg|v??Xkc)+1zPY=Fh+$m=SHnYebP*br==Q2j|a2;r|(Kdc-VddHc z=f{<6+U5)oT)rZ`&$#^<_gxWk0@MVWYF{gVlNTne>ncohs3@Td90tPE3>jVb6n^vD zD>$NqA8cP5M(0~DxY8;RRSu;My`i>(s&%A`dH4+A!crsf?wxb%C$w>>DVSg`h5eIq=4@ozDZ6*!#*$1O1Oi zV*Mj~%x%<=-u99>yqcLBj-ONr%Dk zD&A=@2_$X-UyHt9RuoN0@QU`;!p-;DANKAflMq-lundVT^9VxCx~gm_ZQ|5Uj=lv2 zt&tVR1x^Ly zob;$z>8fxTsgv`{O|G4H2C}pq{dcPfG)C{n1;k&J%g>cQZ(I5Ri^mTp8Bw~|&)x9Y zEL4IrhDiRv&|0q;61Yajq8Zl7qx#*^St_QTqCZ1+{4pdbSNB&7)3(prGvz#^znsG!b$#7I3 zn{@l|wl7-Nn$|FH_jsX`JfDMQQnX8=Rn)liaYFb6*tD%xBXqRsfqX>8RtibP#vWEg zv7s0&k|;_(QBp(b5pln(l~bgEAF#8{W1-#r%?`2gs83)|x3V^BXy(so;)(d5MU|$S-@PWHn1^O_jaXR-J73^j-$ zGeau#`y{{+#k6E@zz|(G|7b6d;;xmWkbj}c@I;yKVF>8~nf-CnKE_&axF!2rP|S>_ z&wZ79iszm9%o?sgB{aW3ViGI==5Bm{Giapig471IrH+4o&+g8zEE%l~P3S7ki^#7_ z*NHs#L2oDteB(k$QRT@p@q6kDz1#)C76v`g(&ecQ$AwNGfNLnP&x-i1-1HE@hxbK@ z8RMc;7d{C)dCd|kFz@srPRDdAWtEG8jW>mU4wZg8Ue9=)HQ)C8PPrGXS75YP$PBF(ipu5UMb2T(+t_cm<+LRhOKV2-4Z)@#+4P6vU=_9w; zUAWyzW}^1x3?b$95c?uTul+VG7CH%b3>4Is(!#4QlXG`KejCAm+EOu4bwvVDX(t#)UegKPd z-^HI~lR(m}5V?}dh%MZS3O&6`!ha6)Q2eq>z=V|jRI8$K{bOz4QifdrjY2PJ-+(Lr zvbEo=xdKMXou)I^e+2e`1W-F=eK1n>bPS0Xao<6>_XW7Gc4DFaJo9X!p#U`3AgvfL>2pd}3{pby2{W3j5Ele3f4)AV zYuMsEX4}E-%ZNS9jg%m{#YyNfa<|f2C2k;l$js7Kgt-6`fAtkr1I9EAD@NZS z)Pm16EUKx?GloJnb$2=gS9{4R-SE7LufaE5use1aL;7r}a?x9z&E{uMSNx`{DOU4i zYjQKQbV13OL@gFHDszDL`dJ_NC%~hb7?H6HX=#UAagF44-#{k<-y8dS=kN{#8P~2qN0>oWrI3kK~OE zc8%<%4d>jqBKGL23+pdx4_>48AbmHumS3#xVv3+n7U>dDyF>Xx+*GCOuKaXTd4A9V z`+?eJ4hY6X1Y{A(!{FR9`6tDR9qB)bzs>viOcWHHEH-$&r?R#iNklqfj_&(Ke7q3P|}X4?sXHq3dW7SnH(r(pKzV%i?!%V* zilaI@IUzJ124Y(G1r+jrrIVF|Wcac>U0IPN%*k1<@e~lt+dQ)ps8k%Xc~(s{<``{$c0Q~? z)|DCLZ6lYb`^NQKsY8nQc1_oG$5N0a1Jq6gGV6lw^2Fid81Fy5Ayh8}gZz}**j%k* zc@y)D)Mmz-`0pw1%LITOi836DZ==ZH*L_cGllNOws0b6!VuTh?CMwFgJg*L0s7BQ> zDp(obTcXU}$ZgYRl~9gh#R5H{!VWmO2Lq$Hz08y2p|7eb3d@NgMKF?T2rLSUUuKlt zK6nRt2Z^Fa+fOCE`iWzrKmEh_sb?u6Y*-kwi}3AXrUeEqk}TF3+W~d7$r5 z&(`7Q;f?PrD^b?$l)EGNu8T2^^O<@9W>ZDdPlBZcuUqQr=^10>qDX%KE|V>nf*J5u zlgvJ%Xur!gXL*-oU89yj$fmc@)_H^-tmmE?2g#3x*nRFZt0Z z3@#sii!Rbt>R79O7h>& z08|i^Gi91O4Zh|u?Qzp7=FvK+94L!CwmV&VQKf|^?NgJucbk)44%Z$xSmj=xGMp@Q zJs(u%eiN`=cbL%0EsIPOs3+j+#h}GU5@!awik^CF>3nb~Ue1fr$_o zoBb{c#DkB@Cg3;s0B{xV$N();+@anEoxC4)vA#^9@5ZePD>hs=5l03Y1L~`)`|?>G zm(L1hhIG)flt56NwZiX7sjI|2oItRcftnalkip)2eJMf(0P!I*c?8HvN+{m7*LI&5U@)xXa2??h@V{VAMuGhJ`)RB%ASh`;4)i;K{UDvk-p4!2# zOQ?)k4o6_Pu);3Y;vFQ3Re=z2@4uHy<(X2j?;xEYnVeAo2f)DsQbIEzfJ(%i%4irl zgR)pJ{DV@bK~gCh0=hp?-R@{j0zro~@iC-8xgwpkxQ>JY-c~@_Ll|+^TYi5lG7Chp zP_B$>Emh!|0&+}1O>!L2+U=s_V0U104Li`PrN^;y2T6v8eKC!1DFhY(cI$hQ_*>lk z^`1YIjBfmPQsCfB&A?%6`V72Cfx}8)9@c;jI4t^e9+V4@Tu)Pz{{iVINzD(4MV!F*Y=3t$FF(s*0rw|)ou>ml*iGp2 z)n+C_`;bqp)Df~x!4GXwQDAPEUSAs2JVN~^dXN-1x)1r>QKPhnwy~*(?lU7bpB&es zaN;26n1ve-=QXbcXy28m_FCA(kDt3(j5;6@mSZ|&m~jJ$p1V7od~rMu^n-QekHpF) zSBYSQ<2J%yaUbo>!-3Axnf}d4VD9|nTa3`M8toX-CFAtm0GP$@2@(+l;EMVcLR7{( zX1-tC0OaQSopE0&QV0wS8i$icIf6f7|7_wXCz>Kc<)b7U8tf=naAQXn%iP?2+^>25 zE*IBUly+fRb8VlBYTv!5{Z$VCWe=FJP98ELNMQN-3e7)v{e67VIbXhfnffS)Q(j%o zZ}PUt?HBF9xB$0a-!I4n(jgDyXK)M=Qgyq{R7%x^aX=+AB z-5Wv%{i3`M0!Aqd`*M4*$;5MVa`JF*Rr*R8K!e|ZI7x9qbAWQRH*=o7aRX;_ynKej z*cdiYpDg>Gc1^L?qu76&*Ew zfkWtcTf__>KLQ+L$EtQlQ(jY2!}lNud>ORJyakAme{+dIgar+gd!A-OpZtXb2?E-L z3Zpv=z89}}5|Tg~8Ln=bV8hs}>KZI+VElo(W2Q!{MqJTW?+ z3Yyb;SV9>AoLuzsj8ljN?jUfTb)xfMBc*N(= zv}aE(!hesOS5K5K&H=q0Gud7=>iRne03vtSAB0_}*&6(inTwkBYvrj zM1B#1_>vGB&`L6gQm#G{$W2nNesWeM-mBSBn?G;%_o{o3?ysw<|L1Dp!rZ&7mlt{- zk3#?TLh)Z00!@a$9{c|<{Ee!A5hp&c!$2n{xR0i+sOOyPMPEdCImgq0l?ZbwdWqGU zZ+9obu#}t;zw`YuyB(LpGr)3kR(~=yL6!4$tCa&r@$a|%?X$l(E8tJ0$4ym3y#&lP zN|=!V}84#GMa9w`S(+EPvXR*p?m2q@&qW*3ztL>1cMd4O$)3*%>80?I?MT0g)Cs z8;bF@z&SfD!>%-40&DX7;)5Efw#dng6|N@rc+PA}ZD{N~MfluC3uB{U0io~){3*L7 zaw|&(MCVmfiF;^@*vUC*_flwjMrvJeiONqP1 zhk20WL3xF#_j1CYmH?G%z#(JxzP^u|V?%PxLfJc)mY#l$^ryM|r*8kdo@9hmQ1;G@6CIYmad+no3A<qiU^UE(WSV>UUI+~f z*6gcxVac6iMt+SOBd;Cat#iFcI2HCEXRBL+0IXZJw5x0t7dwq*TNHH`6QLq*p{R17o2YWYW>S57 zc*=E=~g z?kMme!6_`kvtTsKKm|FP0_U+mz++&hYxyt!^_%cqN>rBr|9+D(@beiE%03Cj9qj?Q zQj5zrvlC#+JFnKZzhOnX;odtd1)P^`56lqbB?pzu`s{@X<#Fgnk+~nU+zv%>Ax+Zqz4lrSsKhOYp2TZewsk#mW?KSW?dI(n^Qpqb5HUM0tC)>Q81gOce(__eb>jyF$YP=mwA< zs9X_tcfhgM!18E{9uZ}@PB^?_4`4{AhTvuZSh*0Lsn7GTQtW?u6h+O;qrj0WOj8Zx zZ=tVFLj1Iv%7@Dz0n-(;jP4-!%vUcis7_#P-4RT^CrON3s=8cwE!n}yA1+b3FqVIO zz}jWV$nX{*(*l(rmu=3LUJ&iXlDTc=?oEp@`0+WWN00<^!vB?vtCYeRkG4Coro5$S7H-gIhg5E=yc;h3QC?baBhXyw!A68R@3gNcOHHjhJKACCbzmSV?^@s3C@(H1 z-Ya*W+h&;cd%hz5ql1l|t-Q8&q^Y^NtZzmK?$F|Wp_Fq$N8@c~Vsz4bHZ?km-8gCX z%Q9!rT=K*IVZ)Q=KSR#{a0C-EAemuLrhNe*;1;!giz3sMa4)>vmbK8$P50WSGV3d1x2{8;(`jh}{y9zVlR$5VknRY3i1Zz6Q!TmY8Q~`{e_Xx>B zido#&%{T2YPfOtJPf7M*)jnk+lr7joyWlFG?8SnU2Z}f1brBbpWsaGArykPpeFs?f zAW&#W>S@B^TuDhOB4$(jpr)F!ZxUxldE1zs(C2y6fZ1rjmoP)=3sc5QR*2xlN(0)% z`9+)RhYx3P;n!)lKTF^#o6q1ebd9^mVRgB8UX-_4bThxr^rieKzs~>RFJnr4=>{r2 z7Ckd`IG(fh&#K zd&%#f84cZb4P#Fy^bM2>$3`n+j>AqslBrHu%|?jpX3IRos=fycN<1H$n#7I19vmGR zNP-5DCkx_kz|>l<($`-DQp1cXC@Abbou^q<$cN>UlTr+d68BzQi1QW^cU_E)k2gGB zu;oPZ7@f`@HA74i>dQXEPn$d`mC2XM!P>g!8X+OTfNGfAXto@%@Yo9P%tYUKZ=MtN zmgY#$QfK-5;I;d+XU$}=sVTj5Dn_`Te6nVwlX#MCe8koaM^gX|)G%dGa}THmh1Zm0 z+JcVmOZV^0HD^DO)&+kOe(>N$Uu-~GsqWQ+C4GH;nkXM_=@(zKJC_x>y52muRFEH! zGXN$o%RgUm@-5)*ADjV_v|sxBza1$s!in-|CrUd{lXP^z#>U?(7YI0Y1c!W`myT=c zNn50c7W-g*Sca!85&3{!gOvvWA{EnSy6yp^xZO_Pf8flCh!&4$qpg_v_} zn+nN>qYt^=z@Yn``koS|7L~s72#{jkoavTmXpviwRe09al$h7?xA#7WW8}1NuuB8& zY;(MA9sDy&>*G-*%BlLJV&Yf$Mb=UFE-s@ii!_=z6*M`KL;A03_gnp<$yqw|F(L*m z>$zhK^~>bT$XO;Wn-?#}yO?2<4k;S=_zaC*9F@a0B)Hi$xmSRJDi<h;;jD`=dkqTO_Td9d&;wm)VFW< z4yXJuxpZc+7ccGXb|sm@Jw8U)j{WE(t`^yS`61sNbYZBt zgdD4E#k_S_i+#h*%{@Lew(#&CSem1fqX$@Tm1%;DvL}8Rd+`oxembBY$*BDRiEwHU z$&!$5CN>HoY^c$~l|NVV7j5Gsyehuvd0(K2T96%brRFGf%M z>Lf+h$mQJu?TD%;XhUyx4+2JW2tyz*3p-A&{rNfiS`5qok<iC>u z6d+H?ojZvH+PTvM&2i%7n z>9!Mwh%r!a3B!<4BsdrPKGgc5g@J|%Z{B2Hga}?bNnXu8g{MzhLGK$FMruRia-8hE zZ{_fjT#QXmzW`=gRaaCv%o8yB9q+!MQ|eWMr3F~|y{c6LYqoOB@?{Dl}G)Q4B$@UAxAk#o5=?)U>%8p(I((!GdA{30Vs)64Bw%YQIxt%sn;wN9S)Z>6fR? zR*w2|LFU}W{ED{KeoE%Cy&^cw&Cs9~bfH0!`C~B~Qc*^s3|kFBS04ZwWgvuMuDTAJ z0u&^JG((jtCGXVkh-u2R$JabIk0W@H+XwUYII%1-HyFGQM$;iJ*O^D^9k3I~A(AaE z3}YBCF*!gtw9a*WGyv5(UlP_^D0eI`<2Juel5GIyaL5foUD7~ViH zc4M~O=RL70wCyk$%<%>eb71_GpN2*Z#P7|RZZqIM#hs9O z&E`e7`)uf+!?9q+OUuNPER0qZxjxbL;RY8f!<;z`{<5?yy38jZ2R&{uWsDfQ9THb< z-wD>`OZr0D@l2&%aJ==t1^e`R3z$NCvQr<-KNaQe$WT8Vavvg8?^+EWG1p_OGU%Ma zi=N`M7;9;EXHFbw-W7E@<{Re1KyBny=oD?{)^^~$mELRC)PB2xj7+EN?+Ra7+*RTE z94@k5dbOD7OpVhto?0b3J@z>P`kJ6mDWoZ> z&|P(*aEH0Nqj|4+ZLU^eFRyWW#f>#C9Hz@Yah90P2a{fWBtv6U+W>e|2`Xk6QB>Nc zTr((jHp)_sgkHF6xcAhhwiCI1-u%gT`Y7!9U@al&^mAzIGgQ>!;WNf9o}9zWrc;fH z$(b2^@bRZqY+|QP)&A>@8plO@{3eF_K}CjpQrb1u1ao(6kWTZD#e0iH!x66_nQ|R^ zg^=inf^kmM6&DwxSs>#01h<1#&6U2@2Z|4zP3NQ;+#_QV*dKfDzmwP|pqIkdd{dWc zi{(<-Ez3tBTP`u5_HPCZC|#)z%H(S!n2V|M$X7luhKih)y_-7E{0YU#?8;+&6+uWd zp`aMcV)~f~5#gXuQ7CTEH!~q1N~TEqC>+Y<7>5rl1(KHLZevzarWr09)yqWkPWZrZMe^m_cCa;Fqbpoj)6+# zQDSms3x;NW_z*g+s<`E|yJ5moVn1%|yJjgrrs**8EN#LzH!&yF5X}Jq@0(D>F1(22 z08NK_W;}?uU4Q3{`qALaIyU99xVVMH4jp@=@|f;&1Ni0yYe@kKMG%A%io7 z{HGg7_M8a2m4U2?I!4!nyRpKF_}5plv`qFI&c97CPLd4AWj%1k+n}!r@gaIgR8RKq zbF>_J&Su?jNt3_lL1fLg;eVlMG4rz5s3yV`a1 zTIsEiGg4u^IwiU>b^mE>(dSOq8B|m;(ag+@B&vMpd8N`91x7XZ)1676eFjoXWXG-L%`%}8dm7q~m*?AZs~hKqq1zwT%zoBnQm*EN_v zP?sSZ6JEx0qOv#DS6AWbRa8+bn9fVg_4dMR9P@lP=6jyNIP+1?r*-Nn@LFdy{7?JZ z&RA_QYBOAwhyXV_7i!TPm!;bgr*ER*39wh)5;)@^;~#@?i-aqxxleOO3H%)DFHy|w z=#?5)AYCg#MIgOz$@yTvt$Yk>zUVx97np+UKUh1r4Mq!x;8x5ipSjZ#KNVqqb*wJ# zd0ezL-!^Yawqeiwj&w*f*KGsCO(|%&FU}1pZ2Sp6oJQkW7i69FO zO%69kND@H=1&JWM*;N>rn|yszBUIe)hk5$jw>46EZ|!XCKH-=Ud$#-_4Y8);WTo~W zySXqvjfANmZ@T>S@mV8=l)Vua<6kg8%V9_8u7b=cI!yRB=}6(m99gy6W(LWpBzRL-<;4It ztE6R7l)cTOhC-nNCT7;x*I^@t8hSWOl*_Y5qoHR)TB2GnTL55_@vBH;>v}-vcFrpu zD}Fq3_d7chZsUUh^Ro0*;~Ms9AY}@Q=<(a=@i93x><6J16P6Kzx#mkJE$EmE?e-%f z#@_QqS2UfJ+1b(7n<~8W7-+=02e8tou+GlTrtU_Mq@q9nuub8aMhdj_;V1(u84J=k zaP(c759V@EPc#G2I?T~+#CrR~ zZ$^mZI!1)TLoJ@oGlanpCGfUPnt`gm&8}#R-%cxjtbcb*IaYkwrzm&bM4iM++8oQ# zNi*)MN6L(fpX=-DCJB9aui?U^aI<6Q+WZ)cfvIsTg!B(AT8fGl`N8nyaOY0j!r(26 zprQGTi+Qinp~hD$o47%ma^~MV4Xl*dbDBWKY|`hrLhZ3y=+U*2@re8JNl9qA2D$en z8mfQ;X_HUn9>XX*yZi)EtvHRfUZsg>Ir`z1#jrQ$j&zOIiPg`4X;lU^Pv93Vj{BX# zVn#q+`-c-I@T_fy2t-By^5QM62Lv)*$d*?Vt<66&l}HM-5&T~k@8uA2BBhSMUAtf3 z19X!ZQNG!DxHb_z=sOBMTjuq%tSyr3(f5&nVMJ=dNM)_XuVcke6RM*L{{#U3r+yMk zi#R%je1c+ z;=ua}kr`&dd<&CGphi@A4;~+X*chY>2H!)FVU&w$MI0JBJU70;B}ht23VK6AZfqs& zXEU)bQ-Qt{K-KQ6kSIQNdVdfWJ!+=bAu{hx`f0T&0v@+u3e40Td~(fxH1{jjBlo3U zQv`!MRQ|e?M|tC&4qXw@0dxYF23NHd~Lct zH5M~%6De#S^sEl*b-Zh;vQ=67Ml_P-_5S`ornj_m`u%e{D(f)*cT^TWtusWyD}&kH zqGdUlZ(^bFKyaYF1T~F{HQlovjbG*W|I>ahz5UR$TQrCGNFq}Z3cp7X(qTYh+C81r zVQ}xR*G@H1jiYK2R{4xo?XEyN+5L(U7iJ=t)R1 z_MGY*^B=#a%r9nbV%TICNaR>1G#>KyWhG*-q#h;4^Y}Kj@MpyYTeI5*t^9-zF!#xv z$lxzpIvgH=loHib?xuKAw)0+-+JxmqYI7t+(qi@1P3Eb;UpLAj(8c+D}r=39J< zyZp|TQ0}n>6i9wy^ggH;Tvn4q^0@cnM2SeFSRSGFIFfyI5NK~7@=tt%!2b@d&yo#f3g+(LX{E4ir%sRyP2_0sB4Q}#dJq3oSvzzxjJ7eHfq6P=t zPa-pmAsTXD-b-NsEE)fzTW;r!xx6BqfI51{WG8@E+2hfWQsea8+?LQRMr7v*&7efz z?4@in?Y9zL$X;GvUd!nH6UP^kl$-<=*QUk^6Y(=xPyYu4D-(SafMC47gNTp z$gKC1BW;_)XkjU-ZPzJ|b|BQM_LL92`1VFxW|US-$@5FC&`7=MXqr}heWRk1;+BkR zDSiTr65*LX0CIHZ7m;{i_n5XvA9BXr+|d7caPsRnQuB^c`kw6dX_^Riq0eM*fM!+O zYen3`IGjC+DJ_yM=Ps`^LOsV1tL9_J}svNM~zJARQyb ztY#iYPEOf8sUHAMPs^+q7-bUwI*Z~IRPBqii5Eh}hc@7YkjMU6%F>()<_f^(A0g4f zxCP>~?HO9dk3v@;b?UqLyg4O$KfXj#-t#qv&(fe;i8nbVMSP??FlH-v-aBZuol`!I zzUEi6?N(EKd@T1n-+5s7n6JdG+qcY`i*nxtR1Bf)sp7)cUP=cqh?u;hV_*(mE9+}- z4~?~xKjYMAXJeP};bdXrl+|(fZ$Cd-#8$ zL4a71B4{Ful|mC)zo;?!MNmGAvE=sKY3pvDED< zlEWSr51KWAcHXy0NR)+lJ2 zRY5rQcXhKFBKQvrkFJ@6Z#~irUlj_$6<}q}T>vr)Wi2gp1aw|N<9US;26?;29{M|K+AQT2h$o?ADmlEZp*#%abFaVJZeaiwM%|S zAL(FmcQiQI1L7yLzRRz}ai%%=)*mW0)zd8%y8Qjxm)KYpA?l5b@;?W${3mT&bD64b zMg+Dz0^n)R2P2)dY=vU7TP993?`a@TLz@BYZs~w4F$|yg#WxkiThof{se7Rz-V<6} zPJvhLb+kQADt}Ln#ipdS^`o&AI$r2K1(j`==3}40r}1Piku9%1{qDh}`&a$Arkbm9MwX%HIk9FxA;_kMt;~$nJ(oy@SoN17 zg)eV0kG&8ZR;@9n*VfeHOV&yB@EmxG8N{#;Yv8FWCX1OXs}(%YJ7?kId3?5ZA%p$x zOS;Gwe}iDSJ+Y=OlCZ2@KLN;HQ%#2cvep0Au>4@D?znK;bqzc++1@C zHm*G1*V}vU(cAX4%fDE?{{J);mw%M0_@$zNB;YRWF74QP$^F3tcoX5+C?ahKdBKs;b5s*D^$PJTN7@=Nc=%Ok{1EC!8mdCjV9jFB2#y zQbHb^D-UUEYj4zdzgYQhcrZFP<{92WB40mr8kCY^&v4jN5QpV_Ra&=7vUO#$6=?DG z%a*t4w3N@+k;&l?HuF#jE>wwh*r%KR*yJ2(Tq--=i&v(NXD#=!gT{LH$NgagfiDZ6 zW&OWALgo9I+?pD^y|VF=*wciJW11hDrX5oUWZf?r?xkenv&{8` z#rd2UrFV-aJ)c)oi;_|gTKvT8?=;3*~=luJ!KY ztaSt*PJ-5Mj))}6%9A!~A~f^tbi{dlypU7L0X_T$dWMGj2b8rHwD~$k_pyhr1?pT; zE%SX6l3c|YS~D{l6SYC9?Es?ZP@wfaT!q`Yr3WNxC1?$I(hf%me2VRk{$mQv|LRRZ znNF5pvW8#{fb&~uwXP(Aq{nU+;{ehMAcYPdn9y|q7)<%{_ikVsN<}b#P8hT8W1-K= zl|8yN?(rdNCucPCsrqr&{Ed7i>mKPNRSEa(%(SJM1`&)!+LRGz-wz`|0ny{!I2Cc- z_$S)9&ZgaavD3r9&s=(gy<%eUzq~)R9ZZ|aQI_MM4jW$$gp&4>ymEKHGTre8G z3^)CH0>=T%|B-2_>L!5v4yrT)Fp2*tgCBSP-t$5pXAay&p>Ec+UF*vJIL{c z$yYythM8A#6$Jlw92v#S+mJzKqf`-{3JG)UFiJ>&I5li+jNHITuXFHFPeAoQxyr5o z0d>}1E9K(214l&CmDi7t4_N~VOa6(Gz^O|_j}dbEpFE^rRM~U`3fPU*3+F_TbZzao zLtN$Vs%vadp9>);eeguW;i0c1ZUB?2)N*%y0oXZ$UpwO8kW5V3zciYQGcSN4czApl zdF6_~9`0^$o;Q~a`UV{jGWo*lKL20wNi%?EiAvMI_m5x`ph|M`7_eO;xd~oq#RYIc zWo9^hlm&GMnP?**veQK6l?08rszCT}uLWpNPy=pZ?ZVl@=hr#oX2yLODtg&;kcgC6 z^R5QQLt5Jy{5JsU?|%WvBX(m?7pSM1i=$zg4T1@mjRo5rebYeCpPpPf{l7i`Ll)B| zdztbW0+&9UQSX0*&;yW34oFvi%w06awQz=iLj?i79d7~0X?Ru3(^S91fcOqrvznYd z7fkEhr61lvko{@!P!&M~*_fC0gG zIu~>roKHK*`n_UB5_!7=ieexr(WAO7hqbg!6|NQmt{z_RtwCEIXwhU<^ z`_loFmUsOSc*(N2Q)sxbu0MM20aOh3BVY|x&m$rtU}VOyT@|P{wyUh0dekNI)*l;} z>^+Ao?pU#^94i^77d+|2$Q*0*> zct{|`1i`09sPZRD>RS}R0GJP}Fv~nDWBsLx_;RLoZj!aGD(fGAbw*)sT#d1nb1~R8 z;m?^<=~F@LV4Z+bnvPz9L7tqyGhCG}fD&AOk;e*nPd+06dkQm8X#+&vDqa9vDKM2{ zQ_Tqr3EB6ls)inLRQL9(l$KW3-aWs^$=PXs4_5N45z9^5ziK|T%A)qwDyL4O!D;qm}CIv;6~(aug?ONA%)}(*^5LK zoPw}U6rQ`e4FF*zqSe62D06IL!ob`-P)A4CK<`mn@I#gAWD}Nxae#p=!evAw6Px=Y zgvAAc#*jr}etuH`p>#}l4_4rFR#s9Xpxr#~_NUTiV!u2`0KJIk!1QrX)tCN(Zy_2> z{E-RH>;Gd&&rUx_-qtyqRMC^m`=~q>pmH+=w0sOG(L<4e+NX`uVB zL%I~X6kKp@X~-9OU5I~b*(EE83Qb;PVD;l;b-DnE5tL=W@QUQAJ#P8dr;*v@D zhlM@z+WqDq0cTN)o|FoM2QX^80;-Nl0m~L;kA2yln$Cj+0?;Sd02H`FjprXQK$)yx z&wic9g9M)Zw1y2Sd}L~iR(#Zr+xR8UIUSz(Lus$1%iybI82ohy5X@BT{F2Vo94y6On0XmKfl>36*Gztm^lbER5pT?)0O*?|8x z)?PXgCZm4o<&d?x0Z81~Za@(CppK*We^25$MS=a3P-Gt^Y^YSBF*kEp5}?jhjxD24T}JptLC6NJuxE6r>vjr5gmKLvjNf zkWf0Ldn4W5d=H-YyzlvWuJ1p%E?CcsSu^*VnS16JGO&&P4|Wbm%kD29JKg&~Dvtf( zfhe{IsJNBf>0heI6wE~FM zd@}B+;Ob7L_W{Tiq&~ruen*S(fMunts`q;d-7P!Rba+me27J2uh2Av)lO8iYO!b+r zb;)0AWR^Z)pehe%cb+KBn^^V9Z*ip9q>4W_kGd5(ZejC6<<1M<0h(Ddg?1K1xH{4WHO zo&B)jKlc28-SvNdc<~?yNV<;<0ah4VSiG{VBELA1BEURQTH#3THoOPyB6lo8tXi~> z9^10^+vm@3p7!5;w{gokuNj`DbZ?XIwvualuk+YfO=L_Jklb6PZ+|gd18)AHkwb+S&`T)l8heBycK~4`r`{s| zpv1LC+FDMdxZ!!}>h#s5Io#-vJxKO_F-fFYTQ!;H)mkSLUhf*eh&vk(Ve41d*U|ZQ z@M=oXFCM?y6gya2Q=e+zx597j1I&=J5Mm2RY5ernp`)NJ04(IxJI~z?o}1(q9AKcp zDGf2N*ZF&DYHRzYyGq+i%qxHmoGoFj@cYM`2)6K$44+n|q6_^5Zct;(eZv;PHSAsm znSJ~VIM^~YfLX^T?7b@#UO&Y+X!XD$)YH}mI=2fc`KP^k{aV{oC*{)$8_CKw=dGe3 z)D-ZTaE?br(vNZTfE0@c1_q}$dXqUgICVVD8{cTY(RF)6I-{9-CueRPiFxi~ztBB0 z^qkw|fuC90^ric!^W2cM!+W%lXKO53k@a!Z!md-PkJ3!b$@kmMqpsOw+*Pua@ypNVB9 zgwx>H)YP1vY-&ivOiw)Z(VYA>q2uX!X-G3Dws<~LrQYm&{h0&qQczOT2P9{oi4r6J z<(Zu__;aB%ivh;B{8Z=kN*K843AqD^^pnS@V>2hiBxaH)a?ma!J09;xg(5@_POzOH z02jj)UnEcY%a<ec_3W^kYJtd_n|}h+3{wAN%P$Re_DDf(m9%q z{elDFq1DvWN*h}s^}4P>jJp^B*6?XWUElHW2$>vXAKzV>-UJuA zK6&!w8?P+h8|g3O6BF7pW`X?tyDsXairV{D>pYs7Sy?^TE*;NRR&RBduQ`Fm0{#nb& zvFNtW&Z87|-DdeflKa-yD5D^e7|n&}?XOQ2w${!+0j}`$pG55%VE64R@C z{E6!V1Cf(Y-Wvn`J`cmI2G8)asJ8bu>%4mFmDtnA+uq-c=kBc0k61gR`-sU(=c(?= z@9($YqPyS0RilVU(iQgh_NqA@v`nBCM7!(5#&0`PZ*8qRg7{I)EXi30U8pG4Hg;ph zKl5IC19b|iCnhI>46Dk#c`@HdgcXSnaN@9o?~4R-m_Su!(*Z{5c$d_bl2Yh+9(@|! z`6H*&16IaJ=`iP)T3DL2=iWB^stW0l{UK^M-tM30dkZ!A5*NMQJ>7?`4=Jgc`4?SN zu2K>tRQMkI^MO&mD_N29v8~2Hpd~J$;Sj-$s3j^UYGwdbZ%ffLa`dxWvEsoM4SJkA zsd#oS8yhM`UTk!=e(EgHtD61rGsdZpf&2=`S?>i3prFN{ zbZ;bZv)oXY$#@=Y*;HJ9f48Ic?;S7Nzxf5Qax%^Z8@2MEE-=I!88sjjMsaen)qh4FAh7+F`SK(G z$!GGU=wiyA?w+`x4m7;w-x(te{VvU8pGJ^ke$sd7&%`8=RpYth*FXZS>lp@WPbc6D z2mEfm!Pe;ZVS+xZVJ*%_`SQ1NZAX}+ZidZQ(G`8Q2~l|Bms>Al8KMlirWb(5X{`U=JK))O;yAAPpVkxj`6%g+J3$WMeV_jk;mGS1luQL>sAqCou==qz zs+2=fO0{TNSUpP7`ZiElVp~3h*OPRShQ4Jr7@OR;Ba66h`G6Nmpp&zG!SC8`dvo(p z*a5Vya5(7pCH$>=gBnJ>fI<~{vHUkb38`rA)~pX+uYEWecf_xE_~1e5g^b%92fjQl z=7e`_a*6n3D&k%jRtDced9WFgS+Opf**=W1T+=Ubw!_3vrSF519CSb2y<)G%BeJoo zy0_)qwy3hZG5!APglHV5*WTn4leV@!RZ(`Ps@~x%3ULJZ5!K>j2M1x3O{Tu}*$bp& zH_y31*X^l7wv7AV4~ib21k6Rm7hOz4j7vMk4HXwG%7>ib$E#GE-j7Em>@gJAX4+^7u5u#9uy&LN+{qzNAqE-s+rR zv+yLUmg5OQwAAP4?LZThrQ92xmu*WI>kWbXqocX8A{qqZB5Sv|U5}i2x~a`vXo)Vy zRK-sfYUvD&xpGIgCK)aT<)T`TAH}`cVWs#8RL=#eI~W+uYeqiSuHXqhS9i3n++#X# z-n`A|xND)l^E!AwV<7ja-245K@9Pie#1dMj&q?IkXvq(}{QTr7;E?WZ?O3jf^_Ro< z5Q#we^2C51z)@J)HI1$hM8DqIX>_^Mxr~w!;C&_-L=vkdHqW%Er_^)ZGU)_I8Fd%e z`?$24g)AaSLl&3oI=@cAz@t<05eI^kz%f*Oq0>Z4Uf$Ej_4bEZ)b{oI{>-|@mj(&5 z0;AEF0KzE~{KoSa;1>OtBlpE~C}}V^@-F`Z_vC6ZW7c`V82;UB?w+%o;%|$Y^3XEn zH@3QgF61ftb;S=ixeDy$UE5jr<>^90^P4Ot-L4?>A4iGbXYu6evNV$*dJ>NUv>UzG zV|@SOjaVbM9Cv!`4Ci!eY7(Yo$1ZeqbmS_ls$9!jlWyUEqUSIyN=&%eUTg#8b1&8{ zRM2T~@)gve>7;SrgVq}HTO}F6svZzF!_JR5!YYya{+(FXTedKDRhCyHS)D@342mNeaGhx0TB@!VmMqNvX@r{#YN=PuVkw3?djI&T(+Ws z9=A&>=0z;O!pF1L_vx_p(0j4`Z6MW}?IMbjn!3hZL2BYx34(_6ytamo+5eD7%s484 zMkq-1mgVMl=o~xw4ZBFEf9s^+`GyeC8EzMY`iD1?OvlA#L=2*^Qt`6Py6RBn44REh-u-0z3<5!40R zepFXi+muMzbDc;OzMB_jGeZu)jW!ecbjuh0%xFkq3_wb0a%GLt`}kivemhaJ<#IzL zjvzGDpsJMVl-_l$e5P4_4Gqw-3-iW%XclzYzXy5j@MvoN`YqY)+WKlrP2ukFvJBx} zQS=XUy~EE;g&8#XiPl5nJwMr;(sKmp#Elvcj+q!(I|)865yOusw7%Cb?MJ@fTiM5# zNXv~KQ*y#TtH|1X@X{M*&iwswyZiG@PiEp;cvOaQYz7pvf3bQ>{3BgYQ5Jf+-MDv^ zbgi$!y`K1l7xW#ZM=&1&lsw8%ejy1(9ca&g4P_=etOKa!_-X;7oQHLO*@8JQ|Cf%V z>c}UJ^p!Gq0~>P3P+<<)7^b(eDm@QB+u&%hdZ6OGN{)#6)@!P)gidT9^$eab{2ZV4 zjFzE#y`-X?f^~A6ZZ`GtVyYfDrJfD5LXMW6*0wsxEE%T|0-~lq?QM`74=CxD<;?rG zX0gtw&Xc@j9;DrOXHnt#CUo+1g|dQ%rsI*Hg#{U*v{|=%v(E=;c7Jy5V-B{%A{;Eq zy5L#-pvl!$l3XO(#>x_yK%-nVhCVTN) z=Bv1m0r8L1FH|hA#g4F$On{Ocas*}kn3UgnmYsUtxrM_LwyDm2MKc|#65-l86u&?2 z2%_{L<_V@`#xp?t{06Uko6JRN#;Woap#bCX;;?t)+oa*O;oR#AC60>$u+c1#=BsbI zZ!=>laW@jXd$8Q8i4`NdR>=D022!Y&nvzoYT(*^GE1Iw%kpieAlIU=K*t*jImmCxOynq9NQfFXqO91xg-qdP(@;pD zZ&`2AeT+09J8J26yUbi##~G`bI6Su6^yUuXvYP$htD&9Y;`J1A^3*S*XbTDCtdwY|A_cnG%u;txNZXEqOEbqB{ED}XZb?dvb8N7t%pSjF*2 z{J!J@x=2mPzSQ`c8*+ne7TM8p#E#B!Y>yn1R|V>=?Litc#qCdX}(yqW%|hYlQ-JG#Z~UBkPkt*zclQ{RGO3txLYr z5eTc-&b7;nQZ)Af88t^kI=6y)yF?xp)&LG^x!^m46}wxESN@LGpW`_uD-1lU&errC zylMx!u(Pi7!Fg6qP0gi+^|LmovJL?WB}(c)!nXo_(ObI5?{2T@78yox+nY-D&VF2~ z5^h!+v#LOG!Y9LuKE6v*TJ*avQ)M~kPtRUkeVPYN9*s`eNjLt&4bY8(@L6x4pbLIh zD$zF7TpnRg7)!V_w3kFtLErlRFAkL5KRHlc$iE*2(=kp0u5g1BH%Yv+lN0f@VH(-_ zWK^KEonL`wG=pwX4~aFu35CW+{@s@%w?V-^LGL2E@9cyD6be}z7ca}9Q<&U zdwJya@^F^m=te*LF{Z4etlw+tk0GUv1=EI*<>wMHAE)t|*^(roxOAfxO#(!|p(sTQ zv@g}=M3q;xmpg_qXvn#iU4l;c8!p1_h;DJtBsQKrs(|Fv$4Y%EEqk8$Xi+cf%Wv+0>ZQT8?SDo(eCCbkD>a35et@cT;njA}wJ1etuQT~*K3}w3q za*r+Ps734Tn%>3rD76s2o(MTM!}Q)lvkmS0o2vJI4=q&&W4>`c+5B>F&Zsd*ObIHh zc_?=vV);euuTT^T*`I)n)D1_vCj zTG7ZdD;yf|g!x^dV8J?|eX!_V`dFtamAe%Z_|^w6f{y>qI^%ZoT47>s(wneb!h7|) z_5SW!9MfxOil>6-*F;DdfvnDRu6l?0y0+`tHjho0tNtfhVFt2^V+5-`V1-XTkMX{| zHIv0)_E%&IqmZjRIXRV%P;P?2WuLL$P!4E>V|tcrX&7u1ikiXA2!i7`Dgds$i1%64 zWO(lIG8~^)y!Kk*vRA;R!{=XoGg)?%R~dwC>Bbgi^_nNkt3QaXEYq-aUSl{n;irlQWAs+;gn(;uZhqGJ7x9NataeNOk>o-z0B0wVx< zr16vvg+diL<$AbVsDp`_Q8naVL2(&#!$wp{K7S%r>cLb;CtH;`K}onaZr|v(R|?|e zjVF}U z$lJkXB6xT2&lWmG%6FhgV!c8M2vP*HZwKf5=b1#BINsIf+fNU@v*il?W?{>9k9a(B zY{Ww|tvWGP{r1Js$8X(cv3gtm!*4wj2B!Kkm?#h!2oU1=78Z<_k%A?IA|4xOk!c5i z)jLnG8EQl?IBveaRy)7FJ|770qzc(_c>FTIJ&hdeWH3WyuM=PVnfy3VRSa>V&UlZ^ z#1DrOVuQ$Crxpc)_O9ksO{0WJ7Z^Kmj>=hLtpqTtfH8K4=w%x)^(&dYk0lT zppNQ6L%*eQlTln&>}2HQv@mlsQ&Q2WoF=d=hY=*)HC2Oyh;>ZGFSs|psewji$yu)NH8v z{v>fouOzV)5TDSY=1a0ar8^+YP>;leq^;=BS*DF0*2PiLxO(HouJn+9a3)?Fpl$FZ zu+N#1IlOa$rG4{Rxv|9)d3r#G)t+=JgtG7jU)9Vkp&7EA3lHG{k74N5*)3Wx?Hb5$PwBBc!|%h{MOfrmlSIFwJF7ci5J_&pHmBm6 z%dJWR4%}QYX%MoPCGz5_pV$?tw}aoq0s_maK-V`n#IS71ElUdi%q*46u9F0>e)I)f zXe-oekSjAOJJFX3A!inIMSD+3Je4@cpJ><8iYp{FA0B5Sn{v!SlO3r@yJ!{$MaQ6g z$=$tJ%q7L<#xTc7fcgBIR%h@l*OH(OPna4;gThn-IyyiiOxsmXPH?Sr>c6~-XOy4o z=Jn@8(8Bje6UL`7{AgxNK*p&gO^q~z>!=WtEBgo;*naX^5Qs zdws?$NGIQh4TKN_f8L{whCtbgg!XEvX@wzS9@zm!TR(5}WUj?Bi7Se^^F?l!Eq=wm zViH$QD^IOUmXzs-a#_hT$*py_PA*FiM2L#t5oY?EyuAWOu14olRo7@D<72Pv?we&V z+4@xS)Nz*^q9~pnV4$O#%j9}!YjQ~y`ZiH)vlILa;$UYeK62t43Q1Gy<4-9|WeD6& zrM3NTaJdgd68AXOQH&%9ej93bYL(dZt`!EiKg;QjAl;jIVqD{I8`fp`$_+k%7y8=| zmvt4_c>|bc)wDFW#V=R$%jD6|XeF)2pC-i$$rp8xMh~|}$37z5I>~ItwPZK2XEhWu zX(H4H0;EJ4Km!BcR-W*#^PLdf(w3laxDD?Dw|(h?FR3VJTp8`dD%}urERtTKEPT%W z9P{b_F2kRjK}SYP0ErwddQJm%lK*sVvufZ}Cr?HI$&K5+idxw7#}EKVoRatU<>q{%mtaVnBURA)lvxY`!t& zxZ49jom{!9WpR{xtcFyRM~+21k!s*0md{tJ|Bc2(3&d3H5!yl7mR15A|+To~Eb;q@B-ITF&FVk=LRM z_#U4WV=U?;838lnf!C^CZ}VjN;Qipl4h2fTA`)iAu)Dr>To|GEB=nER!yasYYTG|{ zCLtF3^R6<1uj=hHuwDokx+_9>MwbR`bO+`iodb=F%Mq*XX6sY73yE9CPG2c>rjk7_>FvYK=RGqr4JuMc(j?EAZaWl@#NKHEdASzn&wrc@~#LGB+ z#9e;SH|DpR@ z|GT~m(O&xEtHk zh1hoZghocUVKF4DaVfnerXFFz4<>Wry3*qpJ}iOcKu9Fa@|6&BjGI9272yv*N#R@b z%OMU-t4De6s)$QZLcM5N#AQE0E9yhAuVtzsG$~Nv`9&cREPRZ`GH0#F5vmu!!B$6z zSJaXI8sPX>1&7R{%j3w501C#y+qL%O?4&V6#67h$++^(|hY=`8Bm>}CRX4fseihoN zvz<2u&CJ>E1o4HzEQ?PyDtshM3sq-7AZh9J9(ErZ3pT5&_?hB~h0HKcF;XZgDrVeY z!KI@MD%;vv?yuSFD>gWdh^PL5|r7&1z@T6cy#QM;C6MFiTZ6}!@ zXnmAA4RyodwxlUlB)LKK5R==bPJEoVb_-C-n9S%Hd!>-{w}T?WbAnpX;Wz=+Tk%QU zdUh8rqNd*#X1=mTN@Q!}j6wN*M^EjImxP;0g$`NTQKd@W64REDa@A>5-5{omrY}YR7(6< z7ei&WXtu@U{4Iv6p2Jcy{B)3qu3;97RUjki4o=EBzYa>!_8GeN9?}nS?E!*0?E^E$ z2;MxmJP!hU<6Y+&$rV*5t;{JWM9ugYc7a)ING@>*Gq#$xgMO!HTi^Zk;*N<$aF9rc z6Wn)pUZyYEkx2NwPrOCK^^G3c(y*)nw01$ zFwV5!22Z=!j9COc-sD#J!_pjZ8kQH(EY)$TOvwkcLK7Hi=vKKU-w1W&&`;t~(Lh=H z-?{IV+KoHRRt>JC*Zt$+W|IRI}J7@Zj2YDwh+g|!|C`nVTVwK zYiFXZ(t+F|CoLZ`!<5MAW7B1E-jwUMcM2{_d2l(wH&HEjPXkm3O*D5Z=M8btgz3y)AI)2ZDDT~+hLAYi^ zH+}+p7gRkNLcI%DGkO@<+UC3*WKdj3KU57sc+EhO6Qqy0v--jn934-8l1}!D`X{&b zo1HVH7x!aRD%_@Pp~Sh~`W~XnWQ$kLz0v87?d7hWzG%)!`LxW-%Xe5W+F1Y(bqQ-a zXJFs56Z|cHb-~!2>Ap8-9+SPA|JGv3-z*p;03o@u_8U0+L30B2ghSI{U0b0PUS ze*2M3n6up%#!LGF13@s~T%Wv=0K)s@Gi8wCYdcQU_dR;Ua1yM85WF!=4|E|!%8oix z6U!9rheYhqCmB*b8WjH~eL+y8$xvl3j@abnB+wM6F{jO9K=&N*Xfb>@ zE65PgKByZ%o17%h_6yQiH6X+KNUw5>Xq64G9EHtNWTYaWHgyt($M~o2Qa<6&(HX6Y9Cydo2$UK>}+!aCK832f_`twO3oua0g4QLFZi`z#+Rh zUo$Ze|8hx0;?`8(Djpl+^wo0>>Kkd!r7070U7qn|uy z-0J-MsXoQ|K-Z@*ZtLfcLguiMWuuLdcQVPcA#3pYeVhV!0?<6Ozfq9Oc|7ADagZa^ z@XQB-*QBJs*A)6vr_}1UvF-^DTFy((=V43!BCbx5cCglgs+Cvy)j(^!CWZo$daFi2%4gAdk24nbTZ+4&P~wu zn|@YQQ9{$E=B=l7xgY;EuG6-7b!t>IXPwAwb?{lraSGKDGU;rPqi zkP!4e9P!2J1;m4JDu-THO~j<+q`;9hBUcyHH~8%!XKwKVcv(ZQzKI^eMwpnPA>?a%uya&Q7UcLvdeF5_S>Z$0BT|B*gEv)4<9Q5d=Tj4QAjv!hpPl zS!sy7hnuQlYzxARRuK8bU|TstHs5=O$|d*;b;_=f(wsUULM3w!`kUItx}NX5)VJ{+3O|A;-ly!C$Cs|DimHJ|%g3GNx)kEKsRYb*Z@YIa<{8 zM{(<%Y^FUUF=%wIC{MAxvT~SO!jHIE|LX>*V4+F!qMp_Q`r)Z2ia`$4fW4#w^-=sR`r7$KYm2q zX^77V0`eRj`=1j+dE{s45D?lyGP69Qt0fgsYvC`**33B>E~NH@X@U8J>vYQ@qB6%k z{Tcf%Kh}nq(cFoRcW!~+@)>#_{Vyn99()dP^!0V5ch0+A{gGg0o$h`5OAD7urH}L( zkHqHcwQQfoK43A_A)p%l{b+!@9h$L0ue*7tYhPQIEArBUobtjaveZwDEJ>`Hqq zE`XlcWi3Xm5aeO=<;I~*F&kLIL9B{~wAvc!+vOY6hL^%gABua@-4Gl&5DbG};q)}P z^x)N#ZAZU?}6ZYL^ypZ@gt`wLy4>N|z9$CM{M@>Wa*JW6S6) zJF)y|rzy)gIiXoYv4W^+w~gt6D324#$Aa_X0J^@G5G zW#!5U56T4Ur#V(HI0My7zhBMS`z}$@3Gy6-@XVffh>txXf!7WL^4b9x7Xc$f-`F7? z$j5+5K9H|9GX~K^;8!)~+nUHCIDv|i@ZfBp%?-td5!1Z+jdl=CG5W&YNFvIK}wpof$@)M(`eM1wr3IBQxTH>_KGGwC@Ya zT$pLZyhuRTX;q$CHh4*Z`-DnpcxE72julX|){AImS>cg*5t6V;Il&W1k~p;=(1Dn@ zXFhYjnHo&e_-<%U*>!LEy(Sdbq~nEsgtrNpmQWG}aiQT!YqFmgUJ{;Q)W({Lg78{6 zz+8<%mZ=<>mJR!6!+Nd0j1^C8qbq@9NRL9_gO@hziu|j?sdqSpO@1b{cLP1|bh^KqEQEo2G8%^jB`#>z8FTaz zot>))GKago(CNtoi+ix&{qW;v-;^t5ye8mHxIJGY*{;^NU2j83eg~c;r!Iqbr+_%) zu1cyV4pQrBOO^GpDZD;Sieb}J9oO(AvSxhox&IzcT;B9`rhtCv(PVI}_+@X0;oj`^ zhcaKPK&4W)!(?R9Omk}k%6ft<(YE_*_hG7g$ZTTq z9;Lq5bP5iAn!Rx>Sc*X3g#)uokmDIGl#>D?gVFz@2PFBM#j0E1{x0|yeq$ZXmjJf; z-l@|Ymp;yh>5>R<25s}-*HtPZx0sC2w?(sEdTM!)&y~mO&$oDaY)^3L%a={e^P}3# z*Oj?G(o$)TXVK;mcH)@t96-3CVd>GUwB9=YUyt$sTm*LcKWh6alEcWze1&EJSb|4$ zckCD50@TqO1w`HkeGBTxxosdc0d4L@ghsygqU>SWXt3kvOCq4A2kHhsbL^V4oS$lF zc0H^f3P1`|k4m@lKHCYF>8V%$IqZMFwXbJi4Rjxc86*kgLV1jafXX?~Dw95c42hmF zt)EZlwDIM(MG8a3TKL)5$59JvN2I1e32Vf-@4?+HbJTWBNFNllzo;hY=Jp_>=AP45 z4G{_6mq7E!K)VnPw6Wm1^`U_<<}?ZIu+6O^t z?X`Za=a`g`z?w+28vA+SdY4JOv_jh~{B-=(&O{R?T9dJKf{eK6m|85`M2E$?d1ned zJp4!8UiY`>2wU8HJ+X~t2o9b?o{qB2v-+$GjgZ6KjKI``rUP^bDvwsxg9M}`O&&=K z7gnz&%eSsbP(&qEjaWeI`ahzf7Fcp8fql9)nbI2cm1bE>6ZPI>H$IA+4Rs5d1Xoyw zgyQ7;#k5Fir^l|Z-t;ns1&g!$MB}l201KB+#b~KQu^d~b^*dY_GK9Rl5v=Up%Y~Nf zR=k)VuLy1YtT~=)8jZFw9@p<$`*P~Nh?fe_3WlW#!Q#^5mv(`CtvZ#SMu>|zQDXIb zw1qhAA(&p=9~IwJseK@4>~(#%`=W3wjw|Wt~;-ejumS@9U4-QR#hp&fWt6^&Y!~G1vf#f2xoajp#w}7h8GG z9EQ~}2JY$F#u>blMm-y#4&$z!V@bYVIhYHq;hu9q0fMI>iw*YQ|Zzmua6ApBbQh zi`7>nn@x<4jst0sMlm6T%GvIqYe?K9uz$(w=W)A>#J2we=ipkb zKfI~kEpB$X=9FAAbE$XKsLlO~WS{SY%s=N!8_M_;&mI)gtoY&uk1{ChS<{%MN~iA> zZjuhE!0X9I+lCDy!mF6UVjvEhhCiUJ>S(w+A|p=w9sun}YPDIggKoE&PP5hVEk1}g zZs=Q@8GP{#z;RY{P~a*_6gIr+=6H|T=hl7Rm_yqyIP7$}`l6;WNRV~Y-3&ucxI|iA z8g+p}IBt)oiJ!9d(CU}U#DuEtiR!sh*f94k=;<~gDpes_ItWFAAH(KHrAH_}H4k^^K?6!$z_<~fV~?i-#cYKBXOwUh z2ORVlT9391L=sL7+YUb|A{O~x_9`OizM0?@)@ke5PFED0Z&`a*Qbf071b?Nm^cZ-; zEK&`cBZ(qKeG9g+HCT>DbEO&7x@iYF=vGoW_$?*aOl$}`w}|;HiT6Yk^7oFN2OYOPHx+j*#i(jDJdleHrg8`>?r(d+x<8-?M&#D3@{86}X}U!>e1>i! zWr$d-lEtEdE$JxemZdrU^dea02XHU>FZ;dH5)$A)U-li`(y`{ZkVCMG(}h$1c1855 zJ-8xpB4B#1uID9hmIhR#-dwwW3k0vZHhP^tg7q+h{nJf?9WAItAqb!*kS!y%_ofS3 zh&9yt_gA~&Sh`jE3_&havuF7B2|)EWkG7n40qM ziIkYD2oE|DfJzxpmsv!1O@lOp>|M`B+LIy(()&3`m2O4%O|O0s*c=CdV{|Ng_>diN zZr|O)lDm*!T^;?(p{1a0TBi6JDOp_9fRT15wpX%^fHK@jolW@@7Ul*3s@e&0z}P zwu4+?{QO|48Z?)(qbsIbGYZLx_RCWS81oRZ643XMamlpk1(!VKawb?FvtOsWnx~$y z$??2g?6Y@-OI8e2a*Nf9$(C+o^|W2h8)c$2tNhsqjt^jc&M(C6lQiRcQR&{cq(_@i*YLrnN#)Dyzll(G@qbAK}>+Z-_IF~Qhmwn8MpeFN~XbUXTTt_vw zjI*%QB~B{4{_~!67yU6x-NdEnZ8xSh5svJ zqV6l^$PO-uKgH*I2~-|@9G@;|WG0Cu$E1FAc>ZuKSXew%JJng@c>Quq^uNG`)*o=e z`(NNuA!}W7Yw|^>5yTXNh znKs4Q*cD>oE8HUwerb=UsgTM5yIUB~635zWI;E!pe&g>*==W$4O9{%Kb)3q_b*qJ- z26v_@>0z%&$vQOI4Waz7zvc*td_P_WB zqzE8W?TFB0U@seS!?{IyKM2jBBq=l2LW2A(5lME81Y*GZS3Vf%V;T*`7hM6t+{sJP zmpv3$&qz7B>M~U12M+;kxTDLsbI6sM5Zu^{;p79yvqH=0;n{=wMcB^uEN@v?$N2&5 z*lL^4>-5iZ$D$D`*6gE$U%zdbcIuZIe1~5<>?H4SCk(uvB@tf8O1%3b9Z{wlq&~ZHu=?WU1|6bF_snG?jA%zdB+SyN0!1Fua47Lvu?FIl;mSl2l0b+ zDB1+<1z5}Kb<<|@ek?+K3`|O2!^Y_t0kOcr_x!ge_G{Jj&air|Uqgz2u)tDl9Pw0GyW>A68d0Kv}q zES&IP+E?R`BRKNEw68SBnz`8qA2um^?<&4PCYT2zFG|hl%E+Ti0WPQ^42kf}+Bl#S z-IRVTXupGxgEOZUkzt>VZf8HTjroT}^WdcD4!1AVY)w@X)g};<%{b zCZ#jv#toM1fM~yMboZ-i{1A)0L067S{2QEmj1i~qI0zM2$S*VBApY_2L2+SkG;Wn3 zw989R0hQ88|3!xGcgttURHi^xi-UG~%w ztp7lX9+LXj7a93hfOfO=t(9mdQ zdvs$PO0FAcXOf0o7P`woveLAwM~+a+&3fS_vBsDYu>mb(4Z75!Y;Cl2#IeJy&C-{b z&JX~41;f|N-sYIuzKn>(U68W~r_H)z$XYn)PE%yJ? zt44qHs=$Bg)ef{?G8~u}hWAPPvCC;7cVc7S z+Nkf^Axf_6Lb6DxL5yQP=4T9kOko^o`^fXqWu@##*k=6cb6cPvT=%iVtGg?{RG8#A7UNVdOgYsk?y9}Mj0joJ zNZG}i^ubWww#;&~cn|sRJnrk>r!@(GNd! z!}M@)KBoR1y^&M{ri#jJ1f#_hf}|nXqd1J2JTf})pB+y_+dx?ep~pj<+u_A~)=Rs7 z+b{Um$EQC!HoD<^ynVf2!}RXcK__%PDpzLaZA+@nYd0U9)2OJ1{wQ`W{pxme3-ck* zbi=4p-~z<|();!z;8#A31QO|DZvLAS%<94KX5{-P!AVprV9+w7JZHHT)S0vk^cze{ z$lLE4B2{$wS03R19Wz0~!@gQhN#ibL;*Tm!5*>ER8yzmCpKr9#6!%OyLe--&Hv}-3 zZb*nA$Ha^wSy<4ngQeolSH>x9O99}!s(I}uLQtPjAGFIl^T8C-@nVU3pY@ADE@1Y~ z#E{6SwXe_rC;RZ~B9_JS@TysV`Fjw=2hT>OtCX+W6364q4>yi;-`6SaMxCKQ z4$1O!d9IxT>XWI3`Sr2by-{ncpgW-oxQW0yy~MKejrw@-RrBxD2?MS&8BcNH8>RyR zoC||nC0;?oo%Rc4#{$b1Y z?=52&`D2He0HGb9cWJ0nd4FKhI1Ai!A(Fl_&Vc&g0u0u%B-%p2YCV5P6?icKddZ3u z*fL!)H-Wz|F>o?~J)Cq-Bf_~xs{ndQQ#}DW+I6_e(6gE4`uQ$gk+ABcZI&e`7o5hjR+^hhMgX_{SyC(#Q zs6gxDs;arLG|_GYpzRh=`Oz5@6O&VX;U51r%A?$;e~d?;YyeMbXkK1kd2{nDKbXH+ zurw6VAO@Q56TI(oQh_b__ucy+EsqiXU_(coiY);f`qlK9dcQ4H2ywwec+SF4f649( zL&>p6K>aVFy{&H~VL?b@Vl8!5qP)T@&Mqznauy+gLkZ1CG4Ys#2sv9A7+YHa3!+l5 zUK$!0C{s?pZDwg%sQBHh7evfkCI0nql|zTB`SH)LD+ko8ZHgn#uxmzpsI;z$y&nYj z+a*ZHoC_OTR*k6TQ6Pyzy0N|Ov8$S8n&3Ii%*@g}KK?o>GX?MBGsC(bN{`f=7l6(1 zMHMXsO?I|sii5eimqO%2Y{mMy9y@Msz8i7K*Zqfm{qqY(4)A$;5*N%uB8c7x?IE#5 zS34vq$EstRCm;wZ5v7AbVyEVML&@YTIwC9_TwMBe-B{4ZzDH*#BPY%KqK_IH`mbK) zDu${0Z*zzf4X9E7IsYOy?wIdCf!aKEWO%qZO*}q?>$=IQpF_BzDV#z=LR)sPk^er1 zIHa7{fXYa;=DgEKa)_L?-eY9-PXqi|K6`nY*I$9%DA0N1fB`N03e=n`kd!5*0D)Y9 z4o>B5?_sBOS?aV1R3>v2N1($B%{ho{THen;A5hmYo@*_NZHBBiGQCwqckGj0=&P-L zos^s$HkZ^yNN*jO7x8z53nLQP6O(wi_5>^_$Kw$y^oue6j=JzHp&0!G=74%sW?fQr zU>*@BnydwquSpNm9a>si{2hJQE*#CQi0%oB|D3XBAkxh!UY%T$o~~|FUvF>Rm>qvq z^VMG#QnTvM@dLKJU~5lGKvadSRp7F3G!pKtf}jHp>>cg zvBdu)>@A?0Zr}g$(I5?iL5qM&i!eY5LFqCOaCG-*MuU`!lt`CIDcw1`yK^u`Hw*!3 z_`T=zd_G^F=X1{gf6mT*4rANG+Lox<8V0tJU=TD{X_y6Z+{KIkl z{tGbE$d~T!V%X4;!?=q?f+^GH$|+g=1Hic^S(0Bx4v3E`7WLr&J=lLR!56>tIerqu z`!dgzI#-%1tHVftmahXDYi6YZk6}rSXI2|k>oj5E;njP^l(E9Y+vDWmTAenL9ZXt# zhVjJ#4u>}#Q_BgZDVG3i4^6DKq}0ilNcc!dB<7b(+;jhjPyTa8jS3pT=R{fQZ=q!( z0-vq$7%bS|dCRKz(@gtV@H5*E+UIQEsitjOtaD|Kubwt5Mj1;`C{O|y%IKSzX~3$JG8Nq%^cY zc)0x8IodvliwP}+HJzn3eLVdd(sF7oqz1VIWBtksquX|A^9MmUuUkIM!=cTJB8CUb zYbO6&_WkQ|MGC+5=*B`@^e-RQQR4sxTY+E^P4tRmduSEz5{w#__``PV97wQzY?K-E z|1(*`r@#FIFPTyKY^A-SnM<`*FyW~MT89#DqYgymmD!yR2rlLUTL0p||Dec!|G}&c zY;>UF)X6}tF?xJ@^KD7@jBsOO2tp4c~}-qA}Zg|TtNiM zzWjcO0~^XOYG+w-{XGj_dwcurTIYMZrU7(k5m099ya)^R34Z+_DhhaurDy9W92*gV z`b-t2ZD{ySu~F62GvnQ9aE+{J>OWPI_hP^0y{VsX<+yd~qRpEfp{wtqQCF@CC>vy? z&Lh~O7W>yko6jn?U#`LXIPE^c@1tp1fd;|~emCFf!^|fE;N)7M_rXzK?#SWM5l-_7 z3PR$lsQgz3v!6+hBs~aXX!s7m-EkC|s^$^k9LdbiuFhD>Fqt+KRQ#ttllSEJWU^QQ z_oNi~m;CQ3aKZLf9v9!DI+#^`h$lD2Q`;|-rz@1jCU%FU(B@e zyRmls+zomAHzVWE09}$BdScT6YRNMs&EWN`e{fer$nS&K z``(zy`otxCIhTf~KDo1{x?p&JG$T8xF)_Qf+xKl!xv*fMTOh!)#~eGi|^Fma05|hh14*HoCmJTzglTf@*>KUA|Q6e^Sf&6#amr zcQ8q?vxjW02O7CJEOP|$ewxDS`|5veIyi=QHRe{6#Xh6@c7B9EwBDb1ic&`P z`G`L|tZsz7Ue;KCssEgFaBOUu5op<9P?wXNtG!oa*i#;rkYH(BS!LmUK*Jp<%JCOB zqI|7SpC)?D;Ht0R=nx_#X5mm??o7J@12nPNXC zdwM$^+OVOHme)gX;32=I)ogsh&Xx8H3nSCe(*Qs-hG#Bu2xi(zGaYL3!_qW(e^W+} z6xP7WFVv9q(Q+VhK|{kFfD%;$hr>;V#091PoF9-cW&HcJYA`+=uaY;00^~K6Iewq! zQ!{$K8~ z*;&7Nl%dY=$2Z}){@T)-Kul~3+2qJnb)9SOCQS4Glds3r{pPTDFlM)S?)ZHU2s5fr zSs2L(h_aVLLb^chOsM@!&P<@N4CU3--P`HZ5yk+Rqb9|Zq~%(FEyYmV59kHqy3%`V zVg#`$WP@C~Hckj{JC4XX`G=4M4C+eW)-0YC58C^*npnuOIzDwJllgsVro?mhnPJB{tmp63Omm?C~o>3 zd^;7tO3*XNQzk&sed_gM&97^tNc#t_uy|Q4B#QiviO&rx>JZ* zSppvNPIf~hWT`BrlHIS;ZCML&7Q*w7S>6z2N{(Jf*Xt9(pW6_=F8+&~N@Dqem2v)Q zI#9Ub!M#|S#qED; z;eMT*sBPk6Q@_g2btWJtXJ>TZ&DxoF}jeOtcU=+zJ9|GdWf z)xUQ;8Q3H`ZeWTQVo>E$zuQd+KJQ~;byKEQ4^@+s`Bw_ZX8x}9EJ{`$K~lQ(j8WR z#h1fU1*k`rNbH|FiC^b^%&E&@PMuK~-F^XHfhnqmRR#t*38_)TAabSA2lc@GZz~@@ zzsALjIoC9NC@UdkW^Qh`$~!aTZf$GE-B^kaiQ{6dxx5Sii!heBsL!8uUf!8brFgup zr(0_6V)ac-;!%BR$Fo8?KXZ(0Vw+O!;vW}1_XTFty#S^=Lqf;|Tdap*dlMoTteMD; zqCD=;qwk)w?X2lt*tuhu->Z;EaerLk_0IuH?fm&3J=y}A%*?EHez#fR;NYmeet!3^ z1An|uP;l|y+(d9$VEW1%c?AWh`#*m0?1^*?i2DO#4mjgo;y2%$ARZpI0Pt?xA$V&X zs=52~=e~}+WerxI{%bbATlDl!Mj%66gAX4*{F0V^drxt-RAmDFwTYC3tO}l_9cv^Z z!XwBg_+>0_+A+||o9oS>na;qBKhPt<4=Xk*bg!?!>86qA9#{%+cKNMg+=L9X>bZaF zMU5M88WA_XT?2?9k$4^lI>V&c8V*g}IuSwLnV5(NE^@TBUA)$mfb-Dq3pGhpABVfF zY;bO2p{tkIMTLAqZ0zc_@#|Fw2W29%nVVX%9tUVjeVtUrAO!nk4g`?%Tl1;+lSueP z$V+`e3^Tqa2&;A5&pK=4^`3V>bDu4y?wI*ygV33OtL?Miq~inFZw2M$W2B^{)n#Rm zw6E5AI5~SLTZ2nR$0n+e#9;$sUZax5#|Mocv#^eDP5-)vVm3rf&(nqSnp z9}RUdO&`bDPOd%Rd@#GxcXJLqbk|UD)cz&&C`PiseUYsC=QWVL#+8R*gsgZ-+Hua; zvcN|ax|j!8J0KC*?Z+L!3FAzTjxO=&)NB!sju+@`ehdlGu~^5)v2-N0x3WsCbzaQc zTw8l|qh-3>O8dEbW=~H~@}^xKJKmd2fDh-X`B(0*4%F^?AJvBSe}mRtaJ!-#u`1It zMokFZq-7NqLs-k!cXnJ(?1pG)X{X;t#K+$n-aFek)!5;XxG1)A|JiDTsOa0CF7Me! zln&4oa*|ny*@nJLEthW^S0 z=S}VP_LmwK%-qoaJsV5+1s=T`W4c@tCK4(_K)-l_A?Q3`a8Tj-SfRJc zgtL}bJkXn6h)?DwQ}-P-t%9IgD(5sRAAqXRIon78IxfEp;h&?S$#-PiRD6fuQtFX| z;mw*DKXQn=LdRch`#-YJZxF*J_C5g)q7mmb0l>|fp%#DyZfnF~PuXoh@Lc1g8K_;h zN{Y+2DniFzzL=9USkYjFJpjKa)p3bY!q({qPm*h2U*8H0qW5yaWp_H1biDb;Vq}-S zlT$A#IXTOXvG;Tgbk2)as09iTSe)@BJ>murKg*DVd|QWr$nxvrO{%L;3yv)Md3Mv3m-3`w z%lMUYnPcdJaK*qztK;jH%{gQ5JY2oUHxDKXpEM+=yNFka_}ymdcthp5&30@^aCVTC zLvHbe!%0a}T>QW)C`>n6I9WBAZDZX_H{9<&aGBmdfbFjkNQ?g>KR9zJFc7!n$;!&C z>51j7-MtLoy*(MX4qKct*r~)?vZQNY6#<{zE)0Ga5U8vyZ!a&O^omGGV@g0bF{xvs zP_L3AMin$pgan$eZn*5OIO`a9IEZJV_TjcTKRRC7v%?Tr<_(S=JdRV!D{+ZyywbYt zX|n=~e1{&Zw}VtJE-q-_MxAhTIG1elbZwZ-!f7vv!xwM95Ln?~Oh1~+Sh`D>y+jmx zAUJ6dhWITv|k09VxVi662J37d{!iQasWV0NmR9uQ@r1G-z90i z<#4EQ@WYfZJ#YberX3IT<~-T=IKd{tk9z zi!U90qC1%^c8I^F1)}Q)@~f3!1Hp!qC2|p%z~JJH{*~{h=dWJCG}AY#91uFLo=?P% zr3V`WDa1uhiD9I+>{&?(knwTv(u7haAJB#C79(Ev0&5}W3>5~~MvOJwiv5ARBMS-bI zH*c05d3bmpzEJ!XTzwc99)6LKi<`5my*g|aq5(+v^4DmYdrfxXK(W^j0CnMS9zfe$ zrwOm0oUQjlTx`#s=QAvlBTF8Z&a55ZE2y-c7#{wpRJoajlR%06nFX7ZlXE+SMY@Yh%CR6{r*u4XF@ZFLQMEcAWwXDc z97Di$i!XSd2k0dqTV&dT9{_(|dqHgQ0z+lrSU2q#je4GshkHiDRlZXfW@`uZ^>uX> zC&m7_{{tzzHH0HOP*lOM1l7=ph4wX-_Yc@7oj;8_npZ1-Ja`g`8_^DT$F;z<(w3OK zvB4)YP!z^DkeI63?0AcD`(L+#P!bDJ@V? zeduCS6UzingzVZlk(!L8uqbXegV4_U8mpX=ylVMCo>po5X@}^Pcg)oGCs$VLop@Vo zhkZ9G&u=!GH=3WzQGl>WBv17f3h5Y^NU_Pt*hizHwm**3VE-~nq)n0L(G-&ffe5fn zgi~-nBf70dTaqCNzH~<7Do@cr9Bc)S@OD3>{_+aJF4+elLQUNk6vd9^WXOnH#Fbx< zUmw&@M!+pf{qBuhHIkC)ZcI;3uDwlwXd_01aO6|YzHAargpgJ>1=&<=nqbf1A$Igv z37$@FLn`^QYm^i>_&*&+e%-qN^>#yCds~~44YwUI$*H$piJu8q7{$E_HOE&@i-bxG z<9*?y*+4G;sfCK1d54tp&P<(+6&R|m`Krit`nbHJoM$l1yXx~IseTLsFq(1dt0JFb z)V@YcP)7;u^$!<=#DvqAhQ&G26_4tgUCJ6ElNq5OsEGj;;66a2bi)%3 zHS+-OGZzWnQ?=VdB}Dk`TwAPCh^DcUEW3O}sVljVT}U2_IEQR_Qz>MUc?aalx^;)1 zS=(q$UUXt@>p`;_A%1svH>n&Nmn0Hsf~el}BKpf`<09Ll)InR4)Ofq|Jnl#OO%;@c zKZW1w62+REE6S@JR!h3q^e)E`yQ&dsgAo-rc=YJyB9D&|NrJAshWqtxjreJr4pbn< z%Tlx>hyd54+D*jvar0WVJ~eVK4P2U>=L&<}xy~+B=oV(ClPqjj@-$e<7c6>!Pq`5~ z=({WMiw)f8fkH2?TvlvDW`l-FVJTL8lmtqmAR< zV-vS#7+R88o-M2r>JXOIf_{F)8q*co%Ry8)CqAWpSNYg=r%ExFr{-0*YT_mrd4IlV zBVWzznlP*8{f=^%<3Y+zC+5RJlePuF%7ld5je`9XkBF}nI_OvgR$UdXLUbwvB!SIw zE&Nuu?90a$4(fULqv2Aw?rbfcd^S0u7QgSaT^}U{zvs6=_0~g0<;l51uWhTC&9K9V z^sGAXo#<0UyxPa_zY`LL+-kSSo#0EO*2~Sy`5CxjOo)`4JEgU*^-pFZAwBQWtKZz2 zZP<0(GbEiq?QGs-Lt9(el#3W$1%p75bCKVl)A{lwci>Sswwu z>W2yS{%>HKPzGb5tpe06)0OG<24!R69=N^6<_ETx+}nYk#hXV;DF@k@-*GVX1E=<; zVMCo@gEYgwp|ho_DR>|pVSV9;!pFigVChf9yunv8Iz5Y1=GpUj9&CeT@zcw5E01#3H)o5V{QL;p6=s;f#=r zfRLFg)eiD`Tr4^Uk>1=d*C;xb?St~}+8H<8{1whuO2EQF$0T_BOI}U^cHBLI6TxEMObmMGC+)p@f!+FVJhv+w-6?KfH*F=v`j;__iVNE*K?qjo(^@5_$Do?P8 zaneAnp`ah6N4Kpnea^O_)&2zJ%?9e06XbrcaoR)l5zW$fw0|^FX+s0FoSn;QAN<6C zjKtda#Bd8`Z*FdKyUuW=dKy;K5sxn+oV%)3vl$8{u$R0%j-~_|<$yHey+#D!`_p+T z^;txb`w6Qg`BS=yhz>i{-swhj`DdF17<%GrYC+U?uR<&<(4PCJwvI)U{PC+p#} zURBp_b(d6`Gc>+PtCschEtx2oKir(C1tVcCQnn6X5vb7`=hcd{ja;jp;kF+93BVms zDr*1f)^Lnn=;AXoTVTc>7l&YyCwuK!L75~OvnjSs{p7ar(m616wrsCgPWB$eSM`zt zNzH|9aGi5Laxr31C>OlXNj*rjNj*WgLb%iiBB7QSR%(PDbSmxydhvq7Y!h*n5YOk|j)rNT!T*zaILWY3U`oS2I=;`eoyRfT>RG}>L1Fzs6twTY;*y>=P;)=R{*_K*u?Y-#O~SSA zSzU+i|F{LzHS>jO&umz3&a4ZV&D>;0q)7*pj@q#%q|p*l-^7jth3Ru49B@yhgoO-^ zPKVn<3TVO@gVcIE*q=zxF5kJ!Cefq3uNz=!99M~$1aU+d+CInTSo!GjZh#st27*a) zSH!D;@uk19Q54xP-UOxHN;{~BqccT*uHnBWUS-gs3A7ucBn#7DY^bd45c519)TwnL zO_k?Iy;fJZI4rs#5tNsdA$a+upHfwpYH7)XJ%DpoH(Z zb4D)k`FEcVGRFvtJW7QM?9WfI<7x?*r6`*0JbG)(>N6ia5eSKzq-M3NcLE&VV$ z#A6rR%1b+A|FNifwjbr>^Su#D*0KG-Pc!vK`*Os9 zfm|%*s@UpM8}SX&82Em2rG2P@5(o)bi*mZxHoyD&i7%ftheLrKnIP7dPMr%43vFuE z-jKb<3ta>K4~z1e2V)v~)jk&!KIMGTCRJI4VKAM%=eokWJ^{^c)oyVk>9ia6KMr5t zF{2M5&@Iq8>z;n0`(j7e<3cdNdBzyzaeabfR;SW-&Vi}^%Fk;h6g>9`_6le%KXFf5 znWx;l85*<$6h9O1bV!_h5HX)~TYYSM)UTtd_%c6S7xtz=aEn(*NB6y==m9d*h-5J; zNUa3U4xp5okTpMRM6=`(;Qp%IMcQZ2(;Fk(pgx-jTcG0t?LyQEJB~$VHl%331qT{n zNHVv#>g+`vHWmHtnP?=*+GI8F02&LihAoTXYP7xLF`HcQe9c;hA5U8t9)E z?WV)8utqNEdL623ym(r8W6m7bvE7ly172}U3Um&r4ZAo#P7mikpBYM*C4F}D9xht?K*9eONr=!xQEM9` zCPLcUh{P~kA#8EIszz+rrA$`4-V@)k-cxYNrGNeDl&YwiXwhD;UCgTZW3%d27wfro zAuJ`J`MYw^xV4qX#tyRHie-1rmQ&Ka5r=>rM0h>;nQEBcV+V<1auTRq1d8cln2owy zJ%*ft`ZWR%o;#z9b5|{MiRnLE_ZESg7TrgvCVDNd-eTwM6*BEtdR2OLXPmV$_4|o) zPmg7pU_DaE{2}`Qd%UWfw{Jc?VoM!)+A11%7OIv}QP59$`j7+#y%>kaN4;Nd0P@ez zR(-Nw{peb`%^-8B!p7LryeSyx{sir^m^H8`BYfEph2xlwlEqR4+m%&S1=;Hiog9s% zo{vg(02Q}%1{Oy(b+t!t*V-jF3WGSy7PW%U7S3<%$V!}YxU^oZ&YgK3-ElJQmk(N2 zYAf&4jtGd>ExyD~(5ZI7OFfGW)SWFi13MwG_^NRvyTRfugYiYD-D8}CduD@PlU~4r zT5kth)mGu!PWSpc8CAUvGx$x-l@t%6CVujOIw~6ug$mYf#?^VhEZ@-c+__v{ZQ#4< zvCvA?Ti9aDTeeC{!bQ#~Zf7>&ZK+>&A|H}JvJ1Zmt41DQ8a5@C@HT*D%K z!Pdm~R-HZ)w<@dBv3j8c9UqQPoGgjEbi-F9>}9Vuf)74%hrIIwBP5ULt#!VA+}>fK_YR*|N*6$90zKSkT+;@l z4$)7Xe)8cmwOE^)@Xu+Kj1~H<{B~1N!1kAgwp>`OGk6e9rUAY79N~b^k zbU!54=#&1E?A0+V829@M;IH5pN~%o?@7vu{u6gjd89!SLYp9e*Wc6E5A&u z3RLJH8&ub0|M1~x)P?%+I@O~t=b0{>4nzVX5^*8D;c^}3EHgjiL2%FQ z-Y`@?mit2}n_p};2SU|cj!(YmtcB@(aJ;l~{`(Wp<08&kHA^c1GyYvtILU;3@Ld)< zznR_3{@v*l3^~&wUX?Iz`&yw}?LS$?L%lL&&J*ph`dfD|W{1-ny2*r3d)V7p+jFDgr?~TtSeJ1}kd?5AJoQI$}R*&boB7?suS0HE2{&@MM`7 z&)ZuDaD<+my+@k5Dr3bYHOv16(e;XBF9}6j zji6ZJ#!6$lMQc+6f;o$CK4Z+q_cxx&Gf82qn7_r0(*%+A2-D?z89ndS!qA~;BL)Y#y33W#f|8u({sy%RBjEwQX84QnBMI05h&7ob5e$8} zeUm3DkU6lQ&GtLL?2SV)?*(B{^J&Cdyx9DsvhIU{&%cdHT%@o@95@63rO3G{bvSUj zFwol-6Oi;)SA|oGL9~fb=5nRh$7p{ic`nWY&OgJlO2=RY$0zby?>x|k<^_X-C%6ll zf&oPHo`&VtY#t=zxtXsQ z>|yOCc}Sh|O5$DG)dlnl@iTtecvau4)3uka8oys~(x`fHbXpiCqeXlK0-p>dx-v&e=-I*@eWh7Y_6iR7F$0V>?%4VxUOGKOt2r zaqKTq20$DEejyU0T8pSc27+HBKQ^rh2AZUT=jObwJhH%!+e7i1SR9X9l5>DCZqXx5 z7&R+4>|Z4ZX=)hPZ#6DbDs63{pOOo<=uP&}MoGZ_*fIqh%J^lU@y0|6nyDO458c|u zbz%+JpPE~O5nnyhWE2FVAnks153{k5DOB)$92idTblLI=YMVu$Tw07OZ+Xc$F+J2^ zfe=|GKTFEo$`{tx$6aACGds3@N^nNP+_t#mo0rGs82g2}j5V3P3q-187d(q+Zb&H5 zjAdKoPzvS|Co>hygLwz?`6XVFkXB+f+A!#|=$J5oNO7UKcDVMLbYKS<}&uzn8--|swV3StWB47>q}K;gJqndVW@cqorFvr!GXh z6gJ~?wRsh`nbG65`gkrLICxa=j3I7?SZ82d0R2Ze524yE@yH3%)pO~9Yw*i4(%Sy3 z^MOlxH!5;Xf*Zt0>pH@30MQBx2{jSnqf4wRJt$d>%-+SGb%I?s4({g>yGFh$rrYLr zy;`Tc>S{D*zAzTn+Au>AR{z|=dPA*N(R?!PFKA|NK3QgJuKMnNkos~>I~^WjuQ)-( z!f_e%)k1+-6+dX=7W5jry(5tgXbxp}Tf9XXUn`8oFrFzN@T!fMOHM1x>fT!kCO{^n zJkpx0%Bm~ceGb{5av7L95}}WtJM(EU+o{6{3V@%`u@eSpO@olOPaASI3Q_o_D-~h?o)`Kq%Y+H4@jnbw_hha5ZChNMn7veta1 zQC!lzMOEVBI$e<}cf*hjeFGldciJ3E0&*jq#Izek*lYC`(zXw38r(hHxqWUKNQt7b z=O_Dh9)t27iuY!%`eRC0#ht}Klz^*J#MXC2`C;GQ%0%2F$$LTWJ^tz3HwHf?E&_CB zFaNcD#v;=M*K*1`HQ}0I^`JdIQal9&wL?Y6#zGj&v+b(ATz(1U^3tIq!)mar#0jrQ zQAhQuOKUJTN$Dsjm+$85T?zVDKClALB}L;(3El42t>)>(l0^k)dzix41PQmohSidz zWhM<#q%3F>xU-UPFY|#?AnOY@yWierEa;_vaLrYl-gzJv`8#dsB{iHMm#L{!?<%|j zUwcys?Seu*)zE&u#rWt+5xvdP?wsp$yO4)w^D@0Yq8jVH8%#Hg&W&AnX9V?2(v1Dj z_9dc5}!Z*7ZxPXHq}iJJw$Ss%{`)yFoNr8UB^FFO`q6 z-S)2mf%VzdR9-4n=$1|OQ}Bb5-X=uAMIT_MptA5^0*NFc(P$;Wi2LZItRw8xgvkfI z|D$WNi1+Da(d5yf*+W8&I-Y#21eH@{)z2BQAurx_^y%US@~cAwcW+xp3Rf zZ;^Co&PN+uO3U-o!CV96;KS-6?~Mcb$1!|q^!>Gu0&n+U!;vJhVZOT_hajJFMefYgEq97@D+gH}rYPW_H2+o$8^*0x*KVg8g;4Th; zkixD+t#M34OmMeDpOfX-n2_HDG!89V<5K*cSacQImy<^lR+ahzgGoRy{z$ zJk~Q~Nh9z^RP{Pl=BA&yax>)N;P~S&CO{HM4fX0_Qz*paUAWOs(a_!t*X3@SqjaXr z&c-=#!=W;Sm1yGS%N6`lYXNBhXVs?jFw|`b+v3PJudNA?+{JXb$n)%&6h%MvY#?zc zht9!S^UsV4{aYBPRPlXG;t&NUaj5Qlf+@BjkW=f@*%jZ>wO4V^Eq41U04bSf;fGi} zJ*3;=ci=hvb*Q;kbR$AF+gSR;Q{DmlmM4l%eKRdG$5W-N){8!zN%l0+(Y|JEcAh2) ziiRXREzmn zy&bPLAgddj8<8H{Db+vk5Fr&n0zvpe+B!NqYVI%1ut(C;Sk749_b?M;uf5jN1X3Kv zrBHo1Z=GIWpqP9>cH^7%m!XBV7lc?^Z{7xZ8r4&L4|o=i6}v8XdNSZcCh@E4tRL## zQHO3O=HcZapI3!e@A_Pw;k#WPt6okfDXcW(R;9n%nNJViIS0hob0CdTm&d`Y&la`y2^GhgexotmG=2YOh3~9f&x3ek$TXl;sqB{k z7dr#&>J)l)O>GW$RW}|%a)ZlJ!XcS3!#ij+gY0~MW+lNOto#GLjT42C5Lhd$H1%SC zfb`8Ja`z$ygKpL%>qdQgITC)^^$51#2c97YrD)gQq>8n=JJ8X*zn{QjZRDeQgJt<- ze-+0P+!1?nf}P9+2r#`|QK@TrPJkZv=9Dnk=Z{>I2<)EUnN>DG+1(5wkW8qu`F!jV z^>-kHL!ly0LJr^w0ll)Lpc@D=;j#^^vEf%E#p?}o4hbfvX3azMjx$cKEnR`=4~ON> z0H($SX(Rm;PeR*Dh1gJ1ryxmsdisZ&0-_Hs)wslxRrr{`r{VO^eRytXM~}(}dW`-| z=MNt;TlHk2zqJuMe<$AT1Dc!V0}F>29bzVNL3SDh!pFj30gReL+KbbYV-kW~GA7T$ zi&>ad&@yIp`;C-vF93BZj2Q#!#f57u z(I5(Ua{u8dQ3>fzrJyNRC1Vw_=0PBXHm>0p>(F1M6Y3jOw6am2OWTd61Zh1t2}IOc zg?j)Pabb((xzyhPeC}gb z6I-_p#V}ru^wN;85n+#34r^e0ibwlCCpR4X>i4EMVLsu3Ho#BWN*;QEdbFzuHRRV~ z{GCJg69V;mrzytKA-v+QR|l#RG8yakN3|d*0oIlSmJm^i&t+-q(^P!o<*pekAlJ6k z`7@Xd%?_G#JKc7lk1LVL3!bKg;eSgcAi=?qix3y!4$QN}P|G1Y_n)|4FJ1ylyWt^* zx#0fIT!6d|wvmsIF{F~w+c6#nHz7S@s!E)I0xB*ESyXd#IS;jDS0mkwiI}erN$KSD z^ol6fmpH`Mb5PC8rI(BR=}s;Ocan@XVmGaKomkUZL6#sRSh!o13}_Mmlz?j&k&mcE zQ7PI3z&!2k&eefmmPDYlRYZ1U=G8F|hXt%(J!TTg`TUt$hhCd4;Cc&4s?IKg4_9w! zS}Ha|u5*0NyiMv`Vfajzw zAZ00TR9`(zN{MMjVIowN&u#N`eM(|5c+a*SCV2ZG4PhhU0LhoVrx+dhx19(V0HTRl zYxTRfbJaHcwG@tLgO~oar_r6&<)n*5RW3mCgrh%A-hI1W&sCdGUEUg16`k5K5|?}7 zI*O2x>asYF;+yk#iIAs!F*C3_!sAztmE+}QWz1ie!YojI4&W3qBNl~JtafVe-PziS z6)=O&ty{P3pau5j<>fqa?(9tnbtYIk5XeesWGP&!;&Y1-;R6n)20{ zJ6);d=D78Ad>c`TljC#5sMpypv^M!(Fi1b%%eX-97u0U@hVADQs)6Lkn{gALB<*&Q zUMr%;?`NV2ixqw4Zz`M1dcnN*=|6y=PL)Fd-VWhGH)nUT%F1Hhv#O7U1fx6tgta|X zYv*cV;3(BAIX`tw;dBn8x3lh_!U?D#g`G*|>7uwD{DCl{Nd67=D4@RD_^mwwka!XF zrJqE!{4Jzt%BvC|l-q@x0t!p8cx@H-Z{KRM_Y8HLs7h0nz0IPk>sxTkd{CtEvx?UNrgt0XSA1R!i8_XmGzSi!l(jTMlyySA7_)>Q zgPZ6iIx9-}?LlqnTnhq?ct3}Mf&Pa$4*2P2yi$x*?K8o2pIHPP9ZF_73*ie-2u43b zD5Pds0GR~%c;;P|b@FR}jj2~n*W20T=Yzzng<|Q4w<(wSGK_)J$7SN4z8+_wO&26A z?E7IGo6ChadWc{LfcC3$nYPxYUCJ-!D+o~9BcVx%w>@dLorT*NP+c%U1LO~nHfEIr zV0Y1$?!y6_;HGA_;h}QUoe`+#1zp_g2Y@~Rr|=Cc(iZcdGfvg^I&#m%%M1eIja3BR zxdhqI)H~ODERSiBH~^?3t47R+yOY%|zKl&%@grtirj%IQ3XXc2sNS3vE|Id4SMD-L=zEIEp!-ZB(j+vFdM21z+ zM2O_{wqK>>DuF~HJ(Q)s%31V2g%ObM**59>qxv7xh*Js^MotED=Vu}cOwqrta6q7| zs|ShKW?ehS@&l3>U($Z_l^D>?OgHE?(*jOn@*^ni%L2lc zq*(M|Lu0!Nw>a+L^^5IJdDJ4$Yv=M5p{ zvA2?_C_;eYa;82o@cAu|hwQ2{shypj?|b|D+NRb5cZYp!!)4+1qCoUIq9vG25vrG3 zR#74MRb1a9?NV;BE9ynH^Ja{aipsT{^V-m44Q-y-pKqhu+hx`f6P#zi4tp9U8y zc7uTmm=Dhle{M|)RD0}(eF_cjI-hwLAkAX$rv0spaOY__g4H`!&)wa92|%zMMj$xr zeO0rvvzAWDCAx=)KRda)Zssc1c+_O_Pgdm@sB)y3I?qf_R(X0HLWuJ7Y;&Q)RBy!7 zALj5Dy?v|wSrnRFHEYXhq_)2~d~QGI&#`ed9SErB4ViA3C_Gs>eq2(*rkfShq=CU&FG(p-IIW%XdXfiu%w5?YLBA=oe7ER1L|6W8qr!~t->=V==nVfB%B3oI}-uqXju?G znyd>x2f7ZKpa;L^S-86%czmnPgFu7(&l{YaZWh{zfh9O8FSdW4 zcsgt>$)EIGE%RmqZOb)INamPgBrev&9}0={Y};&8g|r(hHO#H7t{$2_yfgp4{vZW9 z;+3tE^ce`Bb*+zNZ>PwJaB!rqL|-*E`9BmB;I4$u#SDmFC^3q|%&m27V~@{u&rZmL zn@^L+A9Uym^Kj@1vt+9#$M7r%;BEWvRsk7PJ<*&ROTUs44@HG?j^<1D>=)0J!+-3L z${R_mh0%*}K`qbd#oR~hdsfTDT*ky};o|JG_ zhk93I1*Libcxrn?eZB6+#>SSgHY+)k#1}wQuXbC^Dyt~#=Jh#I%-^L%T%nq9PEhIO zTW3{zXOH~}2$m=LFT{rDNV!zbvN?kpGJNcq&VS9$b)PrGlf2g1lozWGHlZ>CXR2g( z3gnrsuz~h#UsT0UT2CWS4#-RU-xGWW5k>s*vZk_Y4=iFy^oG?hHYMK5audigiq$Ca zG%>od3*Qe5BcP{xGGD80YhQhsTwv2Q$cfyzP5fqx-i#o2C^b6TBtF@l9cXzgN|wLT zpM@-~iy({LjN*Ja<@s#o*$O_m&hiQle}1RaNFV z(`nHWq|LI16wPhVa0@50Pu%e=9)Sh5-0$K1Oqh5&|DDVmB2MQv_QO1~DlaE4vd>{cZL9t`ev&Rl+Ip|7R26SRpU+&1rT~i`hrgh- z^i_f#`C56{;);4zi`%P_>88O=YJ{B*O4lDWd;L?$OvrtgK(qz@qDWJB*(ZjC*J9lZ6IoSPc5 zkkSNl`=f6xw;m>`UIGOT4>k-O8sB|5+jrdmr4uNcPGWmOwzqkt<-bC_m;ZbdF$0h0 z4Qr|+Pb2j-T`lu^ef{nD?mIi-3^vE90FWoaD8UAv$J(#^bkMyYsZcs7%%@C@=dO~l6vtv;) z|M%r5MFG%!1Z`lY6h$9TXfrYNW^mi2gLZW5vD`Pwc%2^~9j^z1ld)7nDi^e^A1_PI za|@(>Cz}q|SZszQlfe!7W)=_Em_1!Si{t-f2{J%4z7e88@-dULbeE+we75JRuoK7c zE!K~?fm2xhh1HRJe=bp5Tobj|LA;ljCNEN-ugQt zLy9hDZ4@5m-4UuA=C32v{n+vhLlmD2ysr>fZdshBQhS&g*;g;M8fE3>n%E#950YZ6 z&t1SasU!0IAoWU=R^_tjb*nKB;cV3v3*5w#V--GIp;`bR9`i@Y`{L%Lf&wcyphn{n zxN^S#d3`-66ke3NcPp@RpQ^V6HVq?9-5RhKL2`S-BeLl( zH<1|Gb=ag=wuHH`59v`M(w3rs_JQZFlWonTS2ny(;??7>l_!gU5e=Icn?zmq$vEMJ z_njv{a!O1tOxmtj*vBh(L-HUvG<1JVM<9UJTKWTPpEfre|NNhY13T~){(J2-n6;Av zLvjBD4!Vf;D)GR|JeYdV)9c8bOg1fYs(TXHDg>N*^ZDnNtyGb}dFSgpSl6J@la^cp ze=t+YOlp9x)X1+v+pLs(Vsu`fe3Rb_`sY5F#~2|*PvPkIW_+G;OaV2B~o|QgaB>R`! zO_ra56((4_yh-?Tg{`9mF;lEcv zL8?m#D>Rlvl-Dcmg~$kkYjr>`;_}k# z{yszxLj6I8ZF2Ii*98uhwWW$1J(xBYIKzdXrnYz06#qKjx0cT1(U`e*hXeomX+<6L z{{Ln!_w^J*C*SV_Un&RxMJL&Lf#8e^mYR8b)d1jte0vUn12UQBtl6M#q3M zvFBdGavNogBIUnI{YBC=!}?t87$SasA0TP<>7qQ^KS^5a_uY`g+>Hl+-;J;c)7y#3 z^T$yE=oLach`dP0D;UD?<%eB>$PIIgd+(~<`fC@u&3R*fU)-E%U>7WHw8lgJ+=Zmy zw}ln63)lbJ1rAv`1QjxAgc<()Anp=qDlB$K>2O3Q$RxG?^4CcvW72ja%vcxm^>$A65+D3u^H2` z9}oM-BfEVuk9>sv_alj*VXpG4_dJCZ!EfOrayd52^ZCjkllHOM4;=SP0p*(gXopmu>vpu?1_-wXxaLo9vHBAG+bK1ZxoRZik ziuxvQ&$F^k@8*r;dpD@+csO_ZU7Tgspe1 zus!s1r=Gd}8UU1l)4Zmm{e1)f`{)NzzYiKw5CD#SZ?(u)6UJ++Gqz5=8F~S$t)3H# zZDX29^f^j=hA1hy_u7Hw9-NK(NB;o8a7%TxIH~RtU|U&ju8eb*-TvIx#zsA-e}S)| zXT=|<9xHuc3;!=N$YK3T?rR&~qs`FLP5KSOH+k>Ucdnv(*5o)q(>b*9+Fw%WFFk%# z6u57h)!092k=Wb!pMgjHnjudipMk+X#>VhEvb(}UlaK2AZS1gR#6t78wrMRbtw{4n zSt*}>z}1ymOYi(4uBUu(rDBrg7SQK zFyX546AA=l7QFd#NnxHF@4D@sKiJp*X?g#7vojHx3w&sMqqXij@+G8oJEsayEWVj8 zu=1U*TCM!2W`yn9p7tM4{LdHv@2C8Xv9BXPf4IIX0I(Ok{>L}kVLfy@&yxZE_$?tM zknMlJ@!xm+N`6mY`88Q{VwCd{miV|QYig@e0_CPlw13@N_R=OC@9h? zodQZK-6bG7Lx*%XDBVbhbTfcdXr7y9nej7>U!l*`gCK3p<)n)q9K525*K zkol$BP@sX{zcU?f`9G%6#^_%s=@7X^l#q*mE>rnJCjbppfTxEGrFg7RmkD_at>t!j z;R)n!|HND{(^8)LEeG-0dyjTjKcUCls77om3^w&2Z;aHWrZwLG<@-2*5a_)99Or9c zccNgTMqJ!XKWw#E_5tWMcMXJ`rkGh0{Rw z3Xmy1Y=`Jug5aICfua#&ij;_fh_9-oDcFNY7Lv)$ukCUi-_7rK66%Wl-&25(s_39X zCH^e(0A7zLdBy!I2{P~MfP?bN(^TP!s=R^KID>j`ii)9StUC7W;8&^)2c#wZlZNi> ztd!y+%h7?qoO^8Oqx2@DtE~zWt(g8x?uK(NCUxo`TUCAEQg?NuTWJF7KGt9z|J(Nz zQ2tqr8E(4f#~|M=9be_~;`0I3NYEe{}Jc@l-_?5u0zK5=x%8cG;Siowz z87+AQW5xqY3;OMBc)ZKI*b^bZqpX_!dag8$NHyfL5rYyj@slLBtznFb_3YYwTWy+o z!H?2mdb~#k?m`4hLUFOl93w@D$)xZIK7-{bTw{c z;P@Y@e67gk=v8uhFA1n$n1iZ;iALEfII*4%2iirzN1rhLdgyV8d&mSI9Md%@~Uheuq^X~^H{p*3h z|MkE?K(tgL1TN{W3$+mjtaBh4@cWfER78IgM~gtM?jsO1y+0j zVo@0IN;?*cGl4*TcZ0gv;;im@y$>oeXuAv3AFRmk9Vm-7QOat;hXSo(Ce|{U&nBu6 zSh=K%f7s5Tkv4HA6nAk)<@52*;O22in=lQ~C|^Bw#favQ`L9^!(*kU#HRv)=wgn6! zf65cpy2_~K{xQ=t2Of{@;k59o*`&8{A_}Nlx0(BnVni<=cBR$2^BZuMRZx72)!X9k zPjK$%7>}v%Z@r@JH}wi5Lka7N0*Ig#vUT8>OoOto>1!K!evBDh))LZvNgy0Y(b8x% z)KuT)4+djJoUR^Uf4;1htrq-um^U~8LdC+DoeU2y4F#+dOm*Gw$bu#1HZGER+`C2wO3>i0>?*Vnw)6qktLxo$l^nh&L#KinFA)zIp4q?(O)5>muMVg$; z0*%tIG8*af^8G+jH8ebugrw7g?lEl5jE{QZoPnlH)tLk_|yAj$=bN(5>L*ox$65vkl>;a<(yW<}Dr1W&6wq;g%c`@^Y z9k$}Sa5OLj+7!)WVU#I@?5csk;;M=4pNJX=(PnR8Kxx)q=Cel!32+t#(!Ff%)@H{K zL2r$vnUTyMudj*Suhf<%B+1hA;l6PWy`o)rv?gWX|P-2$Q=ypayW3kQ$-Z&Uo zMjtQat?`o&IF!1<{#1L^w4M}_Emv2_y9Zh;C+lW?;SIJ7Xt5~3E5}L;lt2ADm3Z{v z{p=}YgW!Px#ZLr-w#Yj%lza`#ajL?!>P%F%rj*~-u9siLi$WoE3uCv$LGbJUm?c)- z_Iu6XebzyWFffie0YV)|`Ztd}IFYo-L$ynn{V<&)UuhRbAxgOOYoZzYEF~DB=J*1r zzZsaBOZea5)#Zfdx3_IbKC-?9C^qjk0;Yi5?YFH?Jke^oG*jY~`HEYZfV!+JHVJ> z9e`#6qr+nMDnC+X9c}G85{Io#K##OPrza!@xSTmImvA8x#V~5tnB}!!2R-2l|FAF4 zt&R%@xM}YlpE1?qyC)k`-lLBqU!NU?4 z2)QJ0v%xw{kk?#@Tc3Xa#^+Fq2YJ#$CF0{SKZp2wmeq<;CC6 z4Gfgp-q{Zy<=WqmH(-+)tTWQD)?DXx0LehFmkvx+&73nty!0Zegr1d9TJwhqM0d{# z<|rYe(>5DQc}kk?l$Gwt-73i}OFJI*HA15pLuXyP4vxbV--3H{KbM-AT_uHl#kqvv zF&-RHql1zTKA3@k(;eVS2$jkx_|otFI{yxp)9?Z*62~Nahna{`r16JHce`YI5(7CHILEkA<~f z{c`TB_HzF<@h5Q)3l}$I#Kij7!g2q#a7!34thLp#gjC18+yM|q!lL8g-r~dUV zcx$0R?&NR0jm$P84jZQJr~&*qQ5$AYFT?t^<#O@sjNZy0EDSJ<{IYy?GIGD3&n70_ z$gkrQ5?+vny;oGMd${P;0>%e)RXCbsF4}deA}Y0ESXqizLiEQN{K{Tda=K6D`hB%X zC8y+xOjkR*)uhdW8ZInAmI+s)9twoOYT5p^TK9jgma^FaQ1}Y(v9^L&k!oCC|0wP+ zEHnpZt&xkZ_R=;>jjt5b!~2hpzBP=Fymje3__ep-JXPEod}f?K?AHmjc?f?e%d2Ql z1}(`v|6yMCv#TmEkDkwV)&Jz|%;KIWvv-$CmF2mTA>svvk|9>l>fa3!?mtl(3b;Dl ziAusHr8Q>YEmRnNu&4-?(d^!QaUO)CfzY0iPxV^I+bATxYUX=h|4^u|CUhiXe|Enf zRwYmLcEr+oPbFk02Mm0tOBCheen{s&+gg;tR$IN+czzmmw!mIOtF8dDhvEvO3t!C4%X)a0#~Go<0_G9BsPkhY7k< z|1fVbx`L3g?<%pxqJ^27xt12@QV)2uPF{FM#UX4OcQgbC1rZ2p(RazohClYTTO-MN zY>Rjb@m*V`_&8-ur<+=pw@J>hWa@Y4)*2^0NW8gHp*bf*pcWFW`D7oQ>wg>_G`bms za!%cMu$$%1g#=- z8Lha{q4afHYxX40$>$7~isj!^41ssKXOG8F9Igfoc23ySJWEWHyEE3^4@+rab00Hl2eIY>5s!v~0(N8mMN!|Aw`a z;dvO_5UVpwEAo`@(@Lm zpI8ML&*~o+snZ(RKcYLVoV>>KL!)&J0pLvehZ{sDCXRDmys0?EQt~?^l^>7-UCO_3 zPj-J>b0yhAHE-s`+*%2!PT^ufm1Jb%5zTVc!73S8oyfB8^c-^PsTdJOo6t~!As`T9 zou2Njj)E%0Qg2C6JJ?s)^4TRs)x_ zqY5(Ick?a07!y2Mu1vP_4e^OM3YF{P3Yyff2MdX$!46kGTNw0bDQTXJf{N{qzbZL8 zDiVLHE&nvQUGMU=E)x7`Eju#1?Ul9k@sxG927CVYC;oEkolB%U&){n6=;ou{NrAnC zYJ>~~p0cN{{}ghe50w>{y!su4JY5oQ7ypTNWG?->5e(7xEe{Ox{t+u(0#u@leCB%>n9W2ZOS0fA23AG3vBJfa!2L%OgD0*FG%UOnp15ltr(R=Su2i?^f zlzUA=Z#EiS3<;88?H{hwTEok@(Z7DtJ4#HMui{NOo31}Q>$w?99V#kd%ZHFJ>PTfV zE^fa>i4@ z|3%akpK6~deEDWpd^H&`K~^1{xT{+rqd&A!xNrRlA-@ulo%eFhi;)=viCazF-QJqo zB9CLR4D&MQS4WwvneksTrsa}fu?BNu@@}zGc!?oZcZ9P;DPVj1X#z*kF9({MdLA2u zJ{L2^9@=uI1E#k0I${okxfx-?6j#1m%gj5^Urp6{WiDTJrku_^5uK_69NH#TVH`F6 ztb?QDyRfq_v{PaKQdC} zZ);CQYQndw0#(-~^~bL&$bHSS&jJJl8mn37>4)df-|7>}wz>m>GkNn-kK4$v(iQf< zQ(GksAQqwzaxP50f7L9O?JKikN86*#A6B=XoI?OT@i9yhO>l=EXJF7ZTccX5kuu<@ zSmnPRl!aL{$kbG2K(w1noS#C$iBN&_=>S*|wfpCN7n(*fCBL^il54FcJ67u9G#AZR zE2Z~r0;EKrWXWOxBDoJfj1JqP67I;Ajg22@ zvy{7As#r5>I`E&qm_1(Mu-8L*EhR-Y2r-Z6bRKk*yYS@GCHRu;x?{PO(9uAL|ks1I{zD_`?d@2B%YjD!Zer7M?_Wt&Yrr zWbA^ASo)=sR)nlUNo*}EK#$OIif@;*Ugb1=Bz?lma_TYa-u+s>Z zJMLN;nyWJ7HeC*Ex5$NMh~xFCx^({VM6DCixfer0_hMMShx^IxnqhjvJlkosi;y5} zrD3J}3ViPC<;_Ps#YbVzo`yt)R4r6&(SZSf2kGgvTkzhz>ZRg6JY#R-F6#bHq_4rg zET?hE(o?%4fcGSX$|B+T}7UaW@M-TY+d11mA; z6}rR@8xgrMLglwUs17ll zn*vqc7oJLZ5qP+{)QGly|1d}~eaC_*tuddi7;@xCcVXP05VdCeZ1zr2QkkhCy?4`_ zZesp>4B9T=_y`Nl-9JA0*+aya{E4O+_uj?+>gq5N44;oLfd?M8su+82BR2RC(6=nL zz>&wXSYw5R(-ULg21aS2po2&+rhc*jVIO()W%IU>F}wbW7zJcuGsCmg?-2&an>PiA zOUc&yasj+urhaf`YHxC~x)AwtwiFkB8wA8)6qN548QAFU92ix*)WR+_86HFr66q>;h|1bnU6huxBnA3x*($Qfr^_+K?fQXkgPz}+ydXF0U z(Ui`2qTtAY6OM)+*QARuBT9*6xzKMAwp;*sN2O)2?1k|K~ZX>$#OZRsSkGDN#A^G?uB$q-}TuK zb#`&$(?(i`Hk&N396tbuEj?9EO|*&3C2z(|6?T1J(#T)J8W19pRa0^;k{8jR~b>#KibeAmx;}ZfAW(? zM72r8MGR{*Nt2mfTFSm1z+l9r;!?x_6W|m>bS~k1nOvifpF$^=&=wW`#>adC=0pq7 zis4v00EAH_U? zx5gjR9?t2Jt50TLs=eVFL+}d&*a0<@_|-e3DgNxFG3{CXRZ25u^A?-VB+JhtQv|e#i%dtUg7O40nY_l6x1R2;m*^ zjpq9?2G{xAKxZ|maq*X%Px7$5+n?ZYmXzr=Rf5H z)j&}y^#D-$zo$~bD7)NIy(OGqGy2pS(z(6aRmtsWlQ zE_i-m-e=pLUppj~awVW*zVdy+r>*b~D~cbOb-@8&jN@9gMI z&e>~1FUi;C{3YkK-2i8iL)ZN_i$cI@%Cu1`8*hP{c$rE&Jcbt$&Hv=~e0kv$-AP(`i7tbE#|t_gJ;*8VBEOL@@lG^F=a6kK>g#gA!{egT zhJI%~>yV~SCY&p_h`}i|cdIG~iF{UOJ_5dsw2(`4!mui?4 zWxN$@IvETy(5hO&jWRfvKI2PcN#i4MMp4f}Ke zqvZ?k6;u$|1fiHo<2|LY+fU?YDkzmdt${0jck;jxraCr)v&9B`4j1qklLedcn;$bO z;~HK59D)TBZ~VSU*Xv9EelrxfxAi+ZOr+s63mr`OARQfx+T-MF_ua*IZbmY>6t&LQ z)(>M;R4Pi9^8A|!*=b~wqc=FqA8>IGaF%&tSQS&ao%_+D#)*8G&Yl@wo^!}=R3h)= z?N_rHi|&kj*LrzHUc8{_Xn;iId`gCZGXoAG0+Fb=N-$4f@#^6FyqGs}(LezUU$py= zDf1tbU$*<=`blf7LKYGm)EeDRlQqwD-Ph#pOAv`U!K!bBgiNdf!E=&}hu(}P%$nv` zkvC!`A#{x8vwm>V{ptNJ>k**TH7Dn4Zy6`;3YJf81MBIje>i0z_A;s+qhqjl$;|ShQ z240IV@=isjr}>+oyB}>c?9ABdU5^BnV8cq1M28CRtohxAzc7+=CwTq3_*c5Ag0Y7|9{Z}|&F{U8ZNFRZhC!cQDb#nkTai?JrWJJjTzO=sbah)+ zpW3iVezvsP-b)CIHdpJ6R%uxXt)$~US!iw?BHdaBu~5U#@N67bA#=XXnN{UWRCSFf zq&(_hK`p28!=kO(L^3PYnSSDwX?sM{7`C&J;+LbkuJ?ZD%ri^fyevhpU(~QwtsL7D zd;Q{39>juSu^&By_0|5gBzfZxM-HncawH7)!NHX2u)|(p4_3`a6GD2Y zUaIre>mtZ28sy+4AZe;|aLHu7XHB$=H52Z23A+D?vJ%O5ix|Bg^N6ln`{>={7ls6v z&)a1VYk#^Md{u-ozm<4y%@_~=buzgkwh~s>T7F>@;!7ro-hPDT@w}e7%lDmbFj~UP zu?|9>)euS%C!LYjlggg;CD0R6dXkN2Knsl_SPM+fm!D38OJMz>qzl)N#G_a>q7dT% z5xmz@rXSEcnLoUW;h|Tr6jbiNyal*vzaVU_ds4?XpdfCzKl{9lUrIBY?qSYZyC1CJ z;@69a3NGNJ*GZc~`%vC4;k5@H6WZh5@h|Q+Ire`0lN@^kZ1(ruT#(V2t*q?xlYNTQgmN0S^FWHBy*<-E5BHk%E+}yvr%8BdPn2)`(D>v#X$i>Y-*%6idFtJk*`ry*p{zQ^TP^0rLoegCd zk;Ec5!P3chYEIiPr#@8IcqztCrc&vJF9;>6gXKsN+YKIdAz-S}@F1>!J3TuYV7@ClcSbT#i%(W}ztJw#>_Cx7*tC93m@)t|f8I_o;Ffe!m zI4@z#u^XCHLp3&|aj`M+7X8_z9un`0L<&Zg+uvp)lg7InSLd@P@4F>1yH2*OtTDse zkE}I~?H9-AW~mEb)1o?gorQ@g*U9!WpCPSUKWCAU=sXHKzcWA(21G}=Z4r&u!}EZ7 zLB*Wgm7CQH0{bD`F&Ty=2PTi$&9$Viy%GII+1)Vfbilf;{oCy>xVI>}u=8~H3XK^R^(0%Y2H{) z`ngwui={g~p@MhIKVkxhbUuZr*z;XUpR#akn!Iz7z@27Ky znnCYOZW*8PfHZonsZvgQ@SrPpElv3gR~cYMD0IAaPo{eL^uTM(^Tc1lK)1?xG+p4e zH9sjUwXk2%1;s;OIf3LqedXytedW9oJs2~k;+AS+b6cxl@jG>$&weYl4bNMb7ZZ2M z1vBf{IL{5ae$}-ah^gsXo~v)+R^IpFH{h2^~!scRbria18-3fd6;ov z2X4kP=-E@#*AiV~ziU%?ZIX&55xs-P5bHRDnbkH6Iq^_CezM09m{%(iFZ{ylaZO*! ztQa|Fxck*yKBMH-x_a9UMwqj2(lE>U8EY8~c72pDa@)TX@iIUA4)5HiCJ&@N>X#M`|sO?(ho|OPf-It(?;8pEOqw0i=-GM=?CMXsi#tV9aRX$ z>s|G~I86k136dr@IT0eVSL|}`>5G#H=G-2g)jI8JLy$~YeOm<<3$pe3GjIF!YGgXQ zN;4I@`m5hS7Qz)WcU3D0Sf+5O=eF({QiDnCMeZ)LPcvZCS+YVLsb5Z08@NV;aE|)& zMSxbdFv@eCcz1wZ{RcZqDE4QbUwG!vi>hIZ_qwG!MOfnLJjA-#_0T(OU%VP~*J9ep zlfBkS_Ui3@v)62Ct4YNPBfqMJuzgyhEC^8FC1 zRBDx(@~9Q^(KoHHVqA8+?Q#;vejy)#I>35EyxbMjf8CzSD2OH!37HJI5YCD-5YG&Y zGYCe6hVYbFuPqaSmHl#kO_3|}rZUy-uzLCwXaj7Y_cW&R9e*3~r-~ifSFqj9#9RC% zzIAmnsmN^F$2yI_SKlKLGAg4$LNb1kE)SDOQBp|fFJxE1PKri(OaLLDfG~Z=bpNex zSeDDpLQ=Z3B4;EloPqA%_7R44DY~+t1Wk4F5j}5OZjlY+)%o;7#|{rlKQ%p*pzr?b z{$}}3v-BS9p`P2*zK{n$J6MH~PcDnU7uII_*g}_~qEcJ?b(APfvMNM9G1cD_f2Kbkr0|YXwl00&CZ!oM%rhq}(F}YZd`Cm1VM6-hI8pcR2IJI<&BXPY=Uib7gX5}l0nP2=_b=zQXjX|Tfu8$o zUwiHLnk;#e_BKKHi#iftnyFH7c|@vcn?3FdHM=_8TB;;m3(kYAi9l#^5;}ri3ld%n zI_bNTsd9sPaAapVygoDD4p)dW3S*=JE@yjt<=9~_&V|nngrRSpjCx0Wz*u|45yJfs z46OYai1tFGIV9Q^iY^OT$yzRcTX~}@Jf5j+YAudhr3Y~DU(KoZl94deZl06rgiCX#G--+?c)?8 z>H29NU=}G&XO=Qh9x~4!2JGIfAzM&dEYfU}$CJd9$Gb9XmCq=&iV}*0Zw^)|G`+?tM&} z?}A=8Yt-^T<-!l8)ML7Ddj{29{A#wUvClldm(t%4g6_iH@0ZS-7+>mCJ2^UU3mpgE z>@DAwP^i{@kn_TLb!k;0a~kRX@x$D_)E~2Z%|orhHop2-y`>IN1!s#rNNb`$erK>9 zXNl6}qRnGk6nNHS!#K#hNm1pX?7Y53oHkDK8P^*(V`%fZ_d0_dC3#oMaRG}sI{+7& ziY6Q7_>st{L|#rV(b68(IFSa)c@_M&b-{DrgYZoF9r)E;k!`qo{F+T(hJr9R4ndiv zj+%?Js24fUQ0U}8S^yq~E~aeizo@-FXN>CC)A;R3RqE;Hg3eeey~!=3+)~=tnYvEi z>Qls2aWF^1kw>56{$3e}`S%3x{@z)1BD-3fE%nSVg=Hj5W1O%@wt(e`9G_{@UaZe& zY}!A{K&aKty!i(%ZX);K^~i!CZ_KLYiU8!ZW-R;w-XZ>dWnymn=E9U@6$~bbIAg4#=%Z4CiknqH_qLycCMtVmiYJ(%?a?F>&kK=h(y_+{_y z*U^djnIg5MAUT)o;^Ox>kq) zT7BTu=U+FoM@sLJJYTLNTkGCw2-e4zt;@C;54fAJAda;3vi%ay&d`vwt=WJBlfO0v znzeFH;`$g*mO{^l*{=Jk;gCbAsK?`;(ST_qD|&U!Ja|q_#(Dk5oUgi-XGXhRx6FdnJ7+*QTWe86FMiDd zLb>%_Gi_5GS=i*$KYyU?>}hnp*jHqdUHu~M;#VG+H~??-zVj-JN7;V)W(@&^r>}ph zWjcNP;s@>rsL$=~PN5MatFSxv%VGOR3@b16Zrv6C4#M5Ez@Yd|YK;ANc;2W$3Xu(V z+68Cy@vG4qM-40JCikxsxjDq4$8UDrX12$e`XT-?4c!%42VGQIh z+%HJ%P#TQ`>Yrt{1WB!(-`pwi3uo73lEbRv{(S8I#aYtU1aKAV-mcDk!~iA2V+M|} zOnxiN)^+lK-FiV7Z(uu}lZAifRu~T)35L9dW^}WywN<_!#rX@8tZjLe#BprwjC!Tl z^CC@l8?QB$6tOObB}HuDE19QpN86k90DNiD2HN-{n~u(xgE?9DlyDb^iqE}^X$~11 zQzP7Diu_jiq=q(J_fBwsq6N6M&!7E-bsQ8R``!$atc){Nr57Nlflj}#*p0scOrZgF zb^MS*!tV;AoP&)W^(K_*DdRSs^9)j{KZB3>v-c1On`&pATshACM;{L?+P3KL|Gx(X z))=7sbI=SsiLM3)FG?N#kBY@_%uA^)0YHU!B4}|qBLN%k_+a~hiJ>1(`HN<_AOaj4=PKdwH0akNNwp_A&W}N2;7+k-V4)a>;{l0+MQ1j+%ef!Fl#y=g>R3=cdz~ud9+5M!Bf-s3EP4I2P;FI&xa*b~9Wq~#qX_izGRtCk? zskv?4c+5$L47pi?vJ5$gYW4o>*L0a54?7MR0_wu$jRj-@4D<`GLEf4HYREc$S~MaC zGpY{!sX@GrMR$hNxbZmkV9)9>9&}8k$^JT$iJ5usd2VK7*-3FgQa<)*C}ZunKIQ#takXSDoVP~fj5ICV%Wdr6jQPv!CEVqlFVAf)~9Kxg?S+}N+EuPo4az%qu z8uO=TXPREP5MxX2FvM?0mGZ)>9sANJtQnvAh^IDOvo))YA%yfc4b{!K+cd$<=J%8N z?B{OPi{(Yf;sz=>Pm|(5!LW#m6MxJUQ?ag0;Kz*M8oTJU2)BPhGU`if14DHNC058i zj-LPHDg)}|oDt6d<`K3-A5hr5I?nHF*dXLw^e6d3{J(Za-uKQ=G=cS&dM+CoS63TP z?r)^1(;UPuom(=WjSRlSL<3Y-ASs=}mcaieYQwez8hc8YfQG}JUpvz9x5khD zgfCZf4e4zqyIh5d04R>}uV^%%Wohp|Vi z^A?|{C0}8Ri<0nrTva27f@&TelQj2j2%_q~jN#<`X?ux~5K~3g+^UWw@h}(;^g%}j z9Wxp&H94yb->y&A*QCb-k{(j29+y9`WS&FCaPcy>SNiBEA2oYy);6vtapP4e9CxYX z`FBOnp!hC6PJ7{QaQ`?=eTLC-x8#cnL&JAY?gF& zpUf_lOUX89v?&Xr7Icd=qqKkNh%BWy-sSNDZnN3qg_Lk!mEvaW*zCD)S0dwJ^M6Hy zuzS9S+1;%76VwJuBWkd1OpeMEL22O3g>mHc4jw@BfrEqpnd6Sl(b#thaw=Tx+@}L- z4*2swdgue;PR?7UaVQ?vvBVH^{sFKwHWGo~W85W$49{_$9u$WOGC`$JTB&#WYZmw( z8(Yae;!bc=shmB~ zR$5?<%0*4YPO;$d%a_1vx@c`t0`BO1u7jkYG* zcJoDRD$vC*@92zZL9B3kb_H>>{NBAl6!zX-8mP4`cn~zr5IX~Csd5DP1(@zgj518L zXl}v_GLb)E`H_*Rv`YvhBZ5OQ-t*Xy!AnXWiw*eSLcS9 zou(H?U{uJ;bn&uQIyeCF!*3uNa&3ir%9>Zc73eeX`VNZ;5LLyqOOWnI`gYKloLg4A$olKFp96-9 ztJX{3GgNd4)Kh*p1!}Qi40H@dOrkt(@F*mLvDCPp+C#O3#OriWzaN;3?s-Nwy(M(C z?mp??yetm>gZv@{kY5i78g$U;^3169t7>>{fk!=nnLi^(IFBxmg*c;Kd7UX;>7eoO zY$=j@j<6YS7l!g^j2(33FrT#53axHSf5Dt2Soy}6mri7WhW%Pv!|1ygDn@PWpp@|F z)bW!m*{y8I4knaj>^um=o@vV&GAXVk^vJ<{xmf?&C*-!-{klPh!PZvrZKl5KM#}3M zFF(h5??CGI=Sg~w_UT1;Bd%ao*K;W4?)~s6b3v}2j1GSTR&)F0+F8MijAcajlWVr` zL&WeTl+Z4_=WWjZb%kciL_wr1%L!aI&)$fQ`KjuuT&E|#K_*UxUpzV>9Nw{g{0|l2sbi2`^cz&B(a?0oixdosWYD`UN4k7?(#C(+1-YW4AM@i@X6@V3I2a-y zCr8p4Jfh9)6@4RK?mRT+KS&;hV)K$#c*7~3*Sx2U00Uv0W`qK<+{tkkm6-ofEc}9I zv{Gwlcw|H)y?n8FHqkud%FbwSE*K>uqlOinZYdTokmU<%1ZD4Md zopS{G-m&TRncLKT-R}Xsa@B79?B;EOQSIS$RVngp6G9?NyO6#ISr8UMF zBs2Pm1SeiF9eTPA(PMuf<>3{`S5u2QTbL=iq*qjW|7QA1zYoEeT#z+$lnhOJ=xX^# z*NH)JKyXkXM|%n1Rq9`c*?-FzYw9;TR#DYE><9&NMejssA>S1cODsR^~Vg{5)nP><2xYV#C{983lwXQ77 zkDFrDJee^~zC5(p9)|h)X+R?#CH5CzyX!u9KEv|w2|kTa3&2XZJ|N8>0JH)a8A@}OwCi6mB$dE_rJCUgjx7R|Y?&epKth6TczdWX;LE%EBOh6^E>G_<9;7ASAh&RfG@h>i9eL*O5LUKc1 z?;3_IjXID9dMLd885Bi5Fr2~*=v?RzB1F8aFK44Bwm(hw^$zXe!c;MWqqArjZo90m zqq(lFlG|w*Zy1~jmxicdOfpbEY+=#HHSqXFpv%oVLM@lhuAJ@uSA=6mfMm+&CnWS% zFy2={W7U0}!v>hAp(^ss$smcyoj|&B&PuVva8dywntU|BgIY@uIIncf79kH40zsrPy(M6ej->~G4?ShTQ`wwGa4)1}} zME@OLOLx8=#N$4)JTcsF;|w7;l}^4)DP5y9?{Ts3Q~Q++(Ke|imz944NSElth6~A= z7+^$>Zf@@Zpz2FSZlYBP0EO1}VFTvZ6}AR@Gqba18EN)anw+;ov3)`AE?#l>=Qsg% zL+6E6bz=~14P73V;tkS8_0Gx1MD_gsGRC7?3O!B0#iyAHJ&-P@`jDU9cUDM!F(fsluHObdDWwH zaG=-wUb!Var7HX|{xj@XP6AU8-$IrCCTp|U=S~a&c;8<5lq4x3Jq{2FntTumD$iUj z1a9W~wiESs$&34){=IjjNeD`=f+JHM;e!;=YK5u7b0teer`G^)GX{4VmlsU9U%@4X zRm;$bUab*I=4HYur4XN)Afy)ZUe}SCasETEx?wqRI*o-&0Mq;lW{ur zGfm7)?{O~%bVg*mihwzmyUE0<7R8>KmJIHF93Os-bs9m|#FJ?|#Feh|k!ex)lWI(U zWJJVZO|d#NwjMA2;mO%R>z&6$j_qpwzX{^MA7nt5IENSlCIImc51S7i!~S(kyBe2M zLJ@%I8Hqa-0iYPvl$05+d<-bBAJ^*PPu#`q?Hi8lLK&*>N`|C}6|9Ing)-J3YB=D( zw13h>2pwp4W1@QKe8;8&U;aBea}1I~Fo{ty8_!Lo@v^$eCOVsk4>3!JHh?$S(h#?fzIDx_I9niRt6waRM&0d3b0DdFTVY|b@ULo zX~Z9NN5lXei2viF1zhNR<#R3o<)=|Er2iJx#ukP(zo4)RaL_l=)Fz40LDN&oKQPc@ ziGi)(n5JUF0we@Z0jrMJO(D{9u{Uz-Ko|I73&ka8BMbYi!xk}HT$YwzR{6SyD)*Re ziHsb>)^1l&k8rtpb@IXnch%ss zKYosR{LTlmK+g?`=R`3r@*LYjMXkej5NN3|Pxr9Z0GSX9o9Tu;xLVrYfYw)0KA>7t z!!Bv(02Wb&)2Hcte*m<6TcUb6>vd?!=X9dMtmGHA&pR;;_FMi(12*_`&H;u@ZZ-7gHLygbeVtQPz?^R}ki3QV1lkv)o z0B&liSi{F78HNHtU@n&E6W_Z`_Xmpea;;(i11mc-9)Ot^=gyew{#)^EAOJWy6V;N! z|BJ7yfQqW?+KM3EB_c?JQc5E!QqqWYDkU)t&CsHtbeD{P($Yu_-~iGkB1p&3ARr~( z{~6!-e82DaU2E1|<19J%-hKAo=h^%0^K5X##Oh6|q`WtV+J&2YQ?Y@F$3hr^h~(OP z`foV0c>}uXIxUa@w{mL9v9-GLCatOT?$w^FjmOi!@lcqW4f4Y|GHo)5?Y31vXhSM5VvbE&_01eMTRyf^ar)qhU@pAzV*4#m5DH&!WovTeEU5~Rkza_qz;-+U8v3tvBe&4HYs2UE`$~9G)fq>N*$AJPBSj?tnnp|0x z&}3LtDYB}J(aLz$HOTAosAK^9#JQA{f$nb9!N5XRdr^SLU(2X;0B*~W z5m{u2xM6tbX{WY6ZctXw^_WO$#o86!>@psM>1(g9{bGA);u=1nbDgrG+rXNfL~?tA znhXsD1SVoP#1xanU)-xY9e z(jyFgOriv^WNTA~vI-ah57`epwtw;-cKy_^OIm2kk{+WQNJvKBvM>e8w)RlplZ*rJ zV!6-rT|)|9%`o8@!AkecIz!D(e)69$C5pjQRAyL&dgx8w(6+ZXT-4WJv{;Oxll*6{ z>8IBm0Q>0)Iaq&A-Uo7&>%c>^ccnaO9j|u^!@FLk{Y_^6iFvE%4i{~PCP-tTK^i7J zh1_G?Hw3s{PEwfFuPX7^Ch4ELERCV9gpL`mCW1>fbTOr2^D-?Kk^$NJ5C+fQth!(M z0|k6HQph~ySKs|#B3FF#`ll#X!Tr#pa3MooD}umHZ{a{m!SXB1xea_*m%VV}udJZ| z!w%Mkrd8~(AV8CLOnnlxn<2Ee$APX!Ua)=#_(cNs8=-(d$#Jgi+uzUr|9sJS@l$G= ze@bl>FpJ@mOb)%Rgc#Im!dylk{s7>e6+z$qs~7(tp)8;ow`|6;1e)N=oU21g*5<}3 zwI6s+PaEvJbhB?fTd~g1C~D83wH^DM4a}QAQ%U?87`EzaH}E9?Guq$3Ed1ox7|S_8 zb0jD@HhUwL%Hz{F7fU-Bupa<_)cSrHuq2GzHL0Zkq6q&ZC|fk!On-&PR*Et>ML zpJ#y;*_l!;lx*+8T0;lOAJ@e57r^mTTbuhs&;Mu zp;pP9GOx_ds-WT&ly<=;Rfw#G+4)leVPRb@m$H9gzrSDZ&o3H#n1BS`a(*iqR%asW zev<6!T4l}UQhJ*MG*NvfnAn;vN0WY~+^vn=V?^}Mk!-Qip^}eeI&%B7nDfCG#`0e0 zcY?9qMTrKH+Ob|(6$o0?#jwA!>WaAjIjljf%?J ztZIMSedo}Y9K{rq_c=?Cs<7rC>%$*l<(F%Gn}saE7w9|| z%K9s3*MGlRfGrx3+$vH6muvXZctHpZ>B12fV1M>s%clQ(%70aO4N72tlsPmvkd!aX zFFpW-P#1zJ;h2C43UY_)^}nfNKAN+qNdOS2HaT)h-vlRDFO)rw1FKq@YWuTaId}j2 zMWwaTNH5t6(ED78#8L!vd67ZKo(u$RRm*ygznwMk&UttMfZ%-%2bbou3&6{8UT6tb z1(w_@M2G*c4ni9ZyB?*)fQtwf10^05>#1JZec&laa?Bh5)l=R?J7pDqVD1F%7+D~= zyFkJzg!@-G^55_Fi()*)0xN2eO`8l3lt(u;xSN|NDG|4X0)KCrk=B0)*7&lYr&!tl zoOd;wTjudPAZ4@}81n|Wcxblp59X0y#`^U(KV!upo2W@Vz-(!A6WKbv+zrT(CEyVf z0Bp)WYz0N#1+#6Iga7UHf3>PN7(ZW&c})%G@@jg~*;|Nfv_AdIMI*;Ji>` zFiEWu-TD8fv(i{Ur&7Ml6t?;W111zGd=R5DXYQPt3?9Xv7myJ#<ab4O_o|(R+p3@Y z7QdUd!IbZUG9Ww-K{O@iqm(;TVfQ&Gs#<(Z(qZDsbZ@TTsHeQ_nDVegg7AvNuSoqL z<`aO2W?8!xQ90ZM=U-ea93+s#R|Dq+Rsj?5#cV5~!O+dib`?(q@@MrFb#!!O2?tn6 zaDu0n$V=+Q>3#0bH*oRrbfMXkT8FYSGqs*IzR59UUpLNy`-j-hsW_KJxLf_nmH59C zl8WJT96ve3{wJU6q~DtGPv+q!H1qIJ z`z1j=w!K)9^Efc&;_^ADqzc@8f9g)~IV_l+k5hs((>W(s|8sf+!|CbqgH)c?VE=3? zg~m3v<<;xaW?G@G#duai1B=?W?vF(1K*m2j&F%U_buzQ=Jukag%2(U%-qTb>*GMXWD zN;KPA9Mz-FAv(+fyUhFNvGS-c;m*m|)Vg11K|h3h#@><=oQ@}72rou9jc>=_gen7} z#>Mr{FZR%~)keHi?nn;(2xz#RzkOl!Je&|+UR|Bkp3}TAMp=(kXWK{iZOQ)TF#zDC z{i&A}t)Q~GR`eMyYEFAB`%@r7BpgJ>+B1aD431j4rW}Lm6v7ZYSvSqqEAgRD$~|s0 z+WWDlzHY5tD3Vofs<8ZvRw~9aL>-`?+5B|lbE>5tOHIaf=m*dyMuI(ONtT5y1V{42 zq{F*{0`l~>U~k9sfRnR2?l45N0+DigZOYE!X=1YB*WGVr4jwDK4D6RDQ>d;id+h{O zCMaNSBpZY?na0z#%bd1JBHGO@^9r`@>C!b$=3QfsYt!(wTs(n@7 zrCW9kG_zUIpi-o*7I%mm>{*pN71!axHvi#i7JQ=V9+gOQvMFP%#a-i^oBil!=ma1I z`*kh(<@*Af|L@UQF09G$u*Kb_Lld@|TX28rF~@H0Sdg$nwdb34R;jaZ=C5A8N;t*7 ztkQ9no<1>g(aQ7K8rlucRku=azQe&xI6GuTlbBUZzjtxg4l z2Z!QpCkE$1dzRUf{V-hpo395w>-xWF@S3FWAGWxKkv}JDq6id6l3XXsplT_I&Jh!q zVpmpHK9aQ0NK%k{FU`Q9+H?0E^hxk_;u)?-_tmJG##0tACMDxVALueiOY--6R0o2>>(HyIBF_ywVk_ls6WHP!xI0 z)CV}~e9lIftQK~=3YG*O&eZyB_aIgRhAhi)qptNO+XLD<#n8^n-KB~mh0n&HiTfTs zw909uaX9Sy|Bu%D9~me^{0;%7h~TF}KxSY8}o>Im*=&+ruHLFT4N^ zjdOKf3%eDpA4M+}n}_EG+CW})DIN^GgQE+&g4}h5Yd7}(AZlLWb`ZSG$?t#fWB=Os z@9}T&0z#-Pwzu(Z*Mx1CurU0}1)jGWJP~B!>@ILxl_*kv9%?q3YTQ4Ba|4FSk@0$peOXh9#^jJW4iqjXL@iBwJt`a$hthWTEdCKCwviBs2sh}dgs|9iL z5+#|JJgYdmFK^{bhp?K0m6G84`L7G&KfX)Lq4xxm7Xhat02j&tTr_IvJd_#aL2~o( zbOM_0nrBGREC<&PdN!|0-dgOlTZ#7HX91_SSO`-hB6^L+0!zc=Mm~FYcQtwXsE#5- zgvy2I((_t&0>KKUiY_0-Z6&H0qUa^~X7HQF>wS+^l2cMrVnIGs(bxAm^6Y4Jag47o z<5L+UDE zA~U99=9No4)la=Q&e~w}mKMyNwuxLeg)Mp}29UF**dhKU7~bMyGY{3<%&X8xhZbYB zqddrnsEB*jUbao6fD5cZ&UG-mJ4r?Si0~N&7Wa^roxQEI_2)Eq!U)3gT1T>XH}o5d z5a2{;b5Ti2P0k{l?u$Gg9!}+Ml8wb{LD?}eq&NzL>-}=-X5B8l*rv7V8z%&1?>?Tc zUDYz6A5H9craA6?be^m3Jpmdds$BTszMCTEyptz~RAuf5i^;cd9R23SufFI$_~aUW z$QG)qs`{3&neEBe2xxuf%1u%R8r|u?%x)-|nylZg^A_DCTjud4nL1G<)VI&j_tX!f zb9wBH0ZDcWe{5%K>weu2)>(0;&L z4@L@|WV7L+A=@STD_0zSr}wVeNZyzpWR5MtAoZu1>VWvzV=Ng}7(i8fde#Anp}SvB z{%iRUvokz1JzrL@lagHg|34iZ7-Xo}ug2igd^<$p?KBk$Dz7exe2N9hN_r?M@~{dY z`uzF5_4U*b4m-PfA*vMFC{fR*K*Un7iFERc3-8Oz+y<+eoVpA~mC)6Mi#R$`=R0w7 z;kP5^0$yAuN8~ezJ3Ycv8uC~jr^r!K?w(jsPMVx)ep$3W$`FWvLXA8?E2#D7#FCB* zjFE#wgRkc?;mWL2kTp|uTC2zMq)6YOMY=QgFpR-3#I7&QOY|db@*AV_@bs2#U)+M4TyuokZda`i6+d@ zi#a}+i((|9ui}u9?*fh8i_Pb+F`sZ4{iv%wx-(G1DLwW{x<}-!N>K#QJ9yn&;%MyD zYrok0bfuD$=Vp}elsOw$k6jOLu&T<*u;nY12MUCwCZc&df7RLNDsb&tdFZc3XV`RLHwXX=@YS2IVG z)#BPS7~BuLEM*HTN4F$qASAQ&%sm`_sZ#!^jM*=;VK76Pozbtklk4!3hO%0F^g(>N z#oNyyI2rR1tJQv4y# zMG3B#mJ)UcmzuLoMoFDLUDfkgVpMT=bv1|(#dF?rl)Ai5hI)2KmRC+1Q}+M;FkHe> zgej}B--js^wX@L60bxI~`th~p!Ec|gWnM5#ZC! zE%2*$X`5B0rPE+5N#!*>-Sp{`N_)3{Dvjq3wq9MTcdwY=R2@=29%uJ=p-X)UJ1BY> z7k*H1FAFeJkn1!T5%t-U>_`w@cbt^0DnoCn2P zNiptqP5FQ?fylJn^*dPIqn;i|12zQ^-N>ESeg*srx1BCMo~@;&r+05S-TTP25t%OH z@QnE|Dx9Fb)wl`n_Th~5Hx7j)Ae@O|hFf%!6{}D zD$g>Un(i-;X()+VMm)(V3!!BE(VevM{9DBh6<_~x%v=w(I`gJ$cJY*yl=@dY+0|<& zJxJECVC_eppJ2q;x4$N??AIF)52My^4@Q8-(o=Z>RTfQf_6yuHw^lumKJ7AQFWj;% z8) zvy@sw58^Wq+A5+|BUIP78~oRat}j=tZZn~hL*Hj-w+13UHwRZ2jMA3@`*YbBWI`=6 z#;1z9v=x_B6b{%9OiJgg3^^W0^`1Ao(TPz_>rR)?ZJfN6nHL`;BVj6;1LX1p4tDmK z2n=QZno8n&XSQ56V?h2E@-!UBUizjwUNpu0>h;QJxJ z?EGZKoR80fxokY$D3xZrV&zMJ37M{TMnq}#(^{ycZbY!eP^@``pnP&qZ?AsKHMy#z zqf6@>rYDnhqFy7#z2vAXq+rprY8rnV`Mfy)jz;EZp(ZI6!p?_rE+k!_UrU-Z(PbX# zWv+vRU!P6Cd7K|STicKkU^sx_MWH}{Z#ldmkzw*%4H2iwq2=W7*zD|VA=jg~g(|01 z((lJqR9BB=OxlvL>OFj5ALG8|2o3z$Uh(F;I`{7c4t`%|)d=b5hj4^x>1)$$$pCS; zknh6DP#N+G`Gl;1AhP+&ZMXBYO9Ld{0Z+>A2S1d|^00Tdw6q-G#8f?PFSWP> z-_;&@kzYQ=^21T-rV?r3wI}5@MrK(vR=Xv9)p$dbKP@w7?EMt6(6+RgG z8rNlSWPPKty%E6B`7k+q)339+?D+V2c9v&`o5Hw={I}j>fb5O=3C5zFXzqRMv)ZGv zU~1q!n9}m5;y0-T^B+Pu02@ix{#VcUYOrz~fu$p_OHDmrrr*fD(sa!92x_Q)LVKp2 zBj0k#3@`)TR*HN_RAT($a!mdpw@mozqoVh#ij~0+6VjOnXK!bv>`))ablr-!?JKZp z3r3XGA9WQ?!x~AUD*81qj+}Zuvf>Mi3!9!}?~dl=fO^FeF06%YV%}H#*vueUy zD&|2S9A`4@AP`(n$(#un5{9nsn?^2naL$qudM9#c_M!hLY&qQHn_}a%|nwEB)c2t^spwv68y7osO<#3-<2jv02(RHSh;(IVd69cCuDUl7p zJThxLldAc^;IVIWa1Cf!JRITcf3T&XoOOi@c{?_u`(t;~I$&vgA0J)#XtA5Obj-f+ zt9)Y!sbj8Mx-0foqLDrO_Ws!nTs>3&)5@abldrwpv*GWq_+lMWkqQe5y?9bfzhAgS zGj=kO(H6^ybi1}v`mH7==F$GzF0@Ez95hxYjTv6PnsPOosC=T|?E!~*mzw-pnHAk? zZ&8Zl-o#|JXEQescdd(c&D0}uLB!fi<4%9dDSVaD<$JCS4eUBPx(u+(pglb*fKyjpKI)bTh5^lO&T=d1Z;&juOLC(s}tunht9Iz3EK6u|I*NEo#2kJmzXozYY=!F?ACdcq{scR z-x9|{!Pw21u%GiX6H1TQVRPY4_G_P$gWG|Hx>U=90|VcA(i*0Tm}84;bMS0#UmDjU zuwX%LQ}-4LUF*FUP+aq_Q(H$@KfjwbtI6loYhX;2PawP^A#d)5Om-(3ib#O|meb}| zCOZj%seysY(BoC{{*aDZ1M>49M)l)Q6_c?m3*Wr?$aL`rf!dtc^|M3jz{b16{9r-xu~E-p)R8b6Aes-yQ#rC1j`*7pzly@)}j z2`;+QWPpYR8I%z_oZ2eF5b`>M`g(q zGtCPppVlLHpnRrFj#*61<74JFb6~=2+vdi66kZde92!>CmcrX>ZNqfqW=~Jg zt7%;wlSLk54W4QpeZ#geAtksYKK!s=T-WHKeUQ?P$lGMxubSY*7^Cwo@wiZx z*3N-MqA|;Q-s^ofSk?XFv)5um2g2EabvwG4k)8cnW>2)Y@Amj zrfanW5V+i+yUv(BcZF%#hvenTDzToIy!;b612*4;Q*6tzsM4=?(n`-IdXf@Gf~me3r|6zr_>Ze(n1rHixMn6yQJ#{_fy z!UI)Qjd%N&Nca!i=L`pD-WxS+IBGh)5C!QpO2(i!@|qE(E)*NdR=K_yPFOCbod0}*q*{&i1(tJBGxW;tjbS05NhkjlB zdy0lj@zof&vkWHkA$ijVp&2IC(NVZc()$;nBQyQnD)>05b6 znW3i7+QQN>1&z@U3&VG~y3Dj>WepL-GnNaI3;ulbHfh+>tk9ukdO=}c>25dy0wZMU{j)I#z+ll{+4K1g&$T^6W5Y^cnq{5v z(<_WGnhgyUhja^yEJM4=#0F+(W8rBjO_FxO;hfJ%g0Fwq(kQJPn#70{3%TkPF2l*o zSw2UVv4-?B*(bv+*B^KcZ{Otwq|TdF@2egU8|i5TZzmYIn%%$@rk}zlGCU3#9r6>2 zTzgqC=U2F_6Flb4n$6nAUCP@VQtMQmC|k2J|E}S;VXidhUK)^Mo%OX90y310=Ka+> zxKNwc^qe?r_@oIdvY;$8+{=pO5^unoi)%G|20)0ax~idsz@D6;H*Lny&A2gcHU`KL zo4J47l%Y21psIAb}31MlPxt*J4L2O{(uzId=_asU5Ghrcorj~Pi;#UY;h zHFmc4FZ?tda$lvw-I|&2MK+M@o77)(^;kc#XAP1({?6}FUH+AF`YDxSbd)X*M`_R& zp-&CX{72J1d+HI-^ApY)$oWp|VuHr~aR9=H^rCOhQ!2smLs-pqm0;Z?#b1N|#qS4y ztY-lNkeFlwmkAFEJBC>ZWfN`l7|MhNS=Yl7H>?Qjo=1JH{MRwg&_a~(jSb#ROrj3H zQ1M>rQ5UWL0&^I_yi_>uMEDgIbr(dc;Ktnf_SDER4sYSsyb;Xk)MwngI$i(^wV)cd-ZgOdODP>S4O z!F;!{mI~PjLWn0N5jS%8{!pE*c;x)Ri#on(>Q%aJYzUvQzYk|zvD4e(R2wcAY91rk zq9SfaO^3ovtBI9-PTm5?o+3ywGJ|j4-Qbl0c*_UfhStB0jzH8DV9$=0v;;D#$?(md zp=7`2W!uK=+@P7>l+h;I@yZ*ukZA-|zsc~R7Isgg7(9q_W^ z4MIq}-_J<~ahuD=y3SmW*c&j2tkpRfWb`z*fcjqtk^eb}EEuVJ!%ru$3{qHf2hTC_ z0pBNjGE~#k&eB0L6klPpYt6q-b}xEWR>ua}J>q?i&q|Hl3`k9HeD?bLurLhE%l1Iy zFWtGH#PNG{&wxQAi+++j%IGIiaMH<#6zF_}_!9DJc5@Gazo$s}WXL|ly?vyj%k^)= z9KQnocW39b9|`Km4-81|i})_qpT=-Q(vqtuZj%bXNM%Z=$uMXCO|j{3l9fOG#vV1$ zy5;34S9~a2Ed&oru%eWGz&2A<*^{9AFlXuWSA7I?NLf zC-xsOEerl}WhKSX#K^r{S=qtUbF`?isJ3!fa6re58~TsL&O5f~mq_n=pLEV0N|A=C zjT1S!&!*o!u(0YMnkp&vf?3Y4MyORmgM>|H)cShJ=c@)tzO#}Wa5!i_Q|-~u@CeS#e`Pvrlci0xD6&GX;)j} zLJf`jPi2}6YrUnH{$UgWEx5OuAe3`O36^JtW?V~hwOI1yk6yTir0ap6Apdbq!HORj z7f2@;Pm`jaAY}X*{qPv-DfK9fS}s|91DUA)uTIAXFnoEkD>=z$@r7g1ca$iOTF64r{W zVFl?S^k>AW&GI7tV}hkoIEAmC4}`)^^&G!yeRa6lFg&DdeD~4Yf;~uKH{>7(UgcioujUK}F@}O(x(rZpKCkR=vhVnNV!)3B{=xG0$+5 zd#es}VU&^TnJN@f!#={PPgd|&>Zir%SDU1;AB)vjp?y+-EBP(<@)Pl;ZAM>w%*$R8 zN1t2<_@93D4Z72S^Iam~@DNK_Qpjp|@+K#zF~F(?@7}p*TUvfLoksMwqfCQ7|C(AY zjk~b)C{Z_Q@?_#QJUQ7_OH0ea%j@c%etkhvflGEatC&Y;XamUb<v;KR|uO|%I@Y8_01xb+lGJ)e|d+YZk^opH}_mmjO^@?!LnnAP4;YwKyk z_p|lt7cbB|51NHjp(nNDGKMF~q~7%aQc3NE!QyKsnb(kfzF}0P9h4X#q<64*((-_^ zvZ}IrCFQCv4zI1B&<{;rmMFZ+pMU+QVg$sKk9?H9vt%YpUH~;Z~TBvxh3*EDZ%-q(p#Oxi_JZ|-4WAV zoKs~re!;!ubHQBbFY#)N^ab;z5Rggwy8Vfd92in{XjkYJqG(Y#NN%f}T4rrhg?Eup zx`#S7jt6?y2{(=Be5vY*Azeio03Z{@lB5fO%mPYxygcWqIC&Hl)a&msdBLl%F zGYQ2Y%tCF9ewJPXt8WJ(MuoM`kdDTb?N|gsRCRW?CHa&R$!<;uVxk&*K*@SJ^zsq5 z3QTOw4baIAT#ik`B-CrY|EuLhUd{31j#&u2lFadvli8EcuBpDs?7yOcY? zEIRzQH(=COLDeox)=T@xlYj|wk;ucn7ULRM)bhyo7G4A7(fQ^=PJPo~V3am}b7;Zn zKHXSUjZ9Q~Bpa4(fq8bFIv;$Z$pJAJ0Xxr1lVkjROgAIaNr@7YDy3Sk^3;+Q@tDR) zu;pXQF!IuBGUVB<8cVUm)XPgs+fb=<-}y#5JTYKj85J59roGBK>~OhK7xVq=r@H)) zoSgb>^@#|HYrqCQSEYlHceIr!BH!~i*$5kwZrQoAvT|Hp&RqPp(663#1Ro>0;rjKL zn?uZ?UkYIL6ANkC_xRp4o?8lU+}-|d)0pvNgB*vJA**zvAo{L_G4#5 zLhv9|GmCTr1Oyvv5a6RA%`vO~K>K&aq}O__Fy_ovj5h}o5)x}Tb&IQ?V-w%(=Z1?J zL4f8uw2{BpV;9-Mg8${q^Za^Lr3}@(H()r zT)$~hA#_yH;{^y~dU<fHAV{sT^;eKA2Wv95&+eOuE~D`Xug{0x_DGTEKaYbN3`T)|xn=3U<8 z&D=IchI)*dI0;vVb+4akuR6oQvrMe}SDIitqamKr`soDZ1NdppyVB?{f51=I|Bi{{_ZY# zM*;kGcTA)XKL}z`0IaWZvlzr&0*|{O&0Y}l_v)*E7rfIq2Y|Ozlnd?l)nMJv7cYbJ zvcfOIwwBgdLF$>uaz7Yh*2lfG+c25&WSB(@)?DV(4Wg6!e?%uG7UsT_HG|r^COR`I zhT}$_a+V!y6?~Q8j@gNb&ukd)&;esYg&Pl;wo`zQ$Ng3ajg|A!krky)s={BdEsaTr zjtT{&{*bBrMj*oHi31iK#3lt}4Nc=Fp$_vgTr-euz50av!?!?r64AtK1G7Be zizrsXBx3~wXg(VQkeERWtq22YU)|Vcz>6~NRFwP&=w(HsRicm;8MH{YYJdxEY~iT# z^oQa>p*k=q%d$sopzwz651OsZGiw!r!o>IGPr>4)Ihh?s8ITMfI}A5T2mpupFRwX-BjKu_V;`-m8Snx3)(-_q9{<93;>}j8PsDrnz_AS)r@es zme7wF^K6s=A?KvRGHpp@!VSf-xWf*d!O?>fU>MF};QhZHc{hkJxqpb9L`4->jy5C& zBED~!S8Dt<9}HqY?-%vg{SdCf4&PaEp=GE7{W_p*h3lx&2t(5;N3g{cd3v1#_G$y1 z?&$7K`awm&{Z;fn41Zm<4lO2D@G2RrYo|Y6kFVWv_m-+1vO3oRl52<>l=%ym27Cwh z$L%Tw@(?|&LzSZ3NaNFn^ST+i4{Q3|2uBIB?9Ihnj16V=p?S$}-I4f&_l8Va8BJ0Yy zh^Wv^qOOk7+XfQI4R_0hh0jsL1}KsaS2d6`+{s4oEX-2{z=9A73ECqUw;kNv2GcgM zumY@E(oaXLSyn|6a5_2m^b;SE!>5_otKz0MJmgwit+Z~>`Z?WxZyZ~=I#D1AdartL zmcDzUYbdtuYvc69iy3)10qRqYA*yR8f})v`AL^^BMx|)sr{sgSu`y)L z#s=a%3#4dU~AGJl(G#+8(JVUNy(shHas=8Y{}cw zG8CyyNib*}B1e7WaIfAj1(Be_8Rn=Dq@_mRa z8PNOpLqxw=KD_t-#_*w`lvbW0|{USuTk$AnhOZ5TVV z-vtpHS@pFHrUttwPaNAL=@3)lUUQfVY~0MvB@<9$KNk?$6jxOZ2?_~TSM3SuzRIQ- z+S=<;R;fQb`AR2zTk@jQkEeDJJGa!AV#cZvH{?r|Wj~PE2{mK~3*CqU<}7Gjt1y%N zV>5>K`gO#U!lNUv;lZE|Msdz^r~5miAkG8T547dOC8i%hb)vAK=mMa@(FlI5s(+p7 z;}c#@pUiJ}bJKGc^SJP2FX92-!#b=|d?p8-zgX*tP&ujgDT5f^Z;^TX{W z2VdhR!&}0@mkP}K1CZnA9mcuhMRFp#NCJ6>55SQJ1AD9MqBU94C(&(>C`9Em&>e&ucbVX zSgt{cvI=f^d!c00T};+0-@d);agM-tfIY#nsU7AHa-)+~mdB%_I^wRIy1dfO^D#0d zFq549$`#A0krAAiiA2J}!ql3u@eTLxFPo(w{5R4p)!t+hZO~fDo3&Wnqy`I@4KXp{ z2k!TjvuO3A&;(gf6p3_>c@9i0T=b zxR)#TDDuK`-aQ(t9~-+9_H_FYqY3VT6dZW*sE9b{T~@B}YSO02>y|lUiI^#a%~65@ z9Q`WA50$&Z$BWHc$TuX%M|fPUT9O$XRf!^d@N~FGCJAj)AKQ=zCpV`XC^{J`E}EOg zDoKqqFLWz!O7Xx6Sc+}XUyX!38b=rtqxSdo+t2JdOA^~>&%}o=N7|4EJ|WhpiZ<1V zgGDNKJG5H|Iy|MeEu6lpZ`d}@p6D(s#u$==HAb!8pkVvt*#=0sk-TvSkh?<<1LSNg zF8S4Y_eMxRo#QXA$sSFW@VFcUq*4~VU$ac-v$P#3c>UmH)+Joi+$V>!iT;hT^!T&Y z!%v3ILKR{M;R|~(j?v>oSp8*tV#$In@hUoGxhVCT%X$y}xGDF0E3S-j6LJ3;zq)-p zX;}WtP0YJRHI<{rfhDaZ$rah+RP7L{Xsr8KECW}h9gbo$uc4d=rbNmDE3_g3TYQ}G=#s-TRo z7ptYDnA41HPoLYZJTD(5o;o+PnZL2e_x!FxJL3l_PhW9U0U9ous!I@acv0K+@iH6c zm$nKWr#+HHj?+u&dv=UtAFDQ9%=h@mK00-b88AGHUww|imnzodH}tn$+HV@FX4*`h z-D1M$X`H%O_Syrn7qq&hcN_xxCR0U-Ntq_bur&FSKS?;F1b7>K0#4=7i17^InxBYK z23G!-<@*<;_{hNloy|;D)qNbeWWQf0jCaF8J}ZSl0Oa%dYJJY>nTLafX}>)xJpqNq z`)k5eBY~R3W#&Rxpf>V7{IXS=3{4^8k>mRb`dxK;1>SlCp@a#xc z3Zv6{J8p?nmby_Zi}7tX`B2TJ3<239e3N5vjKDKP{SjXXxxLYeBBi!w$m-pSiK^96 zdkUJKPoE6NM|Jot8eP|=_$5|BRRi0GJdr`I9UuvEyk>V3W=CFQ zhUC)qsVTNiZorXyD@kC_jOk|<;=2b1nEY8^2QP6CN%ciDb*_@8^^f=7XNgR+XhkmZ zeicla!yj^qeQiUROA^!DQI_3mNq*-*5;3=3Yw^|U_T6SN8b5{O*Z5LdI$nosRw%qWgefEpAMa*={PU-PB?wf2yBTRwvimh25r z)=DS8hdR3BV-XVBddIYFu1}h(!0-o3o>yPmD$0M~h57Zdg@Rc_pTk5qE2zt4|MH-2ixvhSYX-q4-Ew&@P~DT*ZN0mo~G7; zYJ9r(7T<^3`VlDs3s(DE^>Z@ToN3RSHhVq%sviCz+$E%n={S2=C<8H{c#Sj}f>=T7 z6}!=0oS~G%^K#BV&K4`bSP>6KBKF#0Ov#smOxL@;`YqZCuGwAD-E@(VyuG-{pfO&J zVPgn1Sh%>fmypl%i<9HhzD#NA_pKje>%NhXB{m$^%C8199=*!2^;8*PFMTPtJVQkdxh7-^CnPQH6B3!XyaRZvt(hN{xA zSir}HhBq0wOsc00|fILkv5+k85Xh-prdQ#v+cSLS*YvoN2OA zhAvxcjf`x6!VK(n^t%>W6`DX1uVLp$5jD#pH@2@@`#$$nnJqNS=-Ec@nMZfw7G5m~ z>924z-dY!ae(_+s`!4(><3KK;jBHmCiHqIq;z>nL`}!fgO|T5|`r{jfc%8kdXN!Pl zI9_4P83lG-JpAkC6aNqcPocwS_X*aU@9vU~)!gb$;pKcXUMn{y_>sTT{gwvc9{mw4gK-K_{;a&<9xc(h8zl&Jo_DC503Cbp<=lb`GsWo`Jt zy50FE&m4d{3ntJ-6dEEad{09CpfE?Vb%}KiC-h+jvmPR>*Iw<@*Rcl#jDctldA z=0k}zyHvq2^LTAdn=%RWSC6CI3DX6|>60eYTxO2ama={MH=Qp$8&!ub5gSomFj%KDB^oJQVgQ5F_e718$7Rhjqm+Fk+!bHhG^r0-!%X&RA3*pb z*dR!Q5idgQtDov`KD}jTBlt-7!SrbN(wPZ9l-?RI0V%91JL&o*C6Mj|&c$S9!j^&0 z%uw4;WjT)iQ_>%KFrWKeUu)79vEZ&At4!%JR8y0`1-}(z(ZmPLO4vO)Yz9kG+=8TvZG&c4LX; zZ24Kb6Rc}R*jZGtwAz|Tm3Vty_Gx^L&o6gi^RoG@_@3b>6d}Ftml)#H+qXq8HabjH zms^QRl~;70Uh)6pRD5}fFMuNB7IlgLlG%B?3o3OjtSbE#E_0&aEX(EcgfAh{RsM{8 zPc%MS`~Nr&oWmUg2ZO>gLMdZ>-CVC_#qMm>F$Ma!jQTXiO#1<`LEOWnLJ}?Im=*pKxlo#irnm~c<3#K50OnmI~&U` z{v|=eQQMd;ZMxM<@(K!*A`gErSlH4pRM*bd@7!+;gH-qn<;ye^kDOj&-^X> z1NV`x9xH019pY;AL4z4nVp3LN%W>H0z1*s2GU;L$j*kwU#@@QQtInKx7SL6jxF|J4 z@2F~Oq`m0*6twil*Jp)btnW%5X^o4&9}(4~hFKXW=&d`IO@r6-5WO%txoo*hXIsbD z7scDEejGpTi*u*1ND_i7YlX=r)61-=yq|kqdGorse?TCl+~IY17ku zo|eY>nzVKM6DFEb_rJCXqisRbLxvm#nP{xUifmQl8Xed2!H<6$470$6l5Sa?z-xGr zw^zu`jg{|igDO-_kNJdh3IUE<6w&Rxt8s?cvZ$oRGoQ9~@DurX46)2Hz|)d^6$M*5 zsfmnMiLaGj6ktc_+^WuIXRmv`+|zYGq};mKjDbFn=4;fc!&EKdTib!b#_ptN*RiKw zhi~?;+%hJR2v$!QwQOH}1AmwLcrXkbDK}MN z=0yo_-!jr3xB#HU(yn%`Jb*{S2K(sP$#`nqQ{=5CjumUN#x%=)a3n4JOBVI|cl(d< z^f+d4APu)&^on9C7V)$qKD!CbhmT!dij4_4P41he6$JFX)t|>w3{=_*`2wy+~Tio{%mK2HVfM#0e%-kQ{a0Q9SiCebu*gn|*Vx%<#%9!OJu6i1+%_{ZB2CuP~xX6~h;EC!3cfGLwni z-1Vf^7hI(Do8Y*aie+jsZDIE26@%i}Uce%4Wc41jq`Z11cePm>@4l7$n@JVxe4U9) z6>i9faTV-PqlSg>{Q?^z6HqhUM@xcUG~i72)jHiKR+dm(r=*~GCEY2_ueEYY^I7H4V}!?TxuxJC z5raes(PDimnOFCZ)tHH+&hPuhwxk~pzW)*3kvzeBd#$AAe{z54_GdcA%%BlM;eyYL zCOWUg%}um{%bf=@*MGa*bs+t3lXJ%nmQK1jZGFb(@Z`sweQN_L*~gfen7Kxs+bt;^ zp|_0k)QkN$dC=A=Dff#X@uTB^ooafuV11i>JM6Lj;7P#V#-2@PJv4TN4h36Gl}60l zG@u2GG&UTAHKqR8$k+3z>0n-%iGV}@;uBMkpkKRJN>8Z4O1kOtjg0O0g8glrqnY_) z+_XBJDc<|-JfdXz{9O&yc=ghHn$U$l76N+zGNgH>sw4EhNYpitw;EV|5B>kf<7XiEpFiGr-kxp7IXUqFk?G*r(Uu zpn7$~pd?>4qvtLz>JP!zuy=T(tn~}6J~V{!CXO{G=-0%c(xq-mgzIJ}gs1uLL0H>e zz19V5BHB4F%QulA8Og))l?()=Qxs??I&^bJl*JVfemG5K7I~iVKBdbFBSOaXWHX>D zcr&m>f*~J5A}Vh|!!@x!#*@?XjmEnDOQ+oOy2z4A*Q*!y5@W;4vrC@TSwe&8>06YJ z9pA;6e}J4JyGfg?5}em~d+fa;6O7v`ln}3it!aj_sX1%w2ucP?7dq~;sH606>->?^ z?65h^*>ia#$CgD{jqLr9oJgq3b2GyZ^sZ*leP%`IQF;rDMN6>8Y|-e{OO0>d#=;ty zly5@&a_~%7Q7J4cV)#(|PrfWG zRw``Sz6Q#~T3Ax#)4cC6|_F{X`r5rVI2hWE+BTwVtT`6Lu&!tydw z&|^RH{fBCoZM;Pm%CVN~?~7$5j;H$`2P;*cT{)+6D~9q$;cM7cFDfK>ZJ!7p@tDEM zw?ccz-&en|Y~sx@m6u0LAF$dz8X_N38tqr2@S#VFjdP&!KFb!uKJ5GnI}K|3u~(<% zvp?|Vel2IN8SDI9G7?0v+j%i5GX6+C{Rk@Y)3aBw*U3OmpfZo=JguC}MB)_$$gx9@ z2dUo1FY$y)V)>Yr+zzNSb#&enW;Bre)Ys2v0)UEKJ8v!*DB6xv~V!^ad| zP#0mv{c54;0yv^V4YKx+aK^XH?D#0)v#2wIGMuQN1nlM?sBU&rDL4j%zE9+bdUmeG zV=;3jt~3mo{5)I3C6R*s2*71ij|?!tU|~IZeczps_#PrOUb?a6(+sA?$b;vr4HHVcw#WtE61GJ zDd^rTADFF$kFKZCR4wG!J+5X$BinbhIU?ddW8&QfJJj~gnEE+1we-BO7)%-Nqv}Rh zbSM!zaDVj!%RSN_a3at|h-;sqB%NuoY>lt*^_S7BIphyw4THFIyD1g6}c;q_4^I3(szh zZ$Ph|zgB%hRVl$vj;q8rWNG0C4pL_@7B{oH_#gr)9(+SvXp3hI z#t#XUDDNrMJ#Mci>^LdSDx-?}Hrsxil*nf`F7d~qyn|>!lv2JRhxPq5*5~$~5svNe zWyTHTKdmBiJXxZ9 zlF|xYiLZ$;Nf1}M>m6`?P6gj)&T7n+kDi4F-(lIh(Hn_J#O5Z>VGw8n+kAg*p!>{Z zTYjeH`Q`aEXjShk;%Vp1^fqo(UAz@(VT!4l*Jw_XkTP>;UU4v5&F{^Zr-|DB->=T7 zWJTtAB55DKIeqs>1&`l6-SW^+$Hkq|+>mm@;E!<(vwZ@?KBFX7!MPJ6$*n8A1|Uy* z*$c8pB>Lq;$r-d`pc0WFV{1tnR_TZpVF0rGX6^~m50ex@`u*L<52)_TXS zJM{e_CeAuiW);zML2mgNhdsl%8eGY?4qbTi?1JRdSLnsC!6iy=BR;pc|uW#gu6aSV^E6`y&U%7D6r?86{i1_ zBy*n(Zcy)VbB@Y!f(#mC+%|~8=6=HSFt%el>=nPY`SRct>RB?8=}?q?%SDg+BFvn+ zJw(66Z6FDnM1EMu4CBs;Vs(RFX)F)-(_p?XA`(vc6zw=Z4eFepb`;G8c4p=~e)j<9 ze8-Y#7MgCRl*#oTkJE*&Vz0EW_{Qej2j9wlEaqO0{`2I4gxi_oVFiAyg}is*^`h zg6*4x6}mk=a=8SHFro~P@AImf&|Ip=qwh#N#y~?6dtvw~ZIuLO&ml@q2<_Wh? zaz{)}50XDlL`iEi)Sp-uUrvVSyK!5z+`3t;{#o_qhs)E}pQH&dj`jnNXarxPFE^m# zg~`%|U0IBLVvS5;fhpmZ{h3?qz`&8bYw?au(B2u2tL1TDB3B&Xi&OyM^&Q4IX&n=#M@^q z6R_cpj9bb2oh?7xjI4~^H6$}DFW;~pTavz#IyPY!{L__dkZw!+X`(#N4BZg-m<+Hu zHgHZ33-*_7tf8sgCF+f)kbIZSmwycp zZkHEgN~(F61rqOjUdv*>+EvDw27{F4cG%Ng?J}x!LgO}Xd(SQpT0=DBY!wbx>t6Fr z+3VGj69Rk9QMq7YgEwaEEe86yW_sYJHRsrtL%d%=Ge0_1xgeq~EdIs*e8o*+XPKnV z%XsRP;`44z@yJ?}0eKZ~xZiL)4>OHmd5oEaO1J}tfM0jNpW8btH~+9|3JY9~v8&$A zpMD{0+}6ywgZ`wL<}ZF+DiX3FVj3uWLLUVD`o&ZXxoe1bT%M5ah|U|;Ncf+cH%FJ@ zf9r91swC7^Ers^PH3Z+e?J=Tc=^dXk0pF~%a@{|0&D3%Z)`FwdinM2SmiQ4`2x_kT{=TVgoVf-sbWx>V zO-9`@CnaIapzP|NUQ?$bY^N!ocO)q)~R_=687!+&jhiM657n9c%w!E_f zN>M5y)lSpFk#@NYkDHPf7b0QCubh(m!*IzX!_wdR%o^~X^_BV zlnG`pzo)pxEnXCQsv&3#XUka!RY+f#jy}Yj+8618H_QC>&d=*X`iw=d({vG#+_PkK zTZAHKEL*Qxmr)UglBba?N#1_*!I#htH}-2f>yvZ0^}udSqSzlM8t zd7G@$pa@1&+YPs9j_bf$_@zBc@tybQ?#IMqu{d;?l(59iH{NZYBMKXxn4H?YQY5X-ChLqlPv-yI&<6cp&Nm?U#6JTMg(LrZPk%bhS!H z#4kTm?eDsz)0ts@7c~{_l<>RNQCpLg#?Rp+TcvOFtm;%ZUjvG@QFqGjbqTtVxM*YH zCnr&H(R?5%uOSfg2wkVB0Ii*cL*@Cm5I&*gSx3BEKP7&i4T>tV-gW$>r>hYnMMV#@ zTjDV)t-7VA3uhS`l*de>s=`;gCCh2xo{B0{_i|iY$j}liWiga*qK9kCG|E5dy<0@& z;H&cu%a8PjCCSBx=pHD@Lhj?khK5vw-b6?BfoW|y^#a%xafBRopQv#Te}3zh7`oq$ zh97NZ)M3MXyogL9wtMGVekIDFS!tU9#wClRp&Y+=M~Tg4wVgBq z-g5-^+*A1GjJ|kzEWYtjb;`6lU=I_)F4a*;W_s7rk7zMpr+=Islm*34V-ppip6i77 zPaUJ9qr?6%ldxk{^wldKbJO$AR%-3=O_Xu$_W`#xYPqkmnYXv!b&@L(VQy8czwl|h zzK&>R;5#-F(G>JB6j-snQ#&e}xj?j7`l5ATOYPl{v2I*j`X& zOuk~HK62Z3MOD?9%NOYOyrIX!9w(7u3XHOhOt6Ks{oo11OE5{-vLo%iafoeW%@Zi^ z%Kj3QXoj%c01r3Zlc<1z#KnQWjH-GfO&5d zc?2n3NSoVeK(I}mALoqCosukjz$30>4p9+!@_j`GhC5lzNG4ipsN)*0=uGzP6L(on z$pnv6wINKBE-LGe+=d!72R>}VdoQwgS92!V3GOx46G% z@*^;R&#u-h48MVFgp0rx3d*UYPCB(6U%n(S8F>Z5{dhhiA6H_Qf~bEki;r9X>GLoz z3oXi1oF^752*ebFMwYGSN?^umW&~f(de0;E|$(#%1N56bkLl%qeV6=EhyQRso?;+yplYC!)FH9)A40#95%0y%wM z6m<<;BmZ>5JtD%EGmlTsQ>4f9*hngy6qAlS0m&zwdo*mRQNw(ZS1+x^@=%XS&sIdM zZAMRu^+!K1m_T|-f1arp^$&Cg5mrM87e$*2@GUZ za{kf^Y4F6rP3~NTA$3v$4`#`KPBNRWL^q%r8p*?u#5!FMTOxDoL6^=`HVCyksm zb+?ggJ*QhNFD=6`E>@8r-IB;{EhvMQdiX%#12Y?0|od;eUfi^66%epT|` zB!xg37%Jd%70@yFO_B+9dPGk!{R`ir_k$H292)>*P&@mQD2NFU|6-x!VE*o|ja(p= zf2UT#(Of(I)mn{7B))xLeH#m}+!D9fOZY?iMhRLNH}PE!8ubED&Tz~5tBLKh10`9; zfc5vlIw1!^0Mvr9f!|A9u9y-PV1gw#Lj2HW^UN3D^j3j=uVxx$5m$Vymy*1&TqAc5 ze7B)$YtYL1B3JrOYsjkDfpxWr`lYCx$mL9+0Dw`zAXAh;p=9dJPd4qMnEM#X_!(~j z8soqdlfz9#ekW`i6vr=4>HJY~>y#u(duV&(NVniTIP_-*-;zJWLh@`1YvML+Rj9UC z(GDqkJ)JODd4!FuVs_+ProhCd+mX6xnYwabG-%lwufXwQLZoKbr$J%nsB67I`$SA5 zsf6y=M0~}CvFT4+jmz(aqHa<#Ba>0R0`M32$zS-tjx(_8%`pFFB>Ax)qqX(Z*W2Z# zw`3pWB^xaekto$2KY<%($YFk1$u^ogg7toF^Mq~_SXH^C3N$dcbT`sia|RN;9*Fg3 znhv14IqA20tk7M_ZqC;#!2)ZqIveC{bvi2WBP|$(bWL=A&d6*FQ!X~~mdN!B}oqXM<2~j#FnI5sn=Si2$FF0L22ViC^CJ~~l z!SIb4+2Rn#oelQ1>3m-NIp+;FD}(OjM)vgb4GiCv#X3#UQBKX9D@6|(Y$002an*5e ze{!l??^?{=JA-0h!)AVyN|_-O~_!!Z+ixkh!$hjLs|Q@(~2u|24vdGT7Hc2UsJMvQl%8J zvm_A0?+H3xo9!W2SBB^o4xs2AU7m@$&;=RYvT@BzHD!N@X+WgMf)gU#O2yV8VIX24 z)o0w~)|w?Zw0R3}(w|g#^xFO4**jTs2`VBm;vH>kmggDZg~fgOu6CRnon^ z!6Z)IArK)?zcL9QgpLdnoyE;=>YopLi#wf#zJHywK&2?b?eCEJ!NpP4$woRm*^8G~ z#6$%x$U)q&#OB9yOdrpwM20;kZJtYo<@~<%JI&Ug|EMPLn`c-SQVWS-Gi=gqASwa@Jcb8xZXoJV zrC|jnGU4)+#Ya+2H`*ht2(Y@HY3*6{xg5Sc#C`n~-Q>Ce7k)JIDzNqs6HSdw|n8F-3RVgV%30wVxWrc`eFN%eFZmwCqGf_x$R3 zd%mRcjc?d~8otRh=WyORn8;s1*$YJpV2r~kmI2}Qkr6&a3RQ=FTKXB%psT;76llWlTS znYjy1&bB!aegbl0L+4*UTF&BUl-}ffS385B#y?1&NwrZNa3t<^F|ICtG%Nn|*g4_} z=fejzWwc8+IKmy}c9Xp0rd}tz4Phw#c#EPWF1H(f4sOyPTyWi_F7UeqDV?+_I}D~; zAv!4vl%JhF4-X@hxqVrir=H}7M{XC$G||1*uLKIAc=Owh-6omc#IP{O)3q3h)V9uI zv=Y1|mW$`uRlcm2eZ?o^)Z(XgRxmn^hnsZcld_sR^jLeWv&_fHO9cG14#{Vz+#xl- z+V>;X9KPW3kqJG0rfcs{gJPD)wQlS`F+>ZXeu)pfFkRatFnC@x<1Y$-Ld|o@kNu8~ zOgH&B_+{%p^gB2tx_dv`moM^d@e{U>?V-7O$bfVltzGUN$1TGOMS<+FS zFD+W2{y^f%o^9Z#Z^NL9g6DEb15%|uJRBm8po znUY%rqvZbb^0${FEk8*1f(nion+`f##EsW5<;ZxjP$e|=pgs5kwMebc@s2ei&rT@w zwEI-<(x3J3l1SBz773@4P>(Zs_RyuHm)F8gQ;1=3e&>c{SKm)lwgf1X#DSMljV|%G zli&i-3&KX=2J$`l?)}qAat-RrOaZ2HG@uf#PBJ{6kD{Og&aaU}-L_6n^G+#a4Le6@ zyRDJ*7}< zNq-<5`dU;=^oOL_@HU%1_Gde%oC>rAZ(^3oef?+It!<(Sgeh&0HKA+B$jl4`wrI@m z50#PQ37JQpb24XopLX6)IYl`@b5|SfOe)@X8*Et+!Y4jRiVUoS_FGDTDm^9U*aEnm z6f3SJwRYO}`iBI5M~ZL^<}@tNAgx;`Xy}|3;sUJVL~UWggy$01X9*rrvrp3X^10x{ z{e&csr00C`*`U=kygqmQ(YggxQa>}C4wki4lUpNze~ghbETBqxeJ>l^&`$StyC`-P z;Pw4LOS~Decpx`&^?i%e+0b~PUj;p+7)8$G-q{6d?2qV3!HNoWeBaSy+j^$STI}zz z1!bt>Y5?it(9FG)=#j-9Ed#Z|6j^w~Jc3o`kP94-a3gPY!!K>{P0IiK1K zSPw$tG!k2I>3i>bvp~7t)8sZ;bUGaN?e<)_Th}o^40(UCkM-~>f@_Q$wx?ev6U`w4L;n~w6yn*Ms z$*cNoATb(^2HN?Q94^tL%`@s%FooA;IaEC|=~1q2WpFu~PKTSVJG2;JYiO>;{r)7tvlwkFYpXX1v1Zj&#V%sKoVyKmbp@@y zVhPLe3`G0WcfY{2eM6S;#L%QfQMgL&>bo~f{mkiTv}VDg>-HabUy^o&Z`V*W41$A0 z<~!x3Iw-8}wmM%?fxftOO*9-}Umbu_ZA9x5Xd*A}ibwQwm=X^4tv!NDTakwvq;I(& zo`qq{X;b(G)X~4QGWtrwp)~QZA}V{6(&m!OP$c+*pjd4*Fobi5QS|DFQ^^5a$321P z-QtRA>V&p0-kXp;q5ALPZ=G+ z31&h7pJXVza4wG40gN%md$5X;`n$6@wGv}8%b;7q@w*5!J=SP1R>TpDr-c6xs_L*? zDtPG?~wypr*Z#V;rBAP@hdAJjz8MGV;~# zT?2(1AHkG!0^wl{jTk_GNf=1)IsjNpTj@H4qlc8c=z^Y~R)V)T1miwhWVNqIy*g@2 zW72axY`o(de@{)M_QnZTuCD>Z*yefFrXBJ_df62I@mz&GxSXRs#C_7n{}Oj!_bw4t z>{tA!T`W?Vw287eriON2++fC3h1H76Y>mI|c?KfT6V*}2Fzh6&F~SW3FKXNz94!#S zLaW845qEM~&8hEeF{&n+>xCrJV#Zk#PZ@6Rfy#rK4&4He%pKA85JI^!+ThV_Yob*$ z6ye3DVtwevv8A)*+DWD%aS2>5?UGGh+1>y4-Z}!|mR0+by;eb7kSL(Rk!oF zA$84zu<9XB1K16yW0 ziiqn;=%DCz*hQ;cG2fMxZr1O-m_?;G-<-D|kJza9Pk5#z-Cyv)fF{?;&C6%`OxEG- z;_Q%E(2J_Vi`B5l*8A6C}-x*U>hpk-CrO zs63>+4{FMm1<+=@lP#XR0{AHY<=y>l{unLybf?%sbgsgul)J{J76~tj7F05XZ96EL zv$l*b;AO2g5_zd?>$qJ);nop~EdJ4hEIn??0~T3`fQv-lY%G*5#U1-ybgM>L$^m0aRw|k>zPQ~e`x_bb$V<+jk;m^1+Y0+A zWS4)m7o!WL7u9ZbEl#czOlYxJ3LD6A&Sa9)$YA9RCQqnvpBiQyV08sk5=pmKDASI!d~xxNbJB?J?5!w;03kH|l~V~WsThTXh8edA2&?P@llabdO69NOEN z;-?ynFgI2l)~ip^@9_u<7;7z7DXd#Z@57M3SJy-RpDFC%9(Z$`q!--PBHHJB3N zO3KmZcRQ;HQE`L$Oo`8O39J4C>!Mqh&?M>F!_mwc?%_-!bKB*bF>ZEpqwt!9bA99O z(#+K+^bS#8cKD@lmU*=57FnD3+gxg1n{;8Xu|Oej)!VtH46USObbUvM!gt>E9I!a8 zZpN;P&3V}!T|loXox7Y3sPl`Fqi^74=2|ZC1JH&nNBz-b!d@vCt+!M|6>M_~%;?dh z&==(;HoSB1WdCgYGiF?V|G=QVDiLdQV+)zkP84tFTk{^+rn|KOilsI~9_9n0P)T}~ zCjs5qB5&5ZLL(+JJ0xd70L$#}02Y^F1NtrTW8a_;-??;g%bGB!=4XRLbJo|pupJ-i z5a06CBV80cTsQZvp`jLYH+@K=(d9tkXOlb|r%3%{tt}DP_f|6Ps+V^`LJcnxHGBuJ zPw*2k$$~<52ni39y~DQOCKrYiqKe{*X$sMr7Lw&He<&%b@Z)7BgnE;pY|^G~u9@CI zJ5*wp9ogPUWKu$})_Kf?!Fp3;U93>fPNW`Ry|4zx_0XFE(o7fU;Y+| z;^ls%4KfxT87kSt*u5b)jQtSZ_@dh^;&uSOUl2q@%x*hfN+fXPXb(~~obIY7Fhx%N=(h>cVg#gzzl+#$S)lf9B9C8OLE2`dW)CzZ8+lp%d}4AZK} z(ZO2HYC15$Y4S@Y`OQ$xoTMVRwo9y%&U2yFcei4s%XCPt40PHgDSdd~+$BBo%zMRt zvhw3iGTvLLY_=^%z_F!>#7U=28#xofq@$?HT_TewBbr?EA)~I0jK`+tB zv{`5F$$nKDUwa!;o@G!jD33AR9)``q?}s!p%NS}a`a@Lo@tuX5aH5Cn-32h?+b-J; z$`zqgvi2HjTb)0Ojd-HUJts@6c9v{zX}mz;#1a&5p6_pkf@_VXlIW{}MnjQj$iXtT}~A!aCBDblh)_II4Ia36WSD z=~&_5L~w6^G-t_5_$De)H-qm`JX6VF7?Din2L?LeSKkD9EFX6gM+n3>1q+M=1vJLg zA`RVz#AEK<>D;`>Q2cF6PWU5AT6O;Cm?U-kx=p=zwP>yKy1^%ed#G~jM|z_Cdmol} zvWHe~<V>3wftk~GtnSws@5t4dx*RLXCC)vWL)s{7j+Pr%$ySFa^_55%k>t-1zPA&b#E{lVSFcGxh%T zyrgnfhcKc=mUmB=J^YGUn4Bc?VC$!$VgAd*jwr39n6Y62R}Hwi_-Dgtb;u?o~q{?R92L7;eYQa-~7W2CU! zpi=FaixywoM3SI{Ydkn&nol;4TO|_X9!hZ{4S76rl$u$VUcXlPW-RZMId!4Pu#Jxs zo+aVaX?vN(-MH|<84k*OE3_vZqm9uZQj+n-e-i5Me323Zwk1;}L8ob22Gg)>+mQC&+xi*%W zZ=TQ8TI`ma@+kCHjIqMrS2kaHsy)fc0I&wTE{g|5`KM0b)Rp&@Qu_PEFzsO^vpv;w zZmpxysy(Z+Icn49{Ae7b>E;oHCu`Q;_FV*YBnNH@qc5qX|J0I|86c1UNemcL|1Ky6 zRcmyOLtO&zKKi|46O(B86cN8oJe1~isrM}O7IK%!{@}REapjkXoS$JsCdp7zW7VSv z3-cjmDTN`_@6si)m>a)wecLBpC3sls?tDc{9XdVm;9#uT4$Yo4lVQ>u7efr=J~)A! zIXHAcU&JAgvBMZIU~W5ZNW5*k=+h{kC;Qb5i;Ln-d3u9XhDwA179 z0cog~I~EMSr!7aj(4m{SqUp>NC|Qbbzx_4(#}DsUmnXIYLVT9rN1ylZflhKQ4{rUb zcSrw$^f6^Z$kR&z-t`Z8`jl9Z3ZPw)1X7q<;0=t4yTHg|OtX-q25ro8kTeb*9na&>K!aCx zM_TS5V`BD*5MyGROw>I9%Y67!QWYk74?LzKqiu#FqAUafOqb;@Jr#cs^irtH>TLc! zG{Ub7flV<4w(1|mKobGq(7IE(F*)UcFOmab>Hfd{HfU)PeYN!@q^Pt|W#WS?^i&SyV|Ow}SdC$<7XH#Sq-9fY*Y81`;% z!&EjBp&03f$kBQFKrQ|UyyhglZG8Oo&d!0fB{LvE^vb|GS~3jSYk1-f*t=bTX~Rm! zdrb?-zZuQ-njQ}U+X}Zijt1B@5W-k^;=*;&WDpa$gQq~6SiW?ff%V@%PV0=m9=@^0;dIK!db%Z(AF!tHX zoXbxyr47Tb%HVH=Qb{I)KH{dKv?OC1(2Ks10ru6kI9G%)NWj8|sl|3qx?_%?Qu`z% zu#Ro#37TiPUBSUI1t^-RLVZT!a=da!B zDO9bGig*8bXEpVe5``009-+Wb);6pk-%bu+Hq|XDPNc%De|}$*s(AT9c#mT<4ql7( zcGpw)FR-G!T-@9%ncqd785tS(uY$1l4RxFDvmJ}PXi@b=kQnWKjN+2AhBt4_rv3>w zC6Cht29p)rl#w$cwIe&3Au-nvA)J%H@a{nU|Fd0wfGgP`vPQ6Ir6P#7Vw=C!LjuDe zXQ>C?Ve>Q4@HEVZbpnnPC8K~TRFVwo^XJcYZ++U%F)`;ybLI7%HL8jViy__J-Qk{C zok~TBP+S56XRW?|D=&|E;S)U8QJzp)BMhshcmdA9?kw0bic zA0p!OII9xCdiJks_-evEJt7jd5SBa7P0le}PviOT-%r_4)zvx`XNcv|mR={>T1 z#3X>g>`}uBKfCNx&Y}}_{0+p-QEtxi-nYJQ_wpqIOD=g!OI^>{Uzb$| zKs6d^Rcl1y`6(d76kgrl(X+NLl69{vy)UNuUz4KVW!-qJF7k5c?ZV077sbJ^Nkeyp z5u1~#md8u8FpzAFeJ}E$x&tEK+Kd=Vie0C7XaF>8w zEBE)=3-Z?E&fS8EUxLdLnG3z|^ozEYzFdQv%Y9BxXW4GqS`LX91JZe}A4&xvNW7nU zliTjNP(XhO@P8i7>p1rm&%cy_B+mY2JORo(@%J72TwKy_tqB7B?^GKuZ^&?iLe4=YC&x)$d;~nJc16wamK$yND?8#`s!vy4A$rF(Juh_fO&FQ(H6F9r|Pd*qv@@i z?yG8^CN8Q*Qgkx)NV1J)(!GV)-1vs>+mc?LjGj1GrC_Seo5ZAtp3>|2^h?IZAEN#t zu~QJs0$7p)5+VmAq@>&uRW=YETm1|nY^Ed6%P-Fn8%GGoNE0d$RdLN|c)9b6rL z`uRT!1$=M{ZaX~W86z2Ll$EJ1D=yASw9Y(YSgA&(!pJrN zj0|ZSzW2A_02I`Jx4fk#T63((&d6wVD95f(6j?CbaVOM8Ua4SE(J?WijOLowWM z$K~()0!ddMf}pX62BA=gqYdpnE+UQSZLz>o>3?XAyGS3SaBZX1>=+r}mlhYZ6)`M` z5)mwl5`4JM0ESi_KWSnW#%td;nzWtWsGnKQ0$%nEO=F_CH}U3AmFMrO>2kz7Ip)1q zF`u;@{8IWgGe0kDn^R+9#B(cEBJXA1&(Mom-lt~IW;o`|njS-hc{8>(zm#fPF)*s% zl?}gC@xQ@+;NkaH5))aHt*hhou_3Z=J^tyB{U{2*%O0W4(4U%K2lhYgvOHb87!@Fb zR#s`@JZDv4vXYDV_k=61ROH{~uEuFj1(aFjD3hijpO=sW;rR zdiR=NyxlI$Iry6v-}0b$1);wX<=`_>KYIEh(as?E5%frba__JpP=LA7jb8VvF8Ijq zzzb460g=DYyTUHV!UPL4`KpKX0K*=GYrp}(gWTay4gZe?@t1b_=P58Ej>eIElO;%i zGqT#es75~W{=@H#u>J{C{6_slXT-Q4&*ylwL z$YrY`3?ThQu;?V_bC~#|LwE6smHa<%`|r;HovcJ~;VoAO1u-A;y$3#?+T`2|CxnS` zrWISCES6ah40~DWvRi)>$G?^lDk%$G1g-R!L#=Q*0G&EtPt9wctJ`nf>oTYM907uS z?UiG3zz8G8ZpQiTrVu002pv=TeuBqYK!Q4+KX?T77@+@7e&rzd3VwLyxIZTx&Y2tM zV3Qko;F&GEqfJqxxPT4$GVpZg;6U;0WZTLGO$0Zjq$0cDoe?I6qOr~gmTz~1%HVIM z`cHxJ$LD*Iz_?s}0CMZA4iaYtU<%1gjrJu4Xwh=d(}{oo_rI^aMF++%@l9bIRL@EB`GYb;1+GKsB!9m~0Jbk__au(rvvSk@4aFHFk zAGi`8|AQs#Wl~XpKHGp}iF#1o-kvQ58D;s##)gv($s6t8JPsi$5pA_xM!TAxLFoh$6${IA@;c{z-J>I=k-oif%0P7aj!(p zrX_*M(aIb9Ld_LhH_Mr?Uw7u)3|dNZ<9|y!=lE}px_T~x`RX1hLPa_@65x=)^6bG? z3r#z*74}HiLURmO!j+*|+`>5(e>>nP_!-?P)k=lSwMVI{vvHQaHnJ}0`!`kpedUP| za%x(dab`bl+xy3rP(@khqXVGNhVS*Vizy0V+Uw=N2NX(~t)+DGm~gSSt`iz>yil)6 z0Gy=%{bHf^`}*~UXu?D%?;R=u>h!xXs*f97fMi5&mlW42SGz=9-g8X^xZ#y@I!1Ty zD?^LQH`HAJCY*oxL4RI+yNd9GRS5x{CT=g0$Bg}U`NH|xq!_9vPIc%I7tO^E#C zDV2aHc_*%`v zi7WN*?}96SV~7Zege~~`{b-_To~SR7PdAUmgtX-bfv6Q4xB->_px2Z)Ny@A=EJtpcqt* zcnlRG>h*ly=!W)D3mWkyMjI9c&QqeiHKAMgwo=NEH*l>y?0n!}TX>NR{L?$el3N1D4ILc#sdmn1iW25`MF>{*4F8sn9S7S&%4z!fp<@AwOoq=Dxo z87hAKJLM_a4^&oSRvtKS+FsL#x;c2S40~?3f@^dICKV}xbta=93*Y_k1^A-BW&;BJ z+>#uixC^Np9<6+d;Y_f5y%y3r?|Ol@aqnRQ*lV;W`Hl@Vh+B^t~m03#I;Xj zqep16WXK+*99!eT*U9D)n&{|RkAqhGIEAiKy#}l6Yp;sE$}8OhKmNg0mbBk3Aym>2 zoybZYYHU1aH-9$m-~Lv=2{JT%8(aH^Yr!uWZvDIw*|MiZJx6MlK4EXZhw)gxV~#hf zJ?|J`fWWJ6xCdpm)CRU4bgpXOz7*m@k2^hT8$oW95R2;g>Q}7vmp={ z!qV97S~m^B_pCKB0{EcN0rBfytfTX5U>3gA`Q2WF(M1UKTK1esz;d-{gtD~{b-`J) zMZ-6W3M;L$Mp$61Z)p8wR@gZzrGh;QtJEA!royo7hacK8+f+lb)~fn}J=c<;X_ z8vGyB@mloPfzX49C}qsR*pP^!W1xUeLk)l3b7kA8XL#(2ev*1mau?DxCRp0`+TyWS zDS`w}NRnWC5Q$|7_X@lJ0d;g#|HQlA$BMrbjbM-~g80au4q(SLz)wzN?}|jV1<0g+Ae4C8dZGncl08;{fjqi zg*H0oROwz(z6qL>!e#=4IC*-%I%C-P7B)Q9{@pIH@cq(V^u2n}%RB4Q#sD3-+s-du z5Y*tuTc8p@{GII-jfkk9Tb_HO+ea?RHB}TYNZNUOmQMw&?LX_TK!XdSeE&A|OpM$|}TYEzfMN#K_ywRy8(z2Z0XvnsH5F)hFG zNXbOV(ZTk*0Ge4@LwtSnAek$YK9t#bjgSzswj|-03*xS;b!CtLZ5sUJ$`=HbwYLt) zDSHcUlqc;1&Xtih!Y6hmQT-$$9WhzOZNb?AY0 zD1Ul(topYvKH+&k2-Qiei$i7Lk_Qn8VYf|*# zw=DdG`LXe|!b>^4@h?8RRPbx@!PV%i_W zpbrop0fzmS4P!ib9tG(F1e(tOd^w2zGU1z&qTzBkqy5uJ4~yZex}$-0h4t1$&*%Be zI`o(xIZDZKFUFUDcn5aq|J}=g{Mw=Z$BIys43>JTs4u!|h-eLCS9OFOBk(`&C!K>a zZg1Rf6`uXiWq}nxS^V`o*N;`9Ce17@Ztg@=SP9X3&?A{T{Rn|^wGLe)^19sk%in|T;V)QxBOwKYSSl*szTz>_okL~yWp1vP7?Oa<(a_>Nd*z9PPA|jMNAzb zXEbiJ2P08M*q7K6n~LIdRb@W!9eW%d=}-1^anpW9*H43g_A+$Oxji!iF1+Zhe$8)v zC;~bJn_{cYg3VFD&f@}`Ll0vlUReDOfLMxYUucrCS~-f*t=QT$1&$DCvChjf7#-OT z>HgssDOhgH;1A(`tIuv}*AWpeDJ>N@vR8e^z%mTcGbuVrTgaFLkPKCZ3{`2W0t0Ka zDZ@IKgQT-I1tpUt0yE1mOKNTwVN()*VP70>8UmU2m}bSM-#h#Y2sRdenBw)~0<3st zTiwHR-%P8WNS9a%dSqPRU?MGW*i|QH<^~$3lrHO)6h>^4;8a>z>@fDuj=g^OKJhfY zDxVpQjlq7Q9^$Op^eWGEBZv2*|NHK$KD(yTrcYu zf5+CoptT(#qE_^%!KyHg=tmOmQScW<<7`{cPL!O*7z*Ab!Z#XHuUGVfkp$Mg ze-j&2dx8-#qRG~T>(3`{ZHYOH<%NB+Nvg9KR4QC__gMmPM7s6o{C=wVyji;Ph8aHI z%Eh1uN}LSs`ge})O?(zaCi1-9KpZSa@!Qbn{Q6AYfhKsZyo=%{T}4-r0PbGzTG2@z zjYLI77~eszKZojx!1PbInz>S(2QOXHpIFRIYCW?xG3k6bN0-}1{Qr>l)=^QeZQrnh zw3Hy7DkUW#odSYNsUY2*Gjw-IhoE#Q2nJm_O z?)|-My?^Nv7cl2_UPt`mIMjqnh2_s2@z1W4z<=lm1u=(+bFxdM2rs62y7i;cOw6%*BsDLTm?kYCRzGHAYzR1G^}u~8kt5x zm102{|INhtRi3z0zJYwopP9!F_urO2-61R%XyG3coZj7y(a=<%J%i=CID;Ar^LuuDQW`a`Jj*oN5gdYe7}A{7D+W0H2|cPcrGv--ur#pUUgY zMZE)wz^db9QZfJhQo94SY^sOk=BE{|mg?8k3o?0e8#Bc%MBr$ed3~ha4be))VxATa zb#R9xpZP_op!BSR`{O$=8mez16nyf|>uY_To}}Hy9xN|goh~oPhaHJIdw6(2T3fgH z5MN6pT+wt?3pj0|qN3skTHxe^!-JW{#rO5~kZkg8mQoqLWO`=))5KntzRie3xvJx1 zKj|@q6PH$gUG3VaVL*V9GXR{_M3?6N^I=O~9kz%fG-8h$sqaY)YBXqDdF(s*%rict zJ(mw@O9L%GRZbHX?KZhvL*}Q>>x2*!sRfzvPhzL^q_!MGf>Z)nquw6?7Ppz*a|?w2 zLa3+_b6G!r8BqljFv!c<%VpTs&ejFkw*~29j{)Ig&v$}HNAjedL|u=6%HJ7;HqJ;k zhnzynKgej5yTHe0Eaqip;nQ@qbQ~=4S|a7we<2$3BH4#mhakW|38szm{701qBi4{-=zLjP(JBJJKYz zmq)A@5hhK6GqY^LcutNk($qEF3@~yMNiohT=v@o_#i-|rpYcjd6KOmr_4fjL-xS%H z5FXz_J%Gf(nnsd?@a7?53LORr4q<&0)9Nq%M2NY$x~A7EPN8_FPHLr-aCo=a{t527 zLZ>SuW*s6nW#zW9OYdzz2NpHEaP*PMpj>zHB(Uj7mHPc8mtgQOsGYC(!xV|=ca|o$ zfq%&JR|)m`Rf(Ff@cA>NxE#d%f&Em4Nv(*IQm^^*oAj^nlD&?oN@)*hDlGfEA9Era z6V-ld`H_HcJVo7?9)tq(1+=U^)GFE0c^v^cW8+kY`oS5%v$)eTwwD-AJ^#eCaj)s% zk*hln!;R0R`dRahL4Cpdm6x_TMn+it8(-8i1ZTg`hyXx>n_K@Kit%-}+~YGjl1KVQ z#dAz^ii&u(-VMdh4i43vgf^a9{b{xUZoO)|<^t@s%uzO%)pKIr+M2GI%+6+*zqVA* zmr>^#AS}Dp-D0S}GTAj=-uPw4(N#TT>74ymlEkBA8h;Uy2}n(ir9~hOp-z{HZIP(B zxRIJR$=+n|J|G?l`)>B%%LSl}2s6GauA-0=Eh~a8)dJL&GV_jl-~0{xap7eASCvBz zCE^yzEm}is3{6C8X%C{PT2I#CN6gp#0mMo_{xN$(P|&{9>1oJOwQLxo zKb}@_>7dZ0C9vNhg>-?n`W2z^ftTp>=~8E>0Fv<8*ZiG^0)(BVv;yqX(o$u`<->|7 z7c1k&#zwzogL-~KKj|Yq(u{Y&sPn4N8&$|QDmWYtA|*W#;+1@B4KSVddC=-MG7B;| zXj+epZ+m^iNvlGYxLS-Tgx}4LZ z=qv6qqD%K-tV%8FK?Llyl9#qr@gZ-GikJTra0nnuR~RfuenNZMO;qA!@uD|S!T<^- zKcIqG;r~PjF5Y(BQ$Qu2!qSHEvWiE}pFPktwRz%iAj#q}bkGxoS-366TMVMRM{AJa7z2jUT_HCV3QUWUTLA z(CUi8lMcDa&6DvPFf=lnp6%T`$3&2`ckoXW5&BW%k9I6ol(!BCwKq1}sKv*N$;dc| zoJ{mpN{EJFApoll!ozaFLpd-l#-3K%8hG%a^mm;q+DExD!kvEh3r@?v6e$?N5fjkjU? z(Oy2@Ijl)G8MJGFas&oiXkFtQ(#)6p#W!{4D&L5+(NI06Ix=2%s+etX^AE%U7&wAHiTWzcroaQJO$ul0|U9kU75 zKODb0IlBkKkRg|{0XM}{5)%_+*r&jw?ME$uJW}%Tt(saqcDGY0KtjsV%BpC4zx^n_ zy=pB#V5BDi?ejDWTA|6XJfjq2v(t7O5b#ilEF()4J~8h?Yo0YVGv@G$0t-<@2vjgZ zPk*Ory{KR~?IaIg7-GUSyL4Afc(0@I4L9Gnrp@uhh3?!rjm$eC?p^_RYkZSu}QlCh7)+R2}YKtFOYp1!n}b{22Hm<`@b zE9l5uE^IwnFRe;%wqFy>t;HsJ>k+ZoImY2E=wX`|OrVYpk!NO?dxBegD}z<}P7sW0 zaw;*HIcC52e4*(e@%*=){9|XRK>+G_ZBs@WS{tJ`H9Kod$;6)ELZ`JovW373wqGQA z$R4-)AgkBdH|y)_6*d`b&CbqfKchd3iiuBu&teCjcyk8)pYl9#U#|EF{O7OD^h$Pn z2R=aq)p%NN>j0+%2*Uq39js_%^~{VUB38K!*xzChSxu$vQ|L<4XyxTPH9agKrin3fW8YpuAw?u=sDmcKyB6jvG#l6hGSP3eM14x$*s%zgaKS zYBQa7>}#dEgRF?7yGDvvfH}>0VcUHpqRZqVzN9dOnm0}b*QZYAx_SKi9!*2}(RXT}x(l@-0M%`6c(-gP%7 z*wSdog&HGch&8is2$|68vg4k^)xhtU`~ANW1GkY+*y>jhBCs4P zgpB(ud=wt|=)SVz%sqf=&neyY-sg;jX3=wnii#`wmX<%7cqPdT$u{Tj{-P<3`)2(i zU*}KD8UXKPK4V#`f8iS-eBP~@&lI`q-6_!O+3)Y)G=G>-4ymiMHVec=olj_8j&1F< zU+jd~2)3WaP5zk7l)qNm5ZQg?e7SRZRsdq1832HlxcnyRQFSreRQy8+WA z45db19MiVDgG8JCn>Jw{6cm-lUP7z4;(UHiDw5Vk3&aTj&!POU^J2?l2mdt-;LoF^ zeyi|dHG+$ibE`Ko*+jp@X{ur->jOKy@03xNrD&%&?H&xi+ErqBcUM|J)_kH45#uJ8zHrN zrhYwV)2i>}<=7fpvx3eK_)nwTPXlra%&Nex*sra=n8G~S065L+8gS=GV@AcItwJtl z)-)xo+SX8x<2_0H7T-IAXQEo=KYUO3C@|170|WE?AfWCTr?N_~3eL+F@yj?m&k0Tx zKa$SyzZ~43hh=@Gh3WnL5~P0&V=UEL!P!3HV>0W*anSQc+->T4_hXt9?<{~0m58Vz z3*1tBkvaT#G+s-Gq&CwCBNB$PF|a&{s3tQ)AtDg0;4YDHHK-F9>v z+Xr9yG6qT5PKG(^m*>@qx1FmDS(Xie6DC$Gu}YC@$g2EZF=-JeCA;X{-QFXx2}NC| z7NyS51FPB+E3WC2Lw7rjkQ4~7!?B%*Lqdl357=c2MeNJrPgs*(8zG4=E3G+ZT(E-m41 zS@&dXgPa+Oz(S}k%1G#JwiF`+L(R@}U!{aP^_Nn>XxOA_n(nHcn0YL^;A|QWpW57l zE+}q71~uoL9?3{zKMW6R=r{69p|r>FUU2m8O3_ZWZE>s}Cbw#^!tk;Hh0#DtPYwQoX`F~B>Z2Z9ga-g)S z>%`Rf?x#EtL{xv>xs(@*7vDkOHQ~ICyi;K=G|>`N>}PvAeOTkmTeiDe4?8MyJN?-u zKeM}ARbE!1&&W4v+H_V!g`$%Ofk0$SbIduwsA8iWBX43FANe!XA*J~C%}7c4y~KOB zkxflj#A0|*`SaLQ)@lwyCyhi6?A-pS0WcEK!|qpv7XonmV_O{t)p!9tRT&i8M-+G< zT93T}TWAl#W+f`bSO+!&VI25uXa}DE4vzzEbIO&pqb^2xcF~s@tc=T*ws6TxfsA{X zPdTnn-DZERavfv__^VlRTzQX56I5WUh-_$n{fp)w^C>S~!&Gj>bJqeRXPmZvMo#KD z4%Q_1>1~1KgDv+kl)&#Z;m;{HV%&r zv-KL5zaseBIRQqwPQ$0B%IPb(3Ietz?I?Y=&kQzx+DAXOc?YzUnmjE4{Hj=&1EC}Y z*JTEr9aTp`lvX1S3}t6yKpe+%IG9ACjgx@W&4Vek+6gW#10|Dkmng_4CXGw%CTeSS zI46cwFRzBx_uv_n?}tLpcEia(iuIHi?XPg|X^$^-e`?n7*^7P>R(~BJ05(E*jTf8H z#y5jSW(6Q#zs_XaV2s%{z^2NZ5e3RkV zt;$MI+fBzk44UV3vsP=1h;KN2QnU(3+JaWltY&+=B4J?7pau}k8-N#x)(SEAy32IC zpQ@=NKDZD%G4=u-VbH~w#H2)qo|>)a(`QxoBsXxX6iE!_jkVf-?*V;;r!#9kMNj6o zw(sd=rHi*M9GHq=V>g;tPiq>8lxnu5xe|aV0-?!wubK*}!jdrkJB_EvsXyC1kuel< z7qPmp$DVFdPD*xjwzRS(ZY6Yb@&+ZYfFt8KE!0*7InrmFx6-&VZtpjTF8cch5LU=d zC~W>KJMjl=!Ob0}I7|TeS&+^w8GFeXY#p$klgt7mCe(U8Bl`M20Tv$<5GMkye{zo) z#p8@S?*-s-&0FgVN-ENGksCe0T3W>H>_b)^%xsgCQ`n?|hKq*EF;B^Gm&P&{3mG(u zJ_CS)5lcQd0%_?N-LE2EA$ni)3kXb)j|)daZ@=|JeBDh>2a}SL!hig*=6B(*4pN9I zDrT5y4LAfM@X5R3;gOk{54GOgXOa!6E#?WBUh0(#N;Qy2&_sHAhO?jFjIOS3!a;oG z-KvntSk9r_rIZr@K|R92$jD9xF${7kuQmU;Vnqmd^%OlmUARO}s={)VO6C8#N20&# z0}YK$9gvwW=ML$+nj{6#G^bMP$>{7EfrMpeKX>W1`YpwO<~ zwCHqK=dNp!Q2!Y3Fmq8^wY|G_;2(|eKXUu7jhLJcgM+O~DJBHW{QDb=n53kaEqfY; zt68glWl{3jUWcw2KLNS8%#dMMDzVaGg8HP7$hY}T3QNcGsyrkadI|m*Z3^f@o>XvJ zMgG?N=k$pS)b7HeZ#y}!{?Mt?;D$&(hUi{$njgqIOXC^a>myI-}t-jaE2XZO*4y=Sv*GX9mg<1le1_I65ai*pAJeA`#>K_Ojt^#( zLn}vn-t1d;j5!O8Edg%M$6f@lRQ~DlJo`f(^6&*FQk>X@dXBq=x%H=t|1G4{6{D5U z_jXS`R0s~-aKNSk;4W=0IXOmfga_<|t%39=nZAeGKJxA}U&Nr&&VNmjf1uh)Z-HEL zwkVLlyK2znW{`Ui1^jZI{z$T=ny4-d#PoF4%Dda$PVxFK8vKzXQl+Jp(e;e4)*|nr z_^-d#{bz(F=}H%HMgeS`VNIIZd0fF+Yp3^A^8ZE_`X^!ghb$Bu0C-Pio1YB;I_gwI zZLfc1)NB6GPig>-g*;R3LOihBd*;AW%BK6=f2Lkl&G*ErWlQn}qk))=g`L{3_k+{gfln>ZN5a$6$f;TzFxbigsHy14 zuc){lw;(RmRs*DE{XZl>Hc#1@lJxCGtUr|VlSC;(n2C(6xh%(iY8t>*qy8j`!(MVe zf3+ggJ_??^2*rzdbVX@ZiP?vR%2)OPJJ?xsqkubBJ!~Xr1WX4N0^ZmBEyg|!6`*&j zo_zIhf9)S}8;I)M(l~V>lISi7^O6(7+x&p0))P%`RKfFaws1KowALwNcIkY-bGBSc zKT+@6l2M02=L#C|AniRGD@%bfKGe^aXGyu&($fLxmfuG()h2VaFxTSidHwy7zn3BU z-sECqGYLZ=eD~zc0bmP0H|~6(kB>8Xlt3j1Fx`Ki=%;ka|F0^_fl&F5D~5?|=43V-Xu)R3$5R0+1>Lj( zpiN|@m6d9>(L-&(G1GtYH0odCXa1lVB8V#g9yw@r38aEfI>FR= zI84faw<~vX(M|lcMQ_zhu%P-%;O94?=#T4vg47E6M9QcUKLR%$dMhtR-L-fU5-}k; z2hZ#C69}usL{dM=!boU~`PPox_<|# z$R9^m{(r1Qe*q=d&&(YhW`L16%aKrEe~b~}%u^q8kpA=3zvU?y`{qRKdhZ}*xmrlc z$nLBHUWz%?DwsSDlP;e=v-L$EW@M6A52-U^zR_@>6^HfoV~fpHsNVoE3Q>!#p7HOG zk0MO**7V($JX!G8)>e%-?>*NoU?Tq?@eoV(z6T)_3AG>s>lW6$2J9($*v|`V+%5Dt z_f>rUD5bY2uS#iiy$WN|6EBVQ&y~kPwg&(ai{e4r0lBEpRP{flAKx-NDt1@Nr;lr0 zMQ4z2+)Q2miZgdoSaJ6EJt&Zij>5OZ3;-_CLGJJ+F(5ii6_(6cte(7kY;K_W*8gPSxgP_`>sj?H9nL?_APlXd z01S7s@9cO&13nFq`*4GTfI@AQA!W9U^1cNJU(4fb1mW2n-(yHbMsb$Bh2o(VD??Gx zKe~mOKHn~uw{hxh$hKw;7N~WCCB4d+cYtE{mI{kZ)y7n%5jXWShvQ5K7n0lRA`@t* zznu8&YO$*obp96RI_+<-6Zue*CcKhLk~zEXT`qCuan;z&)QF znPG2tQG@jIO2xm^UJ5h7Z>1}yQ5^oS%1P$|@ach@=(BSV#wh-=Lg7s(@V#?0w61gv z@6gX>6oiO@2tUpk*GdHetnQZ3@FcH&Pt584E%R zACtLX)SX3&lat-Z{&XP$#FaU!XBGr~>b^=|Cah#dr=TcIobtRoxa-)vQHbla>+H@%HCziQSHLyR}K@ z`DH#i?|zGYKoID))*qnay+<9+Fp8To?yR>CGrHk57hVOaX0ESysl81IR?B&< z_k*TtE^^>on%qDw3(vJQ2m_(>^_I^g+L0TMpWShc)yfTU%N87Qj!bcK(Oz>GRh6zU zGx}?Tm)$QTn5y}IiyPrYt>$iAcnlZtXBh7@do}vW94dA;E;rs8L~R;jJ|hHAQ)#$9 zRUG!9@_)UU3=!dY7uc*E%%GYkGXCio(LHRDdrLAP?ruvQbc^SfS{)%{!LcP+*}3nj z$y$(pDCHojd;e*cLHmzNgK<3R;Co<5S>8|cidCHJcgXHu8G9VX0? zvf&53yJ$7x_=;P<$Qc-VrP5T|=;JiT7QnhtLD^-_wl zVkt(ehSHW(oKS?&O8Iw3(ey}kHp!-Pzvi%%~;8;1vj(Ih|$==VG(zLnt?Lg+u?kbUX@r?X4Q{TG~oLDdiSBoDxrQ0p~R9sU} z;cqsIaU>6`U5@;mr5E5WUi`_k#TEF#_Oh=Bhld>2{!If!4w^MrI5^iHEx)0bIXa`-cr@K&5%yGB9P%c$5`{)XPwoz~XPIQvaRESqxjA-A*+|r8jxP%Qp zyi{KmW=d|VL4mM82gcX}?)Bq+420iE;Z`2uW0|Ha^Q;E0g}jMvag8 z8WyUL%iD4dKCeyGv#n?2AE>Du$xcy~$3s?Sl1AjXVV^cLNjQ6tSns1;sVb|Z!X;55 z^V>bu_uq4;%#Wp-!@axxbd#?o9oQ=+5lqrUtUe58$fpJz>il%~NLX?rq3IoDq(ozU zE1m~-^(}7JR?xId+hNl;ecLCF(u__s5C{3_B%h$Q`d}^$rLyreUr|)rZVQ=3+qXou zmfj<`7x%lpT;T4BB>-2J^JPyu187 zQmLM-{qr)C9-hBuH7hb zEdBDOdUnqPE7&#J~W8i6x3x2;JEHSyQsgS^C&)zi444Rd^+LP$*OU>hj17Y+=zkFH-O0rLUwE0c2TK!H@;kS0O`YvB_)sVq#*>!JrXEx}y08BfV&k z;xUs$VRm7lr0eQB6pE&)28ISXIXH~mGn#c_c=4J_wzZdI;$O~C@4>n(ZRbS;Z=g|W z_TI|Qqh}CKY7rXbE0f$82&OPg)Y@?ah$|j4led+7cU$}(98sumHf;sRyNiyj%?w}$ z6>^=vZY@blhENx51bds!1igF-%P9>fh=1p`ss%{KoMwfGZtpCWDRERj{5tLKaUOxNV}!fpKRhmqpF zK^vcwdm`djhDObHj?^}!vA*oiB7+u2a~%_IADHJpS_LXe9)A?!szR*e!pG>U^5LPP zlbt4bZTstQ3dWfVTAe>6W>D@YV=lgBSaPDzwtRR_Zfv=E1WxFRd6zMtHD}|(7g*3C zf%doCN}^VW`UeI3#9X{Q`uxAYmWkF}?1>#xe+gXFr}Q;5CEr)Dd~?3JMpQYVREbEp zcn?D+rvL;FcJGT}pH$ACo+C@5d}F)|p znT6QCS4oloK+dVJzKsQ~&0eveg>9b~wrxz^XvkTy;N?Ud1x{ahf+u8C4iwGGNj-0r zWs!%WOdo&oBx0I8e)r3bIEeN6&-C3$ae3t$5hXjIYvM0b+Ph95H{agU;+)LIib&(q zO3>P8WB{jbE1JdPw5$mpFa$Tv+oz^E`$^6d`ePzmG6)fkmwg;i8WMRwgsHl)-|l z&v$oUHZlJ^ZK06(dXbp{V?pN)jf~9XNkgxi&}@dBIj_pf$|+fj6e5~9#9eX~SC@I9 z;UTKJi{$h{ky>$_ilU|XdBOykV0>RN$2U=TSz(&)krE< z^VKGz0dFFxD_7YH=L+JbI&U_;6Ou#h=gCQreIqK*d`z{mMPw5A@-4SS$~|JYv)ns# zKOBF6Mz^Q;bcgoJ0Zu3U+SKc(l=cNcygE6YC#+KZMk+~IZu@P;ydl%z*85bw83ls;S|=GYx#dFGhjF_GaWuu1en91nJp1;x~c<_Q;4ccU=KVILNbG47V zc~1MRE>v4e=6W2+s>lj*owuvEM5W5P8jBUx~yc7MFXN`#rRRdgLRSKHRqt0l^ zgZ5Cd%^vHsP}0081!Vq-%y7N2X)v|`ql#7;q#@qil-ENxxWBg(5G+VP=5Wf^k~4p{Fo1D8cD!0kJh_# z6YYrTDit0@ifeW^pVpr}zfT%34v)HRwM5iI{L<6)egYqoDFeOBh1_lq`k)AiCb=1- z-yzntr3K^=&k@=r_4w+RZZ&bZ_*5o3V_*3rV+HBnNsjT49efn8RxK58D*bp(9Dfih zmGG$Y_et&w<6*|ejZ8g|9OcD9kw%W`9K_{};^Xeb;}_-WX|91w*D$Gtltzu=f7_YQS`TcE1{`V*5c}i-q?z#q+>am#=7ezJ~ z#n2A8e@sE5oIYo_w9Znm;b^wP2gx<5>&6u@qYsVaw>)pHjTbe#Fb3RmSA^}K*Kg-8 z(HX?=f5clG3VtNLk@S+CUi89xDh26PJ6Ca-?3T29Jt_8>!Z`1dXT*c~L?=z$8=}ax zD4(yp9UAXyJzW)^6XmPSRV4YlxlWjAl)dO+awdeS%h zO*_di0jD5lfpr?%JUUe;@i+pz(R?q<7aulsV^0@uJDNNEEF&bR_>oS-{#`bK#B-S9 zr@2?A`g>j<6#()BQaf+E=a!B$%H@_Np!f@1ifo6&A=AeJNiZ|p^y%FAc29EUmi>{#Er8jtZXAC&VRQ?*yPu#PSrwz=%qG z^-(NrYFqf!u{pQ+ZVQL*J%J7;P2c!Tu+w!RBnx-1(Vane!(?bcF%h^9WE9zhH?I~f zLgl46yKyeZ=!|swwJJJk8+htP==1;{O7g6BJC78ES>a2$?cF7TB$|5~|QUaQG$^)N*2E@id};oh_o3Eo!$bCC#nYbxq|u_q7b2 zEsg7p>tr1`0-V%-;q2(X2l+P#N8b!Zo23WFAxCM&<^}1-aZ=!3LpyEpW>0|aT-Dh} zvhr(b$B$&(+vOooDvk}Fak3N$vSbu;4~`z5SuiPFr<+K!nKrx72iAM;2fV)hzW$oz z_pKZJM14ZnPlWg~)8UK$6nAV{`7-VCCXH#WM*R1Da}d%a43yjGvF(IccpDM3nWD)) z&H@H-y7;1%0{z$BUgC9-MfTmONeb4zoO z;v?)%hWP!Y+im9ZE5Xxkb-CGQMI29vMn&L0gxSexCVX)5i-vDz@z%EUud#3;JEhO?s5rFgr&e>VDfBJWawbwHe4E&okc zCda7E+|RM_-TDvyRisT99l>uUwwL#1p2CwQkV0;q7Y*(0)pJPS6p8#d0hX7x!AV)5 zx!3{{P+x4w^oTFVY8T?|8ea0KRbrQ7Rcc>>vih;H;MB%>Hw=;t(4zhBNB$i<_5 zZHBz&yiWU3N2ZcB%z7ToqpfJxy5GIHh6>w_WEMjoCU?8CTuz5GHn!UYvwDmm=r4Nt z5$k&nIa(y7gW=dd$y(U-j@^OF%K6 zsn`42o*1i^it`E{`T$2pd6vuqkg%T;?0|5Iuz}9r{>gTP(5mBN>KnK3zN1UU#`^)M zv3Ud%0+tCbAKGN(20Q7*uj`*xkMQ9Rrt)zNk7^PIn;!pCNj>;2fC$gZ^CLo zm2MBNG*Nx6x=Gu9RJ>tU=POMfFV6JDG>7?~?rD)lWH)vA-PoBCyYOI7 z#oN-2>^MgP&hqH()Xr>L0Y}L}{lVL+?`=0^ zyIyRu>b3f_h;r>T^q8u+G8YBFQKwzlW}lF?kuE@S8gy7i#NUpKY3z#tXd=>#w&|5K zHs#0XEr3ZN6*fKK;pUTt+e%D{w0vj@Lp%V;SD-Im596FW6Y4n~1mMlgai1mIuW|&D z1KHv@o6`-W7Jc4d6#0-eY)y%L-Fy?e6l>*p`HxK3V;eKA&E|YA?Rj09pYlRp5$c~+ zP~Ksfe<8Lcu5Y=-*0FHAw#vVmfHvJ}IzQcw`j zB+v|0YGSy8Y#FkppDaE0`d1!bXBV_BE)HHn(%Q$HkHrn&K5#3p3}jQz-3}B=oeA2~zBiwQ{jM+9>|1V0D39SF^4gGJd;E ztC9w|Aq|P5!Bfd;d3~`q8pb{q&f32h&bQKj9c%ftI2pYNz|kwatIY^%OcII?LiM!y zbJ^C)@5(&m1GkN&MVwIfJmkbGCE1-qNs7Xzp^OswkACm=iU{hGMUi8{t4`ew{adMq z3^p^Y^xE!JbG_#5`u%7vOV*(^|3=dtU@y&@+BE^0CJUQ$m;!|rsT5CYPC`$k=8HR# zX_1KeygAP)7R`sdohefzKcohs`mZ;8ySlLL3^JKILvB;2?CDz#JNhUs2->j%-RN@` zk!~8`Iyd9N43ot-F`CFef|@b&wb)4K`>#lT4raQ%wUZ;Exi>pRkV40p(O2FhD`JJ_ zY~Bt)^XzKqf z04irpgN2|p0{-KB44oabZgfzUdj3(mQ*b38$dW0~*2QIbm6i?-8h*!f4O2>_sCRei zEQN9-jZZd>_4EVbQ`&yf&w5ICEtl)-q&~#D4XLQAZlM`jyXx1%y?ne8u~ZZ?C|GSH zUNz#myymuhfM(lhmn{476#R!I(hHE3oZDGS#`VZo-~0mS!Evog6G}^G6WfzDNaaU( z1qRLq6QNv~5iOXltM-ZL5Jb(8m5<6P3F6+aCYOy|d`q-u*r4t;AtA-^jNo~oKMl{?{(8F%O(ck7@>f;kW~we3aT6!CYsJ% z_<3gf3&yH(JQC^Kw544g?@BcH&1>4!zjX&b>q&V=N27Ash}B6U{ZjniAkcPlKGGSjfHT-Bb&CrS+|Ohj3#rj7PQ6;*YPX6ZhN z6&6ZnCC$9Kx=a}Io4qtX2!b!}?&${%f_#8Vma?izNt@KjOj(UoliTyKe4Qq=LE%Yb za@<9sYPIsoNW-o=y5Ex+yu~eVRqb{s*OF}l6s&GM+~w~=UpP-(h6~jv$|%q>E;{?R z5H@X0eMi#oA>LHJSt6=WFcPYgDGL#O8AxKztaWBFrIE=eHTIg9*L&YLOwpEaTayYq zG2RjTaT;S1K>emYB4wF;W0a_dqYfq9FkU~SKmeMh&k@k|%!rro{g%SiOSzxqGDcK7 zNMjhLsDmbDIQ=G!?FuR{DyY&@mdMoUgi)WCcMUPl6M4S}SLNN}r#d_oWci`NfHJns z(dKf%3xKTAL^8^a^-X$Fa!GpoGxR`p%aGB9C(!fznG}WTfXF@r5n!e2`F2k{Qq3tTO0GK=E z{LL}V1I=oA-Myo2IRM}g;Po5u5UddPE``20Y7Z1943iQQT6S6EcbE@m1f;86 z2#JuppoGBFWB=}V-P*st!J=Q*(36uRF5e&6c`=zPWw|r^)XI*wpzWk9R;BX$97A@^ zcG|*RBqC1LkWd%Pxep330)?aZ&lxKwJ*v1bCeHbN5;g05(bMUJzD-8$H-TtOCbrZx zv@t&Iym^suXq6!UlSRGbC_j@%s8==@g)3#->JscTU-+&2G+OpB=bKIp#t#~7V47Up zDzInhp82n+ye1@Q|79Du#(2D+@3lEbXQ>&qc!ONCmz*rWPQ3lR zB%ZZ5Ah$bUu^a6soSAm4p4+hU8sR${yEBs|X(y?QxqqV+Kr?YC42#IZDXpG)dHXQT z>x{d{7l;U9e-u@_iB~_Z?vM7!DIDUAOqi^HRdxV{kWq#hIDtx_a6>dvNSxveY-z-*bQK_(61|-SQ^~Z=<-L4QQe}5^UN-_ z|M#Ofa02+7y9ky&%Ccl-<#xB0bVJ@a5m-~fP(NIH3eP97*EC^?<@MVAkO(~XYuaZ; zPT!DircU9AG4=8LBRyOb6BJ05%|XF7&$Y4Si%nJU)lK@t=6>l>58340Yi~)~>(Ct# zbjN;*8(DvWl~~kAz!e!2PjO$#2*j8qzNsxs@x+(qRne9uypDR#{$0S)h4RLP@vXtE zryByKb74UVrzw1O6ET3c44zjPD<*0DZaFhh@;D;<`DlLf(4>` zGz3#O%E`yVbAMtzF(?Cl-(-Hgsjjiy#>beS=94iU?Hxf@!lR#E$#c`lC?S7y^Nx}H z=wk6Dt&(TAkl#%tA8xm9X+&*4Y3Ef#B}V#QzCI;J_SxjzYe6Ze1I^Yv*XZ#Q^XxFU z`_#|*G3KV6j;L&KYgh3MXt@)&IrzNkv@>O3Zwz75!~uqA{r=66p?)SLEP6i8Ke4iM znC6Oi{A)R>c3X0ip;l$%$&%DKf)-EQuw^VfQNF_-11Dv-Y46E_o-;r~YG}Or=uIL+ zBNi<6P6FZNdg(LwGzoV_WteMxz~#~#>0u++IDdTI!ZCj4We$^nwG`TYrk-nDXv4^F z&AmJy#N@4|vH#Rsu6(m}56#K9+7<_!p|FIJ)+w1QI@4>)h%`=%kc;I>Kh{i0Au2cU zef*{KCacLvxgy2qud{ATCain%3(>J&F;wb}tB3h~tJXtXZZh+DV_}D(xu5M4qzw-- zN0SsybkXIkeeyG%`cBn*0mprBE@}2gEAPlhip5cjQZV($2r+#tx(%$*tJ`fRM?Bsf z=}wQ&QLT>B)#HB-I+o?PkrMjixvgBE^ZD|Y(2*{idOe!xH%pAzxr7{^0_V=t6HAOw z)RVpF^oZK3ueq5dh+Um&gBPZ46J%nO>*eNpJWVFkqku}q@uD3mGOha9kv;0R{yv!c(dF_DG(M-X zPoIeC;?j9ydRHAEN-`K{iC{E9Gxhmr(`Z&pt<0i>U1FBi_js(Q2W%q*h8^y(93I3) z1KwEnO29Q*_jfWE-P|jeV1PK0#Q`8Wdkra)u_&Q7ImVgD#f@5UL1mXH&(9Oo{SzNC zG|J+Xb+pzwDWXw7<9}y@fUV%~O0p!5iZU`= za8K*0ds(R8v*Ylqx}|25(^qmPWbX%CSu-0`hkrtB^(VPT3{iI&7fo5uFfOPnGddQA zZ?f(7GH*@#aWX*nHT(Wbr9w4mR2<93zsF!yz4uFVGP?^rY$}Q19k4REL0;8aZp)7J z*ji-2wkuJ8%>zFguH=-8q=jth8Eu7ucM+ zVR`!b^Y{7+gH%mI8{yxM<~&Bb#!1ngYXt~mr`BMoSPS-5uzMPN+eLFv!zO##qlv9gXgKldere-5Lk)qw+qWj^2uau2+F%`0; zq=Y>|2)^_&M|$tBu?kgLvwldg>Br}{!Z)OwIL_ftl~R~tW{F|exXv!XkVUw3bMOgj zyBvxPx7k?C-|e(Lw>X47_xiQO!PxEF z5dX+ z-wH0+rPsB=Kr&QkTH~P`6);_P7^0~7bI@<@RpQ+hJ zbz#EBTAu$4nJY69n%9|8G!A5@{>ZZ!f^#pv}_SN07YoG`3ds0{h%8w#3zh4fm1*+b)T z{fc-GZfU`w|-#W7?&X+%tOVI4aWXLr87chMTk|#(PJBiW$fB zBvF>DG&eqJE`PGo<1d(2VpckG8(ff2%v83Um-sa@t+SBO7bz}Rts(xFpENTjnFLHt zrfE?VbQ|x8uzJxx_6HscbnT2g71Dz@Znp4!664l*p z6dv<*9t%HDBzyacedX;8xcS=2NPeV!CLdHM>DM{$2vEEjV?TA%GVWke8mc_pspx{S zZ=UG#HatX~7452Q&~V+fShVkv45Sxu;JId(I!^RDcFQAkzknv9ZXhc(=AkfE91)n? zj(MaYAD+1jPat5MePL=yF}~u^*84^0Jf`}=j(VhdEBOlI4;D+7D++bt_1%%D#|1l~fsZ(t*i3^^ zvmd9J`h7zF`gf4LDQISf2ds>s6IMd8=<r zncAU=K~KhaGSY0h{{3#O#k552x$KMTr+z@UGdN+rYz2k<48d$Mh)929O5_w)P#q#5 zS3fxV*(n@Gj@bCo|B6dU_ln6I#{<~@eUVq*PR>abaDQQ9C9{@Hy&^+Ab4 zhlO=MmM=b$agxdw>`X$T7xenv8atH2D|SK(E5?Ura7#C0zc>1Hd~$N}ZVjDsd^O+p z!Jt_9`Oi@GHG3l3$S1OuPvw8~?#0&fh(Lwl&UbmQ(0cPBV&dyJ4m^bcqQCW|Y>V`y zqE{5JJ{>QRm(rbZZBQ-g%ENFbpV*5O%77~4Vm-TMX%wkremE@yV4o$d+eg2YE{^4~>NX5bNhxnrq6(rbYuYo$!@Zx34 zheLOkqu{HZa&ilco`(tYr6|gThC%0c_1tdM(Q>Q8J*BWJz%lp%z4D)RTG}o})6}X_ zZa8vf$~$G9e~7WW44jwY;bFr5ZkoTbvvLu$@?MQB#eTOr?IK-pmNFY3m!Q;^Yq0y% zuE+6K6PCE)H%2tqb}zN|Ld}c&f96~{(e~IC5eQ2`wrGMYe<-oEHhZg1Xj)eB2m<4x zeJ1lOJ#_eSazZ>NA)S@Idy$Q`KZyJSlO8iqv7~cqd0m3ul!m%>%8<80Jdp#cxmk1z zl)5;X*uzw{D-$#mQ86rNYYEz@y-!bzKlOPvY6er~W@4k*9rfxF8^39EbP9)}8DjwN z)|q*{l=oqxwt`bJG^*UM(+XjkzkCg$eW|qCsZSYyXE-u8Z0zu#zG6;|jAWx8E6j6} z?n-D7*4gQqCr@G&-0cp}QG~RrM;wjDfg33^|A6#+`&1?DfO4_l+RaaA_ysO;eaHB} zvuu|8X_73>074b%hpb}2QVB$%@8Ufh3x%b1?U-1@@UIp6sQ=V3x#vkuh2fV`zMa+z zPY|}b;>`2d(c_*2UKyS8ax%3*5`+>33uX7B3UrA>$7rD~Pl~Rfv(zu9{@*NsVE(=@ z^S4MQ;CtJivUur8qI**jXocPZdzJd`&9=B!AsZN_X8 z7BMS$>P3Vt)QKEe_&XPqN@t$3`R*~X9kW1(-edWMpoTXndcpnZ`wm#EPm^0a4VC#un0_!J9R%}{W!oEsi2%@EA zG}CLo&A_fO+47hzW^=Nc=_u;C=5RZyF7bSbqmhNnZFHk&G=m83upJ?2pOWd03y% z9QV3RefXEsiB$;s$6Sm}X!i_WJmK;G{UMGogEzg$B zkT=q@Eb6k)i!G$hQqijNfAnJZJv>k$hHY@xt?q={>RpC#a_LPKu*^fv`8lN|6zW-+TlY%+u9huN2poqUl4kN1-*Q+B3*j$9oSDfwb6G)k|zE%>^T`uIvN2H3&CjEM}>Rk#~_#m@W5dP3|WlXvD4IRrGn-tEpf z;(FWSpEVQ577qEYE+X#BdG%cIhOa9agF0GDXH?#h+c*YoB`mjj;an7W=D7JX3==&} z)C%*GW^6uQwl_kqao<-&=ThGKGY;L$-|TR1^B<|Ah68bq~idB=8w#&SN`-yx4j#vC> z!$95F71WWtE*S_#$wQSPJC-)+$Pw;@+25!8y$rW;u6 zx^9RCF=fMfyftz&uPF@kAKw(shBbG$eK;<xrs*|lM_g$Cih(bB`=|37EY9}XYN!voMWzm1Yfu%oyE*#0*)b%L)oG?U zmc5ykr^S-Ptaj!nHyblJK91Vp6AJ6R-P$ji$>ibWh^^51VOm?{-#>AuODJvm7s16u zTF?{s0%Xa+;z|h9_AH!$>Piu7J76BZp@{nN+;=9az$qtg9aUKzlGtERaCdDSe}frU zRY?BWdM-?UpFjTeg=3;Lea)uxVjMW}_c%55oD+4TQr)Nt9{81TjYnF{oj)>*NS0Wi zn_b>~N~DdktNZ^FHtZe$mk$Uud;dSRbR~He#8NMD=I}iYj99~!G zb>J4toVdhWyXW2EIb_I;ANG-!f)G{dzI49cXgXFll_v1w*Ow}%Py@b<%F_$GBQ>Xj z*^NtM5rD68&-`>Ad6(Ucw~Y$q<3(L+`L3l{APBzrX2y|Dn-9>PfdTY*c!sUerCF+FUq**DA-|oCufPyeM0r% zOBXSnUPtH0((5Jtej0mC1i->&?kUrv)NuU)@QZ4+uLBs)Wz^u|f@F7NJ>t)zv|-I^o}=T4(Q`X$^13WMX2qqm z=05Ba9tB8QAE6cAC=^$uz|G9dQX6g*8ZMjN|8aL2^57aaar9x*Qu|F#*PHrm&2(H% z3hC{_ZXXX_G6EGH4{QA1XYZw=@{jha4NJcrfAtaZdIkK_|GXunk>P>4we_XO!GHys zxp8yZot2b{JD|o?eMPsQnRoa`zxqZm0+8CiGT8&U^Z!w~M7j_%U*Ag~qyzcxO9y2_ zU-mELv`+-n#2(kf2H)q0k&aP344=yv9;1KO1yw)`6jD*ksBViN^wyKB_Y<$U{fn`c zR0ix@&TKmFL{`o`IA^i`{b~AEI`-#&X*FxOYs7U^thj)Y)klMS)_{P!bJCjS^>p!m z3r(BbXM)I3H~T%9YAqb*K)hsh0GmVUt_OQt71OBf?{-1@Hu-DXqG{Q2;N zIVwymt*rF-R%?lHgMFET0A-*Hk#Ur1UY zl3}xfX@m+|b|N#VP{%4dNa>4+=Pj`-EX8xmSJ2%SBLBVaG@i!V;%JjVf{f zHUH+$<$>@YjfcD3p1e^xssP`l;kK7Xn)?6Jk=MDx`KNZcwRiUzJkkGmt?;WIChXD) zdF1@dX(6Jou%X;}>Hd61H@PbKV#`%D+NvH5va^$Vh(b{oxXxY_@4q~#A*py#8su)( z-!Pm8+`S;vzicBdK0q|C(;)mQ8 z;%W^U;@(q1onJ^T%0{6d4-4^+?Yv2`9~Qo0+qYF6`fZo?%gzJ;F5g381-wtzy!iH8 zXqmsu`+vG!gRORQe_jg24-F!(mO*4zXmeYCyFn+RnbnI?Q%V<&rML(a6-IzfhA~5X}#K5sdk|XW4dRB`k+` zkoIVwD6q)FC#k}i(UEXHb+bNGrN#GXS6vLPl5l{3tc-*6K)XYt{a9Mm(@r#ZW2s%s9_ISFq0RRab*;sNC90rm^G^ zkP^fJM|7yNKG+k$`Xg8tsP3hR0PvK8r@}>Gfqv*Ky6~l8bCL^-4roDun%ck;ucw+C z&eFHsD0)#c_U0~**dhIE)qq!!XK_vpC^6Ds604ru=SI*AaxzQ^lHV)Dp$n9T8=U}D zCF|8wMYyxnG8e~rC)N_SYZpMt$e!dE>2mAKneQg|w?Vz9ey-5a_iB#)c}lB{$Er7P z(mvzn3K}APrJ$Uk%5h>~64M^+)>rFK6~@+R$sXeoDaui*F)ft7Ca`lGku+`|5A4v0 zmV*-x2P4?n%m(Ksds0=1GzM5KWT&!OvmGZd@e{dNRcs@)xcEC5tvBpRdq#U(@o=>y zN?9PiF=%-zcgQY&9c!$##XI3z_o%|~J+cPs{0Fl+7YP04brGSB!h6*Z4Ph29A6%U7 z0ZBQkv88-S*qAaO0S!Kxr}Rjue|anRNKFaz!FI4$<*fpn`@67;o2*()a86dfYkw5x z`S@aTDfS88Uf5-o)3iaF*zA}y6)TY`(d<3Elt!t@vA_r)H9^N{E@Q2jZ=hnGp*pq) zh*~xTO!A>f>u;*T-#92>)D1tdO=ke#-0-*M93+pDurp@AS0mQ0QD;?>+rn-8T9xoule zUH|)&$;7y05x!rpvt_*KoHY>q+8~SgUB`_)pVvK7OO`6qh~qYKU$SP%rT%_horI@j z%YoU}gW~F{@_9j}M%RU%iaMF3Z>n{K5 zI=LR(Sbw3aYDEclzq}UU*oM(PqgCE^ZA?#ucuhK7%tX7_TpXBO2 zwp6|=pnSQnI3Rx0!2L(y3zodMGlz0zH>=iH?B3#9Ck_P1&Duq0MA9nqBGO>N-0#sncJ1Ux3DGPGb9K)i@E^h1kpD=Tw7D;vTF=B42$! zyQ)ws289DPOW8OMLv#ft_fLvZ;x*DZZm(EWoY*8=ISdhx=BF6I4*Zr55#t&EFt3k^i zyjn?V@})MUJuA4Q*iD526J`ywtudG*OpPF@z-3|#Jz!M&_48uZtdd0I3ee#F%L87rZh1-*;ab4zZt`*CWL*qG|LB`^N{7K&8VB3)FYWa>62QzU0%DN`v zBk^!k?^z(<_KO!XfNg@1c%OaI_z98jtIlTzu8RDAPw%%jwR4l3#~dw5Nh-}nAD@|f z(C2;p*m#|wrFMB1_F(mplFT;A^#d3Wj(VmJUBt3TFWJCsO-sInH=Q8PihmB>=WH~^ zW3D*Ojv>ki=)?!?gjNE*u8?zz32MC_s|%XGzg)Ipn*-i=Jq{f>Mc1clbSA}Q(+;IR zpdu3UcaAfWT!K3f9aHUD~!Kw)r4r>Go>@5WT z&Q`~R0MSQ3=5iTqRB+TPwu|2jx6;2U_lakSJgwtc5r8b?)8%e@zElKe7JBZgKT6?K zJUD2htcui-EsS82XPtxOxlzZ@LC{L%6*{F3RTJddy_vDhkT#+caCf%xW_j1||Xq=0A`FP=MH} zy1GAk3-LV|(m{9hR;8w2XXr5Wc)#cw66S|xrQQ|tQkj*>&@*f!1g)dp?p`zOVEMZB zVRK>f4m{=$-{kq|wl{p8fCBO-i07MpO&fNQ-@ZxkvX%~D%WAtflQdb6my5e#Tef;| zwO@ukCs|$>Yd8pARuf$9DY@Il&xbN4Jmt@nu5)TSTEEL>l5Xqc`aiBkAK=lUO*0$N z(!Qzo0;N`)JN*>y&0@8ivaY%xzTTMfDi>_$Rx)_4Mo)FzMy_y^mP&E-9VlkfH5LB~ zXwIc0f3=F!rY7RmgI+!!qnH3I-!4)K_Xd81{wuy;DOU6pYNw+p-{bhh1QEw{`M5$E zEYAHLD>t zeN^;(V33=1a?`<+Gd0gm=Q0@Y?+o)3uT<*;$1=va2Ka(?4?`RyLXHBYmX~*bXvKL^ zm-w~k6Y^Z)J;SQkJItNf($d0yQl}#Q-<4QiQ!{plM1}d9tWIYEDtA0GhqJuc-T$#+ z0z2<|D%?1bvnye6+k+_@OAOLS#BT6q%kENuLe0~v3e<1q_$|t+fwBYoewu%2hJlQT zfA>A;yW`&`BBpXwKMeU1LVCis)J%VTjiO)cK%$zzw{-s_#O`FR<@>L|n#{BIM_b$# z=@&kv4zFDFH>DI^STzUh_RXYR0wsNB1g}dYOB^KZS0K09ZQ0yVup&poVZg4KaZ-e> zC}RPY2Ny$uH-Y=<#PW8Ovt_vVfRgZC z0@oYiXUks4+h;GU2#g0IqnEG(P-NO6o^*0vIC+&3ngV*lxHUsp%Jn7b*JDHbhG16R z%gvMt|A9=qI+_9&+Zm}R11q6t$xLduVjdanUPG_w3m4B44BZ&ct^@G^T9us8#qBUO z^HI#VWlSjX!=$K|x?lpB8tL!Zvx%dl0c8@Qcx$D$Lf*a84N~h$058rxJ-s22IU(YL zvyLCP>ng?fT^<)53wnnniy94xS~RQ_vBt<7B9dbt@fXBWtllp+$oZfzlPonBnWn{q zUy3ka_pvzU2nw@Cn44G-tyyRPNw1)s!@SO$ATZ{W-mRvtD7W%Qfm(V zs$dIiV@OrF^1@SRYm?lot)DkG0!}F^;^1WK_?D}iL~~hn2`Cr$sdUiyUkmJa9_{6e z1qi2rN6&9-d2q>NlZap*XwuEf={WVLmbqMv4^6|fteqtL+Yp8gFOJQrX#;QG6 z-i04fpW2_yneF{>YF<)hkJYu7Ei4!EP__W*4&xRh4IDHx-DLNgQHx{=`$g0znC}x&?d%Z64<6C`pfI97$Lo;Fz^rlbmeU^?;-Fx{|pw(-e;0PtU zyYpqXHh}Gr+#DSgypOA|yBR2a=8ZwtbD>8=b}eVZ$NT>chze4b-WKV@UGEYs%-YAc z3yWox?zs%QyyPWJ)Eh3Q}IGgwCmMxp)L`g9wO^7DDyZhakmKKwFX&Uh;n zgPfU=>IUIQ<7Grq7u}Rj5AOKO`*XDgrSk$ARi>PP-k$fKJ&JQ)ddY(o5fNA@IzD)n zQQ(m@1xQbIkP4Jv1Zqf8q%c6LZ~mep9p6^E)U#0~J-p^O2$!q5YgO#}&23F%?seJg z&hj_t$KM|n(P#__pG??rGthQtbY~|(bzNACB~Mvuh~w=TD*SN8i@{oGg5mkFhxHyN zB<$+_{dFday%wO^bvK8>i_baYIv|>=OI~45b!|prt6wbq2xs<9$um4X2 zRrTcy;n1TWPsk1jcSem6`gh7P+>6m%L&pzSA2{RYKPN0aqd}^dMO|2#oBBeA)MKXq zoPRb8N2GYz?CxcSG(6T4pqlwf&k5zRz>Wv>%HOPV8tzhNszO`-HwcC@8$8P+2}ReE z`+Xe8p(`H4;aX^^m$Fv44hy@_47|BMl3npGlbXLF=>@SEuesVjGQVB&u}V3L9P58Am*%nTr__bXt&aL_XzHZZ^}SzD z4Cna>{U6yV_UmfvfRL}9^R;J2TknIF2Cy}ikL)W+K4)LBK(F`)U;AI(!CqhDx7BL% zPK8r{D{T5S!!BD@xPG-RWseZuGIi8RPxX|8J#NQFBm>l{+!DFrZDs}0(SvCThFof7 z!m`B}+gJ1;Kis+G*T!uv><-G54VKsvhtZE7lj*%l$P25weBZ|dWu))dUZX3LS@_Cq zfA@f=CBP3q(V<+HX7$#tD!EP-VV|; zsZ>A3J>sfoDpt!9U}mUxg+nOK{}tZB*w%=c_<)#XK|um9fvXZ^%84%RwC72)H;R-d z*keFN=9#J&_|x$rHAFoRw6Urk6Sk+Zb4GWZ={E6)l#bF}wu!jn%gTe)Ag=Bm%m^?l z2{1KVOFZR<3YH7Z`Np^EpuNOzWB>wcm6aro(zZn9J5S=ruCv{l>X_IQrHZ~O`DY0B zOqqEI%k3urO+5?wB(s&O+7_fNzI>@EagRASDc(g|#%xrK;91}xQvxt0ZpEDZ3CLGB zX?!HdxxP{cNCje+VRix;AY-M)Aot*RTg7>`^dm#-{ynJdi7fCUbZM+T8ai63Q1|cF z=gc-{{97S4FMw@ZOr&xz%v?Nr>c8<243C+fiyqDq$mX@Z(67!AsW-p+>*ZW8VH=pyO9J}3pAboTWP9cAh& zc%88`e}(NvVIP+Sy(D63Q-CBR)zMRk;CrO5Mpu60spj>_Z{GVW0zUX}1+9}uBYA~7 zT%YKLBVrF9&cf~ms=-OTa4~l_DpDiuSAEV!q)uTW)eH)1AM~(PvyFUwlJ?z>CB9J7 z1Qo=e0TmQLxOjgH#vU-lS=8XN?SE6GwrYF+9!iK}m6n`Rb@*h5(8w=y%RhryHzSWr z;H$3;&ftvCq{4Pb=@^%EUR80Ujt=em;f!u6LgfLgfi)RP`?8l_KXXv(MOcy6H~%EH z9FowlwIC>y=qYrO^=7Q+K8M(l0>nNbeV<3GSdv-u9C5g9iugYB2V4XmZBZ~b*<@T7 z`soGI(i5Bz#AkYvWMn2!{zWul;qPCXwz9(B!WY(11PFdZCTUifI%d|_b_$-*L(cxS z;kWP^9j5mJytl;`7ESKk6evkewYP3>3RINh&)&O|-{fK0R zCo5;dd)KK)N0lQ|aqW@S+7s@O(P3$Bh>@A${tKCol2EcNm~WhnJiyVz%V)S4x}R$m z8bKzpc{KaoY(9FL+=6y)ahT}&8--8n-p>|o3O|&^1F@rHW|g}BD9zJIAsw~VvkIV0 zMX%*JGfN^l;E!DpcIOtKEkeYLpCH^BKhIAZ&gwkqSID=*^c9?d` zR|YYsr`P;xp?Zd;x9~@-sW`*<)#x_9`F}#*IC|y5xSQ{2bEH1+jhact+v5^mhr%Ag5tfqn|~! zYq0ag%zvY`C8Xv z>Wh_f4tPpX(P`|xsw${9cG(h=Dhi7M$Q?!)mMlVM9Fa1pR-Zud)|0K2G9MVe<(n~sH?Y&&@;GOYX zd0S|OW0J{v@+57%BSDqY!hG5XdrrwoscTA2n&zJlv_OOk#sxP$vN9)r67o{1>tZ#O zW#2_?@zU;K(QWoesLF!utg*QW*T4csk#mXu z$pEszlLnm?z?0_heRyVG5ZR0plbXKMgr~(QJPH}^=P-_)q5Oeq#Pf?d%iIA z?BbiSEwdE64DJk^Vx{5!JR1uOi&~W1am2-zR~Y&ho1}qhvv5%c{Qcv6gpeE#(*sHm<91Z@<1z&IK2?Xbj?V;brp?_`fm8C@YjF3yCgshmGu%PA!pass5)@4*ECU4^= z#{GtN{lt7ldT!|tcE7hE@2!DF@nJL8X(klYwCimNK#<*i&48NOcTKAyeru2-@xQEo z5AZ03%T<_mMO`Nz7P^O>G7;N0jBfaJtiwrnt2piIr|@_gYxXg+w3WZ~B-=QOj(^bY*$ z7;Pc7+8-UxE01kgJdEm=KP~%k{mJ`C`TO2moT&3IfI&AcIm#35VLK+v5Q#|KPi_%YkGgpJQP=nQK+V_lyg$$}YFb-Q(nMYnwPRA+og+rH~}k^i?py zwS9yy1$}yRRoP23br!FtMyKumD+xx!!=F(lwT5%Qa$IW@OxJE=)26`oFG98Sai)xruW9Z9^XJl%S? z5ey6argm3;wPsy3Nr$!R2nDpIqY-@{?G6|+D3*vq6NveOQ(h&I(y9}d%HpK&XF^8^ z?!U$Zt>`YBL?~6<@Kv8#yqW@Q&!rz|b92Y{;E&lRSlK4$AsrRb?8Hr7QJ`}|(ImWWG%B5jXk!wQ*5_HYm%u@~fhPAecQ+DyMX;bgs#>C-sYQqF){O-jC z4*giks@q`rG0e*d_Fee}hL5DxCUu-i{rB>)X!JfI^;YK1Fsx&;4j1tBVH;k3cRwl+ z(U{o~wCeu+z1E+w)I_j2&N^jE<^T`eIgh+t!CSVd;+pq8@A&G_dQeX)H+-a&t7KGx z-(<10YSVpqmMQPi&bu7c!FxVSHbl|*E3(3*oqm*G8}?R6qDSu6{xJ;O`1hf|=t2Bb zK>J$6o@IyVL`4xD2LP_o>?Bra`6%5eLE0~GzglpXyDRs^;p_(M?!^l>Z%(3FAv04{ z*Pqm6J@XINIJB7EX!A)=cjerTu%1@OkZ35=zH!{RL%H6%W7AQ&Nrcw?*gv+Wx4?## zTk_d-F3%Ug1KMrAvbnzQu}RpM>R9DLUNU5T6ujEcO-%tOEz_rKqxCg&NRTkHSHoMV zdYDPI*FmTC|BcGk6MzSL$H(Q~?h0O;`@1We8o_rLbF^lOi63WM-k|=otsLF*Q*cV` zd{7ZiUgFBvAWkElR~i$SmCI{DPpxvI?$Kd*Z|jdNVb{Kavsl1jxC3|cW|DT2XTJYr z2qu)lQ51uU>lVF|$&xF0N(6fOkoY)WVVGu!Bat3T&@qc*m(p~J`!_y=q{jOK|X!Q_2Af!Dc%Z6OA|PHOOZ?G6>8$tI=FSZ z&G?V#1NND988Y+g|vL%Z8Iq)!;+rDC(b*x^++Ti$-r3bn7;)h zj=S{j~CR89J)!Dh{k1Eq^ z7UHx-TiBAfhCLmb8r`_=?@xsZS#D7iGVv_<%9Rzw)#?<{Zon35JNIk4#RKxNcux3Z zXI}p8JgOg@76oEqA4*f}C-pRUv)#DX=&jPOeqXSKh3yML?NzTC_n18EwCbZ4YWE;| z*ISFACHi>4<-kPB>+>@@p&XkHiVxytJV{=^+Ay#3RjiNj)t3(W?c(Hdzn2Jzuv0rb zgbI}10A0k6Z(U=DG0}jy;3cclBx=uwk|=B5LNHi<{&gWvKHYW;)p^r9&V@|s5>{8; z&tDi(_h1-xR|vX=vQ9v+BVDv)A@6Wv-rcDoBHYL0wrdT!A*-7$Y&Y=p3ZYG_Fqs*5 zfTlG&N$M$2?XzS0HP1=`E@b+uI`N;v!<#dnIoY-1sq=fheC2og{xR!{(J}LfrO&5e z&);NZM+7=gb;(l^|g=!l&RRF4J#D@ua86wt$OhUP@FLL zIoU6DN20i-Y1MXq1#9f!e&ZnR~c67*T?Gdtn{*b>yjsdIKvd?Z$qC)4ieUPF1*#KDw3S+t8O}D>VGk-nrxT9#bmK=VhylZg6mMS?G!;!!Ro9vi1bo|U+ zw{6G~rS=DpgH+-gs(>-E#4gE{GxfSMsR|$FI>xZKe1IL z*BKfWemnNwUr=0JVdK&zFV1}^6^&48W*Pb2{`U|k0k}f0adj1%r>P)p!#nsR;J2pq zkY{(Iabv?u)AytPM`$8*-v*HfMktdVcDlK+FCux9TS*42y1wx{0XQaNbN-S)M0e(P zeS5}yC3XJ}P7UfhK6zT;#R4iMk{q_4Ukt|i5N8${nTHCTm@%?QkKcC|Yzf@UpCC?3 z9+qBXjW00Y+BCWoIk;As3CtC)+izfH@5_26hgK@l&+j0*70Wl-<;XufmXhRh5HB`N z4*T6PgF^2F$D;?g73%2QXJ_?T`RW_Ke!+9q=i$dawwu^aLal0neb|xy30!oNVXuT8 zT8~ONNR}r(FD^!Xm(MSv$l6{kE7wTFkF}S5Jc&jwazuc3wi%+Iv5Qn~eV4<>-DO4o z1!baaFwKqrc!h^|^Q~+|-|aV>M-auTwLF^gJOwKQj8nI(4H-U0;4qlTJ z7Z>fWdViWO)I;Q@_oDpzs&_2!~68$&&1IQv6tL!R*Nx|ZOmh`WW7fJM1|*8 z-wvIDdb1sQm#krk));ylF5&l{->PfG=;FELcg1S4_iAd7JWvP8PRY&9BPH}?W;LLCJ?~hh?PE=E z;VCxZPjPm52E&_3bHj&GQ?_6!HeAY+yLCSbm-tfSDEfDzU3y5hIXQ>C0jY=voqcxA zEt^~3w+07VV~^%mEM0_8Lh0WD@#bDE5oVa~AJ<6G&{ZmT)C56XJyGY9rUF}c-eKJS z6Fw%`!JoI=nt*1A@y?C6IHh1G`Vj>RsU*=C)5$hru6Uk&c>FVrvI95K|oPCr@xn>S*}ZJ9>)e?`u6@c!j~arbz&!{{lt#J zrM|neK%1%v8Uy7C@R}54(`f?_{^l}|*`j{%O#pTrFebM}Gt)16inG6XfBSx*_JVFz z`Bc`wzo}bZGMTrCt^aCt-g9*4TZrg_-}A;}FQBJlY{qZQifer4uMb35hUt_%$gKeT zIOE5R;Q;|9rZJ63TU|WJLY4Sl|Bdi>TY^n&Qn;u~CM4uqnZ|Y=x3=9`R8|AIh3%>28=T=9RtVclosoFB3QgNbd;MJbfJlyBIP&<~ zesj2ehmQ&t9+i4X^IXMe@)#+#jYYD4^Rg-%xe`p-bj;!xB-W5;^?wi;@&kj`x~O5d z#k*ajWU4IyLa>8R2yAq-aOC+L$us_SS4Z(;v>y==k6W9%Z8BKlmmib4jyv7IigFT` zFM3M^ywloPn%Oo`>n}GcO!gj@gp%eGcJ7^!-s1KenTq<_VgKdxv-uqN`FD!en=VVd zBL2qj+$?8v_p80KKHz#7#3>4kT`uZ(eEi($S>bk!F)6A0aKW#F)7?VJU4uX6pfxHm zCL4Ul=U+|HTLqvcY;(KkPeb*X2-6=!TgnWgH>eUg7=P|^c(VcqtCUNUkdE{xBIj13 z28hn%Zl3{86%QI0QYu%jS6$cx<{olEgephP?E(9$Zq+7MKZy`!bOnmqg6i*hpiIfd zlK|M_HN8nD1D_va(y8n7ao8<9K6~>EjiK>5s#u&Vy_yO$SPG>Dmp0_)HUDU3lsBd^ zX1CcI$73LB#9LLtkxE|U%5ko7DqAav#iR23s~7Y_d zFKPOruQ%la6FuDe2CsT4iZK^!`^VuJ43iAD+8L` z;+eb;1M>3S!jjmph{6SeyB7=-zM8|}kaE4~kn^dR>Vlb1j*j+P{5b+&wuWZ1Khk7Q zRZ@aBsN)&aL(MEKq6p2=uOgy1OgS+(aq`|%eu4xhq5`(xx&kFfHy8UoVkVhf zdR^GR)>$52dpqEU98kj8iKMEV;6dv`m?~iD(PH=Bjf9VwbEJ@xN4|}n!PUN+yLZ!0 z1-jFl5_=W7Gx0@1-(8&plJ_`jtmgYS?WFjIq;)nP1bo}u{WO{YT!OrhKpd2^xA-Qv%wZjnb*J+xS3}OCaV&J;`LS4}wi1k6 zi;9xw(Ilg^X_5`9mTB5s4%Sm+U8GK%0f;oM|(=F+th zEtGYYfEsfx@f=ai8z$R-$bbwsl^IWQ(UeESo>)f2umml}S$Db|Eknr&&le=w3}o-* z#<@jr*IpJDj_4h_=KMM-5$c=hoBh`%g&DOsM0?rSvdY^qu>e6~09&~2OcU&YerlrXIyUdGD z@sayfWYTH9POw+eyP;!26K=?w5&ds9meIkLDT~YsWsC;pQuz7fq&GMGMl>uIAe;jL z75*Po0SdavSrtKRqS-Mep6Ye7TP6NBymh-gj zlrETF^0C*EhAPAN?^rTm>7XxJP3M5_FHJmW(zsFKOm%}s$h9m4uJqrz#lw=|}@$uxS$m=z?5(uac2pk^&7yOq$c zmF+U{KtIRsE$i&n3n5gx4(301TsA7vFIEV8u@heoJyZPlb)L4_ypR&2OFK;5ZnLMh&NIs8&GX*te_=Uf_jx3R9B)Qo6jWy_$oIg zopDzIT+cO6v-*BKHP#(_z!VTVvg@jMr8i@~J`7ovlq@Olfh&^D$(84PaVd+?E2sp|k+#4W@g%Y~9g(#ViD zq*cd^RN$UEQB~f4I>fA3R(T(UkHSRbfmF3ddiv>?cjPMt-dT2WcX3c58V_a#^Eu?r z0o|kmy6Yn3k~(F^ez-G;<|-O%Ku_G2nMJH3vV;<15~ZANEq(jqQGZ|tq99^Sh%62MazToAo> zhm^2ji(Gw#rD$7Q6AgVdLKyRyOd7JN{$uVfU;jcq`cv4<)$3d>*4 zDW}xDQp96g32 z){6K@7ptpNCHdC*g?Zx;OLQpP2V*hTg;UZkTbA+fMwH?(T%>eV#fPH$cpCx(ZHO<6YKq}f;OM;uLlSdfc%{vscwqM zAFlXc-mGezMycy#Qf_rId%K@ArC8&Mh$LXN_MJnsnSL+$^a0YO>#KaEdF$-6RlnG= z#zNcUz!63ijUr-U885kft=cL0`17qg?vf63Nw@1q0OXszc3ll!NohSEwkKz6sfTTN zn^R2vf?*DHiolr!>v-CJKw(8{P2eH?#G5|TYX zMlr@)sGC1O$zYWj@{ymrL+8Vh;1)|WmSOE(x_fBhb}^jxT&1HTc`OQlgz|r0CW(!e znCU#N61*CrE(GhqQatcdW*(ww{zT77EO)dDvCp zE*Dr_v2X2x|MVz-;#+9ZFJF1oK9xc$7b8`lI(gMVJ-j`M%+MSKfb-9lOR)ZhE}OK! z?pTT;dzn``&(_8|=CEvok{MIVuPxxOhg+}w@E(|Xv~A`QiipL}DcI+Lm*+`=yg&KT zjCh9*`SE5)56>pCqRh9QigjBKfl(J47|q@vquJZL75Z+W%!lUQx2M``bzNT~M}Yj9 z_-v0E69)3!7DdOVH9)Z;zBvXISbv}Y)njfh=oHKFFj7xTvu3XL;)^|6YL7yBaT052 z9Ii2ZOaw4q1>TBJngh5gC(m3&Em4c0p67V$ zqL+s0s;z;(A^D@%T%j5@`fo3-S0e^3%RkyuBMVHO;9)KPEfF|J0MBGix(t&#ORrCS zoEGX-Y(=^%Cl(YSOn7<)*FXHP429%_?DbWkssN0aGJmb@Tlpv^t>;@%ENsQLgO*s31xhbUAc)Dcu6n-BQxh4TF?)cPdCq zcXu}kC`b+rFmy9?b6(fCYVWnaeg2&5{9cI{8T5^XLq=a6T?o2OlYHF@YOPXZ=Eu}ahJN)A8W2VW|mspP*YtS?F z#ydZ;qi%gjL}FN=DPt!u_SO9RStZN)^Dcoi{i^#>*GE9!Lwp_F;g%e>f&N+gPvOl9>q>T`$RE0)h-;UN~m z@S)Y?LD!Zsv1OS@YlnvzT+AOa{Hjh*r!*)^^c;lZ%iU%ucgCU^9p08@!YRe9 z+nuhkkz*TCX|nKWJK#_qV{J&s)y+TXaLt~JJbt|4jkTa=$DyHX-9E&vkmkQNm3Zs7 z;tvu^_qlU#7OseDyxVt>Ik9DD_@Tkn-JjuU?Q}7cT0Yat`ei1J0$KshE&a&-9Z`<< zGnf*ZLRxvlp`$HuLjeU+#^<3ox5QfoW)>#&->np1M{uLlJwpYtQGN5PaeoSn>>)&b z6{je#R9o-&YNuy-UZ$(#k;g~s^lGH8K=wrq5rz@5Wv);s>Ap!{lbq%u5)3JamWOJq-To~DDU^8w|vQXDWQpXxXzts@Q?3^)bUN%g~ z8s=qu;=O^?bDX?fHdLcmGW7(p z;1_Z%IlQ{VB;9{g-VyG8;r*_6nDUOvpefWPha<8`>MVKY1J;;-93jdN8iDAqJ9wf- z%}a+cilR=xwgFe8^j9cxaz~fBkaj6?+HT$w$3s5X%CMC`W&z|XVPib0+u|ZYbaQ)H z^&|(h%5sI=hZ2f+hA0TJaZnxxe1L+QaN>$D2e+?25!9w3nNuCd^I=I|@wjEbKn z_&Yt9DImfI-z-eq_q=zX9QUH9?(HL2`0kZBZ{*wvakOI*j0%Vrgsn4HoZIu8LgA1C zr0lNAJmroxbG^~tU7uZZHGX(6eDu=SN$EzwN9{IRh9-%3`ZB|qKGmHY^1(4}?hV6y zb=4Qm>Q7^{W|hZM*_fRzv&c71HpJm1`yb31=)JGnh9d7>5}h9rpCF$l>rQ#KC}`}^ zBy{(Y9B69cJG3?uH~Lh~uf<-|9&dc;9MZ$3=N_e&cEdS-S)L(#J?r(d*DGLJ%GqGG zLBZVX)6Q>(sC6j!3oYp=>yE$|dh{xoRZUR@ZEWB7vsvS`82X>Lam1LvvY%+BkVbp4 zD?b?&bh3Z=p3Ia)ZPU8*{a}l%2$4Ev+8Y~}QcM>rOK`g8_MsMox0J#Uo^PHx?$r+^ zum(Xz$F6M4@GD=-qWPip;Y%iDJ?U{e`KrJ*18p5qfx2fUFB`8qTLaHQ7$Q_qsgG=R zc*9bDPph?0JPmwaoW5ULzr6XfQPm<4y>YCopL|TXGj8b68Iplq5V zdu@-9`h0XZ-uY5W#RPNBq&7oG;39?7fiI+5Z2!$W6!H= zp=)lqAz=hjr<>VI$Ej@Play)m#X?cS&C#Dyyv>eBJ{R9aZ-TNmZ-B65WWoOaE|*bq zKzQ`0#2p?J{*C`g#lsg=dNXB2q&U-UG%zS)SU2&ow zGoOJrH^r8b(b2b_+_vxE`IxpF8m#o8v3zDMW{6xWD=vggmmfu9_kV0pw)Z@QcDHRq z*rylIeO)?8=f8=RkOF%p+pf>}zum6w|5_Zq!|yiAw%Q<{B;N99%!1Eh4;mN;U6^}jGuh%>MU2h%k_OQ zrtgYvg9AT9O7Zjwt0~rgp^fM47cbu84%QT@i{$}{S=V80 z%#ovt0zY49{4r3i(9L}JSaPjNw87dj>?b@N8030s^H<&s@v4L%=fyzN6 zB9)BPeq8$1%u5k2{2V#m8FNQ(zG`-$(x zT~1F|4lZ{!4HGF#JXMwxZG}hO?&Z~@E85Q+G7=nMJ7Q^QhPp&tWorBxk`X^>tQ7{# z`S#DRD=PSl?(nBvszzw9j~#V1FI|tO72Sl+H*!CmUmi7BucP~T*R2RauA|y*>(&$k zWoO#2kAfDw4HGAlSr@@qjwXYpJ>(9Z%ktao?~~8-YXkWl>8N1shivXC}9O zf5yf=SMGy|JT)}}_+z7>AvQ&v%N4X!!L~alS}|;;);F3lg-^@i8^?_iCWOzRZ+=Rk z_;nZgWUUk8__FU;nIgfher;Fsoe_t>lng3!O4_UG*>939Sd?w>dwPg+*S{7Mpvf z2ZpJ7@^)WA`qPOdJQSl8U+`W6yaEdSG|DOdtNUV6@jY^8es~8-hv@@uvOJ4AXofnU z&$4f?-0Gd+IuZRZJ?tDT;A4VJjo(dcorf*cGRvYG^PX`gcKE{D$(~#M6okq%^=0*i z+mM}Pin$PvecVSk+Jd<>tB+Ns2nQ}ol8;yz;O`KyqD&kKLisJW{DKZbvBL3gUKC8J z2tMuG5X(WlH%8k|Cb7WJP;9$56HL(x9td6%>}_uZ=1E^C2xs8jV5`5HV+p>A`LcO+ zcU>`rsUg&+3qSaAGqKx$x!(?76E0~F9hOeX7ZCd4%JR{{VWvSPRNdc$YVr7!Lf5Sj z(@j*-eW1%1>*K+@mia05wlCS!icY@~PV{=}+D+%N6XE$R)XkCEjX}5TPVg->2Etn6 z_+~iSR2Ze2sPQDa|1(8E~!35j|orQWza1; zw@25J_F)J+-I#FPVd({%3^N&FMs?!uF0F{FZns__>azL0LVLLeYM0x=GSE-YC^5L2 zF`C!1uRCBeimv^PR{8X+XUbsngS;j?vk!g1-Xej91Ir!Dtd^@bU# zhydHXm2xEqH0fn@UyseRe5!B1#D^s`oaIT0&_9D?1&$4Xgf-04b#_Hp zc3Wc7Ha)9+Nq}9}8svk#k5ag#hK2ZA1O)|woD2yK8)4z#NwuCD1Mnq4qzolMq6L`x z^Mw`ovP`~|=uCyPSr=n+f!m`?m6e$wgcw233rxuAQP*@!?xkar7DG+D!}X(Vg;^4@ zkDBG1FJP552c=l=5%29!rgCHIRN$vaVKK%82L;WWXLzlzixRQ3kS&Crot{eQg`2%i zmx~r=NaJAEZ0esVW$zz+%w`wFS5sIysAd;2n4*9Mr-9k{2ru{LP^z_DhD(BudMwQYPJG23HBYVhJTA25#UN(@)63)p+(Wkm<3`{3 zV-KS}pe_k1;3EdcufyZuAvP`IYj_mA`UMH!3Jjpy2QO|&5+zLlNv;wJmv{k>!xb;l z8Q4@Eq8CU!DPuvoq?dby)F+t(VAI)w90=-!HRBf(nWmQ~U zT38E?AGDOI&pzK@tOnbTj4+oq7S6Jlk)jIZc1w!%KnAIybUcP1>#`~6W?;JSQwaiz zK+&_wM^Y^k4Gd!z#EQM3PAX|^clT_d*|tsJ_2v!(?s_vPM~(L1mjy4|bG-*E~t7u0xFV(_}WvQsriD}35_Nk@>bo&C!u8jku+Z|82 z2NFN(#v~jH=1&^Qd;R1Wwg2%dzX3@Bgh&BZ&g_xX*84TKRz%}a1F@odGwb%wsn_blyJPCR_%Tx89FgNpeOiZZJ}V*2<}CL z<9iku^SwYkqfb5xn zdMB!yQ9vF26lwqY?g1S?$PNR*jE-Jj8%#9cf9Ps!V*Uwm0mS1c$F}x|v5-L77ARDI z`n%GB&(PKv_$^Se%`{5-@~ytM>k78^iYA2CEi~zd%Qq?e?S2}T71ml`yXEV<21j~+gI@pY`b}B zuex)lr(VzK$9^FEA!-6d8c>*k;)8y%Xl9(mkb3*dXOuu6wqYiL83`t@{!iLGF*5G@ zNc=@(m4E`}h~iMZ(qSoj4~QRf-X8!E6r7KX9REDu@1h08H{P$qknl;S%A;|H8D;&aE*b|oGR3RkY|7hl5aQ13F^B)&ras` z+u>l$w_H-LUqk9mHdl`U0A7mUZj?-FT+1Fu6*ZMh?d zF_$0i!2SVj1o9XX#9-4+*@JC9nLkA#8Dg-DFdiIF;hql|&eP}z zWIFP~Ck*9lw)749{|#4$p#PZPa@It9h z{ru&fw^M``5?5gX0Si{7I^w!>F2M>#Y&zDK2>YZ%;M7|RC|aq6r#l5wIPDbB=Y{ih zmhfxCqD0FhVDF8ODu(3+uM~Y0K!m>I&Hq5R2nx|-#PINNTk!jtv&gfPlZLCS4+Py| zeqhRA2hlb9-x);&MI4jNpd#1@EKEX3Sc#!;{$Xt9mgj@gb5ik^wFmm&3MrsQ9drfJ zn0^vHI-<2h%eXX;vVt=F6JR_*)f`>xzsV#+vWl7pB(X)hmdf46sIuppnwlFjGBUdC z#yWI=0WCPJgJr*+pP%2>!eUT9LSBSe!^ALudwb_~V_8VO(mQ8>GdkICbOEM~wjkd~ z@l(PEcqB6aUwA|T9dUS=(QFd}opp_jj4aEm>r+=t@b_d)JlZ>PemJT2AA*P?Kqz;H zbl$od8&8xjc?$>&AILb|uf0imJ0IOG1w2mVM=1CSa-Z0ML=S}gERCH0<4Fa14zJk0s*>FAHi0(7EbDu%WTWRA3F+%#$B02Xyoo& zk}lesS6t6snTrfob#9)MwxLEr`l11%wEvwbow@DWEIC$mKMItDawT(Y>HhKTzcI-G zDWWG-_w8HP9V;taD=P>tWt)z>X&@sbqYHH}wNfkYM!9`c)gOWZJFJ6bw}-z1{}|fb z*oM#yPhaq0EG}9)Yn)0J7JWhaS$aq&P#*{BQ@76u}tve)j%T(9wbr zJnrV9eG2<7^$`~w#birTeR~wpr*fuc1Hv8Y)&y$&f51mFtRo#$*`tiWL0!5^-QT`g zB5ks$NJjJR+c2%-Wou7NKyXxt0Tj`H=oCshh1kU`2P++|t#tu@YhSAxiXE!^vS6dy zp#3=ZjJ6Z#{U`26CQTP6gE8Z={7r%UNj<(|uR9nQH8eE7eZg{DLT1r{k(i)wT@7jc zF0VQYUq3)|Lbi=WJ1#1+)Kpc)E*c*(riYDC#zH)7dq8t@CO*`3;vxlAm&S=76_ca- zl|d={aK#ObDQ=1O%jkQi`N?+yU|xaV)R6iLJ{5vXDvF-~`}md}{cmmXo3V>|I8<*_ zu;`lU3KZVU23lF5f)Lkef0qnPn;2}pp!c{9HH^O7kqq^0iMDMN6i@-I##VF1mRjF; z50~*wXZ?ck;Ym6k0=zms5NsxePFhU6{LEN&i9bO6Hxm5YD~KRa0zgXZ8%zgVA#dPe zAG4?s0qU@3Se1PqXgFbd_v9tu-2~3EFeLtqVEda=TdE=Zb)zIe#6OQ(-k|8!xk$mY zj{*c|gM-?u|NA96=tV?&ba*0}V9Z2B-D7}w`~UaaG(}h>e2GZ^PB867Zieg+ySo)( zQ9IoCSa6NZXHGo5Sa4UK1_sUl`w$;7q|gCVcxyRfyTB9EPC}yBoq8c8Jfyx(0T3~% zMbVq*l)y0|m>)}I{|2|;y}myw^EbIB^2;!%4xq^)Jp$$qdE~&D4WxSjO7c8y%`anw z?a@n}1peRX0F(|nU`%%*=m3D_3Cal9l@E%xK-d6}ht#*W3f5Ow?_88o{i%BX%L`qK zWuhRo%gBUbo-;P$$N;yp0W!jW#}REL7y^Ylr0%5JdU!N{RMz}A3H|po(vtd)kE>|v zYwyd*%EoDE^ysL7$M2MTbmo+Z;l9A+5P={+ik2{LGd&3GWAhJSPu7m+D zM6?Y832>Ww!~iXcf3ar&(pJCNoeBkz!&vql7t%dCkKYk*WdXfNIQyOkay>e2IwI5f zi2w3zvOjT^W(yEU;KbeEl`_Hx9jx>tNKyj(|K(c5->x0_|KM7*fM1w*1%W_-78`~; zIXF}nmy|fKt*w=P{o2D$XKXzOMU7gVovplZ63ENW?n+Eb>LbY;a{#ar{!rWp?SH`J zpIWEvFMmPsC6h>^?ea~p=8)5_8(y^wxUIe$C(xHWx%c7mFttj5j!G0r@pE6-z0LT3y`P5cX zu~o(mxFi4a(w&=!XS1)bKf;rdmDS07^n@?YuC%n2r~SjC_LC=1_Tk?%Qw>twnwve! zD%*aX0)^ateSKd2ThX@wd?3-mcmJ+9=YE*Yt*P7fbGv^8_>+uPl5Fr!;x(QDd$`&s9V zIA8b-PzE-_Bv-P3n(cp66@Ld<6y7gbEiwNR2I#EGA=x(3RdoV%&`qAc2N(@~XUH#08WjC-n; zxW2J+SwnL=X1d8ZU9I1D*l`UPx2&#gN?lXKmxnPL%e+mQtDcK_iU_slD9n*^>j%I@KqJ3p`BRqsZ-Hr#g)svSva$D?*!8cOu<1;fguEjY z;6de7BMuO`K*16H`Z`vcP@E0max+QRa;D%4Dvb017YTqE$moA321Igb!8^vsFY8bz zr#Vnc&Z^AJHpTN|OOY{n)>4%8rBURw56UjoHM5>{IJh<&rj zkH8s3c7=zBFM3w`!gru5j;W-y)P zML(F%UcBk|!MpR+Cj+|Yjp`B;60$vD9XuvQ zfBTfD2r6YCduXIM(`lQ`OgA@`sbB2BT?!=Ltn3bE@(WVagLZ~9?3!mAwT;i*C82Y3 zt`cC@hZBl!@v_6=ZMEC#M?k?!2de{P4A!dgKlR zuZxY_V9B)mB0sbxS=AxjR>alk)z#YH-=DoyYhxeP19bh)HX;Hl1#2o`5CHSLqW-Hn z(%~RVb|_VAow_L-)_6$*ngeZDI<%pki3UZWa`liVUlpXiUZTUC@fGy;0CCx(N#Nm) zxQ-|(=2oarBq`wP5&%k)fR3+btSB`&#o|#K(is8IcU0uO*jVNBwPb?^QnRTA>to!F zB1mWRM^^T;-9h@ySAOLYzFtRy?zmXC2=K>mxt1L&H;DGlG3{)=kmbc;O9=IWLRqRd zOzjV}P~Bp7l#1jP6#N>BT*d^iTVfR=3b};2GhX$j(n8nQH< zDr&T#y!_DQ!L%5Ka@n`f#wE0Vcey7ViSY#1kR`B|s9YaS^$mQ-m*7HmlH&GgNOru0 zKt&hY;ZCxkTXmy0@nuhNrzvY5NE@nRW4JIO?~Lv|i+=hkyR5JhvmH5}fVMI4Qo>1R z@aAn+8L-km`mDEz^mL-os-D7e*DBwt^=c%iF`Euh~? zqNyJi^Rl9l9x!a|*$|)B*EF`GvJZr%`aknFG(Z9s?nv8Q>Kb(g3elV7+O; zl+V+$vaw~Kj!lgzjHmjlV)Nc)#;C2fwzm1Kj!P0Tx`$AjT|qATF=^)-^}Jbx`Q6kKg^7uYePBj%5t zy;G0RaUZ>WgUh{P-V}R#L7s{A z#CI1nbAx9thLAEAy0E^nK0k0+F#DaqX^FFp3nRhACvZs))2@+%AdU48aYzZ33IOyw zITxhqdLMEi&oDbXYY~8rYk4x}c>opcPq9yE;_}C6zWSC}z$l~0=3qWdqVGwoqZk*N zoT0>)u};mzCF}!#6+Zdg-;Ub+?cTeORK&veePh=R`aJs`uY?R5In{`{VUuGVx|(#j%THASOqMFHZZvRm)!nERhvb5?(UVLXkuFRp672 z%4HJJ(u%b~f0G|W3kDAZQl{nS)GvUMg3e@uWz&K4Eg<&!Fv+eS!?@UQ!8-Q)x-|tl90pEQce4$-~O2xY>2@ z^PZM;FjxoKp}wWY$YER~E1fdb)MRQsuW-G6#Z@|QW+81d&Vi4QT>D>uv2Na31 z(@$pOcNE!dRQGLcugD{U$I-y+ww4}hI}e^Z{UW&Y`Nd~lQ&X}=J>9p?lsS~PMn*(M zwHB1Czbd>ap__Ie-h&6cPA8LXUA&k>5Rhw$Ryq@b6@T%IhHNhdjm0VTbkp~q=xV44 zYGQ{nnj z1sppAGCJ}F&9;+qSu*IAuDp6=;cCi{qoFEL27!~Yv2oo*5cUwzP50DPpHWw;40a=` z+EPlcMI9=L^%42 zjO^&@$_Bl7!2#PF&y_6$;)}}MzGZG$7$F#TKxZ4>$1I!H`ub_kS4d}Y-C{ZzvnG=N zaqcf8JE1Wq&^1=H)Bn~sDq&T}7t5~J#l`lKFA)$sd=tf;jOtx!En!=-eEDiK^ z@6~HWm$CG?`iIN(<%FMej)dAg+indzLThNY_BSdc4#>o@nD9q@ z{mRA#AqZjYQ_=Z|So(;2*bzhNmm}%%grTmL*z?z@GsnmxCM7WdZ()&N0 zcCmXQC^#Mf(2nh3JPgo+f#V(!veek8mt~b%2n~rJ!8y*yTWZ?chNddT7syif*scVj8?`m`)AbWBVZi zMUJy=F-uUARsOi?5Gc_C?~^(Yqx$}se1oHv8pVi z(H^y$E^D@p@rXdz3<~TN4IL7k>TH)9H;uz;j7caSlvDcoe=tR0*vF9i*EWPeX&B&i zKbwET$)Ufg_AZhRwub?tBH!w>dV^Yv^C*Nw6WjxmZL4a6(d5%CNCnX8=S${h{%S9Vl~z^`mfDpx_uDUD^lBQ+fx*DO0;TLPwGH-EMN&c|tlyfmmiukN;GW3m z(XTCBYr^Uk3O1!Mo&yeR`TZs5P|Gq)_r}Sm^p|#oEtc-_p{(S3YC6xo=((bim9XO*R`QH}5*R+b z2fh<}k{!-IZDwX)t*`B*mPwpjER7W?xBmLL(~FyzcS}S0`HOjv47RK?imu@H?;L ztKhtNY~E0VhWlOfh9b*o&JPV#RjZr9%M`j+b#n zRVQq5RZd`W6c@x2p092sO|?~>av+ce|81Ko9GdBJgW%$RSN=tsgzIx6>Rq7zMClV} z>b2wnqAfBDld+x#)&}F4Zlz;FvT*2+)nR@?K^q|MAQRPJ>qlmCbop&$j2sH7Nd1)V zz{prU;4wVZj0}tXs>A-GwWQ{$>3dGi1OeeQz9j7z_aR`}hg8HANJjyH@DV^LAO07+ zyrc40$h`7B4en6@`G3HXtH=XS!u%Z^n54hJ0Se8Vocw6d!0>obO~Y)JU@&iH)xV%j ztniIW#8;f?+^gcIra7VG3t-5MdH=@(9UVO<5D?Epcv7~r z_Prb|Y!zQmMJ4M^UL?|6dX(0<>^M5nq|-;Qh1lC#n(2I`rBQ#{=91xNef57bq#GAf zuls$X@%55DCh&xY3x+?Fqknr19w_ioe&}BQIH@8KEe7(iANEnHp;Z(MAyR;>V6VvO z|H1?tA$t;O_S!!Wn8X8z7tP5H~wB;|zg7*54*PGd;n7tWsf&vd@Rf zTK*HZme?4E*7J>#endJ881WuO{K(1H$!a(;F&PM<%V?_Vg!A~B_BUk|9A1i&VZ!Sw zE0^)`@hhB6IkjSp4M%(KY`pl#%ZnKp^=xdu6!-8OiyhT_(nLuleJS(SCW#Vk+uT2I zpxL+7S=4fqm6f$MHSH}eFQ@e0)Nmd(BpL;bm~iU1dU|_6aH2%e2-0;BvC{a>9CvSM z%zK{!(E%8O5mlR_Xjx>n`?5V;zRkdTi9E6_gpq*(h*f>j<3Hp1mrQON4iX0~RAxT# z3BI0_s*?&z9bC7*smW}tLIf7`STs;L*mvbZC5wn-O?<)AC&BMMiO?{X7&^Ksw8;C${dPkm~Ve zT~pJL{pceD^cj}9iSz~K$8%IN7ugF`qe8L!4*7)(A*{i9>vT zH`m&;j>lj&58!wT|4j!9s0x`&iH}fW4+I9w29c0B0Pzo7clSYCs5Ko^wEauw%2axM z$waa~DY;i%Tn+2%ctG0PxZSi^DfM%jYrW6SAafTO7%;jyH}_W0O|ibXxSW6LRy=SF z9TEQIxj|TAq4fERqHt4Zzdw*1m?||i95o4-V8VImmpAI-;@TvO&)OIjr4ZAh{swv> za0FK{3PZ=xm8%x;{KzxfgF%XQamX2Z)^L1Ge7^aElADWb9S?8)ORPbPT@eF3M$I7l zGI#b@nqz0Wyjh_}mI-s)txsM~t^pXj(g3V62aJSJcN0viyF9^xNniV&-QB9QU4F<$ zQ&Uq!K)8+MBI^w8P$gwmY3+z!lk;G0O-&DwO!}MH`cJ097u#Q?Dd;jVP=fo_s{r## zBZ7soW*}+wm4Imu-hKA8`D0``RZvP8rHPUSJ(m`&F?_5JaCOTn3)yj+$9sCd{tD5| zkHg}C3Xr~I&)^;23IC0ucvDS|Xk~DE-mR^*^S5;0!fe=M;}3C04D^ibo}e8=11meA zOtFu%W2$ds%X-f>iT!TbY&tOT5#^#(-}k7lI;uhZ)N#T6nwr#pGh5qHLGZ-`u2^6s zHc0~Fub8~3F}P}^-Q0eAA{a2V^L^&d~<3sZ)(;IXf&*&diuJzn7_yrJn#@_JAuyV2F`HXTUB4x5rQXuVP%ii5$+q zuN_5*Q2e?f(3!UC-Q)!!L9DC1j{3^(_7N9U`EB7X^;EL-cpA`{0W2V^7b29sAaXgC zqPYe3lmRW|7w_%tgkwbbwjE791hGP?hDn4zY@UCZ@kxwq+FC-N(-Tmf4W@rA>~3Xtb3U|B=6IXaP*)r@u{?jZ8{mqQt3lgtQ?ux{*pEI}^P^iMf@6JC_gv!hIji#Jw)uD)T$l8JXobv7%z*^(ij$U) zkMOQ=r1TCaFtMS8$B!J$jA9#AZX@zf!SP`n$F3%>)B-z4UqJHJ zm5haT5DGVMb0b#G zOcQP1d94qbV%YBm@uL3J#geY?_m5s?wpy6<dVyuMCDxoC7Of8H=LZcCEd*yw(K zxGZ*jM%kMxnQIRP5(u++5^N2fACjBLM+{hH3NBf(S|p<>XZw zsws{um)cl9s>rRr*nPBq$$p!2JX}>O&%48G;RY+s@>vQFsKl}|x##_z*ZGF<{p`T& zqIMSjmiH?_3Usd^3}f4cMA&;*=z901Drr60j$9i1d$EOfR$J8C?Crzs~ z`LugkTagCs%Pg=IpbTezE_{Bj?{o9@@z{Rr`Q0|jQvtT*7tTL^Rr5EiyZcU?bf!PZ&)tVZG-_0SEc%G1_E8MdPHCbaFkv9Z5^gpmWJ-9e_G*a zK%FNAv@hbpb#URT)Tmm5X2V$&7lt)w#SgsYS&uOrJ6oLr-^NQ`>ki#uy~3Y3mYy0p zGR*doDTR8d0pD{_$kotaZwAaI3RGSaaMd(kY9D_W8)KpBXn-fUZj_ENA0Kv`TQc00 z>9$)U5!ra=9vUUehGCg1&BH(OVRnAncX)D~pR*vaP66$hjJc+^Q~d}eL0&{+@%{3| zQC@-vWYW|5SVq@OR)JE4K|`h!14Rb-n@?B5zt%=xw~y}d9qVldKA3rMhFEc~|5HM_ zS0X8#s9&0>Kc4H;C(rfZOK#i2R=0fi2Q zddRHq53-2jkg24~|#s~)-?a1PAbRRRjSO_1tevbPj+dAfzXb^LN zM6x`!E9+gaf=MAxK`ts{@?;~c;gzT`ri);C@YE}P?a(OB^Kt`&=}u6H({cTdfz=U0 zWfyw?*W~n#y<*}^u$`XR?T7Sy)xDmVp=s{oIF4;&f)PK1T=yhz<8?JG1M0~KTl>Ws zS{I~su52Y`azIREDxD9$oc3UcVO*T-hDJD7^fvRrH_N&SAh|ryyt%j|8C&e&vliHW+-C-_-ClV4pS0H(~o{`)m1cUf(R&yDydq>ZAim7hTfAkCn7u zIgo5iewj@kD__b~*zg)~JEMFZ=|uf#_x;!t)|Pk8ZU=R+aidfY(<)}2IynfvLP_NT zu%@e2bdg;$DwIw2CnUQ!+-AH-T0=z*rhp(BMN&7C$_)Y9%-0viUM5(*TQB)^C)Q4( z9y+~fuf`^~whxGmD`5D*<0uoN#De}0wfpsb^_(*xPnuHFl!O}FP@D|EAd z=qo~ofr5niw?7T>7z99nP@2-tRB3fiaP+|X`0^RmRAs0*wbemV9$vCcNqo-Q*3}1o zi2c+wq}qJ!te}YzD^|}ncWR2uAUNL|hgZ+)C_xXo`QcfpMybPCI&c2Gww^1s#OSkl z8SI_4p0b~Xr#4k*W)L0eQipQ==-Z2}kuvcjB%+_HuGFPl>gY#P4kPIs2k!b2g7lEr z=dLF%o<;@^l2hl<`WzW-)q)UFBCX1Pb@fO%XM@7_j#pabPN0pla+Z8)p$0>s@|}B? zkmBex%e5BGo_(n7-jn6?Wn|JOX13Vlk|bt(uqG81&kxt_=|%6K{-@w-YleKq>1O7x zJzu@sHvv?pWb+01(@xDHkjf90IhXDUN3T!&qk^7wN2{I~IHvKr1oVu}V|1oWG-)o1$ zFdW&bScmrb`lr|AJ)v+tX@F>|_e_zq7fFu}S`_5;{EI@%7o|38TMDYZb=H&(bjOGj zffR7ZVWy>pg~t19dPuEPz3{i#Wbw~7y_`W0-0=GVhpkG62D(O*FKAq;(-K`gxklPB8!b z%`k;<0Z3e38hI`A;!1@D~cS(8^X{5FfU;x!}jV4In| z))w|$NS$k=K(ov%WobLN@uapnQJC?ORV^bSYrrE%gqX6EN4e5JBt5;ijJ7}MhI@kw zTBpO^R2Fv@o{P7T%c3-f3f+F@v=Rs=z}D|O2@J>Is~!`oHn_imsp}}Ne zc)T%k9?IlmbR(7~iWi?6k!BR5xB1y=j0~B#<@JR$LuGx}on$oe>2;nm5;hO}dIz?b zhrlFH`fFjIy0w=cTimR((h|1vvAPto;262p*I$WG9=Q(&CFX^QqR>WJDUEWNFl@O| z(P(XAB+A@#zBhtoaZQXxaGTJPt)!$(2+ehQ4GKoM3T$LW{BRlAks|&?-<>ptG>W2aGGbwyu=o%)S^XOqwr_02pC(HIXQ5 z2Xn7)BltOKmD{4vw9xGdcC6`jiKTO{*X6L{oZsaW&s|4S5i%!(S6rNPmB#(nJ4vN1 z(~Yvqj_>D%Z%6WN2IHusUN$cKfsa|j4F1N#|6yqRWHPq*J*gE(GGUGY-Z! zon3)#8js&j1(r-=AuHm@xYE@kA`u}CtxCr~+q##Ir)jjoSJ}+om28`0Qcyv!87zyh zGOj42uIIKg9u4hwtt8?icc?g4s$k3=$aTduew40LmcP*N_OslqG<>2w*e1{`zSh!c zql09^K4{)DSp{I|=t4=rn=Ajt&vR%N)78XY#0S%fw`l!8ruDtlcMgyD6LeHnSGK~3 zav%5~H!j(GLc}$URyssIQmn-TEs>|?PS^MI4 zt3JP23V6s88-2SM+-h-gh*@M8Y>n^Oqq&%SuH!qvG$hg>I^?JrRd)Z!EPz%=dY3G3 zv8FIv*H^-_3}`V|1__ZzCA+>ef}5IG5i1oI>50UF@KAYFkLQg?1d8v%Y_gZ-{G-|r zdHHo|&MM0+k>E7V2c_4)dP{1 zR)8)0#(MvN1qvx|moh3&PeK&d0wDEv8JNC)S+~on+z;0N64Px zBvT_4jxSD0Fl}ORlZay-is zz<%1|Ek*JKv(G;xc$+$w$oy2q+z<9OF&oSiHHhr!1{Pa>q((meknnZLqjLYU3~B!N z!y&PnsKsBs2a{Y+1fmtWh@;h3ag4)5gi)em`ADlCNOVQT$?=e>57<2_+lzbuuB&G? zG*mj4B7`UCJu}JOeqqj;vXIZMZpJ)DDbjL}IC3cRA?Zuk2yD@BY-Ds}Y@HbJsW~Pr zwLobU-iv{LO?~BMEow|hR9=r(aDAw=s4ZewxpWVz&Bsk&rNOUH#am8sXM42XA6RSt z+<0@{iSE4_8ivoTZ8D4-S!=mw8O`>v_=80ODX(MCaRR&HN~c^q=2|b6dqf`z5~0_? z;$T2JyW7!EX)%2`;MOW=)z;GwDc`@R++$>BJPq9``Bd$B1m3++hA{bUsmqrrZnY6{ z+qNhc(K56b*L1KgWwM)Q0@>QZM)`Cn8LB&#J`Qk>2>^NN2j zweQx)s%+`aT6CZCbj9leE=f8oe7E9r&VKV#v(2dZps_zsG1a^GVO6_O-ae#`-e_Nw zbtdWyzt^|1RPM#}yQ>KF7!iW&<}wu z(5L@Hm;Vw3{5ZayG*J7|o>9MN=3C>YEYdTegnWg`%NOXcw+@%Px!y*lN0)j1{PJ?4 zj7q0>Sxge(*;vjJRhcKre9?LjmCR{=4Y-xp*86*ai`~m{yELm5}J$HpOiraxG z6)K&_^hEaiKUHpIeyB`L4;ApmN)myv&Yn;G;Ndntuy2mrrFeF#;uFWbbQ9>L@>aUA zI}-(|F;LL7CQYo;(7Bp%@Oh#%zrAy52@$i7M%XJkh7=6D=9=f;Yl)gIdyJZ89N9>f z3(Ml^(v3#tjeV}~%ySm5&kmeU3Fm}WEch8FHHcyys76P+S=5(C>s|5{&znilzM^8Q zxKCEb8`8=ha9g9{IG*LM^l_3wKARN3d%9AQI`L`ed9U%R$rJAr4@UvlC)O5e$dE@X z4|HDCJ+kJU8QC7)5}7gBjqP@#Z3#S90Lmv z5Vo~rVcLndHDpDi#WnAHkEhXNQwtlxHKRa6D%O8k99*K(*CWp+>j`2Zuy95$_@ zGl$KF~;-pnzg<=D@!K6N$NaJz6vVx1)yel)&QamK<{NhYxv8bPV z#ge2Eme<9XMAMccIUQg~@;ya@FG7;iWAYVf_A;Sz-%{*PG(MyU2Z^z;PgB<8VEY~8 zkMSe$zD^g$rj=J=DKBm;h&i99bZ?9ALPL}i*(PUwt$I&(7~$pL%>#~4N;Gb`(=Cj>1uh+L%C5pODXc8 z9`}N@-81DaC0%F|w$%^F9VeY;E##u7+)1>X`<&7vOJ7*^*RWkJ9C%w@qZ8S)vZL^4 z6J53$cS-wMmIZp>NJ&&FXSgl8PaiN|rT3yJyU7iZ!@zcPCtLIu-vYzaK6d9EGnwmCfJx7I5OidF5e7wx01XBs-a54%a}EDuANf4XZj8Q7i|-NvsH z&gvM>`|Z5JEE2xmQlvIkHXqhxsbAx>y&PYA%cK_)QV;zYe*Slp{x^GIDN5p90frsV zMS7h7Hp?vE)UY;(L97+Jz(wZBXU^g2CAvmy-S!{S@m;V4z5j==w+@T4{n~{^QA)a$ z9EPDq1f?4W8CpU>8UYdM9$I>a?ha{Cx*LI^1*Cgu0qJho_w&BTcYJ%l&u{Pl82-BN z>%P{y)^)D)JXevN3)2pRjDrEw1diqV$xvsoX0_*OTTeLkMy{cOcj;ViIc4?hJ~TdPeHwuG1bMYw_z7byuM$!eEYpb))d(H{ah+14ddM z1~pcfYAlO40bVz_E1ZbB@!$2~h`O~)uv=!fDw0>(fwLQEy5GxSnd~_FT;F;Ug}{n-ql*`GrD5p<)!h3v49XE|C=?qKAlR zXZ-$2C!G5F@Wt|Lsd2YLv76si!z~)DNDR~GY$9tQ?6bWR=MLX}zhFAg-u%!9kQMv} zL2RTn7U9g@?ezjVYGw=~+k$mLRBP`R z!)juVfHm_2=vkVGbI05p{QxY%DrN*!k=aVLY@ZaYB$NyXb7Hr@g;L}iR3Ic^w5H@B z$d)+sGq@W!x0uUXQf$JQxg!5bGmBEj+O1qua_>Agx_U8k3bpwa24a>W6gl`>SHQ35 z(dsISqKtE2Kg6Huxm%+!TG$z=2owYOmD#34@SZ^W&u_npa*x^I|vM(QZW(bV&Rf`8shX& zcaM!Z$nd^^JQTC+aFcyUM-uMqvYE)mf`QV=hyaQ1;ci1D%hgkH1Jn^ z$Ooo+By3n`%F17?yiX2g&)V*`d>Vq6DO)cdHT7h+Q|&aC?hd@s2)< zmHG3sLUvMQY;QX+(bV-OCU4DRP;ssdpWd4c?JTqBzzfQ07!tZyFenU77fA>)6#VCG}Oxo~=PU*cU=7&vB z|0)-3Z;L!6cwc}MlA==$k1osV`{Av{oo4Wk#m48Cl`U2 z8)WY8$vL2=N6q24yB5&Wpme{>suQ!)YW|Sxu>^1*Rb{-j4}Mwc2;N+JhLl&o6}sl+ zo*cbeb_>wtiN!$p3(4?%eeV^(PIX$r?|7{CG-gRjbQ2VWP)lY|!-?Tws6Vg~%*Skn z{(bdN)6;o?4;E5pL9*z@s!j zyN{JHQIO_uDl9B;;_sBVWvQ2>nZ$p6HkXW590nHCe3rp(SBS!_ljggmipIN}OXZ*M zHZ)L^Y{ai+t=q8ad%@tvq&USS0dyWyk*mKfdiNAbL1#e3oPqalDu+nWnGw#&g$ytb z@f6-cFdtPnX z&Vq>@qqM^$ukb!1E3juU*}88r+-l4QD6WC2vs#Hzlu5*OsJ(g~wn9YUw+`yC>$Oau zQ;vP}HIT)Wr;J#{^VgF-)ERyrU(PS4uQod)X{HL=F2m!zy{Qh*l1qD9^h>TcqIoTy zT9UmN1&H%4X;s%YfuXMJx9VUE_3qw|KsAHejc3-4bzlk%-}RhuGXFQkP{8m?15pQ+ivC>f zbG_TvSL%eO2q{lt>cBJq2y9IQf?o70fB;Zd2uoTq$-fnFi{&v}4N|hv@~iLo^T_QX zchI;|$>f%8YjPz=iC%@;w%$zq_t71Bu%X>6G>iFedW<8ae|MReP*+JQd@eqMUOfNg z@%91(g)`+ET2sbmzkiDHJDc<{cy@NYFPmJ11=tz$Q-vidzQI3 zf`{)+rBpYnX)Hf9<>dOC*d+Htc0MsCPzWJIyhAjn5Mq0~A%Gj^4e3b>h7S zU-gMs@MUkLE7z@Nt7mrIEKPePka$uj7Zs#uch~zKGM@B6zWLB~I=qgIX03i%fSETU>*NWu{| z7%THRmpS-h*jf`zBA?VYpx=@H(qEHKc8#|)7E7wQk&3NXgH@E+Xw3u6gMSop^XUh~ zkY6?9r3g0C!Q*<@RV3xJ&S|vKry^S#o&Jl}-(R-a_W%mi`wMJlZMvE25 zOq-2H>=k<6l?7b*LDsUK(s5`O9~8bhu=^mZgnb_J48D5GpN41vfV8yF3>*3t*pjBC z@WRy(W0Pohl7fXfn3VCGAMG(XEJ;g}PW!j#A#pHbP0=#(!0j@5{mfaCBB!@&w5rbZ zo)^BdprOpVpQ7#glX~$m0nW?e1!33g0Q}~Lq5k(AULEoH&Cvo@@921Ezpg=IHM+@f zQ{=fldV!YWEb&ynkkrp4RR2*XVjx**g0W$_L*#;9ms1)q0zBnJf#K!I@n zFdWOG(x@yhP|oTQDWe38e(z6G`+JfvA=8Fwvs7;uB-0T7P3cqg1Ia zpfu5>1qT!7{iP5OYuP56q4l(|M{JkF73B5=<46*$cWOyXkZ@6qB6%y`wU8crm+{T$ zjPDGwE)e)hP1m0PYks$142whk1i@4!^4whxVO`#S-$~9Y<%^Du${4Wd2wJCe87OQE zY2}~$`tK$ORq?s4K^z<>rTtk@ha`J(C1X7QGrMvG88pmwZ5?HOwYEM z!yKlIz*W5l!9lRus+;s}#9%l!%<2VE8LRfPgo-@jj=(rmED0)A@s*wO^Obm<{F(XS z&AF=60(`qk!1r`0u{qDb7=&`Cb~$DGiT$zJT}X4wB0s z9*zWX`-DNZM)&8$kojgb)?^yCg6&o+-yP*OS6BT^IL$AodtA%4Dv?M*$7Imkj^ zf%Ym3+g$?>1v>V`mj-9ex=>|+;Ix&cztkgrQoT)0KAZ)F$T;Khr{QGliHUx5CWjzB z=j7^6mC0csQ3#cY81-U(#S%op((vfu?2>vD@zFU=okpW3!{&wb(txzZa2 z(%2JhY3A?OycRO-%Z1IgNxv6-?r+5y2A`l6$pi_b)uDot^>G|(xRHg5{Q&c^TPbyC z?J!mu96oAF(4f-1BLroaq~ew{vy%KZ@3;?~ut#^yfXlJ*57@Bn?O~l>cJ%z`&PHtd z?1@ckL>>LzLGazxw&8svtdfaO%H(+m;m2a-qo+T3F<1!cV`X4WB2E3dq!AEPl_P7= zO8C58)adr4m({R*NA$*UrqB7X_38Kb89Vjb1_os1rWn2&jHgTcXav7VOSk+JQm)FH z6zxewalSHijcIokPJ$<1{fA+lA#Hm#S&l7`CW0s#de?F``-3jI`$D_Yv}iCxa1Mtj zTVwl;vAEM(xyM~J*IqI69`xey`D&6S`1t4Llvv}WC>6swzs>X}6e3r1zcYL{&a%+! z6=PW1=0|ZC%GI)o(p5H(7*Kz5I7$EU@WcP?HDb>fVLugIQ6hr_kHXSQ7(tk~nw?IovyE4K)TB*}jq zrABC0tiQQj^j%%9kEX>;KzT^!NZ1TOi<>H@gdeIHn{fEd%*?)TKy*RoOBD`QU7F=8 zXHC>!f_F@kiN4G*qsyNg2}?i5KBb~@9^3saph8L{F_&1Ty@$C_KFZ^&?4y6i85SB@ z?1gf~`qlZ36)9p+<^MO#pst_7EW^y7B%%$_K=yL(ykCs+2G30+OvGqty{5fjf6 z*ZEXxS1iz5`Wtb&i$u(${r=TI*_dIlUs3@o4Fs>yo;~m^~g;szV)8qt9`e ztaTG;p1kkH%YEVoSNCDofzClD-}g&Q^@RSY z$s0U$Kdo65#<&E=2RES}9brPZR7EN|4$EijhWmzs>AYc>qnO5?t8gtR8SqtC>FU&1 zRH~_LG|5**eiI+bm{V-W5z!$RRLk%c z-rzMhGawLYES+PLF0>s8#qTd2U*cWT-`|P5Lv($c(Ffi+c4Z_LLGztH*FE=t8Za~O za)xD_B~7I>UY~)mS(FrI6nT&=ShNB+7d_%Gf^t`0DG1~4C$WPk9ew~mI%6V~l2g-k zUP`8W@Hh>=gJs;S9r#MT6gmcf=J(o!(%N|zvrobFPpsi($bi>qf^|q-PP!){FdbXd zvN)3d)e8O$!sl|z$Npmjtp3-?$2|@qt_>uj?j$30>Oa)-jQ`Z~s8Y;|)44_V6(!4| z$Hx>G?lduv&8VvK5nst9^8VEzoeQq*Qj<(97jr^xRfrna%J# zl1t^(RS{ARBIR=-LDXp(xOI&MNHhdO9?uf2Y)Z`O?M+nXX%t_NN#{vZk=5#Tl!zacrSK}6hyNfq{%oZ;b zpY_=tzL5mS99+4gy?R<)>FVz>rvB1t@+p$i_i^P zjpgu3(Pb~AeqTVK8;>vO@P+Y2z)h^iGav|Meull@YqeSmk2njD^F`F{#zcbTi9U>V z9obQrc?bRW&1HWHAwGD;(sn=~?fpQClmw>(2PqAqN}EedzFJCy_2 z13$lkahEXbPQ4x~S?H>3FS{dhVfudDj>C49qgwb3h{Q@3tz;Qd`^VCc?a54~#{3eZqWaiR(T-KQh=&5~+na>>&Nrf>cEIcB%o&KSmCa_f`%4d6rnmUavjn|h`t}GV(z|wkq zHg}{wSiwsu`oh6BfrF{Sri&T#@NBPXztR7)no8f$g~<@BU?yIu=8tXs&N9=C4PYFU z*ZpS1hq<@a=`G5bdAHZ8SkT6SxjQR~m)FvAROC(H+b3>_LE`~)U5!l5NSd@)_RVQN zvezkhL9+}mY#tx}x#fx(zczI7&A82E1x8K1R0~){;lzscP^0GNdvdx1TymRqhy}Ln!B!R_^V+HeW&+=F`3d-3M6rAy- zqIx^nz}kJslZH6|g|J^d^8@BQ-Cx@ZU5YhrEDt(A-Eehwkx%}Y@ z&P;^op_DJ#=qKqsHdzC zRfF?D!3TO$4~aWglCp!poR7QTwjFe_h-}c2Q*B;}0#iUQb(El6D!oH~H*qXefyb1) z^@zGhU^If+X+EjqnrQyTLDsQ45pZjy4{f6PA31*5% zWX%^*O<&>H`}eDD9w=Q~)SSH%YtbXr+-O%n6N`!%F5rl(4hD&nU|fc7%$pG5V2NNB znHx+wdu~)4LeIG|m>eQJD5R>|R$>wc`-#u{K3xYQpcGFh)W3`Ro{5f5myuT701C_*TwA@dI*nU5NujCbiSjK>AXb<-cOLfiplL;0)Q*q-Y$>-aM*$E z7Eq~^#kcXOR{sz=N#j-+5?T9#Q`T+RgrVhSfA@pKx27Zk-7V+njfm9g_;R1-+cV*e zYy2h>VijJUfykZy!GyGZ+{1k5kHa*!J7X`diE_~yqD|=nes*q4zF70bl$DQ*e+%N3;Pm+GEW;l9J0WBYHcY$h6W5x@fGbTJQugnBaIoly9MpN--ZN!Fi};(6wA6ZN9m9 zhN{s+KJlH`g;w~9)?Czi1+*{5u06h4vNZg9C)gn-P?FzW{&jt6Ej?rGY3q|QbzIFw z)5=AOskWKS#R)+)-KDtqn41EO-~AFeI*k(zXT%Y8Pl=mKTmWoqLLVwdE9{_1CtXu( zHejwiBy#dwTKOcZ053915&MVf$0rz)WF!WXy&TMaA7ZhV@91J;7)^iMHmAk3F7NLZ^1}vQJu$g9Bld?jx7-ft-tnVAecB2q515I+*ggga2IHm-i=;(vNv6vQy9;Yw zc|0OE>}wT8*0H7ZN@)7A&}l>evyT7K#+X#9OT?{ML)p)kEj=3+H7wp13F@N+1Er7ce6Wd%-@6TbAE; z^`q?s#sO35<(CJq!%A!J5ASbP0z%0w>XNZ899kT}@#-H@2@HEu?~3OQASG-@e4 z63652LFHCafTyoq${_fGW4OsM1fFASF5ew5g4_bO_v!U^+nr^ksiT_as(;5?>NZKk zxj+5g&$)@zaZ^JSwW>uFa!KMPz?l&}tto&oHo!=dVJ2tFNmBg`Q+>IVYEg2ZeVE$q zug|Q{06e@#!5g$H0Ri21VN&)DKf)rsXlXU=Bk^!5fxKULp4OFv@btBuk7eGD}QS9g(7w=6Ao5rpEv=$SWVM7Cq`WvvP^uk4{+ zXekuM8L26j{TJqNtN<8T((T^se89~~K2cwe*vdg_fz9I~Nw`4JV$~JhkD}5;XB)$9 zU9ymJaxw~IU3RD7QN`J4bpE#6pnFQKAC__z(Knf{z>FU6p`8YoyN*lhFIa**{|vZi zk+LtA=_@L`>vd|oyBc)tGW&f$tz_U2S2vVu9`PZsRF`PJm29{~n4$$+; zA5OPFLP%1(6+2|BM%gH4%f4D+w5V@$X;Yw&se5WmME54(@9J|WjcE2{B2D0s>l0u& z9~XLl+h7ye(Qv$`FS(+9l*%2woF(q#>i`QcI+Di5v9-_09p_Ws&dmwva$xkCSLw{L2ooOz`^p z#uW;8(7~zXd}5FEL&c)#4;$t~K2@~&%+FMBBXH-lRV=X0Gg3<8tYn~eQZWhTCVg6zi3lJz(Wr~;4n11P@ zzaOE$_J%jalOzoERi121+Gk=cFH%4mqV^;0>CirnCcY_K*Hi< z7IxnkqmcCDbIHUHttL;79+uNN*lorol2pCga;DPEn@b9<8uNIt(Rq8Pi_*|(xY*Wv z`&bZt1x81GG$X+y5cfJOi0E7ecO)P&gHEJ6Ci3{k#pG8kdQkTvJ&9uS*b*5()(8T^ zR=po3o~%YqLs;lYttk|a{|r|3&;jJGe@xM-QS*7-3d&!+4?_(rFFW#zL$TNO`fi_A zynVQ(1Tek-tMT)o0>=%1#Aj_Y+5qQ6D~mfv8nqu^OG(Qv<^JP;aXmnGc~#}~_Q zREGC1EY0qFEPuH=dp7i-+U8gVR*-CKD(8@&{~`$!lo;*xA&vdR8rgLCvBv*KK1g=+}@iWG}DVw*<_b{2`>z?=e@?%&m?BRthuR0 zKgt|e&Q~MF9hxwSZL2=9_ssPI6TGlYtbR^ozz!cylEDOyE+walC3`mr#c#^zlI;}# z)T8@9&{i4p(G5KZ=$#BsmWxeI$T}ZDh&zTCB=KCWC>(_3+j?%m$JybK0qy zw|)EncV5<<+vJ~&YY?Q5D{J{|UmLFZAvw7ceeKek*{%{d8{JKtsT48yfcC6h6O9Gk z>k(~;N;J2L8j3mtB%*f^wY=PiLL8jdPV$`__yr{K$}*hGqx+><)H~SKftIdyu<1GI z1V-ke+Bl(BV;cUsD@M;C? zAq`1*3{mt84Ur?|4DTzQD6EhEyP9g2*vA2wvS{8zGR26Th_*Yx8|Rktg&xQ)#;jH+ zX-Tlwd0TUiHBJ2Dz$^1YEEnhH5felrf7eaWtu>0V!*)1h;Vc2+3dZF!Y~Go=nVo9= z<8~4f5+afv1?$Zq$>rsp_|mnZ5JMOx^Fhe?;!<=q{a@+}Y|J3$hd^b|<|)^+w zEwH%D1&VfvvT;crVv9BuklLH8Q*nvVbj>e~R%a=~=++3gZ&J%g4M<=rkK#?o!!{)P zV_ut6i7?59PHq){_#v}ttd)Y>E+E2G)aRaBbI>l0wYzY>=$vf_?ZQrd@zHjuS zhoJ2U=+t>Nzl-8mVtIeN%22zz#C0|5rb8@zmBPiddhB6&-e~=;*eXf3+4sH7rCpu6 zgiGa_N~GzkXf_&zMg-*g(79a@*G+wMiDPACfPMg6d0>y5~)JzA9fJR?^J0@y#y39sI zAG;`{VNs0Gk|lg8*7KwaXiT1nEDuu(iPSf)qP|@3XCskpbu|6Lnn*MF5+PKkPBj56gFi(p})S@Gm7b$Tm z^e*6~&=z>1*Zh-F>jS1lHwkfr?)gyd?p)15QKk6RWSxi>E!vjIL)>T2{H4W=ZbTg> z))}LNRZj%1_q{Y&jlMgT^m9s78Ns!_XC<=-#}dQ2wJ9qj>BI|fw^z6+Sjd`U8Qei zhjO9}h~(vL4iu4zzSwD)jyv)Ky!&JBj@J>pIz3Y#%smRqQniZp_M)wF$hV;GF((f4 zTMV^Ub1Qryq4E||LV+nMUj*kh-JM7+ZLGYCr5Q}^>Px89x3*7Xz;d7ZDWc@o46b;` z3|S(|r)gbw=4}$W^!aj$NLi*(7zr9=Yan6!qks((#>CrZ!DEdn3uP+<&4^=a3#^#5 z>4)X9+(G42ic<~9mpMKaI7@E^&69TkpPo){F!}4<`v7FN_#^RIa~@6qx^|3$5S>`7{&twtP26|&&4cFO1S%nhJL|lZfY;&|DJ6D-RdQ=GHnN|7f%`M}S6SawyI9=DK?PgLbXRdBY5-Ii6fcM?c zarjDT`sTCN>R^(?Aag~3upPYofM~tF1LEiIpdfLwr25F0_u~cZoJ=yoApi!VKVov*-XV88Kws}Sm}_|3v@#R%p8fVG+``aWg+3n*-O5wNQ5l}hJVXv<%!<;< z$QX{$A^1D&;GajeAlQLUjFFQUIIA)%V|Iec!7sH zm^5d(!_+nOc##y*?uy=_>(#zw5Gds?sLvs=x%_Tz&gXAsJiNd@ToJ)}~n!c2K;Q@#os_n&x3uWBzOc zm+syvNG;Mk3xc9X!&xHI-{tD1s&rh(1U=}SI4?fh$L?)Kk&dcRwEeqgCaT9LdSLpYAec3K4Vw(b?G2<~>k- z-$ZO1@-vkW-~99tsJN_`-ZvFYrh7IpyO5BTmJ4b`(CyZyl~guJ{L0$&eq$Ub$Q3733~J`v6zj$@ zSU9l+V5?Eal^8GN&`gC%fxZT0%1-7X!+V^q_XcQvof_#;r`?j>J>zQcRd->xqg?SN z7PgSb$qn{GZ{IundpX$D_SwTncV?RAkk!Wghnnv zikMNckjFyyir2#akiZ4vE*JqPJ`Gxeqb@#eYvc0o#M- zKq3eO)9k8`6Y@$A)S^E=(id+>B3UkuZfi7-ykU-`b&7PXi84DAnWg-YC)0HrNDDyT z^rE@Z0mJ2V>~v+YUYJ1?9>dDW(XXxB;LwFH+ssWYn-X=*!wseK!!gc}c3K)d=b%syM*wNK3aCoHolCcl0o!$VDIBjqP|D;2~TL-q8|W1kuot8(&&o9hMp zK^Z>GEPLtGV1}8a`EbSM@gD^Pc-ZQoDZ%iIQU!0`TD`iOk`ln75>;8zpc-(_kcoJW z^C^4aa4nIV-z6y?^kqR&qb5dHLyltkgfOWVDR-pDpN}Su6{u8Q(`_C-Qx}b@Wa{IIb}LZMJle;i z`b%mk2XzqnM%)6p&R9D_U%b?>9A_yffK741lxJlzR|_&d|3bz0M^s+8!x9Etpy{6m zQ`Q^KCZ#?rXYQFKZ>z@GSLmZy&j-8kD4R-uUk4plI!xfEa;Q1~HSPQ9vi^J9Yah=4 zKeW#OFrc%7e;NU;6b!w7RW>SZkB`0i5}3wXAJegy?Yl}LOkgXz_#BP}gE9q>b zS~vj`($scC;HJgCm1|yldS#|DWd~brQC=V8ZaFkxo}EST;w$+X&Ey%QY_7w~!e`+^ zER$dwZx5IK!z-gcj1+ZvJhg$=;Jwma|-{nnXRX!ez4l1Q{Qe z+wK(lYg|73ZiekkWGu5l!uFJ{-8Dv$C}8a~ULdIE^u5YjxV9*rC0)aeM!I!mnJ5br z0;=n~=tGGSp;Ev3JIE!QxDy=f-nkOl`lBD8cuLhD3O&au{|q>$M1AQy|6q7(ocV&p zmVtMM@^{@IFKi@P#UwA$^v?$cd_i+fJLPsUFnZ!nWfH_HEFn(;r8jA{@ zs0dA;Z&1(Epk2R!2Y)-hDyhecAWtM#MY@h2wBtcU!7pdXBa`v^XZ}F_=!^nq%K~}@ z(_gpPE&6hvTK>i?_z>_gmz0hT4zvFiugkalb4?)IG^tpU=nX%gFrZ6B|Mgf&SO1!* zZ0sA4fPIfrq<79M0T^2@x%!n;iODOz(8UjZ52Xy^@TvbiTg3_5AS1+pJdWb~`i_B} z_-RtwC?#~0o2JjJXN}NJ{2=S8(=BEJrePK*&*xlHOFhP9I7u|-4CY;;GcB_gk-uJM zOxlL~Vg3Sike4kJv>{7{@sZUc*f2NK&`YLyIqQirEJI4rpyh; zfD-zRSjvf4RLCqlr5p@X11#O!BDw7SQSFy$BsL$jKP2{($ZEP~?yda9RFrL}Op+$6 zROof!L%JP2-$7Icw_<<^d-e{n#H5yIdFj2imGmY7`|K0~C-jR7ieC)j%a6tH7jJeK z>&GFnT@*4q>Eos`IIPpJ&OoBEd~maqP$B=v=ftOyCUlXKr32aisYDNBxceUZBX>T_ zSdkcaYg?!-f}4I*&vo`$5kY6 z<(z1>fg%_0M~gx`Muzu(VvbYt}ZJiVj>Bk#37jrqjf>8USTS#Hx^hWR+Ok zIJ|FHUVvNu9m7X2?886XABujxGn{Ono{PCUor+jcVQ5li8jlt?EK%_egx_MKyQqZ83wx>r`6@KJx{k-zWn_p@oOouIb|t<~F)$8+VrX7bIIDa7QUlx3)-5 zOyB(}XT6SorGF(70!=7;M&gu@g^Ib3tu{u%sh5$hekOty)mHUg0teU zk5=75u_f*56UpDxf1KF=U|3G8*nAB}S1uGN-Xza+j|9$t^c$>+#j!S=YH~w(2 ze)gKp^ke@vn)%Wzo#WPPXuve44`h-ml`cR(<(t;=!xm^di)evjm-la*_T{|olh2w` zo(kQjB{%2qmNZ6cKlmE_=bIQE13IaCG#`yi>Me2x+Ez22nGh;q?(4{*ROv(yb$Q^F zD(1E?|7?F0Vs|4Uh$gr&U&Do4?V4ol2*l#p8%`n5|C1fY0x@8RvFp;qGx9=LR2zb!^q3~m5DYKrUhTATkO3GU0Zke8- za?eo;4*jhwV=nbn=PJRi{mH;#Z#EIK7nKT=GnKFNZ0urUI1ot{bjrq8V=C_edad35J?JL3F?TPu*D})Li(fRV9H-liI8fpX}LJ>JNs73MDZ@ z<#+46kFOtYA1H1|rLAh#uIkKsmRvIvJ0h>hdsY#tYirWs!D)x)kkAn8;Bk^4S_`X1 zazA<4BGeP{qo*ROz-BxR_vBChKQDkTK|z)OzF>Cf%QV|Fjw}Vh6>Ne}04Qne^Zag^ zKfGy9R-)R6mC>#WQI{2j!9z%-bVH-sVGel}9r9}|Hx;{FXk85&njv>N{1#jeoy13nTE->GMq^wU`(X zL3`yOBSw6gA7p+ZxkHZ*-&QZV<+U&j)0^r{B(cxnF`uSviwQ1<+xY*NBp_&y3b+Y# zGR(uh;s^J<0XpC$ZDiAR83?_%cNaNHXpOn233zC)D`XtFwm~TB6u`@CNYWS$39ul! zZ_pF5l&#gC$SR;DoFkL*3Ws2QGnL;*b)b@ALc?waIDBQ%9j$o_=XsvVM$o9@MmT0*4dqP6#d6VGD6eDC6p8G`7AV$!@9#Ho zTrkJ`@!ztiye2>R0A!T2p#~5^MIlNWigniDq0vOxPnG_8Y=B?~D4>PCf1T~1S5b58 z1K}B)NjLUp>t=k74%JF20`~7j>x2FjB6R*kBZLSW0z6s*h=mui|gVM7Bj3EGkx=8+$UOB3;Ai>Jm!P#22{!j$}uy_H2KjuXu`(Heq{*I20tod-&y8i(0 zKJ=B80wL-oAMz;+=MsS?o(S&gLbzwfr$2L6CLhqbkgPHHaT$I?@TbKCb13oizO}!Q zYz9bWREDl^4qZ5-ZTfay7*VNDGrJEPe_WO&3M%1iI=4$3 ze!CI*WY*bV^8HKNTE&w@w|$qx?TehM4-8Ekgw(n?YiC|h)@l0txT@1Sa0fVPf0WF| zcYe#U4f4h*>dRV`Rqbq|^lgfVH+gu7=+OQ9gG+$yIDv(A;r!gy>MP+wguP<@IrW~J znrm+6YV0k0qRSyat=Bth*+{x7V6M*0XP47;$!7dpu@EYB%RkR_e&$sz@*gUF2_qv+KRETXoM}d)UOqto zaw-Egqu$yUHYBp03f7$hny0TqaDaDWX)*xDp1wU_-LFQ}K}JhXd$A@fS7o*fg`-2@ z+Z=yOK#LCYp)bn5cjJDiueqrh;IzFU8(^c#c#v?(*YM=ckrKOP^8)1CDv$3^XAlt8 z&R;2l|6RraZ0LDjY(3$_1QYcF%{jy};~rI5c9yS1EwO;dUNNl*Tq0T{ozLyalv=DA z%#pZhfi-Y)N4L2mXG&QlKUu18IrintQ|=*}KzrxVgTKTxfq`PNw@(`H2Jb`=b=z;# zUaDa88yq`w<_X&;*ok^&NctMUeuq&E?UTo)2Entm-V67(zzSN!Qt+xTaLJm;*;LFd|iA5*zYI}F2RfP zAxwfFtRIijIrjC@!OpJDl~o(o6I3eo!0YY|=#W4IuUc$~Y;QYA>7P8TBlC?}A))4Vs9qeXs|MR2{>KQGFv14^ zo}T`UZ~nKWqNrkVmI*~IY!=J9d7gb}46+LbztTQeSHU__M4tK@MF7+YVtG3xjV;}b z3uCkm&QHl^CfG@>wdhR-ulI?M?)8Y*t!(3|ND_99NMHd4Iop+W{W@8~$$ZXYTOYC3 zoBO#0!Jb2k_Lg z@82zg(4(qhQ@%fcOMw{1X5Qlb$NdNVa}Rqd2|YUdQIvMPY2S=b8!9=xjRHRJ!q=Zh z3o4S$X67eQ)Ew_}QaG$`&99FCFhS&<1^$Ts3?B@b|9d|$8%gg(GI;dPA@78NH~H$| z%BQaGL&4gM<8GCj7>~P9az*cNQ;w4LEysYbiB}K755SUna#E9nn(r5Gu98AuJhQd8 zcWXRZy!HpToPxKJTq&&sibm{knP8Re&mgHn~@`czfqstFLNH`BJaiI4@5gQ*e-R zzVLljv&TP1iGX{UT-6mK9-#M${?MAs4h*&W6PC>PWqi|s1E2+$m7`Msb=v=L>B$xQ zp}!2-Ji`I>^+R7vDWmee0uZ{ii271)kmwczR$nAG@q=8WS?mzy4IL z!1n3&(Jtr8*|f<@ghpm6BDzSqG=sb%L^;MEG2dM`Fv#k*!rQ7_Bom zYgIhk`f&y~F+SHkRX1ff&EY4Yf30z*_t`N%1KhRh%oGx50M46vEQ`{oI*z=YoX%M? z>#6y9Q%WvFHB9|ber_gft+j^bUc$u0)R_8hx!=y!t~wr;sl06G^XuITwYK-(*B7gi zaT--)nx%SXq%6wy4kg=e+}eiKQ|gHV%>Ubq|IbBPI+HOfNBGTAMi;t)>~682PTs!J zK3jq$J`b@2CMLXpr4XKFpUC*QAx*DkbTYK?nGX(AP6u=Bt>*^A2?rok680}0{Pa)e zm`jCQzVogU^*Do%j*sNX&J>R1aHdAvX0o93aqHU|7B-_J@UUc>t$UN;IlFE#ZE2dK zgOkM{fIO@wo-Pa3vDE!RYHQnanh#{BY20Hx>!BUNvvn??8NjV!>zb+UcN?>$nU{16 zt+0!tsuN{%G7}RMpH5N)jo@gI*3-I`?2qEPEC9wZ`X!NzclP;dPep9c?(ZyVO4^?zE^-3Q`T$`ii{h|kmKq_$DI0I7!0W75iF1<7J{b+WZkTI;$` zcfHVdJLIxAYoQcA7?Yf444AF)TMeZNwi>2pucxG>>^R+82-|IbO&7557|IY_-Csxa zaJ@q}j~X)p1K$1@dv6{Nb^G>@x1hx>rBH;(7KT!`tSQ+kvW}(2&KM2GPEmyHTe7v- z_jSfHh?Ffv_F+iIzKpT&zf0WrXL;`VJkR&}<98gt8(sxo@%^h&wO2pYFlR0}O^sf`7TBkG5NeKjy1yhgvMTrC zaF5P%zNQ9YLDyr(zYB*BHq)*dq>CShqeb|5fCD^2MltOPT7rltTmW`J^we+V6!&o! z_t+>FNzYHeniU2I*N6~^&a_vb$GBaup{?U4z9Nyj^=10j;!Dr*+OM0q>#@0p6^1n7 z@vzlFrzF+45{-+QF0I0HMNFc0pQN03J>=dclq|5-jI|_KuMWCZt0qeHt%`e&lzJ4p z6v1|u&Tih3h6Ox~yP^@?fRZ@lXnwB5H{LXkh*oVE8f!Ct2f7C*=U%Q;Pn58PN?{*E zQ8oo_D9^F7(bO&#%}9d`Ls74q%uF6Yr?xHWrT81%gm11z{gk{)C$2G6vfmEh)N3_1=5_ilM7- zQA1!j0O#*kUx0fv=uQ=J+LoLR8_>j;X7>hvE)tAtN3yj}Lq>9DXN;^Rw}R(2F~e=y z55Ij#RvbiCAm3WQk*)PLSrJes^2m=Cg0m zN)vBh>5EYouT7|0E316jlX|ty$u>``;p)d-C!xg_@0<0E?zL8m;G93}>+5eY9UElm zYGd(PmczDj{QCHxOo{mE=YjMBV)wsyx^h z+>MbS240>f-d=0ULW4@aGw{?!hcob~aAiza9TdejRCpKTZ`TaDU@7*Q2a@Oh8h?&D zrr+dwx!A1PU8}-%Oo@?bCTl4CtHn%4YCGI!amlzR{y1^A;4auvv^Z zms5IX9#y5OB^3G`qwddt^w}omRRKp}jB_F?;OFN-#z%wYj$j6AfwrQG=QMPvkd{|R z7XZ*9M!#xvATZ>5hba~e65^6x_di~F*Nxc71p}JjuzB}XnR(K-zYrSLD{}4x+NMvC zG392wgbUj%w2|B2b)Eai)|5saH>eummS1s2C((}5>x0?DQPEKW?z{mFXlUQHr?c22 z&)GYuHW%@MF*z9-jrv&qt(^-(`bd07cy{sSSLp0dZ-g=$U)U(4lJW*aIdPZz(;v!W zJgPSOypE0J7$)oa`RRPtU4<@{A)`F43w7w99$QG2t%KtGpz0Wo65jS8DXUI}tOsQD zh`@pT9u3<_=S2ndz!9!~A`hpo?YeF=B&*OsuF@q@~XBvU>up<9NMj7l`PXvJY*lmdrGf)&<%-g zI|uBYVq^7IR&_CLvrefW2p9akou^ZVMsofk&A)8PUv?N8c<7|+USP^8_6ChY>E-e@ zzSQvJ;ckeL)k&1E8t7;E+I95#`#_nrhQsH2N}crIzRkIP=kTi9Q$>FhXtP8(A7csd zYmD4x>Q*$hIlISEtjd_d83lCmuXnB*GfHW;=V{nhpyjXLWK~eXMskXaJMZ#(XJr;P zWqy6om)~Jc=~($_L{%eP>p`9AeVtybU`LdYzWL$>KZ!JjGf(@I z1O!h0%-NXDbK6mRh29I#&Tkb@S)$BZ7~*a^X3i@~e<%n%H=Zk5ArXV^&VfdKgk^8{ zC3)7HwY~wpG<~TUXUfJC?b{M}my&iO&ca>RUvwc2(OK0Z@O~TVjrI_BMLqbQmuz`+ z?Q@e~3>Md4xl$|Ol_AjmcoSQ_4TTmwet8DwJp2h1%w3WCTTK5|o`1<2xbjO7O0{V) zE)RKsJ%c~+na}I#PzV*&p!LvLI~4aU9TY(*&rCQJJxx3I_)?E9Pi>Bh3yrb~3uoz3 zter3*uJp+))yRfs(pfO zIv{1>X5@E~ldaE78Q@-srkvEi)=unznC%vu^Csr!-#i(1w~-}CVLm!a;o0r_AVfTqOVziGq$2WaTmYH zth6QKb$JA~j*x4{E8_%Tp>3JYc#%ph_XPRJ6|(RK5gU`yTWsF-a+SFZQhpCSK7z7H zsLZqPT(QCa2;M7Kme0xey>?LUKM$st)&;?eqJGT^2RU!T=oct{3SON=Jh`{}bcyLM z=2rf#;#;L!+S)wdN(THzkC$0r5mCV?Y72VJxO3qU>;nGrCa#v^>;6J87j3ws?n3Rn z#Sn+9D$^#*u~-`TcxytDkKd^P=gnTv?P+82g|(R7If1<o`ZcEj_%Hfp3VjBk$6S6NVw3D{*c8a6GgyhdOqO;+fK zwke^xuS6W&LoP~!UXZ~Lw@&^Cv78S8t_Oan`u#<@IUWJSxc8v+p?L}D+k_x=Tzg>W?hg zWgNdDtxyf@oWL14xty@|7@ynLLOra%*itRsQ9(HJ#Am?$qY_hM!{Xc*Az9~*9t~~c zR&Dw^QZ{7y@|dW`Ckr1*K7lOXaX1ZEH2?CSa-;pMU*^&i zP|RySpXurJ$4E;G=jIm+JLzwc&L8PcOpamSgVDIW9gxGDU;WYk+E-mt6pF8z!D85X z%f7sIss@8zHn(UJT4J()x%1RRZC@&&*bv|Gx^w9ayz%QCTqB5+e!LpF+!^8Uvm>xJ zTqSd($dipf_O3PTk>f!OnW8*6v(b5s`eLyosBQ+&V)v4}4GaiKje9#%n)##!hEOo9 zS=;uAm+k$z zSfmhT(&fU~-E)4a9ng&JuK}4vQ?Q)M_-Ye-H#>$>_ai*0fQa zV5WH2+qkz0qCOYJ?Ne(`Ql5m(4V0~b&X4^wefE3;Tx}p)hv#ko6vCES`x%znwe!g9 z^b<{+VYM$#Y&>o(&~!|*3H&g!COhIT#5O1D33};gBGbk}@1h(ho3=Sg|p1$Dqpff`e5j|idH zZ=Y~7vnRY_SKvx`wY8;pZ^q}X%9T|r%d*}1KT;-?ofm#IQ4E%xpt21x~ zCbP?F&^Bg;SLl^r$7q96)33|<8!9(4O7{fBYzNW4hH`#OruUe8SHisgsXsUuy>b>x zJImRqh`+!1q5X}flu9y|uQ@4SHVi?{D>86{YN9HIGb~i%>DG%9|4)q95HD!yX~kKi zKiaca#KwfQ+9n1uiFc2+#m&Fiqv_ccv-R|jf9t!>Hnh?QJTq*td>KisJArrNEj(hm zI5swRCBr7GSt0oRHQ9DM%B_o`PElG>-TdD3GkrzKwP9ADLk88i>XRfa&$g$I_?S|w9Z!AbJdF!E!S8f_Va1AOv9q#7 zWHApL>1=IbkzW}OwXw3&7&VAWJ}obH*l*NCSP6SY@wV;m%aWd1Ozsc7R?Gd-{v_R< z^Pr)Ho3#`#arRjR98zIa5L|vXW=bOc?kZ9nqL^J?VugI1xVh)_Hp&+Pwo2a*F}&OpJ3q&D{& zyfqh%x9Z#5N8kf$IjJw+=|88a4o01Hq^c*`f_xaoCWkL^Dz=nX)Hkv%KDtTWE6?I( z5F|Nq*#;ZHsLM=Z0=cDfE)O)%N|X~-{hp$@yOq-s=Z zR|DFo+0M?+?p1F>l@!!uB}_j$2q&Grk5qWkS2lgqP_5lgF6WBzTa?jF{hXrZ@REz3 zZEr<9jKd@R@)C7Mp}4h1?c$ldbF(YY@N|*9wYh|;amze@5hK*bk7aOS&c)iwhS*SC z93uG^A|ldL!2Mte1c;B+6r!V}15_@*h0qdD-0B7iSzDkgn|) z1>X2oA>KDjGETL&`8=J!FfEXlre$Q!<>OdTM-bC{C*jV9jb!1klxez!DOm2{knI0( zyp%GAUw5`jfAiiMhtWf?FTy7qzD$$W=)aVH2Y_ff(hh>Ve6P^o3K-%g;hG~s3L?bN z`-K-Kg+(vLadbq%I?2JT?oUO7$NCmEZsO@X#J= zcIe$7(x*lsx8G5~&^Ja@4Fc&qf|vEm+2UVW&?F=$Js8zg)AZ3w%qby{;@GC)*Wf9Z z$Y9zlMcAUAA}ci_Ji6hpJijBSu3O_);t^kGHK^?Q@~l!{q0=f+5b+(k`T2HhMK$df z)Q5Gi%mKSVTPx)aw$AvM%2|rWo2-V4>=)0#;g|(qFidPo{8Wcp-+XhTadD7p5Px7J zy?o^VK)&L~o`;8P0Bk1`ToH8s$Zu3`!KKD5f)ddPW|lMqx&ESq5-2m5SPBV6=batn zCa}vN=H7_9S-D2()%PVTztNYTLC=Fz(q15ktnf!1`6_v9zVC=(B(=nNEB7%at-~RHBSSyy3eP# zjqDv;HwH|kjKXanIqHG)n9tsItT+wVgFDAx{U2<)0x%)iWk==T&!-FVHk}TC{erTb zroFqKBiEf7Z0M!VRqTnlz6b~9V9?~tr21Ab#e(qhcVDmk4U6XAl`NMLBw)GJ<$FKS ze9T=5GT`!e;CI~JG=|JNM*XUfcY{&k;gPBHFfz*rLjV2e4pW@Au(2ujy}sPt+v$AN z{952ec;)Aq;lh%tMuxjB*LazJK*pJ_-I)}dm-3=R{0bu%h`J0P-j??AwW*FMT46EL z+Um{W2dM27^ZAoKESYssb=9Hw&$K#O|NECeB%A@`)6ifWpSWG-V109vk`i_hUQK?u zSfC_U#uglJ*g@-hTJ;r~EH72@P*5lAYH-jibdAjN+g4zog=!rA<|H2Yqs7n7S!n-z z{P6F>JM#RK>K=yx_gu{mbo0S2ls$I>Je9+Qxi`1LpHIpK8EF3N@BI4-3H6ncy($Mr zRdKt<4%5^@oeT;IIzT@TEuf_3PQ%e2^mmW`Wt;x}m;WIY*ISoZ-vI49rREKEW$v z@w|cEq)KskFt7N$#O|oKhq0pfB|Q@uA6%ag)S5MwiaY z9Ep|TB)VmNid!8k!;Tvan~e#ym9d5?=q49^RQB~frR?T5zQHCW3OlbCr|P5@qRN4g zj*HGN<2r$}%2n!RB|9y1=;|Xd~xW=@k`JC=0`sCFw505 z7;=tE${OhR6mQKkIvWP?4|rXn7b^8;9F=y;9a;AL&P9ZriBL*hZB8Z4q}Y}B(N!P5 zSUG}+=XC$E`SNd``}qa+es<&3d-)^uI95VbH2tPUy zV?)XgYnmwmoulsF=(pK)$di93jJ}E4DyGcrxR;4HTdv!QvV|$!`OuzzLr6qXSvjy6T{8L0?1Z(*oA+$f#rP9AmFI^^ zecAB46Ti1gw+Q!g7&4(zbHy8dC>4clPJU80JS%`^!YBq(7z}#QFnQdER(WVbs}d-) zk@J2u8`F8tnRS0}C+OT|-gLSysX8WPsl#;%eaQVA;O-2c4#1JNTT-{t# z-q6=TpT(Z|8~y$*%;!hhhL3W3qaVKfb5o~youPV$VX=J|oVK<-wmZ5rS+zL)3@PAM zcxZac6Q~>Qg`2bb4RRYvq2H!%qgB!!WenD|^L?#*@*355CbGIqq?KIuis!Ho8PE{$+TGcbkB!LSb~x2XE?DsQ%?$W+g8S% z5Da&0Z#ML1X9t?qd2=ly1YfXK(!L>54-Ne@+AzA7n2BmgJiEeX05M!~|1tmn|tB0U>E6~N=KFz$%k5@yLInS2o zzJ9SJU7-^{$d#Lsab+m;YLr^JTWz13ncLS+{IaJ#YAcAb2Tz|@J-342TBk%TO(?|D zoRcTDT$y)>{q?^6r)`OA-;6V?bk)knV?W7MFH!$-4%S%m&vF%4Lhl~UE2g~sq(Dp0wV1s}=(yYVvT;+T z+p583cx<_!V@VVtj2qG}@!#(?00Qrzf1ODT^WH!Qbkb6;FU6u&1lR@zrZLU*+lWOc=5?E zd&0fe8Y@js@Y8#fHOcUk3cE&ZNFp7DD|{Ra4u zjRWhHvGE5k8xJkM!jq7Y5CvOD@jExy>7=ZG)8V-3V5_+}+IftodMPAVMGO!5UX;tp zON;3{rMo69BAxaV3v*d)5y96>?-Wc65{E!T`Tp5aa{33Yt*uSfl?%!Rm*9^)+e?hB zVX&@fB-=HrVP=SQxC@ntpPwH-YG{qhWoj}lrMkMU#Iwkj6FyW9$*bDPG^j=zYL`SM zlz38FaymIIao1o|%}=Vc{hjany`q=$JT;|Nje+Jgr-PgtONVRPy5!PKu@I|upb@YE&^>b6( z!vI}2CexDh(CRb`$?jm#0+D)`K#dr0WfBua-0AP{Uy`!FCg#3&x+YGXa_tx?Z}L!@ z-2KxX0$n!wyexsvA!GP~$1!;K@*_EDRn&1D-@`z|4RJ+P!>21@@Av#?98H%@tM76R zv<%P7gz1wU3U5rdURX((cb89PQET2C64Em=J5yv1_+7WNvlJ^>3~okrcU!Sq2Hag% zkPTN#E@o^zM*Qi=(y)E(7ma!yer@3w@r!`x{kz4@O&l=RRnSPVF~oD}^6J3+_RhQ_ z7*USd-N_r=9xbhp6X*C33t>4}2-%+txlj{_yvEJYVR9p$rT~8ykQ3B369%$@AoXbVK>) zX%qAo!Df~?EB6=?#%}fZV-41>i{2R32gB$i`wDI2YT~eo6k%Z>xdtVNZCs0nVOhke zQ#irc*Sby--6OMmUGaS_B8Y$u(x5C*IXc(Z-QLG~HsUN|cSrI9V+C(f(e=41y9I+R zG;L*D+)H?OEdkdnDYm@!i&(vtw#z*(<*4@9RbAAYYBgea=d4o*n!i%SKvOdU<*8i0 zS$PIi)<4EVGUD(!_uKmC(_ju_-($Sa)^K>t^P0mK7%qmt|H(ROG0)v*l{F0M=}LxX z_(H?lHRF!Kv3$mp!;mPYvP-kS4TZX#>kxRY}36ty*x<<+jl?> z)W8lo@tyT4>s#D(OL?Mu`lEr~-Z$><>rcdxGjFyUcQ=wof3$h^le_-V{6SpcN@~c7 zLyzuMZVF0Es}r*Xm2;7V`A{2!2P%eOYKQG>a>f>^O&_pfU53=3m2Y3 zx;&Rwy#&Bitv%}GwdyoF zQ&!aR1Ir78rXKq3M^i`sjHa5Xa04(Lq6Vq~Vhj%|98Y&gOJMYIoGe6= zreet{{B8M&a`{t}iQ?k;^;DC`i_hIKQBcnc2rk#KnjfMHA$CTnm*rkoPq>-l_-NH$ z+22v%LSVh2bqSa>+Kh!)Ly|0O+M(p4z8Co5cZe*@nDYN5ogPX))3d{Mb#azrP&J8iDfcg^WC}fE(NOI_CWr8iI z`%mRSMGQaD_spKfkgJ{HB$2%yCR@4n>6i)`{FeKl#vgbwTIxi&% z=U2LXIoDui1kp!^pl!Q8O99s@q1BH-jk=92aE+p?)}X}RCn1VFPgd;%8w*iJaj~A< zPW5w*^(@9=PB=H6#|3YAHwV%ZBS3>^IdJuWJw%(ik+Gj|ma2W%hKZ@1;iGg#O4T=|jInCG=@eSw7~CN0qw93PiC&GF)>fkIuKh^K~V@+7AI z$~3Ta$nmq`XAG5f)Y(D1==%xoKmA(1G-RR^d*2CFtFQ$$^_b>YUCu@Yw$ zTZ?%WPy2iOX=RGk2u&7+tq$pO7kngjiGu>xeCGj*5o6e4D}1&;)5h6C7cgHa5eh!V z#dG#-u@1L-Yqz{X(AVVSe}d}UT*cgF=|!UX=s=(Sdx}BGzA4(7SlJsjHQK zVvn{>i1fmXKbRN*MVd&we4*kxXSM5m58~GbRcw5GXEZ{+VtDpjk-5nuPn_eji}6u0 z%B`E?6(&aGhUH6P&_p`;b4?%8nVZMy{V00q&nP;n2HVl0VLCU7GSZkgj8WtQ?=@Di z+NgR_u~}>it=|ZLKB+PjmP~Iph(R>T``&E^uFYkf3HT|QaR11qmF0kvwTOFnYx{}W zdKLaQ?QX>-=o0a`pSM3FwtAoT=+A-yrXB6=KWmkyIf?zt*2FgHP4o4Mk0BKW*EcEfc>K{&(jEWZ8CvL~}uzixYrUOEPhVV@GbZu>(P2m}0kFZF%~z5Hi6gS-ZMS0_u_6`R-LBbgUyGQ-lh>4s_f_N_r^ z*7hj~;eCC5ldG$TUaIgv+;9j9v+CP(O>#K7s_0hGnc5Bn&)?L^9^8_w27^) zQLZOK%X48vV6-&>8{T> zl{7z!*3Fj12Mt)DPHoq$ON2y4C(6}|-4gpMzw!uk%ia`DgYX$E1KFEE=q+gyIk#=o)0ZMuZl}b%IIu` zQ8F$1DYU1M^CHvC9Y@fOlZtx!`jI9YM~fA7q3xzIvvV`uj($sJ96cXkYlQsbsg3Nc zW;v=IW;ONcn{)$`KRHu5@#Uxw*4FUL|7UCEIgYc*S$~*Q$4P86kD<&_YyRz%N?nF& zx*Zg*Gl3dN2c528N@ZnH9ffcb3^K@fweWpf8W*-}WGt|=vFK!lB0)RHM}hrpVPQF6 zR)LoPml2xofWm0|mX`hv$hok4+>D3xbs{qyIvf=zS2&!Q!SI^`w_3yMr?-vVwuKba zG|AvynS9-WB&%((ef4boGn`qb#po%E4E1M?Kn8iz%Zs%1*351T&ooKp&Q)KbYNBZ@ zMbc-y*YAHTs4v41Wyc*)J!nI%L=M+xS-4~1gPtZ%W$k|MYFS^TADw6qo0=1~CS4|Y zcy|BgVgK}UEy5?gsFRT=JNcgRUQ~)I%5T-L)gvGmM&$ghMIy=IFA)+XJ>`EnYh-ZR zy6g(AsFR(?aZ|ZGeUC`SL`Qyq3GKUy+Xw#UTn&``+O(|}8Qf9Fbml5a{TAMj)a!`+ zz*)tdR6B#wI$boUEl1FH()xOeq}8{%z3<-m4qg{Y4!^QpP=M=g-s$m+bzEI*f?wTr z7ta4nX?jtUm6f&sS{OF>jFRY;KJ1O&E;4T>S+D3i``glf?>(@zrYGXIM~{fAf{~d# z4bWd%Y|dE=Cm*kp^u$Q^-!-;NN&B^{M?6^X77Y<^G!LPBf(KNgiy!wwNXpf4zqHvf z@%#8|y#X&fV%3rtKAba_^@@pP!L0ZBzEgDG5AI%qiYU*!?ybGoRR#3kBKbO|gQEBN z|9#y*JktN~gc+26At6OtxZmb@U&Km?TfSc7Teo1KahWfeWJyKY>Cg5x?#(|m?owt7 z>%};2d6^pEFCWTx6o z_GTy3+bX&`@?%GG?hwWp%U?p>I6CY#WFa2wU7bXq*UV3NqQW0=ru0457ko?adqb|c z_j}>j<(w@gatBL8;V8AHWl)m^i3v?e{hviy2#eIFFDX-R_vxUXVzF;?YR}cg-7ZOm zG2G?g9Ew@PSI2aAa$yUD|B!}2%y%m9_(_-K5H}6EV^x}zY~*Y%p7P_M306qH!uE)2 z=s0er0@*7?(kj~SzbbO+w^ig(IfD^uB^tYEv)&bgoDD{Hg_#h z08WDp1zR_x6JZc~?$OO6hix5-#4uexPD;u}qJ>Le2~SbCm2hbye~EjqchP?ZTBv^1 z<_bZ7GK@PKI(@ZmF3ipQSgBcFUXhGO%j-j-CvYdqZD`qJ`>qNZk%b^91y!?yjeF{<@l{+%KfRrSV(urp!{y-$csKhzs#b`RA+ zS`Nt{#*S}3^{PrI;Q;P=@?vf{%K`KZ5OT~B0C?jt;WKM)CS`i+c#|-jYF9Yzy z!NLt7H?Qp>qi=7rM;JWCo|MDhxF1M?vVM-O-r3SBb677_QB_rB3kz)xKGjnQxp=}_ z8O>>lVxbz=*N-z?Lz@q|4^2(CZ`<@bO9X!|Wyt;|((aQFZABk(f(ne#i zo10kJg$_e5wULoh4jIXV%-!waNMvjr$7yTpn3y5IGI@C!R~MI9DQGo5im8c%uhUsg z_I4Y|`KndWA;NaJ*o!v4L(W<;ou;p%&HlL;#7B5-_#1R+!vh1A`z1|&gEkd@Gqkf8 ze+*_patH6X3h*_Ij=q?d?T~G(FXq6GORc(yZ7*3~S$g~CP3Y>-ZVB(u(2&6Ge%ZN( zhBK2>Gwja1cH<<=4l*7GAMf=~A5V8fx7-b`0+0;?fpv0j?o{z;ztA^ZAGDy;B|%rE zeyPPY8cE^@lgCB2llPQ|e1~U$sY^xguKe2Ni7EL4Ws8lx?K&e+NeI6vh0yJojI1lB z9d059AaAeV`}+0k=+3sApp;aulqBM3t&7WCnR;`qd20hz z&rNn~BWm0*rp24hcLaaV3D5`D*LikK7Ej{@8T`ivK8Lq6whVUW@(LJXCg!A_cDBgH zTpf~CP6Ut)Q!d>T+YixH_tTe?n#*S}Efd=`BvMYYois-3~Ai6 zV#_^VS3t?n;Jd{fRnV7qU!p-94IC6M%Nc3RkDCaV>-PyC$CP+^;zGUT; zaE1Z7l#&vyn-${VSl*exZ2o+r&DgC)QaunY6Ls}DDLa=>yDsN5c=92&d9 zU6ji{0|TF~WgO77Dcb3DJMT1D`muR}cSCxqDN*+{9uczZmT_ zH*wxQ5Is3*iFPmYy+!*Q#wy}x8I}<*zxru%>s7gc=Zf;$ zyuRwph3CD1=~DyvKmD6ZK(i-q&wCj&OS-ZfuQ$y%zl<@C*5p!e++Nruu1asbAE@v$ zR!fw)V%{ooxlMZ4`=Xe;C?m#_J_=sB9zAfO;=_3)e!3+bav>kw$`Wn3npELwLeLdjPj2^(A&=_{`Bs@A%j8y88}_ePi|=1p@9Fi zD=mZ!DUreH^1twJCnTrlif%T1x3m;nRQ0#IWd3<$IA>t5xC<->`?9AEsI`j^tp}?} z$43jeFHq)w!S`?T=v0uc#p|xz^$K&{Qb?N!JMwA}Gtj17jS|m(CLBdS>nqE+j z5?kzd0tBKN;hI;etYe@P*$pw}V~)s8x2OUu2 zj^zOwuIVGPU7eyRo3O{%XfJUu;^(HUcw2lDacfYxS%=pdOgct`-UyU9qbfon#$hML zh9E3nWT_J&^|&y<^isrG&5i5tbA~ue&Y0Zw_4OOg zNK0aO&Z>oTWsy7?-0J)4AaW4w?V*6o$vKs(8=IRZb`}b!s8~AOnxb3;%3u_5Tep6^ z+318Kz@_4Fe9qWRfQ5l#`U%UQu_ex%b57N~5fOhOF6?cRtMSvWh$1?;va+(^H8ED| z8~H`XwPk%`PD7&B3ucDOxmNU%bWMGgxa==+gDdkB6R+Yu$8OZbW!dc9A{Bu5s_!3V z>zdzrYUWkPtKR697378U7en9Iu=X6u`dIlKj&0WGopf%aL-O4DKpi8Pi6si0*V_O{xgh@^fRux5bNV3L%$y&F(D*Av zP{;ygTrfFj5Xd?uEp0CXZ7%9pBWUM;g^|Ot+yDuJxwz;tOSw;Yqgl3wkIfmuj5qsx z3N=Q7opR#zS@;W!m( zGCv+oGi@Z8I;fn>m-ot%c6|j4Z{|vJ|FCN5c8NhUR|Iu21+gXg4Ql7ew0{6$8AUNs23DU7Y{nq8!ZTFcfeN*a0q02FFJa z*%FY;{X#wA^Wg4V=+MRpyzxnhBxlC!!8QnIbN}G4Z%en!#8X!de>|K`089~(HEFMu zsY`O@VTb{`A`#t>_nNuM`Jii_-_mm_&W7M|;d=w75Y1lOjK(oBt<}kp6UQ8|E&V5L z^>QaX20d4blFI1dfLhXV4#wupD{+lXE_vpePw74yd-?3Gui$D%Z)1aIhT6INQq=No($j)kivC!_OpvcDv~5TxmL z11;XOilU>nE#cNq!k_(o@!;YSu~SpM5g@gD-FY0ZTZ-%PIE%YageHeuf`i&zy%oqS zvTdiNF}a6+C_F%)=@}OIaK%bqJ`Jf{#;qe=mfD^yBy7duE`>+P3 zl%XPwxzzSNBV$C5*E;1a8?o^95KGS|Ys;J$DE8M=l|B9X*yM^VC5a+}ie_f!1{U;P z&jik$v^?H3J;xZ+Ei(r!X@7^U(c2~5(|Yxb*kb&XpHc*pER93Yt@f*%-1|tnR(wb2 zmpOa0$w1S4DYa<8Y@;iA*|oM-nyhi9a=iDQgQH`aTcX^J)0w^RjwJ-QSW=>{RiJm`ls2i=x93nZ>IDOJDY%a zRA4Kv^CYXIvtzW$$d4RmFNHp2hKX%8#0)gUS6p+ z-jVB=Gl)XZv?{F+fBR~yOONTR+{qSiG~v0jU^2i_(4Aw-oxBazC#1IN*~t@7*S(@i zR|kXltAkbhS^t-eey}v>VXCsJ9B+{jjZ8p+p?^#=Uc9HgZzQ_|_KoDzfZ?2gQX%w| z#`CxHRvq(p83;1C(JPW5nhfNCAk2I4`n_`aNcTXdGPxBQTu4W2<}|6;TIRz3t3SBx z8y>)V&U^*6&*F5>D&u+NN3!V8b7{ZmpZc#~Yz0WxSv1Jwq=-xJj_kkgv1?3=x5x?q z7fbbD8U6BG1ExZPitw^4`4)OQ$y2*8JQuxoEmNnUeG3%FaYz*%KS~-**Q1mI(kKRW zzwV-dH{1i8`u%J@FB%*L?DHqhKo}7JQ}+N2a`Zv$#gil@Vf0&bU1(N6RoKvB^lniO z2B1wYJ5vVOipddB9PNjBWC+M-JQ24^hNumcznM(xBg_Y8{Qos+?rmOkaO!|6!J$#b ztmw-LobV4Zi?%ZureX%XGs#_4*^f6C_e1KYM8x|z-0?Ol229i`P{M8cn)8bs0Ar=Z zUPqFMO8EYU((LO`pC%pVWo_RV!M8bQFj1<`m*_7!i-&eK-C`wCWT6uHtw+Nd`|Ji& z^}S!~K23QVBXmc|K9s~Em-&34@XPxO-yJz`))C~`xNWo0jqB!@l-%y<@7M0WcCYm0 zk$!wSIebz@$qON}^W!Ne%pnr5#?I)U9|8PigEuiN1^)Dx1MwGF7r5ii-sja~2G4PlN-H#^IJ&ptzs-?Au-!m4T^T(x`{ zaOwFOS^zd+wN2{Y4E4cdrNsqy?6f%I_vY$~RJCs`1> z%Pk4r{rx@<_xZaAia61jR-~&; z{)$7xe{`92@dig+cYeK&*aTPYv;m z4Iqd29a0CWnQ8NIPG#k7UtbCU*bmO1_@#fkA%S{5+J@nS=?&-R3DJyAG+hIJ3frcu zGxxP64zY(>*Z+#6$S<*Lm?6!NtO3i>w6`zX8iVho0=}?D@h^p0DUFIyzEY<+JoihN zfMxcw1Vjl>DF(x*srjQ2vz0!yC|Adr)3olb4KdHs_w9emn!%DTVjW8SzUq;Jc{3pX0~ zDTh}+5WSI!T%jXj{zWGa{9N&GuMrvFf5V|D1#wHcQKn_ED{wf6op8&|dwBL;7k9l6 zsqFOK{xcF!?H_#ytLE=5(I5-4>dC);0>^-w60;+r|HGH|?Xzz4?_Vu^WCeX62ec7Y zll$Hr7#xRXdjbiy{B&zSsL1#IT}U+j4Dk5(`K{dxsYd~qT!Lzqy$1SOOY9ga7k|Th zKRzg#{ap%ROg)Yh4!!zB{0JEwd;h~9Bz;oCft`E$`-^Gb^dm(gQ0E}HBSx z+Mz=vzxaTNiv0b>9MW3a6K2Zb4%V!5K2oaJ<)^QTzTjlCi9`H1sf4(^G_~@FU&|39 zwzx>p>P!g~OAd@+AAXIV#CFOYdj790EutoN?s12}Ey5Vb`M5(6oG3L(&vWYCzCfb( zYa{ExNlTDZBiUpKsIx-RBt2~U(|tYVZTcPD4Ls-@RO#0M>}b8`P*DI>ka_ouY3J)HZL=RNM7EoiLm3)h0xDAS}0~ zFJFKdI}o0?G!_5RY8Y1JlY=;bO)M5xR!&`DV2E5=o$an{#DFpz{0{S1zQNnQ%b4Bh)Mp zMT8i63q?Rf_AX;h!J5GN9CLjBHfgqv(HrfW^>BsMR$8d+%XNB>ZihGEbEbUhC|fVi z0M2HH1f;sv`w*ve9^pB)4InFOP0bhN$tUI0c8WuAQ+YT0Nc)@Y{Y^H10R-1v20lvt zbSm-+*kffGI+C=Xbh!gtR1dx-qdB)C_6FAAyKEqO*uOg;@Rg{b%NIpSoEW>%0}R`A zzJpK$m6H`I;&7%+d=w-l2iPd)hw4K}n3anP`!CJv0WY0h!P(-XhFg@c3Lo|sX+26p zqYgbkdXTo`fwdL!Mi0l(P;X%Ewmuu`dm0!eRa?{9s07wlx&JDl_3eOw_*0VL2pfVi1R{P=;KLD)G z#)lkW0n=9D!w_e-t6Chu^YPRa>XVef_JN(G!zkY-higrnb=X)g&`Eq|@Bmp@d)uL4 zl4c=v-z;e7Ia$6L&dL0T_}QGTm##niMM}d@CGQ`Lu4zLC9_Os4%0Ub-hX`JZ&BIgj8xbQsVZN{M=<>iIXm0XyeWfHt`BmLJuY}ZZHh8kB%>yHm5 z@HAy)?}ve)IFSQ>iHIci*3@}YTYLP{J=Oiw6;;{%oEo>n?riV9V{kXR@>m$ZMV~go43=nc z`r~DmZ)+P1GxozVu2m2ov0d|5AKMu>#jcqSwBTegSk7Wj_|J7a%*Z?Unz)$Dr- zGLfscZ+}=&Wt=tO3ogy)cZe;?d#G_mzbl2;C&F?NtN06hib6QkBhF5RNcz`n}+uWDlRq*!`gtMgzE1b zfd9D$o-!by1pYUwd&-1>N;6b()$tY)sObe(?|<&?#go{av1Nm|48n(JFLm?Ole$QL z1GB%$Y2Hp^_iC{4?LPJEG&Bo?sua{^O~4aqQREhNoyBzNy)398d2Fy}_RB%d6&JII zXLr{u&5ZvyUg2W;@GN?_%?7xk_jBzJIDAA5bu3KvDaLXe`krfxdF^;#l)S02B-4)- zH?gp|*N?>pO0|9Spt|6fLU%kje!kk#asaANkemni|3YOyD6-nmmbFHkU-6gR-1{G~ zNsy+&QWs6oCZBu3+5HE<{OVF~?|G7+@OeMpb3W-DGe`kvwH`}_;0u2Z3$M6lnt6-# zEUAZ7IR^@RqbsGZt(dw&$*iP8ipW}9Biw1w{O>M1V`KWCd?cw=9Q(9hG9rK9@N6;Q z*C^bf)bk3n{yYZ3&ERa$%s$qLSsdieg_Mtn05V*BJXQ3$UbcIHAbzEuGz=ibw;$kf zxWt5*jR;HVwX>TK5ccB&cW04&Q>yMp1bD;8F}K4^otBexqMP>h}nr3LZI zx3}k3ouNhP&GOoLam6Oh{|{Yn6%=RCbqfcF;1VFX1qqtq?hqhA6as^Lu)!JJf;$9v zCuq>Y-QAtRA!KleLC%x+J?A@r)nDgkF8X4sy6f4ycdxzH+M2hdI~J!JNp<6D|F7JP zq4D2K<@MFSjaYL*uoLZXV@)kdOKdO!#aTK&EKHnMXI}69A^5~h@y|3#_Ym4^O4&M~ z$C_)*ZajQbRn90#(Bc*<0u29<^ieAVh*Tx3xS*emkn;}_|IfSH^1tex&ZQGBfHOi{ ze`{~|Jq<_-7N3Mz$cjnuVV|_$&Qq1h3Hw83MnpVYXf) z$c(H3??@rqlyKm=wKMg~FXHwr(F9{*)H&3WOGIORV21eFKfU+F_&?Y%kONc`#wkM3 z^1^g*d;~bEwU9+oUPRTpDvA*2hcXqQx7lLiB{4AjByDw?_`Z;-jUoxc!F&qQA^Me{ ze;|u7Uuov0@xmkW8S)O+kBeDpIZ2N1VRF5CI{eVucaByy-gZWUVWz;->w#eXu7&om z^?5cHu&eOi&Fb3UOyMfw)fW~@Mx~_`U8dd80JF|hx(}R4*sBNp#wu2&PA*Q$n&wGP zF0RTdD(4jfgU)uEo*WUr#0!5#8a^|7OS-=9cfc&e`U1apw80kj*#2jpko~`DkG3Ty zC%b~NaEB>p>15znvS15ns$KclL4gjo^T-ELWG=f=eoH40)64WKUu96lJ`QE`lP9{B zF{Q)K0cD-Gw(V*gr{vSE)zT0L+y5>#s&}q#^p|N7E?@>*Nh~F+Qs@eyN%xjGj8-7{ z88U)py)7nBU-JrZ+p7b8c8q^CX|J;`Und9bI>4w6633Cepzk<-pXLRd#})}dk%Iu; zjf0z8xMF%>3(SZDCP))ndo_fV5 z^0yeW6>>pEfT&m2o{yxav65SDdd%!MWupBUZ#U6ARl)y~)O?(V4 zUe#IM+Ga8Dqagm)N2(;SbA6k9nc&Y^~YMJlvs9P4~R2BL){?x4e_!?3tr#b`|6rr zmWe8%zFuJeXg|?~dKthQXlp@eymS);$ZTXiEC8KKo^+SYM82Qx!Q+LEWn4vt+Whkh zdOD$ZsFqT`a7WxP$jx>JsLHx)2hNSH3ei>zW;tnS=w4nATs*&@`Bfz1kFa(49r*cr zAx5p!4P(44)-Exvk zMg20i*xNS!L8ksOYWeA^^vK)6FU^dclxeB#J{~@FIAn=WT0efF+f71EM)^-R@+L!h zq=v2+mbc$<^C5*4+&e$Il1ey`fw3rMV^cZh?y!I{E8x=I$@#+1GkE}zm5>!kK;YWK_`6hHNrK;8XClo_ z+Y=}B4>5Tv461jXNVHS}124M_HDu_@X{ic{*Z`H;Pe5$_;INmAkO4%|loT{m1Qo4i zqjuCB;o)7F)~`PRp*wx;_IT}R#>QDQXsd;Ltz2v)mESnM%B{nlopyu|7#&FY`J#hf zBHn)URC>#fU%)TU;x&o3f4s6bZs^%zaxE-mfHwN8dUcB`q9IDs~cD&Itu^qH%MFY!!&0jJALK+(;3c$BI6Wq6Ak4|kEMN2uGm6cBLmRNTFfaZO zaQVg764aR{pg4oieYk0+ncg*L|40KKzk&jS^Ne{959*yr-5pEw<2ffOe?f#o?!#n= z!hiVB`IYVC88sdlgNX!E+01Acvug(ten z(8t4S@%IM3=F_~>eHczUQn3{Hv8VdD&^XaifAyX+g&h^}s71Eh2=<#tzVlGyk@*c_E+9<2WQ750T9QN)lTs^gcl?#aXVA|? zULdR#!>ci^KO3w%PxwPKTE@@Yv#v?gOd0MXIEG?i)pYqepo%)mEEby@8P*`*=L^RL zQ4FyWwS1vYgFkUtxCST3Zlb&;*-e#CNPk}Fb5yS%u3p1phtCJ4PIkKmB=NX(g#hta zan-3kmmM2*%dI>gBtF0GZ*80QVXwJM8$K*^rcFCb_#vWM*f7{-ZFXf!W>`>N6Mt*P z?Za^=KQe$p8%Kfp8&SuE`(T6L@i;D@sPdx5CARJtZZ7hVbMkX>dK-eii`mQ zGEZlPew1w%>YVNx^QFWW_TkdE6Owf1c6H2L)otOYL^z{`|vZEr*etM4O5 zI?wzCD*`Z%ey;mkO8F}R8JH;6Hak+em1=-nNo@Z5{F z$z$^Z0!&zST;kpWS=eS(ve?uz|0=+8<CAF3Z$a-eA`udNh z09o*nWK9erN*dWrNlYW`Ag56K-PP4Kx^Q`=XBj?we?x~3j+SJ5c(@B1ceDym3 zz!mtBye4^g^E#KE{h=iu`AEY_WO#{?o+N^z!i&wvZlBw{_j{%vhVRCI;4Hu@c!zc_> zJ<<5_ecZe;(e~F*4vvvwuhy^A0B<8g5<=(txjX?2b`f&FHdYQA{=M zzt10_5Y1XSEbNg|5RszGCz{LE4(bhzj<{s)<7o~zCh9ca+Uik17-t<90l31t3^cS+ zK1EM;*r`@iqnVcY`zWk?4i5|`1qW?_S^}$goTH)%>h;=0?3^iDcBV*Yha2enSh%rb zd#Y=D%uFDrI_M@}fgv6RY)f*Q@w37{B{dr5V>*#$^T(y2&jQ$M$g-U#BITVR5qf}? zsiCQ#{jx+>vW0Lna@hNNGo9`1RTl(Jom;EZ6;ioU|tIb+jk}lv}_!++Q!COH|T@zj|wt33; zio9(55&7FQe=s>=VM1@Pf$Brw016(sdcs^lLH(=gyI$@Mj}ou+Lh|uqgp@us8R5hK z&!XfF@}tPR6PFWsDr1?XpEfqkcBPeDWj}=JRW9dJE(JM2{(irVTu?`9>&>8vFY?{d zMQoc)4+=A4A4%f8%FikatY=NK>4a)nXn`7D)H~Ji-x^;Tw_mLbEl&Y_4^1v;dN_fD zFfu2s<(qUzb(?)WceTJA7Y0AXQ5XMi=RnEk(u8wOMqsWJL%<4NQ}O&Enmz8Jzmidt z4Q+gzW{J450?%gp)o?lIe%x%_jx}xV@O!~Ox-_c>(*o_O0U0s%t^WFdENyL<;a4<^ zTdvlb4A&kFDMc9=fH98t)UX39Ka05nKq;xWQI`hdM8$8ljedF9%M^r3#RnwQ0F68< zb%0C*rvw}hXP+Y+CIDOuPdm~<3`6O^U&p6%2M!GR>^Xnv@D{$QO!L=>z-4}(GtT-i z%Wq4KXcw0~HDAId=DELmr@h$gdaY|Ja8uJl*PIX+zI;{oZqTUShtz*j+0it-{Jkd8 z^Zl#)PRr8vOU~7^;iQ$s@`d^&Y%UuQksV%2%H=kqmXvr}l3rxe=xuW_73g)m)oHz! z8z`$l=xPhyifs?2;{N@0O9FP{+GG#CErmFGs+TdQb6-K1q}TQA#K3T&8w zc+PxORdqCubGcqwV!g8^0!o$mr4~f(=$GV0 z1D5`H#DblkmNH+TJvd|@P#(E+j;12{`)d>Za-gX|a&=1My3l8okRlz=luoSOS*KvBj9X0=B70BbKb0p@=HI$`4zk9{@)(E>dUyQ>}kgv-Ma7W zag=07fc7p29njuoC!+n!F^SQUUb5M9z>!$C1}(I^lm6$N+$-d-TK{KJ0aygiNkIZz z=t}!VaqGH`bO1C~=fsS*kIa)MD`Vs%DXNXziuK0*-nHM^txPZNH!U)YeH7d!8Ho-enZigzw;qcfL_L(YEp;`?XVJIY#bpc3qw6H}G%0Jy}N^+igpLGN2K zY)t`bht3qzv7qnES_+!U__hw$A)vK7*jr(`FIKXC5NmUM8i%K3gyxk zmg||h&#x{o%9sjoI+d5g{~FP*XY$ z!(>sW!c;?=?59Kks9jmo#-sJ?OMREMK9|Si)4p@Aup{`}X6!~^ezKU|;oFB{4Oy<* z;dgv>bc#mTJ1ZNuO{o_O0Hl>&_@7-D;ss?$XOI2cby?TKYSVvr-BcprQvW}TLI2%# zP>Bm(y&9^e0L1FA%SH@>4(3JE&J|Pb#wGsxOsSQv4~z8vDk_*~Po&RhUWmQalLiG+e2nN%7pgIhUi}3%b^51LjU2KnE|bb2q<8+S?ZR z6V(}J?T+Jp{93f)e0|jT8&AzB7s~^KfD7l2!?pErk?@gp{THr@Q+lnocN-!rTRJ=@ zezB%*w_g_mR^+^4L4he%Y906KhOja^$nf|%wyA8Br<<2VE+;Ii=ZLVyjiC>yxg3$3 zy<{~UF?#UmKPUn%E9Wm-2bQb z0pLgUsirP_1Ub+1nZ}SX?dun?no+WP7VNn_bFwHK%E0NXh26!G4q{5P24v9c^r(ip ztbmk`)yt#|%6n)__Q+K~2H20a+MJfTBhO;kF?YM zsd8v56R#8amZKxh9`D0IKJY>;mb)_`5_t@a`w@HL$K%3NWAI`@b=$2+=T2rc6Tr$S zc?&q_St|XzGA;MNEs&x9RRyk0m}SI6Im>^q%pz@Lefa-bv|&Q>p=N?u8ob-jArN;5vxO}Irl9Qs;=q}0{`363t1G4@bC zE6L`vfrB7J!#((PlyiKAtJS!iCx#4Qgaj?+S|=6=a zsoaA4tN64q zV+KIkd%Wb5K-s>UrOFwLYqS#R0~&r&Hj^;U^`&+vjoUJ92zN1Ck>&aB?OwI92g7xK zlrpKKw7&BA^wcYVI49WBOTS`=vo*M&96s(;-4huvs1KCZ_daE(sO5Swou<; zyB1^PAxk3n%nug`Fv@qyRk%n#4>j|dE{ErmN2=QbiQu0MkHEWTj+KAR{wNq|6nYoe zj9wx?HVq)UvLo8@03v|ymB;Hc+BQKgS%wE3*>**a?+@v3Olj#g{}?Y=mbYueSC8)& zDh~mdz54vlWqVwhdkqs;$56pH0d4#OmXoE{$+=9YowLA0X>X(Q81bpaD^UYU${?fj z756!R0ciT6Y}E@AU5Vxd>p%6aiMHOfD%3J|?N~5>njN)$+KzSc>3VIy$JyEn23_BH zxQs)o{PQg6;UcXr2v(PW=Hs_I(iOMZe|vVTr0Zf_Rlc`<8f?*f5mR+}?3-S~@3`bL;kqgQKuQnRd57sG@-h-R@6W^4lwYKo$R7mv{F}zxIp1 z)J{z+sHsr_Mm#c64f3nQ0NGRHd+mT^Iffi=9Y6-5iAIQ+#Lt(xdTtmT;8ko2*U{Db z8a!(~5&!MT^=twnwvr(kn#^GVrP}52O?l`v~S1HTqKs^ z^9RBB(x~k5@0oP9Jo@xLE2ibzQgJj&e!ij*v&s7Kcil%boVx$2~bc zyb4%8=qmBU*Eukp`Y&Fyah;b7g1U6YTXTCIZtSeehWfpRxlQvGGvhLmRkuw2 z;EKV{>RYt)d&jhB8^3C@CC>!POwRk>#S@drkrUs))NdV2@5_E=V8BDulOMLo90M)6 zA>kJ9oPbHc`*8Sj;(5Mz@%f}8?NELYrRYm^zIBhYP!`j7lIs@VC-KWJP|7U-%`Jah zDV>96dgbRIXkcSw!-cs#=rVmb%ZT8yH8hm&JB|)-t*Qk_icfX0Bur>%+zkyO(;_-b zi=c|=7#KT%H{#Ul>Y+qBc9Q!}U3|v(Y}0yBG%+AxdaPVa>J60Nr~Q*88;mzNIhpr& zZB|OVS#oA^QLEAZJSY?X-5dCixtQKw+rcK`0Pdngo+{O|f9`0~+LNDyO9TE{i z6-l_VM%(y#+wMBq0H<^kJW2PN6QItM08zPl(v++3aXHDBWUNwt8f8{xN zurRde?XOPqKH(c*yT89jgQ;x&K@#J+)q>NlC)+h0Ws}Y7)F}7P)dL+W_%>Yzz6E`{ zFRDW)kZHxjap}IbIqdqmHpVqM+qo+$C@1!eTPefyI@8m z;k5SJ=VaXv=!gss{S8C+uouU#-THEAJyj{Z2;BfJYhR|#cxm@5^7~Rcln0d+(8}H- zFPHaY90m02e=i+Ddr37laXw)9Qe5EmYVE>n?A0-NnjpAo%~ZQ3L0-`i)rIr-H2l0m zaAlo6IW;wL_)fYi5bStfbBDW?Z^da-KF@fks!S&LC;XF@^juE)FN}+D{{D-*sY)cB zG`-`)?#Blz+kfWJkI_B}!Vd_qgPu2lw@PTW-rC__+wo5Q!=;UOyVPy~6j1r*>0?r^ z46iO++i-qg7Z83!@95}Q-BP{j58dcA+&?^=wQJNJKQHW%(6*XL*$=MxTHLz&9Sn|t z%s~>wBUvd5U9enfy{dUO)@EVuXAu6Nr`@iL}j1()MHk00p@|GTBMK@So4fbDR_dhHnR*YRim8%60&Jz+fi-QQUCy|8patJm4 zmE88?*67)SLHvd59~vk^t?cFajw(ps@@8o256JOV? z?NDt=vw{G*K`=#&s>Mm7E!Uarv_vJ8)=Fo63hJL|uJKa9!>eFHEUj@Pw9CI2yJ2U= zA8mPY?(X?~#&TPlDK@yWAnnC9;;_H7jx?=$>-Wzw7~|4bWI%ao3#k+3d{v(Coi=Pw z3xgNp$XQU8e7K0;m^?FSsMz^e%VDSNUlccFZU_^(YVf0o*wHyj%6*p=J?mDs^AzSQEj=`Vh zE*>k@50T49DT2q)(P+1GtuqFd!?|~744_?j#}VOn3dvVcZB|4l}4}mn2VOiQhC$H-f(iY!Jc?~ z+6eQ_8+%lGbpB4g!xo~PnF~Hl{N!8grZ*OT8L26;x|<9mn>cwvT(UiM`ng_-F(I)T zK@%2?8#l9(j~g`NsR18sDJh&Dj!tr97d}cb$ULvtii?56t&Y%syky!cKI|KO1dMfl zT$CExg9QFIT;4cf$-#BAEU1wt!>$s4SlDRM8IzVxp=phnjHJ;UV9L>DBS*TB2`NZ@ zo>t84TUe875sw)aX~l3~-Czus>&8W}npzhn67Ua^N=bc~j!dOuYKW4l@gh(2pxBRq zga@}pfe+PMIAuL-@EjM>teHU|U6iVoeT87fRn%JHXena{3kVPDpV#*>#ajthRH<*o zJ#ikhky6p2P1S!h#oQUR!F;@9qb`hj69WM+o;zMDc7#Cx8rZ_ehwS(^IVmKmF(M)1 zeMM76iqdwve&`D$IW&R`%lq~9*V$P0?7K_>_OkD{>s_x`&l7ZAF-%_c&nbwnSYnB|{#vw=8V2{@#_7#{Y|jQ9 zJ3#nKyJ}8Brp7z{nP%DKZItHaAC{wR$-Iw@ijMkY1Rbr62wK`QF!yo69+%b z?^~H-7=j?`0e6fiu3dJPs_E-Lv3WeEA=Jkc)}m65q65S1$p`dE!cRDR!3Jb+hUKP? z546$?1dlT8JKj!Hjp4cMegZ}9$PC9iTsvJu%p6dI?Jx{dpoV|aHokiYQvbMaZWc9C zi^t|OQp9n~%uE+24#}N5LFRarj?-)ENM;U8_C9duAjzyz|22H@(rtz(`y~!n`sU0Q z>5trTdID4G4=8?JNu4?L2i|zcE4Cz$Vfssz30wnHdJ@A~^f6|r5fBv(Q7ZQO)5EpS zhMqTd#9JQ1sTPio(JN&7o*TO~Vn6N8an65Cue>}?+bmR&?7t{d-(8J_3o>O8vqU#9 zP8Y4-p6|UGQwMGCw>oBX9 z{f5@y7CV|wR3ZIMo!oB{$Xb@6AnLWH49N5`PN-l#+-ro}!@xGqTp~-%`4fjB>bQ|! zXG>OEwuZErV+L;E?=|s~yQHPGZSD=aD({Bzil|3de=KL2bWACy9=?@s^PG zN}U8*p+!FD(_>9Zh2&(uY5IE}u34vtZzej^8z1|*D-MUXTq#aTS9hJLOj=X>Kzs@b zVi~D_T#mCS2_gkEOJtA_@3u5;4HJe4wfa8>ZE|EDUwNj4y~HywkPbrmIEQZip<*Mw z_UkwCA`L3)UgL=92mcN7%x)ri8F3-HsBRL(5Z*vbIrUI5`D=Jf&BF8kN{QARI|*Gf zQ)@lsXP?L8&w>^{rXmR5=Tzd+;z9Bu~MN%S!gqBV2ktal_ArRJ6 z($giM9wE3|OV05S-+X%^Xe&}`$E1NLy;JaB<`iGQRA;nS?(}wYLq^f>?MD*29VI!D zGqDr=8rlAO#iI6B{YZr7`E&yngiUdMqnoNDEYmZ(;lP-1pynR=1-(7L=&3?($ToVV zv|`uc(yY}4s>k-6fQDi9UJPQRS+eJrVOkpeh+L1oy+X>@r59pGj%KpTv(qDgKQZz9 zfTAcRIfnTC8!SINUkqf&4fUG0={%qQ^wcZ|5oCtjq_*eeX{9&29yM{d-6JytW=E+L z!tNw;FW*Z#kZ~-Fj!H*GMbUen0;Qe*-(_&1&UOXl$l7P`&~oTJ* zly)z@RHoK%b4lDua>;#;B0(6z+c>G-J%m(ruW>7#8T_#x^u`WB?ATZlKpTO66pODo;N z*S&lCLt;TDBz4|gx@{3P?RYA4!fkd3UU%ESn(s!TQ9Y^{_o}p64#z{Dd&!z|K5f;# z_Z=&juQ9_TRnt+z-(;RAJU${>t5GD>)C%pMYyAutRhudk+=AFWd4K#IPegmBUfw#p z^Oc@mXq-;1_lz(BYUW+IMG3FWP*wfw8dS)_qG5vRT`kqTPh3wDaQCrASA53#H3~VLq2rPqB+i(b?1|U0mG$baiZBTG;jRQgf=xf-w<@Bsd2~l3U==X9V^wE zxgZ9QyyA_*|Csn^vs*|F>x~`?tvnJk|Lf?MJ=0#!jew84mK_O0l+zbeoIAX?h$&n# zx0Sl*DFG^YWB%U=1hOE+3}33Z(JWjx%L$rDn^{#k|US;xIO9jB#Ly~ z8TIS_VM-+>(;Gl`bK5B(u=7+`<+qH$#m6_Ul4LWl!hLSI`TcdM)M2j*J^WqE$Kv{E zrLZE?S-()snKSwk5lkDA=SvOo>HC2F6oQQ`1pZOC!hP0icQAfcX)*SW$Uf}p6ye~V>>ZKU^*Nc4gvpLzBg*qRdX^-J zU{p9xvyzT)JxbTIaMGdttopCD%H{$SFmJHYLCOjwXP-UAz7)*lDTP)p! zyp%=@19hIsu|?l}+49l6<#dE=EI|OGz$rjqF2$JDgIu?XPbamZeMxwl->)n-%?d!X~ChOmM z3N-WBUcXD;gh&V=Pp5F;?+C&uP)G@W&#~@``5U4=pyksG*xSpJpLg4>#soQJj!72M z&R}wonv1saZkAVTn`aqhmCW76KX}yn+yA0~_dCq_h*VTner1s40V19Huh0P4rGNr_ zea+o8>je(@+x2;Gg=cl8d3WPW{iR4s830+?s&SF(VFUxg9uO}JW*am1b z2*61gD~1;E(VU2J4FhIkRO)tP`?FWE3z9EUgG6>$2ct@lw*QpMJ@68L3>2(IJ$pq$ z4(VIIpJ0Q|i{g#prY(AHa*~KsU@eCV!Onxl237_F@X}Kv zc|iUaM)<%Fzf;(Y+oZ|6F>Kly-)X_XipE>EZSH+XftC=wB)+Dm!0?V&KWg+9Q_S@W zOnuxb>@q;ysY^2^^bIP6V3L?}Uu*Z96F+ep$RQ%`s6C?4=JLqTt+N6C zb)m0jxzG9~uftdLtdZd6>MvAA?Bg?Oj+;zT>rj+)WnxVh^$g4m>T^v0x_0kd&16J+ za37_a>5a0v>kd&kwXjc6m$*^?;6<-Wl9T{VoY)tNwkh`+>UjJKyb8U`WhA}}yx-JP zzdJKnE9;@Y7^sqTN*L(qZ|Yq;Jo8=OdHix;LHcz)tEu1kf`f|%U)7x=iXbQ~h>_q! zWQf8Bcfthf)0ZYXD}M%UQe3|o27?~ZY00F0Nb14)`T1K3j;{x-^Rk^vIsDCmNg2u zr3C$i)(Zr(3Sk-nQ>KRF#_7|Ql;iv=R_s3wxu2oF>nGz1gZy&?YFqhgIAh9 z%GTk#J+YeltG}H`e)@A`){~~#QeIJk87dcltP?kNAgsA1OIOz;^P~Mu zImu}u3Iz3g2 zcEd9x>Xg%{n*t%+jx=M*xUZ_pN8|!vsAuAIi;A556`bh5>7%bnEN~3EsRf;I4L<9? z>90c_w>J?M(%)-|jq(aIY_yN2Y%Y!^W647GzR?+#&>C?9l2^G7RsxjJw0N`O;Al{3EtJl7s#Bx*!DZ} zq9>4SuL?bboQ_fL+qZiMZ%#G;#7}#UUEd;|>YfvTNBFP_23kmSFA`*cd2yBoHgq_lds43m zZ~NArQn@2x9@^V$EB8#CnmJ6ho+iF|8GLPjG;uvsONHM_p=93)sZe5y&EbUaD;?Y& ztY}-SY^tJ$(t#}QVwp%?OXF}Ts9*LXH`9jyvAOp2+v~RJBz1~T6A{>fdBRl*ajJS( zb{1dx+>wX>HJ{KU+9_&>8fkX-1|a&N#lh6myP_l9LRbE~|G+^3Os9D980O`fgk=Ec|$j8MMPJTTYezkOaXkk9Y8t z8cVlb;(qHmulWkyfS}daW8JCG>|Itee8ijm6honI$!|T;7-H7Ez@Bg?zKnaKT^3qN zFAmCRJyDObQD3TjmkeuyPN7$q`h7xffFYzSmHB9F2o4c=r9swlflpF32hL~_u-4*+ zO>R51vL|%rb+jU!A}HT6Ssnea(ohYBejTZ?+r?hO8hmY8Fi|bXEg+R4(pv+=GiqDm zWbO^mIPH5JtZ%+B!aB71So;NC+W)g-Irix^#~np2mlCq8<2lvtwqg`Dp^Yk0JKv!4 zhJ+H|^MGKUO4BE5>?8Sy#;?j_a+yg&Jqx+PV(5R~FF-v?-P%nX-UiPCOm~3yfDdx3}=}(FkYo{Kano!-RL5*RTlxdBCc{Kv96CLR*1#^3r`RMpW-=?TISMR!meMCcoNtCTfZFroPhY*S}2-xJ50fN9pBAZgpXS zSv($xbGP;6-msCDwHm28n3FLH#(5!c6!?ZCT$f&2#QgAl}=ACp<&q4O7fz8e>mmF1IKOk-|t zwi6LiG`^ctJ;v*_D;FPGD5>v(n;Jks6$i;*mKD#nOJ2Vm;7y(O3~?bWqRBE+lnfPo zZt(6P4k8*}9lhn*%D0~7F{e}Lm48qOU=c%M#*1%IQ=cO-!dm_kO*@bWu!Z;pRT)3t z@?PWQlc|z?zEQ)ao=opVr?DK5kdZaR+=G5%3^afHQHX|bR;PrJ_0$EJ$7zvY9=dy3 z#Yl4RVczrcM$Lxm(Y^-14v@SFac{l!Eqfo2wUWGbDT4Cukeh=y4ro zO|TfSNMrf;Y5kDa*F=b6i)2rFCnBEdS#fB$J^#BFdq)Dn`Va7^MDzywKsnU@<v3;J%A5Q?QPoO1smUPLvR*_&C0jF zTk%j~Zw&Hz!u0v~G9Lsc?QxN;@R>4?x6)6!zWf(w!uL81+<6{1ze17~Xf^clo$B#`Grhn@ea*D}?@ybDTp`eAg_a%uS47~a z=bMLAA!UX!2BPF^nQcAf7&gDNLFk4G(-G172A|2^2@}~ewE>w4ck@sr1WJaqd8kPT z8>11X)3$M(FhL+zRRuBpBhA~SId+2(A}a^<7JV7}fx<&x*ORl(t`CG`T!Cj-Bz%jx zoBDw+R88R?HYNQJ&-Y!8(;v1GssuhlW2p8Y9LtHTU-scksK4uyPyW4vy056XSsv#( zNmbOyfy@LmlWG~w4}yR&PF?y~V06jyppK`ry`5CaGc2yV)BCeNS3i&!$@Smfr1%N~ ztB6jnHT@dhD}U-T#_L^@}a6xq!QBXZnA1b3U> zN&5%BeuA+;em~1yUwBf?ja}PO{H7No)i{KmJR!JLDscDX%?$H58oUyu{yW3oo3ZP? z*#wE6gw$}I{LY!}jakv7sSRnse%^y;YcqxU`AyldO&yv?;Ct1x5#pn7?an}V05CGg z_gloCEt?%uVyv#bFH%2)nX%oJnZ>A77^$i>)sN&EN8~a^V+ODA#F5n-3Ry} zIx@r^H85Lf2+U!NtYWOwl&JpCU;%|IfXS|Z;C-Cv8!w&Bv=_L=RoPJgYn_g1&*^JA zn8fV`@r-dWV$lbYV$l*weWAKdf|KDzkL`Al`yxJ}9f4^A3-j2z6znnCQ958PWTweT zooe)c2uiNrQudLxD+9{gv8PDK+US_^5aj>tIaWpY$Shd$ z{)5YYTtlAL$Qw+$Z|b34#+qWTEaROs=5g*~j&~6=ms|aqPyLeXWo`0;qP*CSspdaO z@=1*bzWa2`Ccu2%C>rvSU!j5Tj( zlHeUX@+?i(wDy?HEm0&fffW^tuuHrJ$o;mf^+yn8Afi&rVset?ls@KNuszL-x;6`- zKUiJ$;XW{v{nUl>JmE$1+LqfFF-Hx46V@L^Ct1cEfnUXF56?hJ^6VBQ+RH0nn4-4G z3WJ!ii(}Oz#feZn$g_mWvJ+|c_{8FEkP6R>wXUbL9%eFnAa%_(dqDp?!8$$P^w|hL z>6^#XGEg+n%Z}ShtBFtTjKjexpLr+zMK^4uklCi9)cOS(VO>4Tn7fbzb-qQ_jXP#c zW^J1FzTc;zK(6i5VdHrFfjD9~(~w|Fu}It~HI4Y!jtk}Ps?sObbx%Xf%&Ama?%J+D zPVrQy?LOCS_nFAT?>YHWg9{2!u2Pcz9H(zh^=uJf^4aDaKjmDpA|&>@`23VUMgFMQ zCYo^H5q37t!?3S7Po|V@Q)<)P%%{y8=ao#)JLgdH#`y8A-__SGyD;0LiZt$a2SVHo-Eg;Y}aII_*K(I8i@De?+7r0e5=DLC87>62KHa2%Z94+Iz;@W>GJ;eN%U5ffv2tovd5TiTNG=qP=5u-uPkK~kNc5PI3 zr!G=aZ*W`UgrzH;vRgts$xjmf>Sm{W`Cor&@@Fqg6i<)kUe8amM$ zf`v(+&(gtuBN8dVS^khMJP#tDz40uvnh#C!8q@4fU!^y%JN!@?$j)R!ayaq`@QORs z@T1#-bnn`Z$cTxRygQBl0ZB_v|GD}|QZ_j=3(S4l5{8g*>;24tQ~g-r5)N&1+hTri z?9Hl;bo_XtOAlrJ;P!aXh`Bq2D=8`p@1yhGP`eNNODKvjdH0~m&~Q&?ftM+J+fP3; z$txyv^W8_badXa?elt=uOOS5BhVOBuaTTWmC@gq?PM%p{=D+X*>NZF{QJ}{)-F-XC zD34|LXUNznEykN&M@F}})-OdT>8OdRKVe9x z3Z0^%9c~sd9$nk8l#E`tGP;^~s3BYT_@BFRZ*+BZ>{RG*w9qXFCr4=NE-h?7y+4x{ zP5XYonbb~z48|^GHEsK8l76A;H(BkQjDbquQ7a_KfF;dIZ+o$^;%9c9Dv#29pUOca z^WTuC9Fd*H{AVY~r4BecE z{eI_sKh9e3-oJ+Rtl^pazPc~m!bj4?Dd@=-J2k+~ux=29n@~;XXPR;_r0eEqrt*A* zYSjiXFfvi0DsqnV?P1GJN!kIOZ#bHGQF5qTB~;3Tn|V6-V9O} zx{CG7*j8RwdEq8{mR%km3!E~FBl9llJ@nxV1obmbY8!HqjkjlAL15|G^~&MbDpz%k zwx|`DbfTxwOu==yYocFKtk_F(PGs_i!y`2c;YfWjvMdd{4N8B2K7X4(T_l!)~pB?F1z`xC{@VMNo z4F}VqDETyabA9RJF$vq4J8VDT)0zIOtM&ELRDYTZp$ZGl7gu5z%1v6=qbU)Iru!r# zP;k9As-i<6Qc4hIC!YkL+PmHN6=8SVBG+cO(jRtHgAU(cVsc({+NT+fT=jNxpY&WM z-rw3*WqGV9ayJu$R z#%W?m`J0K}XSoWOcIWgE4rV*Sm@K!z(4X2_FkpIm05;~{hrh||5SRC&XY4K~fj1qu z?5(?jL1Np(%1vrwnTz`T;Ca^a><{19h$5v#N-~N>JhwLlSdq}(q3qeDKpgO`ZLJOZ zT=~;Jx3eyh2sb*dn92LyGAo{To+8T`7>|;-^ZfL7H@&0d#eQUv!Xb~-BWgAzkF@6f zn?+XS|BrD$uX}EuFnR&IX$BeFQy@|!-lz?-VM1x{r(N=v?lj5Ro#ZSN6T5a6o>vuE&EZFvLz6ZDUQb<;$*e6(<$v_#7=`k zPbV{qnl+OlBYBTf#2f>Uw=M9|-@ivcV9VgF7}pl*mb*WjES4XqdC7F86k#jStK~9hhgwNa2OT{7WRv(LmCy(HGXdp;u4#2 zc}|g}3F91^nOBv*?W(N@T4^I2H}en+?Rqe87&W(-Y**1#%{`^?Uj0Lb>5~2#PW}MO zgUu=MDhYi1QTgxX_ZN|+>hi1H-Et4n84c~!C~P*i3D<3jZY>YybI}c+_-K5Id_;CP zg?=^Z=L_@ebdM*$NVAKAA7Ms<4+${7%I_G{2fsY-`I^|$ms~KX8-CF_=V$!lnZW*X z^PD*xMAIiEtZ^!ikWa*L~Mh-c?$Ju9+Yf&>Oa(p0go6J;4QbJ{8$y~jdBYn^rK`)PoB#weTQTQssiB zC@K3%xjf&$Jil9s1<+;ECWaEDK-&(UC4pn_PvR907w;iTd7P}$gM1Jf!W5)E2^~-GDxRu#5RZku zx<02b{zC16d;F^i5@wf}cd80~=OiD_QE)}JU^+^W>$+>g&{w4b^>sG3r(U~A z#JP>Igg2=TOHmtc=~*VC(~bBGFCswcFfFGe;n#cB1{PK)oYh?qce4Sd2%g zSlNj3wj*XSXqu!xjLO-#s(}kRDT>{ok?w*cF6E)G&VanX7G{ox0@sS0Fw}lESfe|jxiVR# z%gMQIVAqEZc%PUeHA>h?UtSa9J!C~HQuCs}RjKcMZ-V%A_ z!`)29CfJ89-)*8wv|LLWX~;}NueS8^Bcr~q_9lSsVNX)kA{!Ir zKjxm)PUONto~tnklMnmNaFgcaKE{qor?swAW)-)@brQQP7w}6mwUjq5e?(MZO6;sa zu9syP(-=YQKxHdQa9hfXtX{Yt&IMb2|2WSee&2eSR2b_|h+5sF5&JJz%llf^~a;pXABP_T`x0$=ST>4ZOmEFKCec3M3Kec)ZFHB^A4u6EOy7 z=B@=-d9D$?vTq$@;2P3N{`C>%6Dx=mvdp}PJSOsQaiNN0(C zI~;#9=s9q>D6Pl9#E^VUtW$_=^QCdylaT6^VVD=xDS7r(y;ojc?8{^&kbL0yDbu?N z{fvj`v@KJRY1(c|T&?qKUW1e8Rht zj_I2gcIf7$sii4SI2Ipff`D^y6misLcDxw%vzD`az?KMy}Ur5L2@rYlgbGw;m^%ue;y>; zInjB{afo%_jQg7wQ7wc*&w-H?MM@S)8#RxK8wG^_V*wKn<93ALzUjkaEK>7=XSbry z6i|v+K3qBN6Gt49j(#PdoW7o7HP^=H@K#RJ%!=Apx}Y?ngdQyTMSJVffyMHep|-|R zjRw*k-@36Mj8LA-s>8bA09}blMCC3mo1JRwIH|n(+pBO18g1z%=pSR*pz^fXs@AL5D>_?CIN=uI9Vl6X1`);Iec(>yc zi#I5p##mg9n?ZMAMc&#HaX*hd$B<4Rey`Fw%BBC!^>R^Nn5(Ph%L8vItaRgI;s7=n zH0I$*#X{qv8VAz3GL{t5xyqw`%OBLFO@4zlJV}_9#ox%J5xe^>T%50Air-QM3#}1ZtA~+W*8NKZ>`S2#K4v8Rv?Z#R;eP#A7p$3^MfeMOyE) z3d>{I^Vfb(lA(s|;q)Ao?fP}0f#U02HbpC!@NH_ma;Nw6v_V1nYg7^s5jC$P=B?#` zNpLe_W;BggltcmNJ?VmvVb{ML6Ul)1`No<$j;q}5-@1{<6u;AHM*xeQ8>GFfL>SMN z$(wk~I{Y%X%g+W%O8)4^cgJVcloosMX85 z%@H_1H@;GyT0?UK?^&G6sCr694wxv2;rEG-Yj024^Q)~h!1XZi2s%U%H)xW*Ne#&| zCfTTdr3;wpPMdQ28@w;OpYo;bQgCCtXc zL*kdQoOan1?-F0G@_W>uS^lI&79A{IFYZr4h$Jzm(*45$62&}l=O z=SW0dxd`&TJF5B4n)y>gx9~x@#=)fa>)DPRAyVDCddH$97AHZXgZ96WMS@~vPDN@r8*$u5#B1Iw|-Q8tH_PG zBKEq+#S?KMyNLCemfMoxu%QTdQM9j7!M|h6Nq)}r8)#T(rI`#e<)F32iR5~!o?3TF z@06JSMwT09EQom_XZ)i=v0zc1Ex-YGpt-(>5qM!<8NBH_@RrXrmcwEqPA`>j)WPuC z;0v=zsUFoT{Y-SegaX>A*g5kBL8!Ty&{vOD3I&X3x}Xn|{q`jvJjfZA)AqnRtrR zj+^7EU3qOS7yXg@E6d)Sj4}&hF@b{h4Mc-r4X)%+j>RTunT)nz=bkdlDK6d`^yO76 zo}Lopkm8r0ngrx_E#c7XbA?-eY1pmMUQ9>Ln1~u1IzeZr`F_L&T!&H+|_&+r5Ye(_Q!tOBPWXGijgZ(gnALfXR42leqQKRn%7 zMN`;*dtEm&1GMG&6$RcL0)cjUf$UIV!Qzhm)$c~yFDgRv zOs%(ZlZ8iWS}H83`Ci?OoJw`>;=zFyDTE|Un> z1A5&3o?Rzt0>&;eBF$aMwIp)%^YvQ#`RMVzg>#_L)H=7zTjsF0JymNo_3N9oFgLH^ zo@uEWPUc0d>aeT#?;X`&WeP_5rzNbHAj83DtB_Do82B~Eowja)-zvH2)}^R zYwWG(WS{$|5~OKqn8)nE2LTPEBT|8y|L-h-4*r)71T>v`&Z~HjJ#0zfeLe<$TQN-g zy}6$zbGBzqol}G$&03DiFc%w%pY^^#3S95@>I>cwLKRUBItgvvM_{x5{y_NL?Dt-< zyYy%;wv_yMP+|&%p!h7C&@8-gRcu$86OCZpfM15>`?GwgTuFK@!~P+ZZX~jh_v;(d zVzYMlSABv}EE@`x`%AvgdRW#omHvE%=7FmZyl_5z2jY0r>i&ZRe8{J7;=EDkl$2Pb zlsXE1DHIdjj}79uD0uf*nr*~bhLO71fgDVB{o8f77ebT0u)km5ft%d7k~5@|TTajm2s&vF zLEc2b*%@(`RLb$;e++ZkY^YcHJNusFrX*78I|vxx#)9xvaqKhT)(w_E8s;xQ@*muY z_q2zbn3fObvp#jiGAvLk)R&M%7=i{69&-3anzrEsGvl%}2@oI?2I>h{sB4m< zKrYfG@0L+l*>9;YX``f^3f?fUb2VLNys7wP@od2r>o844nlN*(mF4r;&~wpz+%LTz z`ZO1Gn*n|!aW+D8>4jtcZpCL;`(r;?=5d4r7t-5@&dH=|Ys|#_H&mp!&?buA@$`N~ zTI0F?De#vv@uAEE{R$^EPS8*55As}QCKlMSK=|t9(K$0;5$4?EL{1$1+(Sl31CSyz zNb1b{l5M@pk~tD}KTf*zhnz_F>!!#e@_xFRNCx1vy#SMM)two+m;#*$9YB3D(1{=~ zIR$-2g>ocwlgh|iqjLhn;yM{wFl>VqDW$LI*zX142L>s(6L)zLh9Uh8GDz@Q`b^;% zF*cJi?_Th4M_j9c2A#e+Pr1SkjEn+?56Lo7jTRkIB2-q>%jRZoGm0>Qs<5a=j&o6z zz)N3gmBz!&>>b#jcL;L{_xs{HsKE1en%(Tp?A`NOho>QMAA(w$+!2k+`)ppEDX>%d zu{7@y(4N|~Mbo17^*9uWgFS`%GyA;UB~kq}J?DAVNtWewgiwgSjv<8Hp<4XYWKa~-PcP?T;Sn&gu}dIAlW zUMX5TDlq;1CsHJ+?d@+C1H*MwR5>)kVMl-e#wO~CPj&amaR+iBd9+uRFGg21UK#Fn zd5TLE=LyKs=!g#?PrfsK4D!e}3 zNXrkH%>|Y~A?$Zd40v|BP^(zk{Zg)h*_sSco{c}p7d4cM5;lq34KpBeUF3*y_^<{1`U~da8$p-3gjqF>_yj$fzXy%9FbK@(F8F=f$QT&yk~ZfnSR` z9o{2uv(Yj&#lg)Pr00EvVnd=tzZmTD)Ow|xSj!FNdd6)dyi{S&%hLFOg!mPTOO1Rr zHCD^2zv;s<`=w2?izD`$7w7hHZ$dt$8I4g{T9y#?U1RPyou%g?&}@@gPq|eAXn3|g zOh@sJ4t}KxHjwBdV?lnVO4ot`^}tI(k}~C@2@l-+WE_`-g_Q=qLZa8Rj9e}0%~oL!n6&A5(S zn8f0w+q8wd+@GqO7ajKsL(lo6q3q|8FU}_THlw@geoIj5Oz{(dZT6geg^*^Z^6Mg8GX$pz(7-JskpbaVHT#sZex14FDgyRQl9k~CuDUd zF}9KH#&o{F*%F&`9P#472qSuo)PU8*In(fmVRGx`kz=svXpSFIVpE(d{_?-QK2;|A zQ~9cNWa)s-u#@=pF1ehCJz`-Cvo4dNk6gg7V8x3b4iZTc14D*`rfqc(L_?UzdKP7vR57WIz)NefnbA*CZ9p_<2zVaGRK= z)RXFwI1s}rG~Sk>3~1MR)c(>K{<59WkuK}vSTfAnNqIcj4HtPx#7kEu+|GDExJO5c z(h42hRCR++^}Y8g<}D^Sk9gQzSoPw|?sMYa)(0^5U^RoZyI6V&$0|od=%+}jWJ-AW zYVS^K56uS!Zp zSb6C>K_=)EiN5oQrxp+gY($^eY`w7}3p(@}zLoA>y$rJ6TFCZn$zb%C&D45xmBsj44}Mrb8R$Qa|0gNC7D{rTr4Y0az}zQlU9O zTePxf`FZWG-v@U3=nBGb23kWjG4Ua)u&L7BtT?F2^1NHo)3;!WxgF#qY=Jrb;TO$x z^Or@Y^~?sZzcQD%ec=4I3EtiFGH>RNX|+l|m@H&sM}D3C2>dTab93U;D>ZznMZh;E z(3!SC@*R&C@EvM?h?^-OOjBCFtx#*Jf$ylnu(x0B>Gx{h{AO?Kce^HAeHi!XSJmQv zaKZEDp&`BJY!%|V_CsMQ9Xhs6Kvo8fp!Mbi-)DFi6poG9Csr(hu?M$6~^! z3@OenP!WeuQG~dHR$r3bL7VxbNB4igK2(>3IOr7|7Ff!g6nDcko@6C?Ge#^K7{tOs z5~-Eutq-%@D8GAHV(1;jVR(`04*Lbs{ak%%h^uobq9X|B#cOrB4qr6GpH!A!b}L2-}1b^QrI|)_Ea5 zHF-2;WKtq|9oY0&$kXE6yJdH}=LL$fTQ{rBw~35h9NfJ1c)QZme)2w7eb?(k7Mf;*G`82i5&6x%K@YAky+y)maK>&99=bfjgKZX|wate=D-=xH0^PYsAJVBT{@|TW zsI#o+TE?3efWHXqf#J-`JazoW1Q9i}LwDue~i@auob_!OH465M)N7E*9Z+=H& zeLM26sSnwEXqJe*TI;LQNytPVhFq8yX7o@yse^iUh}7$}L;0-P4Zn*9L0d*#H`m{Rema=Qq*6D?Y`r=y`wsFXu52wJ4NKzTq? znZqU^0@mmcRzV+dsY?}m?a|$Acv-%yl|7%ohqe)nQ3R67VLFY%o?SaXCf};-#`ACQ zDQ7vcdMlI$|4}fR_gQA8NWwCqM5hgzjJYNXDN?)({OMtA-nP+R^>dHyocALT4UN`* z%&FN!J{jpn&kvpIpH?++Iq7F+^U)6mvX8*%Cyy%OXAS!cOkov$kG9~8RiMDt*BuXQ^(1=Q> z8;>_a+FDI6QYP7iLzI?eXmQjfh=q);)LxU6jr`v2?_m|D`e9LLFCh|(Wz{@e`iS!+ zHx?FtOQfB7Qa8~?LUE!RrO$>)CNqK+4x*-tZ6yrAxxif$a(h+C|GlAek{1HFEG~Gz*Cj3kGGj!&_;P($%Yw$1MX~x5W z3!7X~{)rN<*I#^!6$F@v7|7TWC0xN7UJ`m=w`M2;saUYTK6L+f9qDbwST{VI5Q$+{ zvZoS7b*{hlp#ATp)o7W|h z>4L?uNi^xc>XozVDl|O2Li;3`Eg#Lu*!v36HN-Y~vvQiV3OaPTXY&~CD<9NMP?iO% z9{V98l-@b&V$}OZdX=M>i1GH*2Cm--OjyvKT||L{-F1`hStRuh5L5z6%%sb#vTeXN z3-7YIf>XhIW8UHm5}Pch1EWF<0-HQaw|@g;({I)wo2i4=Z+|e%8*=0ElS7iJyK8er zd5)Hfoi7)GKD-U_Knt3q1&E0>QsGl({*t;cnygQEJWwZCmWDaboyPtOITTnI; z7qo_&vt=;&Zkgrc;l|8S%YFC|OK}flZ~({7EI6%zMJnVrP9Xl9d6PVhdDR!*dQM=J z|I0>f-+Z;CBZTF;rAEp6!P_~Us{@!M0z{=?ZSSY%mdtUD^;Bw(L41blS*P@T* zvqBKmC@Bvfwf#L1$F$^p{&=A59CGULFsd;m?~BGO*clav0ed}3X4wB{f>zYMp&D+WaOIKfRs-0^rix~}+EekV`~ZIf3V ziFT()%Fj7$M0k%~am17a6h^*y9MS(S=q<4}QMW;{f&xqp=0D>KH=&MzdbJdN%+dw3 zMEq_MX))N=puTyTp(Z29(DZ8qGxu~dakXpA^eHY0B!R#r#-@4w7ajHb8n*!x9$qLA zb7pOFYp3?Ee3#R_ZnNm}NB=Mpl!r-7U{x$197bR|8Q4%Y6d%}t9z6q8j-8yR1Qt>7 z0ol`FoT!{R12HF}P17s~c`Vo7M%PVTW7Hz_&m&!XdE@o3t0t`!kcLV<0??P>esAjA z-!1z(MV^ebD_xPKCn^^;6iQ8Ow@Km)?;g1MVmXb!GxSk~r7B0Jns(c%6f}~e5x64V6DC6p3juY~l2(A(WMl%syH&q= zAUr-MoH%xuQj*#@QA;{}MbId;NMSxsh`Q81Gd_~1k-=2@V@kfZxBBeGdZD7S*RUE# z=2tZU&Kp2zo0?4u_N!Mis6*LN@rTjs{NJ+|_d`BQ15kd_V>d#Cp~Auh%xLNP!MoGW z*4v16nA!*ZBduG?xaoRWcGtQhBTEw&9eIZ;IuQYKSV6n%fa8w;@`#T^(wI=vl?(5vLVUXi;MBMV)3CMeCee5p9+~T zJPoX|<`bZARQOaQYr2%WN?5%0AHs}Cud(SHR1@{Fm74>Lz@?UwY!} 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 N)RZ(8tK}^M{s$*b+n@jd diff --git a/docs/source/roles/researcher/images/db_dbeaver_driver_download.png b/docs/source/roles/researcher/images/db_dbeaver_driver_download.png deleted file mode 100644 index a2225657b1c89f6b12950dd04d18ddd8cb1797d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138674 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%0D+v1a=uF_PCfun?+JE@S@q*FN*a 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%0DXA`u^0a? z)tzH$Y#z%mkQ#;(X$^0(l(j^gHo7%5erAIlT5p?s-*u6Vhex!uw{!;6>s-6;kB{R| z_F|#^1NOLCgA?Ko<367n8@Hi%mzcSe)#|qvSNOasK)#J2|IOI2*c!*|(&;aA@cHMd z^JRjs@B>4+g%?q~jK$^UGE2W^d`#51VM%wEf2;oG+iAVjaX4JIh6L-`o*A(X7PN9yxV*gVSm9pex=m#u z@PhmktJVN9{g-+v_|2i&S#k+=Gh_qdW?nmdmzC{PQOBJ`O|n|;KQQFuT5Cx7DFZJr zSNcWZP_y&ZpD7u?dFv(CG~*-p?`2kqtq?)G&Zrq}yY~$cfzU|~ zdGNl;Fj7u-iT6J(-XD+n zzu3ILEyr_b>b*qZAgXHUzpkIAZ+u3jJkO@z_^Hpc|hj*#CDuk4P`G0haKh^3~p1?oazQ;dBHCVlyd>+5e_P=cB-&T(9G5-hh zWfa|oyp8`ftiQkHKm7fpt?M5DgW%I?-}^`vuHUB-_Wj50F3HoJn%F#rb!LwuYWMSj|4>{{WHqsG|S? diff --git a/docs/source/roles/researcher/images/db_dbeaver_select_mssql.png b/docs/source/roles/researcher/images/db_dbeaver_select_mssql.png deleted file mode 100644 index ea5b7e9e41bad12365d828adccf7b7564f8edf96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 550429 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

DzM79?RiLu6DWL|Z{ z-~Ryw{(OBCPHQv-0CoXaWyx$ioZqiDHP8NYF#XRP67GOlQ>i*S=Rjnl1@m=t5I4Q! z(j7f~u%a=KdPvhH7as{JGxwJGXKCc&-y-)IPsT>b<+ktLGr2n&SqL$^L(6o92YyW z+lBY234m=hOgFqKAHY_X_r3sq*lFuW@UvUGA!X7@Q}k~OvJUe+-iHtw{=zFMjrVB#v`31O$b6I za=-*kNEh+#Tblotu|LzeKGiYx?0?JnKXc3k7r5`8WCPF3Z6J9=P)O)4sp#X!AG^A` z@I|^X;#>e7_Em(5sRs-O-=KUZCMLOrg@=s+Z-AwSMm#`eZ!WU9$R{jp&&bHgTR=`g zZWH^A04Qt_C^8jI8*YB|q~ zz+z%nUK$%`o}8VnQ%!vyd_|%&Xh+3pXn5_#=#gLgbPap&QT{dT0rk#fSRkMRY21HJ(Mz`hC;)K4F7(jlAqh2+!#dG@3zm}XGMbmKpH;YIn?rcz z3P0l>cl7}whVChn%1u%YZw|jJbChjBnjWT5?^|E zZ?~kfa@>o$NvP@0Vo+gR9L%f;-vXw?T@6syrUs_~NZHi|!4m2&;zk3977F~5_hURv zk9(@z+_?C~`tM;ylvHHVdCgsL{Jlg;{D4P0p*(mSNXt_FT1P%n5WQWf{ z=H}*~mZzN}PuaNH>%M(+g%6EZ0patKYOL4?_{1p`DF$j7SU6HmUKV$QFxsADFLC5s zTGjzjoLo~f(8R}?pw{s@+B*IIZd|NrjI-_7B6+C+lW1U*Dokc8E-7(GUI${vo>wz2 zq)@ia&!5E${V}S6$a=9}b6@n7`^g892ESz*VK0-)hm|wy_#=VqQZloxmuFwDyDx8? zDga-Fwz~G(<*)0pUvn9UXJpc_uD~uE7n_-R!#baLZ^3EVa+3&z2>`qyAs`78@!7;R z%^U9d7zD~is5dSU#t|8$+1Nv`e$Bod+ip1E9r-Se_8A)mRh;29GB%w=;L|sGOzJsR zA_t!Hj&G+un?)8gGSbI>T0S2eJ$N<4>t^NI{IY&5O=N!kV5!c6SuscM;Z|BFHX#$C z{Aa3Sf8We{wFfxQSddYIIX=3Tig7OKpIu+qJNsn5SlUVysz01Ls(oC0j{06MiJCGB zub+gP5|j@hh5WexKZC*C!K50B3@9B(4$#iKJ42`M)^iZz@5N-OH0dl78d zl>`nD>KQeC0RWh?95r7qh87;atLC+Ay9dV7!Ves{Uv4Q9M$> zUN=nI6`@`LZ&I#!$16)Mz;S*5KCzsmL>ZN!vz*EYuf+63(CqANoT!kYmF4h+`S&4{ zU;fm~iyxY+ntW}HzFyozPZ1y*=mu3^JMndi74lM09jmSCXY9ocbrZ#54T5;z+PQtCrrcy5$@c1kQ3o{1k_gBX-qj)wm#@1ssFjg8H{(XGD zW~)*`$nl!7xpV&eCK+4Wk3$>9NgKPh_q?U0VE|30{%Mg(mD8cMV-@CKi?t zlFWk!PYicU!XhH#y{G}oef9F}TJvC7n-Na>{yr%NsM&Krj^DG5{?K%vDygz$nFaR*;~URNDXN1?}LAUx%j4h2C3gS;hVlpP#OY4#XrffA(l(=Hnm#6mLd zlH1Sww}`X}32Wg5=uOm>doj_hznK3Lio!oavCj&Ed9{93RZ)qH>t+6Ait&R>7hiY& zBZ3LwSB05FRKCwqmcwa%f4%%RTaY>EBz9R^@`)-DlxiFoIZOV??v%@|(?q0Xat6UB z8%6Ul)@qB=X@K_U_*q_VspK4FF7KOBej^w#dGo4sfwG|IPP*T|eP;p^YZ|{7r=f^-vmXm$Taj{SJWiJYWqiX)D z%j+;+R@L;6C!RxRA2DB7QAVRLix#%=oOxvN;zd=`?&o<(+0Lpac+zlyKu@fd&COpw zwk6xwmBnhJd56exOq2}8Ekb-NyBa*xf*z6E+OyEte7Ux*r<(EWXu>77Rotk|mn_z? ztAjUr0O3n}N?iglJe2lY#?$6h(bn}t-upaAJ>8f2?VK`_H>}%rL7!$gb&}v5`+-5` z-=VV;KkuHMkkQUmN_cfv;y~GnzS*zPKcH5&DXFsP4qQkmK%g7H(&DCZnHMu@l;Z?h0TsSyG|_f;&ZhZ>%bSw z6nuY5KJ`0IGiY&sR@YuhRpyPVcQX6txnpdFg>&ipkaObh`J-mv>qmcBRFBs`ZC93r?9t|4 zWOvswgHxwmxBvYUyHCj-@d-JL@gL=Tg8$sqmg=`1-g#Nj>`4CPT-agWWnpO4Khjf?jelmsKw7GCQ=I z1#t0pgSI@=mX!S}Lte9`7njOAJNuPtdI>z)!q9$C-|LZjCO%|6wo1|L+yWiX!#U85 zYS1e9fj4)ybhq=_{_NHsO+pf#Ov+MT|X5Wsq6OpW6uXZT9N#-?Pmhp zzM$Y^MXBD`%Bg&V#q-9s>g4Y9f(6_p*zP~bwM6^{llpPnvgU6_eN$7c-;{owujE=sr9duuI&O=Vpn;ySZuU<=Ro_{bankDWOR*qLl&04z8bfYT36Fe{?%XM{4=ygf2>F!wpj*ht75 zQ>fP-#u%2iTOSfi{G_*C*(3nqc=8(>ygrVv8S@xQy7E>(%GcEw8{s3~6=2@kpzWdzoR`=Ea+f4&=4JcCtC~m>40f$Vt=*NPxTa8#Z(qkH z*@vf3r_iMPq|QEq17msOfpUK4j-v)Z5GO7-#qza^qVvVd!zj?b{(}C^6R(ZUQhoJ& zVYoJIM>iX}XE3gWS@!>IJJQi~l&+HfFm`IUirns){2-*u%7AglW^RoP6tVhBqMicWm!7-#tj#ov2)UJ3_3P2$&Cg}4!$&1X175kgMW7(y1krL=F za!eNRXkglY&=3E%k>avO;C?PKhy!*qH#cL}R(u_URjp0U<>A2*1SP>1yaH?{c_qzA zoX;6dtOar!Zn;q`gYQxqy`OrIZ9qGb-90_$3JVKk_NL2IQw!Sbja#~R^Tr9N$sO*f zyz5mY(H~W4se9j6l!H6;KE~mW&f8z-X)k~ssiQMKIe{%7u5d!8SZhCInJ+DBdzJLJ z%3=9Oo|7*qZyyVSZ5Kj`xPih^<)xXVMUs-uDAF=Ev$zV+ zTLQnpUhclIak5MD#3?wz0?CJked;aDk`wwl%t^?KidLXOK|xWHS8yRwtEr=CNJruM5lJ%3?NW--u*Ad*utzP^7LXC8uBTUI_VylM zQ+mS3`);e6)0+Ab+l_9UKpIJuWhtE#8ncphEt73$;E&Ct^ne5@s8K47a4 zfK|}y*u!F=L&E%US~W~nPHjsu@E&bj2`nSSacAd%oZT=yM$VxzGV&c!zskTn4Qr+n{zT_R+IPUw(|k=Kj#BJHL#+YYfj$# z_Yib=j&y|5V+=6W@(gpr)?;DEV@%$Zv$!mkl%5_`EClt(IK~>N3~6pY9HuZE{%COM zn`MEIxuj3vU-Qo&mE|3vs^rlH$y2eC5jiNmg@`I9_aG9~RR$kE!+ECM*LVh;0GjO+ zM^kYw93n<5?4?#`KWny_Kp02J#c26xGi3fx>-@&x5|i==!)bGPmCK(&e{`?VSEY%) zT%r(<6v7{1^;mR$6@+j|If=aZwzqT%A4wCp^C9V@lna>=4I zSkj81l5f~3+Jg#wmJ8H6*_V23KS~0X9;b+jz?F%0+&|5w_G|d_cnF*p#j`NfpqTe} zTzp0~u|VrH#BGVUjH8?h6)Iazf5EcxwUOW!!C@$)bTgEKN?#~1a|{*@#ywIj-+6r{XP{EwKwaka z#j>Y@d)do#m?(oj8hba!y4_F&wdaB@K*22WZ+%h9`r@~WL00LBy%`2#urNRw;yFCL93x8WxCWve@ z9DU2wMJ6O;4QN|>wR5;bR6bpt?h?wxA}X`Cw%*s6*wHS+6$A^oMke2$dbmP4KKDU@ zgVOs zV7b8Mm60z~Hnl;X{$}LMHUfF~xKEGTw zo$IGBOI4OV8vytV>CV^U5DfIi#LAYIVF9WzC<+P*j`X6iVrf2XfP|d*NfLMw{e2L) zS+zTKD`Zg>Z}6h~8LyG86%AUfs-dD0@0bExH(~;@@UksGV@te=vKAL&#=(V<$F`5c zSrEmG@wd%dBuphNWHJT=72}?}kF-k-at+DsxR_8mk;94NYK4 z&M(UAMKbSq{I|?|aTH`0d;l&hNv5WC{AslV<5~$;ncSrgCC3VgmjBDWbu&v%9s#TF z9d`Hv`tSale-ADjUh_lX zfm$WNK;8CAW&+e33nml4!wG&N1XRW#$iD{7Q9eKj{MG8N{sr7LOX2N`IRK>28Mf?(KsAzYnSR8WkA@4Qw?#n>Ay+xx4*WO!Tcy z8TpI%9F|kAzQLCbT0hIgUX{HM$w(HCo@S(p*2yG)rjykeIc}KYC3JX;B0<88OhS5` z$m&jLX3(!*Gl1yp07?r<$Mua6r;?a2Sk(8A#eL!~01Pr=|>`@`i zUL%mM(&;Q!Slyd_ZZj7II%SamZm4dvxj=p_OMxw|ctQ5BnH4~;gj7bt zNl(EJx;OO&R&gI9{5qxg(aI0syIAR*yytsEl8k>15{4&=bFE2oZZG?$BWCXx*jFM* z4Ixxbnq;ga3!vXP<$Zf8d&}%!l`>)K?k&xia;z8n{7An`5h}3|4#ULh8h<30&79U& zAgulO^WoDY=|likGwy-7i6JryVPK2HsjzjD`t?-91ct|Cr|;M+{@L&_5<6z-%dM)t zG6t-?Pw7L3gk8mMQ7I-e1YfP|qy%ayV>#U?T)GvYmG-dfSbGwYpBa*hDbHBh@orlQ z;9!5T>R#fa#W(IjLxdz?c#NP<2^^87(;^5kL=Ei>{$%=FO3zVLi1pGO3j`iF_Yx3X zjlwGMA;Lx@7Dt60Yg7ItJn3Ak*UTG7@qew7Alv|qBu~bPZ}dqT=^%<2$}ft*zVw;~ z14Qwvm>~k&=6INQ(mK$0uEFoW*4_&{XO@3+0sLF~_$;WJ77}y^PyxpnT0S7?l1XAx#tv8AMHi zn4rhtvfrWlT)^}^`W8)+L5H6Wj^I9EOKM7d@wt_%jldoWejQUI+=z``&6@1Fga;+_--l=WlrUv<%Wh;I%S=fbyj5FO~C#ADU_ zkU;382G0Ky+rJxpfPAC4ksLl~XCoeISu`5{Jr~0W#iO=?sO(1A+Uek>*GMMsuCo9t zBUsWjv*lztb9*av?#0ay^s&{Tj$1hE{H=H*{ipYcqh(X;ec)fsT?NzETpQaw&X@To zo!Eg}ur;8VIfE-@f2hkC@nk}^=y2>Jjox+ggw9ThqZci04;dQ7y#k8S>d9Wo0$$q! z+$7QR?)^`W!rb*^`wVT`1H1$ef$>h!y6HCg0`Z@{!O%ciG6i&ucV2U|J`e=A7!cyh zSs#2v|I4?107a9Hyvyrbn~3MO-6+OQWa9kX%jN0ElN|H++&4Y6x_R7NdPp~naZb%~ zCj*(Bj4EbnNt9aTk#HUuj=<_r%SJ6h^+(xlVwPi$T2JTW9ns1C8wL?@y^` z8(}p`&+Kc0u06*#?aA3$Q{+cU?twHsHkC}8Cz)%+^LvsCOIt@|RG&v5pB{(z?-2l= zu>}?7kWcR0GYz^}+zLuc2|#&YC#vjav(4pE@n8POc*hZ*>h*X5ECKXss*UlMT zfI`!8iKSir3-;_>YzaAmIpdFQesx~(^i;kTdVVO^e2+3+FpXet2)>%olP4vwq>>Pf zMKZJ&*UK_T=Q7t$1sr_=HXeq>*2Rh307bj$l0;=nK6zKyDkf%MjhUye$8V^_JPhcv z+&$fgK77-v@;rewpQ|b=es}UbuB)n2KUi#L<#$|+5lVb6lj)ZsBsY{1FCy!@`B~1! zrijb1>DXI4_2FUX4;P?5T@m1ON@;@F*xDpa!aer3;IoGbp_o> z3^*sb*F1+l&!)d55LF93d|r1R9Om+zF_0zqPQEO+1Lgk2-l)m8)n~B`ahJ61tp<}1 zUJ7Rg7#`-rym5COiqJiv0kcwKVsv}TNeFdgV<(lkp_hrS^}A*6H69pkP|0q|M^q2F z)Xyge~Df|XXwf?(DYmOU+MWyA5f{UA3?=@edi@aw8YX#+^ zG4k*m19cYiD%8+Yb8^P>c6i#(!KYtl84VW=C#L3^_4%A)_si``->|5<#rV{2anAZV zx7XCx7HQ;5@|7*q&DYt-&sJM2%Eye}l)V4yMwn6Qx zQ)*FUPN=m&QPsp)_4r5ccZ=~Z=_->>6iVH#XWiycb4k|#C!7ZBus`;$coD&n!WCF1 zlSTK;u0h==4Ytz5JP?9IX#t0Ua^)vAKs6mB>RMWsW>^Q8qzU{dcJDM)Ghs?QZz3b( z*lH`XsaW`4Q@;N?Y z#Tts@HfmziDL1P1AS5DW=H=9=s;(Y+v8gpJ=iu=6qwQ?ia|EYR^ziu`&UL+J02eXX4Zu8Xbm}%<7%;`MCJztIGGWEKpJ1hg?}> zIsK+!>5eha-2~@_=AX1zDf>~Kg)14J?z`Oql4FOJ;gE5=3Kt$mT+#-!m|uY$!8^`% zYEbgCVdcep0VI&7CtnMJL$#-0tN!W!@>X&0q?`9*lSh@uo_1LDTYg#D;&3jI0|-cy z!E`H?vdwac3?Xhk-L?C6AapqNs|C&(DTEk#6A9U z#f?RUcf2~m?-vXf+tu~z+~2k0{puJE;o(5>%_JEWy67YK3I)Tl(==%a|I0)XpCSCZ z<-XQ`3Y6Gct~J4DayUl|cd@QLw|13EmAEez#A`N}2D)DVdZ=Bo^eETzo)!9{IX+WF zNqp<&={qfWzFAkD0}njasl{|d1Yjax10sPkcTtHyC(>10zP8HAI^O#7u9}bLqws@% zg=eOf3D6Y~iaC5}NapNHp_jPv#r}uKd>widOn^t4W8l7mgi*l#`}dU^5s#V}RTlyf zuIqg`jo#ni8??R9b6jYl_x|Cno^@Gk8*CL*VsO&a?E8FgcklCRZm4Ldm3T8FJ(F%T zql8a@tF6Hap0=A?d`(>qWSggnIRAZqipFN=>$~c?2Q>8|PfUAy`eww3_;rg}EF)L5 zHN2m~s^$>PEX zCs~#Ax@cJh{A2jz(~`Nuj>25qFWRE+ssk>VddKBYk2pOBhDQ?PdLt~Z1HG&EiVa=Q z5vFi|3I2lP**TV{zA(Ck^H|sun|nZs%=`C0AZbP7ss@t?To$gzeiZwV1n{&CKH0y1 z%{NJQ&KN{8H!x)5=)m_3&1^8PSJ7fHhj|%;NQTl;;9Z$nf!U~3Mhyq|G9_A!nU5Q5cx!~L_9Y?=wG z5J;QP+7b!nfcC9@BG`760xWM~xA=CmtYDa^)`QpwZ&k!D@xJItS1+ewL0emVW?h@b zLpd29J{+eaK4<7EHAR+(v|BqyBrr94tiu*sTr|qEQ^!hEA1OAYTIN~H#llcWGR2Gu zr`{sVqANI2Iffpe9V-H4u2M3&SkDryntJr!O=u?Jia7N3?Lh-pknSP^B=6=M+L3pf zN5J%2FNQed074EkEQr2&R^Er4wUo~rpY@XRH#n2varug$U*n0!EHZ zlS``6vzZv5&0bS3sM@I&^CGY2WztxDw85dB2;zzFrx3u--k2FTcU|p5lUGohSV(5F zB()ACYvSq5Mtz1|)@}w`PB9iXR!~sjsv+x-{u!E!zFrqDzWr!wa-P%Ixu(#qcgH;i z2{m@4D~go+LA{Et0!J{cAYI%i>UW{XAiZ*Tn&eW64q0K4oGd#EToEX_j4_HoFGe$R zPfBy{KW`>)>>D51MiWa0hz?NFhNtd;YOrl)vAJ8$Xct(4x)KxWaaP25bEO*iL9sx* zDMik|C9b7KxH&oclRb(4u>uVTV;jbaN82d^KwxOr2g697*3`(^ts!9EF!aUE&%?FD z@mx54BigItJX^ilQDoIlJ1~1!c@wz01O0U(m)VlRI-ow!~vcsIK5#4Y$a8zZudS`2vYwM(n2-aGGg9fyvxx5@nbc>T|Ly;CKt zv{l(J%Kd-0w>pTref1uM8XKVB`mNfAA2%yNGIRz9g zroh(@LtZQ48zl2^=vhz))5Td>TE3;xD~8q86mmec@&gs8e5-R-pQ84eQ5q3Rg?vN~ z7>)z$=~k(c@ECouODb7>0SL}<&-b9tQI24{gx88(v;MAvCB9m*mKr^4O_n7&my1)| z$@`Y?2SO;TXcFDBQPfk~GX;5NWhxY@6qX)8Z1tL7lu9))^ay>SCV+5%P=vxTwRjv} z$lp{gcBiZHx!5VFQf-!__vk*{`Hdm_gA3;<{_ z^Ycu9I@|U}l2z845`l+F=pXEtJL>4b`5Ip-^Lo_?5mAH8Ris3J^UVd|Ga_Z98Opg( zlSN{^a_&zqL7RV3m10&^cj+*ned9oSzxo4^pK~EwwgefsjNQxPx4XNxMP+5Nb8{5U z+o2QW+4 zu(O-{oCB>bY4@L%+~h+n3v(lxZ*w7+dE}5ck^7#JH7qOqy+F*2m>iG ze>?!P+v5Njw;W)--UG>m|N71QB)&}u1SM+SWV0=8e?-~s0fzU*v00O5Glfg&RfR*`#&-eE#s=dEkdHXVjgH5?8^us7(2$0E= zUr`~KsD#7)B0MFGim1Vw4tqrxT~GTX776ib#?K+?|t9 z!+tb)+d97wHEjG_f?bEp;d{TA15nc)1pn8@G)EV^{N5R6uwQ_mm1vdq0OM=Hk~WJk zB!Sy5S-~Vhv`^~! zzZw&y!vjwjdX8G!OyG$fI+51s*0)yMj~lAdjAtnid6A-NP*ib6ZU5S|LAAG+_4m^q z6Gm3;_ru^-(eEDw#Y2O8FsNB-l)%&U_KNeZyQewiA(sj4fY0_m8_&i4A$5e|renUK zNs$aKFc8HU>sSdKvSyqXhy8t*63jCrPilet2R%#UJWAYOdSHb zz{$3RZ-T0RChmV?5!5=f`|@onqrB$H$#ra8UX(v3sJVR!1TeD2X?yHttxo`SMHa;& zy;e}p4ZWi3&wZtou6v`PJ%rnOpR!%7VX`qDT!)*VkJjgFz?Y@gd2q;`4XDJ9T6$BQ zt*zb0Rj}KqQuZgzQ-b0FA}CQm4f7Cl{qf9qx@AF_7fR7!d_h@#v+cT+QGAhewDV{EYrG06H5GL>{97K9HJuO&t zKd@;WyW_x24IGB1FVAdsGP@@h7VH_unmqO_a>GGxkE)q@88yl@4Px#1%LZ%hrawMa zC#M3#qo(tU8VA$ZSfet(jyyLA%ws9Ir_k|0Z3wjzZP!z%$_ZWAmYHgTFdti9K_RZ% zdK7}?BnXjFwORTtVi*v^geVfrd+uHf2RIwNj(?rqjX(t25n|VSw)T3B_vRmA9mp-x zC|J0o+5(LcU7rWtyPanv%u57EWYEVbSV(kH87 z9$)jgUUw@e(UKE@4$kz=M8dM%YoMgGH7cSm7kR=TTT=RmoUU8EtJL6G6O+DCux72c zFJuC8G&X(8Mz~E}%H_Fe0S(*WkF!%Y%qG@j8MRM4eRvGl><%MIY}H<*LQ?Z6FGEBaD24RtswGn@ z8Zm0DV45wRvuJ+&eo+0dNMax+b4QKN7`Fy7!JlQ!K@G6^#4(0O%}5Kh*|QM^yrx%? zR9|0T%WJOIZxU=C-a&jCcidpntLA+&;Mr>b%BDJzhMs9Eh|I%H%2wYh4Z+UNZpJJo znl4RO(V_M5^SI}5%3_scsi3vd3;E`)VOV5jWDFa1-~^WSXs{wFs%Z-zji#M;L-lv+2iA?H2{Go@R4$(??DQc709 z@Q1~zXd&#!6*akQf=nXb?Tq+lT%DojL_*Cyck)F zQrE$vVpGMm@jWo~VMs;u=DAjB9BaMCYK#4^15%Mtx6qeF&ZP2W4YbnaaZ4y-ouC|d z`b`Q3CwY|)5anz5=$V+A$|H>?{mAdyN3YPEn=RYM-o7U8UHBexiv9$<;clA$y|7hd z;U?veNGx{V>I&-NT*hq+bCUggy}~kV0suX?=2CHjf=8)AabXNl{Zr3-BD);P>C1j9?hj^)E5O3!fApW(Tq&X6HB8@sKeEnhGZ z_3Nt>mu=zKCLiO_n5!BrDuE1_6!AbTkCww%BX{iRBVq8f+C;Y`t2%M|le@b8MM5m1 zqAKB75l=EL+W~h-AV0TNa*^&RE(?rh zAng2IJjPp1gIW{F*O5uylkr&8ES$MtGUUj~2yUw<%{iw)aW$1q1UV;yKusPg$@l?Ai5bMP+v;9o1hV8xSI2LL} z5}sHf*1)o9(pm|(bkM-ImU;d>I^?V8C2E#*M0@38<=$IggHX@OlM@nb0}UN>OQmXF zD?4ua?6;MNv|q6?1ixpwV=Sh`%)C9FIA`dFp~s^2Yv~(vM$?E?eSyvHR5Q2J8E&sI;V1( zQQI0)_}VA=$M?4ZnO)-D#btKCNF+ zhaf$@#J9(Gto%GWYg*!9@@JNo`E}pQ;zHh|6Q|7OH53BbNfAtj&7kbp1iz0CT>yf? zfBOyK4=3NA#;x*wJqeo%92F=3p#hlGlrlD4{YI3EWfmh2Bfq3a_8~45vP?ybS2ihc=G|`cP`)Q@Erfd`eF>7 z-Y}+R7>Nht2$D!7cUtF^VCHjUES?A%UCkdYpB@9CMDm|hE&MDjeM`SSd;UE9Rj1$J zQqlhN=TDZbn=E0d>*LX+Oc zm|PKvH;%`H)iWK5E(3p}s0QJgi(7OCa;tgaiQc_KUw7JcXlV{LNMNK=oZ+j|d0$$`qsCLDu6bM+HK?4>yww4`G;qRNs5vm5ckslK&^^H3B)bL+Y5}F zgdQhV=fcZ+->+lfKMQzxa3IczOJYFU_~Zg*MEJqgwCJP@*SXSv1xz$NgH?Ysa{n=S zhn-Qb7gQdL?|dv#zQTy0jXheorz5%Qz=}m}hCD@!>Yt4;;bWj&3!q_elWFYR9|`GQF<_yR_GkDq9Gl+Z2?T$UD0F_a&;CJ=B&(y~>(hPkng8l15Og1dYnkurFmEfDaLtEt$hVoNw=`}o_e~?TFxzA!( zeKxN=@LLCKSsO7ybLCVJtUvVPzkoRb_;f3piM;@{MlqO#KNyyk{BTeH;Akl3xm-wV zcW!A_pxIUf(JlQGM_E?rSap5Vy@Ou>XIClsuD?vm#S;{qYe~jUQvT-dC<*nL=_gFs zkJVRyPTrgOt4riu6oKYQ^6V{hSM~vn&bSK^ zBbWB0ybZ|#Tg+2t;UHM7p2=CZi5PX`e`A^cy~e*@qJs11WBkeipw^MCO2l*VYDmcA zVrfH=d)>L}ouyj@E$&Rq_^BFIxhjSO$bQ zn-r{q5F%3zK_>_onm8a=ty*+@lUBB%{F@bd1BMJBSEU0>6aO6B|KvH!?XX3~Fw1rA zjS1u!d@j5@?u(J#AbEi*NcaqTl!@2!XMX6-{X5J^XW`+T+m9{i8z!6i*RPKO;9ZMk z%GBD_t1*0tbN4XJB~!p4;5X;rztBW1i5+j^Z$`X3f0he(#L6W^g)bsg8o>Hdyxw!G zOwN_Ai3G4RG$HF3WA|>APZnmRfF4(>^dc7M+Njb{iNnGi)K34^*W|gwq;OY z`^a|y)2JFs&i#t;Rv8S^KUgz3aCq;fLLSAuFstXU2oCVAV$^-I)4w~ z{R@W*9S_Wf`Xe~TXNyw1ISs)M;yJ^o-W-YYGgvd?5964Ay*6m!*v<{I9UH@ zWdLg=+cI#af#T0?;$O2r5=j2Ak&kaQkO=RNN4{ zc(u@w(|o$?RZ2as|>L? z$!M6K4)|3VfKpjETp7NttrPRpoW8!kYvji>XUNNF+)NLQP*g zw;hxs^YZiMAs1Zoa&i^f#=$X0Y&Aj0$1Yp{?W21iiNwvMrAmH`tzg`4Wb&d_O%Ff< zGQF03&C!v(YqkbY*uTRs?1ov`!GQblS?`9kd=ODIBhwHy`*`g5n)7bNg>hDrY&5N+ zvhv%779j4Txe(Kj6P;h1uLYTh-8BJ8JXGH<>TVx znVFwRt7~Xjnht{XTHGr?f8LaHR4G%1Vz1@`CQ4U)zai^?t+iwy6z4K=B>?@ncI2f5 z4VZaU(iJZGD^&lmVmgicv{=+{HuFjzBNVj8`jS{Zjo<>Sy-7EO@wjF3S7REtOY_3o z1eSWz^|wQ{yGT+=MHj)#RFK^{TeX1vvN{#Vr51L6O^c$Uve?iQy!_l;$rm3t0>_I- zNg5#N=;(mxx}OT7^<%`MF#-e*XQQ$^Z(7?OxDA>}Ucr47EJZaU5!LCORBrnOP!J!y3lYZ5S+ zT>tW7{9P8}TMlZY=zpzL@ogftPE^vg*RSt*j_*((8yc*EC%@?)W6;-hc(1fS!2S7p zlK_BzI=#F^aPhQXVWpDx_1H8fS=y-g~Xza&M$x0C~=|DO_rlfbKoR=&-K^! z|6=bggQ{%zzF{e8Sb%^?BPFmvX^=)l8j)_1l$1ugL6i>~pF$$+2` z!YZB2*B0?tY3T#3=hD?;_cphuJe9|mdas@^mXwi0Od#~PYb0uH5$hs#aucp(#FMzo zO+vMzQ;0U7DA`Noh4e4MUn(99c3t>3W@k%~34Er$JlT%muXT_zw@WB9AwWkYsH&dV z1UxrST943az_^$A5k4G%}w0Me&Q0_pJ{n8a~uALA4kFWpHC|WnixiTn*`X zo_`}s03KL$*U;`3(@5INqt**40TM)rdR1tXEv`o^(#k8VidWTX(#C;bzr;uOL=V%+ z!91^#mw)Z!S%VhzhVgDu|C4OZxW3j^qX>_c3JR3ZVrsE@TD8g*W>Zv!e;k!awNv&T zVnxv9^zQ%qdo;-gqQ*)=)`0+j3^RhmFf8`jeTHKuzT;4ldQI5$dy0TI;LE?l#SzH1_y`F=B}!)>k==egTNfc25AGb~5E6iK1^ zZ4~e~(!g^L#Ka!MjmCGUV=SHw1aV=;usO?k8Vz!GpukSO5lzp=S zr;p3kg80Fpr9k*8El*&UPrJ+IKlEYnBS4f{5h}6F6)pgv?(=q;JVj-6Ph3PCxkeBxJ zbjy5LtGK~wLE-XI_OLZjwcS`>M_~!&n+&BclJ>Sz$y24A(wSqntUny9>c12sXZMX3 z!dqMW+c1$l;q*&?Mj#PEwF}2j0wwW5TKo+UG?&Y*C_UvVlSwTAZ;ZTg-~gDrbPHZJ-cm$4Fs$sicC4kFcQv&c1Q$hUP^PyL(}aWP^M8nbTXe!_OX)p)b@De2U6 z)`(XfUM4>2K1&Aj2=TMCb4D5|AeU5WEsUH0%qSPz+}vCqOcOsi8$65&O;1mM18^9? zQJw~fP9bfpWa)u>TU|}c*}0aTi))Ld`tDj?Tv`H92j+E_vP>`33X_y7GJN$#y{{dP zzR``BQ;iX~N94B=XwVR8eG)RPZ#6stk}nvTGtx6V^UBoh2T3=A9{~;&f;Ym6R(rMA zuC0_5%y?%=u~+n`ITtA7>FMc}ElW?)mW)!g5f#aFN_@)^pEAq7+0SQpF$5txg2-83K+bfXL;y1tuLa`1!kO!K?nHy{AThV42~#Fd)!?z=46*rv(ZF|s32;OcF>cDPl(X}vvZ zlsDc-Sb*LOA0D8B^VEt^eRFGTWff}oKvB6H2%3TL)qL37I<>pIcJicBLyzi%zVZcA z7YoxscmlUGKM1EN?B~5IfrP@Mo@>9{$+W=dt2aBdjdaK-yD^207wWhX5&FH8qa~k@ z0gmKjJ~bVk+=;l~uag!TV+koKyhz}AWl~yqIpd(DD;4^FH*{ot^e!^}l`|h19?f8q z&8slflVLYM50_o1^$dGQP*)`*tn_nNI8BLO8=6|Rbq1K_*8Sc!^yv$J!)`S5OO9ccr}4uNC@U8#y@Y)n$z$R992e!N6s_Q~sEde+HO)HK%F2^7UW zc;X+8j*fcqVItzDQ8$rpL<3}@GC?FHNw=D1yin&figV*8*_IwqV5|=h)5~nLwdh6G zg^AwUD%z?hv@Xz=Jt828^ESEmJ1#kn%2!a)U>Pq^eq%0^pCHw_6Cm}K&42Xbn0R@1 zrq+7@K+Mi8K1^zj1+9;#YShY2nElteZ#+2@$W4Yu2MyLf0~axN4vq=uPYpnjLS=7a zU3P3@;u%&i;-}nP^uqT|aDIG`tBjwJasB2j)^d>x)j?b+0Uj5929ZvbQgkgi3wWGy zapphHq#K*Uazx&W=y{ z7mWTo#t%775g|1&>Li};8KBu@(u z)cP6_eA+C0dvPs9U^z;;%cCkfQDRaAU01$`26N+=%cXJxr4S<&3S$S-g|DIJES3?c zbGPFRnvOD8XPdA>{oTZRTE}@8E!C2N5?{2D1m8Sz6c_I&@ERFT%nlZFVW0u3(T+YF zbod7V*uuzf_WTL*oK@P0lalc);gNr}U&ej%()^Cju&P<_A_llo=Cx-HW>Xctzg`9S zW|t}$$o7%oX%=lu5i)oA+7K>-cF@6mGXfsPrvtr4v^D&$MX?}#K$VG>5}P{BtEf@V z*;Ro}*ch#}te_9gF&%n|y#w>GXYpi1 zB5Z&l99SPRJttHHMzGLQ^lCOEm)Pf3589ju_)(mmLX7uJ-70t$2~5;*z3eS#tDe<5 z>{bN5jpUjaAq@6hbZS$+kyloxWrQimeOR3eHlP(C2XiRJQcpd1IeSV?$0aW1qadw+ z-s|6pQzblq^xSiRa@E-LL+ggMWKxZMfo2U;j2*=kvT#wxXRHE^#xW5e%E{&xulKSn1FZ zzd6cf}TCPjr-a~Rl| zuw*xJKX%cNZ=^D0snVOzd|nA+qGQ30MN{Zi`T zc;ij^b$E!*(AyL59+XHGAx9Gnljzw7ZS=|OW^6ZO!n(Ecx`oZCTD4whJp^d@D zkb+w2$8uCb`dyDpiuhj(Pu9^t3cD*{M23D1KpdOo`UpWK*HntXHns@>yreqLATokOr#+w>cXet#}%@eI^ zYcb|*D>jw>sqk|eWh%rOGcVI=o19zxS6q0OVToxT2v>so~ap_ebbZ zN?&5TxcbANG}0)wP&Ear)7{yaDK1Nm-y97(oyGtqSKk9r?!cIR<^!EW!#Ou*ZRn_w zy=0j7d@oC)C1K85U(%tS%b?EEKI65V+XY^Ah5^CtS+0&+BKj{cr?$i83@A%%?)>{} zQ4#tVo;KFuV zlCg`v`k{kT@_JtPd^ti69DIUol#5+X{sW%TbDbPG*VtIO+W6S=tcN?byK(49dOd3V zTp{FwhO!aBTuiOpI*Ny%f-@NdE0zX=M7j5sSN)@DkE=ECK8uY=fT9yJu`j^O=Ce4s znur7qFO(gA0+$CZz*yu*O2x3K)tZ#i>(uEN^L`wYuvf0QBQ)IZVc+WN!T#h;+)w0x>WnO%zQe zhCoq3f7fE0H!_kww|wi)QPtpj@_5pKws#s%PVh_YrCAj!bhqv@`08NpdI+()y`A8$K_FZqW^bAt%HC>&eAoSKdXpefX>ihpM}uB!0=9NHVMFL55XFyD=*H|6;7VP?{< zBz>?RMM(aS z7J%iM4nR@CbZ&-f5GhAawh9}gTm7-7K13pIySQdu9W`EN+rdO6h+jR9givA-ibzHI z&8CWm@Q9A=hbM+vtng`+kF4c$&4oV|59uV-aii3>vrIuJM0^~HMapd}pLDA^Ztgd8*2^jTap{U4IEKk4@m%Z6v}=P~ZjLWs#>QC}FXmj`ed#YKs5qg5&!83ZpDLh?+p z``QW{F1jBAkwn_EWHDRq_YHM*c0UYql3x;xHCG3-R;&@I-*nNHMds5-RL(hR)Y{;` zkv-8grNeASwjkk_9ymvTU(N42xvD0bHn@ReAR9yo9m`AQfRA~6pdGsAwP0VHp9={_ zVkUFJ9(+yOg5gVWtM=l!5~DTYbNdzI{m_{Lw8U06A`X~RRz9{V@i?9(0|;ch*T<*q z5QG)cbrhcRc=V0*`@4`Pj}Aq8E%X*YnqaZ?k|*J~Vjn z>-1yEu7Yu_S?cuPs>5#}pqPGS@);c4d%a6^A(yO-ecDB`ES;`G4v)$*eRaK%%pHL2 zB_ncoZx{ZRq>h#f0@CXlR8)eRKn%39KmohW$dR#8G)d6`($(wJxk}{*naRNQ0Z;Ec zftnl;)o_|kQ&`qtMn^@Yz((lEU8x#xZWUFHO~PciE7;O+MNtQGSsEF3Z#OO%?W?yn zMNO?D;moHhWNtPKZzN|ZW)zgPXmoaOCi}Ac3S>2Q^SNfjb*`=mS1E+gdp!}5m-iN0 z;qcT$VI|uu=AT{GA1dl^r=9`<<@Xg<{=yh7`|oF881_n5%1S_}7ZT4E57h)N&Yqek z1s8~-Od-*sBw4j6Dl5mKKU{GIvhI0D7KiPwzp|)N`QI+$B`abAP1`P~5Gw z!y~2?B(Kh14X$mkM;3TjAA_yrxzR!ky@q^eZ?uIIesCc=w zwDh8v&Dib~5?vC?lHSQvPoFIR**}wX<+Pk++O4||1}7-7zAc#uqmj?Do9V^?HLrST zmO_m*?DK2M)w?*FF8I6#OZd%~F`=m{A8woZvPuVIwaDm6po?psKIgI}BkW(8c2S>` zn;p>+LMG+r)?g>*Mf?zpbQzY+_;$Ze59SP)1!XZ06ZOZAg&;W)#S7B2Y;J8|CIr#G zX;kbnMjZ-Vu()3$4Sn#hFwbcZ{H_xOR(N+>><28j2P_1VUv&CP%eSG3gjW}{lVcwV z%@g55m~@IYXD|Dlt&caA&~MEY#)Zmiv;oP+Ky8E7WXxP?-Sl`e7Kv0|xlkP{2r9F8 z4DrcYUj4%8PZSTzflvqV?8w7shW`}y){|fm*ayoAh7w)eMG@SEt33%HGI-|(?b|zd zvfUL~%170oD86IdpVUHL6LYg@h?+}|dO`9GB4uH0#pd(GwoSc6KbuKiHPyV`vI_u& znL22gY5U??QNH;8M*j4$1)&DJ{$$b=4o4k=m=Kka5zE5zW8QnW>H6|i=Bmjpyt}6r+(O-5I7bgA94yV535x?r6b{X z!NNhcmJ?`KX>m}lf~ML~3YDye6fvj_U(^bV|Cb<`NYGsb&_7=4L!dA2F|)yzm9NBH zlT%h!@w@O(r@v4(f}|IP2N3q_2Ap4m%i!%*RbgXegB2|hb`ME^H5Sg*M4<;=U1iCm z+tSm-K_#t;=v#$8HAG5OYU(g=A^0#HA`Gm@Bt=@xS>1)&A%h$jTf|FqX@bX&yT`e1 zTK)FbIq};qa8tV0eMEsINGOnQ`n4k+8?6E~7(6jkde9D^l7`4o{aXC>lsLynxn2&! z?qG^CpmCuX>gy@P!TCie|3VUAFU{~!JRhpznJf)cySmi)`1;uiglS)BIpC?cw6+4L zqgM(Y8Ip#EnW)&5DU?I<;}jf99E&SUGz~Wm1T7fvu|?1iya$eRii!q!_b_D1@^;Cy zg1-k2rLS-qlLilH3hD@o$53Ggi>ai52rcUm73yy3m!??fVKm9-n~wb05;2`4lA6S!1bp0*$fikoOheMw%pxb)c30d5AI z#i&XB2``NdTp@XeJ@N0Ua1XR80(PdexAW{~Y1%RrQmL>-9JS7q)7qj`{7>(LEap!@ zgl&6+auqt@2 zR!aT4M;n<1!czEqpUc|BCI){Of5`7aSrL8z{ylA8vg?jYoam>8E2n1+^d;X;jG^To zxdzeELb~rZWc_PVp(rZtkGYMLsWBy@2RFMPXQiT!@l(@}w7g$%sriZZ?T~>!p2w-Z z=3rjUhd$tBY5fa__0b#QSr`R0Kk!|1a|cYEZ<6mQwkPcH!YoC99SB>T(5GB&?{{$2 zW<;FyX_5MAXemLzVSWpKK8GV}@GAg^Regrb*n#W`$;SjAc`9F4`bd6!LP8CvM{YXu zSnTSpwjCK6agTkg2?%3;?=EV)@@w)&t!yd|D*uM$ULCKo8Ojot)di0X)$3l*W_}~) zxN<06&P`*wHEbvYiVPcHZuwKvG8pL(NbW;9LP$X9mB6BAZ(m_HS<=O6Wc6KlDTYTh z0dZ1oy$|7iYQ_^~ba9xIIhRH%ag%+D*c=yyy$7{P)f#Z$ppl&#qxy|U+%CmX5iejf z$r)tFVK+8QH2x`?Y~i>we@~?Y9jop}b?gOWkdOlv%Jbj0X=cX1i{9hrnY+(ySaGGa zRaXE}$4M%_mP9LG0(OnqJ|*a(r@Z$X z@!G4`XtO_Tcse9w_T0ED?iw&Jo(=8@a?*|^n&@XKib51p+IFO*l0oz2kM;rzI>tan z-)4buHJM}_5MtNUN&CjO3c(ybq)Hj&jXZDmwCg&~HJ8@54~LT$)*Nqe zRJZEL>&VicVqcLUtT+*h2 z#>y0)w(Ms<88J{Mgw{GVer+Q z;Em3f?P7lke2k;O>CGcZ8?JEFp)1mppU{pd`B zm@4vFMAT_)xW)&9s2EsRva_8bPPaKMDqa4&?#7fqQ9{Iakg;*C?BG$@Ud!(tvIwv= zULCVME33Nj+P}H~?b8uL5v%XmN5(W9X{}kTid;JRlYGVBkD<7Vbw2Y_$N7ntg49~G zHr;^;l!@qd-1al#x!qdSiPPRa`q%pb{fJe+6XLYFk)_`j#JF==y}NThI5;%(%ZdM9 z3)$roF7>W7O)O37#}{XF zw}&;(<75+67TzS>Rzk7~yfjf!Q4X5Ex72Xs)X(kzsDdt3#5wvJESxT;s*YYZrHv!$ z=`8-e##oam?Lf}9u11`?3;-MDzpWG^7X3udYLj@=jLJ#~D+7B0aF|&g7 z2~5=K*FDMm=W)R+A+8v6sCo3;w`$)w`~L_mOTt>6&za!>S!$h}B1Jfbp~Tpubo?5b zJ0?0(vbh)j{A?*?Wl2sTdNEuNr~Q#DA!nmC5&W#%>|$E#Vo3&US*7tT3L_vW>ZbTw zQ=l$hBnZYQQg>gv*wcb;fMMwOZ+fdTc2h$s4UHeyW$R`_tTvhC$A_<8Q}3A3tTa zxg)NAHsS;lojQU##1JjAWn-lm#WJFH*r2#RRbdh1dU+xVYJ!T2ihP|LXJojJKM`pS zr6V_nGhs)u!!$N0O#8~7`)&xyHK=vjpardi)&o8PCq6wPDCnZak=aMekN0bR~AWkg8ug4vsZt|QaFs$Uu z$=$j*brZ_cPr$>uLb+94p(PP8I8vz>W89`$~2wkE-2xOwr>$(73$)7eRT?d?O7zyIGzwSP=aXSYSq0BD^I76I zaea$A8A2+LO>$D%EX7=7WqFMtR0dhXpu&*C)nZ2n30l~Up+X^>`DHPu>QVgw$Y zY-d+QR{GB(d4_IAM6E9aVJI`zpaq{__EXKBF5YWkrVq9oA!LMDckI+IG#gs@CE#%< zIT|*0%wDGz5szN_R~b^qRzK{Bg{S^grj*u#ACY~d#m(Cs8}ENLc7lgF)q5)w;NH}0 zCd@_Uv%IPOyG7)OdRZAtN=hfD@9!3G#GM$AtOjBK%GE+4)naCm3yxp-?mF(KbAJ{x zB)?u0=Jd3_oL?2;l=>i=rU@Wa*4EZ#k?VQ!!*3N8se$vFg0^-+UyLN421Ubj_S1!Y zaZ3R6_ZsxuQr#WyAvgD3sH--5qod|{A9_6P)K0gjb@2)5gL| z!{TIDHtpeFaVN3r$mnRv*<(J;&ia&sXzT2pg7D3pJ4FaiBXriU>&6?az8f?#hx;dk zeQL9~BqU}}skvVPCrfHh0p&&Hb}3uiG76N_!AO;x;x~`fZ<@Vs|JK#?+{Ljnto&_s z^++~mxBklMHKuX>w0{n(VIhjf~h)`S*Im|6FrI;s7_!i@Pv>f7Sf^dGAhEnva6J;eWx) z^MY?13PWkUf1dtZgW41Mt}qGLyl?*RH~xhh2M+^b;M;;3<((^Kbx-?<8d9Lj1Rv{`DW&f^W-sisL484=Hl*;D<3{rm07Prvx(^zx9dMo-yS_=4|^}>0cn9-mG6LpeXex3BrH8YN-`){FtkqaALeZR zs}M*QU%e9lB5ovTo3dLC{+Y%*MvhUAP2-e-MUj3o%m0wO{MR0HWA{v+r)ai1ZiV^~ zpfKf|=TnWSX44QW?Xb;b^A97T@MNY1D?7;Z0IcwTSlc^*ZxM7^01z<$@R!sBZFigMg?!@QwaWhQ z!f$c~>-N)J`C89E?zx)pU_UcI>>mDy!9PH)VgX~?sXdA3`KK`p5#oWPq)o_)_n*cD zcM51dZLZ^qZ1-6Pf9<$+J@A9nJf@es-mgJ?;E1C$V9W#iww z``-CE9Rno!Pqm!;;{WMMbc&EDzXmqUW8!^}N>sid~f}Cg|LSGnVE zFK(=uv^tTw*}s4{r~3BooApVL+MOud$oTkO&XtZK6PCVAjf#d5?&0x(u-0T2>pvG( z6#*Pz#Dg$_X3O>V9MmlS`c z=CuFif1O!`6!Xd==+lhnT!$-1UBlKFBPKTbps*+PjaMBA(K?i!<)pRsZx{!L1F`I` zpKsIj*NakE6>qnZjDm>Cltz^ll+nw_eV*?cnG!!~NrZCE+&l zyV|!1DHJH-M1?&S@BTTMrr)#v0!sywAUtz`*c_&yqGPmWfACA9+Umwji!eAXtcI*r z90Sk&_JQl{b$Uj&7(+M1GK>3lP~N%yH}(;Z??I+JSJkZU3oa7U((LK`ftjH@P4|6qLC>#<6YQ)`1tu~a^xb9 zHpW$=p|0x6e3dN=Xx4K1n_18%gt}U>q}>vYN@>NbtQ;i;Md6O`eO}+ve`gEKq1vcsMT1(i5GQp8JhRtB65!3sT9| zgb}r*jYiRnW2>|#f+z)jAkAFj(68Mk5DhhwOTxD#x7^>~5BvRFmFTgce5kqiTcwOX zLelDSYotYKA)#bMlV^iKxp!qB@U&<-+uLWzrEb!5QG|@EGx`sYx5ihl9p+-bZE;Oz zznv|=s$MymKI}KadK+0C0z6L5X2$Zh=l~Kh+RyJHUN0*vtG-_QD;UFOt``yZf88sd zwRl$8DPpB`uR5kI8=<@Pr-@N$&4Gi3I)aS8oxqwJNDQkD(EW;zpp)wcz!?3x23PB& z^|v&}{9>}UQ><{PRlDb|Tg}FVU zMthHpV8B@=(BfEH8e+=%x)i7gOHMaA5`oUiQ3t3Qm^$<W@!Gq=Q?!G^+5Tm+%@@Z4$NuQF(+?=4DH5&LRlL;+Dl~mHa`|-+iD|%lazc+d!seZ>;tc1ZK z50A&jM}MFohiy;C+Sr>vmwfYPpgb_b>k57eJyUl+>lFWI0ew}s?!homjpanJ&Zzt&!Hv6wj zP6L;6kK^eFT~iHU?Y$-LyKXRhPZP$cAHt>MxrM3H(iEj_P*|b)(383)0gKfcTie~7 z+|fB`uifC#OFm0o95Mn60|!+u?#`>L>pvIk7CwEiRX8G_WXN=$0ZYva4pVc}^0}mg z18bY#$yXR_t)IQ{#>|BNJow;~wEy=T9_&FCs(AttDVq>TV}8kY42BIuk>-19}> zIZUI!l5#043@g|zZLJ4*%TW7-fKg8gy`d+00m{Tr$apnz?L^U1GKBlz6;jq9W0ORR zB4bJHjB4Vc4-gQJqoAM_$?%KVif?Ax=Y8Q_YX8O-mXTd8adQyU*quf0uJ^-U^QpN= zoOG;!QhP9IZlRR9LrPWWi?%8LPf<6)5R~8 zv}?tFyS#)g5PhsJ;Eh0h)%A`}sy$M|J^@taRJjrX2Mf=X>M51Mkp6Z~x*q8()&Lp@ zGSxLEd~R7|2S%UgI@}Jz47rRMH5ISNe~th0_Yp=750BK_3V&e|{>6sjtBIQOWlF!c zH`?RNQ}WQK{@5^};|>j|Quf6};Y<;xq)o*n7nuHq$0z8hTxwwhHx8hi-yJ=fMYxNU zA^4PffFu+9fYW)$46pCz%>9Nww?Wmwi^2ydAoOek(rYB45QZcE;a$Y?PkC$Mae`CZ zgXL#<(hTML81T3)_LrwYVZsdSGDAEv9`fGdwE@qa1%1kn=L%vHrW`-p=xIklJ11pm4h|L=nb`oB(BF)_Sl zxvT9$_lOXItIiwA;44(K>G1Ff=_`-*p)5;sbcs* zwx0MX1Bo|^DX)+`Vu3%x>JgE$HiCuIW}m03NA&`aXDed< zuVQA1u9XD}l4^{=pz9IY>z89<2_mW=NUZWSd#f2#tP47E66mHm+uGVT&1y0P-w7Ax zi@DU3iaa5KLP{v!ES%E=`c>*8)kLFZBM>~o^5nuQvNL>yDf`5%?#HL>m7EumD=8cIWzb9K{ zQrq}=mKT0;s|w-JDGb}zs8ln=O*F4klK<>ygbq*g>#;4Ow>%o1f~w6NP5Ch}vnQfS@2$UoJ!4SblyG3jB{hQEC z05alPE@RqgJkg1vYa=ouIx!ZU?n-ymK^vjYo43MYcBY<}a0^Ahmp`a>eY5D1c|LHO zVZz*X)Uy$u6YQ;MS3&We(0x>#n}u`PN{1RlHql?&ED2$^Y5nyL?4Togd2Q3bNpx$E^6H3sw>29rD>GH2jJvYzqGKe zUX}rJPPVy$Avw?*<7RriU)_}EQ zt>gml47f0{L zzkGQB`fkI!r!n8*UZ~&T=zy!QtW&KGoUczhlB56s$>r_UA_7DdylqCt|C<5#@0S zEtz~?+diqj6%ss*7LKb&RIo4jjO@3s*aX-G(@GKgyy|ODChN(@aB;X9C}@Q>9alzG zmXmI$1RYK|FUfWYX=r8CXT98CVqv2y;Gm7aw7K{i#ce)WCvmbpW3+>%V~3Z*j&4A0 zPijeyM=0Nb*jL_7Bum0AKVSAemgmqJ#4~>&ujkQ({V?Mp^n%vBh6k3bQlH)yN7?xT zG=D$P)zo%7UyFmL1xL5+0>#%K@TYh+j4Ar)TY+YG3aV(`)fDz;xzA5Q)36(zrH(?F zQWzcw(TURvu6fYgjG#)U$WWD#JGF>;l$S0Ky#}6AF0-(J@KsWV9KV4V#)0m z3U*u#G?1+5K!|pMl{X1MOj0@9Z*wjnuUK0lHwSvHk$;uv^tTgvh|cOTKPwzK30i6f zV}B+#Q=eq^8_ex;s~>PkJ=`Ix(glt?hK-Dl?egso>S8&txOcz-th=4E9ozl&@~&Q_7E3ZhWnW z*piXO*&k^5p;{Mh#@zW>by&zXI~3D)y_*~*fG3D2IIrjd(+6BpVCro$<5;ooXZs`i zHHF8c0(>7=5k#lOY&!imDMohFC9gnCjU#RO6ZrRVKY9tZKMT8^_BWRH@=bFkxts;M z)Nh*Fz|CLu^Pk286iFivw>95r@xh6PC5$e~WfNso$^X|c2|O8}$1kkY(|lgB$%lF$ zbj=BdjhZU|(0Ij1Lmd~|2o*yw&QE;^0+_7qo3g!5+92xiqVP0Z0fyDarXOu1L^9FGrc~J8xb0sM zA56_%jdg!I2x?#~YrO8)Qv0H; z_y~QkRGK0HY85|!9+%F;GF;AQwA_h9@arpwZ~*I=!C`bS!?Kg4$HOURAd=c$LLocC zHLB4yRk`UV(tsiP?ashxr>>foTS&2MsG1_n@HX+<+tE=cLXjlr9`&Tz&%W zXSt1PPhYZszi2NfCP2ZY!~Ip26~hwI7Q%0MxPbhhbpk7Vcng{`3cfPs1X2h(MEbK9 zSCSPm#c8@C8$k7LG1)%);ks<&by**Bq?}!hUV* zgK2hYTc$M3XSsr`GNDS=JAZh@4Sg+WV+3n8wOy~3wtU_tyLa9G*-dh#!$YJYu)I3J z1WOp!Un)NV!UK&Cf=F4uw7x){t3^zkE(-spr4WH=z;v6mW|Fr?@I)aEr`Xih?R%_I zX^Pr?Q$LhR>>f!7{cIM-cld`b*g|~s_xc}?ff92V=S1~~tW_6XG9&Yd;CMU~XyZk1 zA+Pfkwj1^ejr;BLZpmw|K`S;Pd9O5h(uB~LrB?eQcxn{#f2JDcu*i7nk;{EHKpl?p z*}jT+4?0Uhs0v`)$|ee!?4SiG0ij@Bq>i31ghy+IjfNI@P?$g3tRJKl+gyT^iDw`q}qrRjBI_qHk3dclID_v<5>3g{ISJjuNK|3e@U}urWG@ z!f8ZwkIT`Z_#LbUuYw}9N!aV)g>96G1@;&sX>7&L@62;Xe><5;cFQ(#GL5V6d^f+A zlsOT^VMgvcCSH#YK0aqb(YIn3%U#FG^g^qFQpyvg^f-=D5G;}TqU_BMFH>$szTLBHi{&rHu%-tFNF zytV4&7HZ9xZwG_>L_1O7>B#=GFEKBPI4x=HY5ZUfwT0t_d=32I$_UZ+kj+k>?@;s{ zLnS5|XZi0}dS4|-KUnybm9eAiwY?_rdf4swoTLxa_UC?yCd4*CIJ&#|Lx-*Y#;T5} zv=W7f1`<3H@6MHE0)=_p2hY8M%G)h-^!B!g`0$9FTPzJnsmn7x5kUOgqSZlTq$a!zpd>!%lMsmq$xW_^UVJaIgx znP^Xf^nc4^wkd`EEJf&{)~?x8494QsCbeJ6!gE}mCN$Qi6+FieJ@VK){2ksg;(Ju(J1p|`7u!1( z4I?b#tubY{&e-F|^zkxAEAMkR0NY_igjupTcrCXb-6{m93nA{l+cTjzR-bxr!) z^jx%h66=Y9BxEJgd4b32AlumpV?yG;Bf6TfyE^r@X3E!fdY~l1g@lNS5$U7b^xjk9 zVdUH7OPSm6H_?M(JdDFPL&4AcDP}rVKBD5VvRSOt5~w}mh?DZnBS5SXVZYNpFrDtH zHE|CV&($=OPEyHgv%KA?tXQy6YF_X@6%6fHcB6$jS;>?YYSlRwH}%4&APMKJfAq0N zU5-dLLo7hX`!bU9K9;B^rK6oxTwgyu>e&RLgNw%{QfrI#=pd`X9^BrX-7+OV z7J+k2!F+Dbmp4;kpVjQS)w=y4n!MpOCE4d8vJXMz_qwyiAZwb_FPKK-lqgV0ncK~# zd5V}$$X4s|Ckd&@hMNP%ZTr%hzNJU%ZpT|X*#inRGzs7&qNqPBCFD?{>6SDb*d$)a zyS*s9y&z37=!@r}EfeC)9X#oU{G?!?_o(u+YpyzMic9g9uQog@+lX^aQ8c+wWK?P4 z7xkDdHutxW=pJIF(_!@f48l%DGpGD(_Rbg0Z2m%OMJ;ge>6khDS}elo4&RYNA?g>e zPs_2y?+Vl9{2g{pM9>Dx*TRTC5MKn5B^*0K%Ab!5m?PO!;?Y-ZtZeuTR%}RpqkVi3 z@vaE6&-}L*ek$WwWPNdQKFt}h{!^t{Z#@dw5378Qi%vFACeY9SJM#DOa7KexE_`@8 zm71o+m9zd_F*BA3C}crbLvQfOWYNsDKk24@#hgd8RPt7(V)TI-F+exg1fr~x8UwBf#B}$!CiuD&=A}S z1b2r3!Gh)v_CDwQXRWM#-)?L7;eVX1jaj2cjT%+GdjBM+Vwctm?DSK7ShWS|Cy%?` zI(3+<*cq0NW9A8!A6zO|JZDw}!@pz~5ZD{+P2^2Wu?{q=%?F&5_LG^g9 z#NJOa3p=PEeu-H)xV%SQibM&gbA0ATbr?sxILEk)`|yBzcm9OB+%YF?7)WXQYiN`6 z+*^-Sq_0KRVVKXMoAO<`bRd*y-&+E_hm(d$1iaq5O$1RyXW0ttilV9ldH1s^_gSg9 z#iyyxb5`h zwzs9pD7|Kw_$2fO?T(}$9_!3%HyA{EMKlVoAEPF9yA-7z;kxWZCTL?xTW%)Nn#g91 z#;5EbkU>7W6(Yc1ILdzX0;Tj*WR7aErLV7=;82 zqbIje^!q`AzP=`v4P90lxY`m&l$wqA?z6B)LPkFUG zb{@%CV2bVF8V4YxMpdvgVy&b={Og`In;g!(I=NG0gn$7=BC(W5wum0Fj*3$$m9bhB*qeQNxUi?EZa&B&oXPiXZnnz{_KUX#|A%Z6P zZ=)Z7E_AD@K-ncfo!t-h8ToIPPrQax@ZfW1-nAqd!$w>g5ZLlJfi0MnW9gzgfDCfl zhuB9FwIH9+o2#b{*R-sQwio%HT&ov~`LDShV7m*w-9t9i)2C#`hjyr~*m3f2jNVy$*KIPf&c_E+qYG2Bbaf>7$ zKTe@&wbR&*phAocp)EBUB@qdFe%FyKwEJa4aQ+Ylgw3Q53lzk0G3WP*54CySDcUlzGp{&Q1Yq$B~8I;w?;LtfRb-kVQ$2v z*Eq$SLuJWl;XukQ%-{4_s&}b6@?uk%JSp^h?84g(Ij<4{(zLLkk+{a*aGJrZUs6gF zKiMkpYM0H9E2{e>OfuN24SMN^x$c8;qi0vvl&a&~2IHSUch3Mb*GvaZIsXs-DW+t~ zSWtF;zD-H!?dYGMzaH4y4xef#6Vl(vw!3sp3+NUTdMb{f?X_N zLb!#$Mb_g7P|#d03Qk6KDeB1Kgk(V&udN7o26tt!+XU~1rke?Bh?Dh2dIGiH=q~>* zxQvf$7u*=*_P#138s(+wa6g$DLp^0E;%EKfitR12N?bZ=$wf|FL)HjL7Ou!UKEA(M zw5T_$M0ndy({+@YSzHqj6NU4gC@Cq?PG3h&nSQP+kHW2%qf!{k0%1kM_u*Ro_S+jo zzUQqd7Spi3BLYn0F(fw z?T4D9eZF1rF#FuhIS4Tgm6JRL0k_&j=D*RZxsd-QSR5W1K1Jxab_dGg83trAxu*zG ze?y#Y&L(AOR(yoTs{*`vXoxS4dwH{}fQ-^!8&k_VC9e(=&mYqS{4!0FQ!R(=RLWt} z3W%@qev|*V761#;Yi`xhk|9eFab{r5)*Sv8>4AeWT>I>frRCAm8ynCRmOTU!eiB#> zI^Av;lf;gs`A*^xjR=k|N*FhL{rRQ^N9Sns)QX~i!j7-{nzg;g(8va=w^iTiIzZur;J!TNL)nFGp1&|vV#uAv zHnjYG@|AuIf-UBWw7Eaz2U}NeZhSHv{v4^AtGD>c{c{B6K^0Ue;64{WcVS}pR#2a7 z&qlNM8?$KEONne=9nP)^9S0F&BV+%g`fYIcFYh}YKV(_;shro<(NKYq(2)IdLOwDE zzNhMpD#J4x3ttNF3^(d!uRPv9-~3pYm+toh5arN3tWh|i#3FJTn$#S=!iluySUOWgqw0kH zz~*nYpMPe;zeD5Q5ErR5B?1DZW`c>t;Nak!nL1#Jby0gHC^1vgx@=kZ*46mXuml-U zS7W&tU89bc0dBggY|dBIO~V}?QPNmCLlwtO#@KYDl!{4)LBt(uy}EF1e4Jt-`S3S% z-nlf!ONPJiRlTN0tpVk6m%dGo|3+STbR@^V@O!;ZDkND}@-J^;Fm~F=-d`7_66(*_ z<8#BKsq$LW50xnloI=>2T>2L|<}akyK=1en))WHR(J;CEd0N|usHdL-Oc9SQDP zcR=X!O}{}h^5+{wi5&CQLhOO`(dpJR<9&@7!h1JL16SAOfG zen#d70m=}Dmjb1rTo-5NMRVdGF})E%)YLo!;#APjscDsz(qaK@9^uT~T)}0B>?OK` zMLXp5scb>aU?6tj=snul4BERFE`ienpf>$5flQdmIX&0`KX`^ZdpoCKJ=Y$+0Izl4 z<-C+;Mj+G|24EWX`v}MNe*NAqS$Tz6;#94?u(Z^N(v8AKRZeR$gnJx;a&VLQys{$D zRvJ!~74@=ws@2H=tZRuK-U&GnW=UM?HYSx7G{B&mrkY_w*WhI$?ypB z@y-A=>~tk3vK&4acSEgfNusxIExwX!RF{;h#B#$Vuew=(zU>~y{pf2S2bC=b2tzjU zeIvqrYs>-Xz1nhY8rH1W1;CR8l!nZDJISav`C}AfaNyqGf3Xr-#P5>48A~31Yx?yH zAFQ)n+`lR=HLCw%`xn$-(^Uad=`Zo%#0j=*fXE%Z9x-4|^@bcun-Wcxl`J-I2MPtH zRZKp9YMkZy9#zEXaHe=Kug4rW%P%=JFBz85G<)!lH(Tl(nj765j~+rx2dapzu*M+b zQrp4D=VhT_9DbpAHNk~T->2&Z=gWJAWlugp`g>cI+C(>eCiE>g6*dt`+j@%KqquJz_R}7L9%TIl^EBJ@`KDOt&Q5; zVzXOTk6X}h?z_!Q_jle(tsWMG#Ty%j$I?OWV=R_@=D%MFT_B%-d&~g45cCdQB16A& za}oaHyv71e@Yn%J(CJBYlh&kUWLW)($fpcN5GT~c)JY7p>^aZ#932;tc1jKH>vIeA z@u-Tbc|9+=zgJ$^Cei`6qE9QWk%@;zETlrPCk`iyRN=IOM}c%A=gyaK<0EyG_Ofcr zx_t6Paf(Scie=qtV?Zj#5TkJIr#gr@O|5n+&Gzaodsd-06RV@X>FfoJ%6)l zLXlFoqY`iip0aRbE>$B7I(PqdzIo%dsYllx6uwXe#Z32zBGQS3jF_^k#KN^ns~1An zT15w}01iZdtN?T`E5JY-E1c=TyYEULc|jHclI!+$Ht1k3P!$il)woAy^Z3+;hhBsM z{e?OXW$uv+t!o;D03EGA2jsE?Fk z(1g0-ufI$G{_)YTv{)A6$naNKk}06Fyobf@^_ZN!K&A%Nm2Bgv<5*M%MIw<)^QHxB zD>bXGU_}v^4*CS3q!fLFQsLgrAD0*qGq&eT#nVHlKpeRXb0QMaH0)c_C%4nF`W?`z zI~~qftDf?^3Uhsznv=-C)M!Bod}m{AO|%vHQ|uEf=L$JFdFo-n3ASlsk&-l5C>mCL z2vn&AAdGmj(j<3d^STt!;?yEMwieK|(~nt22_~}LNO%e)N_c*H7^NBy5qYrT=0!s~ zaTbkAEuuyu**P$9yQ^ROh+s&ogdqEUBegG+qiht)Ca?*9&JBJBMMMj?)u?1Ln|!uJ z>D!x&H?X)92JwhT6rzY1Nu`Q9xD4F-I!kIp%4@%W0SfO(qdmB$Y3$ zlP|5YVJ^lB#Bl1p$*ecEMZ+lhb))8Fg5I>J6~fqPS7oqry~)GdBKhfZj6>UDL( zWHt|Fh(w60bESA@;{dB3L~r{cGJyGfhPs!teP2}+r<69FM58-MuZ1ZfY6e!!X{#&p)E=q)?&G&qR}py(nEfi;wDV4E21)(f9DXU0&D5CE1DLMh(u$ zo#GtfYd(#C^0{qk$q&Wcxn5{mR(1{EYbqn`xeHzXXlHOl*5jje6#ATu@CGf>J|#`Y zOG3M2YNpmfNMt`9Y4t=gi*tM$Lcz4fMvut6os^+SnHBnT`cB| zx-ribeoIlzHz-@^!2_sb|c&4juV@UTH-x-keR@uCUd$(SwD zS*3BD@jUD?CxXH!9pZtXo9`4M$n@@hy@G|OS!>Ybm8PC-vtiv+*qnv+!zm(mHm_yNzFA8A z6%TLW3E_v5Ht31$fUE|=th|7Of}U*DJHBJP9=!m7jzlFbyO6{&#t2{U#ee)TI}f|1 z_B{T+H*>B$YGi(3ba|dic9qW2mx_w!d%JLzwa}F}9cZMj%C0#@3B8@W+@?IguJ?-w ze`W6o+-i`qi3x}dSDV3u1kG1=Do6U`LKF|K-D)O57RaYGZq1=P{dqp$y2l@4uY&je z!Kcr}Ht^`?W$v}2v_+Putszj|jE;)f*w}}e`b{`1Z@zuoLvrD5>FcL}zU;dUB}x|t zMTvS5qcmQIHXu#%I){)=8S1lz0gOLgSY(6OX-I+PEH=Y)$fraadTLdZqMzD4zLu6+ z@m(i){t0(=#D}z}Z)`l;TLEjiVj^AiXA|5D3{IOXLUJqFTFyt7Hrt0P=dbsWZZD%U zzEPEuWc*1tH*AE0ED+N*wiY#|W6N7NJn(hS%hM(!3}(~aTX38{U}N_1__}kw4Qd~s z_#^S{c6ySFK|0}D2-G6;P@V{*b@2Am;}0i6pSQH6j*3X7NwB-BhDY2)kFPd67Q{-6 zCQx5<2@Iabubt(f-o{)S5ubFWRQjFrvubwWI=-Ekl=)ywEzjW3jjHQ`U7OitT2eeP zy+v3nafdT6PHSdkd0Kn+i$@#_NpEJDv_XQ;+*Qq)h$L2(%+008YWCvU*3Q+hnYlIc z!Z{n+W-EUZA(zdxdBux(|MPZ(0IsLO#foU~Y*r63-vat%CbHQMl6=?Y)9GYo((Ea9 z!^40}{=(OXEVVhSXST~3A4@mE-z^{Fcyn-nNG<%B@Y?LknQU|UEO6>Eo}eFOf%V$H z?)v5_khmu7($G%}bA|m6z_BCs%NuB&fjl?(TMFpkKfO@_g3MmNI|CI%2_&a~wwg8#AYuosHVCd|g}KXQit??eAFrvLX%{{b4tIQai| zdjFtqY^1j%9tVxj6cskLN$BY46utQ3=<51-(*NVM2RL}Sxw*#uqjH^B>uZ8*Tid6U zTlw;=BnkZhP{ER(_lV%QxF%mQlYqdDL&hZufn{8QrjMWE`0MgtJnsMN<2I1!p|AS& z>la+;2mfwpSm;R4BMvs8ErH-9bQPp~>m0{APzASE$h>qIPj#k%$+thU!w2J)mUcsNcL`x|U zy9nAo{?*L--=&7nq5cgB5(*gC*E$geA8l-GsKMZw(6BTHP@I3m0Kj`>M7Fk0Y}Xm2 z==H-w!=mfbIo_@A-$qv%@E&JDr4{`Lnjta#N{yt|%oE?1fO0~h?|Wfke;%FACys^z zO?F+q#~1p-k7kU$Pb5td-QCQI%*kQ&Ow3)PoqtgT`LFNBksWeMPu{Y;rYXbZ_mA2X z`T$5a&ZDwsxuN28%CUDr=d{FHt)xS;uS zgzgU>aZB~#9t9FGwHa7`-*a1C=SKbDT3ql%~8Ki!HF zxYZqceES16mJZPuIfvCmFfn>U0!DGrAFwmvrmejHYETroHp=;8MxxD?UMevuk&2pn z07f&iMf@KgcpYG*?so9&Z83V_>JShR76C@(^$oG3!`rk}zM}1>@*|EBO`8h;1snfg zwD$O(&p_YWaC1oRGdd7oScidi4wHf}Qki2pLYg=rgE_Iv-qC-WRB^PxJqH_(nl%M& z^LM{q6FNUFxm{fS#2|HWcrmb^o|~gm7$4s{Jk0Nx+cGvWdtqyB?^6m23Id!o1`sd8 z&r9mx<^gkRnsN$u)zZ3Ib?|UVXdj57V39uEZao_0<^mpHl;3y}?Dvj+5Q~b72PSr* z3DB|06Eb^^DH&AtnP_)k{A_kdu-m-fXaXod21?23c!07fLy}10=GMe}M8(3Q1dvGP zj*l~3pCm&56l-doc)z7!te{^|k?m%nKY8ppK*hZcYHRBSAM4B8UftfJ6HI z)6Z-GPwh)iu*R^W65c{bGTEP;St2RTC_nGypW1rLwT3M5iJJCLQbOu?HS1 zEUb$~w3f7dVbHCxuz+}fTk6j()j$SdJtHz7_v7f?oUO9Fz9DA4__DsfP99vQ{OY2h ztIMEMjqE}L!n`jS9_)6c29JQ8=$|KSrGZ|eJ&;~isGaD`q#GF-DPQF{#6+=)ZbV}V zjLz_vXrzm4^?k|=QDs@3-Xjtx8FcLQV5#g~L zhqOF!SR^y|k7Va|sIR&=PN{m=u?A?w-Z^jf!3+-%Ck!XijshBd)ExY3f&HRa*;2cn zH%|1-OsR=msy?D>N(l#D(=#m}-pP=DWX7DOjr0_?v}$O>E@Mq9mRBs7HqCbRo8cr8XJtvdKs!6l)`%vnK7yp>mlf?`07nAOpvhgeld=g2Xfib~p6 zuPT>o{tGr7?u%{S%nC&S!xA*iYZ;p;ULn`H`32ePNCp$hnAEvBH6Hh?bfDmn(Ettk zHJ)5-?i*NMb#5GN`W@}T3sA4)=nE)x>G3t}kqG1gKuJt(ZJKYyxg$EtN0|;e%K%nDE`^!hVmvt{4umCyO{^>nT{;ACR^^8*Rmjb^zC?iCmN7l=~>?TjbE)1%Cg< zQ3gNLm^p)Z*GGM}GBg(QI1b6icitTvNrSq7 zZcx9O#QC;>ck!qg{aVCRhoMt%4@n+eCHggTB}V>Yjwtl~$0kY^cdiQ-3w3>UE3 z@}6D2@3H&ga!c*i+4}m3r7{Dw$k)k1CFg72g__-w9?x-Ed~WGWmH3222W^mrnxzQd z4-+|(*+fc^zN*t#^2Vwr=Z}jnd(vvI$*IT^G7@GX03~sxBqqyrKQ;&K{6!j{-Fr-k z2vkWVI=TT3dP|Va^im2^DU@3LT-hQ?mU^<F}MY!{bM)-_v~tA{`r#%4mqIUzgujW%1iK-WEbGhl5Ah!|)bc zA{Jg9l0F9%r9bSw1(bj@++=Os6pziZU11?SYd#MImpim0?zIioIKS&q5u zjeLO4abT3e^`VRZ>1wuKWYnIsW|^*E3WcjhHaimb!pUh5+)L=Nv#M-FqZDhSF$_P> zkWmUbjHx7GMDeADxP$2yW|0L@#!WGz43kkaO%DAcdC0e1wKGV>Sn+*>-^-gMcx#Qm zaqin3JZx~P+wuIOz-IuoMR6p3p}W1KQ4J&o)6D~;|>4-u-@bt#pTk_ z9-!!RcIQ*F3Q6_UPW<4zY{2{p^+&`ZTnmWB48Wu{0b{ch9vmE+-e3|P2|7RvE^I9m zm*s$S2gtnj4!;GpTP^dMKHT8nxnC39xsSJi{T@AE$Xsn)_XAgNt;A26ys>aBo1;*Y z7l?RWhei@oLAo>m5lMPtfQX(RR7a-kQlHl!$18Y#b|APEvww4dxw;R?H?Ag&)F{fZNYNS){-hhN>;@t>5JKQdDWaOpivT>06B=DGJ!|V}3R#t~PB^)ZSUr;{1 zCs^SFfNwZM{T2(nDCjpxM^AX<(JivkB? z)T~K2HP5ODzSB3*aHdW$7gJF2<)CG!cQ#twr<&jcpF_jMec9I|3|Vh@i9RpT!C z3T_Gkc|VM4jRR>P)Ya7>~w*BoY`oa)nYUP{*rHL&k{c_cb_Y8+NgPXUbO`^ zn;$YUMX`jmm@~809jMvl#ByO%7p1@%g443~$Ia=o>EYWWORwi=Vi2GLoUI=*g~1C5 zR6vJV-sZ&%4`K$k7cKX{?SS<<#^bdui@`Z&o@0Uuftjx^SIuEjKkDpVIXXVF^K-j) z0|UqoH>hG6LqmV)gAI{Cg5IeIAaHf+eRIm35938)>AD9obd*9gED$1_2!P|Dq zA5ds^t$90P*_JhBj1MB@(zQ}+M-W6yVEy53Igsq~!*e|6GAIe=l92_J1kk}V3}KwC zm#(aE)}orH`2Wn2d6WL@1W*EOD0#GwybjasbKAZ84FZ08oA9fHd)_UWTAa zyD*2yVE$@{yBxsI3;iz1Td&{99#`6|_toiVQ7WvJCW%iOuu2`xm4j_=nA);kw3+qW zi|lf?O*is9$5}2~9usxAb*!zc=PZ`z?ZD(F1@alZ63en&a6drD=?I(z;T?|CkX~EE zv_)O{A_N3SyIHke3CPD>(txh>SQeL3UlWvSuseJO2YHEVvt=Hr&m#<#)c&;SgW6%d zJN8nOZ`#Rv$2u=Ve$sR}I%Q+SjP$6#)um-aVg)!SjhNRWcs11K@Y{=!`bf$shLCc9 zfE!uXfaawIYfD81!(!DI0G05eqNMES<-a~$9t2wv(Qf@iOuZ)lvH;YW0}DWl{c0k> z|IXlXDPhuS9O6a0`*o-F>c{ib>n{!C{q?dym?8tvi=FxTbYp?=%~ScUKFHBh_{5P{ z!~MsKRUo8nVqj1ZwVQl}+wEejQ(?%0Vmh}-iTuYc%a23^Gz#Mi0Gxq21LT-k6sK8d z78oIf=8r-u$fWK4c@T#s)okf{$m{*xU7Ai`qlTo7N8Vhc+KZL)hOR4gV5RwbuI~#6 z5nn*(LvH4MAy{Wam?zgwPces^+6>!FRa>8awnRP&h_NztVMRwnE^&A3L+`hQ!-{rx zOaTI3G9WvFxF_i394ep7D--XFNdU0_#15yt-5^DN;R_jc7BNDNhE8iN{J&4Dxk|nw zpmy+6dTV>DxVTy(Q#Y%)?9&kJNFXfAobY0A1XxRIO#y`5?kDE#;Mn(o~Dji9+C71}i?%tjqui=)Trv?|$m9Uu*J41{u4+#3r897TN z!X7`UhCTu%?{#1Hvy#~NE~PsLqbUc{r=dlK>c3|TewSCykEJYmpGp_uGuPG4)P4{O z;DaGfC4;+z`K3*dv&7H0zfiH+Mm;b5sDK zFHbo4Y87#6bS7V86ZS&Qt*k9)rgYufEeZEiaj^a8Ho=rGp<}sRgXkrdW};#0 zJ;NFSQ2RXx>)qW=*)0|-D0eg_`Rc2zEu6`DcD@Tuamo3CRv3L1FD%lfu%6-E4Z@iOJ z!7*JqmX~NGM7fE7WYO~mUsC87)W4pQUDKvsa9}xZWJSTyVV0bc&Ghq|$AuG^#Arer z@@&0dmZfwWVVrGjqM9s19}0Cw!>p~XmuS(-n31{P7#o|I`tu5QHnO8ay63D0R%Io) zb2#S?zQwfttY!-z1=moO^t@z^Zw%l5D^G43W?ZnXs8FJIv0^>6fR2%)ph4=3u*u@7}T2zhv{pf5y4@G_6i@iA!FU-9k{EqL? z-0Uk{Uf*$i`}Rh)5XvRggQiDFSfcDzz$~psSX^y$z|BQseLa|XciyQC;4WWy3#65< zVeXOE+_5>X_CU){+a5Dd-1MkZgm9~?%>cc*d|ub^Xgt9J0h?lC znXnq(iL*kzL6y?&N5!zooX*L$pfsK_7UH$McSkgBXXC80foZlBWh`P;MI2^V+H?z6}2cYo$~t`Pop(!=ji zu!Ki!`XM3~hMa;<$%n3^7msXDzponW21clxT0|R_5z&wZYQtpj-M2$y>P;R{WIo2P zt?j-R+W&Lg6^2C30=|?mgvp112-t9q#JqYTsVZ@?05y2zrg|BajMLlLFNwmQ zUslj5$}q|RS~df0wCfFfA+_sGBh1R7p<(!YWY0l=jvtld2OxA=A+5FddJ~fBVw1vi5TzZ71z{cOUV1eb{bvL1QXp;U9**;M|-)4E3!+iow1&z~fl-`r$2 zt?A|_aFAFGC(CG$QNj5`hfD8d^X>;vv{klu%q%~sX*Nuk!L}2qD+qJH=GIqlsrVt_ zvF>x6+c5cjQyP&P7RvgIaY}sjiOsBpavm_@8o@4#A;A~Pw8q=HuSW&xbt>b4^qKCw zyb?ct{O~*F(Blmx0Yr?yq%dV3`V^ccG{=Ac1UzjxrZL1>gPJOoF+njg3Nv$4beo%- z82I?~!{;nA5^wO5Q<@&vE!r8kEUM4v@1^26QGnQIh1ehB(Y5_%;y;Ju`>8dP z7MaXT{Js7EzMV^mKaI{F!r`lCOzVOWg$wif3k=4%*PoqP{MSyz*1A2q`QFe@t)3le z{&PR`(BZHlGcDn<>rw00+Q@WB3cT(s|I?*YaPmRG?Mfi_j`gY{Qfo1NKimD&!@qQH zj08fVag3xR-nRiT&%JMdpyFiKz`(%#Vkqu7xlOQ+2~NI>{7<8I4o5C*fv6UH=;Px} zEy!lDmBd=|Avp7(mfk!`f=TjHzyY71?v^R1zURah@ zje(0x3yX;oDMEG?z`n2Z?MLIm?M)Gm z^AN6o;{FhPP6Gyu78}jCxzgmo-R?#Yedr&097N^SzO@UWw^Znleeo zsjQH+RCNEOtzHxPPg91!01gjX(#Wl2l|j#v!gPq21bme)UdWFx9(6|bv(BWDOz-Q- z7M@eM3D!3V?ZjCg^xNHsR=>Ib{oVbgi-z`SpR|~aIkQ6Is*v#ObvB3ls(Ry8_BLpv zEH4Ip+BO!qoWn;CFb;rbe#Q|FNx&W8oglz=8owj3o3p8ccrm&qbr#dzJU5 z=%9Cl83irn|8bJ_V7`1bx#?on9%}#TGbRX7rp${-Ri><3sQteU{f80w|LYjZ!1>I% z#Ch_s@jk0|j?(%%;wT|M#@+|L4iZsk#(T#R_2#Jde{Bu_o}%V)J(|8NwYk1c&9&a; z?*tx>R+Rv^{{qVOyA;;xAE z{kN%(v`Z6m#;#_0-|Ws_8M|!DvmLV}A;Ql6cTGbNW4BA|IPa@3V$$E&KKXK{kJ7YQ zZQcD!idfhtRI?*+_`Y+a;72mnd^i7QIyQoK&7*T6`u0x0lms_lCEq^HV|4q2uid49 z^Tp1765+Pb51&pOiMV}4g+_T^d*9E#Gt0A#-`;$yKtVq;kSJful##H3g>WN@56(^5GL1NNCbaQAC_o*=+Ax`0EP5EXL zw(k#LSZ7$koK#z%;Qg=c=ZVOT>mq3>G^i*H^yZ=G#4m!k-L$YIJ4)g?lvXT1x@fJ$ zDqe8&if8+lK~dC*Fi8GdrwN=KOmeyALZ5j*ple&0rOICgv=pp@K8aZ%zJ!4)bO$tJ2AlYn6YC-$b$EuWZg zF^7V4j-*4bUHL(370kMavFv#r14qe3Qx}R)O*2O2R3?)ksn)n^ER0NCzKOSaxQG7W zFJcQN*-Kw;5Vs^Dd1ATh3Dr-5gb^TS7XdzZ#j>e-{jEAzw<^Cq(rF&40HT#CnwW&G zY1`|}llY4dH!>{(GtA~;s{eL||18HinY~(sL=567Tdt)T+(*j-n2ki9{g~qXW|1T7 zqn(3`Lg%B=w==7Y)qWdNl9FFyNj=xcX{WZ)f#?Pu&?&_wEgedE$)5et?nzWWRD!y6PK2`ii_*Ce>A$uKJ?_dqAZ&t zomxa7qNdH!RTfdxN=tfIj4?8&_EC>g+4MrnFw&=rV_wa8fw^4tWRPS{OwsC%3-hoE9(IE*-&%*S)ni{RoY`g-NDc?q%*un0=N zFBwnZqF|$Z%u@$HYKuLneMDgY`O8JqK^kux5P8jh_^-+53pb#FZRqB^A z)?w(%M0~Tl4rynqAz7j=LlUzl?Z>*H)=wTjMIGOYjvR4QuRTp)brMu6 z5uyc&5k<{TWm=-yU?}#>r%~lgQWH{vhyB^gJU#^7r^VRzexyO;Ehb@0+f3&))TT_` zR7*~k(H#W}I24Ic$$J5qdX{K|#vBZUwJzs)kv9rU@5??~7r?+R%+JXxxW(uJE?@S5 z+ct6xGEh;j7{cxtufh9J|J(q|hA@l?k5=ZY7>kyFDN0hyr42=6I6bhJ@eW-xrJ-Zls)~)fXt$ zdd0ydXXDkTw!)mETU*x7FDGdolSl_-O!p>FRmMlnbn{vgm%(jZ`eZf>qEaWCe zT0C9EaJj0o78$_iiT5JY1LH8q!=W+v(n;#Jq`y8h4DAvv`YewWl!Lb@N)HaCzegW| zCu4Jr4Yb^(!yG^==tBaB1j|7$8OHRF`38DoTn;3)3+p-YY(>J9=fmNiX_D;K8dVVo z%O-h-$_}tQ>aLjNY&rY?auPM$7VXe8DdXPT9)C+|+l(HG&L$Dg#zgW)21zBvINAWN z-i*YWSql za<9mK+u|G3h(bSNz{CPcMhskHRm#ldS<^#rswP51(kxNomjNxPgnA<>zsE1?K%tVW zmI}?ctV6{gfKUy0!wU1pqDrU@4%y5sZjG$KnH$236aU&qO}{`UbBTnJw59S!OAHYG z(v`pd{)`>Zs3~B4A`TRA-J<-D-+o)*UZ)HvGa8`Yf;ilgeXS*@oJKg1f*K-666+Ly zere}iLjtT)13m=aI|m7c&L=}`JU%y7dhM<<=!`B-ujZ??DG51k<8zcwlLaPE0{Ahx z+S|T=S_}Q#LWCLc>Y>AgjNwF#(@5)agRD=QwVuLgt8!C0T)9^?&oAJ9#=j$F39+!)PY(Po*+2|{-@R>ll3IAdF(#{u0 z3?(G8D7+)J>Ta$EEpa}4bR#PJbLp9Ymq3I zoUm`!R7@*VOC3)|*yiVhkprKEYzL9^XJ7d)+vZ{1GAP9^_DhVYexjImFi3UYOxw&$ zC%sA-`StA2Pf{6F+EPs_OAHD#@B1kgTF`!Qk(6_8 zgChOGWV)<1UaD_=he0)JG{<7GQsE=iiX7F9KhTCxHRDd=)9Huz>TI}s z3-dbYH{SDs&{)m!*?%31dbUG)4)EY`=tQL(xh2_J2L$9pU__9OC9lhC+T=s(4bOh`G#EM)Fs7M$+h5)brAnI{UWqR#kLq^@#h$Cr56@=2pT7$~GP? zTEbmaI(=05Z>U!&oX7%<@g_Ld1o@UY58P$BmcGFhE22v08XFHKQi^7k<8Roh?kpY_OC@4)~W4&VQQ$t5U^cj@sM&@@KWQEoO0&T z5_`0v!+lg|+mQS^o+x7lu3RDmGh{RBlTtxQjg;bW*64aP0oe8=;>t*(5ypuUiO&3q z$@>XA{Mm_~*>-dZ7X-;nWnU}H7N*N|Y)e6(N>;BAkvc~PwCj-~Q&W_it9rJrKY<#8 z&T7;rccW-C0r!S#&0MAzThd*?GB<1m!MhR-=Up@TyT{5iCqQBO=T|}pX%(4-pLQ9F zUHE+^hw3)aU7XP0Gq#&HJ`0N4IpBP^_da{~i_eep?E;fS`}-Ke6wNwbt5irXf0_lXG)P@Li%K z!l0V*s#xe{La<;yajr;Spqln9D&3Agf4G-wQ&*uLXYC?}FcM{^h9c*>tY)i6GjEYI zDWF0%2wPNM6&G#ln~6AWiH?!wQR8h%Xf3d{l&(01V|V76+hC{X)o{j4G(BD`HCw;+ z)0_dk?L`;25h45l(LI{uOdYe9 zP~w<&zKSaB^9E!)+uk2K4~c~WvcFF3vRH&;ouOf2Dd_kO1l0x&I-K@PbbKCc!Imt^ zK197h5b+CJ>Xpz$G0Ql@_mejpVkWB%z$a7}E_Q`Qn?(&CpwmGpj399wQ^WV;9>$ z2R12ZqM5|Rlvj#`&Dhros0S(}<#6tyt&|(T^ea)NGGsbQL?Pd9LX_E+nOlWfm!jBJ zG$YG|*lATvP2LDUVIUiu@BZ9n;Q#P^q@IZHZxOYSRID!VW+B0#)N_tAdx?aLz^!4D zc^Ur|A6>c)>=5E9>mI@0#!WT}th7-b`{~>riV19K%pL^{H7F3_!%G;?aSitkjCR! z#Gfn>1+;(kB<*S?DG1gQrt+Pe9ufr@ali+YB{w>nk|S^pH)l&PCXrIN)$RH7>%Pxr zx=ur@bH~RI-Eaf*Mt_AV_ca>g$Er~ji^Hla^>8uF1qmwQY=^-K-9yJ%BSBie)r6=Y zc;d$b)n;_&g6>ZIm7b;w@9raLbe<1C0vZ>9dO3Gyi!@_Vq`U`i$8URoyVliA8zce~>8gDY2_smmk9Tc!-HXLo*Kme%3(b?Q&4rOOi% zFYDX4(zAG#<}0F2i?6HGEKuI+FNK{jq<*fhR%mZG912T!C)`;`R&IbA&ETgruAyWb z#lgm=hKGkw4AvIFsE~>HQGkU~sFDIc_Xdvo&}Bw-!JjTG4B4MRT>;q}^Gl?Odi^aIkx3zJ_*)U=L$? zc|GKz>QBllxTX!Pn;^N{@8NU($u};+#HVK`i74{X+(tDz$r;qTK%MjrpT|%I?z?zy z?`Hl_3tYoV#U!~*O;@G?n|5@vk^zpv$HUs7!gITe;AzZV5g3Mz4u0*CjbV&3?ZKet zP2crsR$3Q|CERY3To7S?p!cUX)(4dZU^?L}#>K{POim=3nU5#A4aHxnnbz0_Ta40p zHjDQ)n9=xpuhRwOGA(=+(2ng(Di+d08cn`A8w*c9<O9XOgjW7c%!Viv{VkzgRc^cKA0!g zP1&h$Xm~r3BR~t#{rVM9Ri#&o)_$FG?Zo}QiW6xZJ1O~@S8{WUN(T;u8gL)OV&#bZ z7LE^riB!9VUOO_vB(2?wUjD8mL+=`O>3rc_@B^#VVNo2R8;{;`Wd)iPUoq=VI`OLt z)O7o-L23{P*=o}Go9$R~+;LjIBtYuZ(Ie9hBa1SBo!AZk^z^jlpHCElo6E-#N?hVi zMQbEN!)(cQmrG&ggaP&ulh=#>GB7|tLyfY4Tiaw<+KY6ZKYhIL@04f2AST3ab)ZiM zGS#RsX(y|rgRu~M9|8;ZuQWPpIW+fish#N9Xoe7XPgCyuw@#5mY+GGi#2IXXGEwC6 z2H8UH^07eHTy0LRKdD$M(J@XRiRN35O zmtdP9xBsUC5j1%f047awoJaKGKE*dNXl`=)ASo+P@>)0Boh=$Us`w&1oguC_tr(|4 z^xPC)V`yqF27GIeAsW6{oie>u`URO?2R`VF|6c7gLNW#HK3ZRTY((iXyA$f0iHW3v z_4X$w_APF_LSaQ}do;0`%dG(PYO>v*u9W&&+-7Ld3r2L>g3aG#cxGgQ$v2>6^2nr0 zEr!10{Kb<_KOWs%M>Slgiik6gLyuGTlsXuR+}chfm&s4peJlB_M?i^ekFJk&DUB0>_BO_|Rps0)XSn=}m zXQH|I_;fXxbjd302GQ1wN_3~F5u zK{T7*l1NO-qRimQm~}@Wk>V$b;uJC#N3_Rh&?|dF!Lq2fn^~G?5bzbiz(m}l;zW`B z7LoXBiwaC+1xl!&4p0j&JeX5C1jDH&?UTS080cnyV`O0HYfE7?IvBg?oc%wguzX43 z5TxF+Zws`MUxYJ~WI3vlhmv+hkarc5Zk>KrID#hw&vU=*P!(s_k)4>f!-onM+1XcC zB~Qj19X!PerJ}?$pLo^8Mx`yVK{O-WF24_+8&ewwH)RN#jrP_k-l3fyNyu7Kmh3N7 z>(SSCH!I;(YlEyV<>KA&O+&i_(TMt$JA&2U(|omgFp>?LHl>SVAynyQz}LNxY)y(Z z5{*Kybt0gETl7JqJl#6=R1OjLz?nTVqA;u%^HL2zJ_u0tuCy}_$&svx1S0A?n#tTr)*ykt^(WCx`hDdQ zD}2LW>OzTsl0v(8Y$&@2MK7q}-eJm~?NQllL-m;UR$Aj)^LTV2{GH^FVMe#caZ9bD z8h&fEO={`zx5n5WIzuO0$p+OEpy;MHMxk-q1qNKuY`vQPIl|N_@#scN-!qdx=6>-9 z|6bZ}js-PW5?%Ysi_I+`N0l2dr3pa(551kqInRg8cDa2{0j4B5iB`P>ShZ9i_lc!i zhgQ5wv@#7c_iV&pGJMWoQMM_+y1e~6^VRV?C-G-W4W~@zc3(iY8f+NV*?Vj_8Mz8V z$5tXOv@8AocT@TKo%IP>ldz+4_U^$R%=7+@jw&d&*RawNIPJ3ChnCT4+QBX%!r^#( z92R#n9V{folbG)k|yRz6KoaubhEzf?Z&D}E%tHBG^GOr4)u zysl!y z4AOFx{qM1xZHNd>1zaQi?L{S%wCW6d4H$VQ_RY;Dj;TU^Dtp(zNptcoCVLky_^GIK z#_cIJ+1FE1^}7h;;Diw_%D>-Z9QCYXU}Gcz)I1hjewgPA1?-qSa{V@}PI~LNHjRBo z+%_T$)kx=T6L3sUF=!m>`MkevO z*36UoM*t&X@Ef~Sa8v)Rue8XIw0K6c+879NHm_|Cx0o8{a9ba48-7Ma@uVd5NHP^* z6Gutu5Z@H`2|R%0@AKvEAHI0O>9?^EZikLabfr`)u76nm?<#ax4-%uO(%En{(LV+tQV0D+s`Kb&krueUmyKh zLL)coY*R5xG;2c)oR)(#yLLXC&EhLKrEK+G$ytK`(h`FUNK>B$N2AeS5t{i-oTxQMj z*J{_`+3~5^w+#n0o~~aVazV5t|rHvEM}b z{|@~NZX@ikxb3+MBPnpMT*_{Xb`&4D^PS1+_>5;R_Ezq(DDL_8@C${3Y|#;dh)>RI z+`iFA?u2_!VC+91MSu>=4dD^p~tUi_RO-T~vJ#o!0gL1e;BXp6@ zRq|8aiX8rTsOsL{L2LofD)I5z$NyJ&-t0!5%5{HN{xM~Q%t9`+evrwu*0dFpfl_tZ zk+aEwG|!7!M^rG_CVF3~YifJ~yEuz6+K79YOjz)o>#O{bZV>^tO}Srp8wUv}x#%`` zRw1>Y(*4`XF`wB560)W=f)$h$66gCvYq!cuEU!*Fnb07U_iU-RtL6?LP&6k;=~SAI zR?f~Wx=m6ugWVdr2CPu0+f^X3eUE>_yw4Mxz0~OX`D8bJzeE(F#tMvzQp73XtHDD- zXjy&f?|P6}Q(sc9zF`ZBEdWhc4E8W6wvBLQ`ADohrEBexmup2uG_%ns@$K~g>2Nd& z?;4J#8#Y@c@qSLX#YhksoqKPu9Gm>*NP9UR$pw$!CsRHsRil9KPl&iu3ko_{OwRrx zR|zpGgD>2(erhx0*N1Ck&_4aSwP1|w56KP6lI`y)drLFK!5_93w>^jl@6Ax&0UVkg zF@?VHB4au*#n}~iR2d87;T%cy%MYDB#Xa^w@IcA7#kACJ<%vZlO(d26X(Mj18WROp zHc%2QqQmOfFxibM9*FPON)+Zu9o=Hb=x-OSMKrX#Qu#+l!+u@x?HOQIzBO;I##LdsLc|hn-Kpo z@G)YY)559Y;I=m&o12$jii~tna-BRHmx0)!lV*RQ@@H~?56PfS=E&Jp$Tu^6Jza5O z(d5h8DFSKF!_BKdsG??VOS1TwW5!aIu7R$wej~d#77eo0^;XcAFE_Pr!}vu@c_Tq} zSW*!()DoylMxTGw1D->->@bMgA>xt@-G|GwIFX!0TE7niAQzfY-NMGfmrwl{9l>W< z@HEydW@d*(kYe-cD znZq-PnTWIs#3LR%c%v%Y7rT*3|0$?T8h0w7J+hLe3v1=)=Vy&6ogwdS9Q%-+EKvex zO+?<&%bdb5StfjSX$cf)nujdrN`~FHS=XmSZH>rUDPRSzNx?g)f~}^FzcQaOks|zeQcheJkX{uJbplznoEf{`=Yi zVm(ZHU`s8&GXM2~eMUcuawc|NS?pDe^wjENn6B)BYv2z%Y!r+4wa~vmw(TsWxfQ#I z2H`J7$XDg+89{Md|H{L&fiVJ$8F%iY_84s3cB|)PdJE8H&2QCTF>XUC>gkN$`(XeU z%;+S>ErnW=f#xb1!mg73w}*pImyyNlf`*^cvWyB`>b^?bA1;o|=#kTKU=Z|J=@=J^ zXhxj4lIIuwON0xXW;*(HM_a@jkvfI$z~nB<(MyZAjLfQglDe(pP};`4-g*+bXXH`W z9xiKy;xPa9H_-}-r|t_rE~qNV_Tj7T8edfI)O+*&Pm9t@xI`eay>6%)agk+U8Bq#* z(O%KzMCWg|94e7Q!%gOJcBE+7fK!H?e-0M5r10@$nc}Cr?GBO@c*!#Efg^EjFYirK z6C)k^hSE<9l?gW|TkI455E3+>PM=I0JtTcWS3XCEU|9VMnE^Q|;K5Z}d>dE@wb zL0J9Jr;!)(A7m0ubZL$L{+O9w0HpmgPK7Z%RWmPht$+0zGqxdXpbh>^{bx%q*?3Oo}|kh=gWPC9*SU|1xf+YjRlA zC`67m)sx?z8f7LirneWq`(yfk2vtb)VDfv?iB8oht#wq`R1H0vq?J6MW#@3@aIMuU zv0jJW|F1dDN-HHfEhUh)ymvStdFXy`Vq{zcQB}(`h0c_T0K}00nCpJj=iKaZk$*{+ z&kYiehel3W*u2t(gaM*;{QNrTYOJN~uG+Ww<#SSMSNCS%pVQ%D7*v7PaVVaW`0jF3XlxA%b{lB6IAa(d#9?L-n*3%w3x@j!2&GJz9>rAzfIIgf^Nh4uL{3T%Uw>q zJsPmeb>?Cuu_|$MU&YdT)G7Z-ovhgFYSxKHc*+Ut=vBS;?YNQKNE>T!FEdfE>b3h8 zb@Yg0Ot1znR4&%A;Xr>>#gC2&Wn8s#>#vFw2F{;pi~d3Bo4?KW2qVW`;ENEOU&BQ_ z2T0iK(#fa(Fdw^D!3Eh?k|9JLkmK-q+G7uk7XlpS;O&r%Au9F@W`xNNIYzOes zILk3QnI+F^H*rYH^eaTBp-!4^`B=PbFrG+7#574_u(wDo8%gAA=U?>9(60B5oG4AU zlh{q*pisKUG?j9r=cj|-Wj#vq^sB(92NYb;8z%lw;xq4X%vW*J)1uwG{jJ((5bR^T zSd8&W{VDyQk*T!!pphg-e!b8Q7PV9v`Roq9#%mOjBGRO%EXprQc1vaD|*{a zQrm?Ak+paeX9kT9;19AfbZYX4Q%YeYIK@7I6|~Szae=~<&F8-yT$J%` zHQ3gPX6Zzctcj#!`)-e;vo1(|P(m>^8RVV3k1>k;Q?x(M@R-Majcd$9>DWtmkHDB0 zDWf{ct&wGcT8H?4u95sGch{I^s7lmAh|tw|pU2%^wcXQ*aUskt)je^=VTq zRmrd_1fb;3QAv)rG`a#cwJXrfLqvG`h?cwY%Zc_@O*vAxrils8&Ms3?&t{Ek*BCyL zglatU@2;qiu^8y+P)5};_Dy>I(r;vqSV~N(n%(#WNLNeg9~2bSz^!s@$yx`57Zx%$ zQO(kFvaB1q+>7aSs<2pvd3R<4&{+GIodFe=UqG!Wt8DQ#9H13641ooL9FCF)yeQp~ z$e|j^M;Kp{35rq7F{TXnDh=`S_99xAB_e9Ff(OeL;motYAow1CC}AjJaW$M+Q%92` zB0wuPx8xZbAC*xQA((jJE-U+`-iI0MlyL;$q#48|>-awlqC_cfZfyerfh?4;&IG*O zi%K6coY&L6)<_YB4is%My8YNJy8c#neyt+)6 zF9lTtD1 zR`3kpY4U_R2~(o)S;#H7=opKF8I$K{aD96X=8Jx`fBxQrS+Jq7C82kYz|)jrw`~}> z3Q25Q$-TvDFPb_-)ztdoQ+T?6%%=kGdXEPqVIEvTe;nyi{{`u26Cdi7(AiLIXD5{$ zJnVHrE}N~ZqmhtAEACp1pStKp?`ko?D!73ZVIPqdi8s80W$Ks6&=KMH>Vk7vw}W|) zk1~!lG&J&IFytlvAOyq9VDnM?Zw}$Ew!U^0;V=;@*2iR~v2(|bRwMT_A4UEo#4bRo zvpl)FLRYKPu%sTURrl5;_GqL9b8;C65pMrgw3byAI5WiW{vzDvKAIlV*3MA%`<7hN zEetGyIecJy0Hdib{~)vIm_k#3BrqP89l1R4ppupv%ERB_U=RH=5+-uq?EQ3EAfCV1 zpJtNm>y&O|BW2~=eFi6th>2q7@G+4S9Ant&r{eA~=vCv-Aef(Du>0d~J)xI2M4Q6| zP@!EJqybP1_2U|gN@2j9$AUTgHB<7KpqbCGylO;_LCceU5PDtx7@vZ?B1DV}O3V+h z29&w|_lNB|Syx1+UDe?@2|8QqqCh&GJfdE-z)ssRh8aiFs0 zLRf*oL{7CIi7=*;1wZhhCsoD33YJRY6eSlW7Ei{2(lV)_FdX&4puvl%L#Hx=xG~NQ zJhsx{NfALqDn6KBCtX`v(WIoWZ?Jp5)r*dRZ_iLNqcM|wTvSqZ!6w`O*0Am9YL@pE3y6eBh);hU;^mb6I&=>Or=@s{7gc&j@z>h(N+} zwH0uFeW1uGqUX?y>5!JQbB#V$(bPQAydtYK{YS;PtIG(1-`^xOf~48n^vZ|ij1lZ} zh(gGn3%B^SWEl=i54WElJRbu2)cm#or{2H;rcf?BsWPs5z(B6Gv^)`sc3M${j+bO=Pj_fjtp_Hk=?u1aj}Q%p41C`)k+$o%_V zjzsG{bI|LwHiy5claU=Iq%N06&<1HRbvgW%%d6x0U`Z?S`d$8>O%uwl<1adkg$RRl z{|W3m&ZntP6H2xX11ipGTJTFs#gm!uCE8GkS-WsJSNR5dyg1u!v*n)?Tn-g_%-Uz9 zh*WU|ClgKQSI4e>6k2^r0z9(%-!oCf;!(tjD3}PjIq35Mz7ET!9yiO;kVK^5vA-}$ zYCAOA@*=-qk$+kgfie2b7CG8B4?vcJ3PpzoaFM|(fsy;+&``oeAbH(^jh706vA)qMWk_k>N+`e#VLkUgywfxB5w*CDKVf#<#MrbaAZP??{6J3Sv>~>CP|_A z*Fow4QHXRrC9SN^)PzPz3#{v$6+hUHs`&n|-I)e8wTaI~DBU|_p9>k!qoTAq8L?y1 zl&}5|*_XZm01T>1JEg>xh1|G(kuZ}^!J8<7V}TNzb&WUvfn&NB{Es;b{bHr@b5`|0 zkMu;8-hWDyiM-51yaw=zi<3cR5XK*3p8BC~>RVuVtBb_`@*jg80SB0r&&xHm>O)tF z!1U1Q^d2FDrGKMo90f*#=L^GHuk6?OD{sRkv}P0LR1X>vWYqXB*E)bQ+5A8=6_L2o z5J2RhQ^EX)Mri$7v%8dUSYJ`AgqRG!Nz%l!O2utAx%-TUx&ohL>_`VB>LdFTNE zjXX@q*LfG?3%0U${keyq`?+iV9V}9Zp=^RKGIblNA5tF!-s36tF)FPzXX0$kIL?!p zWw|mmZ6@}0Vew|_E*Pq47db^B>Q%k3y=JKmQ6x$PU8m;p*aX>v)3s5y$1;HJq=}EmueP5T#+QO8~##Fg`Y8wBS3&Xq$q zBZ7Kmb3>d!NI7yMYX>{u`$7atu$3+{n+>zi{?9f4um#BHAOSNj$M}Ym#d7fbdFuI; z`I)IDT9x$ijh0U(rvtg)nOYb$g}AG&BL;{I7c35OQC^^mT$JH?tXVZaY^hJ^uvue# z-1-};nV5-39jfmRf6+ZHfTu;7Q6I*^7o!qW=R^k4yhl(j$(Pvf3;OV%Fm`tRYWc0M zc$|r$soms4@+Jxblpbbm?z+ubd1^tqAHdKv;j?!7!8n?XLO@LQxW6J4|+rEB|f5RGh z`~mB4_ZCHVdcVCI=+a8r0j!q`299Xs8FvBiESl9ZQ7OadYCagD5`FrtV&88Sj!XrKS? zOpNr_`H3M5cCqVw9y*XCbRPUN8}s#IhH)tlzsL}+SD9*3eIWEnvW>7p^vFrg{yF_u_QO2`vv(@yT zC`CdzEA>;?8c=`A-}=cq-}d1QQV;dViXzSy_s9MHE{gabK>n}F>6HYi|7+`e zgEtXq2M#l@m7RHkBCwb8Tko?lt^Vr{P8~M$l_q5_m z2omqRxkhmN-dVi;Oc4CxRYaLhzk})7rhd6h8lx__dZsN1L3P4KK+@T1f9#{xkYLQ* z&!iO4M+j!&RFYLxVrVdMVnKW;$;ysCSf&0x8T2>(^O;1TM+u-wwzDnwrn`v_4g z+3|@HjV&>#5Z4dThQ;R=1Omf!|8GIGxhRozl;=uwbC_59xUA4@uAhG&u})IX&@F=W zCMBtyA4aT*=&oRGJ|m$RBv4y)ls-P}y#UXPL>ap&|D$b2et9c-tln4`h*q~mRyiek ziiQgK4KpmFz5a|5v;Je$$@t1nuM==uQf3rB9;1?BN*7QInU~`$>Z)QQ@}q!Oa=BvO z#q}Z9^+SGx&#(t5>!_gbxsWrY(Rv+ikB{l~dwy;;-;olrIz2IIz-?P28Y2}(=$L_T zq%eo5a^$dy*px{`5RqiWg_tnofK{cCbw+5dQ@jID7L~brd1~{gWXupBI=usIxc>DY7hURFF z|CXl=7jPSXmmC8vwBw&K5&YG%O%AK8Db2LYMUTwh@9i|(Zm*-?nqC#qQu3|Wa}hIP zCUn1?5_)~obtqbAhW=^E;*Pca1A5KQz{q=^Ra_!b=-#>W`!L-o+dyZ&d6{HFxez&) z9HOw52R4yO+d}0~^xoJ~U3$Qfg?7Bjy9P+35Q+R4_q;3T9M_%|QG~&n_Ac?H+=l0& z|vd3&{}K_AkREy=Q-fqRo5u>|l-#&`!c#@23igb=>etAV_W>ntT?PGt++BvrP>*_sppTwZ)S%9~ z>sM;fqBw6Y$sSBsQj9x(dbm&UkfW_wBkFtvTRWr4#Jc= zd)}t%Tn;S`rq`9mK=JH&Z$4Co?0)R*(+kz8Hg0!O|7F}(J~m^U-bieR;N?|1MgHtz z0v?+9!lK&R8vg@T8kN%}OdFD6MpIWYm5f;^v>p*7!Dqeq&TUML>8$gu!wI5F7qrDc zs79%?|C6uQ2sIARI%_!K<8hjaUm5Z}FqQ|o^>s#o;A8Q^p8MA`*sBL++4T%p$`8Y0 zd=SCWj~7d-%;(=_lV!LcC0WpT0b1q(h6YB$dD805`Bc!&c&7_IkXWeVSLPW~dgVjy zBM@u&8|v`;LlN@sQZN-X3PR__%fhB1H3a*HCM z4!4hR7%3Ae>BA=(CYCU?gc#aez9mubS9TtQ6t;$`sJ+nyts`8?m|rYC(d#S>`tn}C z+s~{#Ut12WOl>7rgoSr!)o$4m5BGH9`wtl{x#5Swmm&SJu0K9fw3s}LiE19INY#dw z7sE0xZkEfUh>ZpASd14WF5nYC=dXp^ZgnJ%9R{~Xl=C>0{Or%7&XmSL6HaMC7vq0; z7!yhk<^7?oZyNfM_2knrw3PBLE398cJOeOf0>G1-1PtWQo~G7)W#}PAnIsb-7pPPA z!H%MOygD~DjmT7N8W*$NRM9$__x~Tt=_HPbjFRvL^#zaKTzAjsI< z1GQGu1fC^T&>6MpaP#lN<-n!t^_rh7V zM%gKNk3Jb$&}#_uFofrRctJI5S7iy(oc_A@aBBRpf7i)L=INOv_A)^_TI~6Wj|+h4U1@{e z2f7NM9WlLdpeo(Tl(Quje2(?WRKHcwCHHkQa(ttneA_TLUQ*n?pY&ygI_4tD=C zuCh9(jejnHlg3zw{UVl6!4>z)Lh^T-XSm=$R#7W#&wtAYuo!z|9fVabc}`B_)>2?3 zTybU*T@Vl{v+3VbgKJNcRc+!POxFSSJATn>(6DmayvfC9&zG^n>M=FU=rTVas*aY1 zn&c&#lL`o68?yn~lEG|0wvS+&KcP^!W=&o)733>Kuxmt8QmV)ztSJngwMRKJ4i=u1 zJPPA&Gt+t8Y#w+#nz~@k!{-G@r^K0k4y*shsR<~M5|IG%q|IL~R()w1N^Q-4=todB zjh+|7YUo47Ro0o(!Ws4D^CA7cr-D%PwIJ{(c2xXKWVUU%53SP~q`h5hHen~QJsVm2 z410pEhNl8g0n^K`8XF6z?8ZD(_U9+ivr6gd=Itr%&vdRxOm z9_w($>Nf_W<_>Dh!H4H58%ZrRQN;)>g{1CoIK4V|5c2hv)}vjATBs60c|%_JeCcl> z+1alj>D+;ekq4)3L+>OC)(&#+fcojIEG|*`d)Pe_Vz8-E6(LCNug0o1`4I}M{-H^4 ze8~-Dy)rX09|_2cPmQj2iqqSi-Y^_J9d9S#Y(Y$$?Rrw(ISOV^2tY%?Ba#Q0E$A+m z)*@Vp@a}xrKk()ic`(3HkoUr#mPi|nvShF0vMRJeo%N{u!_E<6cyWIti6uP~tM^O0 z+ea4<6nC%Ez2SFa^*8Q7r);L-BkO;UJ;b>*77R$ zfSHx~R8JZ+31)?fV^&+kwE{dk#*ss5q`_}jlZ(koDg`dh4$=-^VuxzI*0v9l^k~ymvs}9xY@DtjjWLWkk=*%w zIePim(VwEsj#o<;9;NVm-rG^sqtmK4IEP`~ zn^hR|v^F(kL3&8M$NHF-WfAA3V7ackz01(ik(e)tbx0NyHE8*vPYMY0JA-PpYsWDR zy?uOm0&3eDMw%eb-}i|=I}MJd(LJA?D(VL?v+~kVwRm7{cN#>o(7#Y|Pg>nMaS<1H zYoVhPDFTqLc&z_NAFsnMK+3$$>bK9dGwv)Y@GAaCC_UZ0qWba-4-v%pSPb|}EnA-W zX+sbO%P&Fxv7g3Ri-?A{5sQXF=_Bs}s_9YjBxd=eTzuFIL=*Rn76bI<7PeDL$`d(e znMWtUr?_EzLa*=kE6tHy71v{(&jQwhLggARSB6FCA!J3R^YuyMaTfQ#XvV#gh zzNo(zgVA};BH7mrWT!OAFw2O6XFZoI&TwOM-v_H9rDr2r{FU5YJ9}H`QAI_0x#dR1 zQ}SiBbu&yEyHu;+%xv+*GUhqoKLRs{AD}gjx-E%xJnuNuv7`L}JLDW}hR7-LS#QQm z#shJ;rSe(DSdFQ?NrpJWPPq&S?ta(SYTW)?XA}N%sQdcycMHP|f zW^aHe&z6bw#KwnUEl;eHd1TPH+|%AJl2`l5C9i2*!m$(mZ+Y3zK*ch(gijdzpW;%7 zKO7zWca7p2BHAB@V@m4rAg6FELkKVM(r`;fh(_-PLSzDoJ%(tSesZ z{z{oPyl&~8j=R=e3r_2we_|A|$-4h#k%pIutVnSx#8 zH!}WgsFWqtiuD3d>UylCQe}E#%Qbz}3=BqNX52>v5BTQc=D^N}bh}`0AeCIy^Q_M(@GUSI= zire&)txINzOYyj$F6CJxB-ifoB!kj8%ix?Teclr%v!`ph=N(}yR!0!$u!69J^aRh1 z8+|h963l6{EENsbaX&)!_0-FHw9~!Pk-LD$Dj@q z;lG3WLZZlt@!UzKC3|*&J+Ux=G|&1g7?VeXW)Kfa1ABQNj_^5UjQKzJi92Hxrff$Og&86}Budb2;AZ`8PkpGs#D zY@2EmQ5A@I>*LnC!b{_8f%>AU`PkRw64BR~i!X{uP$F@FM&-0|j9_Q1^6b_}A({I2 z^KA@8BS{>husq0vWbev$qPcE6DcGqQO7SZ&g1pxrT~y*fT5mD7j~DLlU>dM}(4Kp% z-H0I?;_B)OWh$$)nJAA@VThN<<+6;-h)7@XJi-q--)wRwC8fDf)(f9dSZ@~@o*Yd} zd|0oP;uw>35{4=1ZYX9@KAz%yn}dHphB)f=t*A1;*#f%d*^li`;<=CCxBKZ6Mau3N zTPJVdNbeEVad1Zy`Fg;9h||2fnIglXyyfo1DAHD9Wvw`OOe`W`+{N=>JmpH1y$Tv_ z^HK{&;d%2zd+3VLDq&#J3?B($`Ixq5(Lw>Fi|emoRRzl_$|Ob@#>Jhf3m~u;Qi46U zz&*}iB?yc|kDpf{`M<##IvkK+p^?jiNy=!s$;w@!+%Z^;Wh-R7E0@QwM2G6-K)#;q zX?^ZAzT@Sy?1#@t?Ko=LFvsLn4kh@FnVLYGVtZ##E1u@+V*rj;G@NhVaxz|s<(;|9 z0me0vSeUqy=%e^c^CD-axJkCJT?u=*iUgkI-cJbViLLmRiTjIoL>aNAZ2w0`4{Rp9 zWgBz_?p)0=A;(A$Vo}gUJ>#|_kT7ofBt_s$7Pa@!|IoLyuF4`tB>htTSdZ&@pJ?ynsfyxnTGA@8Qv>4?<{3=Q_)%$%4%1(=jZ^-Qu%%I*(UsE5|h zC9+`THlle4%;o*sVAT4}@sMvOkG%j6JawW+3ndwW@DaV%rneI>XAv+?5)BMJOGgtj zrXLEQG+n=sc3Y$mJ|Ie1sYq`|iuq29rMI;gCgfNqhrSrWu;vM4$T!S zDh=nNSsY3-_&dv8+y?hffJ;^1j!*zLj+p)TXIBa|{hvkJAHHj8HTt#Vii+PrrB@|P zVhPL#@lzv0oh%m>jdq;dp$r{+Sq7)~UT9^xS zgx&uJ;EXs3V(KxE!_G;-MZMh~P_NDIC#GcBaD2Kega;<_pv_Equwc>NgvgB&$7`?? zAS(L)HWcw!|7FxtjGE{<)YS`}#B93sQ=Noye8UEvb+@ z^wuyiVT&D)J&)I`kf&(~V)chDQzrweA+DQ;gvq_NP}dPIcVxza#E>p^~O$%sm9O=(W5?q{5>j}w_Zdw72SLA^$5 z9#@O`nf=cr%I9Dg^dEV!&M|pKmnifEvn5Ti^OkQUG5)7N5R?YGtjQXBIV~3AxHmgo zzOv!6D0{Od@;cIKiS*_(@Y=QJxjfxEN4S!hB&7ha;q+>FA5rhXVNMU}`Fl$^O=*l| zgH?BjBo%}AY#S7hTZkH@+q_c(*;J*C`UzgqV9At#^V$GgSPiN`OMJRn=08AR*PzTG z>t$j{K?alaPG}QFCgxQ-Zv$^lbwE5j5SaY^lyYP6y5N5km7s6$&ORxJaYaC^Z$H^y zs?uiFPE}1}A%?>Yo^OGO{ttDV9|DqDS&+xgv@M{T<#3)$> zuyGCFlCQJ?nN-o~3lcIy*)psNg+O-HM-ntm3u5fy@pGF5^%Xb-I%Dtak;;!Ye0H!{ z2l_17Mdrt5L&;%z+GeFvJ>}mbE|4YNka1t(m8Gl`0~^7_ARhmMn4hny&G=UdsmMtJ zvl;NhUj1AvXo-6k&W$wqlSAhoPsK=kTkG!v!{Fl5HMApHuLR7t)oH2Y$!4i`9VScb zTekeoD^i-a<~0sN^huN20Bl{HYqkmgj-bRdS9LESZlkr^P_gdo< zmhRqS`GWGWIiV)?qQc!{Fq1Xu~=4cRzH+oKY*!c(xi%RTvJ!*P2JU zkn>DllFMyv&ewqOB8I2@E#gF%vMoK$C5a*G0AQ372Hr(4rxb{Qt`u$-cv9WJ1-n(7@WGgr1`f& zvzrxut}3HnJ&K1n;C_^0;zYzX>NuRh)8MrfV^9X|k6NBOiFiUqW54VbUmz1~$0?s< zg8Eh`Nqre#7xkX6Ou-v0FDlb3OOa2WQnFgT{jB)VUEO3^Dy6$b_DO;iTgq9V+@KI) zT?{J99TO?r%tuH4jtM$XD7n|2nUE4#zsP;ZsGl6kF~n@GWp2%yt$8huCdK%%|62|Q zFJ)g5dO6S?`Rm!ApBh2DNklcRQ7=25@*0uF-F+GN3GedF!v>=UeX-6Bk>iNJ{Mmky zKwlL^PE6Rvilnh#Rt(2;5VD?6XN)>{+3n$yEO#sQQB+dV1Of(puPCj|Y!^@$2C*Gf zK7-Efb#n4DS@=cgv#35^qTjgw@0dlzgIix*JFHmRym%iGiO57?+8HGsO>}o_>e=A& zThG3nQ;sP1(i%)G2lPA>7@#uSAV6Opg`m(NO=}?cJJL(~Y)?03;}ji|<8m0_j)>!I zwFI&lz@VavU<4O(;9(Z3=&zs>s`-*DuHj}p-&`A9>Kr{?+O4j@7mrS)3>VCAW;J|9 z_?kCp3AezQp|jlH5KQqrmYPEw2Jla#YOt)*E$u1~bVR^Y1|&-PN%2cs3% zg88?p{~;X_k+%fnz35p$!$=A6TC*>MJbGpZ=Gk9a;j@}8Nn^S$60`*^9h0*x(O zu<&FV3DRZJg|W#N*;==|GJ%%drF@gK4M}KOl(a$QzbK0Sm8*MYISs9H{h%TzWhCxX zG%N;RrnWKAys~dipQl`}U_XXipdzHeG2}dw8iSsuOI>^_r{Cm)YxxL1b>mJw;LDeo zAWR3{4!^9BB*%(9EAmZmhudCsA8R&FX$EJ5pnCD~xoW5=9ylk%+pFKsE^yuspDuel zAGbv74m<7;e6Lvz4lTN;h#sYd8qDkd#cWb^rscO_C%c%NTQASR1(?wou-rX)FXRuTpg7Xv60FR_;^ z*@cC0&I|m`nQNk(f820+pz=HW@YsHeyW^G@Y;bxtjevq(8Y9cu@tl9^{h3CHD3#1& z1Wr_w!6ZB=7~#0Mm}xJshpW6jNMtx8EjW22HfkyN*n%jcnQyHtL#wpB6&(QKU$>Xx zAJRs|kNkn-?!Z!F)M8##KBn3W7GVs4COCO3lZ}5)Sj)EyLU8vgibq@xsQ%edv8ZTC zh)Po#9h$SnZ8bzxx58C;B$&C}bC?=xEXaT(B!Nn~<}VTIHLYpQxn6=36Guwxz)&yW zZ1fv*d;d{I=2wD*W!@cTZ$qiPevL~gyIxE@{hC2pRIAf1{2YskXMLsaZ}^XGBo${5 zuTvtaeT1tc?)aMjn#i*GmRpt;Z>086hFgr({wDrB?~ja)Rexn>Fge6=JsM$bG4e7f zlefjT$L94``5P65yN}p_F(go|?Uyd;Y7_=YaO1Ja@mwb|dl5wK-M;xX#AzQ;NXBjF zV6Qze-WRsc#ZXL`N{f6n-qW}U!*~eRLQ%ObpL~|fs9~n-w*Rl`8uMmPG$~2G{cFuz ze5qsvZt7JRj8kjsdirB39`lfpl6bN$nk0>J=6WhHRyb$aOuL9poyhAU5~jy7k5UXmTHm~@{`WskW})z$$+Yj)_~FNS2dyFm(XzRnPx@og7p!Fewrw3I zU|3LHhW^$QgWsZqfI{=_V}|1YaCQB`&1RzL(O`5DVw~cm;5>03ip389ZU;*nQRzkH zMNlV`ru3z&r6NnH_<_^G12or`*9kI%(f`cS{b-7?B>;ejXUB_N`mfpX#`U z(QM++(KI7*{?``#0R=ARb{VS6J!I~QaNQcU5MPP9S@HW9@p$p4t(?hp!t|B(vMS$^ zREIUxHs_r@FH=MTI&2p`!4JEq$iBj`N-JhmvFfbEUFt} zuq_Jkg%<`*oeqv@b{5u0X8TOm2*(3h+2u5efJ&$f7syo>Su#KUN7x66yj}`A#tzKj zt=q#Q$rNM-;>KXztGZ>qWiIQ99`*#Ci-MKNNhj~Ir8zWy3BF1A|EUdJNE=`t3yp>7w_Q42|_y5<02* zC>gtqbfQEiwAmpP^F-J#!TL)tT5;u5$O`h4qfKeGo3H6sF~TXY?XA0Zdb;RBnZSND&9n+LJ; zt7MnzM=t@0LSzRW$p9aNmCy6%EQ?S1Hiw;Kii5N_%?iVbj2A~YJ9NrV#ztW zf7v_Rr$PW~Vae}#Za=2qz2oRmkOo7izG9OrnS#X=@=hbUx>Wp-KZC-+oXG+>L;E|c zf89fH8k)oQT)mTg?4(eCyF$DS<3CmtkcOD^g(*?bv9(n$UncUKM2$HoS_KK12hg8$ zv>B{~8@bd^Gv!Dv&j^LMqPvisgTSn1Te1oKicCSH^OqpN41wc?1nOVjyZ?-$0iCO5^bvyuV$Vq5@cF@#) zlq;|C_C2oDSE$`FJMO29QYhCnm(Kr9LdN*vp$x7XVP>_^WS;g6prO^bXaiCd_B+jH zkHM__=(AcE$p``#KF<;o4Cbz8G1Y*v;_tzio^RrBb!!8ChV;zF62uVx>~Gb7%`NHm zgQjwbxV1A-5?Mg(lzx=!Wv9lHqzMz)As{d_Yj-v(YN#DWa& z{w1V!Jc%k~i2z6?q(E3UeTMGxg+Jk8w0nLqnk>KRIXppE=76|jegr=0K=n;+)$~2HEE>fdHgo#_0@m<#jm!)J59Q8Gk|+ zx)Yc@{hPHzasN04Frq3F(*^HlSrql*b580V3|I9c3M_E7T}_4$Z^^cuRy8VEO_oA$ zge?(YrM?H{VC8{PS#<#!8n_k-J|UQYhwDZ<%z^bj@17b(>IO5fkjq3qC3jd$pVEe) zUZvOBt@bTUVKy?zhGGJC_Jx{~?QfK`COo&jXGOR>_XtNjw@~saNo4=<(PWNqQ~E># zq&6f{^ETig1~)1POaJpnl57eMQ!YH|n6ccvRB_ue;{TF`(?21S z_KZd%s?gko6V)mK20|jrDY-PqCB#^aQQ_A_?8&5t-gPadyta&c$xT_2-wk%&V|9&d2}KRMPEyiG_u^aW>DID0GL)i! zzF^nCo7b^>`k}EL9aH(oLL*WirMAeu3oh6&WC@}7V_1aAPt)fN&Nhf&z0Bq2s7BDK z)=K(lFH`Mj@@NflR2RGbL6RrU1Zl{F;%L&)=p$}%7yRS z!I1^@KcI7o_)FRI$>f_>COIzM?A)_Nt+WC?-p+AX%q`2afXA$v?~>#h9(j!4Rn|uG znctcB2>rI%Vp->ZQh^b_1*pN^O@za8xa}jUpvDK&=?xZk$MQqIN6R}B_jBn8W+CYy z%Tl7=KHFb|m3kSaWn5I*cEuDP(boe1Q~uA-VJSrhq=}x@+kL>urMk|j)3wu79u^&*fm zx4C3+r~XZ^f=MqaZfDI7cOjKZZAqd}l1-P@%WEmB z?72AE0}F*{+rF|FT(nD?Eq#%HQrjZEu3DQ3p z&Hr1|gl#gF_ruw@0>A&Ky{~?Y^4t0r1nHC#q(qtlMFgcABqSte@hR35L8V#l&?4^T`Jps0Ng-mF{lYhbD9qRp(s|} zyItU=@oVwz&V~{YnE)8pFZH8)XlxAE-?IuWOipkkSf{7F@KQ99bLng59g)P=V}G1q zh9)3EKMe93{bsFmBmSMXL%QH7r)qwY&Et?jts*)p*mlegve|Y8-2xe0`4WMZPWV{% ztgDbO^}Y@EZ>u|IOK`HDsysp!H!B96Bmtx3JiJRMf0mE8LYyq#i$pR8@RjZkSkZ9^ z7mo)B{V}%4DT)1zKT|#YnwyL7gVGFkH#au{aQtpEB&vCC-|1oN{jnR?5m=X?U?(XH zrS${~@0!T$jCb-_NF?^4R_g)|&u4t^R{3|u<(+IUyjs7WovL)tNB5Hc1@YM0_pOG9 z<8db#qS?IKKSoLc;J#m5JHtM6dj9xsk3Ea`{^iZyq6@~P@RIq$CG z$^N$(cIr#sJIh?$!rysuRY~zPo%k&8t-PekuvMiV2I0y1 z)sRU!rg|Ou#dEi`n=)imW{xHB6@4YxQsN0UI`*sOyW|d*f$pGxG(obTrj3N<^=-l= zvDvQ40Xq380)E;SZXXTv;k#@@ufl36dKRC5-)BFO2oCOu5|(`aSIo8mF{9sL$OCYz z{^DMp&b}w3vScQnx8ms=^sKjaDookX;wK6ewCAyJbkPF%Kt(Bjxrw& z#%F%tHkOFk_pA@O2EP7MmbVCsT*T>CRP1e>x8OFY)Dcu&R^>?#mCL&w3+${yvPdfq z9)BuoAib#^LfO(_jc;=$N2jj6)G8ayPRREC3Ei(w+i*_v^e3@|?Tm4(O!=>Fg^|Yw zKVWRLE2zD?I@)gU?pgn_aI(YSRP|U$O#P<%P0IKVI(a!t+{D#Sicu3b4%*x>!N+~M zHnC8(rJb)m!*+Lb+#-{8hVN&;{Pd3NQ=!&ft5BOS{;s|a8{++I$Xv@{r<%2fw`LNi zXM_GbK2keG<5KDSKt~o8&vAE7$FDFKBiljenI(=%sx@cN&j`gD=v{{y|EV*IsR~Z8 zWeWT7k8+G77iv!=j8YBNa#Rg<2r>FGsj)wVmGX`A&W3Be zZifw#$h62P}u;Bz3kLx6NX8NW0HZnWB zVs_DTroOxEAb%hG@#?Xf@g}gjs-~Yc$@@3fh*25D{7|lKhW}vSb7hG_ zdiEYpBVL3EIkA}A1ij}B39q%^#_3gINapaRVqt4AwV8^JbC4=Rx9Q``mMh*kk*4A<5z?IZ8T<-8!<>n)77PU<|#AE z0KJ=N-lr@4MuNjG>TViS(czpicL_)G3Q8*BXvk*G)V8doh7@$Ge;Pa$WmkTo@Lki< z*i0&0<}k-ORAuT*dEezcn~k|<^Ibhg%4gNQlRn^z=R}W-nZxTh8>ZwN?h){Eua;bP zca}tE4z{L4Tl5$O<&%xdk>R_ zEu}+^1LTe4llg>>039RL3tP)ix^Ut{REKZ-37wUr*{zBF0KB7>x!#YW#bWKx&RfFx zVOAC45Mh{|eT|vOR&{C@E&No=v6+9p5t=8M-=a4#FGfsK76z?u#U|~Ao;gBHbK~JG zh5JtOY0g@nHAel?4edw^z6ocKjimHLt#zXTi@Bc6VuxF{n>3N$tS_2>YE(ap-Aq&% zZp|n>j15bL$871vhf3>NC8T6*zNsRjhZCLM@$ra?Hkg>-UHD!CA7uD+3T>GdEtWL%cqny%C_$2>AHTA* zvqSw9K^H63@C`05cOO{Q(Me0<0fPK*s=$9i_b6EG);zM@C5#$@La%F}*HLka$H5^C zsW55HB;jbBV@?|@^WN#|_*vYrc-_QV#rXDpfRvgplK8(#wccj2<8E|pjl}rE-={K_ zaq+?72dxjCF~9y-tHiN_A*~G@Kk)yH92QQv4lrqDfxAPBf7K6T)c^OXf3xI&VIbYB zAg8Y~{egII1=TV?;NA<5AD^Ir$B*MKy~bo^FU@b`4n>YQEzvYR4#ybb_(M*CbKO%} zoJ;L*anuY0b~+Wx#VZeKi24&`*JV+AiHRvOm=r3hyKH>16Lfe=bOeiZIP$DSx%w2$ln z?1IVzMv8ON@paPhjoh!!ErjD}_J&@nDEYQehmwkxZ!$Wzo<~gO=+{!M$)L1zX`}7g zFqHC?ylWDirPIn|K&jUftHzz6!p%_81Cgv#;iIowzX^LXE6qZNZOXm0@C&Hg3O81= zM?wj8bpTrmeF8JW2lts624E1xj}Lpd#5Enko=}}9Q)HzYNoL!U ziK3P=DDv=6x7AQ!K-l#8!{ZP7@RPz%Mza=d2hQBt(RDbWI^J%!|1cc*ESmh-P1HCh zVf>zNym;dJLYVlF#%u>YT(o$7Rhc-A$vvU^FMP-nlY1OSbVj%={Eg1^45){5uR5*p z!I!rPHCQo*n8!!%TX}y-ABPgr{=o7zt;J|9fJ?$5rgt^R# z_g|HYMCii318E?{CX~z>Zxe9cWmK*64jn3>5IY5(3h%jN;MKYw5kl9{|Fqip#PQNI z(|pJh5569LxtpFK?-?SZ#bAiV#)vG+ea^Ah7SqbJv(D=BO{cJ@sf40UWKom?=^Q!i zZWK?#B50KJO6;qm?1U`X@}UkJBNjO*vS5g8v+NHtj7fIIN$Y#nG>SxsFhq?zhGep< zpkg^qO*#6piz0DB!tSBR_C*M-RXiEhEHl<+%)u@`%j|_3ii(N0!hE_YqsCq2grAUe z$p?AJsE&hpVab!=kx@!G)jY!DIfi$VHY9xQ2}TW0Q?w?y|8nlCsXB5CFC$bE##;*SCx50=+4DH=a+vr(s@4gJAi6Jm7T)qL(%q61Y5I$*Ir`g?}5J zzgnxJnEC5HB(C83`uMKpByc_O&GvW^aGx7?;dEYyP7H~mEB%tAROHh`g@D7yA*~2# zZs^Z<=&L(qoqWW-1`n3SY;?zTZ^MblM`oiiWDpDIQYAC>Jx!U-M4ewjwbK+7fT>tZ zJKXU6v+9OOvlpX2}&smGn3lSJX`k%jE?9u{qv``mKlR}6xN9^8%&a0%;x}>vK z+GWQh&#{TGB`W9Q(LsQNyYs|v`VPjbO3yyR>3MAT_eSjVG|{|*bYGQz@%_m9+h}Mx zyUcA)_2Gj%Ln9*-d5;SE>}D?gC!1ZH={bcRmLEStc<)-EJ^Cf8KNKz-yV73eOW_Ct zfKFtz%)8#=2d}#a&R6cob^kUlor#b-+9F%XSTI{*qetYo3paX2O6_EhVBgN(IWxgYZTs(ALxsLgmb8cedtRqFm!lOiW7Z z>+4bd*2_PV=GOgK%H0+e{eQRM(Lb_@OioGZk9r?U3iZ^0RXb1R18vsrRQ9P%M9xK{ z7$527C`FA%r->cxF2{JDpv)P?eASS6UP3e@Cj<*4!$QyEl9Pq%?A<3mf^a~%mkdNh zau`zAqYJDcq{$D!>RkZvcZPY(8YyKVK#pdp^&=7D1kwR5Evb%j76c>T)t$a+TNJwniQ5i^M!?7OCxP0`HIKFIJA5#07%snNsZ7L< z(BjDbtn4Kbfe)D$018X8m{+Mw{V4~G#(r?T!qT&g=NSN|a2rx|l9xLEMC(OLLC7>e z)3?7Jyk#LnS>e_O7n*6}ZrVyQOe3{!3&Y|FLywgoBX2jh_WqQmlkF@u(5a`1>UvGP z6)@FaVKpJPL7+hAI>|q?a?Vqg>NWgG-I>x?eXswF1^0`zq?=8m6W#@c>g&^|Ni5oSZu7HIsy` zWccxK3dKLO7OL}cH>iK)IEqM?*bsdzBxE;UZqB;+dzu@KMrYM8g>j~%hBTxYgGtI> zCW$&jB}Fzo&W6qd2SdDsKddzIEF=APhNP~Bq&AXlGX@r}_N9(Q-F#TwcVhhxe;+fA z?n&{Dxtg9tfxT+hf48({B`?hcoVfb#G#$g;msFf5Yo7t2Sh~OtG2i5o`kECOorccx zadmWr(SX3Yu0Yl_S<>IvAX*XLU`p&_+fN4wAj7<@VE zF)P(s56EmFYTtD@n1S|#bm2GGx<<8_Om>0DMtqE5pH?4JZngq#OY+ez7{U&bc@&c38qIV5vt zywyg$cX;f(Nq2!Z@!HsFzBu+hu#H(CP+}$#BO{>~SM~yUaYA-Qch>36-Z!KnQDSzr zK9-DnB2!hGX5GMw&S&?UxebwC>MMz7CIG9PuDiQn8bS)9ct6zO$OyZc;^I#?|I_GD zHat?M^6xiC1D9ToFHfB3oeZXKNCh@6|47T(STQYYIzM*UI4TkKp3RKDD@o~FYc({1 zdg%oqpNM)aM?Oyz&vW(PFk-cvXtb^xE%tx0Gg+A(#q31<^Ob*he>gR-Y@G4T?kaf7 z*=~-unJ#%(@~G(KRkNCts`bsP|_YlrPUj9?GnSmCcEzU9nBww;%qJn=b;kIr~PlROjvK<1jO zE~}>q+Yc9NC5!u1Zr3hEYv#?f_5#>O)3RZ!Vn_K0oIq zivff2Y99b7`mA%Tnc}RT&j_i;R4jjw;xt;p@_Xb6aAXhRvC^mc6TtipLlurDlKN1G zhl2Vg&r?AlUsj>^G$DKK!cP-Tjx{bOuVKiGG*_69N)zfl*JvNnRgNex8&|>$+5q&d~CWE&P%iN%!qs2%2^{2}z zZP9YB#c$>Ojy6vtm;gjdPjjDvK&i8tENymY)@Qo939;3D-7xd*=Bt2Q%+`Vfe<#zwY;W}{auw04MSbg%;2(CdkPCNX;2 z3=9^0J~~O>=zT-*N|8w1DXf3by7zEz$8_{FtDG#N8@@IqL zMfX~k%zuIP;zTN-7&yh!QIg#vmtyv3o_5b9tlkM`XGXe6;@R|cn=MA1QnLT%S6k=r zSt|jDPUCy02i-%-lY+V)r5S89bA|c!ib~OUE0_dBg)GmAf2N7($0c)oM1RR1SY4VS zRyat&0V%w$_{xJ}7d4+_FVVxjHRqyS120m{Hu7eWxjOf#A?SZap~;I=QeJSc)wm11 z*DtR)9e}(`d)RGHbn3>zslcyH>aq)&GCqHHp^U=}hDR=ujagfzj18@N14!H|{T6T3 zUK{gO7gSv_w1;YjyUUBdN4N2WW)QjARTC6&G8ej(AP~@qT=y(FSs=XVK5KWHXngAQ zSR!EFn}k77P3{&6fol4n$Koe-=i3c(ImTq4EGi5Pe<6YGw_DQFXBd05%#*)?DgfDw zA7wLEY6KG*Ev}f&dF-_DYsg!8dgvy58bOp@6JBrRokv2h)8gtb>35U+k(b}c5St0s zqCR`MqM~B5SCF&0L&65S32l}cw^cwi>W`6rhh1b$10Qy8>qx;(FFlc)t8HXb!!|^k z^b8Db(TdYnV{MS+c*9qpF8JdI>_PP zW{D4T3`KPco3Ymhvq^0_2+<)*TK;lWX96F}w)-{qMj=MaclX$QmXfu(u>1O2#;vbu$#c zTCH%leT;pX;BEBCu7*0HN1H^0joh`%q@+vuY15;6l;r)O?d^ z&k~T#OXU6OgXwe>I5f9qRKJ+;=TGrUqgqQaJraxNXKWy9_c8oBjEjR0=D*Rd@n2Sg zI8u5hlikILk?;RkjIWakgBhhUroA~bRLId%V0+kcZ$NNl7EWZs z68DqKx$S)Hq_C(&t0YQRYTUE%I)T0WD73STs;%uw{zwf`^wd!c^+33Ilc>OZ=>S~q zr1)52cTauf&mAN?|A(iw1U)6}V_SH`bn+n+Tk(17GZhBz8AT^V=1D z>eQuxX*TvS@e(y-M`W^J9b=b$!pKWdyOwk^-bKRhYq_Yq2vCA z(xoIrC%i!(4J3xH5HQ1DWZrKN8VdNIk-S9$j0pf4Lq4Zx<9n<-K+nE9t11aG@(zm% zN=f_YC0}v=Ak_+n!sSayN~56A^l%7@T4d}_%{vWX6z>E`Utq4~nHI zyKq%&)j;L_AS#6-mOJPARqN1O$0N`aO?Ru-dl}ks;eUw z37~*+B!4*A!gTx!4MiVR4^IlGE}pez|G*#LmzEe{PDUAA6d7%nxCuU7gMq zmsiQ&k8J#vN3h6axCk3}>ef_OM>s%BL{z^p0@nXc%U6C3LHH~X6o1(A+tuY!5qvQ0 z_3GHXgpsU3q$DoRfU;VJat7z#V=U7GKHNqyyR#fn4I&LJCu@3I#f)tDOlH=%oHI@e zJ6%=MrM9X(_ET#daXpHgVl&gm9nE;rN?R$@cE9!#@2$!w+cKE)UjeBh zw5@O-TAkG{?1Lm9t8q~{EW6UXhLO{*`%0pX_rKJW{qx4eyuXnkHv@7*brfn`yv`C= zfi~OBu!Dp{vg-?R#U~?nJsTxxNCB{Ix z*n+0n?`G+T=+-RqkX72B6PT^F1W8Nch*woa_ML#NT(~IVq;Q1 zjQwX?7f2N;e0xMalh75a5BC-zA$#ebqth3+Pxl1N?2#3lgMVOa*A~z4`JZp6fU~GPin;0yx-LiYdD8OX<5IhJ;*lB*@|ADio^@*krgq!JGpso!moE)T zzm2^1k~J%NL?=+g=#SFKI8eX^)d}oDA-NFrS2^|?;=8!pZs6TJK!h1-5=k74-#x)3gjAfip- zc(FOv^?|{vea+D~EGiM`Q1=hl2OwQUWNcTH_3PA38_0*Qn%Ww(5d^`9;V~_tDfwfuPPGw>TWj|XR;r6=u|J>_m;=>Ye3O5 zma?{81@f!TObaF354p>BopYKh*ooloSg~VXLa@6)EX=9fKh^IC5ARjt&FhwhOF3w| zCqbhh#1z&0J&(x;V0Hp17jq52CJA|5(kSh4{R9u$YZJi&s=s&0-%L|o zV~UCv5Smey@vMBfM(^f5X_O$#W+V4CV;rA-Lq?U`RJV`d8ogWc?=r2W$9-O0n>d#O zV8FE-p{cj8(Ifr@i154e{rqbptQigjnt9&3PdTsAqaz3CVVSR}U*lgU749XoZeoNG U^^KbS8^GT)h3E36vM+=G2bN$Ly8r+H literal 0 HcmV?d00001 diff --git a/docs/source/roles/researcher/images/db_dbeaver_connect_mssql.png b/docs/source/roles/researcher/images/db_dbeaver_connect_mssql.png deleted file mode 100644 index 273d53a99375fdb226412e30f06089ad157046e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 486485 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