From 177273a5dfe288d3ef852f456deeb5c01a35d358 Mon Sep 17 00:00:00 2001 From: Gonzalo Seriche Date: Tue, 23 Sep 2025 13:23:54 -0300 Subject: [PATCH] (gha) add DHCP pool validation tool with CI/CD integration --- .github/workflows/dhcp-check.yaml | 74 ++++++++++ utils/README-dhcp-check.md | 181 +++++++++++++++++++++++++ utils/dhcp-check.py | 217 ++++++++++++++++++++++++++++++ utils/image-ok.png | Bin 0 -> 36220 bytes utils/image-wrong.png | Bin 0 -> 33094 bytes utils/requirements-dhcp.txt | 1 + 6 files changed, 473 insertions(+) create mode 100644 .github/workflows/dhcp-check.yaml create mode 100644 utils/README-dhcp-check.md create mode 100644 utils/dhcp-check.py create mode 100644 utils/image-ok.png create mode 100644 utils/image-wrong.png create mode 100644 utils/requirements-dhcp.txt diff --git a/.github/workflows/dhcp-check.yaml b/.github/workflows/dhcp-check.yaml new file mode 100644 index 0000000000..2026c6b899 --- /dev/null +++ b/.github/workflows/dhcp-check.yaml @@ -0,0 +1,74 @@ +--- +name: "DHCP Pool Validation" +permissions: + contents: "read" + +"on": + pull_request: + paths: + - "hieradata/node/**/*.yaml" + - "hieradata/node/**/*.yml" + - "utils/dhcp-check.py" + push: + branches: + - "production" + paths: + - "hieradata/node/**/*.yaml" + - "hieradata/node/**/*.yml" + - "utils/dhcp-check.py" + +jobs: + validate-dhcp-pools: + runs-on: "ubuntu-latest" + name: "Validate DHCP Pool Configurations" + + steps: + - name: "Checkout Repository" + uses: "actions/checkout@v4" + + - name: "Set up Python" + uses: "actions/setup-python@v4" + with: + python-version: "3.11" + + - name: "Install Python Dependencies" + run: | + python -m pip install --upgrade pip + if [ -f utils/requirements-dhcp.txt ]; then + pip install -r utils/requirements-dhcp.txt + else + pip install PyYAML + fi + + - name: "Run DHCP Pool Validation" + run: | + python utils/dhcp-check.py + env: + PYTHONPATH: "${{ github.workspace }}" + + - name: "Check for DHCP Pool Changes" + if: "github.event_name == 'pull_request'" + run: | + echo "## DHCP Pool Validation Results" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + + # Get list of changed DHCP-related files + CHANGED_FILES=$(git diff --name-only origin/${{ github.base_ref }}..HEAD | grep -E 'hieradata/node/.*\.ya?ml$' | head -10) + + if [ -z "$CHANGED_FILES" ]; then + echo "āœ… No DHCP configuration files were modified in this PR." >> $GITHUB_STEP_SUMMARY + else + echo "šŸ“ **Modified DHCP Configuration Files:**" >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + echo "$CHANGED_FILES" >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "All files have been validated and passed DHCP pool checks āœ…" >> $GITHUB_STEP_SUMMARY + fi + + - name: "Validation Success" + run: | + echo "šŸŽ‰ All DHCP pool configurations are valid!" + echo "āœ… Network configurations meet ISC DHCPD requirements" + echo "āœ… No subnet/mask conflicts detected" + echo "āœ… Gateway and range validations passed" diff --git a/utils/README-dhcp-check.md b/utils/README-dhcp-check.md new file mode 100644 index 0000000000..042938c09f --- /dev/null +++ b/utils/README-dhcp-check.md @@ -0,0 +1,181 @@ +# DHCP Pool Checker + +A validation tool for DHCP pools defined in Hiera YAML files (Foreman/Puppet configuration management). This tool prevents invalid subnet/mask configurations from causing failures in ISC DHCPD by validating network configurations prior to deployment. + +## Overview + +The `dhcp-check.py` script validates DHCP pool configurations in Puppet/Foreman Hiera YAML files to ensure: + +- Valid network and mask combinations +- Correct gateway configurations (when present) +- Valid IP ranges within subnet boundaries +- No conflicts with network or broadcast addresses + +## Features + +- **Network Validation**: Ensures each `dhcp::pools` entry contains valid network and mask combinations +- **Gateway Validation**: Validates that gateway IP addresses are within the subnet and do not conflict with network or broadcast addresses +- **Range Validation**: Verifies that all IP ranges are within subnet boundaries and properly ordered +- **Configurable Warning System**: Provides configurable handling of missing gateway configurations +- **YAML Anchor Resolution**: Automatically resolves YAML files with duplicate anchor issues +- **CI/CD Integration**: Designed for automated validation within GitHub Actions workflows + +## Installation & Usage + +### Prerequisites + +```bash +pip install pyyaml +``` + +### Basic Usage + +```bash +# Validate all DHCP pools in the default directory (hieradata/node) +python utils/dhcp-check.py + +# Specify custom directory +python utils/dhcp-check.py --dir hieradata/node + +# Require gateways (treat missing gateway as an error) +python utils/dhcp-check.py --require-gateway + +# Suppress gateway warnings +python utils/dhcp-check.py --no-warn-missing-gateway + +# Strict mode (treat all warnings as errors) +python utils/dhcp-check.py --strict +``` + +### Command Line Options + +| Option | Description | +|--------|-------------| +| `--dir PATH` | Directory containing node YAML files (default: `hieradata/node`) | +| `--require-gateway` | Treat missing gateway as an error (fail validation) | +| `--no-warn-missing-gateway` | Suppress warnings when the gateway is missing | +| `--strict` | Treat warnings as errors (fail on any warnings) | + +## Exit Codes + +- **0**: No errors found (warnings do not affect exit code unless `--strict` is specified) +- **1**: Validation errors found (invalid subnet, invalid range, invalid gateway) +- **2**: Usage or environment errors (missing directory, invalid arguments) + +## Example Output + +### Successful Validation + +![Successful validation](image-ok.png) + +```bash +ā„¹ļø hieradata/node/example1.yaml: no dhcp::pools, skipping. +āœ”ļø hieradata/node/dhcp-server.yaml: 3 pool(s) validated OK. +āš ļø hieradata/node/dhcp-server.yaml [guest_network]: gateway is missing (warning only) + +āœ… All DHCP pools are valid. +``` + +### Validation Errors + +![Validation errors](image-wrong.png) + +```bash +āŒ Errors: + - hieradata/node/bad-server.yaml [main_pool]: network 192.168.1.5 is not the subnet base (should be 192.168.1.0/24) + - hieradata/node/bad-server.yaml [guest_pool]: range 192.168.2.1-192.168.2.300 not inside 192.168.2.0/24 + - hieradata/node/bad-server.yaml [admin_pool]: gateway 10.0.0.255 is network/broadcast address +``` + +## YAML Configuration Format + +The tool validates `dhcp::pools` sections in your Hiera YAML files: + +```yaml +dhcp::pools: + main_network: + network: "192.168.1.0" + mask: "255.255.255.0" + gateway: "192.168.1.1" + range: + - "192.168.1.10 192.168.1.100" + - "192.168.1.150 192.168.1.200" + + guest_network: + network: "10.0.0.0" + mask: "255.255.255.0" + # gateway is optional + range: + - "10.0.0.50 10.0.0.150" +``` + +## Validation Rules + +### Network & Mask + +- Network address must be a valid IPv4 address +- Mask must be a valid subnet mask in dotted decimal notation +- Network must be the subnet base address (not a host address) + +### Gateway (Optional) + +- If present, must be a valid IPv4 address +- Must be within the subnet range +- Cannot be a network or broadcast address +- If missing, generates a warning (unless `--no-warn-missing-gateway` is specified) + +### Ranges + +- Must be valid IPv4 addresses +- Start address must be ≤ end address +- Both addresses must be within the subnet +- Cannot include network or broadcast addresses + +## Troubleshooting + +### YAML Anchor Issues + +The tool automatically handles YAML files with duplicate anchor issues by: + +1. Detecting duplicate anchor errors +1. Stripping anchor definitions and references +1. Re-parsing the cleaned YAML for validation + +### Common Errors + +- **"network X is not the subnet base"**: Use the actual network address (e.g., 192.168.1.0, not 192.168.1.5) +- **"range X-Y not inside subnet"**: Ensure all IP ranges fall within the network/mask boundaries +- **"gateway is network/broadcast address"**: Select a gateway IP address that is not the network or broadcast address (e.g., not .0 or .255 for /24 networks) + +## Integration + +### GitHub Actions + +See `.github/workflows/dhcp-check.yaml` for automated validation on pull requests. + +### Pre-commit Hooks + +Add to your `.pre-commit-config.yaml`: + +```yaml +repos: + - repo: local + hooks: + - id: dhcp-check + name: DHCP Pool Validation + entry: python utils/dhcp-check.py + language: system + pass_filenames: false +``` + +## Contributing + +When modifying DHCP configurations, follow these steps: + +1. Run `python utils/dhcp-check.py` locally before committing +1. Address any validation errors or warnings +1. The GitHub workflow will automatically validate changes on PR + +## License + +This tool is part of the LSST control system and follows the same licensing terms. diff --git a/utils/dhcp-check.py b/utils/dhcp-check.py new file mode 100644 index 0000000000..b856acf130 --- /dev/null +++ b/utils/dhcp-check.py @@ -0,0 +1,217 @@ +#!/usr/bin/env python3 +""" +DHCP Pool Checker +----------------- + +Validates DHCP pools defined in Hiera YAML files (Foreman/Puppet style). +Prevents bad subnet/mask math from taking down ISC DHCPD. + +Checks: +- Each `dhcp::pools` entry must have a valid network + mask combination. +- Optional `gateway` (some networks legitimately have no default GW): + * If present, it must be inside the subnet and not be network/broadcast. + * If absent, we WARN by default (configurable). +- All `range` entries must be inside the subnet, ordered (start <= end), + and must not touch network/broadcast addresses. + +Exit code: +- 0 when no errors (warnings never cause non-zero exit unless `--strict`). +- 1 when any ERROR is found (invalid subnet, bad range, bad gateway). +- 2 for usage or environment errors (e.g., folder missing). + +CLI flags: +- --require-gateway -> Treat missing gateway as ERROR (fail). +- --no-warn-missing-gateway -> Do not warn when gateway is missing. +- --strict -> Treat WARNINGS as ERRORS (fail on warnings). +- --dir PATH -> Root dir for nodes YAML (default: hieradata/node). + +Usage: + python utils/dhcp-check.py + python utils/dhcp-check.py --require-gateway + python utils/dhcp-check.py --no-warn-missing-gateway + python utils/dhcp-check.py --strict +""" + +import argparse +import ipaddress +import sys +from pathlib import Path + +import yaml + + +def parse_args() -> argparse.Namespace: + p = argparse.ArgumentParser(description="Validate DHCP pools in Hiera YAML files.") + p.add_argument( + "--dir", + default="hieradata/node", + help="Directory containing node YAML files (default: hieradata/nodes)", + ) + p.add_argument( + "--require-gateway", + action="store_true", + help="Fail when a pool has no gateway (default: warn only).", + ) + p.add_argument( + "--no-warn-missing-gateway", + action="store_true", + help="Do not warn when a pool has no gateway.", + ) + p.add_argument( + "--strict", + action="store_true", + help="Treat warnings as errors (non-zero exit if any warnings).", + ) + return p.parse_args() + + +def prefixlen_from_mask(mask_str: str) -> int: + """Convert dotted mask (e.g., 255.255.255.224) to prefix length (/27).""" + return ipaddress.IPv4Network(f"0.0.0.0/{mask_str}").prefixlen + + +def validate_pool(file: str, name: str, pool: dict, require_gw: bool, warn_missing_gw: bool): + """ + Validate one DHCP pool dict. + + Returns: + errors: list[str] -> hard failures + warns: list[str] -> soft warnings + """ + errors, warns = [], [] + + # Network + mask must be valid; also verify the provided network equals the subnet base. + try: + mask = prefixlen_from_mask(pool["mask"]) + subnet = ipaddress.IPv4Network(f"{pool['network']}/{mask}", strict=True) + except Exception as e: + errors.append(f"{file} [{name}]: invalid network/mask → {e}") + return errors, warns + + if str(subnet.network_address) != pool["network"]: + errors.append( + f"{file} [{name}]: network {pool['network']} is not the subnet base " + f"(should be {subnet.network_address}/{mask})" + ) + + # Gateway is OPTIONAL: + gw_str = pool.get("gateway") + if gw_str: + try: + gw = ipaddress.ip_address(gw_str) + except Exception as e: + errors.append(f"{file} [{name}]: invalid gateway '{gw_str}' → {e}") + gw = None + if gw: + if gw not in subnet: + errors.append(f"{file} [{name}]: gateway {gw} not in {subnet}") + elif gw == subnet.network_address or gw == subnet.broadcast_address: + errors.append(f"{file} [{name}]: gateway {gw} is network/broadcast address") + else: + if require_gw: + errors.append(f"{file} [{name}]: gateway is missing (required by policy)") + elif not warn_missing_gw: + pass # silent + else: + warns.append(f"{file} [{name}]: gateway is missing (warning only)") + + # Validate each range. + for r in pool.get("range", []): + try: + start_str, end_str = r.split() + start = ipaddress.ip_address(start_str) + end = ipaddress.ip_address(end_str) + except Exception as e: + errors.append(f"{file} [{name}]: bad range '{r}' → {e}") + continue + + if start not in subnet or end not in subnet: + errors.append(f"{file} [{name}]: range {start}-{end} not inside {subnet}") + if start > end: + errors.append(f"{file} [{name}]: range start {start} > end {end}") + if start in (subnet.network_address, subnet.broadcast_address) or \ + end in (subnet.network_address, subnet.broadcast_address): + errors.append(f"{file} [{name}]: range {start}-{end} touches network/broadcast") + + return errors, warns + + +def check_file(path: Path, require_gw: bool, warn_missing_gw: bool): + """ + Check one YAML file. Returns (errors, warnings). + """ + try: + data = yaml.safe_load(path.read_text()) + except yaml.composer.ComposerError as e: + if "found duplicate anchor" in str(e): + # Try loading without anchors/aliases by using a simple text replacement + content = path.read_text() + # Remove all anchor definitions and references + import re + content = re.sub(r'&\w+\s*', '', content) + content = re.sub(r'\*\w+', '""', content) + try: + data = yaml.safe_load(content) + except Exception as fallback_e: + return [f"{path}: YAML parse error (even after anchor cleanup) → {fallback_e}"], [] + else: + return [f"{path}: YAML parse error → {e}"], [] + except Exception as e: + return [f"{path}: YAML parse error → {e}"], [] + + if not data or "dhcp::pools" not in data: + return [], [] + + file_errors, file_warns = [], [] + for name, pool in data["dhcp::pools"].items(): + errs, warns = validate_pool(str(path), name, pool, require_gw, warn_missing_gw) + file_errors.extend(errs) + file_warns.extend(warns) + + if not file_errors: + print(f"āœ”ļø {path}: {len(data['dhcp::pools'])} pool(s) validated OK.") + if file_warns: + for w in file_warns: + print(f"āš ļø {w}") + + return file_errors, file_warns + + +def main(): + args = parse_args() + root = Path(args.dir) + + if not root.exists(): + print(f"ERROR: {root} not found") + sys.exit(2) + + files = sorted(root.glob("*.y*ml")) + if not files: + print(f"No YAML files found under {root}") + sys.exit(0) + + all_errors, all_warns = [], [] + for f in files: + errs, warns = check_file(f, args.require_gateway, not args.no_warn_missing_gateway) + all_errors.extend(errs) + all_warns.extend(warns) + + if all_errors: + print("\nāŒ Errors:") + for e in all_errors: + print(" -", e) + sys.exit(1) + + if all_warns: + print("\nāš ļø Warnings:") + for w in all_warns: + print(" -", w) + if args.strict: + sys.exit(1) + + print("\nāœ… All DHCP pools look sane.") + sys.exit(0) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/utils/image-ok.png b/utils/image-ok.png new file mode 100644 index 0000000000000000000000000000000000000000..ad33711b20fdc3fdf4e167bb4bddc2eea6263e8d GIT binary patch literal 36220 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 literal 0 HcmV?d00001 diff --git a/utils/image-wrong.png b/utils/image-wrong.png new file mode 100644 index 0000000000000000000000000000000000000000..842651196e1fc83e892fdb79c4f3de55c9286001 GIT binary patch literal 33094 zcmaI;1z1#F_s5L`f|P_HqBJNSLpMWXL} zi2Mz`Qc_IjRdE*$JJOR=KLLlI$6H&sh`AQk z;p6vnxy*?mlvIcL4=T~`)=8g=4Kb2!=43e`c*Vd{Uw+ogT#ROGLA$KBc5_ZAE>)I( z^34}>Bu{5K8yOk~9*g&psIGea64*jDeC|_uiY>=~)VHj>1d(TA2jYs1r${%+elxp>+l^=9pH*~2$?fHT&}*h{Z#5>c=+x- zmmb^NT!E){KWaKMb~bWBXT2K@zL&b*Pa$}{bUV*$j9YjafW`O8Mg0av4$U+zZJ+=X zX=!asU3n{IWfT_VHWmtMge?j>atjstB168APKgUg`F$J_@+Fgl_Rro2k~t6l*+z-_ zeW0XUBleX($dM@#@R!$BDWiPs&QLQT@PJlC1G=CM-Ed9XERF3}#i zG&G`a7FNPXXD}FA`Ad{d3kYo@o+f1Sp&F)goFT`+yHKFcH|N4?mkW) zrrzvM?l1m6$v@|jv2-_gvvu*Xb#|ipeO^;DXHO3?I=bH%`p?hbf2XCl?SHT2!3p@!xsgppe}5~iX6tR~peJMNh%^uK8bB@{A<@5%|Nq(Z-z)yBrS5-Q z3i9y$yXC+3{NI*Z?v`%S&W^}SdI10HnLmyHz4K2)QNZsz|Cc5HHuGQKBJB*s5e59m zXF!~WnXj)=P$W>~Wh6DdQFmG~{j??$0nkvjWWqcw8LqtZ*v(ebDfDQr#`pajg1yH| zSsELIem)BW{Q|xFt*I6asnPL*#3D|Uv8*O(j!OF}W*r{C&|gbop&~Hmul6DSLe0X~ z+3pqP==BpYLbLX-D3qr~ zKMg%GdTIBLaXQeeI_*s$<;uNnt6t-UujZRKO4RIuKd415HoeJ29Vl)uKi%&T*r$W2 zl{2`LLD}2sAk;jZBO-&UV1ZiB?rl*kV>bN5}z{r&UQ{c zDhYUMF6?te=(td=9X9B*=xR3soTI)!L^N#8HW8n|8}74!3$0)9sV4V69lIS5cm=+q z{~`M%`*Ts8btX_@TRcE#&TDTpok2BSRXL4Uy`6w+QnJO%4?zYdI-nLAc*=H#U+}fI z(4fId-P4nAcfKjBO%y6;?b_?#vC_^GJ0fYaOK2CqBmg~IROtxgdA_japY@bF?D zs=Oh?cf~h8KBUZibz)n>&$Et;3GHd;;Tw{^VhGvQHITHKZCI9<`AV z__wv&SgZ1ZamJ*$XwV#QFWxVR>LnV%+ zYBCXC6kV`x*nPuApaX@n%~%A#;jG+~$288eE~0n)WnbaqJ%@u65pn4aU$?__w&!S+ zzH`YB_YPVqIjj5l=w))p$7^g}o!WbTdu$R}GuRQtRdpyj^(i-^e2wq_r(pBZs)2?^2BQ6(k*e#@yMbRiDjIkS{nFPkc4@W_9m z2rP#3p!#5g?W6@q(g zBVm|*_InibP}$oS?*{%*I+Wb3<>hqHn0(5A&49Ew%Q;j+2N!NLYLqh`+iwy6@NcMaX!Z_$5&u%qgbup#!>n zGET@jNAVwG6aUK-5`-7wG$x|NaQ+fzv598B7!@To7Y6`K;euh4lu)AIdQZ^1n_)XU zE?^{1z2@l0!0MEK&}-^g6D;h(Nhz{j964J&opADOk@`R>vCe|qH~oB25sx;zP{L21pH{|ID(s(i{20+ZdC99xi_txmbe29JEa zCy{>+angu#Rfm@b3e5?AXQ&YyF;@(f&?$eLcShMfvOCjYyO5>a2gdgsh<+{*WfZtJ zardTM`RCWh3z;+Hn&d*IY*pp-D}?UViK=Fr*Ze!l%kj=n9CKHr7xL%FhUmL-%~u#j`M@TDeNgm@J7wZU|)D~4eo z5b}o2=SZ&h-5R+Ay=do8M(d5a_An#fg6enH?r0pQ5R_Lik!Tr33nSC-;j7CI6@wN=t?sh}Kn8h0F`}x5-KhD%XIMim=YhPcr=hNOq zXT1*iEVUavrjzKHOT_d)hIi2+bkU6H!Y4$}={!8-6=GJu?GgJ%Xq{JTtX;H8b-(J) zW~%^MSzab)Dl-&zymG*>%oLXDlDmY@EH-k7`{Q};|1xGQplW@1w0g^XFD}ap^w!&T z=>X&H9a0a;@_DZE@TCises#Bw{q^$~%!AW%$S{v0xLog)K}4ptC=`45GcO0nmuAqu zb^5UJ`$1*VZ1KpCZ7cg&eq9T(nE>!WF(=5vCB-=1y5z7<+r=X}WryZKk0%o`hj zUE6P!@$s4RB#I^D$t+=Ey+NZQQc7)>NF6e2Sa-DhmFHwEY|8I4VnfF3&6_D2@P6L^ zngA+Ymu@z-fd8}jUi0hHr(z`w_hrlZ5LJzrxb5~j?D-+r^~HyI!+}kSAKhpLht{}N zvV~V!P-t5r)QsM>}iYne>#^%LSER?mV zKD#>8XvG5i(>wE* z#o~goUIk_=%W!=B>6&=0gTf)*#ZNsk8Z+1U&s21dIACXG+nVocdlf*pI{Nwpjc1h% z8t0Y;mL4Ye+HS0{*yKXxbe7!JoiFAIvrvpgorD7?BaCFeV9@>ryl!B;nDBj89&r!; z)y$g+$#j&Kv!)o;bhDSQ|94d5c(K?>tZCdfbT_m?Q?%Ovy+-L9Zdt8(8gE_H9aK5G zP_0Ei|2T3(diO?nw9`Zj^jKm5p^0v@lU9+{q9GDDR04_ zO)hJnx}4hKOV+XTbIeoEw)UVzn&v_pKd`qO3Ri#xJYM?kNH{tS51k6XHl)2k=`wvz ztT}^;_gsf{{$yof3otbRVnj@rWh*?4pHTzAEfC_F3)r74vrBifOiE6MoqqGv&NNV!j!->F$CMLl_1Vd#bc6{nTeEZ54f6u+N$AA? z&%h##7Aqpj8G^^^!Wo=1jADxU)8aXPnQfYP)M(%)&j*)fY7?5y7Q)cESlLfNutcx0 zKfGNrt7-HL*x6gc9X<2a>9vS7|f>FZRPYp+%KG?!^ zcw`D>_c@9{oOeDDaTtD5{Q55ccxwSP5rSC{`^voVW+SS$B$F?jINNH11a_3>l_X`EzW~VkpHG zGh2eU90W!kCz~z#=#PgUvyCo^BMj@7hsr5Ng-)|ID4i@HuEU_EmeNEpYXF1p(SzJu zWLR6g*P8V4E*Ldhh(J`OqV1-FrQ*)K;klJvwyht6dyVCP=Q3v+LS%lCTi&KC=DmG+ zY^U&?MD}u4ruvx~r>vd&^{bh1)ROScgoj!C@FpB>xj?9ej|m zw0tfrdl_3iX?e&|Fu7KbEpk`$8b3@ubR=^8;iFPn)vPlbPlf&5M|7dWwhc+vtpp7y zq1EJyC{l(Utb{x%s{t#Cf$nShKwW(dnuA>C&!m)lYY5Fk<_h_r(rs#eykpiAZQ&Hz z3`Q?i{^u#A;YF8<*OY?vr)-aO8fxm=1dbP#mZqFlN-IJVdCX0TwpdWY$mulh!&=H) z)U%5Hxqj%h4>pb zlta39&*(HX462Q@WPoq?172b$4Y{0k$*@l;=#d$)+B+b+o^H1xp6u~2`aSCN*siJI zc3SFYBaHe_%q-YKuPKgBhNGI%+x5JoMcHV20vRvsU%@|xn4MM?i09x_wxB06!oM3$ zFRqC#j0{_uTnCq_W^G8IuQmKNN_$}jwa}s0IZR~`u<&U;oxs7tF*E==y|H57wgo-E zBA}3e@k+HJ%5J2RYsG4UyUL-YRJHw4-?Js29!G_ZClQ|*@i)78Jq4Ll_&48Wdh6Xx zE{xVb$1V0%efpNTy)FJ+jT1KM)5LGxMVwL_`;0G9A9D*nrWxShlT*CoD^yN<;CGaI zpIfR3Y(DV`uFO&HS-_)!);jN8Od&(fWXUS8V1K`uCBGQSzixqgpyqk(MyI{M?T*o6 zvGaXvwav$K!3@2Sy=}O3>qOZz@#a+@{gcTB-H=tIznx4ofHg}(%f!qaL`O$AX{<~# z*SO@+%9c{UH+hHcUwyV~QqB8LU&(I9bMuK?YnPAIBUT%s4!r}wN&8@z_i77V&+w`CUOmSP+DKBS{sjTtvfgf; zi-R*Vj(KA#pDwVw*&9Q&ZTr9zZLR6SW`~PyWl-~Msom)U%tS!KcPB@Q)TMx7f%Rif z|1-M2!KR$<{&_=k+lwM*y9QA@6gDjJ3*fiM^`HNqS0%b=M>fMB$Hm7_b~4^z$*M^P zwR|F*JNXm7L;QTboO518fFMjoasyVdshpi1wzK==w&tGf(C-#$Lf58tS)=-wU#8l< zcsd258A|Jyx@Np2!rhuv-7nF~ZVmvvrlSu+uNEC@gOxp zQ-RXtYKRLSqJgVIB4P^~8_}CxZ&}iR#%i7;2gCw&8E}AvA;SRSzD%ykc&l6>8NVM< z>*ba6?GKggQ_e)UZ09LxANA86JPMpHRbqzv93JqeU)I@e;JwV{+3uXaodZVrokq%G zIZgNNr8}dpVI47h;5|LRyz!zMvHAu_tL;FeUY(ysO!{Ye*HX8K3%V-)+x!d^tfe2{ zs}aaGiA+t5yPk=xhm{62s$`4idG|=YPyZpcLuT0I_Ho*4GY`~tzB{!V2uQ8u|Iu_f zQ>+N6r_t2PlzcMo!PHdNf-kE z3^-)?K@X>}6<&W>kuPpFbb2O@qNSw;tFzxLacSP7yo~<7j>oz+n`+MMcEU@k^gFvC z17+x`eOB!4WxrW!Og&$OJ?SN`tb-)|>hzzvVRaT(cX%s`N6z)JdN{jKi`6(kigdW7 z=qQrA4(EO-JurtyPtJA}?tFQA2Uar7xxpzjIOeaj`K3>4Ie-~I_B$I=9$6a3Jij17 z#j+?-rC$`!?^Xhr^x?GAgd8+B%B=0c@RJ9c6yY4-(zKjQD4#2(tq}WJlPWp7bUiwq zKCHI;LC$7#$#AwwP^*gjk-v!)6#&+dZeL`a)+0mNdAI?bB#B1|Y_lfm)SZL~R z4?h{;cq>>2>Mn(Ba-QOwwgQp&tI4PSZodL>1)4pozWpKeqbWu*5S3pb_l%me#V7xB z=HyY$xA@7FNx^%m_sV=MSi|I_rrc%4auq?MNh*+RmEp*llo3lILt^4MW?_b;Wgj}S zN0J!$Qq!Tm?psF%$K_~*eX&uhIlS|FQzuh6eZrnHt;rsl45iAh!tJm+EeJn!+vwbX zo7bpx?Ja;UCy5WOfp2zi-f=+WG}};boD=3df8roKws9sZ*y`I6Ukqd&9{1fT3_8-g z7z;i3c~i4~#W*Lvk8PJU8#nKBeeO9+bwS)4^JjRNB*bbVgcoa&dG4fiBZ!MVQ!cn zRakUxJ=wJ|DqT$=uq`Kfs}8BWU|ONN=Sw}>;?>={n|+n|13!6ny$l}e)RW{HsftCP zb28K#<9HC6N(q?2J#JF=DWNLr+&WA3R{v;!hkh194v>`%^EexDrQftX6vAAcz=Y2o z)OHQ@DK3g>+hktNeYe)L#U?Rok!roh(~vz|&J0KL#$s0rT{+J771NiYW0p<}C3MmL zJ63kwKT^AMhN!*q>h4EKI~-uv{d(_(WLwa(5g~$@ z_GHB4N4tAfFkGI^shc*e@IA%-a*$bmULMnStuuH`F<^(z)EWc}C$Up9!5j#!V;)lU zAM~y^eEZgGV~*Fzqe-n(`NX?z*l{5JN_Aqxqt16YJxe*kykvOGhf@sZbSiX+-wFI& zQc{x8QPD-L=Z?Biuj2RW^`G1@XX!Cki||{mG4_IC3Q9^@$C-LF!%M$FRueo9Ztl3q zNQDp}ZbJNu!S47Fi@7->K=X#=P?@`;D5z57{XI<)Wy0}yxPl&do9anc;w4j^eRjEK znS!FC)=|+<8>80K%njznIYu?3`AjXb8&F?_AaT=L7wYs(gY(Rle03K+-6-SC`r4dO z`~y@%$d^KX@6LhmQHJEi@qQwKAgC@3^DN|J@@s8bsFr_!c57N#5TZnZ%AgI@vSb^P z+RmAteq{n$J=o}LM2*}Xvt}|}H0-$=tyi|UK@4Ej9(>tIFll$65&oT!v5Y?JnquTdsUwh#VgT6&7U2g?GpLZG4$qQ!>qJ2%c8oSwzi|RV!cxi2t(4Kw4HE7I|)LW&b(fmKPF| zCE}YGi^x-9)cG6N1|854f@rZe{FYbDeHy^b^z`&sVL96D8gM-trFC4Ka*ScI4czdP zAwq@^mwdt#pvyY7f|Z;X1o4$>e8H6u3{Ng`+XpvP=)CE?^ysC@is}l!UZAt1ryXro z>%}d_i?n@g#y^g89vN}K9UR z4KF7p=&bw?76;3^Fb!gWG&ciF?ns*Pf^R4B?V=2mh>%cNEajA3G9X){SLxPinK-p7 zgv)AH2{Btokd6CVqa=O2c^6UBz2ft+L`bo)tBNjG8YbAlnMJVjDU-7YfS$Un8IaCZ z)L*wk55Ma#)2n@Lny6mdxFUq}vgPXY`e;E7+iar7!*dKygSs2O#IZ8xphWVirH`VE zfC5>TwRJ0q^-Nht#|1!dGK>(OYpx@Fw$|3MDcqiJplNHaHyM(afNiglQRf0aTdN_Q zZZO8Qf8)6?Y$T|~ZNMVhZx?CQYdg?#n$59Lj3+$*j!!H-3sK`kr8LajhrUF1fmeA% z;$5NjxT^mvUiaeLExi6q!4r(3GqEpsUcCO}bXNzh_eZ2FC#4s}KmQpnN3h^oUobOU zox(>)xq&?H8p?0d`D4DG?artpV;5)yQ%6x7%^WaEwUW*KIm4(SQm}@d1bLFG9Jzwv* z=@lY@02oK3wl}pUq6UGbmlMvHKpnCV6CnbSMfV)E{F#^j_z_*fFG;8Uw>9#Eyg@ zkMXsJ$vNxa6!}MS?;OZnbaa}JO|?5Y5dOgB+rS8)_YZdw|6Y9FpRk3iS$`wCAobDU z`7`sB*V3{?Ei1a00;Z0UHREe=U;;rRTN!uBaY}cb$^&zPpVW_1yP*d6LUoime(e&hmc<3zl8bpzc5tgICz}g;&3`c?b!MVKz)_1&uGW7q-qS&hXmzpacJ2 zh!V_ClZjnp;v?xpLkwtp@_oYqQNAp4WTtm0=j)lSo|GIg;)#Ip-Dh(8Z?uF*K6eYe z{9%;FxrSQLx#?&1ee|n7$^P^m^Y2m~Rp4@j=wq>Bwy$^;-1=clevi9PIO=T*d!Iz` zg3Jlgq7u=3ulAFm30hhnezGi}E8c@xFFk5e8n2a6DCdb^P)$wt(M!K_3U3 zf_VH2=}^&6bcq9RqWKImuTxT<71W0s3aUMa41U|;(mrk_^nQD?>CR$1zLkGRX+S() zC};@QxaP#}xvZs??tzW7LplT;pekIXoeN0VtmZ+FNNrU;@VyV>GQ`b!-dIL z8CjS;UIfQmn%M=|^$ppTT$!nmP0xR6n%0FJMoP@JfexN(E2%lU=-r5H`uZvXOtm^ zG)CoAIl%o^vXi`)Ukm=09W5Fz254AM`lO7p8;!_RR3g-kC(3a!JS^?gl$jAeWWMTT zct3^PzP9=IBLUI)OplT>lyQsIda?{)%l!(f%j_N<1qb$N3+cdTQsl~TF6E?8vbUxl z)d68GJ(|WQzGdxoESY>tdw&e`?bF|QWXb^Y$`OwNJ=f&|-EOYAfGG6nxFQVn6br*Y z1RKFh@0YY;l;is`*%y^ysWTcy6D2noBg#~eILw`%d`drqTp7twIupF9aIqoU7ef!4 z)-G9o*wb#l#R`Acrm*|O=+EWQgIYdz7?K3Ku^iC#orX zUNy5d4_@-Pj-bOX;|mHpgOxV?^A~ce;C#6=!M%|H%4sIY|5P>i_|eWw2@{ZH#3cg< zVyUOMvCpsaru}~?@$c%apYre0=Qk(HAy%j2V)iL#Wjcd;H}N=hh{ebt|6`@u!h$(# zg;5&U1A-$huuB7~HGx{8LAHOQ%eITLz}XU)!tHtHgJSV>JawzvrYl6!$Y<|w@`c10 z`fuG8CO$72O~+<76{y|{GVxOxTs>IhrYTaQWjGss2-v@LX&;_VBX;m#dKcJuNPqZe z#IZsr`!1Z(q;RonGlZF##sV?IzzB2dwVnN{bhQ(I9uwhyO+Znck*Dv^+W3?r9Gw$2 z!&fL>dH*UyDlKvc29QpL&DGeqGN+nT0JA=^T>_EWHA!C+McZ7B$#hOCvfOfL9;o=s zp{=QsGuuCV72VV1ZL&YWD7~iQi4q-5yHn1;M~}&|iS&pU zJ&O=+dD$P0Fq(R2vU%v93h`|tqdPXcY)Gv0=JN5`8b-gVR|vG05}F0nnh>h}xIoO< zmcx~?zbg=6t?)ES5a4)lltr-a|1{S62a>1QX4;J3eqxE=M0qs6ge>^0oO>c9d91{h z{!$7E0+C!LnAqmx0Ws0v+|K41`d*)k+M74QN6$6Y)qfE8rJLGL#qMU0FxoHRE9&8C zVKMyL752bsx>(9DWWn`Xdh%Y%vOAV^=cc3Orp5XGOH%uJ+yb*nk>{-9C4OL4RL_J+ zo!=2WxjmeTSai%QW30i@ixugO(8Shb2k2r&e}Ehke6ltV1>auC6I`SV#15Kw<#I4o zaBASk&wJVH{4Coo(=SlRoo8QY@QTk41PEZBJFZb)KdC=S-J|zu9c`>b4U4!ITSyu1 zJDG}N64(eP18{c9N9bQwN&2LSx0efov z$Q+5cRs(upL0NxFwNRX$V-0h=5OS+#ClRB({1wfU;D~IkiBsx!2&WXa&|z?>%I)HJ z+>8i(D&eG@Jdc$tEuc4b@!mvPfa30Fq099LLIyYXHzQ+KK6;&b?95uvadVR^sD!fio z4Ev2QS;Swf+-{8TH?x6R(Y*vSXM555UC*Z0UL6cq`>e>_SzMnx6$rUg>)?N?KqikO zS)`Yl51L)>5}Fwp8(iwvKg`h!5<4#BMor@_G+4*qw^|@DH8M(O55UCfOaK6DSywtt zcT~31Pe3UF?6oByq+;($wp}N3txEn69qNQxizyY{WX)9jByMXKfa`TOjJ*!`2>xO&sh)o^m$qRqs(I^F(KfR@^Q|(=`{J6u zKSiCKAVQnZnKXj0W1?yr`ti)Ma!N|CW)U&ikQYx^`ZxI`4@B1YR6V3wqkL|3Pj#t z2?NLe?WybnzAn{uU@>Fr-<^daNow~+bV0fR&J;G6IDx2on7qRUI?u1?{E0ChDV+9* zU-mSgl3@t2#(mRi3rGJ}TFU2A^kna@ODZrFOLc!*Q3xD{f-dZHgWLBEn7Tk4Z#$mx z!{gYBcK=Zmq*$tzBgRXc-@iV%T7^=5pI(dRp6fJ(S!Khkx!!Ip+-q*T%{j9>t}bIc z48xP+o&HMMIcXz76}iKlP;iqwn_5uD)wq86oESVNbN;ySJoPt%i~KKwn^b<#XUqDnfwoX(ZlF&$eV-8vewNIl9Tpq=~ORzM1r^h+HQRjyeWd6 z3k1Nv#tCBP@2N+$RH0f2!;YGIJ1+80^9ssmAO}70#rIXzg!!h1Dm){uniY%^sR^7T zO);M)(%W60!#tvi8|)oS0i(!BoGmtAjdsuNr>Za8U#?D+yms=QHnm!#pS<>dw)^3O zNqe%E!^5lUX~ReL(H$p++{&(nu1|F%?kMf3QJqBz(kIUe7!r|;1=Fx?j^uVMaFK~* z?4R2H=?pxuFrWd_Ll!pbR+ zu~a8LO>-H-uCLi`9L(gtKI@vK-$ErzQ=}0+i$Ghrfen$Z3AyF^!u)$cv&6Ml=#^#c^o}`Mo-|kumu!W{O zrjL)nQ*mvUUJNr!`fk*FdfZF~5h^st|3FsB_EfOv_oa68>-ol?)v14Gb-?OkHMM?P zVkzha`xJ(SC7Y&nYmM;AT-d_#6uTiv%Hd8D@?y@kc!8?T*KEr}N;CwLsKd5aq)It| zxwe|6gUjONxoR*^Sy1ppfv-HT`mJS+uXZ`(<T=dtpabf1w+^dmGo7Z+i~YuB#@+rDuhkmDBl8ML z_S*->8RcL$+9YCLXEKyyvY9IXWQ$9ZG&@p+LzmxsdXAh_H53#SPH-j5^b3n>BpRF- ztj6l>JKcvbgK1lNLa}WFVutDr1K2gU1eLsnJ$9tj9RG*Tcx_fIg!8J|E6N{Y>tpe* z!7OWDb}@SS5qnau(=X)Yu55A|WL49Xzg1B5qn>^8^p3L=t& z=3T`=u!H&k3T43ft(b*f7cn?$=ihMn@VQnfI)AGbk_ZM2!g5@ax3sh81Yx_CNbUmc zE7MDPZCaWQ7O%Wdm4N+??||H7jrG6?LT8qYEwVO$~xymlQ;~|kT2#|Oe-i%!maMAKV^4jKK8ze*dI2s%3}uTK17}r` zH3+s@D7u-+?QVAzU)fwMaTdt7%v4ZtA!b;wPI=n~?`*-iH7#G0m`i9Jj+9b7Juug! zKNenlD_j8&^q?qT;((O_VS+VC0Ap0Tiv{fo@_B|I^wC6A=eb`S$LAdc%r=(lGGnYT zyu=#k*0DhCn!s}M^zk=Ld@4o3g^8G$Ebjsg-1dABrI*9COff`~9na&779wZ8U^sVa zs)OU)R@?np>Ms^!_~^3o$oY3%R0jmt=lc~I*(R!I_BgW9QkDYg0y)vU2#6Vnwf0T? z`PDYOwhh4in>XY3($L@T0-Wky!p;fZ4(G@A&9L~?{6$=Ea#WVvoo;rd=|#;PY`Deb zgk#?RNfU#mX?8>;i-3TN_gVlV_z*$#O9?*w5(VYSNFAdruf*pX8YhtlvzMw!ai$1s z#<1VHwVmwgsZM~h{UzG~G6YYQE0EHnxqnN8tIAd$?M9z}7Q%*4`5&&C2A z%CF@u^??e+;DLgk>ivC^cN|bU#Ob%8GGBWJlep zzqGnVFe*CF-ZX$lQxwUC^$&fq)V}(DD3UZCeQVA9vT~v9bn5i+vd`BdizKtsDa5RF zB@7r$wK`{_OkMN%gL|oVgMAMpug4@h;@7ry$$~0{$Y!tcvp&@OC@Oyyl2p&DqQIVU zI6WzlW7mz&HE59f5!^tDw0Vki(>9) zFHT0I+ABljrrAMcEsEK9%m&$SmjoQtSk1)(cx4vSu4v&`O8ZnA{tPy?ESbzP-~U7d zaO$AGKJLiK>IUtYQF0|LsigyKc(bP>J=WTWG43uKAWKvVpyQEKJP_{i12^=^z5p^GE8g zplbTpDjwnNJWeyvZpEVtEwYQozBZRp5ay=+n3`?$KNQA=^l{^l@sJlUGF9(*H&s46 zoqs@O-wF(5%)0BLRISSC$JIw7^({nL>T`4Z5lE(EX;`T|6YE#M^RS_R16BY$<(El4UD|+THMDti=$=rL{TP3F zU1`3I3>?ET@C7HnvuJvHy6i*MSQ{V}_6-4j1LvPjSEh9IIkF!ogfUfI@Sk}V&?4+V za4TPQT8{^Z4Ucx-&M5bi(U(`vP&woyj)&ekY!T?f7?S2?=yUbv_ z&A-4QCOZb#<^d_AY-Z{W;1&Ll*;A(D?y55g&@m;E8uU@?Y^bwn#!TSi>$N9i2m{&= zEK({s#~n?{HDY>Uh%TxP*A&oj`6=yK1oXc&Xs6~o$s0-3)L`3?A;kCo<(|8wys5Vy zrl!DaU@!JmPDuHNQIk|hcaK=BJK*#e^H7PSBl{B|d7jdN`hx3I1%tgX(bFHq-KhBf zRZ(T2%hKz)iDJybl-o)>eM?Jv0O;-4(`+bsNIZ4xyn|6-^Ma_jA6@Iw#=Utc zGm!QRmEjRod~h&5%p-yF6P0MCVc3iL*t?VKZ1Qape+1{!J#6?cguBO4=aqT5e`2?_ zd7utiURyX5jMoT>oCa6Q%8A`Hvce&Qyz-uV)&Qv5`{N zgU7Y3yc`iVq#)f!TrkQLGDaB?v?GoP+7IyEZRoRBDY9IMy2L+TeRj|FxGCyLj|w(E*u3x_;eDygzL5LlKSouaIXneJt@I0i~kaZBu87*yEi*oIgSy z;w*-NCotNZpxzl|L8Yo|gg5beV9UJk*cVIovgQwIy8Gtngv1AYNmgu{=GUSIB8rOJ zGW`pIAGOMH9PAD;Op`4hT}uQ30Lm*27S*a*GHYJF#rLyUhRGy*_5nah%hA0SE6#73 zZi!*C!3_{~>c<>Z{pb2<{#H~-+ZcYz)P2T+o>B4F%|dSb`?aOHod_F>x()fEDswMC z=G=_DJn{hdoo8OB#RRxyF5OM>ULCPD03Lt^!V7%oPL7m?T*om6%0PVH;2Fzlzgc2k z$Z5OfaafpeS{cySUTocJSw6YJNHV?M4;bB~f^#iFU_hH{kK~CF@P_ zqi-wAM8&MWSq)wE?t4UQzXAqJ1g0Jx%JRuiAb5ZGqVRXS-g(| z#DLfPZ~_&mN%bRK1H$SwaBZRD&d| z>8M5+7@J8|zcG#32t%*Om2bUq}F9b!{>~XCGE&9$Eh<4o>lbn|)CEPy`=VBf-yLDfk z2rePd0;TBrV4qQyym|7tGXMaA521iaw-x_JPwU?`iu}=`hoTN$eeD88yYX3OGeBf6Kp>1nO3N{vY%bR zg9@W=4)_W&aXN-o;sUZRV;$fc0xkP2m4!jCouG+XWU ze0aHk^P4&rc1y`vW)|+W(TgrzmcL{}MvkYCz_g%Z~+CNm#1YWNTj7Q*d@VG1*-FWaf1_uo3oI&LOfJo%Sq` zZ~eN;kSVxC&VvbDSl4mx{Mzn(zf|kL-7M@=imGzDHVzdivwg6i+x_9*sJCoE`F2Ay zV#}x9H6~2{DMd>q&wNo46QWz>gP^Z>Q@3DrF*4V8U;e=^3f}<0tL#gLpKOfdx17`9 zBSNHn3cnDvNPOfA=sFpr&ecW>AwOChO!}=Nx^?n(Rp+v&wbSS#_r6Qf246&QY%3p^`;bsO4$ea?_;Q*gb?RCltQVIOJW%H zHV`jEILSzI_QFVd8jS7+A1}78wY#)uff(GQ1`1Sfzi1FOTK)yxkuqMp!+)tUyO+70 zNE5=tm3{1VEMJeXkkdCDBhwiW$tv^F5qVZU4!-`GKn(@gzAkvn-~IkPjeLuH_iC=} zUUOuwuqt?6pAK_s)2t+&?j~#n3Ojw+sk&T_1m?0o^{{_&n7=S=Voe zbg#9Jb{S{7HBz5ecO-oCUUsDIRu~@H+F@6YRJ3t09bD&hDet=llC`9B*3ZGNVTC|e z1JFJjz+50TY`mt_i0vhE1xGIJZ|bH0yv|KbFqau`PfuR+A?*jxg`zaZ`L){HC?d}v z&Ll&JA94Qda=R}CTG>0w|v;NBYtwNHI{YQm#_AeFEdv5`t^%#Fy zzT+rF$K9KoUn$dk6ubHSS;x~3vqV{FhT=wIWL9h!->hZxm^GO-2%6FzRYw_gE|`GZ zMax+gyTKANJb@8s=r8KB)4%(keWpkF(=Vw@8;-7ukoeLR)?RMOw;|=#pr(rxC@cM|WyV|3@lOZ?q7QvNA z17XP04{{aBw`O8^lQg%#^;1Z@>DY?)V5H+)bV{I}%Kg!XA0mD{K^R;!qOl$oW%77u z>N!cRYan-~F!gLwxsg^E>N1?)OFJv;a&OqXCtp`DOTXXRv~bv{)NdPw3hNq+dZeGgQAl>%yt~4`aliewE4X z@)f*C^>fMao3DwKGrr&efiq)edE`ud=(FLcW~s7#%uxCNRQHx~QMGH_HX1eeb>R{XFmYhj095X04gEt`*mL{*Pl- zIV`*4&c`jxANus4J$#6U zOgwa=vK!|DL}-qFN1OOPhIT`L2J;$;*$Asc#HKLrCJLxy4-3UCM$7kJ?2MBozEYve z+)1oMSiCQo|9Lj{ctKQ9%8tbbt6lxt+YhyHSU0Lj68+9)Da%Ay*$pLGdB--#l{0ky z9TUlzfxaGtzRvdIJ&9|BYYtPMy++HRo33CE8;tJ6aN|_jCfbX&PLgG7tiW8c6K5gF zB>Es5Ga@o5p_jFDJlB2H(TWy?bu1#c@vG0{CRUalW58+*cA*&q)cQAJ9Iv18fXbS7Bek&Bx~-u)@I(D^4; zmA<`%iSuhMty~+7mjxztOpKmu?ASDdnzCQ|VZVh?6FBx%5J*-wn zsPQxC&)E zI}CvWf;Hsh3UC9ywCe{o*kOCf!?#~W%v~{Q=-V-K@@rMU;=B`DEjVDp*4o436}oW? zyS>ThWZ3X4rECiyiv*W2m;C*=_Vc%5vIx-T2y>MJ(z?1_?<^L?Rp|SAPg34knuK&9 z{g=DqwDAaaeMBW<{Gz?R1tvd+B}J?BK__eYKRg$%5Ukm@mq8(bJN*Y)HL2 z?##>RD8uI*ykEq`#51`isO$i&9`P`Nndc zljESlXE+2mR=NF#%j7izMk!LI%JPqxlS`R<#0VQ*!QS{j%Z^=*6LGN91to)kktmCExUK-(bFI_gUiLDD3In=qqz- z12rsQrfdShMWZ2XWy~6bh5XxdqQZ z@gU{Z&a6jk)!GrL!I7&)u6t9ONpC6}#etCEixha_@T0O|)nTjOkgV86p}dUdpd_zJ zi?_jmO8<}}S<}r)>6Poa-o+xzp*gGC`1ZtwV(~~GEF;wZYy&kFG1|dwuPPMvSc!(S z^tFJ<-UM7U{(*&XT^h4oL++5~hwmJqEvc4Aj{W)Sum0hQnf6Q52gdZ?M?Mw|$(%@k zO5a!L2!&~+jOi4Vl;sc+Hk@vrcBB^vSJPH~vwlR^p=mIW_!w0VmvEfchPA!k8hG!S zVe||Pe)&r+DqUVZH}GRI;4ONI+UC*s(3G^jt=(_{=}moJTW~d zxnh$GFeIpn#40Cl^_B;$lR@Jv^>zL6m7l5$Gc%KG%vA?yYXTG$pKfqQ?PiZLiT34| zRgR7-X{K+&7Zva_!jm2O1%9Vp21Vh4nw6CmqHEm)4M}hKKj4iSl4x9!x0 zdf9gHc~QE18Z92A`tZ=#8~4KAt4KiFRUlLKgL17ieN0@8bmceP-ZbS);`{Ay!KF-j z@ftcL^!s328Sviih3QGl?o*f7#zc&gEl5*SQMKDSdlYYMJ?0dQL-A|0;jC!&wNh@m z=C22xcFJE#rH>ONTy7KX^1X+H^hrt_7sb5g?N8aMeWpR!R_njZQN7VWrM)Rod9VP!+o%v>vuUa`trFI zvR|NQYq`kwNRuFmO$d@|pXzhFxE}Ql+U^WCP>^>LN>KIl*c{-cBD_1wK|LK#r=0C>N$NWWS4uWEN7Bh4GRYWEsj12VlG=yh zO`@`Rf@kQ{%gjVPK77(r_)oHq&jE3V&G+znDD*X{o7}&%RquXhtHRVYYYLD&l2_(t zmKc9*P>iv~-^}|a7`e`r<$4d68JRDIAy!hnryXdvRK2%#?wae0{3}u={)@RBdnihx z6viOZeyk|r@ZK)Q!P7r9UL0p{5y-54iHua6c~gpm3rgcNYOJi-uEdG9+X-}@+=j_< zXX@O(lblp6o;i|qpLeJOn1WcFrZP{5c2|K$0AhQ9z9h4cF9r)Um4*p1MgaFtF?uL0 zZeVf9Fi`d~=-+mOOBFv?ajIE>u%p1hXD1$oddjItTn@Q-CmvrpZSF79wyFm7{Ylh$ zQUOtnTuGy`atMJ(ne6UTQshX8gIDHQ*eA_}an9o$&sE_|YA=`qB#EhG>MXWAxgSj4u8$g(>E3@2oe3gh_&K1KA2c0C zzl)uQj>!*rM+j$^a9F^aC7=zPBp^y9?KAq%B-LKRs_1av3JYRSDXaoJ*FIC_iLQgi z4sXL5XVIbOvhAD0w`Pm=k~-FaSfpNE%I+fqdeLl~=2+pFIhH-kyMz^jN)*jojnm>% z~IO~Eb*9?kU$>zH&(1AKn zcf<2(s;=(FVe7*BFDuuzAkNMPp{f1(4peN5`Ff#0S*pJgHugnUIJ@uCy8yzbkIs`v z`u^g8U0m<56Kr8f0;3g?Z=nF)PSRizFpI}JzIhgsuwVcrbjr~(cq2$z)c~4}5PGri zKWR3$f2F8w!~Y{iRf;jO^opE3KQE7UtCH`jDrKG*kT1u%vF*`e(hVDyKQ%?2izfm@v_kW{oqIYH&G%i<2X)n^N>A>o*j0f@8 z{@`r10e>n|F^q0$@oTf!m8(Lzt?!;H7auBUR*H@7d(;HS>5%1>6mArP=K$nT9B3ub zQdCifxnWG`)|#mb${8@E`-OAm!rZ3JPW(ECz{?W>^Tq@O;4bNwJA!ib3R#@+im;){ zCjF*8{&KYw^(jRKX#*G>_uO58IYxMF=hrJzg-hhv#Nf0#^TbTd*in%^9keMVUp(QV zp{G|Yu)>L1r%9SWb>RM4i>?RSR0OS*BSptM8cgzU9>0Yvue5pM*leE|yH5xsmpd%c z3`Yk|6mp9@tgY(vUD{8vsi&QCtob`Owfs9aRpiX!*+P<~qHs1hjb$efvg7>zJMVlX z@!{{#RKY2$h)9q-S)M{4wjC}))U~&_Nh@UFPhv`!2Z>kmn;#7kn%e~+89FC6CeNs6O1HzD){D8_^4F<(hs~`9V$X!zX-^#Hz zuKY;ll6wz_;W{{uS0>=rP}W9^7gLy6xFLD)YaN@}Vg@Qybh*d}?foc z^7pTmtn(~dP$$0aEZ8Ai7ksX9cdXH;%$0n`_H61GVLPflxU!n-taxGGepgK+T8_}R z@!Xie=Lu`;5?3ZoP+-W89=IDA6d z%Ia$kau1IR8TxGfj^G5*1>bhj@&uf=x(;8TQjQBx!7a!J|T2cH+>K*C!7CIdgpWF6cN4mFz&F`G2Mmw(@%q^7_jaZc7gUdRD+ zE|{D&@|3aCln&Ixk*>jZ+-}5dYwREkl_Nyo>rENpt^!+p#eUG&uvcYp|=^JtVvHQ9c>8(J5<66ZdokGs2z{4Wl7A ztaVmchhOZlk%z~*^KsIuobFnR;c)iUJZi7Mz=fxjxQ;#PTP9(A2WvWCkr?UJjqXo< zL=rWlK`1c_53%{#VA6aHF;DM##>9QVZY4HI3Or z@?0fR+vOH9JnjjJ>+UnJ!B$dttql7WRCy=S(2qnR9Sm+ape_aVIT1t{jjKZj^^A;I4zBO(U=f|TL2?~bCvUrU(adB}o z6n>S%KYnIO8usRnPH8+pZC%?b>hG-D8~0EmVQb(r*O4Bocc0h1A0G4P>nBJA$$_Dr zn6s<9U{{PnO#)qt0^_3JA6n~nK050-cJbO%>v*9?Rq(xi;^HnGsLX&{ek}c*!(xmNnTkb5$P8{bxu(CY{T9pki$l(@exU=*LW@p5?%1g-M;$ChnJt=JGA z{RD)6R8^uo=Vz=p#yKJu!$$7zhVZGVFz-)SFHC${nfyL)NZ4-+!d+l)c(k)9t&;l7 zHp7RW#|Vv54`|#rUjHxQh5+6AYN-b6sdCf$mTLQ7EB{;m$%k$z4)X!QSiCBm;a@_~ zr;OEavY>7kArRemvVjlpZ?f(WaRB4h^?}bfz3YS8&L2AK-|z5h2=heXcW6TL{g1W$ zdHMhOl|6wL2NLAlxiT`T1Q(-Qh62uH|FhlDVF-|(B&Xb2i6cY7G+XeX;O#W?q$JNP zlFy)DL&3C&|5O?N-mHemFl{t264caLBJ2hEk>;ZgCGx|i1s2ma&z1v)>qRCD5&o~A ztA{;>KHTaMiW`=qd6l0Co7|~XxTRlccq1H~cOFg$B71o(op{UpOW{mFzOlSm%I)@$ z`fWwc%p9Qo0a&BrE>}$I|1x_07OV1+LhImoOJ9{HcFPIyBi`2*e4^3e-^{;zL1Td< ze^U%iEredE2ev`G>qD_LA$vf2dUd8eOFbz8VMu zosWe=TpEmYIV1|K*)Qsa#8l7|@#G{@dff`Fe_`{tED@zIvPvEGQUZ>jsHmmWt;o%7 zpiGr_=!q=)$?zjb9OG~=+GA#~{TGwz3X}n$*pgkEN0nQgq&T`Q7jS>~eqGEsRv;>O zAPXo<$wN|)Q#7(pDJP*XxnrLA zuBMjePZH!wva|M=`DZs$x&m*7x;tcD)h+i&um2%kd)h@P!F)c5{MxtK`p32&P8{bg zZb_oo4s?&a1Q;1@7$nGm81m#`M8PArpy0(Lw>bmgx=dns|JKH!m!_a}Pszjp1S8($ znX0!W1Ckxt$26cB^puWxl3=C`)bwBZzJ6uizOSYbJtUy){-EdKJeSPr6euccE^B|0 zpt^h__^)%t-^c#}3Jiff!i|TD@>W+)8CeM*R2xnU#=~Q!Ha2n!r+Yl=-r`RDo87ax z)K$!=#QZA2w|wtJLqn5?Us$j5v!wq&kP(cNy}6pOFcR?6kp06PVw=bR9%^;$7-dst zNQ^#@r?_eXee_urMK9pxrobxrs7iMq->xAu!iN!9gqNXmscgmc$GBFC0 z!jXiB+Yo$j@4n!C&uchs(vsacXG#Fp36m@-d2cdS?BdZjP4<6S;U&5uI@uOzyw*s^ zonsjry(aO2{(_A=mY}rcD%7$AKng^~O+QLQMjs)%1Nzkx>$vIz**iPN1d+_C(t}4| z<>XI*R%c>Ge%%2#oHTOUH8n%MBuCufXt7$g8yU(=u2>3*dtAHSiOFg@k^j{jhlW3C z-yTvO9Et08z@=Dyic9V|8WJA)%-%;J9&&8A!g%){cVBJNXWL(2C&GtsIrf&Z#NI_$4P2*>tuZey&}@TOl%a0i zM%B(NOc}rtsRq0Pi^axmU6@OZd5HIFyN1qQLx}SzqLPvsyOTbr9KQ2eTU&U-QS%O2 zM6$X63JL$c0j|*Vis-WPsFdH7<$k&-JPp5)X$?rtFUiEsj$w@s)qRY-hi;09)K=>m ztfQhSrpetN|9ZxwFq)=Ip7%}Uo7s#%Djg#uQvDY|7gK;hrZtQs0{1^BZUh1^HPfFQ zk@M5 z4d~c!b0cN`=g5HZVj^9lfbmlxVnDu|!Tpuh%|`>lnu>|x@j*I*pa@P@E-* zx+yF7r**0(%3;&LU(TbQGc%kdOW|CYj1m139O8zHy3o?AXA87bz+3wOrDFdrGl?Cq z@TAn*=796?ywe6yP7dcWv*bxF>ey~A4K^$g>nx!{Yc!l^U88Xe3i^lU0tBUN*lF16 z9ynj1!KBC{AnthEFV3>1R8WxK_4|y&p1|=jqN&yS$Ez18<=2U~(*eCIv-Y-XPk1MNKL{>pTL6F@a3KKir^GTM+ z@}6(L#&Hw_NVElE0}oa^w+l+L{MuH8;*E zyRolPKpRKa=Hm7gm~XDf=a9YX3Q3Xxvd!B-eZoEq=;#CvY5z*q*qx7@=^{TQ7i*TH z<#qJ~G}pBfSfbiYX2a{? zj%M)1(Cc&{#_Ksy+COx&f(W4uXr2;kFrnjNaNFq~W2H%axa;;%#6y0`nh10%+Mq`m zX1?D;oPpNKP<>bR(A$IgYA3L_v3q(B@$+!E;!gt|AIlT5YvS2UXG$CNQh3GK)xUYhHM$MDy7m%FS~wnV(PncV2A)Lr0U3irpS^SIBQQttaP*q5yHjVhmn(L5yK(M*;2bESwV?mPf} zeV)(vL9CtX@@68~#~}gWJlw!zfyLjBi6afR6Hkqg z76+sXS(4k_<1VXN>!nwtE7#^TW9&jc7VSi{Jc>h5m}grYfgb_EdAXHUuk5~lO|;8N z2bqUvZc=ybgXfC!63p^!BV?EJv9T8$WbBr6!T%!(e28f8G9r5{r>H7gdcUqU-b9@y zx^x8eOn6xB?@V!tSCxATGXaC(=s`;JHSR_LU_8waQC)5daZsGtX55X&em|IOxjkG? zIMA!EPWf0vZ?Y}s&Y0BGmpl>8J5}djz!-fA<7!g!c%{MVvQYn_EQWJi-XE#a((~BPyl%PK*mBNi|tvDCIASP8B1aX zi+H$xMsq8lUF=Vy>#qSK%eOj#<~=$-d0sJ!VR0#GBL zl{U&SqU6tpm$8h%9-sMpKtJ#BsXN$`-@8X79_fr2;zDmS-myvjm?+n_sZdmycR5$W zVnVQA&P3Ve{YJazTThFmjQ+mTaTzI|?e)8f+V;LHQ##GLqejponf>C+TKl=(V>AX= zMWgTX(Q%cQTDK|-72D)Miwc|3IeKIaAIWg8L%ao@RsW8T)9wywrostFBK{02bo0?% z0Npq2bW?H|AQtjMc9S^WntKB}_2gbMA!qZfu~b`7Fv1B5bq;GSx_Xs>G_x;=ILU)w z{RVD0!zibK;8eEMM6+N#Q#d}moEt<;^otlw{eY)Aa~DHT5Iieb2HS z>9&mBbl!D%XKH&eB8He_U`N4xMWv4jJ8gr)-BR^w0n$&tcz%&9 zJgF(RB)1le@poWwaQ5xxeLJ#Rk>hX~G*lW7!1Z60(!Ih^BtF*J0sp8Ki~@RnhZT21 zP4dztiaOe`sFC;iQOydtdCn3^4-u+lgUu1^rAX|K_|xm{Us|!<;s=?IFW_w3$1}IFv>3YnY74fb3NGIG6D_jRc@E_;+v5ESW>G z3nSy=D}fjbZb5k{nyIQPCD64KD=Lv+Qq}-ulh>=Pe|h>@f%y8#3%yrvjT`jcn?1#g z_kMoIa0NfgT!k{~z)>pnyR~{nD?at20@zW-=Q`N-UC8M1m#=MD4nk-JWR1}=C z3#u1soXUV1zvJLj>4M;$fON6AKS@RvnI(K}ph66^-&Z!XLpcZ$G{Hi--((41-4U*W ztgYO4x~r2Ta{^A&m(>PdC-LxP2v~6oP4J_V3!Pwh+m_s3@kP|!%MU<9(P-*OUh1LVMZ4@LaghG2l_Q*f@^s znq0N%1jYSw{>3)81-ZaVRt@NTa0$+OYw80pTNAk%v*84d=r1e)r&-p=v zX|j_*S23PAA9lvBa1ztfFm_CU-g4Oq6`QztwI79L7mU&11Y3k5uc}(KV|TmCnv2ps zRb4on&l6&kdz~;^sp~AYgy&0mPRJDLH+*eOX7RW{Uj_6*V}y8Zu5?m{8UWNhmyjgz zu@`}#==!cBXDIfx#tN<4Eo594eQbEb^$ac)k2_{eTPdTN_Y_Fy(_AHY0_ps~d$Rl( zAq1A2=OjRL^U5=AO<_o`$oLl8V*C*@9;-KaSIu^N1;5R>4Nyaj2|FLA zhO&m$Y7_%bMp`()#F_9hJSAUKH?7D;SZ~y)lbU2_l=X{JRN<94w!8pqXXhK)$%A`S ztDngYzS0MPj8pdU8Tpv+&B=PDv8?{nv6MF(7Nz$CU&O7-bDGy9c`JF!JiK zFd%FUWE2qzmLBPb_;K-fk{)9u=Ta>9)8hAEN5w~3B|s+qMfx;Y9ldpdp3n?|Wpg@S zdK#e6J_fp?;ZyLUgXUm!vdzL}!ydfWt&4v1VN>$$Ve+NZkkjBPS80I>9@d*5gw~gEzTz^B86)VIA5wi>^j^atp{dd0a|{xkf4;Wc^38oRDEO|{ z;gangWP@w_7CiQ~=6OPjdSOUcQqtHv-ADbcaRspfBioL(moU|JoGR}LWXh5QrCXYeg;XeA) z{%hp~-yhR&{j~{?WK{0jCn~bv%zNu^2^Ulm9H6VH=VT8zw0BdY63>y7^gUE9?E7@! z`#OxY#2UzdcZE!DtaHljG0MlGw}k19ZjMaCeK-;T+ZBwgaCXW9^6KXpvuL^&e{7Qs@)w~Tw^}XrBsJ$u}85&iZXZ?DH zy^$sh+5rNIs@L+JijOkGB(n={RO4^93moUUAN(($$^t-6D*QVS_kKd2D>#qbNLL2Gt?ucB9HKOhZYf zZj+Yr?BJ4{mW&4gb((n#YWRz9hLD_17ddwss`vNVs}gI&0c*u(VXj8bVdLRLA)_M3 z0R%lW^LVjJZR1<7Tla;8ssqmKXK5LHvO*=md}Ec>J5wmU`_m}t6R4m-7{TTsmgp-> z#V$+V>(TC-_SY=v3Var3lXUDml5j_MJyWNX{XHa%LA}8Dnc%Am`*UjzDLPTU)h;R28ZvtQ zlKPiegz1-yyTj|YjW+L%welD^tuGiC&_wJwoK9L)bFp{C;@8NyL&*3=9P63-6x&@4 zli$io^=e`f8J}sKCY2g*7-RAo2f*%#{u=n0LJB+`!#}V?s^j%ezS4j7WG!-4| zp!m%d^CA!Qf+I0$GE|f*i3{<{`qboBX;SV&iG@V6Z6yx@_m1?V-_87Bi}EIVrZyM* z0+(E2N9XB2hmB~VHD6+omc=3LCcPN(W9-cgdvj??5|@N8&5&>nSI_eX(Ip6ksNi!m z*EvI$IChR?-;(}LWQQ7(kqo)u0!MRW zznc)je39avT*OfVbbD z(_KVOZAg`PP4#)t|AlQ#+}WIeDh^2+!g#CiJ_cB}KQ8?Q@xiE2zTt{=#IF}=d^CC+ z9BWF6Ap7OU{}?o$)o|-8OYQ5nuWO3jcJaFB)AG6BYAH=aTL5?=Fb}Mw}XkJpMp%prmppUM^~u9kdRkCjBc@BOvbB&3n8{RZj z(hf6~p+B>qi&8rktagW7GD?6ng&JU-oPg(4fxMtuX`N7Su&jID1CiQpR-#wX#`(7CA$5?7f=E^b6Tm%39T zlVh)e;HW(UbYknasykca;cra~`g z>q@breaA}G(L?u`h5L2;)qZkGXgh`@jIUsbVmXHQ(X)a@79sB2gR9^Wy>GcS@4{hQ;R99WP*i3IHwtcNR%D~#?0ngJYXD;cRbuMSKGY$sLPd}jrTwgZ{_OmDNDl5M!;2SYuM(yJqp;BL%MFs-3N)UJXV4i>FUGC07o z-iw@Hka<-uDTwFtj@)=0ydvK^F)9@`LD=068UBc;9v;^T)m1WWBt_7WldRrlu$2Ni zK_VtHLpYwGVuVNYqFG9bK?}@^*q#Yq@kI<(ePi7;rLzud92LtG!;?69b8{A$e%A6Kcrkt1k2Y7=v>DJ)Yl=G&W04+wDBHYn^l7q5O$LfmA%8-_$@?43EzFcZ*n{LiWTLu3*sbw zg?|;RhEAapK{rpac<*Tgh5jv$TzDee_yyd%*GaWQ-`T%}$I-rKi1#ElojC(%G1;t$ z8nkK4c_Lp-&l-ZsF%wD0p~d5N+CL+s$NJsT6lx zzwGzDkozZwzwPE2jzc+4n^>5Pt92Q*p;NLBs@oxkg5+{`r`|*gzejED!yi(RoA5~> znp8+d44|L<{MAyIE3?I{xArk207(jbsGEw0lg}ytq94tbOcLzCN?YgA1UZ1!)LkiZ zTrYKg6>0^cq8>uo)%rz4BArVM_a+9!2#KuQg!Q;Swc(u%W_OKUYRV!q9y!Oa{@6i6 zcku-d>m>@Bze24jEkCY|=cj#dnWn_hCWc z9ub0u?;%61hso-*N&dCHK7f6K8d{n&mp{oSQiH>HT>Rzl!?`ZNAF_zi^URQ%bC5#fhz-(l^CCrYjj z&Rl_tQkiStX*C)Iv2OkqwC0g`70#gqIn`x0i=ACHS{P2cD(tK_dKc=+9C^VG6%yDm zH{IzqtC}xfph>cnZ^_2t>g=BK(rr4D} z`bI7Mg+@H1-^gvRSb+i6P~<+0AI(>(_^;5dhv3E#Ja1GU#o8mT^T??-x`=&U$DhxZ zJDXg$NyO#dxI9V@!=N=eZ!c;LA>1FBX6-46T?dCSE~BMknK+Mu7Cx$#YKIBN+#ZAG ziG&&2(H@HwWsXU`nfqD#tMJ!v>$C}px;C}$P8@6_2L?>Y!9-ew=*+$s<*nGtZMtFIrnDbb5;|_@ z8HRv!r{>o8kUAq?`5sgo{##53L?A^#PGDhA^K{0TWl`wlmeCKuqV+iF*`oSv^^m-wETf(7N z_bmA4r8iY2?KcZ$4_t9oX}xBQs!vsF$W4uB;WtjFenjZ+MqPUaADS;(5eNG!eBiQN z`(;SW7Vb7ozN%VMrR1}R+22|=x$pCK7Ors}$6mVKFTn8nmvbZ7^P#zKh?wODnaqv? zPhaG(1GT|k|5*MJyU{O+RdV_!WK}nGp4E=2k@WXDm51l6JdZeDzbm5Z3;zJ$E7Fs* zm^k?%X*Zek``xmnl0=`#m>R~Mgch1s6UBbyZe_N zbp?OZkhkiH;wO3Th((!3{`&KkCnX*vSwQEw?z?(GmzXS1nalOnJlgKz^6O3^$M$!t zRb|iGpe8HFwC*t}~Ax-ta+1@*uq6J1Pn4TwNExXSNr-h0tH?KMzgEgo(j(9Pke9aR0hfgl=Ia!up66TxGJ1 zs`7pYY%H>kCkYey;|IUzVY1igWL!n|OM^Jf`v-ck5r%E{Cj$5376t7CKT^-beRT#~ zj`4NtR+#f2?7^tOyt9fZy)WNP#LjCqR7bGTu4?jwo@LV1^|y?hUl5$VqKP8aSPITn z^k=V_pfHxe22l1lZw%jdPrrd``XH2wHQqqGt`^L*A{l{(zd#B7!4m;^Cm&286b32u zhjcoOPcw)#VJ;aJzWy;3|9DlK^p!MQa5~}oZkI&m+mcjxUE%V9|6YJ60yex?g$m5_ zZVSrfXV+Cw?smW5f35*ootIZ2pNN_FQX=}IGCoIzCZx$iD)_;elVQo-YS}GqlmxNe zL1tmDOte*scMi1Bw8V14pUuxHVR5M9b~kFnOPgTwNrUw9uW$VCuTO;p6KU#w$AEQ{ z;Z!@&EUfT_vbcro5$T-lctU!TiGpT*Sx8I9VDKU@PSaKKXKnCU|Lmb+gG19B&070i zG_QfwO6lfgE^!ZX=%6E5ZOo_b@$aPr|Bx!dh!&u-f52rf$P{R%1V~NSM!P;|jm4)b zLg`5j(M&E-M#xKLncwM8U@5Tbr6UR}Wn5L`;5LxlWn|91C$K5eX5#thavvWNqHQS+ z2YU5(QvHI*$-}v`K^(gibV|VFNI_v-_}$3(yR0hCmkhtBbJtMhLI2pE&t6H3!-&=+ z>;P4t)Z2Th>ieO&24ZQOjrmd#zXoOaE}M?b7^aS*Ep6`nQE;T*mAA0*n}TI`^e#2j_N=inBG%8N2FQydUZ7 z4rT1d6_mD3d>OTF;O&(6e37}UwnX+-4!+QqNDuLxR_*Nc?vW-~5(oVrp8vT!L>88T z-z?xDk4pRsDMi$7aum=+Gj;>5(%q8JXO<4d+8j z+a)Df&7}Wx6aa%b