From e7a206b98d1d0c329259c778a7cd23d2a4481f89 Mon Sep 17 00:00:00 2001 From: Raymond Huang <103474329+Raymondlol@users.noreply.github.com> Date: Sun, 1 Nov 2026 14:06:07 -0500 Subject: [PATCH 1/2] A100 fp32 deviation explained: the host CPU builds a different graph MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The A100-SXM4-40GB "TF32-level" deviation in the canaries (1.32e-2 max rel RMS vs the RTX 5090) is not GPU precision. The official code builds the grid<->mesh graphs with NumPy on the host CPU from float32 lat/lon, and NumPy's math code path (picked from the CPU) changes last bits and with them 13 of 1.6M grid->mesh edges and 517 mesh->grid triangles. Modal's A100-40GB hosts are AVX2-only; the RTX 5090 desktop and Modal's A100-80GB and T4 hosts are AVX-512. The earlier "autotune pick" reading was wrong: Modal had served every matching "A100-40GB" repeat on 80GB machines. Evidence (docs/results/a100_host_graph/): pre-optimisation HLO differs only in the edge-feature constant; XLA/TF32 knobs change nothing; the error sits on the changed edges; graph swaps in both directions; and on one A100-80GB, forcing NumPy's AVX2 path reproduces the 40GB graph (same hash), moves the output by exactly 1.32e-2 and matches the A100-40GB at 1.7e-5. - canary_run.py records graph hashes and NumPy SIMD targets, --edges runs on another machine's graph, --steps 0 skips the rollout - scripts/graph_edges.py: count/hash/save the host-built graphs (CPU only) - cloud/modal_a100_tf32.py, cloud/modal_graph_hosts.py: the probes - validation.md §4 A100 note, table, Limitations; AGENTS.md gotcha Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 14 +- CHANGELOG.md | 10 ++ cloud/canary_run.py | 70 +++++++--- cloud/modal_a100_tf32.py | 123 ++++++++++++++++++ cloud/modal_graph_hosts.py | 86 ++++++++++++ .../a100_host_graph/cross_card_fp32.txt | 102 +++++++++++++++ .../a100_host_graph/differing_edges.txt | 18 +++ .../errmap_a100_40gb_vs_rtx5090.png | Bin 0 -> 352033 bytes .../graphhosts01/a100_80_graph.json | 48 +++++++ .../graphhosts01/a100_graph.json | 48 +++++++ .../graphhosts01/a10g_graph.json | 47 +++++++ .../graphhosts01/t4_graph.json | 48 +++++++ .../local_rtx5090/graph_numpy_avx512.json | 37 ++++++ .../local_rtx5090/graph_numpy_baseline.json | 33 +++++ .../local_rtx5090/graph_numpy_x86_v3.json | 35 +++++ .../local_rtx5090/numpy_code_paths.txt | 14 ++ .../local_rtx5090/step_a100_40gb_graph.json | 36 +++++ .../local_rtx5090/step_a100_40gb_graph.log | 13 ++ .../step_numpy_avx2_a100_40gb_graph.json | 34 +++++ .../step_numpy_avx2_a100_40gb_graph.log | 13 ++ .../step_numpy_avx2_own_graph.json | 34 +++++ .../step_numpy_avx2_own_graph.log | 13 ++ .../local_rtx5090/step_numpy_baseline.json | 17 +++ .../local_rtx5090/step_numpy_baseline.log | 12 ++ .../local_rtx5090/step_own_graph.json | 18 +++ .../local_rtx5090/step_own_graph.log | 12 ++ .../local_rtx5090/step_own_graph_loaded.json | 36 +++++ .../local_rtx5090/step_own_graph_loaded.log | 13 ++ .../tf32probe01/a100_40_at0.json | 18 +++ .../tf32probe01/a100_40_at0.log | 12 ++ .../tf32probe01/a100_40_base.json | 18 +++ .../tf32probe01/a100_40_base.log | 12 ++ .../tf32probe01/a100_40_notritongemm.json | 18 +++ .../tf32probe01/a100_40_notritongemm.log | 11 ++ .../tf32probe01/a100_40_summary.json | 80 ++++++++++++ .../tf32probe01/a100_40_tf32off.json | 17 +++ .../tf32probe01/a100_40_tf32off.log | 12 ++ .../tf32probe01/a100_80_base.json | 18 +++ .../tf32probe01/a100_80_base.log | 11 ++ .../tf32probe01/a100_80_summary.json | 24 ++++ ...hlo_before_optimizations_40gb_vs_80gb.diff | 14 ++ .../tf32probe02/a100_40_edges5090.json | 34 +++++ .../tf32probe02/a100_40_edges5090.log | 13 ++ .../tf32probe02/a100_40_graph.json | 35 +++++ .../tf32probe02/a100_40_summary.json | 75 +++++++++++ .../tf32probe03/a100_80_numpy_avx2.json | 34 +++++ .../tf32probe03/a100_80_numpy_avx2.log | 12 ++ .../tf32probe03/a100_80_summary.json | 40 ++++++ docs/validation.md | 81 ++++++++++-- scripts/graph_edges.py | 86 ++++++++++++ 50 files changed, 1622 insertions(+), 37 deletions(-) create mode 100644 cloud/modal_a100_tf32.py create mode 100644 cloud/modal_graph_hosts.py create mode 100644 docs/results/a100_host_graph/cross_card_fp32.txt create mode 100644 docs/results/a100_host_graph/differing_edges.txt create mode 100644 docs/results/a100_host_graph/errmap_a100_40gb_vs_rtx5090.png create mode 100644 docs/results/a100_host_graph/graphhosts01/a100_80_graph.json create mode 100644 docs/results/a100_host_graph/graphhosts01/a100_graph.json create mode 100644 docs/results/a100_host_graph/graphhosts01/a10g_graph.json create mode 100644 docs/results/a100_host_graph/graphhosts01/t4_graph.json create mode 100644 docs/results/a100_host_graph/local_rtx5090/graph_numpy_avx512.json create mode 100644 docs/results/a100_host_graph/local_rtx5090/graph_numpy_baseline.json create mode 100644 docs/results/a100_host_graph/local_rtx5090/graph_numpy_x86_v3.json create mode 100644 docs/results/a100_host_graph/local_rtx5090/numpy_code_paths.txt create mode 100644 docs/results/a100_host_graph/local_rtx5090/step_a100_40gb_graph.json create mode 100644 docs/results/a100_host_graph/local_rtx5090/step_a100_40gb_graph.log create mode 100644 docs/results/a100_host_graph/local_rtx5090/step_numpy_avx2_a100_40gb_graph.json create mode 100644 docs/results/a100_host_graph/local_rtx5090/step_numpy_avx2_a100_40gb_graph.log create mode 100644 docs/results/a100_host_graph/local_rtx5090/step_numpy_avx2_own_graph.json create mode 100644 docs/results/a100_host_graph/local_rtx5090/step_numpy_avx2_own_graph.log create mode 100644 docs/results/a100_host_graph/local_rtx5090/step_numpy_baseline.json create mode 100644 docs/results/a100_host_graph/local_rtx5090/step_numpy_baseline.log create mode 100644 docs/results/a100_host_graph/local_rtx5090/step_own_graph.json create mode 100644 docs/results/a100_host_graph/local_rtx5090/step_own_graph.log create mode 100644 docs/results/a100_host_graph/local_rtx5090/step_own_graph_loaded.json create mode 100644 docs/results/a100_host_graph/local_rtx5090/step_own_graph_loaded.log create mode 100644 docs/results/a100_host_graph/tf32probe01/a100_40_at0.json create mode 100644 docs/results/a100_host_graph/tf32probe01/a100_40_at0.log create mode 100644 docs/results/a100_host_graph/tf32probe01/a100_40_base.json create mode 100644 docs/results/a100_host_graph/tf32probe01/a100_40_base.log create mode 100644 docs/results/a100_host_graph/tf32probe01/a100_40_notritongemm.json create mode 100644 docs/results/a100_host_graph/tf32probe01/a100_40_notritongemm.log create mode 100644 docs/results/a100_host_graph/tf32probe01/a100_40_summary.json create mode 100644 docs/results/a100_host_graph/tf32probe01/a100_40_tf32off.json create mode 100644 docs/results/a100_host_graph/tf32probe01/a100_40_tf32off.log create mode 100644 docs/results/a100_host_graph/tf32probe01/a100_80_base.json create mode 100644 docs/results/a100_host_graph/tf32probe01/a100_80_base.log create mode 100644 docs/results/a100_host_graph/tf32probe01/a100_80_summary.json create mode 100644 docs/results/a100_host_graph/tf32probe01/hlo_before_optimizations_40gb_vs_80gb.diff create mode 100644 docs/results/a100_host_graph/tf32probe02/a100_40_edges5090.json create mode 100644 docs/results/a100_host_graph/tf32probe02/a100_40_edges5090.log create mode 100644 docs/results/a100_host_graph/tf32probe02/a100_40_graph.json create mode 100644 docs/results/a100_host_graph/tf32probe02/a100_40_summary.json create mode 100644 docs/results/a100_host_graph/tf32probe03/a100_80_numpy_avx2.json create mode 100644 docs/results/a100_host_graph/tf32probe03/a100_80_numpy_avx2.log create mode 100644 docs/results/a100_host_graph/tf32probe03/a100_80_summary.json create mode 100644 scripts/graph_edges.py diff --git a/AGENTS.md b/AGENTS.md index 2698812..f21c0ef 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -106,9 +106,17 @@ below the ensemble member-to-member spread (docs/validation.md). (zero precipitation, land-filled SST), so rounding-level forward differences flip signs. Between two runs of the same comparison (official vs XLA-autodiff path, H200, `highest`) the gradient difference went from 1.1e-3 to 4.3e-3. Judge implementations with the smooth `--loss linear`. -- **XLA autotuning is timing-based**: kernel picks (and last bits) differ between runs; once, an - A100 fp32 run deviated at TF32 level (1 of 6, not reproduced). Use `--autotune-cache` for - reproducible runs and `--no-autotune` for strict fp32. +- **XLA autotuning is timing-based**: kernel picks (and last bits) differ between runs. Use + `--autotune-cache` for reproducible runs. +- **The grid↔mesh graphs depend on the host CPU** (official code): they are built with NumPy from + float32 lat/lon at trace time, and NumPy's math code path, picked from the host CPU (AVX-512, + AVX2, baseline), changes last bits and with them which grid points near the ball-query radius + get an edge. An AVX2 host + (Modal's A100-40GB) and an AVX-512 host differ in 13 of 1.6M grid→mesh edges and 517 mesh→grid + triangles: 1.3e-2 max rel RMS at `highest`, which looks like TF32 and is not. Before reading a + cross-machine fp32 difference as GPU numerics, compare the graph hashes in `cloud/canary_run.py`'s + JSON (or `scripts/graph_edges.py`); `--edges` pins a graph. Modal may serve "A100-40GB" requests + on 80GB cards: check `device`. - **In-place block updates** need the new block wrapped in `optimization_barrier` before the `dynamic_update_slice`, or XLA fuses the read into the update and copies the whole buffer. - **Transformer layers as a loop** (`hk.scan` + `hk.switch`) avoid XLA heap fragmentation diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ad627b..8c72b20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Changelog +## Unreleased + +- The A100 fp32 deviation in the canaries (1.3e-2 max rel RMS vs the RTX 5090) is explained, and + it is not GPU precision. The official code builds its grid↔mesh graphs with NumPy on the host + CPU, and Modal's A100-40GB hosts (AVX2 only) build a slightly different graph than AVX-512 + hosts. `cloud/canary_run.py` records the graph hashes and NumPy's SIMD targets, runs on + another machine's graph with `--edges`, and skips the rollout with `--steps 0`. New + `scripts/graph_edges.py` counts and saves the graphs on the CPU; new `cloud/modal_a100_tf32.py` + and `cloud/modal_graph_hosts.py` are the probes. Validation: docs/validation.md §4, A100 note. + ## 0.2.0 — 2026-11-01 Fine-tuning (experimental), IFS open-data mirror fallback, Intel Arc. Inference is unchanged: diff --git a/cloud/canary_run.py b/cloud/canary_run.py index 2786d91..3b689cf 100644 --- a/cloud/canary_run.py +++ b/cloud/canary_run.py @@ -6,12 +6,20 @@ 1. one step at precision "highest", saved on every 4th grid point (--npz) for cross-GPU comparison (scripts/compare_npz.py); - 2. an N-step rollout at default precision: per-step wall time, finite check, pool peak. + 2. an N-step rollout at default precision: per-step wall time, finite check, pool peak + (--steps 0 skips it, e.g. for precision probes). + +The JSON also records the grid<->mesh graphs (edge count and hash) and NumPy's SIMD targets: +the official code builds the graphs on the host CPU, and the grid->mesh edge set depends on +NumPy's code path there (docs/validation.md §4, A100 note). Compare fp32 outputs across machines +only when the graph hashes match, or pass --edges (indices saved by scripts/graph_edges.py +--save-edges on another machine) to run on that machine's graphs. python cloud/canary_run.py --data SAMPLE.nc --json out.json [--npz out.npz] [--steps 4] """ import argparse import dataclasses +import hashlib import json import os import time @@ -24,6 +32,7 @@ p.add_argument("--npz", default="") p.add_argument("--steps", type=int, default=4) p.add_argument("--label", default="") +p.add_argument("--edges", default="", help="grid<->mesh edge indices from scripts/graph_edges.py --save-edges") args = p.parse_args() res = dict(label=args.label, env={k: v for k, v in os.environ.items() if k.startswith(("XLA_", "JAX_"))}, ok=False) @@ -34,8 +43,25 @@ import xarray import faster_weathernext from faster_weathernext import model, patch + from numpy._core._multiarray_umath import __cpu_dispatch__, __cpu_features__ from weathernext.utils import data_utils + from weathernext.utils import points_mesh_gnn + + res.update(cpu=next((l.split(":", 1)[1].strip() for l in open("/proc/cpuinfo") if l.startswith("model name")), ""), + numpy=np.__version__, numpy_simd=[f for f in __cpu_dispatch__ if __cpu_features__.get(f)], graphs={}) + get_edge_indices = points_mesh_gnn.PointsMeshTypedGraphGNN._get_edge_indices + + saved = dict(np.load(args.edges)) if args.edges else None + + def record_edges(self, *a): + name = self._connectivity_type.name + edges = ((saved[f"{name}_points"].astype(int), saved[f"{name}_mesh"].astype(int)) if saved + else get_edge_indices(self, *a)) + res["graphs"][name] = dict(n_edges=int(len(edges[0])), sha1=hashlib.sha1( + np.stack(edges).astype(np.int64).tobytes()).hexdigest()[:16], loaded=bool(saved)) + return edges + points_mesh_gnn.PointsMeshTypedGraphGNN._get_edge_indices = record_edges faster_weathernext.enable() G = 2**30 dev = jax.devices()[0] @@ -43,7 +69,7 @@ compute_capability=getattr(dev, "compute_capability", ""), attention=patch.attention_impl(), pool_gib=(dev.memory_stats() or {}).get("bytes_limit", 0) / G) print(f"{dev.device_kind} cc={res['compute_capability']} attention={res['attention']} " - f"pool {res['pool_gib']:.2f} GiB", flush=True) + f"pool {res['pool_gib']:.2f} GiB; host {res['cpu']}, NumPy SIMD {res['numpy_simd']}", flush=True) task, forward = model.build("WeatherNextCyclones") params = model.load_params("WeatherNextCyclones", 1, args.weights_dir) ds = xarray.load_dataset(args.data) @@ -67,27 +93,29 @@ print(f"highest-precision step saved ({len(fields)} fields) in {res['highest_first_call_s']:.0f}s", flush=True) del pred - lead = pd.to_timedelta(np.arange(1, args.steps + 1) * 6, unit="h") - tvars = {} - for v, da in targets1.data_vars.items(): - shape = list(da.shape) - shape[da.dims.index("time")] = args.steps - tvars[v] = (da.dims, np.broadcast_to(np.float32(np.nan), shape)) - targets = xarray.Dataset(tvars, coords={**{k: c for k, c in targets1.coords.items() if k != "time"}, "time": lead}) - init = pd.Timestamp(ds["datetime"].values[0, 1]).to_pydatetime() - fds = xarray.Dataset(coords=dict(time=lead, lon=ds.lon, datetime=(("batch", "time"), np.array( - [[init + td for td in lead.to_pytimedelta()]], dtype="datetime64[ns]")))) - data_utils.add_derived_vars(fds) - forcings = fds[list(task.forcing_variables)].drop_vars("datetime") - forcings = forcings.astype({v: forcings1[v].dtype for v in forcings1.data_vars}) res["step_s"], res["finite"] = [], [] - t0 = time.time() - for pred in model.rollout(forward, params, jax.random.PRNGKey(0), inputs, targets, forcings): - msl = np.asarray(pred["mean_sea_level_pressure"]) - res["step_s"].append(time.time() - t0) - res["finite"].append(bool(np.isfinite(msl).all())) - print(f" step {len(res['step_s'])}: {res['step_s'][-1]:.1f}s msl min {np.nanmin(msl) / 100:.1f} hPa", flush=True) + if args.steps > 0: + lead = pd.to_timedelta(np.arange(1, args.steps + 1) * 6, unit="h") + tvars = {} + for v, da in targets1.data_vars.items(): + shape = list(da.shape) + shape[da.dims.index("time")] = args.steps + tvars[v] = (da.dims, np.broadcast_to(np.float32(np.nan), shape)) + targets = xarray.Dataset(tvars, coords={**{k: c for k, c in targets1.coords.items() if k != "time"}, "time": lead}) + init = pd.Timestamp(ds["datetime"].values[0, 1]).to_pydatetime() + fds = xarray.Dataset(coords=dict(time=lead, lon=ds.lon, datetime=(("batch", "time"), np.array( + [[init + td for td in lead.to_pytimedelta()]], dtype="datetime64[ns]")))) + data_utils.add_derived_vars(fds) + forcings = fds[list(task.forcing_variables)].drop_vars("datetime") + forcings = forcings.astype({v: forcings1[v].dtype for v in forcings1.data_vars}) t0 = time.time() + for pred in model.rollout(forward, params, jax.random.PRNGKey(0), inputs, targets, forcings): + msl = np.asarray(pred["mean_sea_level_pressure"]) + res["step_s"].append(time.time() - t0) + res["finite"].append(bool(np.isfinite(msl).all())) + print(f" step {len(res['step_s'])}: {res['step_s'][-1]:.1f}s msl min {np.nanmin(msl) / 100:.1f} hPa", flush=True) + t0 = time.time() + print(f"graphs: {res['graphs']}", flush=True) res["peak_gib"] = (dev.memory_stats() or {}).get("peak_bytes_in_use", 0) / G res["ok"] = all(res["finite"]) print(f"peak {res['peak_gib']:.2f} GiB of pool {res['pool_gib']:.2f} GiB; ok={res['ok']}", flush=True) diff --git a/cloud/modal_a100_tf32.py b/cloud/modal_a100_tf32.py new file mode 100644 index 0000000..afd8ab4 --- /dev/null +++ b/cloud/modal_a100_tf32.py @@ -0,0 +1,123 @@ +"""A100 fp32 probe: why does the canary's "highest" step land at TF32 level on A100-SXM4-40GB? + +Runs the canary's fp32 step (cloud/canary_run.py --steps 0) in fresh processes with different +XLA settings on an A100-40GB and an A100-80GB. The base run on each card also dumps the autotune +picks, the HLO, the thunk sequence and XLA's device description. Compare each .npz with an +RTX 5090 run of the same code (scripts/compare_npz.py). The "graph" step saves the host's +grid<->mesh graphs and "edges5090" runs the step on the RTX 5090's graphs instead (the cause: +see docs/validation.md §4, A100 note). + + modal run --detach cloud/modal_a100_tf32.py --tag tf32probe01 + modal run --detach cloud/modal_a100_tf32.py --tag tf32probe02 --v40 graph,edges5090 --v80 "" + modal run --detach cloud/modal_a100_tf32.py --tag tf32probe03 --v40 "" --v80 numpy_avx2 + modal volume get fwn-canary results/tf32probe01 ./tf32probe01 + modal app stop -y # detached apps can linger after finishing + +Cost (2026 prices): about $1 (A100-40GB ~18 min at ~$2.10/h, A100-80GB ~6 min at ~$2.50/h). +""" +import os +import subprocess +import time + +import modal + +REPO = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +DATA = "source-hres_forecast_init-2024-10-07 00:00:00_res-0.25_levels-13_steps-01.nc" + +app = modal.App("fwn-a100-tf32") +vol = modal.Volume.from_name("fwn-canary", create_if_missing=True) +image = ( + modal.Image.debian_slim(python_version="3.12") + .apt_install("git") + .add_local_dir(REPO, "/opt/faster-weathernext", copy=True, + ignore=[".git", "**/__pycache__", "docs/results", "*.nc", "*.npz"]) + .run_commands("pip install '/opt/faster-weathernext[cuda12,weathernext]'") +) + +# name -> (extra environment, dump autotune picks + HLO, extra canary_run.py arguments) +VARIANTS = { + "base": ({}, True, []), + "at0": ({"XLA_FLAGS": "--xla_gpu_autotune_level=0"}, False, []), + "tf32off": ({"NVIDIA_TF32_OVERRIDE": "0"}, False, []), + "notritongemm": ({"XLA_FLAGS": "--xla_gpu_enable_triton_gemm=false"}, False, []), + # The RTX 5090's grid<->mesh graphs (scripts/graph_edges.py --save-edges, uploaded with + # `modal volume put fwn-canary edges_rtx5090.npz edges/edges_rtx5090.npz`). + "edges5090": ({}, False, ["--edges", "/data/edges/edges_rtx5090.npz"]), + # NumPy's AVX2 code path on an AVX-512 host: same host-side graph and features as the + # A100-40GB hosts (AVX2 only), so the GPUs are compared on identical inputs. + "numpy_avx2": ({"NPY_DISABLE_CPU_FEATURES": "X86_V4 AVX512_ICL AVX512_SPR"}, False, []), +} + + +def _run(card: str, tag: str, names: list[str]) -> dict: + import json + out = f"/data/results/{tag}" + os.makedirs(out, exist_ok=True) + smi = subprocess.run(["nvidia-smi", "--query-gpu=name,driver_version,memory.total,clocks.max.sm,ecc.mode.current", + "--format=csv"], capture_output=True, text=True).stdout + summary = {"card": card, "nvidia_smi": smi, + "env": {k: v for k, v in os.environ.items() if any(s in k for s in ("TF32", "XLA", "JAX", "CUBLAS", "CUDNN"))}} + print(f"[{card}] {smi}", flush=True) + for name in names: + if name == "graph": # this host's graphs, saved for reuse elsewhere (CPU only) + subprocess.run(["python", "/opt/faster-weathernext/scripts/graph_edges.py", "--weights-dir", "/data", + "--data", f"/data/{DATA}", "--json", f"{out}/{card}_graph.json", + "--save-edges", f"{out}/{card}_edges.npz"], env={**os.environ, "JAX_PLATFORMS": "cpu"}) + summary[name] = json.load(open(f"{out}/{card}_graph.json")) + print(f"[{card}/{name}] {summary[name]['cpu']} {summary[name]['dispatch']} " + + "; ".join(f"{g['connectivity']} {g['n_edges']} {g['sha1']}" for g in summary[name]["graphs"]), flush=True) + vol.commit() + continue + extra, dump, extra_args = VARIANTS[name] + env = {**os.environ, "XLA_PYTHON_CLIENT_PREALLOCATE": "false", **extra} + if dump: + d = f"/tmp/dump_{card}_{name}" + env["XLA_FLAGS"] = (env.get("XLA_FLAGS", "") + f" --xla_dump_to={d} --xla_dump_hlo_as_text" + " --xla_dump_hlo_module_re=.*lambda.*" + f" --xla_gpu_dump_autotune_results_to={out}/{card}_{name}_autotune.txt").strip() + cmd = ["python", "/opt/faster-weathernext/cloud/canary_run.py", "--weights-dir", "/data", + "--data", f"/data/{DATA}", "--json", f"{out}/{card}_{name}.json", "--npz", f"{out}/{card}_{name}.npz", + "--steps", "0", "--label", f"{card}_{name}", *extra_args] + t0 = time.time() + proc = subprocess.run(cmd, env=env, capture_output=True, text=True) + with open(f"{out}/{card}_{name}.log", "w") as f: + f.write(proc.stdout + proc.stderr) + if dump: + # HLO before/after optimization, thunk sequence (which op runs as which kernel or library + # call), device description and autotune picks; not the large buffer-assignment files. + keep = r"optimizations.txt$|thunk_sequence.txt$|gpu_target_config.pbtxt$|autotune_results.pbtxt$|memory-usage-report.txt$" + subprocess.run(f"cd {d} && tar czf {out}/{card}_{name}_dump.tgz $(ls | grep -E '{keep}')", shell=True, check=False) + path = f"{out}/{card}_{name}.json" + summary[name] = json.load(open(path)) if os.path.exists(path) else {"error": f"exit {proc.returncode}"} + summary[name].pop("traceback", None) + summary[name]["wall_s"] = time.time() - t0 + print(f"[{card}/{name}] exit {proc.returncode} device {summary[name].get('device')} " + f"{summary[name]['wall_s']:.0f}s {summary[name].get('error', '')}", flush=True) + vol.commit() + with open(f"{out}/{card}_summary.json", "w") as f: + json.dump(summary, f, indent=1) + vol.commit() + return summary + + +@app.function(image=image, gpu="A100-40GB", volumes={"/data": vol}, timeout=3600, cpu=8, memory=32768) +def a100_40(tag: str, names: list[str]): + return _run("a100_40", tag, names) + + +@app.function(image=image, gpu="A100-80GB", volumes={"/data": vol}, timeout=3600, cpu=8, memory=32768) +def a100_80(tag: str, names: list[str]): + return _run("a100_80", tag, names) + + +@app.local_entrypoint() +def main(tag: str = "tf32probe01", v40: str = "base,at0,tf32off,notritongemm", v80: str = "base"): + calls = [] + if v40: + calls.append(a100_40.spawn(tag, v40.split(","))) + if v80: + calls.append(a100_80.spawn(tag, v80.split(","))) + for call in calls: + r = call.get() + print(f"== {r['card']}: " + ", ".join(f"{k}: {v.get('device')} ok={v.get('ok')} {v.get('error', '')}" + for k, v in r.items() if isinstance(v, dict) and k != "env"), flush=True) diff --git a/cloud/modal_graph_hosts.py b/cloud/modal_graph_hosts.py new file mode 100644 index 0000000..11234f4 --- /dev/null +++ b/cloud/modal_graph_hosts.py @@ -0,0 +1,86 @@ +"""Which grid->mesh graph does each Modal GPU host build? (host CPU, NumPy SIMD dispatch, edges) + +Runs scripts/graph_edges.py (CPU only: traces one step, compiles nothing) on the host of each +GPU type and records the CPU model, the CPU flags the container sees and NumPy's dispatch +targets next to the edge count and hash. A host whose graph differs gives different fp32 +outputs on any GPU (docs/validation.md §4, A100 note). + + modal run --detach cloud/modal_graph_hosts.py --cards a100,a100_80,a10g,l4,t4 --tag graphhosts01 + modal volume get fwn-canary results/graphhosts01 ./graphhosts01 + modal app stop -y + +Cost (2026 prices): about $0.05-0.15 per card (~3 min each). +""" +import os +import subprocess + +import modal + +REPO = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +DATA = "source-hres_forecast_init-2024-10-07 00:00:00_res-0.25_levels-13_steps-01.nc" + +app = modal.App("fwn-graph-hosts") +vol = modal.Volume.from_name("fwn-canary", create_if_missing=True) +image = ( + modal.Image.debian_slim(python_version="3.12") + .apt_install("git") + .add_local_dir(REPO, "/opt/faster-weathernext", copy=True, + ignore=[".git", "**/__pycache__", "docs/results", "*.nc", "*.npz"]) + .run_commands("pip install '/opt/faster-weathernext[cuda12,weathernext]'") +) + + +def _graph(card: str, tag: str) -> dict: + import json + out = f"/data/results/{tag}" + os.makedirs(out, exist_ok=True) + gpu = subprocess.run(["nvidia-smi", "--query-gpu=name", "--format=csv,noheader"], capture_output=True, text=True).stdout.strip() + flags = next((l.split(":", 1)[1].split() for l in open("/proc/cpuinfo") if l.startswith("flags")), []) + path = f"{out}/{card}_graph.json" + proc = subprocess.run(["python", "/opt/faster-weathernext/scripts/graph_edges.py", "--weights-dir", "/data", + "--data", f"/data/{DATA}", "--json", path], + env={**os.environ, "JAX_PLATFORMS": "cpu"}, capture_output=True, text=True) + res = json.load(open(path)) if os.path.exists(path) else {"error": (proc.stdout + proc.stderr)[-3000:]} + res.update(card=card, gpu=gpu, nproc=os.cpu_count(), + cpu_flags={f: f in flags for f in ("sse4_2", "avx", "avx2", "fma", "avx512f", "avx512bw", "avx512vl")}) + with open(path, "w") as f: + json.dump(res, f, indent=1) + vol.commit() + print(f"[{card}] {gpu} | {res.get('cpu')} | flags {res['cpu_flags']} | numpy dispatch {res.get('dispatch')} | " + + "; ".join(f"{g['connectivity']} {g['n_edges']} {g['sha1']}" for g in res.get("graphs", [])), flush=True) + return res + + +@app.function(image=image, gpu="A100-40GB", volumes={"/data": vol}, timeout=1200, cpu=8, memory=32768) +def g_a100(tag: str): + return _graph("a100", tag) + + +@app.function(image=image, gpu="A100-80GB", volumes={"/data": vol}, timeout=1200, cpu=8, memory=32768) +def g_a100_80(tag: str): + return _graph("a100_80", tag) + + +@app.function(image=image, gpu="A10G", volumes={"/data": vol}, timeout=1200, cpu=8, memory=32768) +def g_a10g(tag: str): + return _graph("a10g", tag) + + +@app.function(image=image, gpu="L4", volumes={"/data": vol}, timeout=1200, cpu=8, memory=32768) +def g_l4(tag: str): + return _graph("l4", tag) + + +@app.function(image=image, gpu="T4", volumes={"/data": vol}, timeout=1200, cpu=8, memory=32768) +def g_t4(tag: str): + return _graph("t4", tag) + + +CARDS = {"a100": g_a100, "a100_80": g_a100_80, "a10g": g_a10g, "l4": g_l4, "t4": g_t4} + + +@app.local_entrypoint() +def main(cards: str = "a100,a100_80,a10g,l4,t4", tag: str = "graphhosts01"): + calls = {c: CARDS[c].spawn(tag) for c in cards.split(",")} + for c, call in calls.items(): + call.get() diff --git a/docs/results/a100_host_graph/cross_card_fp32.txt b/docs/results/a100_host_graph/cross_card_fp32.txt new file mode 100644 index 0000000..bc04464 --- /dev/null +++ b/docs/results/a100_host_graph/cross_card_fp32.txt @@ -0,0 +1,102 @@ +# fp32 ("highest") one-step outputs, every 4th grid point, 101 fields; scripts/compare_npz.py A B. +# rtx5090 = docs/results/canary_modal/v0.2/rtx5090.npz (AVX-512 host graph, sha1 189d06f0830e1c31). +# A100-40GB host graph: sha1 1d90c1ed7b086815 (1,618,832 grid->mesh edges vs 1,618,841). + +## 1. Reproduction and XLA/TF32 knobs on the A100-SXM4-40GB (tf32probe01, cloud/modal_a100_tf32.py) +== A100-40GB base vs rtx5090 +101 fields min corr 0.999913072909 max rel RMS 1.32e-02 median rel RMS 6.21e-04 NaN masks equal: True + cyclone_usa_rmw_disc corr 0.9999130729 rel RMS 1.32e-02 + vertical_velocity@50 corr 0.9999802987 rel RMS 6.28e-03 + vertical_velocity@100 corr 0.9999813396 rel RMS 6.11e-03 +== A100-40GB --xla_gpu_autotune_level=0 vs rtx5090 +101 fields min corr 0.999913072036 max rel RMS 1.32e-02 median rel RMS 6.21e-04 NaN masks equal: True + cyclone_usa_rmw_disc corr 0.9999130720 rel RMS 1.32e-02 + vertical_velocity@50 corr 0.9999802981 rel RMS 6.28e-03 + vertical_velocity@100 corr 0.9999813398 rel RMS 6.11e-03 +== A100-40GB NVIDIA_TF32_OVERRIDE=0 vs rtx5090 +101 fields min corr 0.999913071873 max rel RMS 1.32e-02 median rel RMS 6.21e-04 NaN masks equal: True + cyclone_usa_rmw_disc corr 0.9999130719 rel RMS 1.32e-02 + vertical_velocity@50 corr 0.9999802993 rel RMS 6.28e-03 + vertical_velocity@100 corr 0.9999813400 rel RMS 6.11e-03 +== A100-40GB --xla_gpu_enable_triton_gemm=false vs rtx5090 +101 fields min corr 0.999913075693 max rel RMS 1.32e-02 median rel RMS 6.21e-04 NaN masks equal: True + cyclone_usa_rmw_disc corr 0.9999130757 rel RMS 1.32e-02 + vertical_velocity@50 corr 0.9999802899 rel RMS 6.28e-03 + vertical_velocity@100 corr 0.9999813399 rel RMS 6.11e-03 +== A100 80GB PCIe base vs rtx5090 +101 fields min corr 0.999999999834 max rel RMS 1.83e-05 median rel RMS 1.96e-06 NaN masks equal: True + vertical_velocity@50 corr 0.9999999998 rel RMS 1.83e-05 + vertical_velocity@100 corr 0.9999999999 rel RMS 1.45e-05 + vertical_velocity@150 corr 0.9999999999 rel RMS 1.39e-05 +== A100-40GB canary02 (v0.1.0) vs A100-40GB canary03 (v0.2): same host graph, reproducible +101 fields min corr 0.999999999894 max rel RMS 1.46e-05 median rel RMS 1.47e-06 NaN masks equal: True + vertical_velocity@50 corr 0.9999999999 rel RMS 1.46e-05 + vertical_velocity@100 corr 0.9999999999 rel RMS 1.10e-05 + vertical_velocity@150 corr 0.9999999999 rel RMS 1.06e-05 + +## 2. Graph swap (scripts/graph_edges.py --save-edges, cloud/canary_run.py --edges) +== RTX 5090 on the A100-40GB host graph vs RTX 5090 on its own graph +101 fields min corr 0.999913080664 max rel RMS 1.32e-02 median rel RMS 6.21e-04 NaN masks equal: True + cyclone_usa_rmw_disc corr 0.9999130807 rel RMS 1.32e-02 + vertical_velocity@50 corr 0.9999803010 rel RMS 6.28e-03 + vertical_velocity@100 corr 0.9999813436 rel RMS 6.11e-03 +== A100-40GB on the RTX 5090 graph vs A100-40GB on its own graph (tf32probe02) +101 fields min corr 0.999913084050 max rel RMS 1.32e-02 median rel RMS 6.21e-04 NaN masks equal: True + cyclone_usa_rmw_disc corr 0.9999130841 rel RMS 1.32e-02 + vertical_velocity@50 corr 0.9999802932 rel RMS 6.28e-03 + vertical_velocity@100 corr 0.9999813383 rel RMS 6.11e-03 +== A100-40GB on the RTX 5090 graph vs rtx5090 +101 fields min corr 0.999999992431 max rel RMS 1.31e-04 median rel RMS 9.69e-06 NaN masks equal: True + cyclone_usa_rmw_disc corr 0.9999999924 rel RMS 1.31e-04 + vertical_velocity@500 corr 0.9999999972 rel RMS 7.47e-05 + vertical_velocity@600 corr 0.9999999972 rel RMS 7.44e-05 +== RTX 5090 on the A100-40GB host graph vs A100-40GB +101 fields min corr 0.999999991545 max rel RMS 1.37e-04 median rel RMS 1.11e-05 NaN masks equal: True + cyclone_usa_rmw_disc corr 0.9999999915 rel RMS 1.37e-04 + cyclone_exists_gaussian_unit_mode corr 0.9999999963 rel RMS 9.04e-05 + vertical_velocity@600 corr 0.9999999962 rel RMS 8.75e-05 + +## 3. Host-side features (same graph indices, NumPy code path switched with NPY_DISABLE_CPU_FEATURES on the RTX 5090 desktop) +== RTX 5090, own graph indices, NumPy AVX2 path vs NumPy AVX-512 path +101 fields min corr 0.999999992186 max rel RMS 1.33e-04 median rel RMS 1.01e-05 NaN masks equal: True + cyclone_usa_rmw_disc corr 0.9999999922 rel RMS 1.33e-04 + cyclone_exists_gaussian_unit_mode corr 0.9999999969 rel RMS 8.36e-05 + vertical_velocity@150 corr 0.9999999972 rel RMS 7.53e-05 +== RTX 5090, A100-40GB host graph indices, NumPy AVX2 path vs A100-40GB +101 fields min corr 0.999999997506 max rel RMS 7.06e-05 median rel RMS 6.81e-06 NaN masks equal: True + cyclone_usa_rmw_disc corr 0.9999999975 rel RMS 7.06e-05 + vertical_velocity@500 corr 0.9999999982 rel RMS 6.00e-05 + vertical_velocity@600 corr 0.9999999982 rel RMS 5.95e-05 +== RTX 5090, NumPy baseline path (own graph build: 1,618,832 edges, sha1 97d163811acc313e) vs RTX 5090 +101 fields min corr 0.999943218592 max rel RMS 1.07e-02 median rel RMS 7.12e-04 NaN masks equal: True + cyclone_usa_rmw_disc corr 0.9999432186 rel RMS 1.07e-02 + vertical_velocity@50 corr 0.9999815077 rel RMS 6.08e-03 + cyclone_all_wind_disc corr 0.9999886737 rel RMS 4.76e-03 +== RTX 5090 own graph loaded with --edges vs RTX 5090 (run-to-run level) +101 fields min corr 0.999999999899 max rel RMS 1.42e-05 median rel RMS 1.55e-06 NaN masks equal: True + vertical_velocity@50 corr 0.9999999999 rel RMS 1.42e-05 + vertical_velocity@100 corr 0.9999999999 rel RMS 1.08e-05 + vertical_velocity@150 corr 0.9999999999 rel RMS 1.06e-05 +== RTX 5090 today vs rtx5090 (run-to-run level) +101 fields min corr 0.999999999896 max rel RMS 1.44e-05 median rel RMS 1.54e-06 NaN masks equal: True + vertical_velocity@50 corr 0.9999999999 rel RMS 1.44e-05 + vertical_velocity@100 corr 0.9999999999 rel RMS 1.11e-05 + vertical_velocity@200 corr 0.9999999999 rel RMS 1.08e-05 + +## 4. Same host inputs on different GPUs (tf32probe03): A100 80GB PCIe with NPY_DISABLE_CPU_FEATURES="X86_V4 AVX512_ICL AVX512_SPR" +## (NumPy AVX2 path on an AVX-512 host) builds the A100-40GB host graph (sha1 1d90c1ed7b086815) +== A100-80GB, NumPy AVX2 path vs A100-40GB (tf32probe01) +101 fields min corr 0.999999999879 max rel RMS 1.69e-05 median rel RMS 1.47e-06 NaN masks equal: True + cyclone_exists_gaussian_unit_mode corr 0.9999999999 rel RMS 1.69e-05 + vertical_velocity@50 corr 0.9999999999 rel RMS 1.50e-05 + vertical_velocity@100 corr 0.9999999999 rel RMS 1.11e-05 +== A100-80GB, NumPy AVX2 path vs A100-40GB canary03 +101 fields min corr 0.999999999892 max rel RMS 1.47e-05 median rel RMS 1.48e-06 NaN masks equal: True + vertical_velocity@50 corr 0.9999999999 rel RMS 1.47e-05 + vertical_velocity@100 corr 0.9999999999 rel RMS 1.10e-05 + vertical_velocity@150 corr 0.9999999999 rel RMS 1.06e-05 +== A100-80GB, NumPy AVX2 path vs the same card with NumPy's default (AVX-512) path +101 fields min corr 0.999913071891 max rel RMS 1.32e-02 median rel RMS 6.21e-04 NaN masks equal: True + cyclone_usa_rmw_disc corr 0.9999130719 rel RMS 1.32e-02 + vertical_velocity@50 corr 0.9999802987 rel RMS 6.28e-03 + vertical_velocity@100 corr 0.9999813399 rel RMS 6.11e-03 diff --git a/docs/results/a100_host_graph/differing_edges.txt b/docs/results/a100_host_graph/differing_edges.txt new file mode 100644 index 0000000..1f5ac41 --- /dev/null +++ b/docs/results/a100_host_graph/differing_edges.txt @@ -0,0 +1,18 @@ +# grid<->mesh edges that differ between the AVX-512 host graph (RTX 5090 desktop, Modal T4 / A100-80GB; +# sha1 189d06f0830e1c31) and the A100-SXM4-40GB host graph (NumPy X86_V3; sha1 1d90c1ed7b086815) +BALL_QUERY: 1618841 vs 1618832 edges; 11 only in the AVX-512 graph, 2 only in the 40GB-host graph; 13 grid points affected + grid ( -87.75, 30.50) mesh node 17483 ( -87.538, 13.924) AVX-512 graph only + grid ( -87.75, 89.50) mesh node 17486 ( -87.538, 106.076) AVX-512 graph only + grid ( -87.75, 150.50) mesh node 17166 ( -87.538, 133.924) AVX-512 graph only + grid ( -87.75, 209.50) mesh node 16203 ( -87.538, 226.076) AVX-512 graph only + grid ( -87.75, 270.50) mesh node 16202 ( -87.538, 253.924) AVX-512 graph only + grid ( -87.75, 329.50) mesh node 17162 ( -87.538, 346.076) AVX-512 graph only + grid ( -54.75, 33.50) mesh node 27691 ( -54.092, 33.962) AVX-512 graph only + grid ( -54.75, 206.50) mesh node 7200 ( -54.092, 206.038) AVX-512 graph only + grid ( -54.75, 326.50) mesh node 16171 ( -54.092, 326.038) AVX-512 graph only + grid ( -18.75, 28.75) mesh node 35351 ( -18.056, 28.590) AVX-512 graph only + grid ( 9.50, 111.00) mesh node 33731 ( 9.720, 110.315) AVX-512 graph only + grid ( 22.75, 121.75) mesh node 30499 ( 22.485, 121.036) 40GB-host graph only + grid ( 23.00, 285.75) mesh node 9005 ( 22.890, 284.988) 40GB-host graph only +IN_TRIANGLE: 3114720 vs 3114720 edges; 517 only in the AVX-512 graph, 517 only in the 40GB-host graph; 517 grid points affected + most common longitudes of the affected grid points: 240° (100), 0° (98), 120° (98), 180° (74), 60° (68), 300° (49), 26.25° (1), 18° (1) diff --git a/docs/results/a100_host_graph/errmap_a100_40gb_vs_rtx5090.png b/docs/results/a100_host_graph/errmap_a100_40gb_vs_rtx5090.png new file mode 100644 index 0000000000000000000000000000000000000000..242a0e34ad4266e394da5b73bfc26c18494bb912 GIT binary patch literal 352033 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%0ATHVt}O)sf>cFz#}9_ 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

(fie&yn@8 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Ꮂuh^($~CTuvu4 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%0AfsjH$ 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�OGuIDH(sWH>f(M-Zwod~ijTvbr4mk#864QFC zFjmA>cD5TH)R6BYiY9u_&IGx4Q23~grH^XLqOp(HplyPC=4O-(W_Y8Czv~}r@7vD@ z+TQ79q}R_b>$V3>ciP-34XYdYOLHI{^UvKdIys{U$K&hM$>N8wsRU{Q*C}Rbw|7(7 zceXY7+#Za5K?i*j$EJtC`2Fl?@AkA4X&3~iiXqwWWs!e9FPK~o?6R7`J^<-m*j2~N zm__%JHhQE=c!s-!~I0lQ-605=I#Ym-iu7uAFy|%o*+nf zde|AQ|7o{3mLQ;I09F5cl)rzj{TNIKvj1_|o7FnloOGE%I=_ z^%^gE$xEK=F+I1JD(+CooAmSskx}wF_RXT?MKRc447*|g%t0OF{9`y8e_#c7UTs|+((j@Wy1oGs_Y^Im7NX}B}mG1#Y&#Q*xo*p zIZ3Lt=cjr_rgS{AWbl9jAP4XSiG(YY3mDE~LKXPqFBtL2@;C8WpYVUdKTu{JZ?IMf z<#O=TfRkW+`ADLiwZ@iiXECsNRk1u=5Vir~GI}H}T5W)_<5Zw7gls8!f_EI1F0^pv zW4LC)!>hv6b(bg!>F;pBK;o=GB>)q zs{z0BA0EN_+8!@>{*$IF-7AEL_^g3e;oD>i~K7Q5AL*XIJ88JXOg6ET`-o z_jO9BEcFCb2*Y`B1>c-LSx3(R&1i-LWInB3tQ|!8-RpSi|3&w2wlaLo>t_Qx8BKJn!9d=sdA9`c!j9IwOyE z!faFqARZOmdf|O!B0PC{1R8;OTv5Y-$^)*Q?JyqAxc}sU93uGPS%$50x}0z`F1n)n zFjk}&UV*P7>Tex+akgY>ppXycZ6~P-vP?AXq}zKvs#rD!2X0oTsN`vrM=Yf7N9m z(KUmNmx)2?@bjV*RPJUOM>(#Dd+GPFoQTXtt*OW-8a#nyFRW`dN3EA&)6>dY!UGGLmL>*m_+QNWX>ip~y_n}H2FyPGz-}U`Fd8)!cY9fPXGYE<2$|sU;p)AkMr|$yy;DE`aK!gb9Ei0h;#!s&)R<92@5sh z>!H^DZKx0`N6giXhu)QcU;yR@#~!6%fopK(dyx479G(O-+!t~zx79uv1gv3t(P{=XQbr8v(%jJ;9&CbM z#zW_zfDXpfe+E(3hZ2Leb17+*)(#g2kZVAmht5MsGtil^%n50UVl)zDeJ5&rnDt&k z3^A82?&cwy!PLnB`Z?EiD+HRwnIf=8V97Db+#hB(w*y)q1(SU>ZX8Q)tVA|FRzuax zlx0W`LboF4&}gOCMFD+~5FTmk@5yS=sU=LhkD%1S{yBr)bYpSeaVGt&{LD;Z*eK1b ztUY_usHNLvt|bEoAd)z)Y|E@NyP#zVbo#uomSp|w62RHQ!}49r0C<$s#GsoG!#OiU zzR&F$jP89y|8M=JX7Jp}G)GX!W?HjAHGN-Mns5Yl0 zO(q@Nt@rMuq6|ndjDcE(bRuXVr=lCb{unH9(8Yg(jiGy|gTGboU3YZ9w;n17kjV%C z*cLa@&fRA!FH9@yChon*jef?bD!=^$cm zh1yhPA6NjauTf(F?|kwue(asUffrss!#BP8|9c?kRME0*CSMxN9EJi4j1mM!yc%ZY znlK|tz|ZD~Se$l6C%|g`OrJ4ipK1}fb!fNRwOS>EW?it&kp$qMVG^6A+V`XCKqiD$ zkpPHhg$ZqaZDD$n6A(O5)9-i5){r>J+^vCKW}D2K87n0El;CjAb~EBJ=d32){6(Mku;42di_F` zh@c!Okj=B|ZlcB~?C_ekyY9%YyirJmd!t5OZ!Cn0w8<`qwF(R=rJ{7H6|0nSW3%%{ zY>%!laC5cAqvHk6;troYK8}$x=52|I% z)$#g_pzKp(pD^k+f}dRb0dK})K2|uuVvYh3i{S6`np;OxXtqEPK8g0h4||Goz{E-Z z&-j^1*^wkOArY~#0JtJ}AvlR4TCXoofCFWhvR)K*tf2otdw(AE-IkRFg3nrepYt2u z_x+|j<%|iLO@b6qk}YkP5T&Kn30f#Z6s2W!*;pA#*-FsZVf%-)+6YErNOU-(qD5EG zHeeXljYv^~ZK>EPA_yu%l9=Xv^WOVS@9-PWIeV}EV-0)%zME52mzs6S6Y<^qeee4l z&e_A-Ydz~(&l&{lr*{AdyGQHDP^m7q=~1uHb)OXo5t5_(2PiT-3hG+xV`Q%gZJK~u zq1{AR1@g=Ux=P4biXz29)9r!KUk6Y(1+uQl4>S01y7$DDgT?~d6pZ77JQPeM8LA<_ zso+Oe8?ZpT#-3@`psXciQ$29dF24fFq($#ZAYd#qfc6YNa#Ic=wN2$rsXye-H&x^V zBVQ6`(QKV(5Xz`_IA61MT$P|bZS-HFOykK`117rbUvXrtrD}liO7UR_9^4<53DU z!#e94p=u76=yzkS+Vl=Y@Qy<{38K9jbd4Y=D>CT14tkGq$Hzyi5H{WQT0wiCIcSbb zli0nuQSX8{-w$A5J_qsv*nUK7CYG&sc&?+`jo}f3ewq#~aHts|-`4=LE8>v;jAsDr zs`W{Sgykk9T@T>L1LQ*0uqamu36_Nw#TU)M@{VGE!LpfYZ(!C;inyO?#+D|+ANr9W zRTaRQz)UE+tTlE=ld6_Md*#f8a#4VF!JUg8#&N-Nk+9ASp4ndE{>>TQ_wXL%a)4ZC z)H9{r9ruF<6lW9aoN$~NB@4=#pOvIQ4eQ>(P*qLIKq8R}0fz!p$th}nAZE+mFI98KlO?wGo5Dq3;2G7|hbx^zdvcTcvU7raS z^!nPb{n}6ZA%Fd^|MmY_Zsy;}WvN1Ov;gQP*A6#Fwg9+fT#G`1(00cY>mvT4C@BGv zrteo85j5Ht3WSKL{e0kx%oR+6#1)CGRv{hnR6gQPI^s3IaD``n=o0CXVE={zANuMG zT-{w`#ah2GNX913SSmZV2PSEs$ra31)jXieOYH_NfPs4=r+=g{s>5?Y@H7?Gp_YZP zqDj}L7R#i-5raTt9QkdLzyJSwF8ILX`?y92DLR_pp)oOiR;Vrl^V*~}nsH};C=f72 zxbZRV{cg;9Brp0M3<9JIsoeP2PoQHb_wpnP*Z(1N+!txeCiY!{DvD(UN*j-+*G{MC zFIPjebdV#H13!c%f>k)0VrV)XN*|lWT4#J^DKr(?z18>lxoYY#6Hn~*C|=yb!|cnMp3ARmFi=T2AM~{;uX+Z5^&h_*4~_*<(Kt3WEFR>qPu>a4;TCTOKL zVQFJaEFe~gKj(tguwdE`SdMBl$yEudjg|W)zAnfzDe?Kxd5UxE$+28orqKh&p#9iq z8>twspcUD7JA<|Uq)ob?vB5y_d!r}pQ(TrUc(Q(_cl`UcZAR6$KfG=%q|?#8_7hz% zyN_4q^+|&TZ^-t))T@pHxmdJverMegk7R{ydgyw=vu{*aui?FME(ddh4DpJE)LpzO z;Gq~*h)_&(zQ4-CC^I9k3fNRc5?9<>AGGg+Fft0ZdB&Y#hi8XNyiH!jn}6SXG5q&8 zC~ru>YX;EYyus`K!~@*<#seO{V~Z(iy~3Tmg9zax$J;?kVrY?bP8H)&fS~{a>~<^7 zGKdyxUtMn6jb?#xRgPq3-2cdJ)paHUvYpl|#UnTI3advV=J*Gx8@?s;hOpQ~I ztN^N{=FGZ-_J8`}pTw8F{!8(9U-(Jg$TOX!gzL)x0^}nwTr=vLAUQ!^%BU46&(44l z>Vu4YHe>txYaFgtI6PW4#PW)*$dDRmd(o^x9e`Q@JUu}+1?8h_<#U=(TsDZm$K{pk zW{l$8&wg+ivReuBg(B*FfLf`2vJ3!)(uebr{ZKeuX{w7R28Ig0H3OF!be*)GAq&!t zqAkn0I#xV!(@vjtEWOdxvJuc)-vcoOXGy9>Z>VOm8i?QvpI6PSTqR&#A$KPvFB~O3 zN&LI>rFl0)1rHU&xL`Fb81sU|tywcC)@Q?O64HTUAI3ppDo|ysgH5Jng&mNlr1Qmq zuqp=0D8L=HgZH%Cwe?P@37|`@n-HJo zo_=HsTEipNI$zBB%3U{GcS>l{Y!427ms715;fYlF2o^x3&SCO(B~T7_)?N}`M67#B zRmCFs?2z8P(>+!PK&AvCR`r-9@$qS|nZNAXqp%fHDt!j7EiX`=eP-09 zT3}Tb3BDxMwSB&5HfHdC1?I$S$8}xPp@vrd-qpc%N0|gDXWE5%xKw*G-PQXT9_n~V z()uGmM{3r+*Gm@*0oWGQdo$=N1CKMxnFiX!V^*YjY=I#}=StREhm#&<b(kl#dGHkiE1rG{@BQ#Ic>cj1j2AO_bPwK+--VT8jMFQe zY;UmHJJ5w8R~(ec-3QMt0B6m@9n7X5ZH;B!yKFT&5Q?l>&1P4wG|S6{F`wBQsA4RJ zZmnhOp(4I-^}hJ12D+>TQBP#wO^f+*S#3_=4+l`cqK?KE8EXTWf0+aVpUU+=OJ?EI z`XZbZ!?}@(7Knxh5Ly6D@xB&$i+zss-XwU9Z2Vt}*HQ3oz2|{9SCdLgcd)EN zwJ0}H#fE2Gqys+d8~-)(PwcV#zdwWe>(|)u3XgXSuD|;cKJSlz6fa&};3xjmEw(%% zQ$-O{RV51&7P3qO87-$OV#zE(s-`@H=nPFAjmJHSQVFP?jG*)0L+u113rVJKBBqVU ztE!4T&cpQKcGSE7e+6E+5&VsR@nO`hfL7h-bsTRu!XQn>>%lM9bsFZ_8*(!;Y9Va| zwrFa&M;hD#6r+Xsno;V8Atk%c--mV~-+&_AdGX;h~{u2W=tf*#@7F&h^+iZ;8K?rTU+14tipdSVOsL)deXqj=7x z^?5RWEma$Pqg6zaUWIm;^?RkZo=%Wzpv#1G-}B_<_RxcsF1QaQHHpcc0yVe5-)--S zIuAo_gFu~jw~Y?MbOn+C0?Y}=+A|17PiYy>Zaw+m7q@$6pS-BGE9B6?0Vm33kva41 zi0}QrDOXIK^tapgXJ@X|d8fA5o)~8mSS=W}tfGCsB%`k-blEW*BCj7qw~sCOjxiGB z?Av%b((jI1pr~V2nwhJhb#)p2B_vvx<7?2n+t*&%?_>E`9Y@^lhuMmnI)McH6MLfj zBczhPVY@vuV${B57M#@o)Pgi zFKRdYtb}J3BFG&j)V)sTkI?AJzHYd!FRz>E&rBgip?e!_bQAcAug}yhyi%@0swHlY zx?i-Ap1-v%&m0B1jPjmO_}59{A>ffd+#4G^yXt1aI9e8R8# z^B=%3eC>01YOI(f<5&k|Dj1j*p{a!9l9ip43T_T-9FH06?F?R39H#-bXtz~nK^lrF zJP{~a5VNj|@XeMJw8KqiR%XyB;L8DcG^k-pKuH1`3-awF${}OE9D%_oD+lE{d&gf# zW_Y2X9MO@%MM70+xucRGe3L?TrVfJR(~4xWInzP_J&3GIJN^@2s8q;E*eZ z(HeZ6uxtT?DSsJULB|TR_&YteO{gr`tzJgi}jPB zK5aCsqD8TFp^(umn*yE*#4_ElWyI%zyNRdptwe{0Gq+2tN|Kc{vK5Hje8oIj|u%6sb_F!jbx zgX+4jfyM#|szx~E)aJiascmHozUJ-bNWel z=2k=2>$#>KX{TyfGFEuuy;C#Fc|}ON!ZKH`VrNcHEL@WhuG#qGR+GVV8-uh{&x0yy zx9?|X?R5KK(B2$7cRt#F$E?}BdUpmL82P0kXfu3J^tvVh3CK4FSU9a{szH9KX+ zkZ2E7=!!u%s{oXo_Oo2n$b9ll$g|#?5I}oIJ~GMxlsj5?<1(Y}#L;3kR|Xd7zSjG3 z31J#5(y9Pk!gAF8l=cWG&DSQ+st_~Xs>s)b;W0J&XKG^%0QpLzT}62jAPWf5%VNG; zG`P1c(Xz4(koBFRqL~;%E7UE6*60j3g!#N;J`>QYDlN^#1xB+|)zIi=D=iR&jim*A zb<{mkZ!O?m0!^NJ0P42rn%^f?FB%ukzEVbATMrozZXa96$$ zPVcpNP0XNy!1$tOM6{=isjiJ?_m0}lTLurd5!r>hQlBedt8$VDmUX4$He7K7tjzv- z09*&{Gc!C=3H7p4u)*slc_K*BnpACKhfjPtX!6V8dc_9|ffSt}Js!ojs4$|YokC_dtfwG6DsRyFa+Y@eLUde%%&N zi$F*VjAj9jlJSxM`~q+MtM~D$e{zZYzeXihi39@`ER--q8<~x1!Hk3ovVv-f#~AVg zVM3*JN_&8gn*iXf!HjpXO{t;^qd2+-9fQcmbkJIKk@hG*zM}n2U#`D=>ua|7ZC~&v z{J_t>8~^0ReWL_88tuqxA&?t4&osow^@+22Ix=8^33)}T&pEe)$Ptcc;OF0G_vR=L z6)0LhRK4#&Sjf1o5mU9#bVLNF1&aVob*j5(F^A2IdyC(LwAaj}2>hz5lVr|MFKgF$ z^_{ck&Wha|jkaEmR?zE^!??(GaM{&<-0T@Dv|t`OZc$g_H55Y)4!+EcYDLV{9fUC- z)@fF0CUlCbj}rX|92Tdsf>#x|Nswbl;W7GEzdVCS-W3ygb`h0O4oMxWZmg<#K-JdA zNll9X-KZ*lkoEmEz-BX84kJ?=YD*KklH%xa!X%L0S+Q z6;+Hw&GCYWri z3%Q{Ii{4URASiW41-JSSpEqmVN)vS9g%4r(-<@^wEI!Yk$p=(1tTrRIl!Vpq$Kc^(>veZT(G8S6rp!ecVek_8x*S1{RxkSxA zv(m**GCj^5@b7S15@}Y-Ul*APvU#>F6rZStp=CzVea{o?tkqe44CC?S^(nmMm2kbX zg9TAzSqJ6G(qie?q#DnS+F+^BLdqk|7HJj&9g=c31xPn~dN?{K1U(!;kRzjzpln#t z(#}cILtCZKm?iov40*wjRpL|~eIRqeIxVrc$ zP8nDGm1Yg9Hl`sGY_=1KfWu(`vtYA5V%`tf9Wp4KFg-ZyN}T{oN*9@~Ms+3y#<4cT zJ6QU@Qq#pRz@Pf+ufpBcV|@9WKM!yF?*FGEi!9)q6ey)TK0E;s3PmG#LW=QOvlw5x zQ!t@JLaGgMC@aJvs!oyd`bW(^2nc!a2P0YcROQK*TMPJ624AKyI+_*^nZ@W@#v+p{VJKl{32l$~PBN>rw4!o(XcxQ247sIjmK>qZZSCbghMhqjl9Z#HwaOxvM9Ceo^(si}Ai?RaG(NXa_C>a+CFdJYQ5@ z<+eZ;LOo`rSvkRS1f&p()z9E+P~`UM8MsN{4{bn1DsgT5tv-F!`Q57|kR(CAd&K6c zJ$4^H!~AHaV>J_&2P?h5O$|yw+Ou-mJEW=)1oO@~_8SR@?qupFkccYtbccyB zN3*nYw`gko+OjWaMdfFgr1x>LfXe{dx9U4bP}$@X+3RHno4u%STomdIsy#0QwPtUEXnIJt zrXYY^6wp|)xwk`|8M_zG%<*VWuu~3}i=y{2B~z0^*rn+1ZsVFS8DL3DBfBo_1y@7ho9_!Sy~0GHMV{GXn>LT&~sbc&3WH<8E8?T%ZB(#E~)U10aE& zjRhDE95Ib&sJy2~UF(b2&nrMR-3DY`QO}CXAfshu{qu)w0|SCar2)xs$yfxaLqc-O zs5z4A)Dn1ZPHQ8H#kT&`D7iNa#oSH3s$#|C}oA>ou&zqfm+T~ zU2u5ZGU(bfNUV;8Fdwt7X+Li(VYeSK)r4VOaDHcplvGURxw9(}2_8=y9A~Xpn5T^C zsP>Bp7}qn11cz(&Gk7c-Ag_w4_Ce`uCSrjKEVGVhU8`+~Ix0q}wiTmh)-C|juHCA7 z2BYnIq~vFozDKi;WkqoorAg0tvAU?T7F|#GW~9dn`Th{W0h{WPX8t`Wmk2f@@DgK= z{4xmyK9%d09W2<@qax&7J|K`CsQ^)nHX~&UdyhM*U1S=Z&=csSU9P~w*$j<;XZKox zq5xB|rfghQOTH!?YsO2jJI9;( zgX;xuff5VC$qh7@?a;S=5QHv}7>)Adsq$+A9mo)OIenfd*PyL4?;1+R`4vFrW;->L zKu2ofvW~C^l^96NIs55I;thBxsP6vTGBtFIxXs$zr zXh@bLX!e?RKvGZ`D2pDvONS`3etuBAOxhDiR+SXiLzEYzQZTw~ifE4!I|O;Qb=Tb! z3E|ct`2GL!uf#_lU*Rvl>;1YuPv+F-+Ugy=#=)}%O0S@x2t`&(>~K%IX3!(Wt^x!^ zqbwdBZr9r@prG+Z?U!fX+(?@id$X-JMukwPq%=>ft*RLY-ZZB%CIIrFaUa@SLnWh?w=ZzSpZs=xyIDZSK3<;X^Y2c!kBWp4f#0w;yVNz$Hh=-t_&$+X zfvxVK&jz@e5_={;7hNgPGPJEPg4)Kk)ySaMtn1Fdv*&qB`%ZfDJMI6Wj1*_9&Ht?9 zqDXFAEAA|Z8jsg*6r4~!X{IP&iI43~GBvx83f(_Xv~r1QHs?F)vq&NXDpfOAv?;)B zSqZ4@X&nSoYk-6BGt06&@4bG6zxGrA3~zq=Dg23_`1>tO+l^n;?xgN4b9?TY+U}gv zHPC&|Y-@07KO-BrbzZO;CoG~==0#Y8E@uxIV_-CqmMYL}Ff2$X`**QHW6|0b4;0XR z9v^RSkox3vMlFKB)@yoFo2QzfSrAj{i-dA*XQ9~m#OHVW7!}c{MrGR3&L2DXB=$18 zebLV9kFB`$^6N7-3$Kui1X_^hf1jZ;UzRRslUKx|2C`a5QL#vwL=oCh8S#Z>h9&$1 zOY5f5>JJVXlqxp2jwppNTLGoaNqYg1V4f2eN)RCWEKD`y!L&uDf`9atpN%j7Q@@CN z|IH3R`(M5aD_ZbWzQ(SO_~_vlzVy$%7a#rn3;g1npT*6z#?`XMA_P@dy)4z^2IJI@%ER3t6kktsd z5m>fntZyr4dHmoAe!xf{8BLSf8~{Pru@-@hISnf~#hr|xWMIxZ7O}oM1M5Bx&jcwz zHZPC(J}9iPx#2Cn%0&;B5o1V8mtZ^E=>%?i2mWEmu$37CQ8oqRKZK@7QK zeYT^bMXm}}&5_`Pb?4kv93)}7+5k%eB|&=i9-IZ`!)My5xSA4+7rZ4!3B?t6SWqw2 z>CG=?47Vq&Uw@6=;|->(6@)1qb7bXtt0B>`bPe@lP03(rJp>@@{3>iH<36Dzf}DvS zezRq9hKh9e2;3x;53hrMB7=vq!k z>s8=1q%0_-a?-!$D}F8hx1aYcDmM6;kNh3H>%Gq_HN+_}1b_u)-JB*N!9rROw0e=_ zwblASsI;W&?AJAL>_pa7oy5kl5aepmx~A=fS_$)k_s^xu+tbOq9+ys;0j?? zJ<<=i-Z@jkVZT+UW2LAk1`PyhXgo3=G+SJzvGW#fZmo;0W~RISOadg*uJNRE$Y%w# zU9en@s+I41xaiu^niB24J>OE!cD~kZfp=-Aq5)sos7EwhF_xzn$hJUMjKaWtr@$NX z;h-J3`KZBKU1|15dr~xqsCUZTmPLnbYrg3TcJ!)|mJM@Txtv!F*Mz*Y+Oom2 zHb*od!If@mbF7Q0-Q=4Dx+2U^>HT5R?70~4zYL_Ra*K|y%q@5V09qHM^9f~6n2$+~ z|Kkk0TR>944@P~4m1g4d&b?&d&-|Tt!2zm)xjpB^5KcHAvj!krQ6NT0Y0WI4RRNK{ zu4c7Ad|;%5scU6`E>+op1^PT^1!*W)uV*}Weubwt*Z9!Q9bC^NUbs0&@66<+y`IvU zU_T8w&RSHXBO}cYbM{`U%dB*73=%?9eV_50OcpU zK23s!$B!T5kN@#Mj(_kE{s9h$1HS2-z6rnccmB?g`PzT0l&}T=ng30ePhVTu8y=+*5W529Lj*_@7~7W`>)=N|L{+~8)q+0_~*alHMsw}Gu--_1Afz= z{pWbyPdvhZ`xn0ym&+ErI$~dxij=9K2xH)anUd0pgup_PJrDpzNE@|PioOd>0)f7+ zvKDE&a+6XTNDWC%p<*M|Q9(kP)NzCHCWV#zy%eSNIPX#4Yvbx@OalI|Kl*p^TYlwR z@Hc+^T_>9`q)0vC;p0y_u2dWP8T?>-O>`zDL#5_6aXjgQ5H!RLI6Z91q+qdd9L7Q_ z;RkA|Z~efAa>RWbQWBRVbEAZsQ&Z6LVATx1rLlt-?&ycDxyJhk908@78{gK(_oS}F z#!bWmjD$d5f>H)WZKQ`ydZe;PaY*mAX5i+y0#`jKc>!D{1b6~b0)o$92czxnk``}U z=A_!^Mo`{8zYd@xV^QPks9e_^>_macky@jZc`>-JB_W`)Ia|iM|zrjMVPWi*rMZ-Cjd>uu&z@p0#k$?&D>e>*g%M<}zl)Ut7_NT1kIFNkH2LAV!^1 zIHeE*7agB3e#2*Dkt4?87QXlmuf@Cm_4E2&w*CSctsX$MqU|S9w-Y|TE}j_2c&)EN zzjv!=sf&UYGHVtzP*&R)o+2biGzFTK=nwK(9~4a*$un-OFK~nugw}h(GIiell?0() zMqYMlrAgEOS4UlD^G2Fd>zfCStNho1Vvw^ z8&4sSSiMV!=zB)RjX-SSlf7d#az*!e-?Jc4T3fs2sK$$yHXbpq7DPtPO={~>5#qK; zd|CKEJgZyn^*q~mQJmFLjzm-R0BIM=63X5p*8>Z@?~?p^$mKk`R#=gu9x{`If_n6G>E=n>xj_P65? z{h>dE&;8ub#qa&SzZcIv_Z+_ZtH1gae*P;vSOAPeX^5t$e@Rt9WI)sH7e!UlPWh?Q zjf@+>;AL`iK6N2lkyF-=!3)(QMi}9u3^wm87k~0k|3>`u=e_}l8+G0{c}6DvtOUWGVGk0) z18lKWMyZT36|8c>VaZq~#!?xzFs4Z#m@FMR(C0J`aXW5#|KuoP+9>P(oYr(Vu z@=jGqmaRFq7MOZ>N}9DkploVGov-weo9{0AEQb^hZ5a*K8x;XBEA=4gIxD9*^s5QW zQw7V@3vii{_NfIgkF6{1N}?};Qv?DfGl!|Zu+~FtEy_QiVNQro+wVQoI<WF$hV4}4tMp5ewoPdA+{C<*{85w&G;9O9-t1Q^*AH2Y%9h`UXvjp zBGgUQ?!2Zp61-|cAk0pIDAp?>UAGKfI_UbZ15~l=mh!s~yHTIZdWe*De z!1z)&WuMc4qmm-?ym(d|+LJ^GeAM;ss#wu%(yvMpge;?WHeb;8cD~W<UC|g<^D1f@JI1Z2}tv#OHmw zUw`{=|84xzFZ~kU``-6r7=};y+VB7V@5h&Z>6ha7|Nh?(0C@4m7x7)+^#BqbZXYdja~xu~Q@<1o{x%d@&TFQ0N?sA$GMIkFW@i zl(C~RzVqR7h9CXf&%^)gKlx(3@uyzG=5oSIuQ|v2KKCiylohV$73Qk735f)SD~^j! zYeL0t8Br=nUBXfmM4+@NNAG~9cwmm=V#bcp&|4_Q($9Y-oMzUWJWE5 zvgnQvg{1zF7aiAM|GHcF9bfeM_<#K5&*AUA`#Mm98UdSrcGD3TJss>|*JnWIx!F8A zV&*o|HKz?pK2dn+*Nz)YY6ht1>Uw%yn@J%Y+Bj^UG`Rj0-RN)yG&$brC9><*Z9kwX62}6 z(cojLmc@#U9kt-vt{UB4Eu&)%@38j5ISq)|)o>WzN#vVI}zYAjrM=G zFE7Ngj@p{-)~_g%CfxJEDZmfUT9j<}xDY@L*(Kn}4Vh#6Jfrvgkstms{J~%M<#^%d z2LGRb^{<*rV3z^#c?OG8UnX;WtX?C~cdKz>>xdkZkG=*SwS(;w&%#QxAz}jn-XWI7$a^qK<6o!_9p4K&U=>zXy@T_EX^9Wwf32oboh zzGZ;YJ5Z?l=t%>+iPB96!zZ!Np^od!mevaS_Z-#ZeK&FEyGZ=7g-}} zV}uAu3M7c{%O`A_pZVURfD37_3V$w!I*vee@D|H*M(s!MY`SPbReLNGxxmrs`3C{7 zRkWebY}pa}Kvw%mus#-sg2xr#N0F&)*xQpTb+;`c{0)w|ook+`03z*S_aH@4**-;TOigzwisc5a0G~ z-}Xtr;}st)2w;VXhypWDd19hKoqbVO)58ZLs1*7dTS7)1g(-tLs#(SgWKY8ira9~8 zne|i?Ado6GmI6r{nNLdsS3*gIY00=cu8@;v9DcsM3PaMOqhI*E=fI?W88*v|t7(OY zhmC4L6GA%h;ckPaBrHXPgp{;{^NS2QL3gx(|S?a)NH5Iq7B?I zTQ=dq%~|lv#?ODwlhTxG63h!>rW~CSJ%V@o3(tiA`ZxR*+#T=Zi=O@}{0Bex*HDe8 zTsFER)4|4kw6^tGfF*+tsc{y&%}dS?Us=t4=ubwd_{aMx)4=Eu$b?({X>C!B+`5=)vM%w%1cEcM9rE z5U@({-RL@|1y*oo-)GM*Nl|~Ev@>WiG}sZ9ek`ypkc$a;I6@u`4GF)}HLRUiEdVej zmV9NI3v){Assby)e9H<27lHKJ@S<}muJluY{7{vg>T8bL+v3GhxxNBuM=iwR$p=Ec zBfxgiei{#kaBAk85p@y`92Y~0S?4Ej7o=Mg=F1hzo=|#P7}>fYf*b~51<2D&P)&yW z9BMO#5$j8(5(UdzB3Sl&O*?|DE0(7hE*j$Px)VPknh;6^N@N)U zs8iBqEHRi(GKZ>1%o`$Y<1+U&FkMg4J$7yCO+!`tmIb_1l)HEqvj9>PZeH91qtd%5 zS+wE>nJcfGLUbdS1v)7HI0-1+C^mW5Y>+#s!?j?zvMgK%$_7n;zUcTy2U{!jg`xEG zg=JPJ?IxWKX?OY=Ex`O#iP{JhL+EEb`R6Tx%Z5tKzOPj#I{Q$|zHUEDXv55&?EP_Oem|mO7^ZKD~ppukkuaj2SPC zbVyjv1ac-yhlB|>kOP1%JLr4VgF_aa&>(^CJ@%D60aVh74;KMz>ij&bg>VswR6748 z3B>T(6NzW{1wYyK|7WmpeSMABz3z4K?{EI*Z^k!&^Eb!8-}k=v;cLF;Yd+?C-}bh* z;ZOakKZVQ7OZ?yu{vf{X+rACI^|$_3e8+cu2j20Hci;zp;0Ipzp8bB0yLa!#zt`(E zcDvmtz0X&Cu+Y#3-KbG;>ZpMsUnh~LA*wQV20|!|o%dKEw~-7>qnlA77>WSoQ7I9% zusYFxU)7WasC7_wl;6YXS_yj^FxS*jGys_^N+#^45r;|TOxZY61POGY`sWmeq>7pt z%c7h`S3xS^s7HW!)L+2w(b4O?bQNVMSEJ~JdmnD z1iu^IbJ{Wqp#Z<=w6$mFUG+oooWqH8P( zDdA!2vvQ!}6exa-qpfMGR`=lYfOBdHtTmjIluio0{BRR=b8JYNkDJ#Bc|Awj)ON5K zGE~RrI0;B4|3Lb^wFNr>qFz7|CFjxtSXbRk)ebK4F|r`mn(GKlD1Qhktp@&Dck(L* zb%jjfMgasnU>S-mc1UK-jkKQuXw9nZebv!pX)hI{0{GhZF_V1CgruivajZpaW|e0^!Rfq$b+DExbqil-6%O8&jc zVm&qyyi9dqA&U)eB(EMBLLvpXP?E}-uAYS z`JPw5`qg;Pd)^cO{?La$gx9?0HJ|i8Kkb5r!{LDSdVTV<%gaklQ)^Ya*=%rjcJ`@# zU>t63u?NZ|1k4fz&tVXa`(D-+l?C}h2F;2-IzkhhJ}at36N8S7x~&l`aIRRN9kEPV zdASJ?h&m*NAX5Trg{%zu5WwYB7t5i}#kxmYdTgE(hy`OVI36<&hf$q-5^cIdf_YXx z3a5&?Fpfu6rRf6#KVud2RTM(1(lGK^kjDknen2@I%0PnQVgd*#i#phqQXngS;Dqz+ z2tYPtUI^(rA>B|kGYWaZxy{M**EhI6ya6|It%&_vwXXSK^aR!nM7qjxm^oFUT5vbt zEg%8%OZJ-7Q0=r+V?5oikab1LR;=h;{Hz?}bkwX<ipA~|p zFku0L2WjcZfq=`*D33<)fshIytD+f?nL-uFoqxFF+&hl~(8NGBbl04>a#k_jDymC< zKxEdITk1&gPC2FZdH`1fZJaMI(OGk4XnWbJVo5nBt;yI{- z?HL6?nR1f>gpNVl`#f16fnx^WnL+CX%P~WUv0P{osrE$>t>bW;(Fe+~gVmAd1TETS z<=2WkBequLN;?62uZFxQEN2zVxqvT?c47O-KK#Uy)*cP+SR$xq!<8P$hi5gT#6~HL zIeH>pPX#BcExxwdn#j@p6wh0&2FNpkiu4N7QxnoqQTH3j%+V>_oqH}6dr4q>;(XR1 z_R*;IIJ5T?k(U1VN4H)#e6V8eUZuu@Pet|JiLtJ-9X*P=Zr7ek9IlnxQYS=UQqHS( z=Pe#EvC(7HF_U6Nt}CZzY2O8~JK~;=Y=MH$O*k`2AkWO!v(s1Dr-}?GK7A=QG=zhos+oZ;61Cc8qkLQPwC}q2C8X`Ws~xQ6!%ZmJxS{-6V&3BBeEUnMFBr%f?xdhok}UdNbqc+t+wW z&hdCoz(LP*r>NEnRb*RhAXux~dMpfHtJ=}R89|w!KB9-KgZz7_z7QB|*7R zMg?|R*&+)mB|QRtx9v|vgZ~b$^?HrBzV)r2@HJoY6<>jG|MqXk{rmUv)KgF4AO6FC zh&R094IlHhZ-4vS@%FdB9UuMZNAcWq&*3ls<-d%t{K~KVr1$Y@6D)k!cYPPW^;^Fc z4<0UrH+;i4;E(;WKlUkqb}M#mKT{(jCxtU) zktP*8&+SmxOtM7u>aXuF3!=e8(c(SPO;r|^AN9?7id5_0>ykiFWKJrfEUZn6NSmb* zL_sehl&YH2rIKODtkY%HWL;{KoRw&KL4S?}t6&*U&|A&}C_xtfIiLZ@>pzkOuVbfUjyB+xmhZ^1Q z51PS|+=7l+oBsDj=R%U*cmFy^;2lLy8azUPDiYmFBV|hh*;Z?0)ec+g?%RV4At+kf zXCDCT6l}qb7m@F95sl}+eHsc?|E^ZK$RPk>P}5Upm6Z9 zW{EZAdxfnSQH*QNiw2&)MgWSUVCU3o6E-W3_jPDRfYmt2C*1eyfjCZpY%R)0%K&xR zshUMQ6L+;bl9Wb=LQ(J;4p3^1y!>~O9r0#HMd_B+vo4-h^7Y1!^s18(@>RCxnu?FF zVLDk`{;VLCki<;dlfrFJ_dUoK^f>}+eMK}t={^t5!SrsPto?HnKgIB=8cHv1?QRzGIJ@y5o@7LPlf;n4WL7g)AMl=|qPmN}^X zAAfew?#1Edb8AkvKa)~74Uz3Ap-TOr6Y7S4{)yt8q29g*LzS(<>K+U!He0}R_gvu| z`W!dMx`%WL=2)v)2jKk%NQF%Nws} zi5MHZH)1UNj6JPU<^)bk2kvB>^fJ1%F9S&eqN;v?qy9qRqklXFRXbFTp12&D7t18T zf*$=oJF6!Sdn}&KCDz9?N^uz_z!#+r*(8Ro@cFc#iv~yN5sj=l}dC{fNXX7>B`@P?b-~5|@^Z%sJr^SkRjl&uT6GJ)Hm5{IPuyL6gg8GscbZzdcU#(W%*hN77P zThz;}yCa$GMyaBG8``DBqZ~KWhqpIjdHzNRd_t%n`fJI@dOD zGU$QC)~n%3M?eaq=rt6yNNW`Mz%MfxWrd)4(1DRE14TQu!f!=7+5{o$W2#9J_C;h) z!zrT%D>X|LfQ8n%Q4AavlkK7h&n_VyO-YGulAzC~9jr-FZV&K$aqkmQIC#E%&^25x z3TR=F*Q^L3-)NtO&-wSChm3-sDW8R9&bq$1sWS0owHQgXx!tU&Be^Htou43RHY@|v zGwOt;D^=;>oodaegE_u_aM@Keu-sB~m>&%-u{da8701qlBpOO%Tm8h1fSb%&Wl$G`lNjHS? z0Y`=|Yu`m2Z>x=o!_J+e45XPr2ZR%GyepyLB+2S>Y^^L-f2EDufI6sJ*YQ=0uG6ce z<2nKJxdsZ}!G5^paM0bE(K;Vsxg0eR$?EuNW=YqP5oi>oyGO`gRbbd^Q#{yO&eVY!CjEKZ12Whe_h7H9M*|dvr$y(h<_?uyw5Lb^ z`HgmJ&ydtERM_4t0z5aNCc$#dO1s=Q6j~LqY#kH=-yd{-E|ex0v&inAVbJU9k7}inSk=p5&)@qcM+K+VfeUA`q;G+iA^X(cyNln1< zDMQPTy8l|&XA2T4q8SAcwPQZsxtYJhcnQGnve?YYlq@K}(N z0yNWc0No^{n+#fj*I(SifAO|2!+@9Y9e2MHU-iBJ9r&s z(d@q0K3ZlCglODGlf8Hm?5?*sK7R(>osiBKElAH2)M5xA3!xqc71-Dm@XC589JG5n z)vg9CnH?N#A1vI~t2^9g8=U$mV}%S=v(5{JdLi~Byn!f2K|Nb^zZ??iM(In-g(=dl ztFEobF3oO3-zkH6P?HV{O3vpk042|4Re~(i=;N$`oWMX!TUSUDXX_`ro{ZQ2U0#3q z5C38Op5OC(@X|{!;d4Icb1;s|RCw;W=kRC$?4Lb(?VtYBe;R-A5B@=1US8rYZ+S~J zxBEobr$w-^TCGkvS-V4cC`29u~-HK>n zY?LHN0LjwHLG|d2E~wEc#O8_2!2uA6ARknj$bT1g2?=;~ zd8UTn5qHlN*zzM${<+WQSk$_--F#1G{j=h zMctatfFx~<7K&QkBK2YQ|4{W{A18ZH)t~?Zfv$~8HdY999oCGXSH%b0vtTi4W^Wp2 z0Sgt=u{Swg&nEB!RC636!`1C&DoWjP%8oFAl>~3T&J6UKRv%~oH+A>uW_7YPoOO+1 zT_Vfl;8q>n=J@k9%7@k^Q2X3|eh5u|y0+h^W1~a18ZBRAx<L!TIU{5b)@b)IJ!^2bM)6s8C26Gy_oyD)VbV0TS@^oinV4+kg;0 z>-MV6zZeB(R&@WQw!`-Tp{?D>fLYKhPynG)16wfvf^-raclJ9mO=GiQL#py|LYl#C(qO;ua9FF|6N_rJo5~mdFGju zpRLzxe94!5$;)2*+Sk4ouYK)nKjqK~|xkDP!Ibrv<=5prL{{3+j|0b7!PxJ+Nq7P(ir4T5Ir-HEU1` zsUiUZ;ssN7fQrkTLGRrq&;}g!5I@Px|VcbW>=;H z0)^v=kc}tqGz(suYEK!}VOSe#?C&dE!TLTU9VOO7n)UT%CE-l)45f>i^UAZ1U0qpC z$dN2CL3G511r^~8`}&&+%SFYqt=4Innl^cDYuM+lY%9t}Fx*d3=hLI0eAel^QrCa~pxbJ19{RWDSm8;j#jj4033#hg%Nl*WAf5d~Fd`+m? z>K?WgbyL8PGI-DG)RUq6ZikMR2{-zg&NqS!-xtJdHp|AsgD?QYCB^UKY_zqfeQHFr zxEWzvF=)NSaH%RkY0|7!9T9H@^+WB#^J}_#x=X(Vx0-iJjL;$L=75)O83toNe62idE zJgW4lqxwTN${S%lF377zo1PIP4b=i=J8xFHCy6#7R1FaHC*UJckx*Fc5i}boCjn6% z1yMI+bq=0ci~c>`8aoM4VOauUr1Ke^3yKvx>jPWBBJNY1)-`(Pa#s*Tg8CB2W=pG4 z)jZhby-`0Cz+Awa8OtFxsv?>{K}A7TS7<^Otvi8WcwsQ6Kmu(G_|*rLIbk_u`MUn7@11yWWL2z3EK=01?4Ae&aVH=ZtUpmT!sIeDC*uF96Lh{Kdcc7x6V;^EG(> z`RBoWI+Ne|o!^P?{Lb%;f7jy?FT2dyj?LuAwL6BQ4v};%P>hrM0~UQ<25`f1NcYA* z94dd0@#H0;HC&njIS`QeBr8M$z?OZeE!pRmm8Y#0AwNlH7t0zUvq_E;%{sTP=#zHT3X7o*ryrKG(#BG* z7)7(L-|EfSx~!n1m@&6jS3wi&cMsK6k@S$(qHT^=9ApFLH4S=*N@U5FbwlDDD&!eR zbh4!M@jW}^h^nKQUm>-f$`GhHCG7aQP9nkIb_jT5N!|n4ZQYt!ngltzZx$d zZt#Enr$3=c{bGf}LYA393zq0~(THVe(%#0@DO(=f7{W(O<2%Fd(dkRl|19>p2C}W@ z2n}4QX1`r_xd05M7CfogrCA+m8G^}e4xRGmdq>O0I23~H-h>_OaHP`$5qIu9vuC!C zui1Vsk>Yn66dyRyTrjlJqy;yabx(UyZ>S%+Luhpr0oI({Bf_}^xlFidF{#Up+Fq{K zJk6gY9reAH4J@-j220C;dQmdZFi_1m4^A=&K(iUrZ8As9C6NN;9(ek?jxpC__)w>b zKp!aQ1sDWrT>-Dzi>yi;qgdyq(aBH%tO{fW$i$KDAZRub2I_=}WY$7rcZfBcESTp5iVX2QV(T41(4?wosyai#2YY?T z!&e)ugG#+UlPCUfpN$!y>jYvps#3GXI&bPo-@e#kyE)?i)j1AJZf9n(Grtdf9cVE1 zA{naMy}qt%V$@x>elu-u#LqcX-J@JjfyAVZASqL*H#I+vG^1dYLlLw+-H(s0PoQ)B zyK(iP%mWSgZ?tX$kbV$9-t{TGRnpwXL(I&(bXG!X2J1TBhK6+=T#&=|DW_YS3mv#m&4 zzG378^m|@?1nw@Ft`llaST2-*ov-bKA~OQzZw~@I7!{p0^R^y=urR&o(y4_Nbli)u@IYr`;U#=J*bs-i{VSeRp5%|S_) zQ7I%C#s#l=`VsawBR=@THi~4u=Y)KGOFWWN9DMZ7sc&U@LYK&j1P@BYidK& z9qppcv##m77RZsoGb2CN!?%nYsCXyPo^$T0?`l$de3P`+W`zhCq*w>uM+so-U_0yB zd532&0Ih?5-f~B?dER#eFjbg?qOn1}t7uKA#uhM;&0|@6HpZ5bsdbH4!0|3{yr-`( zBcg|bXOKMWz>|J<9ZyfSKm3)y9>40dwy1oL-+1`~e(ayVAL)qbZtV(7F;8oOBlfC> zqmFNyO_6EcY86O;%A|$p2kl;5Mv2CSRCPT1B4ektNCK*N@HXJWDR1mlhC>1!tt0hO zUsF3r3g+BXAuyDFk{5uYYnj59qJ2=V5~L>UW23gLY{YCPS^WXU^9j*uW*{{uvu0Hx z!%%@$MS7gTS1EcgOn1y7Dui?t3^&?)M6<4XU+JKMCY$q?j!r|;*OYa$?~*Oh7&K_h zJ8A);?>ReLJxdyayJvNdZM-#W(Ch>iwZHQ-3-YR9SkJ)y74T>kH6>0Izw~ef;BJd?OB5 z7x7FyLDdZ%n8;##P`^a7s&e`N*%ajDCZkLlX|H?Gvrfe3tdH8ui3jy%Fey+eEGV~& zu8ju+TH!I&ui6a|?^YcF3pz!wwmu^=Yw=M40KOO%gd~+T&UW?@KI!%8QnT=H`uen} zS*W$*cm1y4g@+Fx;=8~5yYcYhLjb_jPd^O+c$ru(2e#4!jp2 z?`g!$6$QHCy-m7Gl8GYEhOmG-l(i7(Dgk{libcb;kj^GIWgMB3A)gcnv~z2{7}gu2 z#m5mELMr+iPd!#whw%vC&{PbfiWWUL+|Gue=!AMw7nl_@ZZkJtbax+`wLll)0m9@y zmj1{x9OSpjSjnaIao)yi#&MGkL;TF^`yFWhiNuL6i<`hQV!>ES=@7w-}wO3fVyFx%! zc~zRYoi~Ma9Jh<2lAsnGSKAhQ{h2#1Wz~XY5}YXVk+bI&a|hd(p8~o zsb@S20o4OiG{>d_@a%VFU~ONHW}c54SgCY0DecalGkV+Dn9jE=Y69v=fET$QGpP0| zIW}h98g=Shs4dCq{E_J1bZ3-`trtN9E__`@Jq9eu>&|6!zOfK0F&4?u2Sq2nn=7Nj zdcTo4OIe!YnE@qD8O~~2P^}|;v%O4R5Ncy_oHH(OHkgk&oO+>FFNL8-78iry`SKWl z^zZ*2{QJ+n27lon{{-r$BHi$bKcZE|>e2dGI@Q<}snWrzKV}GwW&>COF%a1jD&3=d z?Te`k_5A&Cl#@Vm#iRWObpH;Jfz5WpaX&z7xw^Gp+nMe)ODd^LZ4Tnh*G#AHMX#6B zj3J^Y6{m`tDr)A)R!8=Q04fZ*&T5~#HRirZ?I>@(FW1%pf-0qd$I0t;ve8%yUc~*$ zuFnJu|Msp&j~?M~{jI+R0QmgR|NQv*OE0~Io0}WF6IBauL?r8I|DPaQo7%k4!s>MloWU8aOemI`IT@xdCD1jDO$y6|_| zHY{VQj713ZoI$Mes?h+dk{&2Sg`5@5FwB-A@Pg=tz#koT!{4c~NL3%6fwdJYXQ&qV z^$=q~i#wT?VlHHzZgFBvebY%+rk0hX66fE}^ zXDHYkMQ3O?! za!z+Vg9Rsrpq-9KRi}~zDfb+}GG~1BU*E%cKI8mXJjUTTVA-v~4@vtv*gP%gT_&Nb zgP9J5yl15IBX~VyT1M18A@2>b-->b8C#07Kq|2oI{sHQ=FNA!pH7tHW`aUKBWTl5y zy|sVaLgcK&`}Y8SpoS*zSy}%P>Ro5=WMuUloeqi4QR{CH0}Y656$KhP*xTDr?tic zg^(|1r0oJ+F|c>KjwY!+IOIu-@0YFaDKctO??C!GU(N-~t%~6>gC>r(+0!01`9d+S z-g(z;HP80@V?v!0CJagg?Shgx4@K>4vUA+KehUL-PN>Ald&{1!sX31h)a<(K6M&qG zQiMB0czsym(eca}1%zt717tQkGS+xMv zeOd$y_wL<`?7@@Q+1c60{oN$)8L-3*~nb=`wK;_gf{#! zBQ`LqlLQGJ9i`tfEt00r(Q?#G#8b4?5F|r0c%tB=3jxwKMsX@vP`dmpVSl&pbqPwI z>1CaZV~$`4z@X__?hS%xj5-du&rcXHKgg{R(y11_^8#TDs9am#Q9DD4t2N>CfJ%+K z(FQ6`3L^Xa4y7N@`aF5K*%a`emF{8=O&!GgRUnW+*sz=VZzebS+Dq7rDHpczV zq6j7fbYu5hD5MwVI%^*w`_51?5@<18F)z&n(E>&4#3)fqdyn6**xE=FX}UW$Pg_GE zqcK#DejwH4RvS{NQpI!~9=fiR#cB*Z60rG^QMA$1(zxh>!opB)Y3n!YsN4}MO5+K~ z2W>rhjYChb();)9lf>Q%)gT+2r3$9yfRxq>XeOhn8Jrh&AGVGo`(w2NLD#AJx~Mzv zl|+)jHT=Cux*>o7QOmwWhGBpyDK#4#N?MLE13_zx;cmX1J*e87bbtaIZg+fN_G(Ac zt$(YLsfkXg2x&(l%dC#NIv-xt4M3G?{2W*qaye*M^g&|%kx@vZl+0_OmiDv$QDRL1 z0oM51ltkb~T5W(du)yb#k1bm&PP?_W5h%0ozllIM3F6Ja+-^PLko!1t0Wh_nd!QxB z*H5>O3_*?n%g+#V)Wm2sB0x59%d?NPbWWb#ha{lFq>!rydl4)er6e-t_SUqgmT@8t zfb)96_Rb!2O*oc>IuoR%IPa%9+t(6SX~x~n4%b-Wa>|;4Nfozm?ZK(y@@AuIT7%Xn zG7E-b!H^4f6JatWUyRDmHc%Y(+wnMHE(z6Z)w-_XR5UOaZ`MW%qKS=lf6g}g5jL}tw z%*jMn+B~Z;hCLh1FYt`3)pWUtCC{0uI(>~Gl85+_n z;SvJvIZ~zG?p~yAqCl*R9`X&*ph%ieYCEmA$W z1b`mo)i)?9#~KXfmlgsY6R=*i9>F>;5yb*c}U6$Ex&9$hL`Iz@&+)~c!lIZeb5_;RM15AAsQF%D)w6z$*w166>u zD4JHs&d3R($&WieWvd55ohdp)CPN{;CxIVWJi)l+){qJa*~;Q5+~ed+Mmf7{38XQ2 z%?m(D5qC#E_$nb?Cv|YRp~R8>usM(PyK#;E^PW6}^A!V^jQO@;z7WV-)qi~6PL{VH z5T21aFOadK)Ismn9exbY|r zI6hmjY(;5YR#Yp;0f(0c?T)-Qzu*EWw~KbaUC-c&kv}+ua~u5Y`y=GRsJvL%y*RR2 zNYVd5#R#cF>kWz*=<1%XBSM7*Wb0@KYBpyeP6xzc%M&9_P{pW0RC&nLErV#?(1Ae@ zSE%a>jH+%zv#9~0&37FISQp4yL0y#C&DKN1X=rtY;CDyx(+87Pk>ENAj(6R|wEbg2 zfJ%ev&)H-#>i}SYW;h25$IRw>Hs*qt6Hs1(2u0Mhlx>MG-Cf~ z=%0h_9xe|Nsp@mx0geR-#bO&xy?fQqe+ zkTbPFA?*p+X#uVW3l3JiOcI)4Hqz{MvOXSO&tl>aR4A0H+-?a&omTrCvHG+4=o_t# zTF$Ld8+4NGr`lA3RFO@vHl%vGrRQ`MZF?{-K)O<8zv-?@ndd9U*|6X>&ppKDafJuF zEshJTXo)%I`)Tkkfz2@EwYMJQdAWtF-5S^~U=}?0%p;7c;P67iRFg`nriw8aoQ)IC z#t9#p5{{xmC|D?zdQ|zR?FE=P0Tp20>ipy#$9i*{=fU@~R(axHc%yfQomIgQ(8S=< z8kd!=@$<(D-Y3vihHR8AaD8LlsI5_DDAW0QzO+o~a%KRU*Zg!;x@vY+*Rf?N8QN&m zlp$qGsE>zMs|od2yx_dLl9~HcM-E$&Zp=m;N$uUHfLK-g-0!PvG4(3ODTPV{W(OeD z-Wnikwjr2_AMg51u<#1Fr2D_27(F^2NOS)>kBGYkKov>>y4Jz|#-BG?NafR>LS^C+z5AM;#i%gK zm;SCtUt@gjb$v0MJGCbisonty&M%;JwBJF5k%&A2TG8*1~u&=17aZMuRR6 z{&2SXhsE#3C>~-5OVinID2^AnF6T9VN3+o?3^}VAQETJR;?5W!7*YhNS+%zv{qm+% zAH(=6dMho+x48-)H5%p35jrkF%{F#EW>xnq&ptkey00p{u+fV;t4Z5>QMP1&QbigU z$ed9O-J@zsGhM^9D43oJ!rb({eT^}cKkxJJ0cE!)-02SV%ToScpP&PS=ndeXD|Qbg z`W>mVIjT6Z4d3x2{{a8_TQBjE!zF%l_Yq(=+S?$8_Hj5Qe&2p+P~B=x;=U~q2+nter$#?cXkbaNLKn~I87E7z^g$S` zxtD&qu0hXU_-pihGY6aiWGI*=2&d8=^e3|mo|!$#?vjBqmBPM92FPCn7}p-{vzPYV zzPG7ZRglg9i4cbwEdtv5K%0lCjq^aNn$sC}K(Beuc<|^9hng|ZS$iBA{TE5J(V74y zRUDU$7w+G}^|aE@wu!ymZ;-iwk|2`_jfkov?WX~yFy>h|fIw|y-BkUabyWjw)Wx7o zlP?6Z#)x#%^P~qrz3X#dkKlHoUngGd>rQg?76RZ6()4U>b)GLfyE}VYEqfQQ1tOS@ zj8cE~=RE+g2@3@z5B$B(q2EvLYq%&!cQ%F0t_aBbubkeOeo&*KBWg@Sbt?k?ZcOmW zug_!_ULjZP7272J;yWo`afwTJ7NzqMJ!LoN<}?A#Fn1d=`U==)lPrq-Z%P!$%B z@oWMo!89kOE$!`tvuFzS=v@BOgG7>Qu+u_{6d3X!m(^kPnnBA-u~cZ{;+pyOb) zY{p(6T(SU@fEJFTx`@6F^^%n}Mwvvlz~^>|Bu6#CVf5n=23od&+xYu4`e9N!^rU4W z+9^njI=M9)$~QS}04Ik{F$WW*2x8tL&}diCNL3xmW!oLpg40G`F1u++H19c_cAE9e zxBybMek%=Jtq(NQ+k`=M_)Hwg%x&oGM#c<8YHyjS=bhmaCIbB!O$rw^4 zE3eq&@e^sbZfKjT-rkZjVx9-)3C_j1Cu`Ay9VCjkCY0WJ7-j!H` z%T}|7>?%v0s+c#UByjr!_+1|$RIvemwn?9BGAz7fRMX2X{Y8;4_CSBJxZ>*w#O zP0dwloD5JBP^!pTAAFe;_S1;>edrmjQ?nXDV!?}-=K!=In3FeYCCp30v1$NPjzcs| zQ$;s@Kd*|azU@+g0kr~@+IlKys;-x=l5ZQOzzymvggR1^pc_WLKs~h=RDk8o_JN&q z5oio5`oJ>>1vWBw<}*~gFUkP3XDPb<%z`r7Sz(|f`FHrr=Jyc=+*=qMnk^WsAbD7yGKR~J7Fa}5#xO3dZh;oet6k}1)!@SkOm5b zA;6Z1V0EDddTG11kG6xCXWt`9O!iZH`Nl2KLcq0oWS4{XgD^x?C1N|MHVM*LtTBu|n;QxrfRiO?O_L#~-RL9)vx?A16}hLyX2H1XFmi8*@jX4FSYBt39%Og5-8c z3!qM%g;HH83tK!d+BqLx|*-1z~>Rhur8(up?uFg&qkS^OET z?9j6gwpV!&jCUrK!kCUK7aR^<7ew;{#U^)F6zyY3-I(2()lnq^m{49?YlB5gi93o4 z0L8jGd-rJP5a)dtAh_{N-ekh1THJk;{J}$68vpLIAuP`Y6pzn&V zH!tyQ&R3Ro)j63Ngsx~6X!Hu-pUK`c6wpBh7-HX>&8|ruEivv036$IJ&bQZFxJ|NW z3frH|ai6u*xOY!J$u6MHl^1XJwQXf15uAJ7gZGSRb7OmMA!|-14YYCx-GfGV(3}QR z2^A8*t57N`SU^eXsk6!A@vLfmVvbhS3ZOl|xXqOoBztB+x+3=gPHc>7tWD$LXSHcE zsO`?)EHK$Ju)=(*+KpL&m_HKDXhb%Ry5}bo`S3FjPyvn9)Zc2Csn86GzVIZVD88}L z=*9^K#>t6F*)SAvE?D+PlPo%(X|t#cv9Q)9G6fZMI%ZE?Kx-3>_AKg9yO;?CT4W4c zBX(Yd?_vIlusT(^T@A`nv?<~0kLE7EF#>^L%hp^pvwK_Nwk zM*+?YWUbA#U2d}7;7nBF%GuN{MJ}~$u zojC4s;{a$8lasYzj{S24nHi`O++SDQAwxjxT1@IvyR`!7P<(`QaFW3hceDUnvLei9 z5@?ckbXAYb4@q^hb)u3vJ|TJ6(K{mR;dK5V2&k>VObh;~yWb`Q>j6}? zCVy-NfnMAhbUG504fFsS)z_;l(ZawhHhE1!8B9n2?xF_&Mza#hf~|5PSlykF&u7dZ z-J>2ZiHrfnrTUBS=4jPa|b|dXM#+@fS zu&lPgdsDzNQ^U17UCY)eP}X3Fi`|s%zY> zTVKoH@|%AH-t=rnrPtvr-|zx{@SpuFRdXr?IY`(xml=&L!C=nb%qT-uI?05VxnRpe zF`}5XcL;r(N)ok+w`O&gZVWM(=A3x#lH1yv0BkDc_JVXjgLgR!MVr$ofhH=g%+^}x zfO~MGwMG*2O+|4P8noYpOt$`^%2N^S`%z$lM_IemtaH5FD%QC>wLZN5ojI%sz5^F18vx zrwxY9SrTXwwNu&XQXZr1#*Vg4BBfeD5#e@FKsW6s~IU*T)%LJY7N$SEXZdwmSe)Q zA5aY8rmWHIwAYA5GZdssX*TIJXg>kWsvPLe;;7gf8QMLxb?Tc%v&=k`sjI2HHXWO9 z6CxfN5U5XpY-)wbdNz25#*2t8V4&-4jS%fjOcJylrviFsb;;1CwbX(|r{X!F#@5Y! zIcvzra80eLW~S)&?ZH|Edua9oqU)1J1IZ@s)GVpXGPs}72jL8B1ZuTX6EvgSt#Jns zQ2;)&H6t{i!@v7exjqvtyh5(N@C@yca3s2TBNIo&0Gu>g@P$YX-4r1!!Z8EPP@^_? zo0|YvPDxo)nai9|tUe*qgrTft1vr*5kg)dzqJ|nURiu@u0h>JiVThmCE%-(z zL<@Pa22bkDl2Vv-_^F zaW%x&oLWa%xj@sMwHZ5bdta~607A$a0^OJ!eak6N0zh(wtOY0x@q$2t)~F<-BUCy? zu4hfvE1jWJeqtMhNVi(hM2Ox7fmS+y-v1cSS&BcfZ9>jWN*3K2w>p>3@Q<SOtDgNzhyX@ApOQIUh)fqB^!3X|0^wGmK^pbQ6~j8YXkp-W_nt-?)<_uf`a5^^ zSB~gPzZM#Tt(gr)l0zlSRebyr?cO3t?TRlUXqgf_+-0_+ncfi(yQ=FlxbOv9=d#zH zFOu6_i8Ut-x=>e$>A{y4yK59kzPa4CxS1>x+;X6Cr(KJ_tTo8<;9lu2dLQn%@{s|t z41+m&ZIdHxFqwmmYK6&zp}K(>H~Spf9X$Dr0D&T?sYcWA7rEo@8JY-~{f7M30%_MT zamA%jMl%FAc>mD-B!ehDrUJ4pI)+wjS62kj_dyWWNW@qL#K@G}sSxe1@tft2Fp-^;eYJ!o=i zZtLS9Zga&l!en6QqBLa@8(;4uf znG&W$R;8thHFcgPqI-A7`OuUD#8d@_N16dyJPWahDhynYC+JrkBz^ImQ+H+#=fOML z`sF7b6Tr8Uj(ReEQGXIRJ&}es%lVo021Or z78^H+G)dXg9eC#C6-S}GBV@-xb~J3+=vv7;YN&a#^r;1AT)X!`oi<6pveswd8S&b5 z&~?d2KhSLroGp;a3(@uGLBqL9$_2Nqfn-bX7JC+Qv=q%5qvkl(v1%c(E87?X9!OIs zvl#)9uj!Sd`yt~wsMb0ksW}-3%Q|HV^&%tzHU-Ne0XKuGRzU+>(X37#M77ER4Ti20 zu;fOuJ1~M`CtBdzI~CDP%=pc+Fb>B7a!B@GTaRZ&)jk%|W`L6g3*MBkbH?KDj|aVv zmG1v#V+W*jhRrGO)7d;zpyyyA`UsT1|?AO$B)p_9Y4Di%BkFb4g zm#+(+)lST}D)NmrP4pno&Vh6wU;#L3$K7&Pk#7jR;{ZN9NQlneD?O*i$H08i(Iq=O z>}x%2b60?zj^-4(FJ>8FSa!RY&dqy-lSM$2o3!(=x|AkE>0vCYGB#0AH=G(*lK|&M zJ4D|Y0CcVsmS0f%;IfvmMV<+WqH@#9&t^aBN>!)=JaK=!0>eRt3YM*AeAA9Vrl1r> zsf!}cvt=P;PDjlg>38dVlPOZE+;aGi+X>S#V_6dF z(VB(Xyol3|2MyZaeEt-^>~&v^EFZ=necOM6U;pmE7XFAj^Og-WTBp}G4OY*gGQMWp zLExRzAcdjzaigWT3xTZm(d*i1pCDF;l5YU-DG=fcS-~hiGI&q1e}bZC_cU)6m{TPp z+iNSMNwZRu`SuZ5w3yqwGouht5Z&l`vW05?6&D*?3reX1tFsB|Y(}}sD9dRxShsCG zO*lXj1Md_}L1aS1t_V(QuU;l~PVL-tU+FWKUa#z6!J@~ z+$A6r<^ol1h(aI<=Rlo+C!=NkEIs&GQ|;Cb*CYFItUajm_e=y++>fX}t|WkWZ6q~1 z>a=oQM3m$Ti1($8*~J@zLrRx|)iZcN@n*tYS{Gqw*k8$9yZg#w&$3eRU_70fwquIlagCuWR6o z*Cd(aL;|Gi1RQkzyBsAELMbSmPic-Nd2=XV+sCB$;AwlQ;Q)F=KhJp75s;#koNAOf zNByH#Ll90_*boC70*z;{$q>lklE2jY4lrU(2KU(mxBf%5 zN+@cEM#r+QjbdaIgFbU-?E3$?a;A*B$Ol}jca2$x51*MIV77#yuM4cFXmEldv zqOjkdxmb1p(6u~YcoyEDsaueSvdbOO`no-9Ojj*%U_r98oMytfDmc4!jl+J#^|A)6 z4oViK{#;HJ1+e?#r}j z=6Bf-%_kwKq7(@zLqX8WQLE)axGG@@5;YdWG-b`S3<9JQ%6ek8ZpbS2O@gQa;cgFl z@ELtgI$ubrWxM=*lc5DLv8P=k@Dp9#S@=r7UfIC{pw3)v6YkNt8+uQd_s*rGdoHkB zSB8M^TuKlf$J(4lU;OS!d-}~%Xr+?UjLsI|II7Cb*xoB1EO zjAcpTGzmfJNkL7KFvbG?TzBet&kboa>QiiPbL`OtJi<Pnwk*?wmw_hUH$3gO?{#ZvE)ZZ%k#y zngy{PUagC)tp!7?3+cfrLj|8LS||qPRQTcVT-czvB~f)HA*AVay+qL>%)zmHsY1Xg zpd*8CjG8hC=tdEgEU7tx;fPk0^9s%kKC)uO<@7$h!H>#7>chD+U1oT;rx@?m_4^$m^_mcXP%kR#tp#$( znguv$hh%~1dJB~dvLb6l;i`6FC+&mcR2(}5*ys{4#M2L6o+xTK$fZ*^6?LrI!I=Q8 zHN}oY(tl?S9x51Q!6wZDr@TqBb-LKPvqL%^)Pe46VJd6w4^I+%*!zT#IR^fxl0b-% zj?$bvcPMRNd9>|W7k5^x+l31J&7XTW-u{;V6~?r~|M=ebwSF|Vx64*Dfw1CU+S{J) zVunU%Xu%AUKyKMs?UJc>+1{o;vqBJRjkf|xHdIgf!~C+tUXkHu)15bsqO}>WUKP|X zD<}sLYIVh_dUhTVEHIzFFO01X^OZeI#uFi5Qwxx!IXpi0B#538rLx&H1RX}}4J^}B zfqad)UtS1wgGL9dZA|*$z{jeu0ZCUal~~7$aW~ay;OAi*7El^lY z{KALb3gx|K!Gb&@a~cOg79c&+TCM3$4ZAN%TGqgkV1fcAqaZ)Ghuj}gKRiZIU)Bg! z9}V2wnA9xVr)8&LQOvCeYpnLVt_$cgDP?t5XL&j=>O{^>t!qsM&)&Vn13Jg`^%^c7 z5^;#B%JHn(ELjMpWRxR7qc&xWNdN*sg4r!eg7;iLz=y7HuwO3lFF*J`efa>0h^ijh z5>Jx_yA~8g7H3m|0^}*RbznU$VDimcA0${Vs%FV=QaH!%_}7FGZowds+p26xJ5xwx zKvvcI7o-T@s1oR4bqE)=1q?!3e=+Hp%{16@)q8OXT4I3&Bf|pABQ+pR)Fyc&(&MBO zeKhLB601#*Y@}1KNZA(w`udq$WFr+v}T5GGt76={#B?1OnO+DF;dEc7Y&kisno?9T;?;~a6Ib9Duq=+ z<(NRLs@464BVA039;`@Er{uuay_U@|!wiZZHfd)LND6BX+AN?XU_*76o$*~@_wMwb zA>M+#Sq%ANh*J@=8GlQ|IYQ1efwCaoIifC%a@6G$THS!6gh@bWvp(NW4OSf`(%&A@ z58Fu*)v0fRinuu;qcaqW1E#KPV@aT8QY4>JL0r|KFX{|!ZL?#_8-`Iz>}$=b_imuh zWulotmpRh*vAztwl`bIFL*CYpASgf}v<|#(@TEBzdFN}>J{xM7bv?FBjq}xIu|i+y zI&hklrtvAV96hC@r1 zY@U@cK|n}HhI6a)dco$IBZ{b#KM_OrSrtQyQ6N0{Bno9PVSu*_XkAcl1})_Gxx7v| zUmfx68z11|%@z-Dw!k%8^E9!{4#oNm^jS!Y-geg52X@w2P)%#)W#gEvCaP;nXtt$B zH&e0TtF1qm9`t!pClc{|;wbkd;f#|@TqeC4=eo;Q*Qd*G0%!=bUrTee0zCupXa3&1 z@SYbR;DzgJ{QUDTX|}7j;6hPU1Vt#&cKeKIj5W5y(h+;wscqv!JE*;;Bm!)gEw$jN zu2jC3?QoZD;}(HLYp50qR26{e{*SD&Wd!@|fZKw)lGuZ;L}af(^E%sn1cguB;Wr?_ zvWk4*$UMb+Ar@eF*`N+7Z|lsyBb#%(Eoy@WkgDfUzHtDkn@?$D=7A2Gqoo--07MF` z*cbBI0=`{PF9&tne2#4`%UXa#Lb2vwJdsh)BA3dsP?9;;&Lz@Ir zjN^RFcR*1)}gW)gr779<*IczJ!q|KW#z5N~>>ly{HtSvX9JZ{fjA$QvvyuZb{h8im0Rr_ z_0K?Id*D>xK7jTt^+G4o<9?qCOtee_AGOv5tmi`1KsaFWgj@14uU{Uq!Y_wlK_Khq zbn2O)JVkXJ)!^3i0y?rfFvU_@c2N6);z)NWeOM7==!1))rlUa43n*1ZCHi3DkU{5@ z>eye7x+#TBktG9Xi}FAZWaydQb1vazlU47lrm`JWB%nJ5v?<7`K#VsCbKXeQxfAD6 zE^0u>^{mPnd9>G>^D?&jhLbEzsz`Sy$T346TSVVexs2b>=SsJdtE5I~6utdwszXUI zZdH=9T#g2Wsu2nPGb8w`m7xuWHWEf&e*w6fNAh6d=tdk3VTAqN0|t+=3Qmj>d2P!? zAs-htFT32FJpX!A10hFD%;9VDcL>y6yPVn=OM8twKzVP-&8AtOa!~;W@_i0N=6vV6 zv~kevfWB{V&bB*duB1}hb9>P2jy@Gat%`Ehj8+U+U`6u+apjbiARRQT<7z#w+!79) zIpRD6bz4!Mo`fAvFSNU9f%aHI~YlmW28K7IKx0hSD0Ng;QV;A}q+; z1$;iE%&KiJ#pdxkp`kVjRoB>1lV=fF?43s!&mW_*!jR2w2BwZljyz#Wt-Wl!$d$8bj z98?XRB&AkHkP6_3|K+;@m<_4`k*I1}wl#06Y$xhvZi8mkYnQQ;K{RRr?GyTL#gQc` zWE4FO8kMuH>#dH8T5ER7sCjFN?4t*DJdvtUSw9RAX;U@Zo8CMy#=+LNJJe3oP)dz` zZtVYNFTxKkEjX*AIZfusC=;a1e)xIfPLADkU5n8yHJd_iyKKJeR#2WXZQjGydZt2jys9I@JFOS+elRrwd}l$rebh6ku#W3cfsHm2lO&L9=)Np^UX~TK z6Rs7Am$lX*Rqw)`pmf?JX^j#Aa?`x408+95xq{AS@K8`c!jM^e!pM=Z9JEs~)&O~T z;g53(&;fL(zwjdZe5pMGDhTi{)IL2e@qn=fu5|UA;%C;iywGm?kOeR<$D?hjqz^{W4{bxonS)jCW8v~b2 zudCV^9ZP%0!U$@l3<~mmre@*vdSwR-hLFerMAyIGSvKQMRg@-SX*vfr`l3WVQ1t(7 zyzw&HX30jSspe#}C_kUAWjsXfjU9k;OxmrHq0L>!rOB)@G^iOwr5QcLVF!jg+kxiV zb3zDpW-Wl;Sma`S+=$45pb*Jg50>ee)$!>Z$@sp~y>_&*N`PFATFfP8R0l+RcRn&u z1$9h{#CD2Dpq6<-0;c1jhwHk4h#?c8LQDubFc zClp3i2&lIU1OnVBf}ZypK$SCft~_NNh_#?e5)S%t{lj}2NN<1F6R|~>4UGr!|N@uXRAM{jsLu= zO5xisD$BPd<-!tyXQNt$L?efT;cJ;pZdObYL{_R=B^Ernq+r++ug~d~#QgJ2Y@t`> za;hN=L5t4Qm%rE9tk!JI%+qDX#s}RzC zRdb+1+Ncnu*}`=v?b>z3l~sjoE9#PbiP%HfUl~E!x!CS;=lmKUU5~h#6hxv~1M0Am z3#qO5HEqbMuho{7*ZWRKbCwfSx^<{1x7EpZ$=pWKOrSj=Ijh21avMcWLeo+9u^Q#1 zW%~U}$2QkwG$LEREeQ5N2B+&MmV0f$ihr-G%eh^F?bYZD)Yk|4z4~4&nsFzt$g2fN zgi7j9q`j``1mJtW_RH|S#ofp%L|&00a4aKbwCN^(~{W7nxbdYGt*Qp6O?xCd z3nAf?X#^pkAaM1o_bFb<*Dr%$fvq`^{@aVO_(&&8NqlJ?f!7kL;O>9w3z>t#CiSM8 z!)j=i)7tc#$%|kI3CF<|j^t>F|F$SkeLZV~mn&|;LISWUU`eeg)SSN)hp;pUpv-LV zo0U?K?U0MKDOx0bp{dLHFla|qr>vNLa+E@K_3iXAgITXT9+M;2vyJ1V&hxU;=Z710 zM;HeQ9&|Zm%^p}PyzUZy%fI(FZ0UXY>M#1W_@h7i^Klq+fy&Bxn%BB)mX-N6)ttI` z0Q;E*d5wo`2Fhy`?4I~y2Cg%x#YSeRHZ-_Lwt?1ih)qj46zsKyNZv~e6)^%kslb+W&sy~pfboHn1nGs z+Uh=C7n+#)rDtL8rYGdZm4cc6tmI{Br&Pg1IPSmAl_&b4l=OU zg2B$JO@$m7)q`(oe{_zN-gU7(;8o{Wc(}fe>-}0YGP644(T64p#A?Abpfa1#$z`Hi zM#u|CVYY2l=We-eoy+eJ@Qe*lto12uw(89J=A^Z13kUiu)PoC=*{CBP#G`>G{k(cQInIO;%>ySz{^Kl7P+O9!$$|nX0;(x&`^f?=0LB8!qM7*Jvl5^*oY_CRW& zln{_?-P9+&Ick6G@f%gIK>H-H{jN#`fF7hTXK3`FZm+s}7fjucYumGInOYeoB(v3? z+8Xb~QCu?DK^H!9WGU)egGT5w(f$;LAhQLU*=lMkX%89;cvTMD_Pg2J_(O;uA}7=( z^NZZhV^x(3e$AgS%hlGvCx6K+;d*5U3k;P?%%a7$rjs5u2E~z7LA_NJVH`x&QVuD2 zjRNRF(<#AFRm0^4PYp$5jf5*eLq)onP^)S)2RdOJo%abi2+IV8eJ5PE zwa||=1qiiFY?73)u@f>UxG?Hs2h*sZEhcSQR~3m@c>fjSxr>!*lp6%+28?$pXhQzk zeF3P$J>g)(Xb#Eb8;$$zeFQ>Y@N!g6B|~W&)aEqZ5E5G^z{jRLoO-TvQ@lAvd4=p? zUsdoe?R9}mJrMFv9f@*YfrU`X4o7e9XMr2Yif{ePmR1PsPMG+bw)Lv$vl`>H2V|(4 z5p$|X9Hh1n+yR^jxXh|LK?JOnN)fVhR^aATJKEsHu|(;dWOr_y-qbmdjxdo8ss=Oq zTxElB>LP{S$(yDlfhtFXIjo9OAzZbGY!9w0B$Il`)Cuiu-vqNHl7O6CN) zQjAF%(#(-*Ko*riwzc3H1q@YxWb`R@bRG3W^pt2t$RGQVkA46)H_KT|!~2}^)Esqp ziaop2t9!-g3m``838j-BByh*tB!mMs+!kOU;Fuc1Y5aXQL`AI2v8;4c)F_5O^~oE@ zTtYDnw%#!t;^~wt29m8&UI1~Yy0*{ggKwusI2XLGRQ(BabNGWE=HuZ3rhjBrXQix+ zE@dinAYi#$8odWS*wj8RU$Hvq+lo4CtJ8P|m z^wAnY>*d6d|6-XnvY;n7ik`3EMqdNU$~^g9igPA{TLVjq^@(wMPS{{O-hB>{1lTT` z-JknHUwuv5lkGFTUkzqFK+*xs;{uM3%LH02s57J74B-cOHi!2FN`jd*DGHA@Df z3hCId3z!tVoeS$aUsXN7LsgGdU9PKRbKoQ$N$G$Cn)t=7S=Yux>&k6`6wjm$b1Ok^ zv}vA@1T*3jU7yJ;yb>-F)UC;GNrHHzq@@{}I_QFsJF_la7E~G_O9GaTKS?;zb#I*T z=9~dAeQtdZuLQ%zgk?!u417qcQS35uHv}r&G6JSO9*xN?%}Vwx$O73ex}ayZ90UrQ z1W)RumAxZ4+A&fKGC5?&2!JCZQsP6$mHPilpjQ*6%PUE*e2qb>=-7QsmQ~u{)?7xo|WtxmLIZIYOEZkh21;3WjV9b1%`@Z838QjcR6pn3piz^gQIJ>WdNeX zsnRq2tYskp( zId|IAz^IdJ%_x#l54|6XIM>?kju>r8fO=auJoycnQzc`|npUS{uBwfPrtrg=ej;!b zZuK2L=gDXw92q4Edle3Fr-J1B&I|s57W6p1FA6Sg-MXzvQ@aoEA>)5kF~(?iNibYm zuyDJ8CelnBY`=Buo1hekI#iT93nVL&s_VOD^#ZMTCwXK0%Ko@xOaeuw*@{n-0NbMb zE{O)kQ|g|tjWLNWW1FAr;|kLbI7&wJ(g02~ER3MT007Udbt&hLt`lI~ay|fT+1>t9 zWgv=u%M%3!G8C?0=f`qdfLgsV<{`yBh5a)p)}@X4aJmivwEM359M~2G1$HR{Y_fgE zdy4u)vKoy#+PbsP8-{|kDkdTUFbm4ffckhm3AFV&_4DU#ZGqZYL3bx$N%+O-MSS4$ z8q<7^fBeB;KwVd)ncEr!EIVzV>6vOP`gMw^vKv}4|HnnX-A-Ger~fy5SKC<$__@{g zm|yuu*LT^p0NXP>PI+{ikb`dV{z6!%1yA3)Mx7bg*Xzjcdi_}$0OX3aT~KC5fn|{v zAddxUy&$KmDoOj5eMNyxNdqlk8=kGOeIr?^uCxG5gklBO1c1&LU|mqJ^z04$vp~Vw z0#r8o(M5^%`kCvM9xRACxPxg4dz2`4ID#6&x6?)@6{58RzVMum;8DK4KmH#^P5)F+ zqpbvA_xZ2J|LzN(!$?fG_h&&lRz^wUP#1(um91%fiHd4>+z4?|AE-RfH|fF z>$KaP936bLLly`sm^*%IP_^4_WJTJ5dP{{{IBuMy5PV0 zmmk6py!)d~LC6c)?D2#>CW4jRSvD(CA7$E1l=3HW}aj8-5MORPl%Y z@z3I?U%Xbj-yxyQS`QSNxWcinFeufaR8pXKtVpSXlAsnVHk~;N1YubP2myQT#*S{y zi%A;_L8*X&T&uT3Rp+oK%OshN@}Sj~bE;)JSQWNxxB~ zWu8G*?U$dDN5+5o1+T|%d*eNP;5y-*|HD63XTxoegCdo{*IMVpQ|p1^+-k(Wf(4DX zmIsNz(R;`Ee$(*==t>=FBJXL@0&LzfoPGv7Ya9)pk6Fvmgp^u%M>ms*ssD)X4YCG# zt!4)Bei$IN*C>Q<|FxfoFS?uY4`0~hkNxB?>i8@KIiv`dg{&xA^cm~AX#b643fn_# z0fwTPT(YsBDKfumn*h0GQMLyX7AOYbBWSd#*`DP}DW&DYjJ&k_A1-aqOwC9OzLiGk z_g@O5E#UKC()>_S}AS zA830$GGbZOTeHlaYz4G4@X`0Z+XJsDu)R++Vm@F@fploLmk27nkd4A>K1dN$j&o|Q z2`@xlgD7wkN`m5c0T_;i87sVy?qauJscM+n_j*zEJ`%uV!7wbyiIG#qa>yvhgv!9{ z)?57FzT|%c7T}wH{Acj)$2&V$1d^);(IfQS>}oS33$->|I&^E~deCzLq_){IDsH2+ zd0`hEe=656lX&8l9W20{gQOcBV>MLM40l&ND92>HM~aQ+XpJ}bDUOzSnz6QZ5=DdJ z{PBt}|Eynu*H7Poh5j$NkS!j|Uhg5RHgi6kKoCs(m1YVK=8UY0I@k+Lg0+GlX}4KE z*nJJ^G****g{59S6$>;cR~8111-x3oxgw{Ei?bavSL`XFR7Oq(DOHTQpzcS^`!Nbp zT_vEG>vLW8_%5exSuwCvFisjqSq(%e(aZ!Qr?v=?1ebM>zx|l((MJ%P)M@p&OAo|I^|BtwR7jgB!3_$c@Jo%Qsw=pI?j6B3-K*;% zG7tv_9W{|6S-{; z0&f?LclMaCSD5#tbU4>whatdSuy;ZW>FGy3iYw{>df@rR&pe0i{KL3a{u%zGH@p)+ z^WbNd$6W}uB%@@Y6<7PgW*LQAS)H$3L92o^6z!tDFlbLrLB+rTDx|2csp3Sy=_(zB za6|$%w&2k-LFHT@I9qo)lq|( zx)Km9eeZKD=4kotSjJQ=L(~^pszF4n2XNJ!KC4rKXh>##Yp4QsT}?DV_ZYm`Rgz}z z5`u14*Hwe(Ssj;QZ{xEqM%e-8+v*^Xhqev@{hd->;Ei=-{$S1N9NBhSMin5)4#A zH{V_3bJOp^<7fZ8^3sn9C<=THZMlss;6-GGy5gGRf#-9l)2pQdVHRc`~J> zlT*n5anyyR%m9WQ8S?*Q?@yy`%dYZ3@SAh(z0Wzfd+)`Ikb;neTEJMs0!f&*Xbr}Y z*rv;}2Sq|TYuH)k#OWb$X3`X*OhVxtwkR7XR?^rwZPFdcnUz4%2+@N90g^x1JC!TQ)FSzR? zk;?nJ3@Xk*Nt9Z=<)Df2sP;6J{YLc*sJV7< z^gSb(B<3qSO>`(gS5QW+@A2!GP9j4cFZ;P(yxO0%Ana*9v8=gaZ7C*B5PbH+N+tS#(}Z@{Mj4HpIybVf(aK-qM_ zR&-1Z6oF9GV7W+ws$sPg`+;A7OhbA)yhtz{@4&sH=1hWV>@d$JW12~g6bWc)Jmy&` zH&6{98hh;~ z>)yDYnV-QdcjTRyF_#F*0?KQIJV+V+NQ6 z2!;8H3(3sZIG~>l<*3WcMK4OockHFMQG?0Y$*_dH`Wb8S2 zWk5yjfT$y(Oz6(_-t)qWpclpHJzTRA?qETxqt)0TcQm!u#%vJpg<3# zTbeJwSw_6&#ucoud^i5Z8-E{s-l_AQ0KTB05z$Q1L7D{MyGC^=ve6izPEVOxixr3J z_&L8hTOS9Qb3-QYN!g4tYtYnY+mH!m?y=c0$}S;|mkRdnuoR|>h(gDro7`))XSex} zf@edTc?N#{4<5#Y&;MMkhR?$f|K4vywkgy#S}LJfPZ63KM1p>)Iq`X$z)7$=9Fa3) z-gPK;ukM_b1)^R-w_3sB@fNGq4!18>7^hC1u?+2G%UWC-^o{})c%+5>TgehfE-Ggx(y2 zErCzFXfUY_#f-9P&Oc|P8U=kr$BcLCG>CJ-M*xX14@D({$pQ&dstQFtguef^zxQ^W zyyPF@_Z~R~-&Psbd{j`ZK-LTJ(^kKmiUJDbiP%0vAfK)RqtrmOfMiod_^TU9`Mmb=+BiF)8vb3Sy9Dz`RyPx4%06 zzLs>J{d}%Lsn)7AeS``W#3^KfZPTyETl)-}S!7db6Q?H%AZw#+C1nBx9al(!Ij3_8 z0IzRyWE;>rrlSmAW*jaU9Up-B**F2PJlbL2ELD)hjhz}gPxMXsqjmn>_u4_5RkELQMHft)x8oHD5fI{|#2 z@C)~!;b$LtgBC+BvZg2}3clTx88j5E4ki#2rb7Dr*^Ha0u~S}MQ_KZaXWSzBmZlNS zO=d;UgaOQ~{+S_0)7;RESdfjY+HnE;8JvnzGlb0fRyq?1;G~Kdv?a)aadnhU zfi#xBAQi6Ygdh|ric>>OgF0P+zj$VxP@@$5~kO+wi*#095o3)rkYNBdm`HU#KG# zhnvybys$Q}RD+y%0E97afdA~ZZ-jKfe58v$WLEt<4HXsZPeCl``-~!l-FiUc3Bz*2 zc0C|ZNdro+kubhHdMM(jLyFbG4p*Pp*a%^dbN10YUO5FgYSGPMZ_ikv!{Erh@INq+{{SHN9-55D+CAA=uy(^~*i zgqUZ95*4-g;@*kT5QPBpZm2+|pg4WPYCd!y!s;kI3TL%<7m9di3(CdDaIeVKoG6|F z8ObOZsKxm1Fgm@kSb?MUM)2T@CPK=&3>kg%AcA3IFho@4dG6}^s0=7LSR#{U6nAFp*v^Jsr$QW_Q7X+@=Cx&8Q_68#YkU3`1QiRQsL9Y` z`I;4^0>}XXqo%;m@=m2PWtT##TmU_N^G{DGve*n;c4d#1TZGaR~+tecbBx=)>fGk@?#TrT`>rLWWK%W!R%pFC* z4a>k=X4;3?_7snZI*+o@KqDPx@FGLjPQTJMSUQO;8w~|~JfW-=0CS~CzlU*~FbH8d z9t}_=lx>F_XN3RrkN&nkcS3lpU01L=7*R4~+M)Vt4$2&A77C`E6jWgr@Q&~Fqs)(s ze>X3;eSiFVngDuIFpo%R{*#wfc7u2bRknDI~1KH zz*45|K~5uue+3{UK50r3gh+2jbx|Nf$m88wx!2AZry`i7`ZTL?o?65ke;?FksjEDfA~e8h*v!O zUi|vQ@56uobH5g7j&~DPXwK5xlRj&phEBb?P&A2mdQF#`RKvl5(Q46&)=?0wlOu)n zA%I#-Vf7kmtM}sc07)hzdeszz3XpDhH3P(Y7?e(;Fpnl6trJ{^S7}|k*3u4&ZnC1{ zN=vdiH6!f2aCT|R0^k5B1J!>UAv<5u0N86b;;3=bC?;)6 zN3;4GYiqPM*MQ1vGk8ZPpR41U2R%r;t(tn-?~`E!LIY;E0c zQr!E+69<@Y517{rq?u8UHBg%ku^S#wMlC})i|ia?1_+{3yhbAlSx8s1%22A*-P*vg zw5^wc+9-4yQ1eC|ox%t@huFQf85OVurOw}!7q-`}NHU7UXGGS* z=@RNVdaxjSHnKC2$O9rCDX3ZyG)3WLV<^CeBE#h`nw458r1Rvj(pATdc8uYPis0vk z?W@`L!cmU%LUxMidLgdXhUsVY`w$KejFG`R>j@IY|K`*=-E&lmk<4O&Rnx)Tf+n~< znwre23ndJ;$$LG+3X(qetsa~00mgobkywMK(a?9NW7*zr>)ZVLds)_E^e?yXPJOW~ zLD+}_wcFQ~x+Jq|_``y#P}}kAJ6MolHkg1(touA^KctRPrlO8YY;&O&d}8nJSLUw_KX}!^ehM;!{@sY(s@!} zW0@h$$em@~wuEwXh%7BKY4Nteny9Ih&ld2B-A8w3zgxmG!4~+ZCLps{WCdA$q;vuB z*n_y!4$}q5hxVatwPrK4chN>w{>o8CTBm3-scS>)LbeYdqKpa2f)yC8o7e;t$b6kb z$o6+@M`3*z=$7^?!Km4o+-qh9qKb>?f$l89>xSIM)&4g6oh|_KL0^6j{tZ;^@7UB`EV^&HGS7!CKc7^_%nY&?ra~Qxp=i)CQz$#A zs*JT}x5X&SVkvQTYV$Ox0XWL=MkdOuCh(l%(13_G%n>tsS@xRrL zPFhs0s7lC}j*JlrBlVzOIg8k7AT@9XcLnDY0aH?hv@gmV9+ch%3ucM{0~NgR?#FPJ z7kJNj705{qZ(^vYercNQ&?qGMj2FHPE4&Av_1srLE`C!FYC>?h<1?K^C(X7&jVfhu z6xF%GtB!;PRtLo>KR}@MjOclwGy%;Lq%#EH(orn2dy-fEts{0G+8SWp5^B&&6BPx`9qqRmZ7vAkB)Qu6Z&i7c*(rhU>it1qVJp6n3Bt zdKS4HvaDKuDImohz)}&SGT1dSu;YsWsIXyJq|KtuWU4}^#y zL(v+BwFPzzt9dd9)xexQc&(Z$#D%1EQ5zryppjK%BYQAgRQ{L+GTOL#wA~b3(`-8b zK3oQVIXx=(1vF$V7L(ePCJW#`I34Pq=9_(FKJud4t=JEqg|V|uI3wE{64s8#G!n|W z(WX|mW}JRBnvg|jwRLm7k+fFn>3n3e+(Ho?N!j0$F*k%tx!bC7LDz-7B@@U*CP;v6bM6Y5 za$skffn;IrY%lx%YO_60`T9_(N>78=(>quIP%>e@7$5^9XU1gh?qxKNy`>i2@hMI7 zC11?l@o3G|7PfJ9Bj%+cfK!9yUmx|F>s|}`>>QxvP8O8%v?!qM5Go%q4ytzZWc_M8 z487qKGAR$;kQ2&A>)>Xy?Cox{^nNka#ST~xHf8`DxwiP&$2Vb#wkI5n0HlP5e!A{y`a;(C%e?A z^$75Qjc0;vRN)Brp0X=O$Al>Ka!Fq2OS^NyR(Iff{sb6W&7d3BV95(n3*V^*Vw5ehJ_f71 zwP)R<+|#(-s^yz^<+?&RTw7o`mfB%F}4DjFR3MY~&@^e+UE z$pjU;g0duxS7AtCQKcD|-E{QRf|%SXx+i2B@(tYq2`Ezv=Z)<1G(vj_n8Q~FiZr}u zFN0HU875E1gMg2F#uY620zy4L^57WnfBYQ0RRy-PC>8M+vlUyb!|?3EPBTzELJRJD zffO}Hx>p)IS_sl>Fp>`oXdxO{$9qU`x3kPhFA&mx2Ta&oZ|O$go&okfVxM!n?^!ji6(Cc+QrlKU3$a0nMo-1|Hel362IiAu za@p$arSlYlrAof*J-I^+R7I%>#yo@IePhVRI%%exSoDyX42AE_ez>~S&N5$%0znM` zAp|~{K$cw<*z+=gWrhr-nWddk^>z)|-~tDkLUfErvaY-Z#rhpZ=C%`HL*S`XTJIo1 zJA+Zkyzasqc%>(LwYhGa9f3F75QVtzG)4f=HDeR!h0a@AWOUXSA>@}`$N-4G0MwN_ z)RRdBd!ewQ+Po$3qB)G)a~Z&NW2ya1Y#n#QjK%SYu`niKAgh0p&a`GP`1lEs%;4Ky zbTEdk+hQPOWC17JZ&z~kiimr0AK7ew@~oMl`aiMZn#ai0P)X~CDudZBr*%hQ3#0i0 zm>8+3LHGGopox_Jc9ON8VV&w3ZFZY?ni-QUn5Dy(1oN0eR0J$2ho#o+fa3PjhHK!v zwpvAj379}LXLpTSqjJ_MfZB=HER{h^3{Ugd(>_>`LdaWHI?7OG6cnh$VXkO| zFCdNRYh)<|bjukS1amh)jLzYzI2wI7oA4+r+O%=}W0e%3<+R#@4leMtynjiz{~h+6id$l`o-!ZJ&1FK%5$yJqEg^iI#`eh5yLVv%}=M+%| z19!TEhv>zN9#q*p&<+4d4qSm-0C_@Yl|Yry1pn7A-&fe#j1#V z6sNA(cXYQkT?}(n<;b#e73iri4_ta6Ed;~yhoRXBj%D_kzUWJc7g?;eBbl2>b9VCj8A;#v+(QpKdg@bQlf}kzs}Z?-BU?`fUMIm zS$3;v5OvN9s3d@(=&SgaGbc<;!L7Tf9gATAMgbI%fbH#0lM=4p)!I0hsE%F}vjGl;(M0<7##!wrNtE;RWd4lVPtQicy>OiR~vtsbM{L$htSX;+`Z#u_vI04)hpp0%NoJmsP5Z^bWWe^S&o#Vc!qsf9o zot|;atlxcG4K*8*9RMEbf)Uw5N{{)x2QBphr4!IWMt9dvyU~vw@(8P$Lbd+}EFcqT zN+HRc7d6Z1v@>KYXzm5FDjLjLvp>4zCs1x}j?^`FdB6Es3u;#0UM{cNDh{^UMGeAf zPcS0R(HX!}AcwO$`jR5(jDXL803o0-V;r@h+Iz{s?4H^hj{8+G!?Rm3)xx@+)m9YH z;j9#E>Z~AIrI$aX%)%d$*V8^&P@^qX`Do;(fS3Y-@D#hZP8SAbRTRCNIz0eSGB6hK zd8ba)jskTKl?ju73z;x;lD%^<0F-s7JrzL8?JUsdQOBdAcV}G`w6Zl3nRXpS7ySw4b3y6Kni_P9xe2D>C_D3aQVGv=K^XoMShhqwg7fku*3nlu?bY9l}|I zD~QQRj`r{*!E5&eCVQdg44|upVgM>?ZyAQP<~n|+gyM#pP1-bH&FUPKdJldec-prX z@#%e0mbf1uS9f0A9<@%m2SBB>puQr@)7-KpX9?{K4@Hh}Z~ z0n!>9b83;^PSQ4+387R!tQ}XO$@L);>F};yBid1(Dkh)Tky~vsyq?s zyvfD^5!m@NbZekr6UJ+Vc_qlJqQ%0NrKp{7YxapILN@{BC@T_X`+%JS;mD!skqcWE zra-A?Ga1c|!9`R(1qiuQcb;L~8iusPTTdUio-PC- zbH*0>OkrBQiQGb+N-Bo#FGRtYnQMn-|Cpc#;X6ValgXyqx@jd>%}GgHwbicLB%PQH zGAf;?*UzM_jgQoI5;Y15T72Et>&I(Z00H`2Y_t(H#q2du5DSicU6KI(ZLa&(AJHXZ zEmriJg{T)}Yw|YeexL&MH@nExxHHY8Qr9Bme938xLhUBdPg|H$pPd;KAc?>^X^qy9 z!d8U?eLO=1;2YLFak6n5q=Gr;J<6#Du>u1{$j&ssR<5Wm#DEG=RpM&bg3C*r%~aZ) zQ8yxtnT%}$Pnum8g3?=|Ykpb^HoF1y%y@izf!n(^*4r~YzJ=0h z)|%C%qZzpuY_>h*vPz7 zg9QOXXV@u67Tt!E<>)+6Q+EQmK^7g-UZQ@v);T>QH-RB0&_l5^>dt6rOQ zDcWAdc;RmNSyWZPBJb#G+GWrpW1bTvo2;l8-;^d!XaffSks}0Rsk*MzVB#!QCk!4i z?XP+gGrogTJ={U3nUIUhs@5VeHS~_c#^xRL=fo0?REE`rzMru^TdD$&7X}L98(#l< zeA!361V8eYpKFSjrP78X|BKk9AsY(-)&s!DBq&;h$WZv&P-KnFnGr+ys?+L-ST>Z5 z44KWVTooxCv9UiMZ`4)*0ffc+k@`b{KC{!NxY*-5r<@S=12Jn>EFI6y z%^r~I?7`QUJ2Pw!kp)O%L0JtH^b5IN9)`+j6T)hcDFc`Y^KMWF`b3M4OGnM&p<|I( zHf}xu_AAfsc#$uOq1n|R(!#w_i`eHw0+tf|?y8+n)yXotMz=PVn4u`je%o~AEo*>I z$C&zp(&^1f(tZT7ZcMR^cZdSnVp%TQA$ZxI&0qk;MUxJuKo*l`NHrCS)D;bK0Y_MlBMC}n;k9cmdw)x|^hqkI|^y#*nGbY1C2e2>IUvNMrDMqP;Z`nMu;MTP7g--I$nx z49y}krwl%Bo$gtj_rQ)d(?qarEr4EX2HY2+-;33P7~7=QDZv6FKNraMk!NnDj=QcI zfe^*Bi3KUX_PmoZ0sD$VK7VYPItxr_A|!VpJtIp{*;+fxWhPZf+$E(KE=)4jisgM? z#K)?W=>Gvz7c2)^?Eqb*l0lYtw&vV$@OJhcM<^WwQ%FJEb|Q{CGnFYVWhy_^g>w3R|k$4r9JZwSdnK<3Ra_N&qT#$>aeg33#r0_exiyD4+~}V_S;?Md2j_^Ra1n&xEv^kro-{Ru9>xIMhN7 z#i=I+dN5fgDER+=pc0JA&;%5ww_cpe(4!WYMT(R_7YVdU`m;hxd4L8xLI|F6P*6iV41NR_>dpk=7_o)jUNuaMoP>3g>I_6l%R=`Kx;N;D=4(FB)ji!E%k?f32Lub z_Y9k3<^|49^NAHCT0?ByeY=wV?bUpD_m5s0{z^u+I zkGlSxE^(PptZG=g*UGY}5{)DAF5g&y^~C}Yz3)19n*qE@T1?yNf%{*5!YAV+mOI>c zaE#A--bdgU-}64qn`BO~7`=|7p2`neM+>Pyv$ZU7pW%f0`ZoDl-r0Rx!!WoF&OkSF zUCZ8#t)W#2SIXhcM%^Gq)M=^|17Sl%t#MhbHM1>|CG;SYfcZ#+Z(XmnABX{_gI{T1 zfU3%PKpw%61IjzZcY_e}rs}W)oVbo%2m6KDg8|XNOd7`z(Ch;b8Oysi$m<@{6N}iN z;)T7|izP2n*K*OUX6dPRqK2W`1mu;~D%gJK4MPTr?yP*Q;I)X1$=onHsjXs7!=WP5FVH7kywUpa8*ig7>% zeZabgJ@YJNN?aaK0sFy6@pWs@TmU{#HK?-h@%|r|*lc&co;sd*TD+e2 z!9t*&`Y&BjcBr<8Lor32aMZ*c8FR|1K=pwEl$95X)(y+ss;@09z_A@d8JY=bHl|1S zEd?sN$_C$4H+o=p`IR8jeEjqja1xPi^> z{vFK?ij8xq1zR9WXZ%j z4O_tAX>NA}tN=P4&d584oOhN5sE1pOttB^)TgIkMwZ$4N4 z2}9i-2y-g#9&$f1gv97VQpafqgg7#r_5PcGw@9krgYSt!&qmMQldYFPd+posc3QC#-Vl_?BEdF{1>Bcsw5|?xWTHR3|g=v6gy?=9x%k)jNr670;lg0_j-io0XcG%)ih+5vbHR zLQsuj54H0xw*K6n_*vk;cZWUZ3$>`+fUmvt1U{aoj@ASrQlN|iFV62I`Z;**X3*H! z&J!!7Akl_$k_;5E^El+-eJv8AF2#cYDfR4i)h5{gQzPx&CJUUV$~$WQZO`I?$RDCt z&Kd7|*SoOYZt)Qx@e#Ow{rVm68OITS@CSde_p^`rn2$l<_jkOveLd}ig+Ot9Qy8T} zd3A#M&=$VwONU${S#&)Tis%Y+exR_@65QyqJH4r*PKx}Rrh2nLg#cbNcq`g1u~?uo z5y}$_EeLZ*Dw`tFC}9YB3xxi(7ZLMsO(s>V&!DW(oA}-xuNtCl&fO1<4 z6397>0&wQ)TyW(%j@OKfX`J}9CeS!QZgj{4P_E?QS%Z>N7B*Jr(5X608I=3)&OQO! zY1Uq)GY)fumQ;gJ=uR0t>vzwG1+y!&*nMM`CKCXqi5z6`CIJ^*9lnW>CPFeK)ElCC zp_=|o4gGwi5k_~RMYi*CsdWKO$4>ELW1~BO6jgE!dv6}rt@Yq>bt>nUvPp2JEh(7S z3$oSLYtg1U2~_O9eV>l%gwf23`fs!WoM*mh2vPX0k~ySgxP2z z=SdNvNi%@FUNwKM9-$cLs{Vh#uitOtWeU-OZGx9Zq< zwj^yl=+ZHq4sMX!63lYpo|jzj~H$VI+x{tVyq1)k258cE( zYDae3u_4?o(1JTMcp&R6J{yHG>pTI}WUdOpR#a$(;e6JG?zy7sh-|6!i2eY8REgB3 zjgw_zWKhb-w5XXKm@Ft;2iyv6WPKJ8wH0Myj=a?`2($))XY0FR4q@3P?B06_nbIB9R*0!T z`LmIzx|Rnu?wGpJgs6j!2q+K%0}D)1#_WLAcetudu^KWW%M^$ptqn*^bsTGufEr-2 zJ9s)Cx}Nl`p*hukIsn3DzmG-&WGLW8Mmm@wH+x{+2Uz6Ud=DJ4D&PwSP91ru>vler zy|Hmsolx-_E!*ekou=(^}U?S*Tr~k32BaW~S3tRd#T!DMbPF+BRP_ z5_qk~z6~gX<_ZEBn2ri)QGmmYl38mv#u{9K1^Mc%*T`H|7M-3-&Be{xuIY2pxG0%2 zTdHf+v;T^EG$8@4fGRFJAugm*b;8>Z9UkKlM{Th5PQi?}J|dX&)>E z%8t5Gf&)qFV5%|FAGRorFL=pTaMh-rq1O#VYX+-U_*ecM{JZUt@xv@qwH?%eSZBjP zC_ES_6pNg*XY*`@Ix=n%d?4rK6brl8>?oWX`ZOo)aD6mFMh2C`Ky^U`DRyAHR=p`% zfEB%!4$8H)>yk_0Ir-Mcg{&A;5+f9t%mE?R>xpGOFay_D*T6F3kglqc^CC;9H@U%U zKpl?*0zI?8i|KyH;qGrHeHIaDu#zRl8-{e!MDXTePKC%z`y$KM&_tjyL69JK&mlJn zLxj1hQ}E_W(iB~Z(S?FzPp~YMgd#&RhrFDBROhn?TA2gz=f9UbBspg>a*)CV3B zbK&TuE84_CNr22iG1^lUc1H(Ss(e{*W|)+oC#lYV&>42D;IN}xqWok&vpNQ@nYPLi zc6&pRiI69T9AuQ^IqHJSN`e9iw-E*ql-}qVGc=#@5yW}jpKIyKG(DcWnh zUG+VR`eDvcH6TJ{K*;|qY6nX~@co@0<7bT1vm^=9*1D40K5@xkq?$c)n@gjBA(%Tv zp}S;4J{#gJiS=qGx7c`+IaVI*yUJFaQ_gdjItEcBE{NVed-YwU_ewh8e}}UU!$=b3DNDIjIvaWUI?RFg}nwe7?=sPrC1L- zC=@;hY)i-h&{9B$8M1?_8BTgJ2Sv+5Ct9YazTtA9;J5EvO%NcPt|h7bew(vWG;l?d z+T+LrmpN&G8EXacg$knRxl#PwCe5JedgHhs@Alp{yz{jZKEG!yJUAfKOjt5MBm)>> zi?7-f4+sMI@HOw0y%}cPNo`D96Y_yx9|nCEPESwqm;dr##`k>B_uwnO;wzr={m*&M zbMU*r`@8>M-|@5$7JM_jm`)r0Oa~ zKc{O>kk$m=rpPwg^4veXi=vA8peSl(_PbkCpygVtqHCx-=U7+yP*1URuE?WO;z$)f zpiWJHoDe|p@W{~0qh|0RQ^ob5fqJ+*46pa zn?#lRG>)v(M0f(^ct*Z&R{6l$);t08Gqq)JnY2k^UQ$J){l0AOyGi#z+5x;H^lNkE ztnQ=qqN+(`#krlRyyPw^T_{&O;n^P|ORq!gdkQgRovfG`5a-f+=Tqmxjw)z?ZHjE6 zr{kT5<+Kz4L6Is4MG;u zb=Enb4Rq;HX$_47>Adm?>U^wDO_FkFb`z;O&8;pxA$ab-J{`>t>K*~vgV3Gc&%E+6 z)%~4zw&z`9ldO-0&yxWL0RpA!T*bz=|L579X$Iz{q2`?h-2!yyT(i^j!lL4%<}`wk!Nf1d*!^MPir+L{k4Dvz0uvz{rAZo~HTmaQ&MGiPap+6e0{ z1Is!C2>!T&0u8NBOm!$}UjtzcjEgy8o;idC4^D?kCVG%UW7n>0lr7y?dJp|Ah8!kL zU8lkAl@j|(*C~NF>O>bnB}1FJ@cqU+4P>0|O9hYvl{6O!gshYHwmzy4*nCo|18=nE z`PlaV(i-kfq_sg^*702@t35EvqfcR>pxBh9L`@yyyw}ORD(kL_lRo_3--me0G!aykunaok|YKQPvrd>{El%>{6 zF#)nwbtWFGJq-1-LLgAh4jP-I*jeajzW-dP-kaFI#n;#r0;n82Ma(o7Pi6LjUT*eYTje1?6Q*JG`A=e%`o~wHE!bl119}4 zVL@^-sO+^NT+Sfs3|j@K<ZB<+Vk3lJ?XbX;Z%#E zG7t|4biQDQ6kY^gP=h49(U3S5{|^0JTG(ONIy*iTKBru7I_}q4Uo0K5b8Kq^OQXpB6|eTfqJoF*WC8_cas+2zvLPBVcBiK=>RXe=NWkYgYOAh%a)GmcNlZQ z;bYZxVt`2L6j@Je8$av5To&q}B9mqkP1U7cXTFAbRz_B2)Cx?0-R6`?(eucp(VjzC z>(1)WVjg_VoYQP;Q|W%TSDTt34-|A9TjNld349u@uA)6k0DFcAlB6Q`Nvu#-9ZRwx z8cDD`+2QbL4Zd{^*!jY1)`|U-NNE;i&nSX$Fe7+r&OTVv#OR%%hSCsWqt`;$2}r_8 zZ_m)+i2Hf5XDgb?^gUjngJr5XA(Y`bM>t#*pCP@SJ^C)0y(_&oSXFI(sad6Vo`n?r zaXI3cC|_r^cir#{x&j!e#vX+D=M0f9s}lDd8KGXn4%oyX8qQ^<#0UzIsL34oz35mK zL&d$*G79PEZ6CyYXGYl((9L!&y-;+09vKu5gt*Dpw(Ho7QIDQcre{QBI)*(!9rScSNa^Xr5D0R2HtI`khW^Zo+ahDnt~QCeg!Xtteq8 z&C%1SXrYKQW-!zZ+oI&Y*}b?|Mn+*^&V2@j%G67EvCK-u(kXg6mY@GDA#sr1X zZDfxIpoOnMq&<^hK0ID-%Me|^HSH2s$bbU-Z1!lQ9FCvT9xA&#WF#d33zx>9fMMl=0Nrv z=Td+gTtMpygk(S9a89bHxjTT?9q0i@Dhw{BqffwisO!JKZ77=4hl;I{x!L1XsRZiJl~4JwM>8AR`5@x19A_lVXlpX%1F4SyC3@4G+E# zpY*JI(Wfnb>+y#pJ5zc9hZ2R%5rj4T_L6EbD;0pY+C5uVD%6lY6A0Zav`vxWbSFF? zsC{xJshngl2n7l96&+Br{taG88IGzS`reZQ*yEuS?0&5)H7r}@)CQ*o^5|Yk9Rn{e z_rNI+>ST0l8|MLrm_s|0yOgFk#WJVrGW~-mSjT9Ndl%NV#v_By8ISN)JaKl2&D8I$ zYu{_33g(i(kZ{6zCZz}pY|Yv89{@BaV3)Mc&Yjf^J#)-q%?ndCV}UpF^Pt<$o+xZx z=yN+tECSF_u)KSNJSNOH7d4iUC;wYIRCWtnR3qG7iUI^uM2zy;R0ZwN17iNl%)umGwLO#l%3s&j- zwpQaqi529j-}1p;=jZ2m_OqWI|9<5wUx`<~@|E%LhaP$ef9Ws%r6>LDr+@mV<2A2& z4TfRBo8I&${Lb(E4xahUXW})lc@4hyYrht6e)F5}_)JSdTCdmm@-P2#{GGq^cku1s z{_P+1KA+yf0uU=J7M#62Eh+>pzK#dY&K zk28=iLs|lTVW>gO2uVS4WZl$(+WT=NymS(Xgore=>^Ix+5k1Nmf@D!W|Hy(!H5yi^ z1=wbWQd~UK5GP{&3d6g6tVk&cv!#a%FppeQmiGCp%M)OH8Q+qPCwjs z-u0l;b@lz_O$a@c)+$n^k!94X3E~<#q6lgr%$UcL{t^C z8JcbDv=NkMc)Z|LV%{B<3)M1HAd}eBe&QoQhDtNEx$w@Werw#03I*5wRX_C$_#2=6 z$$0qU9KZPB0~PU18ZePH_tU{d)zz1J?O3zU(;p~keAK?LP-Hm8ZBu7siRyd>t;N4) zu#BB6koh8t3`ng>A|Z&|Hgh&yGFUn-wk8Y6ofGZ#AW=IfC?a_sz_Hl-9xEW zOd%N6v00Z*HiLYv3xXc%PLjUg=sFqLTr7}F4-~Eq*r?9A*94#m5~72%1t~N^GX(|K z7bMzv1^#)Egnc;UMoJijh!ISo~ahQ zhfpQ-4~CkLUE7g=GxY+%YlxgCCL!AiwY@FJ+|mCQVE%YP@`XNDUOcPQ=H%x!pZK#@3p%8mJc_iynrsHElL= zKM1dL;q_uQ>(<)UdXDX_m)xw`LbcCOqjo3F`Keu--KnsLF7^3prb%i)n|R;y@2;)j(_k&xe2) zB3Ln~Qz2l*lH3W9xM33!%GF6b%G##GZRJ38=ZYNXrBnq8&nPg|dD(FoPd)fdi=9o; zD4b7q!8!tyZ%7Nx*C)N{Rdp=Mt!g6X&X2{hH6zkOMi_n~qDEMYWB`w%wN6l<(ONXe1 z@B-IroCPlF>il~?oIwW}>&FkYAsRGA?@BUxrOvH5HL5|{%c6i1LAH!yocL(uvq_*) z)qGF@X6@ks2FhUut`uOMw3kMKuAfx1KGKQqCt=8%Yf9M=f1Z4A*nD-0HYGzag$eVC zHUtzy+=IGe&T-JHEa(!z6vBXcO9=rwh~7 z*8)5w0cTWg^du+;Gr)rRko3?j%~~AwP|XJg=h)%Def=-$S~;|$?LlQ8iFBWpLf|Bj z3>5U?r1MDV))Y>MI+CQQX(y0H0e1z%a>6__=BY#J2qmjc^@f%$${ci}=B0(F1RTvs zsbIAlF>g9-Z>}OpaImF#(@Aq03fnlF(oM{vpk^P;@gRmaX0!bo1*@SJW7_%9tVtQ_ zTH=|IHjK0t%m?}vZvQISp>sr;u)9Z9e!2^@Av@j2^Pzwaw6_O#3F$nA8kQ< z@1s7&VRcb7Gt!|Rs5$i@7W9WBWJ)MIQx0-k z3d005fYfOwJ)4c^ZOtT0r?!`EU8FIgKOS*--zm211ukwc_a#UPm=Cg=`CW>An)-}x zkwL=*5~z|`rpR0cAhSR{lRZm*H0xg9r05eN3jyq$0g0X;L;+A#xni^5#lQ;?GU;>o z3q^(IO#)e;78DI0!#)@VkqQj(0K9iX(0e=(cQJ}KAhxq80?Ji3;S;D`Y6Dx}ZfxJ> zuPgu)@^J}U4zn4hBb}EmDILsv`Lu%Y;wNPJ_<8JR(D=O zrD>06plBvHdO5V9;fE41d>9lsf61483BK;@z7F5}z2A$MzVxN|&hPwAeBS4M9ss2= zz5VTP$BSS5VgSHnk3EJ*9(e?%6ukAVZ^hsHdw&n#@g3jsl;82R4i1Kr888OG*rRa>aSR9Qkq7BUk-&72o z1F+P$q_$$85M4SO5ls#w}T^$Q| z=wvcuVl*Mwe%E|Mz`pLqofATwT2%|tGpheN3$?q$s zg{m_yeh<~@s<~JD4C^Ghx{4!^VGR8vKp>>vakLEfOKZxf!6&J)Fbaxh9i-L?*ur!4 zsiKgYVTi?vx?ZHyIrfxm7{JCR`SX=djXI@*dF&xOk17zUaaV#7D_*4-D^sUn4@gWo z#l}SH*qw4p{sGQp;F}h^VnrojET^b{S$)`#UV0=71_!3`V zf+F=AJ_aocUTY=lzKkHuzt?d9-ycM})=ldiK;xWP&}=~+EQkcL^2{NTF+>8e^L2qr z_p*SRJiB0ap_o0Qm5K;}pp7Lh!xH-u*jrofIKxzxWF}yDY4AzEP&pON*TqLkWiFWj6wBB$fXSTJHduf^3@T~} z4R#D1CC7}RH zSrY;+>;7nqf0a^!CUC7bgH09`Hukb8RuIoX%Am+%QKfY{y4xb5w%%a9EZpQ(guhNw zWH1Hr&hJ6{v|s_I_7w_Ly#!S==16pZXyGX!gHm>6GoFzO*|w<($3;*xn|7_JwJ3lT zfE)XS)EEe}H|<(%|MtD$XMmm^ZuceB+I(*Y9m=vuQ(rGANT=$>Zg7xzV%zb6@b#1zVa)-5^sFt8vy|S_TTRqX=^^#Q)1q9R+vN;F)s*%0yGXA zn!_Q|d-nZp@t8f+uYc{=V4z2_lY8)rANWCScvYZkHJ)AV1oOi9!Mmz4?PzTp6@8el zls#txq{u0epnG@#?N~Xtc8@$mo3oI<*XvipfV$>;65~r(V^~|*BgTBs7^BG+G(}d@ z3C4S}p7Wce==8FnznPG%uR%Lz5#W@1Z~58`Im}3`_a%=j`s}ETSc;ZJQ9yPT7eb2*$fK)8%xTcHM_!%50AQaY0%Wy0a8=d~s-b&4N4pO}`0W zpxb*gN)Pm>Y|fS%{j}BRFA3<^s`sCl6hAA2V7#X5pQpO1lXWr`a{#=i$j7sE5_>Cc zjTSQL@5bvn95nAYLhGd3|HqnHAhvaJYW+LRYjf%kYz|!4Jsebfm8ECI)S>7^qRY1k zkh5juCXTF__OWmQ1E3r#z#u2H7DH~6>h_!RkI(%N{P{1yEABl4@e#iMr+ywk`L1`V z%~%*f;jdZK^~=K%B{O#0zUsGoCTV6!uANrJ$EPofM=)uy&!R#IGa=pTY!CP*QhQof zMf=N4tR03s0WGtdw4y-HT(|}twqM0{(Y-tSmYZ=^o7OfjqXO_c#TjsU?Ok4{Ze!Dk zN?Q`$lOCu|R}{RVtaV5I?Zyt6BQ!64A5d&*?}AOD!Me8G@O~nK-QDVmb>|781m}U( zCC87AzDJgQh&AT#cLyEK&)m*+Me9#S)^*6D*>x7+cvgpb-9_DvXTy}WC)z{AoG}^+ z=^{m@*3SmsYS@yG&F)>K$l|y^sESdd%1tEN5H$(pSo@XmX@_!{QC1~T;k?u_Nv1Ye zgd?zW3Su_N)UvWKn+R!@G2Feue9>dPwNT1ilU<+;AgR(9dVwsmG67fs>rkEz9OJVt zfV2n-FRv>YMQ_yk@$3;gsac(%z>(FI=ve24)N{&@1TTy~Q2SIY2vnJ1J)^a0EbXlU z-*W*dc~I75GlD{C_g+C4JyYH3j)rSOprN3RFk#wa1AhVE6xe^#`O0 zEml|YNuU2sPx`wL^>zPm{{0V1L;7%eJ?%3KmwC)>r0u8*fRO5PG`3BpwcOj5H}1*= zVyXST_q2zPZ>peN*w2ga1$Ua=`6lDfTRlLA7E!tWb%Ox-4eoISVbA3pU}?rcfGTBD z?_-aiLOupk$AO>-LaAJ20aRLZuBb(^j-X_UFOGmqv(mh0M2tf-&R13^U=b{F5^PD zY*Yq+MlarS@HxiE40K3gx(by&pHn7te~)11GnO1C;)A&u)ISAE}o(B?}It`eqTJ3b_Yd$kC-D6<5&pVysb3v18C+L z|8|YFdt=W=SujsFKzX#tG6^mhh{NX*eh^YPAp{sI@AqMKSBq*ZUU=;pSfnkuJHSU@ zzY9Ng|GTuVC=rA>xZ9E$2<0<@9E(2$AdFp zcfS5TX!ao8uj{BR&x%~TqYVoTypE1$XojL|z>DS{LC{(b(Ps+K#@AV?C}~Bd_xDQ# zK%{G~nByg#)cP;GKHQ1#3xrgDl8x^zhBQPkmDx70^Z7m7b!n&pSc66EzkIq3jFFLb zKV%pWJ%t19<4mR~MV6^06Gia#7UyweQv+ZFAroPoI>?;r+VzD1%lvo-*&aX&p%hk! zeg@yodMSd?l9OSO%9X3_q* zS~6#K>hE)-{LF(0P|U)!M9ZFDU*N9=R=;c_Qn+pDE7wSKfcTPz5RXKUB$WxMi$ zUh>p$c{;qF-ob*e&B+{yUJnr|&~zoR@7%b9S7gs&Y1IS5xgu+rV-dM;L~)Of8pA^B zG`PBsxa^x5^X^Rfq!QE}La30OcdAovss(UFG3Xr@S)2a8BNTfJzCjDzX!gq)#DaND znm)}+zlsfF>Q6C_0+d^W4oO4b;fcUo7`lPI=k_rz3%h?Co8k>yJoVoMJ|Y6pN^QZ> zjBFfWX&ey1IN^>=?>X;?Y(d)EGq6zrW&o@OgSi7_VQByC`rv~3Kx$U!l7S*j-M62-SP5xR4VHAG3BIYpA{bo4iLVNr&TP1X~{3#+RouSJ&<&qSaN zBV~fA%cAq5;GqP6-lrumwV*3)sAgjdkR}2WP!a`dq}|Pns$dlDN-Cr%l?;M%l=lt` zcS?2B*}AuRYmrSaQVnOzem)zkQau;b^8w4aD#2ws>P2Y zO$#`>3*#3r^pm`yQ?ZB2P*r8`Y=_?1;bK7vxN!O-0 z&knBKS6T?~2*YU?$XZaCu8$B9iuErL)*@}s7VIJ6MfZ!$1YR@xn@O`g)kxHHoM#fzUaYDU$ZJhFm+-B*?c-RXjmz9_nR#WY6=n0Fm! z2OP|{3z?*=sKXtN7B2;}QE!Ioq)8HFwx3D$7y9#Nt+`Za0&-guAkDLOrkGVUvnEWc zWNLwU+d~AMAm2Tq>oXPy6Y|Xg^VvcGsX$i0gLn^67`5{(Yu1T3mZ{DNv^2WBceYoD zrVfn|(!D}}OuA{yw$qHzmO%$I=x42Cl-@F6b3GfqKMCnUq=9Qzd!mOPkcysn(#ZZ+dwMBaOXgyj&rrPf zu?bEiurR+znk;l&#{f46TjU@ENw8ZF+SKl_L;%2B%Nppe3B@;vW~^nIfu4{pv%|ZZ zsnpKqqPD>5C3vHq=8JWFPn#xio~;Lw1F)X?@UzFHn9HKtOqYc9x>U+q@9|Wx)>b^7 zUr+B~0SKqooe1Yp212QSH4@r)qRsBi1h3T$n!n$Xc!6y&NFX?Itx}y@WJ4-FILOc- zCRx!^K_HgS>lN!{?14-mBP?qC?C=A_&^`}b6wwo>&5##U7cdvh9(*`L>%2ebJ=9^W zMZ1n(H{)9_kBi^Go%eCz#Sf$g37uT}kUN}Gn|c+S#EAgwtH1!bD~jkgl(AY2TPom1;kLyO$&>XL0sTqxi7A88c@kmxb;?lOY2@=P!P}X|| z6kVaBK}vjgTnjbc$~rD(lp5sL_+p=rZ)xh}Ed6oin5Si!N@mgr-Ya7u0dTsh3Y z(|PlSDneri)stm$>KN%YN@oF3Q>-3NXM?19_Q02mJJhWcF0c$1_Qzun1rkItba51I z0%*~!8$o1w96cogq_5W|K?JU1hk2}r#<`?iGci?3shLwlqIsu|mUc@8_R=L~2ydZmjvaw!W#%rhB3 zx*1!479SU>HxxZaY+p+65Td`A_Q#|}R;Ai+2N}r!b`JQcMo+oqMVmmn8JnefIKP!}mtqBc7^)Y}&Y$KCCh&x0ZM=(Sgk zm4<{9+|Io))Ty$wCBD#XNK1{{-xGwd`BR^O7hb)NfAjX=!J8j{xH^bd!xS3yLwS;O z&d!*;kA4SD5p`aj#-zQBn(J7AeYG42I|4G8(LFA@lo;2bGzQ*|1UwIs(qV`ApmI5z?Qjc?O)>qz|KYSdyBbj_Obwl zoO#gf38&=E`)l}*`s?W(EZF%lA9@j(1j6F{$l}4RrK0k(#D+>6R;0wwV)M?VR|maY zvm&upJSsgRGMD37H{H(om|iGqyy#Y%Q#J36b8D(Eerow<6kGfx7HEVw1#>*18#4(O zMM+apHrb~D4iEQbN!x}I0P>hy%v&5ffkOM5m{Z?;PBc8>j#f8t{0J7pIfC5Zj8|c z_QP~Ne2hlVI}0jSbPqkVxzNUAuCiqvqPq)HZS;jTg!5uXAc6@BC&1I>&^NJ!#(j4qA&rFY0@i(*FdrZk zO7x+0KIWqmywNmdbbZD&YO_4DRIYe$4gq+_NNZKJD2F*3o|SbnheH2!Ypo;5t6DJX z&du~p>+0)D7BgGtTm&lX>J|Pf1A?yQ#c?Rm&Y(UGUJG(X(f970;=uI-I1UY`jWuYp zm@)@#l6FyD*xJtKyEftk<)COM@4l#QFimmKvS>zxfMN~RmIbm=WRkNxm4>_-FIUG( zf1a%4?R2x(`#1Z=4HYBkTV@Z+p!;-qI7P#%G};1fg5YoeqR+;CCtE!0>J@y^b6$iW zd)qq!a5!I%#_~oNUr9E98|8@ej!>>hbfTwHyRt^l2Sc&7nU>yLnKWXhiBvtw9IE0O z7IzQ`)oEX5RcM-7YavoWvOh&st%px`VAf()0WcL+b1KEU6GOns*7+_qP55+8m82A` zSW_nx&==&5c4bfN$C|sqG@M^{Sc7{)qAHqbvA-{N(HL zEuZ_@c+0yVh1Yq|uHL*{bSgLPlDUmDOGUHIZ9r551i%Y*IqSI=oqTgWQ-TU=pcm~_ zL}OlQ1|)4M&fZXVBHfqMiI|O|m>RF`^Lm7!d@hS-7$55cQ5IO{+UD9bB2);&V#3Ki z=h)s@;o{;@(eupOMR_I^rD~HtuL^fui@=CAF?^}o3r(2wTytScOit* zTv;kYuT41BmUxCJ>gC2d7anA^bSmA$(gX|$8F04e%}d#Hs)eA4KdF88;2jpsIlDoG zREWeC$z}y1snaZ^6wQ27r^;a@cD}OuO%MW~b^*w`zfgLc?~T=?Evy!5FvTm&1OWSE z1laR0GjNzuX4cxPEyuNi#`ex?oAOF(gIy0GKIlt;@|16STD(4Nf`wPT>Q(r)U;DNA z_m_Ohm*B7cwZ8@cn5GHe^B7D;~eG{%-yY?Ynw?!ezpxNMJ12rNh zHEMeZ5U?M*H!lKobC`kLi`?D7*!4x6BW@f|hH>`lqW0)sqi(`py}(o4i^{JeiY_^o zh^RG-kmKW&1jGeh%3u;Cm%j0U#13AF1xM|do1;O>FHu9lgi-)k8IoLU74|Y9KIZPE zQhl_F%(bJ7s{CSaAV@Uf@(fAW>vOm|LVJUvnd_Km>kev2;fa>dMv!|wTP*8cjE^X_ncSDQ{ zA-MjbtYHCZ1aMvbL$hXCQm1fuVLyB+QoS`ZAax(GFDZdHr4mEPSqQGgq#b`nyPjvS z@36z##$*5BLpc4?%u67j?Q*q!FJ33Yi0q$dl%y`{SOaJdQ(yCO53b13?n_q#u|ra( z=2~%1`(BpH8;{JN{+>hw*U0FIuP^;FnYji?h8B{Y%W7Y0)< zyBi0?3ZNd(zjoD{u90<-t!tOO`Q*y}Jy8U6&NKEeZ}$*?KCxB;Q*5&`%P)5WvL>j*SvS<1!Y2^GC}JHKJ9F%e zF!^s?&umm$R8(4k$1X1LbwBmfc*!%LfggIyo9emdzJXM>L#(aFQoA+HI1cR+48}V3WzH{*xG>!u4|M6owtBc<_E^-PdxeS)UK&a@}z+e*|71 zHo?Mg{^oDuQ$O`n@u&avp9TOt?|ILQ-@WQpufk9N^iSiJuY4t5``XvyE5Gt9@#8=K z<4=82Rzw9>jOLLyU<(uo%0jW|w!5G(wo#Phn}`I+KzGVWM-#f|?J$lV=CRYFLe~W* zMB^5$vg!r1MYK@>OK~RhL=X|=CBi_mrR)R69E|c&M6c@#N~Wqpoggh{a1u;eBOVVN zx~_oxj6{NQO2~zAWx2)B%~s*)F#qiSCR&WduCrC@WlrZ>gFZ1l!WTwgMtKsYMXfm6VAZRp&XffH0p5vs4@ z^qHDMt`;TV93W?+=#|UJ3Zj@%Og>jSx#!xvrf=kHi(k5y4qcQxF1oPb)^GukI zS^4rtk>E-HK!EX3$DP+~TIqtaWgsik#w@t@yjx%vJo3m@$i$#6)y}X9ntd>iHE%hn zc1VKhYL4KON6Xat0dtX5UG>~lOJ;=Av+)^)=QUjEctTseDN9V($JohuRQKt3IXPx?kPTBGR#@8I|Ot!TLz|>R} zoy#jk;kO3;$~DV9ke2{WhUAUy8EDQyvHi3G@*tQ`)V9)j7nv5P6-losW?5<$AopUm zQB?WD-p8b;hPG7$A=q=HE9T@2XrZcKT|cAi3c6Gz%!{rDj!FKA93!_+O0U(uK zwG3;SxYj^5YBeMj^*AyJa%Nyh;0rAbCl1jx%qSh9%!Ixqt93&SJfL>kIp$7Ra_+VV>pbcI7l!f08RXomXjrDt zp*B-_^RN1MKMnK+-D5p?BuppjT~X#hcXWL3Gl#o@SnmcZ>HPgHv#u@%l{ zyWd5DJZlRS)*|Pfj#Wr^kLCj`GR7(4#=EaYgVJ=CjN)VnxAi~pf?t5t=5&I8_uzZ+ zYxh405Riyew8Kzsh}pftI-_sgj=NK>HqCn~g!E_jY@VMyFaZa`yi^}Se4YCrK(j(V z7s+dP>^^4F_2EiKt~%6PmcXdXK?Re>Ml|Ofk)9tOTX#p3W(SW{Ijzi!!gzOQvFq^+ zbk}#_Wybi#5;AhFiP@3*Ru@SXt(MuEP}U$`rRVkBEF(kK6tpV`GXjLOVawKGyE`Z3 zL#Q88XwMz^K(D9HK0G~MA2z`P0KDvFFT)pn!58fPtdxS+yyi9d*`NJcy!53n#g~5R zm*U=g@5MXc`A)p>g)jV&uIp>~@}!FWhuZ%)gR+N=G|?jgiYl1IAf!ODz{_^R;cU5d z4f?W&MDJa{F{GY4H1wgN*w*V){jk?4kjoYNy|SR=f{qLNlrf|XV8ApB7Tt_xryl53 z7?=cEG)Qm-5wT`)WU5MqtiZE1BGe2_7-EV;vw5gX1CLq^YYIwWV4QaV?XZ(woftv% zW6%RtKUQYOyw*l|EiDo4SlJKTlq*4vX`~PRXXape02zEym($G6&`S;c+QlX0nXCG^ zvA+CvW>&{~Mj$MZ=6kt$FYAr5XM21-xzwI1ClTAB+^mt(Y38eBm1C4Wr6%mX6eY7U znYBm`raF^Sse0%BFpS!(B)H5?ftf!`0-U?=sJK{^?n*%+57;7(mY$C9vw*-I2%7h{ z!2V#nlWf69tCXQiNfzi4P#U>br_Ci8H`;@h7*~k{#_x+EY7a6QG->lq&Ax5cp+0}T zj-&0ZVoY5J0}2nAo<(TiI$v=Y1QcYnM>?&TGYZwPRqxQ`7+Zqu9^U44FQn28S|9t!?o)_Y9oBDn_qxJ5a?QtwaTq+k+>$YO@i4VF_wUygB00H zV$mWL9}|1dsPD85=b*2@uNAWhdpn!WyL=G0V+hn@a0e|e@2x-LuMewW;nlBxHGc31 ze-JNw*~{>?U;DKzn4zQjF zJacu1WjA4$drXCKJ}Ns{YUyq*cZ*KlEPQzWEqVj_*-~$PUJIs?BmrvN^eJoLlP{ zElJTkA;CE4cOIt5S&{jBS7J`nIl0^ib{tq_#+ z>T89dDp|83V?wo9TmVi8HJ~!6KD^GKB1^8ug3P$_u4_6^T?#$_(gCt8NNZNUtDOy@ z^>1}5>4L*?@j#rdP&oLr&A~x-Ae5tw`D%`=MfYfm;L?#)-T`SR$SXn~Z0vW?E}-^4 z>45QyBB6^Lgz*|d4ip`wUb_^N6{~Bn2fg3uqCHcfuOQvya#S>M92vVOR+t}OA{UN@ zK}Cz!1@>%NscXVIN3Db{m{3Hb>71}2_ntkehZSu!Q&~I{w$rsyj#LH4dAhzP;}v#8 zW0`IP&;>9Z0L?KQ^%XqUBII!VJ3Yt&2_+g5LU%^tSLxZ^)KLhOl9&n75v1qPu8;44 zb)mmv#UPVDM|Z)}ylup1jiWg`@9EDzK_(Iz1%gp9O(DDO$Lc7+!=~ZqG!0NGi>RIO)OHx2?rR%NiG-FSv zT>xv6ER(t_kY(29nz;fn6n={BId%$cEy69mps-YhpGob>e)nV@fN1n;bvx7*6$r?z zJxz?cKm-*LA>DHX0k7)V=FBD|tKiEpOaKA7V@P4lGiydLX}wVvj!yR2usZPv*#ZE| zl+D0=V*#WgYE{Bc6{r&3aZww!hu6RU^*BF2$7;3O`^>??0nX0O?zq;gU;S#l`qi(Ff0x~^Mv9K!v7I8em@2Q( zX+eTOJqnbk=MJ$4x=9ZKv2KmAR0t7ZL!a+acq~GF7zd;c~#~F(>qo)E&6FSySoC~8*83aY_m=qQ0Qbr-x zZjDBRlENsS`fTsZxRdd}g(~`Kffyw*9r%nxgb{ev3x9GaCVqRAcQ^cxj66;L7?Nd>z`M z9>FT=a*MUue!dykD4ci1s2NN6I?P@pP_MlwFK=i{iyFt_3P6M~ZOu%W#A7^&uiFN( z3j|2)=QGv$t!HfAdzYRqoMXS#lZ;_rOq8+^BR- zh9s`#2X!W;Pt1&*Ddci1;#hK_v^uk|GvqDiy_S7Dn-7QTYKpH%A8VkHeYc|mkzpEf6ba{?7P=Mg@V)_XPy10 z__Ik}Bcl~Zr)CU&tOGW#_Y0sR&17qAbSeu)W-@G)J%1F%_WS(zs3T|}z1ZcGu?_^9 z1%_x1OliidIsVZ;m+vFDA9kksShVU~?O3%LuXZ^0QLbiaJR`sofdlnf-$DR!vA@kP zXwvvZqEtVlJ||-v5G*0XR`^VUTvGIYsW)Byoi=kPGe`IBJ6=9c!c`2xpSQI=XwD%) z^}#NUQOs9!ZiNWW4Ise4GY-2E2i=JEJYbW1Y^EO5+~IV+L@5mF3sM%$qpB?N z@nmh@sd9i4g#K0nC;_R%`?0}4edLWO2U#_m zZCu<5N!vOOX$y2~!F))_ON0i$bE0`ipe(9zVsoF)6VlpHXo2Z$D=I@XA^D-xEAq!9 zLPOf?NR(5r2r%V3_fjN~H8xbI9HQDoLlR+jZoH-^N?8;`bvxs%!czY=HJ=wc@A*KH z>29s)cRrA2Ja`Wg_U^deaa?ZwGB4)Mf;%>6nrrEi(Fk#;TtzSO8Yt zgjF};u-jos8Hox+2xs#G05EVy7RDlJrXhnc%?UGWJr)Xs&o!7RgO4jm0FhS~P@24^ zO9MxZKvx~=VltwNEED)<5AVF|=Su06PRJv`L~;Iv>YDw3Sy;wy2Bs6`yYrSI+l2M4 z6==g4ZgpB7!tOgtWH)D10}2|20CF~f&wJ3w=n4UAtJ@mX&UI_cSS}6W?zDD?v!W(K zR#QioJ?OPws=JlIYgQYXR3Qu2uSNp^Ms)kl0Et-Lj-Xt#?8`PGO|Q840L8! zJ-`a(Ez$kr%3thYU*mv>bTXiw!3XcfK$Qdkh;|rG#gOHpUL!IFo_Rd)z{`wub&EVF zVcKOwQJjcE|>W1CpT1Vn%$gwyp3 zxe)qJsetHat>X|f;8Ad~Szw$J*fL2IOz@>Ca4+7lae5L*o$V~1wflR}+5Gw3@dv69 z2Gw)040_H=CKOlI+Su7}U>V!3)d%vW@BUz~KMofDfA@O%%U}NQ_5L@#=}qXm4ksrk z7={6#_=%s0ANrvm!e9NXe-&?f)0^ofGeJGnpf&1(TqX_skW&GHRGT;zq`n}N zW*DN2uLn0?NY%+6kPyYb)I48A_k{oJr@j=Q`J(6Hbq~A~ulfDoZX70?iv}63XqCX5 zuSHO19%+oRIUU|rn5@8;y!n+WUPNbAzkFi|Dq`RK+@HyQA5y&b^Dy!!fBW!~jg9eM02H{VN^j*i>o`aX2UvN>GuRhnSCE>Adl z+tC(o3eR+`1OW+O&hkj}j22)pbWCNad&d8i1XZ1SGGp!IRiKI{J|G@58LbOGo__C! zj#s4*st$d0vZfg87AY07kI4Rn)=W^Ws`{n=H(xsRCbJ}t; z_r}{DT$2F)Uw-%Z@OdwO0iM{N;hj(1sO#SLQ&rKCxUJyz+8OVe*8r(mhtZYYXedED zh|I1#k47GfCXKr4oqS}$7bL9F>GAN1s!RYbtpOHRN>QJr`~R~S-bXd zp}^xA0RxU2lfHMKb$k&@EVRhFK1PnrAG*d4ab0(NZuq!lj)L-AhsoU@3H`ZL|F#EVUPqJrkRa z&u-NGvn=)hu%)%(bn0pmY8BzvQ zi7cP*LlM$iqoTAVxUV2;Z&c}`K%n%^2&7qmPo4?(?$tAatacJ&bvW`Q>j1DUZm}8+ ztGDu6I$tV`$ZEMA2&Ty&zW{ug)GTbbTl~ep_!j{Hr>CcQ%Uj-p@A;nZ!7!+J`*(il zcjC*w?91?v|M5S@Ti^Ote8+cuM`Rg3*o$DCPSVBBKo}9#)vw5XE1AYKDPPqP1$WLX z;)jZU0OovBmA8vdKxSCmj6&DSyy@voqaCDuX{@5X{BX4mlLlSUr4WW;!tr7Uw#faS z)j5`FM#mXFW!%+YVBi@m9&wyDSkQ#){TT*i3^e1cEEN@)mw5l?MEQLr*vvh4bBC!U z6d{!(Od5zl2-7elrGlZ$*z9_2ryfqmnx>?V#+6xZUm?)M+8K0FAbr8^bYbWms}s0{ zIX;BH`pKV&ULM3p-~CDW-e3QnI4B(@a%B!ck^1R~;-HOr7d^bkYjzO!(Athg20z|| zyyK`j;gW#)SUJ3TBBYIGF!DkX?6NSca?aYPV^jmgqt5Sq;HQ2yIAGC6dRM2)V%u`4 zW~D8Mqfv@FQ=Y-%2^P#$w9FB;?o1KKG$IhBwBy>P+#SwNASV+fGi1lACq5Jm4|hms z33*}kCv)s}Cyh5mij4WQ@I9lVg&S4_TGFvpFM>Cf!pZs|eKEh(-O*%i;lE^D$lVJ!r_32!@+Fj`N|8b6)7Rv_{Ad z^;zdwk#K;m9*0JEv=BWn$`Xn!Pn8m(#fvo?#SrJF}AQwsj%88W%Fl6wJ9(2Ll zBW4g_VYNwPLg|3%NYJeb{W&2I5*ZUfIq;G!OJIwyX2f9i2f(*|;b-H%gB_lAbOm4Z zaWBG;{Lb3~(W3&Siv-%~b+C{<{c=~sQX5(47Nm`usI*1rXXz+WK}TTJ6eAd z3UrulkWn@XvQ4%=Ef6%vKQmD7wi=3wGz(;Cd0wd_M+J&@ z!vK&1(1otWa$;GCN!KF0UTH_@Z);}|DY=?Ep){|te z0f(+V1%6y%%xP4bp>vttO4Z~oBW(b=KB__=prGGYeT>4um1}EUfA&qRx(PjJyz9nw zoNbqwwq2|j%mh5L(*4c)IUE)YS9YLIFm5~TtyDPbQM4a~DQ2;NcU~t|?Vo2$H8`Sb zN1NU@N{_U?))!#bI+${O238r}V$$>ZbgA`%>txJ_Qj3i3y6jTV=EQe>4!V$t()Jv1 zJnVOX5Z1ZJDowa+SYyExmOSD1yuv0A;3Gj1!mUXucC*@&CF6>e@1F!V}~-c21! z(V9yl2Rzk>8P@}*b+5(jhQ3fLSY6qn6vA%XLv{>WC-BJxKAce=TR=8xFQ_jL)LD(4 ztW@!-EEM?SvrcX9qOr{hm?|8>M@a8wa883Lj3-H|MKKDbquAn*{a5Tgs&_IM*#HRr%oUaT( z4+KX#{Mvq4z@p$Ll~yBm)2Ppc0^U;>0H76PUI2}TF33{jNUWDDP>&^ z;9}k#o$Bglcl99G8keXgsmKCIgFm*$Zy#t)`Ty{2&ZpH;5a4iY8~`m^>|;|erq<1y z#O(F>aK0p0r}D{f#Ksp?)2?OzeM(25_?Xk1gw>f1WHjE7;Mk+tC!W;+?0JPMuXFEy z5HuW}4+#|_lVy3*vE3UM*8B9rK}W*E3AcV8m*@SCv61Ev`C1`65Sl~Tm1m-$Qa=e^T5^Fv(E~Gm%ib8$u#27YT#{yaw(5N>}red|nqjm>_ z+ySZM;{Sj5(J=^HbiBabM~AT=V!zoqyXw^*Kf1L~=E!IM>|mk~k}=RoaL-wVQG&&c>d{Ly9_7oaQpE0Ca8!gUyZh)Zx2~f`t zv+?BFqFmQe>^aZ&&Tdnx(1j!HasI&G+tA&-7+en~vwv-ENVAT$8@1Ru)~-;u z5A45)V11Wr_Fzae4$_3>dc^0x?!9>SL$^T3fRxkp7(qVV7%@f_ty>Y24pDc7c;J$tTB!q&euybG6Wtp ziqCTom*^6KwxB0e<79^@v7lSdAsa{pP_JE>d(L?A;}7BMzUg&%&f9O|k&iqEcY-hc zf#1cA=N#Zizw1w7^O7Ek3P$Ph*m#0iA!54ZWy4h~OujszrDL~1DjTi4SW#;2F6 zytF8w3sy9n_3&b=J0S}Q_S8_isxss+NroN|da%$;z{p@zo5=@)+^FJ2Ex=MD_1>ME z>d;^uRX;Qq0vV~^FB^B)5vT%mTLNtebUK8Al}&;q#=KB2zstz>w@tN2?3pGCb(HBD zGxA|U+2~xl(nqn{0nMxcxsy=1DemA}Kr$bydQLu&XwW0;6pnNlan$pRijGAdY7K}U zvQ|s91^SD|fzrP!Vrk>R);YMpAmrZ0DA4iB?e!ppX2S4Thxw>zpM#~Y2Mo2ggl1NX zkU0Xy`ijU>)7;hl{x|xv=l-l{kd#>SD7HkJbS=qXSDN$uY|Hu#-5U;b4 zK`^EP4?VunfEBF4+nm7W#HNj|wY<{(#xo!b!F-%iIz~yBC7CJuzT_1mFmQ?>`T{w~ z+RKLo*b+ooky`>VX-(C5QYum|wT6hTW=xWvi5_gaO>}CgEWBTX%HbC4FzlRvar;Mz zOikL5)tcDaG}InRkZ$+jTfls64*Q`sQG)Z*BcGjMw_4+1n6R5V73-!hmNoTp zq5|M_sr%FV;CO#0@51eSQUI+7OX?#a6L8V#-rJG&%c*`yUdsOY;<$qcVg$=1Z zR8@>G5()_UNSO+>O#x5@1r<7VLdN!qa5I5*y5m{z~)sy zx;e&n?y#G+AIg+dWEK{y5&dGu_I%LV$X-#~?Ro$TX|EPQvwm~JVl&`NKJHKAcOH8f zZ@u*>AVAK_W=Q7@uXCU+Bkfq%NGHIRNrSRS7dBs-!IeePCbNa&yn3qFA7>VxE-$VJ zXV4Elif`ZNNJtxL686zxcY-?LlkfXTeAHdnaWRhgoEJVHufP9YMmf9`_1krVWBeph zsI=bFB_6ZCT&;jv>V+XVzP-UWf9;QBeQm)1^Pm4YyzgVL;@OLvxaa=c_?-Xd5AYTL z>2Kmke&iFde)a-I233874yBHJ z`)C!_Y7R?xq6GLWKk`50)1UoZ{L;JMQ-5cCd~xJX3=y-7wWW>3|NM^Y)_aR*^nGb_ zzE=|fX^`nAP>^~l&X(Y7#)SlWU|WVDdK^&wzCdX0nWA5W5#9H=+~xoZV0|d0YTrNE z;Ue{8_4#Fw!s4>2jwphZvJiUu1<~EqgSyCyJV`bsBqg0j*?fOHzyJL&yaB&|^Km?K zeu1|?`otdnAqrBP`G_@a=wm3IUCMm^j$_NglX#H`pm7q zy8;^oV3B70^>6+;eAF8s!B71CKZ%Pk=y8Sv$PM66{-gKf%fIEfF&`$p;d7qXs3TDg zo*d)9JRZ%s_?`~snJ5~dx?er}=H2CO%!}0{6f26pBMaqUK>N0;t}gOG@Q&OA$<6QpdY5mL+NIyPsk0HKF(EP47@r6|4{iO#D0qd@cBmn$*D>+L zcbORDy2n-)T5LQf?KcCu6Fv5I;Ok~K#jg(g=zr3+B)*P(EZRSw$@8pfYbX7goA1}` zlAcv!nRh_f9znmGNGWd~usGG|NS@d+yBXP@SeYZ z7q)lx*i9Xt`}!yFDc^iQzVL7T4*oyi^Aa2;r5*M80K$a1XaJB%kW$71+2TdA{!aRR zQ(?@7gGyZ(AQbBvRq9%8iuD0RmhW$T{HNk)9(X7I%E!GN-|{OzjcuOwe0IC!W9FZC zMJx~2lT@G=sB61jXMg+x@N^Frgn)~*FBRzqYR8wH5mYJ(poe7#WINad&^`#AARlM! zWX933KtBNQldW=%x5@ads){mAJ#Lhv*d)ZpADvV~8ODM3cIx`QV$DmWE?BcMEWom# zkPBn8>oKQK!ntF}H{Ekm!?QiPCq zop!Y}gDtKCWe7GVQ`_-pb%)HIB|Cg?O=Z#QhZz_Ibk3G_XtHsJta_#*TOEXJ z@RuH-ts$zW3gQ&9=#1>yfN+F?{)|9E+C971G1ob6C{&FP0s$5`^nZ8P>b3PI6+xvL zC<9g05>RK#(%nG?n6!(mtHOBD{LH4GF$n?`68HXlLV1 z(z*`o0^1&jE(xqEGp5=Bd#+uN@m9AVgn9~|w66$d%^LZ4&Y&jSG@b(_=I100I&VNkH`8m2i%p;A!Uo*^$u_NhUek< z#ulIb-@OgL{FyJpCil1)2i)4NR0XN%q9GPwI}ANkIEos18Us{ zA>TD?0G)MDb{F;V38g(-zpmG>`@w2cJj-fMO_;4>E&lv#-h}u3N7wM^tB&!4?glo} z;c-5|?h6xs|KwhL{D1NgUig;Bu=)5N8H`=&ur3R1OOGPJQMW};S`2+QFR?2f?pmyo z2gXzq)>Du7=cJ%P%Gi!Q=A6KNLEjb3V+Rpv(S9N120i0WF!O|Kt0fXKuuh;^fX?E# zgMzf9$TS65*BeQTq1hJ$h-lk-n|-)AL<{q2e<7~0SuYT$C z@!}tSAI|3`)_K6iJYYQ!IGYzZn-;j37uZ;V;FvpXCM#~vn!3-0G0h3ntVKyu%peQm zumupA1+nL=`p^}D@o`Lj!C+J@a(=CQS3nr?I*yG4Zi-al|R%oExX$xZGjm^zS2QFpYN$Bu#SC(aILk_PO-6 zp?<1f&98&r)1Z5O3R*OQq&=jz0l0J6br^p&eZ3ZQ1@DkfX95L=DGJ$5gxQ^)3=bK z^>x(P!JxHSW}w}Nu?Ia9;;1?`W9|E}sQr+vHYVx_{7Z`4J3`3{Vu%nv@h9GmM_zD@ z`#r;+_MKBd|5pn?0X{<;k7r-UhzzORZ{YCYrdl$)XUr5 zoW48I-^Shx(45DB3mo|G-Tqdv(AMNc$h(Ajm+Y*g=nc@G@t6P5P_&uZ!u*MXnklro zjv&+T*Vl>xM$v$^ee|;br|rAY)&mL5E)?DeKy41(xA2S}86fEm4mF677z#k}?6=>* zGv9fJw}16Bp!um{!met^AOEyN-2SK~p7lT9!ln#Z=KrhWtN02j7ikDn2R-K zv+SPtZ0J%!@=TKXI+0b3KL{mA|2H7`hrj#FAOPR>TfdB5Zl&R%HrkaAFP~}9pV5#( zLsoGa-&1ab9T0k|m)`XM`age2UQh4L0*N9Yqaof2;mBg4N*8I!(L9OH6Xb56E1Vi3#(-<({#6tl(fDUI}__KCF#0-t74<^iGhuP2- z04PbDpPbE0RYmGE#wp>-tquO*`ZMt0#Z{b+ODxiiM~7oD1fwLp?HTvt3va&#_n%$I zYM6084cO)$w|Clg_Ha-&B@nO~2i&+gh=OHBDu8+0K{8`H8<4t;#mNpbG4kmEUd`a; z9D~KC^^f3nvT29=;Z$(-?sF`L36DQ;4b#N%u9Rhv=pu``9^fEDZ$PSO!BEZl4uE%F zZVtFWtW70GSkW6A+$l3BoitNHqBR0E60kPD{8AN%g5KnH13(}S;lvYEAHEl)5ypXr z>Y(?^MeWWAWl1PQr_QW9fI!vIZq$Iht|L6@jn-InBfuL%S~KPo!FZ*pBfK<}QGj&8 z>KGnoDjYt~wYT~bYJ2>Kf-3Mw_Tf*J_fH1+4|uxQ-|FdtPuFT^qic8C_sEOi&|Z0XPP zLecNC6mz->JW4p~;jMYf+fhjiP=%DYEM7q9RGLmSi?B7_^lWPgiYUrTknhe&r;P4q z7x$UY7`!%TQpi-A1Z8Dt@lY__WbJj*0UMj-r z>QE%Q*5?DkbhSk1Z?JN~*$VJcBq$bT0Hn9dC#UOp(9k+&wh!}C-BXcw6nZ+W-&h9Od=E$(<4qkZvoi>1tiV7Q9Xf zH5?brC|OH}dDLtndeJ$Y808=vl_}NwB+^Vy8PuNgsC7gdm2e( z3@)^27+nFMcA%|g>@HI=vt~w0h6XJzow*P#j<))dve11eivl*KB#`Ylqtl29PO!_O zUZ&Rp;b@oefTV&0qU$2BvhI27qeGiy=Zi^ji`o$|&^>btIrMc)w9D%Nb6C29$2#kk{B+oQLIkN|Ls)lk{P8)G&j@? zgBCR(t#(K(D59CXv2-}TsYOW-JnJs>Ib+2mMoHMnfL-aalMc^$)@^Ja8}Qrf=RyEH zvOB>n42EEqgl+CHX0032UMPZX?ob?L1mSqG!#F3br@?wgA%YlMXhxwJnCL+cu|URz zamV=S`|k%ppw4H~)>hJtPFcWg8sM242*6#zaCKCf;h9l39j3mofkV4SKgeq@1N$_7 zJ-vekpg}H8Fji6 z*ZcN{Jwdq;HOyit8D$Cwx}s|oU*QhFk5{OS!QK}rza92&(Cs~bP(Rst`v7i0k-xK1 zHp)T!yv_ICk!@-a-8$y`N-=GADDKCXeG^3Nqp7I-+}60GkG1^A>`ifJUyH&C?tD5m zL-y8nWD44QY5&;4A9WeDH|(+1oagRJRKBkwLt)N_BmTvuPu;;t^}2o!j>y-0vpR(0 z&a4=BpZ4dcSqmZI2w3501tnswdM47~=~7HVB{Lqr=LCP^&3}ON-GG@p%!d8~+Jx<+ zfB#_sz=L;PRpk}0xoV3en>}&ItF?LU-%s+k$gZ?&&i7UX(f$j6J_8!iC`GmR!_W)? zQ0J-1^hDo_Br%`Ckrz{$6ShlQu{fIRn=Oy^l=Mry=S4Q)CYF6OP7a#svk*`uGHUU2 zwoHj#M~m1^orh7?uzXxuY9X?(ZPX0r(>jEQGvgCeV&T>)+F^d1t)g zHP^;LcoHXr07|-v%PNQFauNozajH9sF1kUpNUC3*wp2R-o2pE9&U<4!3p$KKL05w5 zzI(x$06=2otT*+;pZPL;!$1ECeD{}q79M=YT_6Y+iy1_MYd6>UydV92{7+x_QarIa zL@9)WVYJ36f(*fW8c+&hoD#ZJaJU??+4k6M2Q7Re&Ax~b@>U)F?d?S%KV@cMr@TTU zbBJ8ayR#0?fFeLf0l9U0U`3E@zk?nU%Z!{DC2+WIH_;=wx`Y5^I@mjPf_K+T&`WqnppmV&frQ3+pr+nefSf9%hRC}V z>w44wFUx|mAkYCKC}eB66-qgVl$EQqqH&WVX3hbR+8Q9#cjl!onxI7#TUUkz3L$zr z@MzSfCJ^9R$0;xLp3D65Qb}y^eo>4zE`STi0vY z$4ZZ&T#4PMXM*(m8mF-@cLb0$F?emATL^XXX7tr6YDNr35U zh7iE(CP(h;hzWT>^xmM^9n^+aX3jv`uxa<}bL0aXqfFYB_psD4o^;LRWf&Yq;FgM1 z_qSP;L5Sc=N|R3vYkcGu3`& z<(`)@p^WY*LLIp#QY6dlYNm(6Nf(w%7j&o6vo(EPhu%XV6ogE*haLIubq#ygO{~-I z9l^*!h71|$Mh~2JmL09xoB7a`&T=5)NIpugSo=ili{L6UMI|+b#sS|Rp}?O%8<_64%4>R+Lj?JQtva6{R)*Q7e>39MU1@ibp1FY*~ z1Xr?4p!1}3WfIL6w@QEZbu?S1)O$q$`v3^pICKImE=76(hF*IlZFef4*Cp-Hyqi08 z!-!=!p@@Qt?|k+%aQ~mW8z2Au58z*a;wx~LmndM2(jigCOMdhrTzlUdZ}{Tp;yf=f z7Nr{Pa)%pRWhiu9kPB9!Z%Tx3!nUw(Aj~jEhWUs?peo^7=zWCHmj;`u7--KZGwq z7)iL=jWlW}%^x>Z!EXbCmn?C{2wJrxRhlqA0oYfyA?)+y+I{Q)w#B&@ycR&5mbCYC zyVpSSHQ4##PkTA;zwd7Rvv2u9eEu)K1+pbf8^)*n>izisZ~SLiF9-bdFZyJRQ-_`Z zG0Czbj5+(CggI*qdvDRM-@#gpJ5ohHoG%Ti(nD4rFg+Q+FAi8m(s(4uE}@L6a!;MR z>O5{B0xd7dz8v7U=x9z-P_Af#3eFG__`n#5T(Q-zE zTiV_S{PX5D+C6#Ex6)&**%@kjy*e=U9>R%f?W6tN*M3_+5siJ&UQ_nwDZr+JsI3Wv z&k-Orj?!KRs$NqZb#3=Rw)+~}Uo`g)zh*O5XukT=Jo|V!eJdQWa7>%eU0x?Pw$e#Z zuA*t8I~;*zAykOkIgQ3oLDLe=oOo@7uWz_h(p=92JzHau*>T=@`;4|e!+~!2&3j|z z&noqvv>4y6i{>2k;1|%&!$Ya{6&574T=V$uW(^W-984mzt-BGsA9r#t129TA;i%_| zo(AncG5eg&PQBwJo{4|;MK8zS`nx}kulOI|fW@r|V@`P9+aJfbzUoKu@o#z%fA6dR zjJ|(LD6?_T`zWVihbtV4Yf!K%L+CPjOBncbr0To>ugZ5bomLY`6X8R3bKjWPF4kbOm zhp>Nczb>h}2_Yy+?H*{Ibg(G+u*jN`i8IJ9RCHZR(Hg%(0`Jlu^XEnKpJ4v2*Eno}X$;q^@ifVkKn ziJnZ%5;CQH=?k<60wWjAENpU*fAODxBA)x3H}Dt!i#K8MyEAUi2N<77_*38aApYz( z{~mtn%U+0gKIa}>Oas=_fX&=vo3&O*>lBp5FlVh>7-!8gOj$D%^Xz}?{?1uzl;&CY zZ=P9w5?@aRk;RS0{bc*p$HJbm_1gqc-@w5-Ab`B6Pb+TkKftxyX(|8P{`_HiJ-ssv zLaH>9m496Z*;7Gko3)fdB2B7Y{|IHJSqQ#Jfs_YwT%ZmQs}_9P5O`*FI$TG)bsFse zbYo5o>*{GdOxSyiW*Z%AWynE(`gEnM3N%Co7)RT z`!=i!C5HT#L6NYi4S_p{665InVSvI3;}H-~4fj6p<{%jgPm^^cT@{oLND~2~>Ov4y zoo!RS5rXzy@JtaQc;xAv>mk%Swh5};?nY@tps}JHX{Yxy-IY-WQS`Z}vQqS?@HG;A zT~!Ye=)H8e8zgAGM9D;KK7m6t%;Xa;V0Tv5mI ziq;`?8#PKbIIK3r`%Tb9KrbkRDbH+KsaZ2w5Qyk`LD`;<1ZiZX4Jq=u&^{yHhXO|# z-PIlP#F$n+_&lLIO~_Yg%^uw9E5H(k?Gkp4CxCBzUCjRa7g9T!cDlYwuRM7`Fk5;f z?YLPZ=ENJNz!Bte=s{hr+y9xK-cOC!fH+~g< z^#w14tO;e(VoCtfNUJU=M4%UINX+)Q8p`Z@S{J9&aHLf+GDp{a*Z`Kyglk610)0+=~Qu#cZ_@hNH41G4`_{mAhO>yDm?~+)N{!| zssKfkXeM*lta0-DZ|0O$ltLCoyNZvjfRfRYWY%>r!YD|{K1PIaiUHj#utsoj6}=?k zJQvHZVw247nL%I)aLP0C>FNkxWaM=ZnOM&e^YqhBGm2wcU?ZJUY&-46Lq?-=5DPoA zpRT54fAh|=<=X@=Fm{l}ZC74N?J)zG3XuROvvw>$XOz-MKN9H$e6Ht{g9ZWY2!Usb zV1)o3gI+Kn7ah0W&Ttm3$;=$;f&diNA9CE!a+uI}If9zL*A!Rc5EI7#m%TTSx9zIR zM87fTT6^!)+%A1fAf%xu^eT;zAdL+I)>C@*A!?yQ1gZ)w6-9X^7Df>%tO5~41+j#J zQr}bQ0wU4|2@nz*Aw6ks?!Bkk&02Gg_s3}FT>G4x;PX8n-pb+^?m7Fcz1D2U9L+br z(dCGZ#n`vW4S6qaKKq`SzIue8yyQ~+)DL|Svq^(?k+2vyc=t2zkJmrrQP{Y3;_vB| ztYF?p#K7p9gif82fdpEVazIXm#k7_DghmV)iZZv^NG!~O3lxD*in6E;Hm?7p0!?xw zR1RO(v)c_wFt8$g+q?*fNopZ^^mAEe9PRpFB(iX98wu8$ zHWcuRiNLU3>NTl7B)*9o%^+$;cb+$;7rR!PtVs(7(Qz?3=kXhS24GQ9feFf8mCX2q}@Cwpmd)owLnYqkqk zgJ9qp=j!Jm4{??oHIN1`v3s*UP~WMLi~3#OrbM7FfG4T)n6g87OsSRJn`%55*clBe zzoWB*ptcg0=12SISly+z6>n*o{6WQIQ*Ho{00Kps8@#8&3J=DdP&`rwnX2xo@6%1= z&lJzR<}&!)lzCu6sVJ^W)1a!nX$kc_+u>KsEfZr@^=&CyS=d(W_hN{-XEmuD2+-OQ zRfx~_dbOlHUxVdvwc&x)@UU^PVRNiKKv9cQ1{Aqg%?Ckck;z$xDy5PKl$dbIQy+&n ze%~YUsLx%6z0(=4KJ_^K-QDjlHDh{_%Q*$lbus065Dlx9jCwg%vZD6F`x>wNr~k^| z7*?CZ$Cudeaph0tL0N0s&l$lh)dzt(`5Lfi>$Ac_$E8tO+v(Z}T%bfX1Dh`fd6qlN zln&U9!D`(N_OvSVw!X;8LMoV~30zw<7SRDT$8UK(RSTQSax)p|V@*mAs|qC|KtXa) zSfd8nB1bmAR7dql`Z;5SR@OEz1fx#2*K9r$oMzRpMBpUGl$}48XW+Gk%;{9?30xqe z{%n;6L|pRQG)m}umxgU}IjGMtXNSKhGAJZS{TVwig;kODT+TTlC3aRZ&k?X>N&uOK zL`4WrfH@lUIpd@EIU65;(^$bMYF4h5Rk8rUI8Bc<2%g&~|hK zA#^B=Dg^L~P^hi!nIU%(+qbMLeiV*nc18;Ik{ge8t;E>5kP&tWG)XFpzBzark#d9U zR!_vc9(V$1Z!eo*0ZqITp%`OEKa+Y0uFTs3pyNY*KmsFC>jK@qzjpB0p)ktYZbs@O z&_y5;sAciOY9gn@YxZ=YlRD&$5poyh@K*SOAJ__)h*KaeBKkeTNRgT(2H89aE6kn* z-VC4=-Egx(Y__GEZFgJ}CZf%P8!euFWkK2^#MOk!30vq=#P)OqKG=xYu0!Es&p^AO zN~n4kISR{+RlEf;np>qNMAYa|jlXw;QoAb*QPLjDWgG@ni#jfOMNVYP2Ql_7%0SLV z8DkWWWhqi*4ba?#t_a__Rp!=HV;Mivim_-ij5&#n)>aLj+{$6j>fLnj zkR>)p2IWT1aMMREIkQq2Ov$u_QL8vx;65^bX@yJwOmWe}T}6vrl|J7*cB@ z1AM40g$SuAwgv-X2DoQgug2RQ0Up5_rC1du%Yotm@sdH-Oq}c3YlN^nDLG7m7XiH~ z9#lbktWt1O`pm>t*j(EiWh`9TN{~WyEN#hSsY)HTB^qIKoL5;Y_il{cSjp=NyobTF z2+X2azjX$t49VH(bj?h-IAqp)8Don^^wRfkRpuWJW4w2U*d#2v26+)B@4#R|rX0-0 zpXgGd&8iDLGu^#SR)Lo zn7ct%QJRwG`WVJM*cvc4DfMI;KHiP+EYV2!-fsucd;(ri;5|v$yNFdrmi3lL(&qM1 zMB1B>_9eta5n&b`R+C3^-bJnIoyL{(#-L^a-~@z?C~~PIAJ>6#N@}!3MxIF3`M4#; z%6J}%(PiFv{n;U@T@d4<53YpUns=FR3EhB0v7{iEDUU!LOSS0Oh~t8Y(Qk~S zT3}oEzn(SRY7GJo$TLU<-<~i&eH*mWW4g75tWgGlyx&seB7-M|XEjBZ+ADL54l*!F zl3!v5ndTOft)ngi3({IDY78xe{fasg$KC#3_j9oGUp%;%4q{cMrd;>h^S{N<{Bk8<-WJ^OHOLwYfxcm zGz;EFKn)9pddeCG^6?!IGI*v2Fq7siq8Om#r0_7KiX|DeCIf9iKZ*zw8P9xpB=d1c z7vJ$M$HH~Y8w-B<0ig>~X$uQBNbd_M-s6G$8^t>vRlro$Ivh{QaLYa0_l@yEX&XgZ zY3?C^@0}tH_XEe)>Ft#Oq4jE&GCT>ZkPx2^%DM=zUs}7s+ z3jpV;y;=Ga7Nm)70QUfrCeoT9fVR`RwjgkblK5qzS5p#nxIrq=bX-D5CCX>YvlDY>)UF|ztNA>vH9I8U-1{0xpM?+D}vyL70WlSA{YvWgW z(CrltCkev_xYDS~P7NQi%cyA~M@(VWvAzSIAm@EFkFPzx9&63(AlQ0BIn?SXlF0!Q z1(Kj^g-mfRh6N%7B9chpcBWw0>o%7$^M9)`_B@7#Jj3PMQiQ06TKe9#Xe)dvR|mhy z+?)sqK|I4Y?kH=>+T$?MdJWi>p_(xlS#8F)CQ~q~?`62sw!?E z!l>wTMv#b~j-}L?D1YZ95V>TqGXNoHH5PQ*nLNLMNM)pvwP@E!6OqZ*k&TTN`&^2M zyKDpoEN#+WQbS2(BS6D?2|9nUxr0h?CS|hJ_0)Meq&P3Q&H^1H zq(#L18*8EvBss(f1;(uXmg~>}v;dkZ6gHp=5W#V$#;Kl00A<0bn*y3!IHL+02Cw%B z^I||rpXB}21%%9nrN?U+RDu>z?6{m@{r(;~iX9WT1L7-Q*BDWJN0URWd!vx+sT`$`_I`9UTcJ@})*?ZuRd9xl1b$7Pe_Xo@DfU z6PhCtG$S-y0f>z5jD;xS-AH85gndk?m%Y{P6NV>uI%I%Y4)HJ}=corzU}tu?Lu5r> zmFnT7)ww~C>g1~XksjVwMLaAdPhvr1QF^D*9VmmyCE!q%Wp+9Q@(8WNX;hP?GD*fhh)o+yp@cA3+De?#SzV$KGs9KzgGQ053=k`VTFMV4=jz*C6|QDlS@ zXJ7(SA3)m;=x|fcNQJzoM%T9H7Nk`Xgp^2XV>DU3;ugAN0_GZpYO}~ff)qftC?ZfG z9;(!F9}2vuqI@O$F%!CZ1Bz1R8+~wAC%d=yNQbQ;V*vnb33*?SS>J%?gg6f#y%We6 zz$+QNmJphZ5QVOr7XeY(kNOp}qNOcZM6`z@;x;*S(CWTWFS4v#hcM!;WEsCCHFBsY zGzV4vGS(xlh@LesO_-vxS2d?a03B*Y5#KC@ppw^-Qe9vXkOF=WhV zEm9{DLu6&XQyGjXaIdtmLq!~paU@i1{dTKMR%I6hIji<=27^YOp+*u2!V0$$C8wr= zN5wM$GFG=<^d@r}d94HOV>6RAlgGB-?HFN%;}!^`gnoM@#?h)+TofQVFY_Rbbt846 zEC^{K`a_%sajqQb5Jm|hFw#bgJTvM_-2TPDojD7~!bK=-0jhkDG|^|aIg)$=o#;W4 zm|PuPCN#~{L2$15nq7<942)Q~mMx^H0^f>w860Qu+@tOJN%Wsh6uGNm3jH?5aotkc)FX>zHiSm29Rp} z{Yq4vO?VT=1c;}?LhKcO*Ax>Ods8ri7d-W%Yu0rWP6qYSD3W`xlN@M{ zHODS}(mxEKW*VXK>fZKUA8Qrtpz4FIH!ZkjYfRcDA#I_!MPc^PXhi4% zCITfb3}s$97Uk0WnwRFE0k0iV&5L{PbUZ^>wckGXkI3iH6nX^d+<=jStM4V5aJIHv z)CVX^NZ{q+_xIR;K9;7t`y6wz6HN)SHC|J@8dkR6tHeN{YQO0`+SWIxgvo?zo(6wo z0%i6+4K*qp2W^UOR7JCgD*K{DS`u=clN;hS+g7%*%wpX6{Ft{@y>V8>*IBrhBPAM* zu!vtRQ$%bI4^vubM4)os3=}<^FN=Dj$PcUSATrYCS$-Tu8gmsrtma4LFZ){X1rn-z ztetgq$G?CQv7)6tUF}Iy=qIZ?SFq_?Xt4{s=DpaxA(v-b^e#6Hs|<~-1rycCv!)Hk z#N;r`Swz+`oqwx^!?ml;+n%M1!_#u)ovmbEE)6C~$dFLPsOsK{SE4=S0-7Ks8p zdd{qQ0W)<%Mgq^HCquKz7=RwET94^`{S4V6vG$G!jqZ&oQf_!a|p0jlxk4Khz0?&d_FPX}5_NViOc&pVaGW||Y4ZIQgSvS?n9G%AV1!mVz)!it1sK(QxEYpN`ysag!96y@{?9F;*8KN zXyCmQHYK>n(w|r7ADHrJ%B4mixG)?E>T8)lYgl1K9V_DFEW z#XY+XyD&x;4sEFlEQgHLVGyPlgO^y_WqwdR?x>!thfGlVP@apI!xN}2=Wfr)7+SMiyA>79>*~bls$htyNa9zl?0JQPT<>!YkjxGIUQu)$dl3sBY$S4q0&!Ht{J2g{GCm2}T1s^pK= z0byd$h$v(LAq zc;@ZnRe6`?cjXbQVk-lHqSy&pNi;M>Qe|$O@y9x-U9*vk1PeL9fx+LcI%*1k0XAap28@ zgT7X9sy==#>gWFi1vK)9_bPQ+Xx%fai(i$Ys7iw^MAon=Czg<*I0#h8 zT0t!G4d;T{!`juxHRac(y8hGa*UeK5+dS-tYR$@Io(xm6p&m-xAjD$Tqk`L*ke5TB z%KH=4!)Hc`-CxE{7#@J2P#yEAN-}LVo}}-n1$muWN*Z$4E+RqkofRC(gprQDDPsY` zT465S;I$#D?{WEg;K?UHYsx&q=B1JurbyU*dMFFdo4h;XWYfNM=E*CHuX|)o@u@8^ zF88{3qf!{nds4R>Kr#HRv33@b&XYB|8iO6{%sj~IiI%lSsKLvHu}a>NC#pPF28bu# znxdv-@0{yY#+yH}1K!dO_M%7N}Z z$+lLjanX0%xLSz+vBcwQA6#2z9=relQYOPol*XGmOUYso&QQR%s zPUShiHn^O3oCu6ulw=)O|4!vtG#Shp4m$-Z*_#2b4n~8J5kiU7TO0h0Cw~>Gob=y% zl87~`bwOqCm_x{NGza@H*m^1*H=WGR)&OV@k3o7(jxqvQ5m|kg@6T$SI6x301ZUv7 z{fqC+SvV%HObCY>7ib(Ahi=%5BmG`vQfpj8^l_)k=*lW9ya$r4o)%=M0t{6 z7(v5An#a}^s~#dzb>ko~XfBp}9?MOZ&mrDh`A6CNbR$DOEVM;1 ze~c@UATU^1M*wiI!i0geF7+2e6nv|5Dj#ZvC1NhdS6JBii+4D92$GO`ozpqN7)k8i zE|?4_tU@D?*u7%bQ5(M+P6K8H$QXMi*9M4QXF-!tI{*_#I<7<5jKI86Wf_9uRWA=` z>5D0B4(qX~PD8~@2zd4ALEQmWirBoQ{x|g`cO=kzE|_y@;v2i+ilJhr%BMqv7;faz z+^RhT^WzixeHrbo5mBQPZUDvNef6>As@?h?zo##XqwSeI(t}sMg`O{=mq)2aReQY+ z)!5l#Zi=QQ4A(hJZ3d}V&M1*#hI0V&s<>N8**ru^5Ko>f+Xk^AS$iA>&!1cI5>pSL zO~8l|rtNUQ>Y8H6x)LQ{l;N-_%tO@6+78ozW>fDC%F;p*Cb2{q9TGz!P2diSfzrWn z?0;@;jmvZLSY^+GB(H;HPGTZBh#YV^<+y$wH}ewmM3k5~FMF@dU)h5OvtZU|)DTUs zezvv;RdQI~Wy%%@C=Obq1~yOnJ%?7=o-lpYJflJOUu~GyFi|&(YIq!gSp974(IS9Z zz0h&9LAb3PxfWR|?bG}r+ly)VJ{xaJK)Vr2-3pc6!S5+&2CL`7)+a|jyP~d%Sla3B zvhzoyLPnmERuenhj zVMCaX9PUeSc(geS)1*XS-MP`%`hx9ysm){PiJ!k2_Y$|IQj&3|+C@ zOxKcJyRvq?qWaWi2SncxTLp-WIPO6W*E}}6Uw0Y{$HrBX1?9hNp)9kOO~@>J_qb9n zq4%1DLa72-1tqr-Pb|SJPI`WVw!xxtwO7}@XDU0)GZcC?+R3~qr5$G6P)`MOneBZ= zv2(BSK%uM!hYBNQt8s6cdC2PUcs(wFM_)XYXUc+UX^aZHOoQ;Z2vn$-uzH^UF)RRV z1?6McFR5qAqcj$R^*JG*FF)`JUOdU3?eAF@w#)NEmEvBxto-?|L=24z`Or)w#f-8l z08O>l)N|zudaBl*U4D=h$V_c4>M*O5jE9~roj)37Q4WKiMm-gqkBW>VU>HraCRjwt z&i!cfCrndutw$3B@{~%lphe5=05oOZU@6*mzqjg>PlFobX0)3pkAob*K9{M?>EL}e zJcKj>+dO4{=v1Ar`dBt(H5sEkXd`qFGEfqs)q7g-zSjZvgo&1ora2LliOUzBfyKF z6|c0-T`hmg-Y=f#G7lcPVvXifz4l6zOJs`O31h|G02C;bc@t^rozO9@qARt>v5q7# zmES!QTwMaG=C#x#;q? zr)pj4_=jbkfow|E@y32ei;N%c4eyW5hph#pp(VKIn@8+2qU;^jF?8M5(8>$~kMwVm z3u40igW}YIi3F8&^?nv2HAoSgRgB z&E(aRX`w=Y5q#5_p5U++O>T1UPA@pV#R*9c$Wbks<-a^_TyeLAU&FZv3vWWgjDnX| z?@&?>cDJaF=1tle)V#GSyUmP{IDn~y*TP((AXL1?hUYgglHn#TQV}X<9!eyvGqH-A zXoz{>88**%BK6$BajZrQ*dCJ8L~zn7ut@}h;et&G4818{kV>#eqDM7Kj)4ffpj4Ss znYNlYz`ag3=LypGI2Vj-=u~N~3-Uqbg(-Wc#KxhbV+sVAyZ}s&IyZ)uw&wt_BsA^< zG7)%HYEOi&R2c5o{hc>th7)_VWbT0&aMzE7=U^WxSOc~*ch6>Z5J|=Cq)4G{#iD# zn{s|~mM8&7L28I`#ibS1cX>4-pV%QUBC^5ES-u;3fHuk31$9+KsWP(ST-w#I52KsN zKpZ86)gJw3i_{0);dN(Z;TX7d6ElF&WW>nG(E0m%ZgwjlBzB7MMy6XEF93Pwdxz$l<0hF>iTC4ppKo zbLEOqz3xz;bO4b1fW>x;K1cU77B-Yhm9jRgr`SJMBSMy2HHW6q1yv-p&>SgCkyKG7 zPki)t+PE1+PJgE?-b6Fh4YTduJeKe9n8k})HNy%Pl6pNo? zJQPfP5<2YwfyVk-qRM>@*=3TwmbC_oz|t}(kVll+)^LI|MwPjT8$~wn!3aWZvD7(Y zi4ZJ5(1eZYG#0kjnn`k?pA_{G&87y)@*@0kaUe88iOZrs}A5`kc( zA3A2+a@Y!e{x@MPj- zgbsiuoe?DA+TKMaGLgsZ3P@1p*C+x_(In-=_wXh#P^yuE_HcmZgoK3R2{N{cWWrk7 z?l2(+kTk;5tJf{C@{Gd;obapb*f%!sGCo-uc&v(ZvmM3jIpzVcw;$9D7|o_D6>)gT z0j6M;d9n)Bwsw6@D4u}(fc|jn*wRddyq3!Wv%eD-jI9>5AT&p$u1KATnpP?=7i-ih z$a?FxTP)^{D6V^@x+@~k-WsJH)gdG})T-awH)D*d-TKs*ydgxOAHlt?lnc|7MSg7l z0Timx8GK)$2O=cbB`)9&0H@RovLDmFRG>+=Hb>$nq^&9W~TXRw{4_z4Dk#kvcBpl8uQ7Kwgy!&e_84Nfihs zNZ?K?J2Qpy9c8$3_=T-sT@RF`Rs!`B{{eB1)qY=Dhc z+T8;gB(le%{56?I7lc`?f*6X7Ly?cw*x7i1r49l|fUMSs=3VeO3yab;NK~+4VSVa> z=5RAuGaMxH8x}&R>FYS?{5REJ%}{uy)Ue^mvJL{!@6ED~6^(#4iE&lYp695rC{Nld zYv1<0t;4ucDXlsV&Iq=U1sxXpT!m_esYbcjps-c+*=liUM8Tb#Cc9wgB+Hpb0Ch$F zQ!jaX&|H$u8~15sM-A3RCDZMg(}ee z4{8`Ir_aD`#^z)K+K6bb8%sXv1ZcKJ5A$3Mos;DZgq1fYmJ%vtzW zNO1nhM?Qjgz3W|r&(1sVJpA~N|M;%=-*($=c=Mazj6;VG;i*r3D(-*(``_U^j%{NB zvMB`i(I6`7x%8!>$|pJ zxU|!X=pkxCFbJbPb5LL`HpZHyXU~$k3UdNh7>F61)na2vl%ZOi%}S3r=`rsc0mvgVdSU?~821YwebDwqvG`ds&xTU%iJZ|7Y3I$~3D_dOo|@Q34^bI!qe=beW~J?c^Tzz05n2R`tDxBHG` z-dG585{z(+NKK1mp-KQ?@fvXu4t=Wl{!J+|g%3o)p;l-yP1q|mff5{Z=Sq3Ss>GRv zz1br7a->TFXG{I-75ysGX<%E*LtupzAefc0%vnz*m~4OlgN~7 zG2FU+8QtFOhfv%Kz7N3w<^dQpXq-WmK>-J*IKFY_pByhoDtiE7&8v6Z-YC+ ztp~@*nTELWk?@6cBjXn58qMjrM4wo5Nb-^quYIO0d%s_2@L1n{s6m_qdrsLz7$@9x z?E$1d79~u1{^P6xkLN&>1&f;@MVso2fbnrNtem)w{?>JL(~;67!nN9*33(+WttbCZ zUe*16YpW0hlQ$6A*NW#(4Bb#X{#2AQQ@kXCT4V&17*^aex)Xbu_lhYcB-s-_R0==I z2Hmsu1t1;h!E0GC_zOaNqf}PzRn~*nk9OM6o8u}+{<4j{hDmBD_$dDoyb+uYQHmK&jU^5&5rw6Z%vYHJsH8ym@K!zw0 z3b4q9W-EX;$WZ~H;)DdT)*#7J;hI=sl>*ZV(?%RinMJNDERU*)Y@MIL#K`Me9ad_z zMHYyRRVycyoU*yiKOF8Er{t`AaxRszDe%4_^fhVacj-5Qp~c~r2s!**MfJN1XAa_A zHMmy|J!=okKJC_YZO;kGDp+e!hm4fNB080!ZIOya3uGcJu3MERP2f34lqJUm1ZOBK z&Q}Z~-sW($@myx!JL>f<5Lvk3f(vlL1s4DSwzs$O%2&P;Kl-CTy6e5~dCz+=8jbMo zcfT7%gyWAt9+zBl3I6a8|L}I-aZDQva_FLL;@ayy$r4gquIFtQXYCzZdZ=5Vkq1hD z?GZB%qGaM11<^eURKkVk8FFRBoPL#(V$h!4mV=Phpb0$&DOH$+;NJOYCqfCnCspZxZRVspB{bMNwC zT>Rd@bj5)QLWRhXxr4TI1XoC$JK2>vQEqvS!5tyYC;kbAc{^lvQD2*ksnbJ*qPzOd>&EQ2q-Y(*UIv(yfQ~ap%1V(6UhmT7hRW zTY)H5zAE|c3P&Ab@&&3GXzN0RVEo%GMp7m>nk@-7n}a4)!>suWUir7$69jDo34EfA zx9%g$z46FImdH|9olR|4d_U>@2ZtZIEa+u|JXfc$jKr2nlyjSZSa0PGxIn%Xb(GfNZ=D8@oMx`t5P-l*HD?<#Y zg^s0FQtrr|0DM4$zg5lxXzR;lK?^>3MLt@@)X!Uk=uGuKCC>25 z(xhty>;>kC^_H4tTlwQZ7&B#Qxjq9q5A*zDu0p@6^ z-eJ*;v|8kKG2|*oE9plJM`8>v8#n#W;KDpf;y~Rl@UCJ!v7Zfu;&U*FaEW4|$llw# z82DB&7V7Iy{^U>akcT`3XPtG{u7AJmvdi%3M?c!vkFLGt%;BdGeS@v zXF!y6Pk=J7hlbM91O?_n04;)ie<9vG5muyLT?`I$hxVWdcS}T~q(Xe69R&d6B(IWp zO=0CAUjC32HZ=>PFgnIsagxgJlE)d81dC__)|1N^IB|Uq@A%YbagWnaL>v+FjCJl< zo$}<$9-`zUP_H;cOQxzq`e+zwe-D}l(4vJYsH{V5HhC*uG}L6c{L+WdNg}y$hVHc8;uL$I2B?Z08GeQqEMcIfr{6|~CcU-mU16_wRPR#6VuMb2uu z5Wr~Lgl-Z&(Ky$m^ns5R>n1gBgTdn!+d)8H)p= zm^Isq)gLpan`2D3M=~F_pBP%zUMgLOju4N8k~pqjNl!Ahb)}H0w4(V@okX}o*7d2+ zMdVU(n*pO~v>FnkgcHJMBY5e#DNn4$uhjb-ib7B;2M$~71CT-VgCYj%NVrLN`4DTtposC08z#%H-w zj0AI*)sRy+R2q}%W&V)?+Ky6Zp#yr&0cJfy#AEn~4SgE~TPWKM_yYE-7^+y!%@4xnWyQS88& z9ar>;+=z3l*^($oT7gIG%y_LKy|vL{k(S&-jO@L=iZ5JJctucIKhA4w{IT~9z1x5?L4-P1-%?c80^ph!e&62vt;u# z2KaE+f^F`xFvXqWUSH}VT;wJ+MWfX(Q1PIlEb3*ft!(h!HSs!Tnr~uqD}ENW})ivV1w~Q5uV&KsL6s0 zmT(ThG^o`4Uq10M{P1@?2=D&V7tqHZA%sC6YSt>^5=Jix!|VsY;YxWP#4BP#%H6$1 zcsTQeo%{Bz$~)z_R9g~MJ;US#+XHMpm1l5(D4pYsI7+U#rfDPW6HK6n5hgt_4@e=p z_t?F}1c858{zC`Bj80!4+5SRRH(g-9cN0_%|P462f9gA5Ad(K^p# z(1Ti)6e|H<*o+`BjWE>D92?Wt$n7@n?hjnnn^sVrr?VkNX~ul z#<(d|Bn#G&PC?tWl1goX0Lh7HvT*)qNPZ1*kw*kEDk6cJEJPVhYFJQV*Rlwu)oW2@ zuSApKvcqc+L}kzeJio>a+1wN-oY6fPTB;g z4E9?ckwFdtH$$)9Pj?(r_t;)!?I&ST$LAYFtFkc06|6T+>HheV|cZ?!rq3)a|jmP2-= zm`Pj5UYLxbo=+;C)i^Xp{54v+us@Jw-&*n)i93J*e{)R)9L$L^^BB1^n(i&vg=p{n#qKoC#1@y276fw3qj{g@HABB)bd zbdrPd#nxH z>@{Lx^O#l9aL;Eo?)BK{E%LZrs92ME^(`T^0ouJCnzc?2&n7$-C*&d_hQ z=o;x8bwOA|Od-rclh_oZppZIaxPsg!7+X8j6rapd4q&OpAs$MQ@!+%6e5eG!W3dSc zoj|POW(09Wms<_d!v#M`jDV>0eNIydJzzT^ud{HMD_$Ou@d=GEpfpp6u^NDWJ^L7n z_emfzK0l)@%2X#TO{O5*{wj)q%wG-=`qef||4eb46w>@eK<*+|CJRg^ofrL?&PGT% zfMS*iP!eZ?)wUqzVHYo*oMMKB%_9~=BS{6^w3-p7!SfgZWx=uiqr+x%Y6?T6OjI7# zVv}9Aw@Gtp*fGm#3_x><(1^jF+bH+0iDy}&C4@Z5Sl>6pNhck`%{T7H{1(lOXBRQ9 z(AIl~TiGkkw#XN&gq%krS1np#`3eB4`T_-G?;b||o*M@pAy~9h+fX0muIQ*d$`%Qu zVlcoHNK0N1SQMJPW(yf^oKQyy+ri-?WgQlI>Pe=`@M95QBdf54UCKa0gT9X?xmY6r zY+g~DQ&VzVM%*N=g`-AzK-FnfQ4NuYmbV2!s?zGZPn?k_lCzM<7I6aNtx;M0s~6jqYYEfF6KfmRZOwbE`JWudVS3@oC+ z-_-C6EJje)u`)srZWvya(V}rt+7stug*r1CYounJ;RRF2TtTjCPrZCEN69llF3yr2 z3Z%+jk9Js8WRwy1&jjkXIkN4l5LL|qAPDWJ%8vm&Cg{4Vs%mpk8)mDJcDN_pBH+4? zYp7U(_>}$Qdx?S2Gtf)jf!vDcJucKCP|vLy_leLPipUezh*NE`utzEogc;8D9@z7^ ztf%#)H7sPl9a*7yhZ1QQxRXOUQ)!DC3?@5Ll>OV@s?1xR=my=oMW3|u42?7qn(Z>L zt_LZx#y1sJus!hq;dR_`$KfR}dC50*?;GFvMm+PG&%}5Y=?%A!G{l!)|Kg$$sBivtjWJMwWIGzMeArowAphGHJ|U0D}V+2v{y_ z$l*p*#;{*0bLVqhE6%2T6NK$d=hEb!kP-xq^pI1hdYHcp=-L*CH&-#wQ4IV(xROMG zFxoI&!Ge1IOa>YD-kdPD#>^8;y?Tr-Qe{|pGa_0s0x^;NCZlHtblouqFb=!S%Po;G zbqIl+$%>oOPY%GN&bS*McgA_R?8fWy&M$v{;87J%uTf17$J!J~_Y|ukk~0J&-Ie&ZG0_qQW-rmZ3_QvB>X`HN#ySdpo*ccC%}qy zb>t2TXWpA+cOHlXhP)kC7|_{+rj56kB7;Z`^Dg>#zVnp3<*wXCpA(qJXak$NaZP42t{tcF^c`oNB}_ve5HtKP*D$`iYGV zVaGVu5zlY-`c|M$1%Sn3fw#W(t$6Qy-#hsH=9_QEt6%+UhcZ3!iBH5Y|MD;6QIC2Q z&OZBW{P~~%IX?Q)kKW<)k9lLk!po!?`4&mA@LQY%oCvWh;4%p5>AD8UG4{5BvnFcE z+LsW#gnFUuMT!Nrg&NC7BQD<$v!I)=Y=mb$;{N!x_g;!0dfP+{IM@`@j$<01{PZ*udR@Yz>O%BJQ99v$JC-I>gItqLn${vGbc~>f?|LH zNCBSSlENw|7NbN$CbCAtLOr6B;x0%lIwaFj+MwPT6IvGCh+DE?*pv56Lm>1i08>IU zPU1yVPutlCj>B!+Gra!tPvB=C^d0z5w|vMIlAwYfYUuXL+JZJCjC+KY9@uJ;=ZzOw z^8#oL@#AJQ}VtfhuC%$1%8qcnv4(`O`AZ(=-LL^U|2nYw;S;Yb>s)ODV4QR z>J4jzbD8nD?-+N7%PO-$mpUJQ9?x zQgtQ|!&93}F+~DU!T0Q=QQKqxo+&nGBW%w{=(byA^>Ts$8Yk^TM4n{iwFK%TD3cqT zaVFy~Jo}QTkVla9qzbYe-T*6gpj8tsbtlSr8r-B;$e!cn4eDWz2U58fAjU#eV>^-N zrs%(>B=y19CiPN0aGuB5CJm{rBwz|R3=vp7fjY+Mg;F!jCkuih1&0?(e zr2?+WW7~_lQ4jt~2CpQ+(sw~1Q@Tbx_ou#0nG7nQ0)w_2mC*tr%cD>dg(Kr}XP%2+ zeDC}4E04Yi|Ksv2U+PYfOvsFx_}ECnUOnB34H%!5QysCXs?Do3Ds zk-fdG8!Wm7o$Ee9}0MuDwRNW7)o?B{wx-&}k25ZYeY1Zv2XC!$I6OI6{WF@wUg$c@_(zViT zTio_AilQEp?$fa<^G=?^zV0peFKM*pd+u=_-u@4l_16u5H4f7lZY;R- z*C2)8Y{cMO#8|lHmRs)1CI3?EAxRzy*7NCki#00aw>8Dys<@1Y#xq(ViphK9|z>d58^4_&3u1HP$i zyshE!JhX1_PQVAg_*K08@fRW!@W+>Z7I7Thv+3SQhHn%$`pC*7;EXZKl#^H3^i#3q z&8uPF;08j6XvUHyew&BV-dAy&m%>sx#9xD+7RkFFe8riJcB~H%%G69fB_WCj4ptSLbS?W0L(omjd<}7tZyOp0f#qN zeV%Ghh_@*dnyuht z!C>yL6o9Tlo)T!$AR4rXD^ENZ_=eAy_1h}723=RJ{Lze2ri`=@7gg?qzE?bpRuGO= z5d<+(LuFl{tQ})~ku{=5YOfXx8Jvn7-cr{aK~}G(c|6Tf*Jtq}AaAy^Czw3x-;^cP zbf>jvwjPpRp%OvhLMan6Yk!ULsL3U2K`8IB2$v;Dl6pV^PjqBmM802{T>r3sq)Cw{ zeqh;uI&Y@1dIEZ#q^;2%qvLd^T3_Va(eX zfU6GOf>(U!ML4uQb2;G8HQC(@rx6o5oRd0;5!R|QmZ{PujgAt&=PeomW8%_wlX-fT zAcFw}HRg!n1O;q3b}q(8Huy;bD3*0#Ys=OYqV7)yIH{`{#q;Z9-&Fc$F6SQRp?JIJ z0hBX%MF%SbP-Y;gJg|OCRKp_6ntwo0<|ElBUpaCRuXxl&xOsb9OMn7-- zEOclOL(Vrpf1%a1xkSGSWxd8S2M#eJcpjP89dLPKhZ_Msm$RqJ%K^&y0tRTcM?BCY zAtGC)V?c7!ETR=iJls)aQW&DLWLiyGu?0f<@H`y8=gx2kM#c(m=s zEOUsC3#{2-PnFJK(Q@CnwJ~DirZOl18jw~{wG4;>bil{1x*9+Ah;IV`yz--$ikzzQ ztzsM5WFR$*7!qOhj_*t;q@X?xC#lbW+r<)ifj);^7vZ)(9Mk$ zvY|eyrd3ruj46)Obr>!q5HnUm=|$rw6S_M1hFWPh0RJpgAJN*m8>^ z!1@U8rS?axbwX1TmTChKpvDrZ2U>DF&@y;WFACb0XzDpKQi_A{xxqc)tXm9>6L^%x zqh@&us$hhL8cmigZwgWu!96RMoMkL~Lfll(QdRvnuZm{V91<2BulO4YJc|;Yu+FU} z&$BQXjx}?K(ARcy7sY!#lH|%RM==pXiyI)YzJTj|9k7PYH?2%QU-(U)`?eA(knB32zAZC^G3^|A5LLy&TS)B;b z$UA|OoxL=OWFWxlGzUtkY(Ip39pb4|U^+rtG)~$OCp{R1o=9kNTNwi+V7!Q8AZQ(o zIMrsGSHDt%#e)v?tMYqXly_UyIJf2@ui%CZ7#%ZfZV)mdY?C{;V0sajt}Kh$a!Z^} z-1de3Tg#$;B<+ZE3~Ha4L-V?;594KT|0{3+7RM*>D!U?|N1|)RO>$V7Df+=GqaTt9 zvvKffh=~C`bHyM<$qBNx0n^VIMjQc1+d|Sgm;l{AhQqQ{X6Dsg99KuZ*dw&Z`gKej z3xG~~Yn~3c*F_!5<!K?{`4Zf!0YW(L-i984(y3CIie-l~FQN!fKx2IJ-r9jQ_k-1Bcyj5_S> z{Z-kYErF2a`>ybtCqxB%O?fBYvl4Z23qDqpv7{3?2RG@bYM?kKQx^V!@i5VG$=aN)6v{ zw6X@#5f&3|cTb>=#<9U!J>wR2Ny;3NN9@rZ9$C9940NszwQ2y}yJE03!x%#a1 z>mMlI<;b80XvRHw5s+q$%z4!`FKz?~RA;~Brg$~oOvNy<`^@@bTiS!u!*M}mwC*0S6FVvh2fJqeK)C!ve0|+{1 zX(4OEoD(%X&fbtlHn-(p3KpecaZJnv!j*Mhh9qzm>dB4eQtXTzrsWYM6xlD%2~~t_ zJS>lf)B&c7pBEvs^#F~=RK{tYkm_qWK#Y#wkuhEogSGD}El%a0MXp@ln=$QcoBTXXD-2=oQU%*;2t<;kU%(xM zlx6->MN-m*fIMxHrj48vt+YEQsiony2@D2_AkL_jvR-m4?KGJlJda4yf!rCzW&VBK zSiYBx%?*G-e?zBzUrPf0n}-5{&h~D0Cx-1gV};7CoPjAa2#l~DT;A2r2XX946r_%< z%N|sjUOBhIoX}Wg5s(@b=Gck=kJuyjNuw1}*RR*Is`s4BDg9Z|06fxr)v%BVjv0?d z=5i3?l-#03R8)Qu0L(>J?3U^{xV}YTNdI47$F#9vdZl2@fxwn{CQmV9CXx%ukYj2bME+2>?fTHLs7S%RqG@8PS+6z!2r;4~; zd4CUHNl0^{>7$wU#qiBt!BCoDw<^kU21#N~QN2Z#LX;o}k48X>bx%N>B|%9KjJz&8 zEpDjS2r8`A04X^eR6^?`E@639u6@kx8Af?G29RW~OqhF)3FIAlqHu{wZX~)Vc|8f1 z8&HL*oJgEVyj@KOH4HjTswhUJS;URqelemnpCL04+KkX-Rq_DdXr=ar3TDH4f{Lfr z6m|D_1{M$Yp;oZJV=j;^Q$)GJ!#*u+jdCw1T56Z&?={4TP7l{CvYGn@POGX1kJGtgp|v3xncBs zEvf}SWT9Tsv?A7lVOL{afqcZ^M)BDMhYb1pVFGsqvV>iTl1xoTTj52twmwFA0 zh_EFUhVxi)+AIo-B~jLjR@tWn0wG6%O&Md3@a=QO3Iw5gB)yMGlU~bybJ!J=(pLtg zSwKiMs7Yd1QZJkttcLxq4R?Vyuw&PqZqXbIYAj&P;I&@zT6!&Hmc+;i8pX=9G6q2* zGjR^z>y&_I9*T$G6pNmUvZ0O(>LjYgjVSwhPZF=9;?H?S)P+2a2(y6EZ9ywIL%jb6 zbEFc@h*n{}lc*(NGK$3zw>`s>=M*%tHLWqaeMxc%G~#A(S=0t}F!@)YCD2Qx`0ayftjYitoYMV(N zcfO3-+bD9X7z}vYyp>T{QGj zFYDcGmEs6cIcKbewa%;tXdc^K0&yC=_LCSWa#n~FOqdzP2(OZ+)zGy(OsS}j!q8-E zQ0--=vWBBF|AkI!$RHM7&REy_b<^Q0W5IGNn1Dd&a61>{PGjL%xXelyNKo-0I43WP zlIh;CI&qAOvOEYZ0o5yOK~DndUvSpG9Gp1wf|UC{EhxcEJwyp_QaeKm|f$EGS0f zXDlSa64-PsO-YowwK;_<{99 z?gJKEBV;wG41-MpVAcpAR2f46Qv@vn;v#51i^wjh_Y+ho7R%_AL(Ze3ddQXP;M%^x zO3BJ4^2gHW0g;wMNL(gW2dVSW*XJXP5>hf~HKODUAa-pRK8p<#ow;kw(d|9YGmr6$+ZhqF4u2 zTAXdmpkt&?lMI2XSpiRjcUW?%?v<>?~V48*nHc+CO@oBOkq1h z$>&NdW zPzy6S^uq;fLlqhO6d{pw1UbW>l#XlEkp=_A8u6m1hKDUJ3I6TI+%J9=zQaZ+HjLHUtV~ ztSDp*66E$m+&1GG9uZp(2Yd8kCVw{%Ykdu&evJ7_6=~5mQCAx;lV?^7klO6Y?{Qn0 zGkVR1F(xW!aPg=Uz)kkw8H6;CNQuzT0%)9pHOr)AG^-tAlaW$DPK3NQ0)iCJ<31qU zp_hVJ!u2tajNAn*wwr?e*UudWW9(d-Bf|^H^N91x2($TsDQ-M8EGs44DFXZIeXcBv ztmxN8DV73zYVbz}X`YCzD~o!NI|uC2K#d-@D8{@h5}qfZPMKf^VU=s(Nu^B6$dwh& z5Rjv=pKua|)!VNL{~=~DvAi}#$BMhM8Q_d`Z0uL8W0EBIDa^@@O4EOZW1a<<-v!C{ zFvrPEzTX~_sF+o~c4n&pfqX;&Q#Bx0lNjz@G42EpE|CP01u`~iC5v*dh1kMeppH&o zYGevlSHm3Kb1IG<)|xpQF?4t)3u}!R30&{NYZ*8=0(ziZsn*CS3kwz(rvU+8td9Lm zBOf?t_EUOQ`z&rr#o@G4t*eSKqlS&TF##4Cq)c0s;Ves}`&B57BhUw_@NAJ|phRp# zSrfq`PBsNg@hw{6wk=fpiJYkFv zwVJgFw}|@jxs8Etwh4o1jT?*jlnS}H7j5+A!2}M4M4#UdZ9NAS_G)_ z4py?+opxpba8VYV#m5S5Rhyfj?KgHK625WsB3i<)d!zJS=1l?M9tJsJSSch)jRo@p z^59-dqGY9w5ipI2(~>}!74l)j2qvgB`PUL5xq*A3v(8PNkw>=7fPz99q8kb1hnkHi^q@!< zB~k3DF+Bwp@Ejny2^}GHQJ6|X1!GX?iY<$z*nCgGCvv4M^u;)nHcC6vs9M886gF~r zpBXi>-nzY6lpjkbM>R+4wJ*#W+5~rjlO~R`GsKiC)KuCep%wSG%35SsFrd&STFI_l z1yxL;w-O1=j!*+$jhqvE_( ziD0syypc~4apT~^QW*j)Mi9Sc%wzaBGgW^=k9FRK|`vi{=QwN|A$Voib&ddbJ zTDPc_8Q*NGhJ3zcQu1!PSmWlgRwGMxrz zn#&|T^XnWyB8gK`Co;#J9@G;8l;z44)RkNkfddPy$kulzAO*y!77@y5CSPGy)MZ$org@B-YCNAKHGFM}5ISTbz9;U&GPq^C8 z7VVH|zQD9;J4jxh<`(2AYmtZr#>J36TfH57X5d0kZ_XoA#!b&qnTG^Kbu85A3U1{c zWNMUe?!qeTkJl?7g%EBdv%sNx-7cP2Rh>%YtynN}4G zrxlYe!~T%c3)GB6Z10jq*zL;&6KM)IfG`WCVZE&Q92E?r zUO87_RjDLa?^4TH+dBgyV>%mY9e{G+nU$Po4Y(_cI;aRAvv_O+aMc_eD-Xje#3YU7 z_o!j>!0<#QI}9u=IN*KestuKKQsWB;UJw<&p(||&omG*Pc6VCAIj9FV9T_3a32{nD zYgv?3ma%PgUP2=AXaFS)s%_|3D-UmGgj^-4GJ(uk(St|kN4=zqzeSR|7BObrdSo5_ zB7%|}3_LauHcJkJ8Iu}10621Pzf|R&pu^c zV=D0C0;TNzcH?sif-?^Rb|A4ULKvZ%Fd$D<3GWF!x3xqbVPXclm0Y3(kEgeKLRqjWwFPD4%;&Qw!C3_3NyPs=El`QH_2D;5MUglrh4{7Xl!-ckzOom(=FP zy`>}Bw^UY>&oz)HCY63<{(oZ5r8n&?{E~u+YFXzl(XEnHy+MA70%UPHt4?sUF5lj{lhGYd)lGP2)I4ui3 zk62}=D&6X-mI97S{E$L{(LvS{RSVQvx6H$=d2LeQQsq@&eOJ#r&ZLC~rTtPxn1%f> zK%&V2IH^Of6UbPclAM*w5GGC$i7d{yMlz>?5&D3*&iq3q{LS3-um3uxjRiYwnoaZg0p=BmcCfh@LVh23#DjQ= z#oH{07?a}U%=5w3b5u!ob_oE+D;($L5OPn4ZdMDi0Yzb>g&r0pLTtKd#hcg&dG7AV*N0OFc=ZJT{x!$1%H+WpnJ6aBEM4LV>uodCN`g^5w+zBjmC{iChCk3pL0(UAfVifpU>ZHoEFZ4FU4fOyZW;oQM&7dgC2CBkS z#u!91$+hX%^ckj^`eCWi#8&bvY@hk~*Yn75cw24&N(I|XncQ*W%AI-eY%Q^zfko|x zE9cJj&v4J4=QnZn1zkH#YV6q z&I|@s05bq)LUTC6yqxU!s;pUv0@Saez(y8?_O_^J1tBy9>LL#P<9?(*pgj_hBapR- z7J4WQhxMGJfjqW6idt4PmAz+dMKn&nJ~;y^l)2%Nu3dw|Ew4>*StHQ(G}d`Dh@M8y z03dA2n52n3Gi*14)tM7`qWKqzth`8B6CgKwC_(9k%DC1_pyAsG9%h#OHR{!Q!;El5 zH;J(?r8-(Q+%s`b;#^7!`PJuI&LJ3sgnZWTQ-T*i^9X^;M6zI-I{@GYJ%9qc)p0lH z6f3oDU7N+uSF_)8BkXN?T+LZlM^>^koNNZwv7pi21_HlyF98J3IwwyKw>@b|^S(A1 z0&jMMPtGc#R~LEBfU}GNdd@ZMd#t9J22czabH*rLJlVd3LOnZK6V{l)`e$-I;?7I1 zW7=3?07!(^=-~pu%xIb*o>c}&y|W?9rp%dlBxRb1z5FW}TQs)$G_ljLdI^%;8f8(( zp3p9WZ}Q@e*TZPc?m_0rNFzdHc;CRH3@s*L&KNhOg|URrEP&kOYP`rMDAGvUB3b=K z83S~)G0-NFK*EwyZ4iSkWq_2w*s9YG1da(i^=dR`x$Ey77%>o{w#keq0?@0+$C8bW zM%12(SU&Rv#SCx{3U+%lStAcbv!0k+mWEJkA} zk(Np^lj%lSNJUUy2;C`FI9y3ulT(<+JrW3gPbFNg3R$Dv^v3IrF$ykJ7qG3vG_h!o z3b#~^XLi{R4Teh_>~IKh)(;qD&FD*2K}xN7?NR{ZB9tf`F`Ahwwp1yIS~!Q>qR@jN z9%PgQjAms_ti6T-ZZrwjJ?+|;K$;Za38p%a05Zx!GZaR0xS;{&A!z|B*+Xv3>bk5e zk4qRnfSXi#NZBjg5()ibPGvIf*-rHu1Uui3dN8-hy%`IpER{Zy84r+l69C=}l0a*R zZxn?mEW|^XR#^?UqQHciC@7c{XrlQzra-{NCF1gDcE2Ppmi{1Ck^)~LaCZA1@^MfH2{$20sv5M_NrpH zRYu;E++c*}Z?$VP960_kx?6zFTb=u|VE+@lXO)eD*w?ujI{kVUk8yoPiS95#6yuRH ztj$7UyJ7%32le+oug6Fdg3MQQ#Eb>F)21Xdi-FUxv()5(C}hplyCljF8XP{j4`8_` zj~SgQo2K|>@;2ng6hRq-psrn4HZ7;ZmUyFU+H@=iIH;2ZC=lFAdt+TgMG-G!!K8|2 zBTznOT|=7m95gQ_>spG33Xr^?K%x*v%7C&4&EQ=wjG8qnZhOS?#PUejeplKVrU4W* ze-R`UqIMQlU3B(BD7?y`WdYz=qFd&?uzW;IuC?mN&^~$*Io;bfKa!78?H`rhcBN5) z1KHjXs4%3ylsU)rZz3-QM#+suVA%g2mCn~3H&$t0oNhqQI-VnTW7%NQLF?=YL<^oz zg1XHt>xZJrIoWe@K}Z()*GR0(6Wtp!R^;PgV<)ml2F>eV)#sJ!C6Z%BJ|_kXtm`A2$P>kg>{Z?`R>jXS;RD7WyC;@N9AL^7ic!we#vFh+ zmk@n#37%l@gA9op9)|7ZlJIMksiwSnqC3NLszNS8krsqeAAFhQanQURxrfyV2~&y6 za4WeS4xc1QURbA|U}6vv=G_FhEC|!C6-wk;l)2Ezr#UJl-$RruBY7~9+Ze6t3cEun zPYB$oQPQeGX%Ra$vVE;)0?qYz7Kew-u|gB;u2Ga#S8y%QOpO@fnun4k00efY2Bx8mabTcp9GmWy+HF(ocp7e>n9z=UG%Fpt z?N+M7tJa}gxPnZUK0$NUJhw)@!%!t3427)4A!vv+yr_{lOpn0dmfR&z}6`Cu9Hq{dnK|-iK?hxyC=g*S+qAhd%V7 z|D@*=1J8fZJ#mjS&%k)H=AUQdFJ97MYCdSM8d)jo14S9-aIZssuB>qN9lL+|C#p8G zdKzt!55B*w{q3?&2klkC;34?s_w}#4@1ujykMH$U03(zQm508WbGMUm~MhrChnI)geqLF|n{8LYb?y??t zh9`yFzNZ=z5-?a(bv}bV$0!MnUeOMFud~vZm(|QkKv9hHxZE4(g{raOl_3#QRceeK z$o`g6QDi|V#p!yvp;j`7C0-F$S+B&^QaMLZgPRoTK3C#kePjUI3z? zn=(cjh}!|ix&&j~nh}tK8VeGobtTObrmdYeKk6wqI3@$4cv!o*j1@GODo#<(3cF3& z+8T}SFhl|C)){dIv>SFa3a(wFC>Fuss9x2stPzLi&SYN1z#w5{i%KjIxj000zK!)u zCK8C_9+N$Dq&}ceQK*{<4#lHHnkzs8)3bysG9#Isoyz(limDigPK%!Fv0-12X~M!F zhyt5UD_QbMR(l|mRD$>1idf)dD4u>E$^Ok_)_fAUf#&C4M%8Yeca54hNe#EYl7*`5 z3rawge>6og_qt8`zR-!`5Ee>i(1>A?wQZ)voBRnKgofG1N5!1U-`Hu}dFRRS=5PKcX0sX2IO7Zez-To3ri}$#tZfK5dCw|FYwIW)JOqXW3^xj4paEN=<569# z{I(u#eze~)I2eN&(L`>@p5 zrT#2`SJx<2FggDdm2qRhJ=Jc6sJvq(4+=-RwFOY zr;!MrMRj0tsYaURV2qo=y^5Y(r%BK}u0)3>HggU_lgg0Fy@y($X|xy_3nzb6Mx`!* zHOUklL_uw{20=(@ApwVjvE`Q70GSM6DxP8c7ggj#S+53*%+^wZaJrKz$O^Bla!Uqm zAq1px_Jbe#3{zwi7#vBA0x*z+%$*wXaVqZ`V2`;{CIXjy0U}YT4Sqmy_9HT3PF5dqSYe}Tlu90eJTERp5pr1Hghi>FSM3Qh#u?Qd z)cZq~`CQ?#O<8is5vpg|keC;Jq>viT0WcT{xQwG4A+{bYd6~2j0La?HRfDlSl@JDVl`aWWMWP&_vWUj1`Bf*W?atv`XYIUA0&jzf~68F;B zd~1IdCM!8n>}!gnz`$~VKxQH%uJ-bI5@xLd0SSP-l0A2;_RLc*IDAuT&A7Md4p1PV zGB@(GMHIM&=N@oCp**g<_@)3ygK;K+TgKver5WxamCqHzMs=P;6=ji}B?hkoG-1!# z3hJ@h$N&LB{=Suqx=p%Sv&mY; zY1=sHt+(EMGyd$4{s=$*f{SGwcT*g98#ms$`37F&+u4}zH5%MQ_~?f&#dNxji=Obr z($;z)8RFfo!|<=?mjfBS(C;BWr? z&++rW_G>uhw9^Dr4S5bhlrk4&OHrtSol&*@(;xd7wzs$Nh(}*kdb1pz7<8k4E)BE3OA{2jYQBN({l=9}@(x5*rvp>n%|^N#LWZbNn7?vVx*dzFF9KK5~JZf@Wa zkGrTG0JZmZk^!v}9k*1`wLRDq&_yt!DCLo*-b7^ZJc2|#$GR-1jX{jMWyx+}s za77?Z1jFy}9M)ZC%5cNrWNbTf$mWf23FwJpsIQVmfsu|^XYl>A~*1V(CvebBCfcEsjYC_&5r%wgL^Or!X z=yq@_XZHf@nnJ_q`-t8Qg+y)~I2)Yi+WFkE3Ii%*Ak0Q2c`X+C=q0bmi`p5!U4QqS zB!ZHXkT9aP8DS!tYd39W9xHnBw35N2jG%-SK5BbwdapcJ0{@pMB63#jA9smJ<`L1{2J%9QRf9HK3Z~=bm-~W3Y^|~Ed_R$Z0 zQ0C+b->tWb0koJ-@x{+y?%($zKbm1^_bmPW?=ICjf5Ot7S945&7SeXe?t#6zvDAiBResfAC_VqfgEr~t$ZZi=84 zy<5l$=lI)Pyn;RymXxT<4Yx(1Tu$&ae7k8EIg$Lnk`S97F)-#`Baw})p4|xxwpSIS zg4Z_sKZx-Hl*756DpR_x0AM{Om4a?;Ba{WtYo0}*;DqzIC^D|3804vC(J0zdvm!KE zAb~NaMNy7ZL333cwjUwqjlH473&$`Wl8J_`?Z(|F}*}9CqZ@HbyR3u|18*y-S z+q$$w@liq;C+uCDA`oLS>X5pKZqy@ZMg=NC#hX zmrAZwaHE!`&PrX=z!VYEwKp$^g^?E2`^l56RjGELtL{@{!xO{8)|@;$TLHsby$OuG zTIhw*Lr4>%jIl8W=3Wf9&=IhRz&1(5Hp1s1>RQQ_Ry&A*YCkRFY3s}3NoF|JI@mX3 z2mEu5h2757Z^7$d#8~*7zxf+ncinZn{_QDGc?$OJ+vmT(?|tvXXf(pZAO3Lv?6Hr1 zEI#v@&)~D4{VbmQ+~?wDFMAnY`qG!~c-AGCT!Kq3xx|0x#k^85cbU*id0Y0Z?shBJ zRH?Osv~=I#hg}rkoex)2#Ju`;_*UOr3IGg0prwZF_ReL4rGA!vMM?s>>v56Xn=zJ3iZc*sNWsK z0N?qT?{bINQP)h}ulim~gj0p$YhU>a_U_w<)wNXsz~Mu;VKN!x-#q)-0DzNDJp~BB zNvEBHXFczEc+>Cv4vri;?C-hn10IOI`}P40{Pkb_Pwd-&z?Bmp$GTy+BaF_rIj-+r zG9v4rZS3tuZXno4_4}A`_jAufO1rqYtLq~l`~bQ|hev+O+%pw)@XTEZB)|^JYd%hOiZNq#ia= z98pm-T4h*Q4toNK!Cir-I9|9O&w5=ag>#G(;!1~hl+Yb6$=84$av8!v!=_}3ht=vz zfJ*YO4I}9f=4mU8BukT>p&olw^wRRo)Nn}(R2*_Z0lAs60iaZ}ZUpWn3{ngVSx%ik zh?mf?&0(lC)pUzMflnFE*r7{CCtN{&it=e~D~p&%WsMuQ+uyGSC1nCB ztc##t@4f{Pxl~-vR+B|1AWPK1pgXcyMDa2zT4#K#7-YOM@+e7UWEy)k84|9yY5_~O0&zChqa;zxc>~T2M3GHlK~7t3Kbsuz zZL##uQlmuMSnUxvxHTW8KCjIYL)H9S#c|1-fJ7H-MPBDHkA>kY&Z@Podp~NTw38zA zko+J7sg*QVXF-)?G+>BRqudMz&$}3$;q2oqurN4F+Bc=hFXh_)ldpKkw|pyH|02f1 zXFvN{Tz>iGyZ-I*kAM8YSa{A{N|(@k{?BPC5N_FcaSSwm-s0KKKEgb=SM$c|UV8R@c^W&DCGW z8(;exeB;I&aQE}h$4h?k#>>?#(%bj20;#7F-Q z-}B_BVE=K)?`Tus_juEP`5k=q%U{A1pY;8>@(W+UkH6qzeCU1e#oeEO64-AjH0e3$ePoh7Y~JjN1bq^ibUAf(PJ@za#T@&iUu# zB|ra5gUHC`mwg)N-RoY1wx4>&8F=KQFB}Nqz5Dm!5s$eL@A;E=3?fHoo^=+^yvtbt zfZu)1C3wNhUbbW1${fEI|M;aZ;R)aWWL)`$&*LXv@Ut?pT11y*yrRfNGan@ zulpSto5wwVxc&h!F+Tjh_uQ4~BA37>Sr0*LX^3bGLWuVDph%upzF*KKfG^$7E zvCoPZCo0j5sV0-Q<_Q&QUiXkE(hBHh5BMIboh6yPUBu??EUY$l{R6L4qOcCbSUYRK-i8zCZrWcwn(MYR?em)(4s*<1~?}0c7PSU5~^Y@^F1~zQjF!?*ib8k z!|DVDDIRAEovk}t9~>E^g&s|LgesB*NR9}XwMD%$DvjCmT6n}7nU*>~b!`E!+u>_L z4c3a{+Ac}51$a^L>qCep3(Ts4zz!4P(0mUlX7E@@3%WicGvQCZ{29F9e&30W#SDLX z{T0X@9Wod{RZGGwq%_aZ} zphM*kX)S0nb8s&{^R7DL-K>Sp#5`0Pwn3|2odN%UO8VbDxLDfA5n#GVtf`{4+e@!4Jh~JjNSd^O_>K^uIIja#xH; z6TIXne*!Oh-g9y3-~2WDuJ_IO_Ba1N{^3)f#D!0M0^a%dx8aMQ6GQIC>#oBaUi%tc z@W6-QzW0A1Zo1({TzAbiAOP=p)0^>`kADIeKH-V@^Z)*5>P4jTUJxGkh)3cf-|=uf z>v_+^>e?!9yk4L8;D_Ko7d!wr-FO48zxEn{fHUuU7M}HE&%^is;1A)i{`@`oKU*3 z)mOrb=cJx-{h=dx&2PUJmwjy5kB|x7;ltRvRq!)srI`#<=>xX%R-!0UeF*Kx*KGH;Lj zo+tSlv3726Z)38u;_C?j{{BNB!o|;hF5dLI*P&Z12KU>=#04A6z*n!j3hR6J;P?|y z)caMr0r2)WzX_lH)TeOa6Q788z3q=>ycoFQy6f{s zK8}l?@I?IiyZ&s)UIGaW?hUVb4IcQ=hhcSn9l!YEp9KK?>0AE*fBU}o;fYUvGA{r0 zr}3uOz7`b=O`E2Fu*OZfR}_W!?Pv^RTkEir4+;U&k3|-38Bl?(^`t?=9oE zvbKut%`K36^J*2kC^Y5MK^~DB50(Q#^B}A)S&W3d(8OY8W)a#x8Wgf~als@?*qEy% zTE(*~j^656_#D>;L#X}(K+`Dy&4Lu10+6N+`XeJ?D+=HHO#Tbo0bv@P-qG>jCc8BE zhE+*S6E0Qhy#ZxTb5p7s*UGmg_~j9h)-%#tE(*6*J~arGdL+ZV{1>;x!yUE*XgdP4 zC`sef2G2S7A^3%dJr4iwQI8x#5-J(&bI1_6=a_JPr?;13m8Z?vFb}9H-gzQ<0BI~t zS$UF?SL8oukg2fd2E)p2`A;y^?71nf$g448<7%}N@(5m~ohKQ*o0R?Mg(m&2-~vf;#NSj70_%G&Rstaulj)};Mf1RC*Y*@HJ5+OvVd)z zYUMvvZ7_RT4WZBvJ@)1#=+_wiTA3e^tdF!O4~k;~W$Y~KQOhM(wyiu7SShzGHE1R( z)5c1AphiO;>Drm-exFEAiS7HW^?`G@*RLlbEEt#lD02wkD|dJ?|MUL)S8{zz zN~g!$15(0KkzWNAQ-nyanI)ecy)z2M*lf^C$!3gHpw^ z841?YAwIxhBMv;X1f00KhRwwS`&TCDQbM2dAYlrAh%G&WcRur}Pk$z!_@pP}l+#Yb zfB&OD#8aRC3~X<2<0qf?G=PA=egFG#Wk4}16{@SZdj_8P{ZGaNANnx-@=IR=0C?3e{UZMHOJBkxFS-cNeD06o-#qJC_&3jd z7OwgF*YU2mzYVYak1xY3f9th)$aj1PKK1dx$BTdA^ee9#sp9FmJ?>>r`{QNKC>~qh?lSAXrRICStJKL44|;K2|5_R_y6Y5)GiOZ2rpg$@70)=IL$2d6GGPI==hK zPXz&Z*dwcXd&&<~f>wSw^|aG**(W~k-#zc1_r!}|{&LJ`Gra5VZ^v}HjpzUSf46gu zn$oF){D1uE+vWMyx?_ky|McH~3@`qLm*Z~doP)E@zB_*RlHbsAU_9mN&nR>J_kXWO zG~<&W`zT)W3opmn=bneVoP9U^*WbKk@NPTQ?EBySl&9eP9wBhSkALJNc=5}B3FqDO zp19BbFTl@V{6hT1&%US_vf7cSKD}DI|KTNIFwQ>jTr3uIJp957W!*pWk$BHL-hu4v zUJiwuZnzPro_YE(KS#$Xw}n~873f&m4!ZaKo(%EwT4JDjGN~^R5E<*@MI#1SVKAA^ zD^BI`Cw90@P}`g<1&lJJsGuf@8g3SKyQcx%HNcpGy*=_Y4r!FF3MrXlYKJw7fvE~} z+_HHi5A7Sf547$>(5klXL@^puD@sWKr&z{7pY4A$>S;@MR83@1304g?E7*3ud3Phg6>7SZFmqys9xoVa|&NS*!lSipQbMPv{9ehjiME5q)+Zo6oj!TFCQVIoI{c zK zRliFrKfuCHR@s&HeU?1!A6M^w(79*e%^&$Rj$dEJz0W)uANb-|%i5}*2?y{>?owOF^C7R@H1x$lT#q8EuSmn0o2f>V~5|gO~nJz<4wk1%e{R z<1vT{4MpUXzyS8_-G_6|zX$Gp!37`ytE*B6;weA)bUglho`lOka~Yoh>}TLTmwp(4 zJ`X^Q5jn~3d;F8WADc%G~qe?wO4;#zf*OadC(raR@c@B zzngjS`rr7^*ni-7{Lr(17?-~HZ!nwAd?Sy?+P|RBV_?s|y}0(8t8w#n&P0C4!W+x!80_U^;AU;8@FzsJ3B z^*??cd-m>IN(Prl_}s>bltpuGng-M9w!h~4pZ+v_*OR^vmtS@np8u?8;@uzmFbDyc zef;Bi`Kw<&?5j1cnqx~YtUYt?1sr(us8DIv#)8r7>fu;lmMBOBho96?80z32Gw8wR z&?8k&&F7FznN-Ee=v}Fc$de9ONeYb$>cOW1ts*W5y!EA;PhwT%Z0yyzD3B^$TvcB! z@@k5skF7>K2A)t;I8^D3#*m{;aY{y$BhH}1_=_v9#48?qAwF^4wXUET?%N}ln)@Nc zUvf>L{kB3@wGnGZqE(AFCCwA!3CIi5TncL+6(wJvmGyV($YE>NFE@O+V5uEP9;E6k z2+A15I=6Cvp2uSB1ps-eMnG2h3Xwy>WN^h>YU|XZIkqNj;3)vqFv6&pNDjBfbDK@k z3nE2ES=%RTBrM3i#YXMwOSWZ?Z54I_XmMbwJM#!b@AeOut+d~cGudclkzw+?M;v+YFT@0=+NMz6U(Na#9 zM_~xgMpim3<6=qcS&i@-nq$qdMBG9Ts#~ynoWI_NLygaD>{#aPr1FlssN-N<1MnB0 zyAnTh(YK@PGk*JT{%-KS`revtOga8srn%7@W%{Y9-l5M5MkZm-l0{V!-AD#%9n9|4 z{`r_;DHZ$7=G*5UWqS$?sM4KI3h``L}fz+ z=s_+2-T%Q4^n>TCU%Cpv@S>l^+2@>#C;i|L;y=9N6|QtL7(e)&=isNF^K9Jp>~jzT z;lz_q5$nBbn+po{I{)C0{4jp%+0VjRXWt!d(_qj3eLFyG=iKXjyzobU6d(TJ`|#_p zdp*3sRNZBL=ILjhh5!E6x8jq3|52pW+0VvZ@2+h= z>69XLbW@jc{4mCo2_Euo566QZ^02`iJncC@jORc5Svc$Lv(dCI_U_vU%D~2Kjw90< zx-OUd>$MViI8PIur-wewy?>?@{MN6%5?6fgbJ#p`1pD^yA1Esf#@e1W-2MFX@ue%S zzYc-c??G_Lx>7jWIx*Wf$9>$~vd z7henz<0F@T0QY^s1F*KTRy>>5=m7lC4?hRbe@-=CC!aD{kACQ?q7~BaW8(*q4GA&6 z__@#Fncw?8_{R0u*Ku{M56ag+KUjzl*PZbD8~~INs6+{n2(%r+UA4iqx^s4{jNMz-rzO%m&Wxet!nhHBHA=IgML|50Sc$65<5czcosb}Wzi1j!`H%Po*W%{$o|4o>lzFTx!FhtLPua0l8c~_J#Gmf{_-{W@RhRuh#H?msRdBM>+~J5 zs^Gi~<0;S~E_+hjBn8$O*AG70r@ZE!%>G8Gx5!7?uil~5#_oo&%yQDX%fhmjl_vL_G8X<9xrq7L zjiEIA_Tz5<;TORKOeo;DzVq90(wTPwh2RTh5DBo&TH%3as_RO1e|il=~yfl`0^J@|8BYICfs=a_4vw_SK;el`3he6vY*3^H(rn2C7gD; zJaanT#+6_AJT^BsaN>z4H@rE0aQ;*Y5I}=Ba z9L6m-eFJBoa~?J~HgLm@*WsLdoDVQCn@(}%=Z5oigfP9HpyB24kcdm@heeW|kgx>L%w*UYh_J~Iy_X&49|2*FZhi|(L zU%Bc^oOSneaKZ^E01SNNdV9XkEf}Yseg?Y50#|+U3f%jC_Xk+|bKSL9<00Sn9k}WX zU%+h#4`R>0vhHuV_F7C3XN*dukQ5qtQk}gd$@?rn zBg`v^ff;W)QRcZL%>`kFj0LUQYq|?7pCZu_aV+nvCZZ2o=n}y_%)k0p4GbW^(4Pq;xQP&B!l;L zpv?x@Y>-zIc%&>{1n@!(qvl8yBX*Lt=wIn5X`gI9y&|^3WOQv<0xU?X2mAb6GtF37 zx{L)YjoIflXzh@GmE9PiT&>|U{3Yk1nj>OKcy%wn8QsgtrDiM{ZK*lS0^Hz@+W`cv z&dj8&Qi4IZ0(HjpR096ig9CWx{fxcQCX`1&`d>ccufK`j+S9W zm7(r6O@N}f_C>)apg^B=P2~tDEimh)R>rL!iis(&+hNZ&M}^V%)^J9>7JDu z8)?PrOjHJ2sEiX*Ih#vl(j5VH{)3La8V8x5ky z@~_BKXfBK-Tj#34o3LBSx}=^!U2r48WY6rim*CoKmniG?n#6TH`oJ@G{o6NteQxrX zM}7Xc(sk?`3orde#2H~i0l)FMZ*yZ|H{A0eWQDrY@h%r(h`X$xv2>3YsV*Z@J}W{Kt!b2D9lD*L>}3c=Nmd2hP0fUH#tLQ?=W3 zc5TOQ_xX5RFt!+r`j!&1toylSM-HA#*tyyWW&4@yK-G05(bxGQ@T`9q@Ie0jm@J>jzhP?P=h32Qy6q! zXdZw@5?dWYG>f1G6$Y76mgZCxt^zfx*h`l8St2d=rg#~H_b?PTqx6C{RyK?p9jO%? zm{O+7vA@G>H!Q6&gDfdTC(J`xi>72)|0^ZLy5@#JmAEUOWlhxIr+0SP%wq zuF~P3_&tYyDX^ksL5W4~k=<~tug|GL~z-ZO=M41q#%9PZyw`xfM$x94SzrrDgf)w-c-%&k2=6=m5BmRTtK#-6LcFGpQG zr%L~;4Te(PxSAN-uev7((F#z3%#n<(uTOI>WNoMJVE~23mr(Kp6atp4*kmfQ-JAqI zPud4FmK}Cj!}nAchfdnfBOde>R!yEnu^;5C=($eSSo(8YG3Mi(22p_8xVQanP|}lWc-ID0&$sq7JTwdwlBT%u&L$pB(RM?Of%WxuJnP4v zhsnwW=iU3>-e!M27v+AS_}2%Hw#6YVN9l$OLZ2{Ny5XB>|MGpy_wZ3Z+wG#IY2HOa zSX#zdUt7nspZh$FCKH^0pW%4z_G*8Joddc@%9@oQ9(B=Um)fkOZXV5L5AUFXM_I$m z?Wp7YH2m9c>)WSC6YguTy|dNSo-F`D4-|hFp$ww_Xf3W;f1C-&6i_|XSPy8h^6*Cn zMF=0du6^!ULgl8oIVM<$0YS2k2Z^i8w5i%pjKo-A_gIoD%s^hM2U8*=ibppED8LgL z-HV%Lt|@4K3{}dF^*M^N$f0S{mQdeVJLBxC1_pf=mxouQK17`|&c-@v`o zS~tTJ)$21@jWVxHUJ;xa)X~oqL zn*3~I#KYVLl`G}2V}M8)iK+sXl&ZNigSan-CYx~!6cPhejm|u%6HwPJDWAzb+)HKf z9E&l;RPA@I5n*};fuxp&%0Z8O*m|#^c!Ry5eHj=K3fU5J3Y5Z#ZhS7uS(Wj-Mc8&+ z$F9G9a2?ae0_74i+f6Z(HA$#t+2C{iT^?4R!2`{V{Lgyi7bAfyVZ3ZLP!Vjd@QTc34<`|ZWk?oz7#f=c2@1tL)((-I4vCv zOGI4tJ=rM!G-roDm`llVA7k81s!-nIoUR_J}wY6Uz z_N4z?ZUo!^FRlCfd(74I81TyJRh|avVeNw5-fahbfENctFABDNy?D67f&{-B8E7-G z!hqHSNFjJGfhXi@qBBPZ8h{#&HY}t8UX-jiM*;~ei+Rx)Qi&9LSOx|)xpY+z@VqE& zNFWAQM4RM9C9+^%#$L1{ZgW`|I!8s(C3&_f6t$c(9DgwRqJ3;tL$G$F%FA!#Z)2`? zD)M3}Y1O=ZfGAUy5|_tZs?N>{G!>YI=Kw?oPsF`R4TCelK_f6VL~0~+3hh6eCdP2% zgIXCs%At4_RoO5F!(~>Lu@RrB%0By$NHCv3!xx7tDO|%qsP6!^m02tl5NP zt8Glf0^lm)xnI?}tPCU4s=T65!#&QHc%78{-;5Zr7?eg?>Y^@dqzsA|j|Q!h?}QFO zC$zY(fLD?jS*0MVp${7TULM%sf0f+bH7C;NI(vDG(^;*7D9dfa1FVoO5 zpt8<$Au0p|6C`Ix@A3B8p0?;i{XA0TS1ELnNb+1pigoHq#<682*MY3x3fY6gFl(K_ zoiIE+I+k=0lPgX`T+95Wc6tO85)rDSQwA|b5Zx|LOFOw$*=p-wb3DDh8f}Wb4G5fh z$(>mYg`z1b&OhZ$KgO?P+E@VK9)M-e;-Vd)9AeAYE=n>FkB1#P`p#&=(nhEiDf`S6 zpGr~P*`CtiUA-r_cbWHhx&OPof>a>DbkDl^ra#!nl@_`KF2mT_E>}7=tX|2@9hd#B zlCihUPXy#>vJpwpGyt_ z>Dn74L)PoV5)`5DQX`$R9MqI~0P`3qAhr&oG6*?El;GXTpbC_W@uJF?g#lO<;K5o8 z40t8qAZ|n*7s`<8!v>egRisM|1?s67n5I8kb=O!7W9ntvYB>TXgkEKeLf}BMwv3Zr z)~>EgEpBIc@z4=6hKdxWazro@xXIG*YCn;VgHM6M-jtG4D*x*GQ17fU+L(dO8E(MY z+|+e9YSyOEkyBB+OflGuu9MISfuv+zU5uow%y)Wf3}NK$F}-`;-RQFO;EM1-hD);+WvTph;4f8@~ddCocQVIL|`PhA^<@q$6 zH~n|ez8XKeOM92?JwFh4vs@Y2RT1Xui@?rYmBAX~!Hamwy7L3t=GObO#9v-NvVPBQ zYrFc}uKn_6*`a2iEu9SZZYpE!w24{9#yn=kkbD8?f!dUDF$&On|BLbmKiniSGf4e~ z<%6(pzb02wla(_c#e)ujMoDylJ|M)5I7h};MD(35!e0H4cj>_^ocn35sz4jOtj zLv^sT{%&hL0YNJ+yRlI3TT4LIuVhOoHP2zF=FFN^tuL;=3jnlG2#tE{Em2h{W+4i; z!aTTvw0kva-^o48+z`@;WK1h~i_h1xr&-qmNEARRs@D{Fihj=_40BcVG_f&PbDSZH zQGwQ=jJ-Z;z%~^MZ~Ly^05-)^-_xKdKiVeoMzdqfrE)EtjVLTojDZdaivTMCXcV`S z@XB7rT-G29qm&I_1CS-?rjk(Wk?#y=WwJKr^(2btT#V+tUdFs0G;5!aktt!U$;%ji z&+>#Yjbd2Lb@PSjbL%WyW3^Cwjb=1@5JUzC0*~au3~R%Z0A~z5*KUW{S~kVnsy_!- zXbP2@8I}WN(3whEcE&0-079?bet#^soP7NLY|k@m~1i9Nbm?w50S5l$?6;)b}kbg4JisN^h-`4VAg2 zOW)P^Jq{f_h!ajeX=fXDyQ%}cw98H>z&#C1pEEDDgoiKM+}r>Ftnb;g^RTY_v&&fc zYZ>Uf9*1r{h!aja3CrH&9UU>@R6lN)zIUm|q1)t{Wx7Nl=gheNhHG*1siz`P#5by9^%hCFb+qt)HMx_Au zeUHPpmN8iR%Fb5~v1xS+jwoya z+xzl(DT-_VZ&i2C%-uoRWf4>m5pe;ppieC`G$umi_4o4`xHH{dU3KbI)!FKl zdk?IYQZi$tj?t-rXPrg?(0TG{6JW@d6-^&r72|1lTvO#V1;bO?z%7urI?$nO00-A)4s=8c1?;^y0>6b zC=4@n6&G6U={KMHN^=yGHuQlul~YKS76i>KJpxAU_E%PzrJ3Pav4~$@`W8;OT z7ZXgUBvudb(54PGi4ACc`VvxyFfj%o5V5sNMvAYwR&r?LI`sJtV9YAvO!K@m&oC{R zOT7k?{pwjWq_PPzcz)6m*UW%}0<{aiDQceG5I`)A%Zw6G#{@CL=Mu zN5JeYplhKHL-rIs)N5Eg)Jh*nqZBkf7AYK$!UY|r8i1X z+L$ukY$EQ48^D=>-2tTvj$8Mny&xG-S6d4q1u7~lod!s(TeAlD+aN%~7rb%sWErbxLsH%+Jx^A_i!M&3mJ|X^UO0xKS z0W%)zw(IgME1TRNJHedU`MB5%)~s5Im;Uev{QQ<%;$^tw!t}9hT81MdDmuuxl28bW zcV-f@%013h6~xGLo#$#XBwx^4!j4T8VK}c|!M>*+`rbPUaKaW)=whdJ>Lu z95UkII=hV2=U=#|N0aivv^iVNU%Cwxt4<*%A+rjD79N-cc!SQXo|ZP$iB5}lg?J{- zxe`&SP-W#wsIv2%>T+q$xGU5NmW;}|t7D%&}_cZf@=JLo0pPDXONaR_rtiwbHz-&M_VOfDtAysq+1)YV%iC^t} zVCNM*Nx0rEqJ!phMja1<*Nwl&|G{WkjDlrc<}L|Q*%;J!NDT7+u+ z80)(y0guJbFQIc9SV{@3j0-bHq*E789yqh;>9McJ4)+B7Ob7`EL19RG{Lmm^Ou`G) z3DZI-rI|AcA?@BODw}vwgdC#5w^`A2N1JyLT`63Q_?X6^E5ir?lAF*q7+$suaAB~u z67;1xQ-ygj3V=xf0hJ0h-%RhJ(&wUpQYTY!5mWn0iEs2llS&S=Z6+m6Fo35b@RGbb zLqjsitePtf&ujXM5@y223?20NQ-?-Mpadp7RQ0JaUU%t)g(dhupe)ehCAp35HWnd3 zF$n;&2b6yJzi5Be7-SYMLb&%{;Pv%j`4F3j48iI*NDXwj@9sCX0j3Ya!BLI9b z{TzGu%s; z#oD0jkj-ZC;d}4l;-CHu0I+EOJpBC9OR=%02KPVlBo42x2B4ILF&ABk6-$@G^L_mO zi6_vtd-r&;4Dq%(^>crw_MLv-(4sUc#%eKdR$+7OnxN?C@ZpXG_}bd-5Rj;-s%(0T z{-Ils9#}AUF1BsmYBMphcsa6=mtFc6^!ZN5P+1 zt>a*0$}KI<3}9R+A%)&ab&nW?4%0Dp%=Jf}SBzL2XSsP|+r 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 literal 0 HcmV?d00001 diff --git a/docs/results/a100_host_graph/graphhosts01/a100_80_graph.json b/docs/results/a100_host_graph/graphhosts01/a100_80_graph.json new file mode 100644 index 0000000..bd6313a --- /dev/null +++ b/docs/results/a100_host_graph/graphhosts01/a100_80_graph.json @@ -0,0 +1,48 @@ +{ + "cpu": "unknown", + "numpy": "2.5.4", + "avx512_skx": true, + "dispatch": [ + "X86_V3", + "X86_V4" + ], + "npy_disable_cpu_features": "", + "graphs": [ + { + "connectivity": "BALL_QUERY", + "n_edges": 1618841, + "sha1": "189d06f0830e1c31", + "dtypes": [ + "float32", + "float32", + "float32", + "float32" + ], + "radius": 0.012404078617691994, + "pairs_near_radius": { + "1e-12": 0, + "1e-09": 0, + "1e-07": 0, + "1e-06": 3, + "1e-05": 70 + } + }, + { + "connectivity": "IN_TRIANGLE", + "n_edges": 3114720, + "sha1": "0bd261acea40807d" + } + ], + "card": "a100_80", + "gpu": "NVIDIA A100-SXM4-80GB", + "nproc": 24, + "cpu_flags": { + "sse4_2": true, + "avx": true, + "avx2": true, + "fma": true, + "avx512f": true, + "avx512bw": true, + "avx512vl": true + } +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/graphhosts01/a100_graph.json b/docs/results/a100_host_graph/graphhosts01/a100_graph.json new file mode 100644 index 0000000..6e98036 --- /dev/null +++ b/docs/results/a100_host_graph/graphhosts01/a100_graph.json @@ -0,0 +1,48 @@ +{ + "cpu": "unknown", + "numpy": "2.5.4", + "avx512_skx": true, + "dispatch": [ + "X86_V3", + "X86_V4" + ], + "npy_disable_cpu_features": "", + "graphs": [ + { + "connectivity": "BALL_QUERY", + "n_edges": 1618841, + "sha1": "189d06f0830e1c31", + "dtypes": [ + "float32", + "float32", + "float32", + "float32" + ], + "radius": 0.012404078617691994, + "pairs_near_radius": { + "1e-12": 0, + "1e-09": 0, + "1e-07": 0, + "1e-06": 3, + "1e-05": 70 + } + }, + { + "connectivity": "IN_TRIANGLE", + "n_edges": 3114720, + "sha1": "0bd261acea40807d" + } + ], + "card": "a100", + "gpu": "NVIDIA A100-SXM4-80GB", + "nproc": 24, + "cpu_flags": { + "sse4_2": true, + "avx": true, + "avx2": true, + "fma": true, + "avx512f": true, + "avx512bw": true, + "avx512vl": true + } +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/graphhosts01/a10g_graph.json b/docs/results/a100_host_graph/graphhosts01/a10g_graph.json new file mode 100644 index 0000000..8b01969 --- /dev/null +++ b/docs/results/a100_host_graph/graphhosts01/a10g_graph.json @@ -0,0 +1,47 @@ +{ + "cpu": "unknown", + "numpy": "2.5.4", + "avx512_skx": false, + "dispatch": [ + "X86_V3" + ], + "npy_disable_cpu_features": "", + "graphs": [ + { + "connectivity": "BALL_QUERY", + "n_edges": 1618832, + "sha1": "1d90c1ed7b086815", + "dtypes": [ + "float32", + "float32", + "float32", + "float32" + ], + "radius": 0.012404080480337143, + "pairs_near_radius": { + "1e-12": 0, + "1e-09": 0, + "1e-07": 0, + "1e-06": 1, + "1e-05": 70 + } + }, + { + "connectivity": "IN_TRIANGLE", + "n_edges": 3114720, + "sha1": "31e1d7a376c54521" + } + ], + "card": "a10g", + "gpu": "NVIDIA A10G", + "nproc": 24, + "cpu_flags": { + "sse4_2": true, + "avx": true, + "avx2": true, + "fma": true, + "avx512f": false, + "avx512bw": false, + "avx512vl": false + } +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/graphhosts01/t4_graph.json b/docs/results/a100_host_graph/graphhosts01/t4_graph.json new file mode 100644 index 0000000..0399ef2 --- /dev/null +++ b/docs/results/a100_host_graph/graphhosts01/t4_graph.json @@ -0,0 +1,48 @@ +{ + "cpu": "unknown", + "numpy": "2.5.4", + "avx512_skx": true, + "dispatch": [ + "X86_V3", + "X86_V4" + ], + "npy_disable_cpu_features": "", + "graphs": [ + { + "connectivity": "BALL_QUERY", + "n_edges": 1618841, + "sha1": "189d06f0830e1c31", + "dtypes": [ + "float32", + "float32", + "float32", + "float32" + ], + "radius": 0.012404078617691994, + "pairs_near_radius": { + "1e-12": 0, + "1e-09": 0, + "1e-07": 0, + "1e-06": 3, + "1e-05": 70 + } + }, + { + "connectivity": "IN_TRIANGLE", + "n_edges": 3114720, + "sha1": "0bd261acea40807d" + } + ], + "card": "t4", + "gpu": "Tesla T4", + "nproc": 21, + "cpu_flags": { + "sse4_2": true, + "avx": true, + "avx2": true, + "fma": true, + "avx512f": true, + "avx512bw": true, + "avx512vl": true + } +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/local_rtx5090/graph_numpy_avx512.json b/docs/results/a100_host_graph/local_rtx5090/graph_numpy_avx512.json new file mode 100644 index 0000000..cc9c1dc --- /dev/null +++ b/docs/results/a100_host_graph/local_rtx5090/graph_numpy_avx512.json @@ -0,0 +1,37 @@ +{ + "cpu": "AMD Ryzen 9 9950X3D 16-Core Processor", + "numpy": "2.5.3", + "avx512_skx": true, + "dispatch": [ + "X86_V3", + "X86_V4", + "AVX512_ICL" + ], + "npy_disable_cpu_features": "", + "graphs": [ + { + "connectivity": "BALL_QUERY", + "n_edges": 1618841, + "sha1": "189d06f0830e1c31", + "dtypes": [ + "float32", + "float32", + "float32", + "float32" + ], + "radius": 0.012404078617691994, + "pairs_near_radius": { + "1e-12": 0, + "1e-09": 0, + "1e-07": 0, + "1e-06": 3, + "1e-05": 70 + } + }, + { + "connectivity": "IN_TRIANGLE", + "n_edges": 3114720, + "sha1": "0bd261acea40807d" + } + ] +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/local_rtx5090/graph_numpy_baseline.json b/docs/results/a100_host_graph/local_rtx5090/graph_numpy_baseline.json new file mode 100644 index 0000000..4ba7921 --- /dev/null +++ b/docs/results/a100_host_graph/local_rtx5090/graph_numpy_baseline.json @@ -0,0 +1,33 @@ +{ + "cpu": "AMD Ryzen 9 9950X3D 16-Core Processor", + "numpy": "2.5.3", + "avx512_skx": false, + "dispatch": [], + "npy_disable_cpu_features": "X86_V3 X86_V4 AVX512_ICL", + "graphs": [ + { + "connectivity": "BALL_QUERY", + "n_edges": 1618832, + "sha1": "97d163811acc313e", + "dtypes": [ + "float32", + "float32", + "float32", + "float32" + ], + "radius": 0.012404092587530613, + "pairs_near_radius": { + "1e-12": 0, + "1e-09": 0, + "1e-07": 0, + "1e-06": 7, + "1e-05": 59 + } + }, + { + "connectivity": "IN_TRIANGLE", + "n_edges": 3114720, + "sha1": "a1e24853a843cd17" + } + ] +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/local_rtx5090/graph_numpy_x86_v3.json b/docs/results/a100_host_graph/local_rtx5090/graph_numpy_x86_v3.json new file mode 100644 index 0000000..0b8739e --- /dev/null +++ b/docs/results/a100_host_graph/local_rtx5090/graph_numpy_x86_v3.json @@ -0,0 +1,35 @@ +{ + "cpu": "AMD Ryzen 9 9950X3D 16-Core Processor", + "numpy": "2.5.3", + "avx512_skx": false, + "dispatch": [ + "X86_V3" + ], + "npy_disable_cpu_features": "X86_V4 AVX512_ICL", + "graphs": [ + { + "connectivity": "BALL_QUERY", + "n_edges": 1618831, + "sha1": "2faf55842ee44405", + "dtypes": [ + "float32", + "float32", + "float32", + "float32" + ], + "radius": 0.012404080480337143, + "pairs_near_radius": { + "1e-12": 0, + "1e-09": 0, + "1e-07": 0, + "1e-06": 1, + "1e-05": 65 + } + }, + { + "connectivity": "IN_TRIANGLE", + "n_edges": 3114720, + "sha1": "c86e548279d2dda1" + } + ] +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/local_rtx5090/numpy_code_paths.txt b/docs/results/a100_host_graph/local_rtx5090/numpy_code_paths.txt new file mode 100644 index 0000000..f758204 --- /dev/null +++ b/docs/results/a100_host_graph/local_rtx5090/numpy_code_paths.txt @@ -0,0 +1,14 @@ +# NumPy 2.5.3, glibc 2.43, AMD Ryzen 9 9950X3D; code path chosen with NPY_DISABLE_CPU_FEATURES. +# 1. Grid/mesh lat/lon as passed to PointsMeshTypedGraphGNN._get_edge_indices (float32 degrees): AVX-512 path vs AVX2 path +grid lat: 0 of 1038240 differ, max |diff| 0 deg +grid lon: 0 of 1038240 differ, max |diff| 0 deg +mesh lat: 12454 of 40962 differ, max |diff| 1.53e-05 deg +mesh lon: 9964 of 40962 differ, max |diff| 3.05e-05 deg +# 2. sha1 of np.sin / np.cos (float32, of deg2rad of those lat/lon, AVX-512-path inputs) per code path +['X86_V3', 'X86_V4', 'AVX512_ICL'] plat.sin=d5d8f045 plat.cos=c1f67be5 plon.sin=7d39474b plon.cos=4a982ecb mlat.sin=a182b930 mlat.cos=5a82959f mlon.sin=a041ab3a mlon.cos=8cf23768 +['X86_V3'] plat.sin=d5d8f045 plat.cos=c1f67be5 plon.sin=7d39474b plon.cos=4a982ecb mlat.sin=a182b930 mlat.cos=5a82959f mlon.sin=a041ab3a mlon.cos=8cf23768 +[] plat.sin=7858a558 plat.cos=1a851bd7 plon.sin=045c86ec plon.cos=0bdf7d9f mlat.sin=ff320064 mlat.cos=809d1d43 mlon.sin=c1255eb9 mlon.cos=7ee4dbc1 +# 3. float32 sin/cos of the grid's lat/lon in radians vs glibc sinf/cosf and vs float64-then-rounded, per code path +'' simd=['X86_V3', 'X86_V4', 'AVX512_ICL'] sin 77c0589a3f cos b298336f92 | != glibc sinf 242 cosf 389 | != f64-rounded sin 223 cos 404 +'X86_V4 AVX512_ICL' simd=['X86_V3'] sin 77c0589a3f cos b298336f92 | != glibc sinf 242 cosf 389 | != f64-rounded sin 223 cos 404 +'X86_V3 X86_V4 AVX512_ICL' simd=[] sin 24493c9f5f cos da72d7cf59 | != glibc sinf 0 cosf 0 | != f64-rounded sin 35 cos 31 diff --git a/docs/results/a100_host_graph/local_rtx5090/step_a100_40gb_graph.json b/docs/results/a100_host_graph/local_rtx5090/step_a100_40gb_graph.json new file mode 100644 index 0000000..3e230dd --- /dev/null +++ b/docs/results/a100_host_graph/local_rtx5090/step_a100_40gb_graph.json @@ -0,0 +1,36 @@ +{ + "label": "rtx5090_edges_a100_40", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false" + }, + "ok": true, + "cpu": "AMD Ryzen 9 9950X3D 16-Core Processor", + "numpy": "2.5.3", + "numpy_simd": [ + "X86_V3", + "X86_V4", + "AVX512_ICL" + ], + "graphs": { + "BALL_QUERY": { + "n_edges": 1618832, + "sha1": "1d90c1ed7b086815", + "loaded": true + }, + "IN_TRIANGLE": { + "n_edges": 3114720, + "sha1": "31e1d7a376c54521", + "loaded": true + } + }, + "device": "NVIDIA GeForce RTX 5090", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "12.0", + "attention": "pallas", + "pool_gib": 23.494140625, + "highest_first_call_s": 72.90617728233337, + "step_s": [], + "finite": [], + "peak_gib": 5.810781002044678 +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/local_rtx5090/step_a100_40gb_graph.log b/docs/results/a100_host_graph/local_rtx5090/step_a100_40gb_graph.log new file mode 100644 index 0000000..fdc8a60 --- /dev/null +++ b/docs/results/a100_host_graph/local_rtx5090/step_a100_40gb_graph.log @@ -0,0 +1,13 @@ +NVIDIA GeForce RTX 5090 cc=12.0 attention=pallas pool 23.49 GiB; host AMD Ryzen 9 9950X3D 16-Core Processor, NumPy SIMD ['X86_V3', 'X86_V4', 'AVX512_ICL'] +WARNING:absl:Skipping gradient checkpointing for sequence length of 1 +WARNING:absl:No coordinates found for dim noise_channels of array Size: 128B +JitTracer(float32[1,1,32]) +Dimensions without coordinates: batch, channels, noise_channels., using index for param name. This may make model surgery more error prone if changing coordinates at fine-tuning time. +/home/raymxnd/Workspace/WeatherForcast/.venv/lib/python3.12/site-packages/scipy/sparse/_index.py:216: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil and dok are more efficient. + self._set_arrayXarray(i, j, x) +WARNING:root:No normalization scale found for cyclone_exists_gaussian_unit_mode +WARNING:root:No normalization location found for cyclone_exists_gaussian_unit_mode +W1101 13:56:24.012498 463665 hlo_rematerialization.cc:3363] Can't reduce memory use below 21.08GiB (22629749965 bytes) by rematerialization; only reduced to 28.82GiB (30943716076 bytes), down from 28.82GiB (30943728380 bytes) originally +highest-precision step saved (101 fields) in 73s +graphs: {'BALL_QUERY': {'n_edges': 1618832, 'sha1': '1d90c1ed7b086815', 'loaded': True}, 'IN_TRIANGLE': {'n_edges': 3114720, 'sha1': '31e1d7a376c54521', 'loaded': True}} +peak 5.81 GiB of pool 23.49 GiB; ok=True diff --git a/docs/results/a100_host_graph/local_rtx5090/step_numpy_avx2_a100_40gb_graph.json b/docs/results/a100_host_graph/local_rtx5090/step_numpy_avx2_a100_40gb_graph.json new file mode 100644 index 0000000..4d76299 --- /dev/null +++ b/docs/results/a100_host_graph/local_rtx5090/step_numpy_avx2_a100_40gb_graph.json @@ -0,0 +1,34 @@ +{ + "label": "rtx5090_numpy_avx2_a100_40_graph", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false" + }, + "ok": true, + "cpu": "AMD Ryzen 9 9950X3D 16-Core Processor", + "numpy": "2.5.3", + "numpy_simd": [ + "X86_V3" + ], + "graphs": { + "BALL_QUERY": { + "n_edges": 1618832, + "sha1": "1d90c1ed7b086815", + "loaded": true + }, + "IN_TRIANGLE": { + "n_edges": 3114720, + "sha1": "31e1d7a376c54521", + "loaded": true + } + }, + "device": "NVIDIA GeForce RTX 5090", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "12.0", + "attention": "pallas", + "pool_gib": 23.494140625, + "highest_first_call_s": 70.61653590202332, + "step_s": [], + "finite": [], + "peak_gib": 5.937248945236206 +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/local_rtx5090/step_numpy_avx2_a100_40gb_graph.log b/docs/results/a100_host_graph/local_rtx5090/step_numpy_avx2_a100_40gb_graph.log new file mode 100644 index 0000000..05a99ff --- /dev/null +++ b/docs/results/a100_host_graph/local_rtx5090/step_numpy_avx2_a100_40gb_graph.log @@ -0,0 +1,13 @@ +NVIDIA GeForce RTX 5090 cc=12.0 attention=pallas pool 23.49 GiB; host AMD Ryzen 9 9950X3D 16-Core Processor, NumPy SIMD ['X86_V3'] +WARNING:absl:Skipping gradient checkpointing for sequence length of 1 +WARNING:absl:No coordinates found for dim noise_channels of array Size: 128B +JitTracer(float32[1,1,32]) +Dimensions without coordinates: batch, channels, noise_channels., using index for param name. This may make model surgery more error prone if changing coordinates at fine-tuning time. +/home/raymxnd/Workspace/WeatherForcast/.venv/lib/python3.12/site-packages/scipy/sparse/_index.py:216: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil and dok are more efficient. + self._set_arrayXarray(i, j, x) +WARNING:root:No normalization scale found for cyclone_exists_gaussian_unit_mode +WARNING:root:No normalization location found for cyclone_exists_gaussian_unit_mode +W1101 13:59:43.440247 469836 hlo_rematerialization.cc:3363] Can't reduce memory use below 21.08GiB (22629749965 bytes) by rematerialization; only reduced to 28.82GiB (30943716076 bytes), down from 28.82GiB (30943728380 bytes) originally +highest-precision step saved (101 fields) in 71s +graphs: {'BALL_QUERY': {'n_edges': 1618832, 'sha1': '1d90c1ed7b086815', 'loaded': True}, 'IN_TRIANGLE': {'n_edges': 3114720, 'sha1': '31e1d7a376c54521', 'loaded': True}} +peak 5.94 GiB of pool 23.49 GiB; ok=True diff --git a/docs/results/a100_host_graph/local_rtx5090/step_numpy_avx2_own_graph.json b/docs/results/a100_host_graph/local_rtx5090/step_numpy_avx2_own_graph.json new file mode 100644 index 0000000..e017b23 --- /dev/null +++ b/docs/results/a100_host_graph/local_rtx5090/step_numpy_avx2_own_graph.json @@ -0,0 +1,34 @@ +{ + "label": "rtx5090_numpy_avx2_own_graph", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false" + }, + "ok": true, + "cpu": "AMD Ryzen 9 9950X3D 16-Core Processor", + "numpy": "2.5.3", + "numpy_simd": [ + "X86_V3" + ], + "graphs": { + "BALL_QUERY": { + "n_edges": 1618841, + "sha1": "189d06f0830e1c31", + "loaded": true + }, + "IN_TRIANGLE": { + "n_edges": 3114720, + "sha1": "0bd261acea40807d", + "loaded": true + } + }, + "device": "NVIDIA GeForce RTX 5090", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "12.0", + "attention": "pallas", + "pool_gib": 23.494140625, + "highest_first_call_s": 70.45442032814026, + "step_s": [], + "finite": [], + "peak_gib": 5.937260389328003 +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/local_rtx5090/step_numpy_avx2_own_graph.log b/docs/results/a100_host_graph/local_rtx5090/step_numpy_avx2_own_graph.log new file mode 100644 index 0000000..3392139 --- /dev/null +++ b/docs/results/a100_host_graph/local_rtx5090/step_numpy_avx2_own_graph.log @@ -0,0 +1,13 @@ +NVIDIA GeForce RTX 5090 cc=12.0 attention=pallas pool 23.49 GiB; host AMD Ryzen 9 9950X3D 16-Core Processor, NumPy SIMD ['X86_V3'] +WARNING:absl:Skipping gradient checkpointing for sequence length of 1 +WARNING:absl:No coordinates found for dim noise_channels of array Size: 128B +JitTracer(float32[1,1,32]) +Dimensions without coordinates: batch, channels, noise_channels., using index for param name. This may make model surgery more error prone if changing coordinates at fine-tuning time. +/home/raymxnd/Workspace/WeatherForcast/.venv/lib/python3.12/site-packages/scipy/sparse/_index.py:216: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil and dok are more efficient. + self._set_arrayXarray(i, j, x) +WARNING:root:No normalization scale found for cyclone_exists_gaussian_unit_mode +WARNING:root:No normalization location found for cyclone_exists_gaussian_unit_mode +W1101 13:58:29.252897 466929 hlo_rematerialization.cc:3363] Can't reduce memory use below 21.08GiB (22629749965 bytes) by rematerialization; only reduced to 28.82GiB (30943716076 bytes), down from 28.82GiB (30943728380 bytes) originally +highest-precision step saved (101 fields) in 70s +graphs: {'BALL_QUERY': {'n_edges': 1618841, 'sha1': '189d06f0830e1c31', 'loaded': True}, 'IN_TRIANGLE': {'n_edges': 3114720, 'sha1': '0bd261acea40807d', 'loaded': True}} +peak 5.94 GiB of pool 23.49 GiB; ok=True diff --git a/docs/results/a100_host_graph/local_rtx5090/step_numpy_baseline.json b/docs/results/a100_host_graph/local_rtx5090/step_numpy_baseline.json new file mode 100644 index 0000000..11f74f2 --- /dev/null +++ b/docs/results/a100_host_graph/local_rtx5090/step_numpy_baseline.json @@ -0,0 +1,17 @@ +{ + "label": "rtx5090_npy_x86v2", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false" + }, + "ok": true, + "device": "NVIDIA GeForce RTX 5090", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "12.0", + "attention": "pallas", + "pool_gib": 23.494140625, + "highest_first_call_s": 86.5319275856018, + "step_s": [], + "finite": [], + "peak_gib": 5.937266826629639 +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/local_rtx5090/step_numpy_baseline.log b/docs/results/a100_host_graph/local_rtx5090/step_numpy_baseline.log new file mode 100644 index 0000000..a2229a7 --- /dev/null +++ b/docs/results/a100_host_graph/local_rtx5090/step_numpy_baseline.log @@ -0,0 +1,12 @@ +NVIDIA GeForce RTX 5090 cc=12.0 attention=pallas pool 23.49 GiB +WARNING:absl:Skipping gradient checkpointing for sequence length of 1 +WARNING:absl:No coordinates found for dim noise_channels of array Size: 128B +JitTracer(float32[1,1,32]) +Dimensions without coordinates: batch, channels, noise_channels., using index for param name. This may make model surgery more error prone if changing coordinates at fine-tuning time. +/home/raymxnd/Workspace/WeatherForcast/.venv/lib/python3.12/site-packages/scipy/sparse/_index.py:216: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil and dok are more efficient. + self._set_arrayXarray(i, j, x) +WARNING:root:No normalization scale found for cyclone_exists_gaussian_unit_mode +WARNING:root:No normalization location found for cyclone_exists_gaussian_unit_mode +W1101 13:47:27.177475 454271 hlo_rematerialization.cc:3363] Can't reduce memory use below 21.08GiB (22629749965 bytes) by rematerialization; only reduced to 28.82GiB (30943716076 bytes), down from 28.82GiB (30943728380 bytes) originally +highest-precision step saved (101 fields) in 87s +peak 5.94 GiB of pool 23.49 GiB; ok=True diff --git a/docs/results/a100_host_graph/local_rtx5090/step_own_graph.json b/docs/results/a100_host_graph/local_rtx5090/step_own_graph.json new file mode 100644 index 0000000..23a269c --- /dev/null +++ b/docs/results/a100_host_graph/local_rtx5090/step_own_graph.json @@ -0,0 +1,18 @@ +{ + "label": "rtx5090_base", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false", + "XLA_FLAGS": "--xla_dump_to=/tmp/claude-1000/-home-raymxnd-Workspace-WeatherForcast/103238b9-ccc5-49c4-8b99-159fd6100067/scratchpad/local5090/dump --xla_dump_hlo_as_text --xla_dump_hlo_module_re=.*lambda.* --xla_gpu_dump_autotune_results_to=/tmp/claude-1000/-home-raymxnd-Workspace-WeatherForcast/103238b9-ccc5-49c4-8b99-159fd6100067/scratchpad/local5090/autotune.txt" + }, + "ok": true, + "device": "NVIDIA GeForce RTX 5090", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "12.0", + "attention": "pallas", + "pool_gib": 23.494140625, + "highest_first_call_s": 87.90489864349365, + "step_s": [], + "finite": [], + "peak_gib": 5.585663318634033 +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/local_rtx5090/step_own_graph.log b/docs/results/a100_host_graph/local_rtx5090/step_own_graph.log new file mode 100644 index 0000000..58a2205 --- /dev/null +++ b/docs/results/a100_host_graph/local_rtx5090/step_own_graph.log @@ -0,0 +1,12 @@ +NVIDIA GeForce RTX 5090 cc=12.0 attention=pallas pool 23.49 GiB +WARNING:absl:Skipping gradient checkpointing for sequence length of 1 +WARNING:absl:No coordinates found for dim noise_channels of array Size: 128B +JitTracer(float32[1,1,32]) +Dimensions without coordinates: batch, channels, noise_channels., using index for param name. This may make model surgery more error prone if changing coordinates at fine-tuning time. +/home/raymxnd/Workspace/WeatherForcast/.venv/lib/python3.12/site-packages/scipy/sparse/_index.py:216: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil and dok are more efficient. + self._set_arrayXarray(i, j, x) +WARNING:root:No normalization scale found for cyclone_exists_gaussian_unit_mode +WARNING:root:No normalization location found for cyclone_exists_gaussian_unit_mode +W1101 13:37:26.006912 445268 hlo_rematerialization.cc:3363] Can't reduce memory use below 21.08GiB (22629749965 bytes) by rematerialization; only reduced to 28.82GiB (30943716076 bytes), down from 28.82GiB (30943728380 bytes) originally +highest-precision step saved (101 fields) in 88s +peak 5.59 GiB of pool 23.49 GiB; ok=True diff --git a/docs/results/a100_host_graph/local_rtx5090/step_own_graph_loaded.json b/docs/results/a100_host_graph/local_rtx5090/step_own_graph_loaded.json new file mode 100644 index 0000000..060b959 --- /dev/null +++ b/docs/results/a100_host_graph/local_rtx5090/step_own_graph_loaded.json @@ -0,0 +1,36 @@ +{ + "label": "rtx5090_ownedges", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false" + }, + "ok": true, + "cpu": "AMD Ryzen 9 9950X3D 16-Core Processor", + "numpy": "2.5.3", + "numpy_simd": [ + "X86_V3", + "X86_V4", + "AVX512_ICL" + ], + "graphs": { + "BALL_QUERY": { + "n_edges": 1618841, + "sha1": "189d06f0830e1c31", + "loaded": true + }, + "IN_TRIANGLE": { + "n_edges": 3114720, + "sha1": "0bd261acea40807d", + "loaded": true + } + }, + "device": "NVIDIA GeForce RTX 5090", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "12.0", + "attention": "pallas", + "pool_gib": 23.494140625, + "highest_first_call_s": 70.63282299041748, + "step_s": [], + "finite": [], + "peak_gib": 5.9372663497924805 +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/local_rtx5090/step_own_graph_loaded.log b/docs/results/a100_host_graph/local_rtx5090/step_own_graph_loaded.log new file mode 100644 index 0000000..103ed4f --- /dev/null +++ b/docs/results/a100_host_graph/local_rtx5090/step_own_graph_loaded.log @@ -0,0 +1,13 @@ +NVIDIA GeForce RTX 5090 cc=12.0 attention=pallas pool 23.49 GiB; host AMD Ryzen 9 9950X3D 16-Core Processor, NumPy SIMD ['X86_V3', 'X86_V4', 'AVX512_ICL'] +WARNING:absl:Skipping gradient checkpointing for sequence length of 1 +WARNING:absl:No coordinates found for dim noise_channels of array Size: 128B +JitTracer(float32[1,1,32]) +Dimensions without coordinates: batch, channels, noise_channels., using index for param name. This may make model surgery more error prone if changing coordinates at fine-tuning time. +/home/raymxnd/Workspace/WeatherForcast/.venv/lib/python3.12/site-packages/scipy/sparse/_index.py:216: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil and dok are more efficient. + self._set_arrayXarray(i, j, x) +WARNING:root:No normalization scale found for cyclone_exists_gaussian_unit_mode +WARNING:root:No normalization location found for cyclone_exists_gaussian_unit_mode +W1101 13:52:39.465119 460127 hlo_rematerialization.cc:3363] Can't reduce memory use below 21.08GiB (22629749965 bytes) by rematerialization; only reduced to 28.82GiB (30943716076 bytes), down from 28.82GiB (30943728380 bytes) originally +highest-precision step saved (101 fields) in 71s +graphs: {'BALL_QUERY': {'n_edges': 1618841, 'sha1': '189d06f0830e1c31', 'loaded': True}, 'IN_TRIANGLE': {'n_edges': 3114720, 'sha1': '0bd261acea40807d', 'loaded': True}} +peak 5.94 GiB of pool 23.49 GiB; ok=True diff --git a/docs/results/a100_host_graph/tf32probe01/a100_40_at0.json b/docs/results/a100_host_graph/tf32probe01/a100_40_at0.json new file mode 100644 index 0000000..49f5637 --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe01/a100_40_at0.json @@ -0,0 +1,18 @@ +{ + "label": "a100_40_at0", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false", + "XLA_FLAGS": "--xla_gpu_autotune_level=0" + }, + "ok": true, + "device": "NVIDIA A100-SXM4-40GB", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "8.0", + "attention": "pallas", + "pool_gib": 29.63671875, + "highest_first_call_s": 126.01233983039856, + "step_s": [], + "finite": [], + "peak_gib": 5.581749677658081 +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/tf32probe01/a100_40_at0.log b/docs/results/a100_host_graph/tf32probe01/a100_40_at0.log new file mode 100644 index 0000000..cf96a8b --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe01/a100_40_at0.log @@ -0,0 +1,12 @@ +NVIDIA A100-SXM4-40GB cc=8.0 attention=pallas pool 29.64 GiB +highest-precision step saved (101 fields) in 126s +peak 5.58 GiB of pool 29.64 GiB; ok=True +WARNING:absl:Skipping gradient checkpointing for sequence length of 1 +WARNING:absl:No coordinates found for dim noise_channels of array Size: 128B +JitTracer(float32[1,1,32]) +Dimensions without coordinates: batch, channels, noise_channels., using index for param name. This may make model surgery more error prone if changing coordinates at fine-tuning time. +/usr/local/lib/python3.12/site-packages/scipy/sparse/_index.py:216: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil and dok are more efficient. + self._set_arrayXarray(i, j, x) +WARNING:root:No normalization scale found for cyclone_exists_gaussian_unit_mode +WARNING:root:No normalization location found for cyclone_exists_gaussian_unit_mode +W1101 18:39:15.994254 701 hlo_rematerialization.cc:3363] Can't reduce memory use below 26.91GiB (28895515853 bytes) by rematerialization; only reduced to 28.82GiB (30943716076 bytes), down from 28.82GiB (30943728380 bytes) originally diff --git a/docs/results/a100_host_graph/tf32probe01/a100_40_base.json b/docs/results/a100_host_graph/tf32probe01/a100_40_base.json new file mode 100644 index 0000000..7e56668 --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe01/a100_40_base.json @@ -0,0 +1,18 @@ +{ + "label": "a100_40_base", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false", + "XLA_FLAGS": "--xla_dump_to=/tmp/dump_a100_40_base --xla_dump_hlo_as_text --xla_dump_hlo_module_re=.*lambda.* --xla_gpu_dump_autotune_results_to=/data/results/tf32probe01/a100_40_base_autotune.txt" + }, + "ok": true, + "device": "NVIDIA A100-SXM4-40GB", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "8.0", + "attention": "pallas", + "pool_gib": 29.63671875, + "highest_first_call_s": 132.97908067703247, + "step_s": [], + "finite": [], + "peak_gib": 5.937268257141113 +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/tf32probe01/a100_40_base.log b/docs/results/a100_host_graph/tf32probe01/a100_40_base.log new file mode 100644 index 0000000..5ec0a9e --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe01/a100_40_base.log @@ -0,0 +1,12 @@ +NVIDIA A100-SXM4-40GB cc=8.0 attention=pallas pool 29.64 GiB +highest-precision step saved (101 fields) in 133s +peak 5.94 GiB of pool 29.64 GiB; ok=True +WARNING:absl:Skipping gradient checkpointing for sequence length of 1 +WARNING:absl:No coordinates found for dim noise_channels of array Size: 128B +JitTracer(float32[1,1,32]) +Dimensions without coordinates: batch, channels, noise_channels., using index for param name. This may make model surgery more error prone if changing coordinates at fine-tuning time. +/usr/local/lib/python3.12/site-packages/scipy/sparse/_index.py:216: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil and dok are more efficient. + self._set_arrayXarray(i, j, x) +WARNING:root:No normalization scale found for cyclone_exists_gaussian_unit_mode +WARNING:root:No normalization location found for cyclone_exists_gaussian_unit_mode +W1101 18:37:05.174324 6 hlo_rematerialization.cc:3363] Can't reduce memory use below 26.91GiB (28895515853 bytes) by rematerialization; only reduced to 28.82GiB (30943716076 bytes), down from 28.82GiB (30943728380 bytes) originally diff --git a/docs/results/a100_host_graph/tf32probe01/a100_40_notritongemm.json b/docs/results/a100_host_graph/tf32probe01/a100_40_notritongemm.json new file mode 100644 index 0000000..4905541 --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe01/a100_40_notritongemm.json @@ -0,0 +1,18 @@ +{ + "label": "a100_40_notritongemm", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false", + "XLA_FLAGS": "--xla_gpu_enable_triton_gemm=false" + }, + "ok": true, + "device": "NVIDIA A100-SXM4-40GB", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "8.0", + "attention": "pallas", + "pool_gib": 29.63671875, + "highest_first_call_s": 120.14120078086853, + "step_s": [], + "finite": [], + "peak_gib": 5.7115514278411865 +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/tf32probe01/a100_40_notritongemm.log b/docs/results/a100_host_graph/tf32probe01/a100_40_notritongemm.log new file mode 100644 index 0000000..25dcbd5 --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe01/a100_40_notritongemm.log @@ -0,0 +1,11 @@ +NVIDIA A100-SXM4-40GB cc=8.0 attention=pallas pool 29.64 GiB +highest-precision step saved (101 fields) in 120s +peak 5.71 GiB of pool 29.64 GiB; ok=True +WARNING:absl:Skipping gradient checkpointing for sequence length of 1 +WARNING:absl:No coordinates found for dim noise_channels of array Size: 128B +JitTracer(float32[1,1,32]) +Dimensions without coordinates: batch, channels, noise_channels., using index for param name. This may make model surgery more error prone if changing coordinates at fine-tuning time. +/usr/local/lib/python3.12/site-packages/scipy/sparse/_index.py:216: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil and dok are more efficient. + self._set_arrayXarray(i, j, x) +WARNING:root:No normalization scale found for cyclone_exists_gaussian_unit_mode +WARNING:root:No normalization location found for cyclone_exists_gaussian_unit_mode diff --git a/docs/results/a100_host_graph/tf32probe01/a100_40_summary.json b/docs/results/a100_host_graph/tf32probe01/a100_40_summary.json new file mode 100644 index 0000000..0cfaad9 --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe01/a100_40_summary.json @@ -0,0 +1,80 @@ +{ + "card": "a100_40", + "nvidia_smi": "name, driver_version, memory.total [MiB], clocks.max.sm [MHz], ecc.mode.current\nNVIDIA A100-SXM4-40GB, 610.57.04, 40960 MiB, 1410 MHz, Enabled\n", + "env": {}, + "base": { + "label": "a100_40_base", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false", + "XLA_FLAGS": "--xla_dump_to=/tmp/dump_a100_40_base --xla_dump_hlo_as_text --xla_dump_hlo_module_re=.*lambda.* --xla_gpu_dump_autotune_results_to=/data/results/tf32probe01/a100_40_base_autotune.txt" + }, + "ok": true, + "device": "NVIDIA A100-SXM4-40GB", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "8.0", + "attention": "pallas", + "pool_gib": 29.63671875, + "highest_first_call_s": 132.97908067703247, + "step_s": [], + "finite": [], + "peak_gib": 5.937268257141113, + "wall_s": 143.64632391929626 + }, + "at0": { + "label": "a100_40_at0", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false", + "XLA_FLAGS": "--xla_gpu_autotune_level=0" + }, + "ok": true, + "device": "NVIDIA A100-SXM4-40GB", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "8.0", + "attention": "pallas", + "pool_gib": 29.63671875, + "highest_first_call_s": 126.01233983039856, + "step_s": [], + "finite": [], + "peak_gib": 5.581749677658081, + "wall_s": 133.0238482952118 + }, + "tf32off": { + "label": "a100_40_tf32off", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false" + }, + "ok": true, + "device": "NVIDIA A100-SXM4-40GB", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "8.0", + "attention": "pallas", + "pool_gib": 29.63671875, + "highest_first_call_s": 133.15456080436707, + "step_s": [], + "finite": [], + "peak_gib": 5.937268018722534, + "wall_s": 140.29184436798096 + }, + "notritongemm": { + "label": "a100_40_notritongemm", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false", + "XLA_FLAGS": "--xla_gpu_enable_triton_gemm=false" + }, + "ok": true, + "device": "NVIDIA A100-SXM4-40GB", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "8.0", + "attention": "pallas", + "pool_gib": 29.63671875, + "highest_first_call_s": 120.14120078086853, + "step_s": [], + "finite": [], + "peak_gib": 5.7115514278411865, + "wall_s": 127.63998007774353 + } +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/tf32probe01/a100_40_tf32off.json b/docs/results/a100_host_graph/tf32probe01/a100_40_tf32off.json new file mode 100644 index 0000000..eb66105 --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe01/a100_40_tf32off.json @@ -0,0 +1,17 @@ +{ + "label": "a100_40_tf32off", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false" + }, + "ok": true, + "device": "NVIDIA A100-SXM4-40GB", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "8.0", + "attention": "pallas", + "pool_gib": 29.63671875, + "highest_first_call_s": 133.15456080436707, + "step_s": [], + "finite": [], + "peak_gib": 5.937268018722534 +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/tf32probe01/a100_40_tf32off.log b/docs/results/a100_host_graph/tf32probe01/a100_40_tf32off.log new file mode 100644 index 0000000..e4bf7ab --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe01/a100_40_tf32off.log @@ -0,0 +1,12 @@ +NVIDIA A100-SXM4-40GB cc=8.0 attention=pallas pool 29.64 GiB +highest-precision step saved (101 fields) in 133s +peak 5.94 GiB of pool 29.64 GiB; ok=True +WARNING:absl:Skipping gradient checkpointing for sequence length of 1 +WARNING:absl:No coordinates found for dim noise_channels of array Size: 128B +JitTracer(float32[1,1,32]) +Dimensions without coordinates: batch, channels, noise_channels., using index for param name. This may make model surgery more error prone if changing coordinates at fine-tuning time. +/usr/local/lib/python3.12/site-packages/scipy/sparse/_index.py:216: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil and dok are more efficient. + self._set_arrayXarray(i, j, x) +WARNING:root:No normalization scale found for cyclone_exists_gaussian_unit_mode +WARNING:root:No normalization location found for cyclone_exists_gaussian_unit_mode +W1101 18:41:44.970353 1100 hlo_rematerialization.cc:3363] Can't reduce memory use below 26.91GiB (28895515853 bytes) by rematerialization; only reduced to 28.82GiB (30943716076 bytes), down from 28.82GiB (30943728380 bytes) originally diff --git a/docs/results/a100_host_graph/tf32probe01/a100_80_base.json b/docs/results/a100_host_graph/tf32probe01/a100_80_base.json new file mode 100644 index 0000000..b7d297a --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe01/a100_80_base.json @@ -0,0 +1,18 @@ +{ + "label": "a100_80_base", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false", + "XLA_FLAGS": "--xla_dump_to=/tmp/dump_a100_80_base --xla_dump_hlo_as_text --xla_dump_hlo_module_re=.*lambda.* --xla_gpu_dump_autotune_results_to=/data/results/tf32probe01/a100_80_base_autotune.txt" + }, + "ok": true, + "device": "NVIDIA A100 80GB PCIe", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "8.0", + "attention": "pallas", + "pool_gib": 59.455078125, + "highest_first_call_s": 127.11047983169556, + "step_s": [], + "finite": [], + "peak_gib": 5.937267303466797 +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/tf32probe01/a100_80_base.log b/docs/results/a100_host_graph/tf32probe01/a100_80_base.log new file mode 100644 index 0000000..8ea02ed --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe01/a100_80_base.log @@ -0,0 +1,11 @@ +NVIDIA A100 80GB PCIe cc=8.0 attention=pallas pool 59.46 GiB +highest-precision step saved (101 fields) in 127s +peak 5.94 GiB of pool 59.46 GiB; ok=True +WARNING:absl:Skipping gradient checkpointing for sequence length of 1 +WARNING:absl:No coordinates found for dim noise_channels of array Size: 128B +JitTracer(float32[1,1,32]) +Dimensions without coordinates: batch, channels, noise_channels., using index for param name. This may make model surgery more error prone if changing coordinates at fine-tuning time. +/usr/local/lib/python3.12/site-packages/scipy/sparse/_index.py:216: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil and dok are more efficient. + self._set_arrayXarray(i, j, x) +WARNING:root:No normalization scale found for cyclone_exists_gaussian_unit_mode +WARNING:root:No normalization location found for cyclone_exists_gaussian_unit_mode diff --git a/docs/results/a100_host_graph/tf32probe01/a100_80_summary.json b/docs/results/a100_host_graph/tf32probe01/a100_80_summary.json new file mode 100644 index 0000000..b68b462 --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe01/a100_80_summary.json @@ -0,0 +1,24 @@ +{ + "card": "a100_80", + "nvidia_smi": "name, driver_version, memory.total [MiB], clocks.max.sm [MHz], ecc.mode.current\nNVIDIA A100 80GB PCIe, 610.57.04, 81920 MiB, 1410 MHz, Enabled\n", + "env": {}, + "base": { + "label": "a100_80_base", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false", + "XLA_FLAGS": "--xla_dump_to=/tmp/dump_a100_80_base --xla_dump_hlo_as_text --xla_dump_hlo_module_re=.*lambda.* --xla_gpu_dump_autotune_results_to=/data/results/tf32probe01/a100_80_base_autotune.txt" + }, + "ok": true, + "device": "NVIDIA A100 80GB PCIe", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "8.0", + "attention": "pallas", + "pool_gib": 59.455078125, + "highest_first_call_s": 127.11047983169556, + "step_s": [], + "finite": [], + "peak_gib": 5.937267303466797, + "wall_s": 139.12689113616943 + } +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/tf32probe01/hlo_before_optimizations_40gb_vs_80gb.diff b/docs/results/a100_host_graph/tf32probe01/hlo_before_optimizations_40gb_vs_80gb.diff new file mode 100644 index 0000000..b8269f4 --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe01/hlo_before_optimizations_40gb_vs_80gb.diff @@ -0,0 +1,14 @@ +831,832c831,832 +< %_pad.26 (Arg_0.35: f32[1618832,1,4], Arg_1.25: s32[]) -> f32[1638400,1,4] { +< %Arg_0.35 = f32[1618832,1,4]{2,1,0} parameter(0) +--- +> %_pad.26 (Arg_0.35: f32[1618841,1,4], Arg_1.25: s32[]) -> f32[1638400,1,4] { +> %Arg_0.35 = f32[1618841,1,4]{2,1,0} parameter(0) +835c835 +< ROOT %pad.1 = f32[1638400,1,4]{2,1,0} pad(%Arg_0.35, %convert_element_type.5), padding=0_19568x0_0x0_0, metadata={op_name="pad"} +--- +> ROOT %pad.1 = f32[1638400,1,4]{2,1,0} pad(%Arg_0.35, %convert_element_type.5), padding=0_19559x0_0x0_0, metadata={op_name="pad"} +5235c5235 +< %constant.976 = f32[1618832,1,4]{2,1,0} constant({...}) +--- +> %constant.976 = f32[1618841,1,4]{2,1,0} constant({...}) diff --git a/docs/results/a100_host_graph/tf32probe02/a100_40_edges5090.json b/docs/results/a100_host_graph/tf32probe02/a100_40_edges5090.json new file mode 100644 index 0000000..ce73e98 --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe02/a100_40_edges5090.json @@ -0,0 +1,34 @@ +{ + "label": "a100_40_edges5090", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false" + }, + "ok": true, + "cpu": "unknown", + "numpy": "2.5.4", + "numpy_simd": [ + "X86_V3" + ], + "graphs": { + "BALL_QUERY": { + "n_edges": 1618841, + "sha1": "189d06f0830e1c31", + "loaded": true + }, + "IN_TRIANGLE": { + "n_edges": 3114720, + "sha1": "0bd261acea40807d", + "loaded": true + } + }, + "device": "NVIDIA A100-SXM4-40GB", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "8.0", + "attention": "pallas", + "pool_gib": 29.63671875, + "highest_first_call_s": 112.11894607543945, + "step_s": [], + "finite": [], + "peak_gib": 5.937268018722534 +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/tf32probe02/a100_40_edges5090.log b/docs/results/a100_host_graph/tf32probe02/a100_40_edges5090.log new file mode 100644 index 0000000..6ca53c8 --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe02/a100_40_edges5090.log @@ -0,0 +1,13 @@ +NVIDIA A100-SXM4-40GB cc=8.0 attention=pallas pool 29.64 GiB; host unknown, NumPy SIMD ['X86_V3'] +highest-precision step saved (101 fields) in 112s +graphs: {'BALL_QUERY': {'n_edges': 1618841, 'sha1': '189d06f0830e1c31', 'loaded': True}, 'IN_TRIANGLE': {'n_edges': 3114720, 'sha1': '0bd261acea40807d', 'loaded': True}} +peak 5.94 GiB of pool 29.64 GiB; ok=True +WARNING:absl:Skipping gradient checkpointing for sequence length of 1 +WARNING:absl:No coordinates found for dim noise_channels of array Size: 128B +JitTracer(float32[1,1,32]) +Dimensions without coordinates: batch, channels, noise_channels., using index for param name. This may make model surgery more error prone if changing coordinates at fine-tuning time. +/usr/local/lib/python3.12/site-packages/scipy/sparse/_index.py:216: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil and dok are more efficient. + self._set_arrayXarray(i, j, x) +WARNING:root:No normalization scale found for cyclone_exists_gaussian_unit_mode +WARNING:root:No normalization location found for cyclone_exists_gaussian_unit_mode +W1101 18:56:45.863282 95 hlo_rematerialization.cc:3363] Can't reduce memory use below 26.91GiB (28895515853 bytes) by rematerialization; only reduced to 28.82GiB (30943716076 bytes), down from 28.82GiB (30943728380 bytes) originally diff --git a/docs/results/a100_host_graph/tf32probe02/a100_40_graph.json b/docs/results/a100_host_graph/tf32probe02/a100_40_graph.json new file mode 100644 index 0000000..4a887eb --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe02/a100_40_graph.json @@ -0,0 +1,35 @@ +{ + "cpu": "unknown", + "numpy": "2.5.4", + "avx512_skx": false, + "dispatch": [ + "X86_V3" + ], + "npy_disable_cpu_features": "", + "graphs": [ + { + "connectivity": "BALL_QUERY", + "n_edges": 1618832, + "sha1": "1d90c1ed7b086815", + "dtypes": [ + "float32", + "float32", + "float32", + "float32" + ], + "radius": 0.012404080480337143, + "pairs_near_radius": { + "1e-12": 0, + "1e-09": 0, + "1e-07": 0, + "1e-06": 1, + "1e-05": 70 + } + }, + { + "connectivity": "IN_TRIANGLE", + "n_edges": 3114720, + "sha1": "31e1d7a376c54521" + } + ] +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/tf32probe02/a100_40_summary.json b/docs/results/a100_host_graph/tf32probe02/a100_40_summary.json new file mode 100644 index 0000000..69cb099 --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe02/a100_40_summary.json @@ -0,0 +1,75 @@ +{ + "card": "a100_40", + "nvidia_smi": "name, driver_version, memory.total [MiB], clocks.max.sm [MHz], ecc.mode.current\nNVIDIA A100-SXM4-40GB, 610.57.04, 40960 MiB, 1410 MHz, Enabled\n", + "env": {}, + "graph": { + "cpu": "unknown", + "numpy": "2.5.4", + "avx512_skx": false, + "dispatch": [ + "X86_V3" + ], + "npy_disable_cpu_features": "", + "graphs": [ + { + "connectivity": "BALL_QUERY", + "n_edges": 1618832, + "sha1": "1d90c1ed7b086815", + "dtypes": [ + "float32", + "float32", + "float32", + "float32" + ], + "radius": 0.012404080480337143, + "pairs_near_radius": { + "1e-12": 0, + "1e-09": 0, + "1e-07": 0, + "1e-06": 1, + "1e-05": 70 + } + }, + { + "connectivity": "IN_TRIANGLE", + "n_edges": 3114720, + "sha1": "31e1d7a376c54521" + } + ] + }, + "edges5090": { + "label": "a100_40_edges5090", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false" + }, + "ok": true, + "cpu": "unknown", + "numpy": "2.5.4", + "numpy_simd": [ + "X86_V3" + ], + "graphs": { + "BALL_QUERY": { + "n_edges": 1618841, + "sha1": "189d06f0830e1c31", + "loaded": true + }, + "IN_TRIANGLE": { + "n_edges": 3114720, + "sha1": "0bd261acea40807d", + "loaded": true + } + }, + "device": "NVIDIA A100-SXM4-40GB", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "8.0", + "attention": "pallas", + "pool_gib": 29.63671875, + "highest_first_call_s": 112.11894607543945, + "step_s": [], + "finite": [], + "peak_gib": 5.937268018722534, + "wall_s": 120.11274552345276 + } +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/tf32probe03/a100_80_numpy_avx2.json b/docs/results/a100_host_graph/tf32probe03/a100_80_numpy_avx2.json new file mode 100644 index 0000000..6b1ece9 --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe03/a100_80_numpy_avx2.json @@ -0,0 +1,34 @@ +{ + "label": "a100_80_numpy_avx2", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false" + }, + "ok": true, + "cpu": "unknown", + "numpy": "2.5.4", + "numpy_simd": [ + "X86_V3" + ], + "graphs": { + "BALL_QUERY": { + "n_edges": 1618832, + "sha1": "1d90c1ed7b086815", + "loaded": false + }, + "IN_TRIANGLE": { + "n_edges": 3114720, + "sha1": "31e1d7a376c54521", + "loaded": false + } + }, + "device": "NVIDIA A100 80GB PCIe", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "8.0", + "attention": "pallas", + "pool_gib": 59.455078125, + "highest_first_call_s": 137.35874152183533, + "step_s": [], + "finite": [], + "peak_gib": 5.937268495559692 +} \ No newline at end of file diff --git a/docs/results/a100_host_graph/tf32probe03/a100_80_numpy_avx2.log b/docs/results/a100_host_graph/tf32probe03/a100_80_numpy_avx2.log new file mode 100644 index 0000000..3601e4a --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe03/a100_80_numpy_avx2.log @@ -0,0 +1,12 @@ +NVIDIA A100 80GB PCIe cc=8.0 attention=pallas pool 59.46 GiB; host unknown, NumPy SIMD ['X86_V3'] +highest-precision step saved (101 fields) in 137s +graphs: {'BALL_QUERY': {'n_edges': 1618832, 'sha1': '1d90c1ed7b086815', 'loaded': False}, 'IN_TRIANGLE': {'n_edges': 3114720, 'sha1': '31e1d7a376c54521', 'loaded': False}} +peak 5.94 GiB of pool 59.46 GiB; ok=True +WARNING:absl:Skipping gradient checkpointing for sequence length of 1 +WARNING:absl:No coordinates found for dim noise_channels of array Size: 128B +JitTracer(float32[1,1,32]) +Dimensions without coordinates: batch, channels, noise_channels., using index for param name. This may make model surgery more error prone if changing coordinates at fine-tuning time. +/usr/local/lib/python3.12/site-packages/scipy/sparse/_index.py:216: SparseEfficiencyWarning: Changing the sparsity structure of a csr_matrix is expensive. lil and dok are more efficient. + self._set_arrayXarray(i, j, x) +WARNING:root:No normalization scale found for cyclone_exists_gaussian_unit_mode +WARNING:root:No normalization location found for cyclone_exists_gaussian_unit_mode diff --git a/docs/results/a100_host_graph/tf32probe03/a100_80_summary.json b/docs/results/a100_host_graph/tf32probe03/a100_80_summary.json new file mode 100644 index 0000000..5208312 --- /dev/null +++ b/docs/results/a100_host_graph/tf32probe03/a100_80_summary.json @@ -0,0 +1,40 @@ +{ + "card": "a100_80", + "nvidia_smi": "name, driver_version, memory.total [MiB], clocks.max.sm [MHz], ecc.mode.current\nNVIDIA A100 80GB PCIe, 610.57.04, 81920 MiB, 1410 MHz, Enabled\n", + "env": {}, + "numpy_avx2": { + "label": "a100_80_numpy_avx2", + "env": { + "XLA_PYTHON_CLIENT_PREALLOCATE": "false" + }, + "ok": true, + "cpu": "unknown", + "numpy": "2.5.4", + "numpy_simd": [ + "X86_V3" + ], + "graphs": { + "BALL_QUERY": { + "n_edges": 1618832, + "sha1": "1d90c1ed7b086815", + "loaded": false + }, + "IN_TRIANGLE": { + "n_edges": 3114720, + "sha1": "31e1d7a376c54521", + "loaded": false + } + }, + "device": "NVIDIA A100 80GB PCIe", + "jax": "0.11.2", + "faster_weathernext": "0.1.1", + "compute_capability": "8.0", + "attention": "pallas", + "pool_gib": 59.455078125, + "highest_first_call_s": 137.35874152183533, + "step_s": [], + "finite": [], + "peak_gib": 5.937268495559692, + "wall_s": 149.64930152893066 + } +} \ No newline at end of file diff --git a/docs/validation.md b/docs/validation.md index e3be86c..7a936f9 100644 --- a/docs/validation.md +++ b/docs/validation.md @@ -99,7 +99,7 @@ rollout step including host overhead (steps 2–4 of a 4-step rollout, default p |---|---|---|---|---|---|---| | RTX 5090 (local) | sm_120 | pallas | 0.7 | 6.40 GiB | yes | — | | RTX 4060 (vast.ai) | sm_89 | pallas | 5.2 | 6.21 GiB | yes (real 8 GB card) | not measured (sm_89 covered by L4) | -| A100-SXM4-40GB | sm_80 | pallas | 1.1 | 6.18 GiB | yes (6.21) | 1.6–1.9e-5 in 5 of 6 runs; see note | +| A100-SXM4-40GB | sm_80 | pallas | 1.1 | 6.18 GiB | yes (6.21) | 1.32e-2: its host builds another graph; 1.7e-5 vs an A100-80GB given the same host inputs (see note) | | A10G | sm_86 | pallas | 2.5 | 6.53 GiB | yes (6.34) | 1.6e-5 | | L4 | sm_89 | pallas | 3.5 | 6.53 GiB | yes (6.34) | 1.75e-5 | | T4 | sm_75 | xla (automatic; no TF32) | 44 | 6.49 GiB | yes (6.30) | 9.7e-5 | @@ -114,23 +114,74 @@ out of memory. Installed from the repo on a fresh machine. Files: An earlier build without the fused attention kernel ran at 18.5 s/step on the same card ([`results/canary_vast_rtx4060/`](results/canary_vast_rtx4060/)). -**A100 note.** One of six A100 fp32 runs deviated from the RTX 5090 at TF32 level (max rel RMS -1.3e-2, median 6.2e-4) and could not be reproduced (autotune on / off and three fresh repeats: -1.6–1.9e-5). XLA's autotuner picks kernels by timing and its picks vary between runs (21 of -149 autotuned ops differed across three repeats); the most likely explanation is one pick that -did not honour fp32 in that run. For strict fp32 use `--no-autotune` (5/5 matching A100 runs) -and for reproducible runs `--autotune-cache`. Files: [`results/a100_repeats/`](results/a100_repeats/). -Update (2026-11-01): the canary below reproduced the deviation almost exactly (max rel RMS 1.32e-2, -median 6.21e-4, same worst fields, min corr equal to 8 digits), so it is not a one-off pick: on -A100, `cloud/canary_run.py` lands at TF32 level where the repeat script did not. Not yet explained; -it predates the attention backward (same numbers on v0.1.0). +**A100 note: the host CPU, not the GPU (cause found 2026-11-01).** On Modal's A100-SXM4-40GB the +fp32 step differs from the RTX 5090 by max rel RMS 1.32e-2 (median 6.21e-4; worst fields +`cyclone_usa_rmw_disc`, `vertical_velocity@50`) in every run (canary02 on v0.1.0, canary03 and +tf32probe01 on v0.2; the three agree with each other at 1.5–2.1e-5). It looks like TF32 but is not. +Earlier it was read as "1 of 6 runs, an autotune pick that did not honour fp32"; that was wrong: +Modal served the five "A100-40GB" probe and repeat requests on A100-SXM4-80GB machines (`device` +in [`results/a100_repeats/`](results/a100_repeats/)), so every 40GB run deviated and every 80GB run +matched (1.6–1.9e-5). + +The official code builds the grid→mesh and mesh→grid graphs on the host CPU, with NumPy, from +float32 latitudes and longitudes: the mesh nodes' lat/lon come from Cartesian positions through +`np.arctan2`/`np.arccos`, then grid and mesh go back to unit-sphere coordinates through +`np.sin`/`np.cos`, and a `cKDTree` ball query (radius 0.6 × the longest mesh edge, 0.0124) picks the +grid→mesh edges; mesh→grid uses the mesh triangle that contains each grid point. One float32 ULP +of a coordinate moves a 0.0124 distance by ~1e-5 (relative), and about 70 (grid point, mesh node) +pairs lie that close to the radius. NumPy picks its math code at run time from the host CPU, and +the results differ in the last bit: between its AVX-512 and AVX2 code, 12,454 of the 40,962 mesh +latitudes (and 9,964 longitudes) come out different; its baseline code (no AVX2) also hands +`sin`/`cos` to glibc ([`numpy_code_paths.txt`](results/a100_host_graph/local_rtx5090/numpy_code_paths.txt)). +Modal's A100-40GB hosts offer AVX2 but not AVX-512; the RTX 5090 desktop (Zen 5) and Modal's +A100-80GB and T4 hosts offer AVX-512. The two build different graphs: 1,618,832 vs 1,618,841 +grid→mesh edges (13 differ), and 517 of 1,038,240 grid points in a different mesh triangle (points +on mesh edges along the meridians 0°, 60°, …, 300°); the edge-feature and node-position constants +also differ in the last bits. +faster-weathernext does not touch this (the patched `_build_typed_graph` calls the stock one, +which calls the official `PointsMeshTypedGraphGNN._get_edge_indices`), so the official code depends +on the host in the same way. Each graph is what the official code builds on that CPU. + +Evidence (one 0.25° step at `highest`; files in [`results/a100_host_graph/`](results/a100_host_graph/), +comparisons in its `cross_card_fp32.txt`): +- The HLO that JAX hands to XLA already differs between a 40GB and an 80GB run, in one place: the + grid→mesh edge-feature constant is `f32[1618832,1,4]` vs `f32[1618841,1,4]` + (`tf32probe01/hlo_before_optimizations_40gb_vs_80gb.diff`). +- XLA and TF32 settings change nothing on the 40GB card: autotuning off, `NVIDIA_TF32_OVERRIDE=0` + and Triton GEMMs off all give 1.32e-2 / 6.21e-4 (`cloud/modal_a100_tf32.py`). +- The difference is local. It sits on the 13 changed edges and the 517 re-assigned grid points + ([map](results/a100_host_graph/errmap_a100_40gb_vs_rtx5090.png), + [`differing_edges.txt`](results/a100_host_graph/differing_edges.txt)); elsewhere the two cards + agree at ~1e-6. +- Graph swap (`scripts/graph_edges.py --save-edges`, `cloud/canary_run.py --edges`): the RTX 5090 + on the 40GB host's graph differs from the RTX 5090 on its own graph by 1.32e-2 / 6.21e-4 (same + worst fields), and so does the A100-40GB on the RTX 5090's graph from the A100-40GB on its own. + With the graph swapped, the two cards are 1.3e-4 / 1e-5 apart. The remainder is the host-side + features: on the RTX 5090, with the graph held fixed, switching only NumPy's code path from + AVX-512 to AVX2 moves the output by the same 1.33e-4 / 1.0e-5. +- One card, one environment variable: on an A100 80GB PCIe (AVX-512 host), forcing NumPy's AVX2 + code (`NPY_DISABLE_CPU_FEATURES="X86_V4 AVX512_ICL AVX512_SPR"`) builds exactly the 40GB host's + graph (same hash) and moves the output by 1.32e-2 / 6.21e-4 from the same card's default run. + That output then matches the A100-40GB at 1.69e-5 / 1.47e-6, the usual cross-GPU level + (tf32probe03). +- Host survey (`cloud/modal_graph_hosts.py`): the T4 and A100-80GB hosts build the RTX 5090's graph + (same hash); an A10G host with AVX2 only builds the 40GB host's graph. The canary's A10G + requests ran on `NVIDIA A10` cards (another host type; its CPU was not recorded) and matched. + +So the fp32 agreement across GPUs holds for the same host-built graph. On machines whose CPUs take +different NumPy code paths the official model runs on slightly different graphs, and one fp32 step +then differs by up to ~1e-2 max rel RMS (median 6e-4), around the changed edges. `cloud/canary_run.py` +now records the graph hashes and NumPy's SIMD targets: compare fp32 outputs across machines only +when the hashes match, or pass `--edges`. `--no-autotune` is not needed for fp32 (it changed nothing +here). XLA's autotune picks still vary between runs (21 of 149 ops across three A100 repeats), so +use `--autotune-cache` for bitwise-reproducible runs. **Canary after the attention backward (2026-11-01, branch `head-only-finetune`).** Same runner and cards as the table above (`modal run cloud/modal_canary.py --cards a100,a10g,l4,t4`, ~$1–2): every card ran and fits the 8 GB pool; steady-state s/step and peaks as in the table (A100 1.10 s / 6.18 GiB, A10G 2.43 / 6.53, L4 3.57 / 6.53, T4 43 / 6.49 on the XLA path). fp32 outputs vs a fresh -RTX 5090 run of the same code: A10G 1.67e-5, L4 1.85e-5, T4 9.67e-5 max rel RMS; A100 1.32e-2 (the -note above). Files: [`results/canary_modal/v0.2/`](results/canary_modal/v0.2/). +RTX 5090 run of the same code: A10G 1.67e-5, L4 1.85e-5, T4 9.67e-5 max rel RMS; A100 1.32e-2 (a +different host-built graph, not the GPU: note above). Files: [`results/canary_modal/v0.2/`](results/canary_modal/v0.2/). ## 5. Mini model and batch size > 1 (v0.1.1) @@ -423,6 +474,10 @@ Files: [`results/finetune/finetune_full_smoke_rtx5090.json`](results/finetune/fi rollouts in §3 and the batch checks in §5. - Batch sizes > 1 were checked at 2 (§5, §6); larger batches only change memory. - Without a fixed autotune cache, results are not bitwise reproducible between runs (§4 note). +- fp32 agreement across machines assumes the same host-built graphs. The official code builds the + grid↔mesh graphs with NumPy on the host CPU, and they follow NumPy's SIMD code path: between an + AVX2 and an AVX-512 host one fp32 step differs by up to 1.3e-2 max rel RMS (median 6e-4), with or + without faster-weathernext (§4, A100 note). Only x86 hosts were checked. - TPU (`splash_mha`) numerics were not compared; TPU matmuls use bf16 passes by default and differ from any of the GPU paths above. - Whole-model gradients were compared with the official path on the Mini model at 1° (§9, on an diff --git a/scripts/graph_edges.py b/scripts/graph_edges.py new file mode 100644 index 0000000..4d4cfc6 --- /dev/null +++ b/scripts/graph_edges.py @@ -0,0 +1,86 @@ +"""Count the edges of the grid<->mesh graphs that the official code builds on the host CPU. + +WN2 builds its grid->mesh edges with a ball query (scipy cKDTree, radius = a fraction of the +longest mesh edge) on unit-sphere coordinates computed from float32 lat/lon with NumPy (mesh +lat/lon via np.arctan2 / np.arccos, then np.sin / np.cos). Grid points close to the query radius +are kept or dropped depending on the last bits of those coordinates, and NumPy's results depend on +the code path it picks for the host CPU (AVX-512, AVX2, baseline). This script traces one forward +step on the CPU (no compilation) and prints, per graph, the edge count, a hash of the edge indices +and how many (grid point, mesh node) pairs lie within a relative 1e-12 ... 1e-5 of the radius. + + JAX_PLATFORMS=cpu python scripts/graph_edges.py --data SAMPLE.nc [--weights-dir DIR] [--json out.json] + [--save-edges edges.npz] # reuse elsewhere with cloud/canary_run.py --edges edges.npz + # NumPy's code path for a CPU without AVX-512 (NumPy 2.5 names; "X86_V3 ..." too: no AVX2): + NPY_DISABLE_CPU_FEATURES="X86_V4 AVX512_ICL AVX512_SPR" JAX_PLATFORMS=cpu python scripts/graph_edges.py ... +""" +import argparse +import dataclasses +import hashlib +import json +import os +import platform + +import numpy as np + +p = argparse.ArgumentParser() +p.add_argument("--data", required=True, help="Google's 0.25° sample (see scripts/verify_equivalence.py)") +p.add_argument("--model", default="WeatherNextCyclones") +p.add_argument("--weights-dir") +p.add_argument("--json", default="") +p.add_argument("--save-edges", default="", help=".npz with the edge indices (for cloud/canary_run.py --edges)") +args = p.parse_args() + +import jax # noqa: E402 +import xarray # noqa: E402 +from scipy import spatial # noqa: E402 +from weathernext.utils import data_utils # noqa: E402 +from weathernext.utils import model_utils # noqa: E402 +from weathernext.utils import points_mesh_gnn as pmg # noqa: E402 + +import faster_weathernext # noqa: E402 +from faster_weathernext import model # noqa: E402 + +from numpy._core._multiarray_umath import __cpu_dispatch__, __cpu_features__ # noqa: E402 + +cpu = next((l.split(":", 1)[1].strip() for l in open("/proc/cpuinfo") if l.startswith("model name")), platform.processor()) +res = dict(cpu=cpu, numpy=np.__version__, avx512_skx=bool(__cpu_features__.get("AVX512_SKX")), + dispatch=[f for f in __cpu_dispatch__ if __cpu_features__.get(f)], + npy_disable_cpu_features=os.environ.get("NPY_DISABLE_CPU_FEATURES", ""), graphs=[]) + +orig = pmg.PointsMeshTypedGraphGNN._get_edge_indices +edges = {} + + +def hooked(self, plat, plon, mlat, mlon, faces): + pts, mesh = orig(self, plat, plon, mlat, mlon, faces) + g = dict(connectivity=self._connectivity_type.name, n_edges=int(len(pts)), + sha1=hashlib.sha1(np.stack([pts, mesh]).astype(np.int64).tobytes()).hexdigest()[:16]) + if self._connectivity_type == pmg.ConnectivityType.BALL_QUERY: + pc = np.stack(model_utils.lat_lon_to_cartesian(plat, plon), -1) + mc = np.stack(model_utils.lat_lon_to_cartesian(mlat, mlon), -1) + r = self._ball_query_radius_fraction * pmg._max_edge_distance(mc, faces) + near = spatial.cKDTree(mc).query_ball_point(pc, r=r * (1 + 1e-5)) + d = np.concatenate([np.linalg.norm(mc[nb] - pc[i], axis=-1) for i, nb in enumerate(near) if nb]) + g.update(dtypes=[str(np.asarray(a).dtype) for a in (plat, plon, mlat, mlon)], radius=float(r), + pairs_near_radius={f"{t:.0e}": int((np.abs(d - r) <= t * r).sum()) for t in (1e-12, 1e-9, 1e-7, 1e-6, 1e-5)}) + res["graphs"].append(g) + edges[f"{g['connectivity']}_points"], edges[f"{g['connectivity']}_mesh"] = pts.astype(np.int32), mesh.astype(np.int32) + print(g, flush=True) + return pts, mesh + + +pmg.PointsMeshTypedGraphGNN._get_edge_indices = hooked +faster_weathernext.enable() +task, forward = model.build(args.model) +params = model.load_params(args.model, 1, args.weights_dir) +ds = xarray.load_dataset(args.data) +inputs, targets, forcings = data_utils.extract_inputs_targets_forcings( + ds, target_lead_times=slice("6h", "6h"), **dataclasses.asdict(task)) +# Tracing builds the graphs (host numpy/scipy); nothing is compiled or run on a device. +jax.eval_shape(forward, params, jax.random.PRNGKey(0), inputs, targets * np.nan, forcings) +print(json.dumps(res, indent=1)) +if args.json: + with open(args.json, "w") as f: + json.dump(res, f, indent=1) +if args.save_edges: + np.savez_compressed(args.save_edges, **edges) From e0728ccd469fe0d73149e26b8deeb9deb3d05262 Mon Sep 17 00:00:00 2001 From: Raymond Huang <103474329+Raymondlol@users.noreply.github.com> Date: Sun, 1 Nov 2026 14:36:13 -0500 Subject: [PATCH 2/2] README FAQ and --no-autotune help: drop the A100 strict-fp32 advice MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --no-autotune was recommended for strict fp32 because of the A100 deviation, which turned out to be a host-built graph difference (autotune off changed nothing there; docs/validation.md §4). The FAQ now says --precision highest is what gives fp32-level results, and that machines with and without AVX-512 build slightly different grid<->mesh graphs. Co-Authored-By: Claude Opus 5.5 --- CHANGELOG.md | 3 +++ README.md | 4 +++- src/faster_weathernext/cli.py | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c72b20..445a838 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,9 @@ another machine's graph with `--edges`, and skips the rollout with `--steps 0`. New `scripts/graph_edges.py` counts and saves the graphs on the CPU; new `cloud/modal_a100_tf32.py` and `cloud/modal_graph_hosts.py` are the probes. Validation: docs/validation.md §4, A100 note. +- README FAQ and `--no-autotune` help: no longer recommend `--no-autotune` for strict fp32 + (`--precision highest` gives fp32-level results; autotuning was not the cause). The FAQ now + says why results can differ between machines. ## 0.2.0 — 2026-11-01 diff --git a/README.md b/README.md index b85c439..da23078 100644 --- a/README.md +++ b/README.md @@ -168,7 +168,9 @@ No. Weights are the official fp32 checkpoints, attention is exact, and every lay

Why aren't results bit-identical between runs? -XLA picks GPU kernels by timing them, so kernel choices — and the last bits of the result — vary between runs, with or without this project. Use `fwn forecast --autotune-cache kernels.txt` to save the choices on the first run and reuse them. For strict fp32, use `--precision highest --no-autotune`. +XLA picks GPU kernels by timing them, so kernel choices — and the last bits of the result — vary between runs, with or without this project. Use `fwn forecast --autotune-cache kernels.txt` to save the choices on the first run and reuse them (`--no-autotune` also fixes them; neither is needed for fp32-level results, which `--precision highest` gives). + +Between machines, results can differ by more than that: the official code builds its grid↔mesh graph on the CPU with NumPy, and CPUs with and without AVX-512 get a few different edges. In one fp32 step that is up to 1.3 × 10⁻² relative RMS in the most sensitive field (median 6 × 10⁻⁴), around those edges ([details](docs/validation.md#4-other-gpus-modal-vastai)).
diff --git a/src/faster_weathernext/cli.py b/src/faster_weathernext/cli.py index 2d0d324..2c28aa8 100644 --- a/src/faster_weathernext/cli.py +++ b/src/faster_weathernext/cli.py @@ -122,7 +122,7 @@ def main(argv=None): sub = p.add_subparsers(dest="cmd", required=True) common = argparse.ArgumentParser(add_help=False) common.add_argument("--no-autotune", action="store_true", - help="XLA autotune off (deterministic kernel picks; recommended for strict fp32 on A100)") + help="XLA autotune off (deterministic kernel picks)") common.add_argument("--autotune-cache", metavar="PATH", help="save XLA's kernel picks here on the first run and reuse them afterwards") sub.add_parser("info", parents=[common], help="device, memory and compatibility check").set_defaults(fn=cmd_info)

Mqn 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