{ "cells": [ { "cell_type": "markdown", "id": "edoc-sumo-00", "metadata": {}, "source": [ "# `sumo-duaiterate` — the first external-dynamic (EDOC-1) row\n", "\n", "**What.** `sumo-duaiterate` wraps SUMO's dynamic user-assignment driver `duaIterate.py`\n", "(eclipse-sumo 1.27.1) — an iterated `duarouter` best-response over a mesoscopic dynamic\n", "network load. Unlike the *static* `sumo-marouter` row, there is **no declared cost law**\n", "to certify a gap against, so the certificate is **observational** (EDOC-1, [ADR-036](../../docs/design/adr-036-external-dynamic-observational-certificate.md) /\n", "[ADR-037](../../docs/design/adr-037-sumo-duaiterate.md)): *the engine is the instance*, and\n", "the harness re-derives every scored number by re-running the pinned engine on the model's\n", "emitted plans.\n", "\n", "**Score.** The **frozen-field best-response gap** `RG_D1` = Σ(c_driven − c_BR) / Σc_driven,\n", "a door-to-door quantity on its own scale — **not** the Wardrop `relative_gap` of the static\n", "rows, so it lives on a separate leaderboard table (R8 non-comparability)." ] }, { "cell_type": "markdown", "id": "edoc-sumo-01", "metadata": {}, "source": [ "## How this notebook is graded\n", "\n", "**A notebook never claims a number it does not compute in that cell.** Every quantity below —\n", "the certified `RG_D1`, feasibility, the negative-control separation, the duarouter cross-check —\n", "is recomputed here by the same `EdocEvaluator` the benchmark uses. The model emits artifacts;\n", "the certifier, model-blind, re-runs the pinned replay and recomputes the score (a doctored\n", "experienced record diverges from the replay and is censored)." ] }, { "cell_type": "code", "execution_count": 1, "id": "edoc-sumo-02", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:55:37.773940Z", "iopub.status.busy": "2026-07-21T13:55:37.773368Z", "iopub.status.idle": "2026-07-21T13:55:39.973957Z", "shell.execute_reply": "2026-07-21T13:55:39.972956Z" } }, "outputs": [], "source": [ "%matplotlib inline\n", "# Setup. `sumo-duaiterate` is behind the OPTIONAL `eclipse-sumo` extra\n", "# (`pip install tabench[sumo]`); this guard raises politely when it is missing rather than\n", "# failing with an ImportError deep in a later cell.\n", "import importlib.util\n", "\n", "if importlib.util.find_spec(\"sumo\") is None:\n", " raise RuntimeError(\"this tutorial needs the optional 'sumo' extra: pip install tabench[sumo]\")\n", "\n", "from collections import Counter\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "from tabench.metrics.edoc_gaps import EdocEvaluator\n", "from tabench.models.adapters.sumo_duaiterate import (\n", " SumoDuaIterateAdapter,\n", " duarouter_recost_crosscheck,\n", " make_replay_runner,\n", " reference_scenario,\n", ")" ] }, { "cell_type": "markdown", "id": "edoc-sumo-03", "metadata": {}, "source": [ "## The instance\n", "\n", "The pinned reference is a **diamond**: two O→D routes, with a **1-lane capacity drop on the\n", "route-distinguishing edge `a2`** (route A is free-flow-shorter, so an all-or-nothing assignment\n", "piles onto the bottleneck). The engine identity + version + seed + the meso config + Δ + the\n", "lane/geometry dials are **all inside the content hash** (P2) — the engine is part of the instance." ] }, { "cell_type": "code", "execution_count": 2, "id": "edoc-sumo-04", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:55:39.978730Z", "iopub.status.busy": "2026-07-21T13:55:39.978328Z", "iopub.status.idle": "2026-07-21T13:55:39.985267Z", "shell.execute_reply": "2026-07-21T13:55:39.984549Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "instance : sumo-duaiterate-ref\n", "content hash : b502f21880a28ff8e4e20531d294069cc63f7d47427bd3c148db8a807b467f29\n", "engine (pinned): eclipse-sumo 1.27.1 seed=42\n", "network : 4 edges, 720 agents (all O->D)\n", "lanes : {'a1': 2, 'a2': 1, 'b1': 2, 'b2': 2} (a2 is the 1-lane bottleneck)\n", "declared : separation >= 5x, floor 15s, Delta = 300s x 16\n" ] } ], "source": [ "scenario = reference_scenario()\n", "\n", "print(f\"instance : {scenario.name}\")\n", "print(f\"content hash : {scenario.content_hash()}\")\n", "print(f\"engine (pinned): {scenario.engine} {scenario.engine_version} seed={scenario.seed}\")\n", "print(f\"network : {scenario.n_edges} edges, {scenario.n_agents} agents (all O->D)\")\n", "print(f\"lanes : {scenario.lanes_of()} (a2 is the 1-lane bottleneck)\")\n", "print(f\"declared : separation >= {scenario.separation_factor:g}x, \"\n", " f\"floor {scenario.floor_seconds:g}s, Delta = {scenario.dt:g}s x {scenario.n_intervals}\")" ] }, { "cell_type": "markdown", "id": "edoc-sumo-05", "metadata": {}, "source": [ "## Emit — plans `P`, and `X` from the adapter's own pinned replay\n", "\n", "The model runs `duaIterate` (an MSA-style best-response loop) to produce the plans `P`. The\n", "adapter then runs its **own pinned meso replay of `P`** to produce the door-to-door experienced\n", "record `X` and the frozen cost field: `X` and the field are **defined by the pinned replay map**\n", "(a hashed instance field), *not* scraped from the solver's internals — those are provenance\n", "(ADR-037). All ADR-027 subprocess discipline applies (wheel `SUMO_HOME`, one wall deadline,\n", "teleport off so gridlock censors, `RuntimeError` on any engine failure)." ] }, { "cell_type": "code", "execution_count": 3, "id": "edoc-sumo-06", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:55:39.989192Z", "iopub.status.busy": "2026-07-21T13:55:39.988891Z", "iopub.status.idle": "2026-07-21T13:55:44.688426Z", "shell.execute_reply": "2026-07-21T13:55:44.687603Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "emitted plans : 720 agents\n", "route split : {'a1 -> a2': 358, 'b1 -> b2': 362}\n", "provenance : engine 1.27.1, seed 42\n" ] } ], "source": [ "adapter = SumoDuaIterateAdapter(iterations=12)\n", "emitted = adapter.emit(scenario, wall_seconds=300.0)\n", "\n", "split = Counter(\" -> \".join(route) for route, _dep in emitted.plans.values())\n", "print(f\"emitted plans : {len(emitted.plans)} agents\")\n", "print(f\"route split : {dict(split)}\")\n", "print(f\"provenance : engine {emitted.engine_version}, seed {emitted.seed}\")" ] }, { "cell_type": "markdown", "id": "edoc-sumo-07", "metadata": {}, "source": [ "## Certify (G0–G4 + `RG_D1`)\n", "\n", "The certifier is **model-blind**: it checks the engine pin (G0), re-runs the pinned engine in\n", "zero-replanning replay twice (G1 — replay fidelity + a determinism double), verifies the\n", "plan↔demand bijection (G2), the two-sided delivery census with `departDelay` in every cost (G3),\n", "and conservation (G4); then it rebuilds the frozen field and recomputes `RG_D1` itself." ] }, { "cell_type": "code", "execution_count": 4, "id": "edoc-sumo-08", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:55:44.690558Z", "iopub.status.busy": "2026-07-21T13:55:44.690375Z", "iopub.status.idle": "2026-07-21T13:55:45.187596Z", "shell.execute_reply": "2026-07-21T13:55:45.186569Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "feasible : 1.0\n", "RG_D1 (gap) : 0.02703 (366 strict improvers)\n", "resolution : delta 8.75s vs floor 15s -> floor_gap 0.0911, sub_floor=1\n", "delivery : max backlog 0.0s (bound 600s), BR-path coverage 1.00\n" ] } ], "source": [ "runner = make_replay_runner(deadline=None)\n", "metrics = EdocEvaluator(scenario, runner).certify(emitted)\n", "\n", "print(f\"feasible : {metrics['feasible']}\")\n", "print(f\"RG_D1 (gap) : {metrics['rg_d1']:.5f} ({int(metrics['n_improvers'])} strict improvers)\")\n", "print(f\"resolution : delta {metrics['delta']:.2f}s vs floor {scenario.floor_seconds:g}s \"\n", " f\"-> floor_gap {metrics['floor_gap']:.4f}, sub_floor={int(metrics['sub_floor'])}\")\n", "print(f\"delivery : max backlog {metrics['max_backlog']:.1f}s \"\n", " f\"(bound {scenario.backlog_bound:g}s), BR-path coverage {metrics['br_coverage']:.2f}\")" ] }, { "cell_type": "markdown", "id": "edoc-sumo-09", "metadata": {}, "source": [ "## The negative control — the metric has attributable signal\n", "\n", "`RG_D1` must *separate* a bad assignment from a good one. An **all-or-nothing** control\n", "(`duaIterate -l 1`, free-flow shortest path) piles everyone onto the free-flow-shorter route,\n", "congesting the bottleneck → a **large** gap; the converged assignment above balances → a **small**\n", "gap. Their ratio is the attributable negative control ADR-030 said the dynamic track lacked." ] }, { "cell_type": "code", "execution_count": 5, "id": "edoc-sumo-10", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:55:45.192365Z", "iopub.status.busy": "2026-07-21T13:55:45.191942Z", "iopub.status.idle": "2026-07-21T13:55:46.615321Z", "shell.execute_reply": "2026-07-21T13:55:46.614506Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AON control : RG_D1 0.13921\n", "converged : RG_D1 0.02703\n", "separation : 5.1x (declared >= 5x)\n" ] } ], "source": [ "aon = SumoDuaIterateAdapter(iterations=1).emit(scenario, wall_seconds=300.0)\n", "aon_metrics = EdocEvaluator(scenario, runner).certify(aon)\n", "separation = aon_metrics[\"rg_d1\"] / metrics[\"rg_d1\"]\n", "\n", "print(f\"AON control : RG_D1 {aon_metrics['rg_d1']:.5f}\")\n", "print(f\"converged : RG_D1 {metrics['rg_d1']:.5f}\")\n", "print(f\"separation : {separation:.1f}x (declared >= {scenario.separation_factor:g}x)\")" ] }, { "cell_type": "markdown", "id": "edoc-sumo-11", "metadata": {}, "source": [ "## Cross-check (R3) — the field the certifier scores == the field the engine reads\n", "\n", "The pinned `duarouter` re-costs the driven plans on the frozen field and must agree with the\n", "substrate's own field arithmetic within the declared tolerance; a disagreement RAISES (a harness\n", "correctness failure, not a censor)." ] }, { "cell_type": "code", "execution_count": 6, "id": "edoc-sumo-12", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:55:46.619173Z", "iopub.status.busy": "2026-07-21T13:55:46.618821Z", "iopub.status.idle": "2026-07-21T13:55:47.040155Z", "shell.execute_reply": "2026-07-21T13:55:47.039166Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "R3 duarouter vs substrate: max 5.10s, mean 1.34s (tolerance 15s)\n" ] } ], "source": [ "replay = runner(scenario, emitted.plans)\n", "r3 = duarouter_recost_crosscheck(\n", " scenario, emitted.plans, replay, deadline=None, tolerance_s=scenario.r3_tolerance_s,\n", ")\n", "print(f\"R3 duarouter vs substrate: max {r3['r3_max_s']:.2f}s, mean {r3['r3_mean_s']:.2f}s \"\n", " f\"(tolerance {r3['r3_tolerance_s']:g}s)\")" ] }, { "cell_type": "markdown", "id": "edoc-sumo-13", "metadata": {}, "source": [ "## Visualize\n", "\n", "One figure, every bar a number certified above: the negative-control separation on the `RG_D1`\n", "scale, with the Δ=300 resolution floor for reference. The converged gap sitting **below** the\n", "floor is the honest disclosure that a well-converged solution's residual is below the aggregation\n", "resolution — the metric still cleanly separates it from the AON control.\n", "\n", "`tabench.viz` is a road-network flow visualizer; `RG_D1` is a scalar gap on its own leaderboard scale, not a per-link flow on a road `Network`, so this notebook plots the certified quantities directly (a house bar chart, not `tabench.viz`) — the same rule the bottleneck/newell rows follow (adr-035)." ] }, { "cell_type": "code", "execution_count": 7, "id": "edoc-sumo-14", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:55:47.043162Z", "iopub.status.busy": "2026-07-21T13:55:47.042870Z", "iopub.status.idle": "2026-07-21T13:55:47.226590Z", "shell.execute_reply": "2026-07-21T13:55:47.225940Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmIAAAE1CAYAAABENYw0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABf6ElEQVR4nO3deVxN+f8H8Ndtu6U90UIqe7YiNAlZIruMfQxpLGOJCGMZIwxibCHLMMhYRmNsYxajsoxtbMlYsi/ZKpFSpv3z+8Ov83V1496US17Px+M8OJ/zOZ/zPnc5ve85n/M5MiGEABERERG9c1qaDoCIiIjoY8VEjIiIiEhDmIgRERERaQgTMSIiIiINYSJGREREpCFMxIiIiIg0hIkYERERkYYwESMiIiLSECZiRERERBrCRIzeWy1atECLFi1KdBvTp0+HTCYr0W2UVvPnz0flypWhra0NFxcXTYfzTg0cOBAODg6aDqNUeBffc1LNiBEj0KZNG02HUajs7GzY2dlhxYoVmg6lWDERI3rFnDlzsGvXLo3G8ODBA0yfPh0xMTEajaMw+/btw1dffQUPDw+sX78ec+bM0XRIxe59fw/epffhO1HaXbp0CdOnT8ft27c1sv1bt27hhx9+wJQpUxTKZTKZ0mnu3LlvbDMtLQ1BQUFo164dLCwsIJPJEBYWVuQYdXV1ERgYiNmzZyMjI6PI7bxvmIjRR23q1Kn477//FMrehz86Dx48wIwZM97bJGD//v3Q0tLC2rVrMWDAAHTo0EHTIRW7170Ha9aswZUrV959UBryPnwnSrtLly5hxowZGkvElixZAkdHR7Rs2bLAsjZt2mDjxo0KU+fOnd/YZlJSEmbOnInY2Fg4OzsXS5x+fn5ISkrCli1biqW994GOpgMg0iQdHR3o6JT81yAjIwN6enrQ0no/f/ukp6fD0NBQ5fqJiYkwMDCAnp5eCUb1/tLV1dV0CO8tdT9LpdWH9DpkZ2dj8+bNGDZsmNLl1atXx+eff652uzY2Nnj48CGsra1x+vRpNGrU6G1DhZmZGdq2bYuwsDB88cUXb93e++D9/KtAr/Xs2TOMGTMGDg4OkMvlKF++PNq0aYPo6GipjoODAwYOHFhg3Vf7Yxw8eBAymQw///wzZsyYgQoVKsDY2Bg9evRASkoKMjMzMWbMGJQvXx5GRkbw8/NDZmamQps5OTn49ttvUaVKFcjlcjg4OGDKlCkF6r3O6tWrUaVKFRgYGKBx48Y4fPhwgTphYWGQyWQFfjHm78PBgwelssOHD6Nnz56oVKkS5HI57OzsMHbs2AJnv17tIyaTyZCeno4NGzZIp+Bffh3v37+PL774AlZWVpDL5ahduzbWrVunNJ6tW7di6tSpqFChAsqUKYPU1FQ8efIE48ePR926dWFkZAQTExO0b98e586dU1g//4Dl5+cnxfHyKf0TJ06gXbt2MDU1RZkyZeDp6YmjR4+q9FoPHDgQRkZGuHHjBjp06ABjY2P069cPAJCXl4eQkBDUrl0b+vr6sLKywpdffonk5GSF12j9+vVIT09XiC07OxuXL1/Gw4cPVY7h/v378PHxgZGREcqVK4fx48cjNzdXoa4qMeXXmz59OmxtbVGmTBm0bNkSly5dKvBdKI734OU+YtnZ2bCwsICfn1+B/UxNTYW+vj7Gjx8vlWVmZiIoKAhVq1aVPptfffWVyt+XEydOoEOHDjA3N4ehoSHq1auHJUuWKNTZv38/mjVrBkNDQ5iZmaFr166IjY1VqJP/2b9+/ToGDhwIMzMzmJqaws/PD8+fP5fqve47kd/GpUuX8Nlnn8Hc3BxNmzYFUDzHhZdFRESgadOmMDMzg5GREWrUqFHgMpqqr61MJoO/vz82b96MGjVqQF9fH66urvj7778V6t25cwcjRoxAjRo1YGBggLJly6Jnz54FjkH5x6ZDhw5hxIgRKF++PCpWrKhyG2FhYejZsycAoGXLltLr/PIx7c8//5TeU2NjY3Ts2BEXL15UiCM+Ph5+fn6oWLEi5HI5bGxs0LVr1zeeZTty5AiSkpLg5eVVaJ3//vtP7cuBcrkc1tbWb6yXf4Z92rRpCuVbtmyBTCbDypUrFcrbtGmDI0eO4MmTJ2rF877iGbEP0LBhw/DLL7/A398ftWrVwuPHj3HkyBHExsaiQYMGRWozODgYBgYGmDRpEq5fv45ly5ZBV1cXWlpaSE5OxvTp0/HPP/8gLCwMjo6OCl+YwYMHY8OGDejRowfGjRuHEydOIDg4GLGxsdi5c+cbt7127Vp8+eWXaNKkCcaMGYObN2+iS5cusLCwgJ2dXZH2Z9u2bXj+/DmGDx+OsmXL4uTJk1i2bBnu3buHbdu2Fbrexo0bMXjwYDRu3BhDhw4FAFSpUgUAkJCQgE8++UQ6iJcrVw5//vknBg0ahNTUVIwZM0ahrW+//RZ6enoYP348MjMzoaenh0uXLmHXrl3o2bMnHB0dkZCQgO+//x6enp64dOkSbG1t4eTkhJkzZ2LatGkYOnQomjVrBgBo0qQJgBcHrfbt28PV1RVBQUHQ0tLC+vXr0apVKxw+fBiNGzd+4+uTk5MDb29vNG3aFAsWLECZMmUAAF9++SXCwsLg5+eH0aNH49atWwgNDcXZs2dx9OhR6OrqYuPGjVi9ejVOnjyJH374QYrt/v37cHJygq+vr0r9QHJzc+Ht7Q03NzcsWLAAkZGRWLhwIapUqYLhw4dL9VSJCQAmT56M7777Dp07d4a3tzfOnTsHb2/vAn88bt68+dbvwct0dXXRrVs37NixA99//73CWcJdu3YhMzMTffr0AfAiWezSpQuOHDmCoUOHwsnJCefPn8fixYtx9erVN17+i4iIQKdOnWBjY4OAgABYW1sjNjYWv/32GwICAgAAkZGRaN++PSpXrozp06fjv//+w7Jly+Dh4YHo6OgCNxn06tULjo6OCA4ORnR0NH744QeUL18e8+bNA/D670S+nj17olq1apgzZw6EEADe/rjwsosXL6JTp06oV68eZs6cCblcjuvXryv8+FD3tT106BDCw8MxevRoyOVyrFixAu3atcPJkydRp04dAMCpU6dw7Ngx9OnTBxUrVsTt27excuVKtGjRApcuXZK+N/lGjBiBcuXKYdq0aUhPT1e5jebNm2P06NFYunQppkyZAicnJwCQ/t24cSN8fX3h7e2NefPm4fnz51i5ciWaNm2Ks2fPSu9p9+7dcfHiRYwaNQoODg5ITExEREQE4uLiXntzybFjxyCTyVC/fn2ly8PCwrBixQoIIeDk5ISpU6fis88+U/n9e5NWrVphxIgRCA4Oho+PDxo0aICHDx9i1KhR8PLyKnCmztXVFUIIHDt2DJ06dSq2ODRG0AfH1NRUjBw58rV17O3tha+vb4FyT09P4enpKc0fOHBAABB16tQRWVlZUnnfvn2FTCYT7du3V1jf3d1d2NvbS/MxMTECgBg8eLBCvfHjxwsAYv/+/a+NMysrS5QvX164uLiIzMxMqXz16tUCgEKs69evFwDErVu3FNrI34cDBw5IZc+fPy+wreDgYCGTycSdO3eksqCgIPHq18DQ0FDpazdo0CBhY2MjkpKSFMr79OkjTE1NpW3mx1O5cuUCcWRkZIjc3FyFslu3bgm5XC5mzpwplZ06dUoAEOvXr1eom5eXJ6pVqya8vb1FXl6ewv46OjqKNm3aFIj7Vb6+vgKAmDRpkkL54cOHBQCxefNmhfK9e/cWKPf19RWGhoYF9gOA0teusBhe3mchhKhfv75wdXVVO6b4+Hiho6MjfHx8FOpNnz69QExv+x7kx//y9+Cvv/4SAMSePXsU6nXo0EFUrlxZmt+4caPQ0tIShw8fVqi3atUqAUAcPXq0wLby5eTkCEdHR2Fvby+Sk5MVlr38WXBxcRHly5cXjx8/lsrOnTsntLS0xIABA6Sy/M/+F198odBWt27dRNmyZRXKCvtO5LfRt29fhXJ1jguvHpOUWbx4sQAgHj16VGgddV5bAAKAOH36tFR2584doa+vL7p16yaVKTuOHD9+XAAQP/74o1SWf2xq2rSpyMnJUaivahvbtm0rcBwTQohnz54JMzMzMWTIEIXy+Ph4YWpqKpUnJycLAGL+/PkFtvcmn3/+eYH3PF+TJk1ESEiI2L17t1i5cqWoU6eOACBWrFih1jZe930SQoj09HRRtWpVUbt2bZGRkSE6duwoTExMFI7X+R48eCAAiHnz5qkVw/uKlyY/QGZmZjhx4gQePHhQbG0OGDBAod+Lm5sbhBAFrsG7ubnh7t27yMnJAQD88ccfAIDAwECFeuPGjQMA/P7776/d7unTp5GYmIhhw4YpnEkYOHAgTE1Ni7w/BgYG0v/T09ORlJSEJk2aQAiBs2fPqt2eEALbt29H586dIYRAUlKSNHl7eyMlJUXh0jAA+Pr6KsQBvDhVn99PLDc3F48fP5Yus7y6vjIxMTG4du0aPvvsMzx+/FiKIT09Ha1bt8bff/+NvLw8lfbp5bNOwIuziKampmjTpo3C/rm6usLIyAgHDhx4bXsODg4QQqh1V9Srv3SbNWuGmzdvqh1TVFQUcnJyMGLECIX2Ro0aVWCbb/seKNOqVStYWloiPDxcKktOTkZERAR69+6tsD9OTk6oWbOmwv60atUKAF77Gp89exa3bt3CmDFjYGZmprAs//L6w4cPERMTg4EDB8LCwkJaXq9ePbRp00b6vr5M2Xvw+PFjpKamqrz/r7bxtseFV+Xv7+7duwv9fKv72rq7u8PV1VWar1SpErp27Yq//vpLujz+8vc3Ozsbjx8/RtWqVWFmZqb0szJkyBBoa2srlKnbxqsiIiLw9OlT9O3bV2G/tLW14ebmJu1Xfp/NgwcPFrhs/yaPHz+Gubm50mVHjx5FQEAAunTpgmHDhuHMmTOoU6cOpkyZUqCrx9soU6YMwsLCEBsbi+bNm+P333/H4sWLUalSpQJ182NNSkoqtu1rEi9NfoC+++47+Pr6ws7ODq6urujQoQMGDBiAypUrF7nNVz/s+UnQq5cGTU1NkZeXh5SUFJQtWxZ37tyBlpYWqlatqlDP2toaZmZmuHPnDoAX/QtSUlIK1MlfXq1aNYVlurq6b7U/cXFxmDZtGn799dcCB6VX41DFo0eP8PTpU6xevRqrV69WWicxMVFh3tHRsUCdvLw8LFmyBCtWrMCtW7cU+kOVLVv2jXFcu3YNwIskrzApKSkwNDQs0H+iXLly0h8JHR0dqQ/Ly22npKSgfPnyStt9df/elr6+PsqVK6dQZm5urvB+qRpT/ufo1c+hhYVFgT8wb/seKKOjo4Pu3btjy5YtyMzMhFwux44dO5Cdna2QiF27dg2xsbEF9vvV/VHmxo0bACBdNlMm/3WoUaNGgWVOTk7466+/CnQif/W7n/96JScnw8TEpNBtvezVz7qqxwVV9e7dGz/88AMGDx6MSZMmoXXr1vj000/Ro0cPKalW97V99ZgDvOiU/vz5czx69AjW1tb477//EBwcjPXr1+P+/fvSZVdA+XFE2Xde3TZelf+dz08oX5X/HsnlcsybNw/jxo2DlZUVPvnkE3Tq1AkDBgxQqZ/Wy3G9jp6eHvz9/aWkLL9PYHHw8PDA8OHDsXz5cnh7exfaGT8/1tIyBiQTsQ9Qr1690KxZM+zcuRP79u3D/PnzMW/ePOzYsQPt27cHUPgHNDc3t8AvNgBKy15X/uqX9k1fiPDw8AKdmVX94r9pG6927s7NzUWbNm3w5MkTTJw4ETVr1oShoSHu37+PgQMHqnzG6GX563z++eeFJkH16tVTmH/1bBjwYhiAb775Bl988QW+/fZbWFhYQEtLC2PGjFEprvw68+fPL3QQVSMjIxw9erTAbei3bt2S+om8fFbo5bbLly+PzZs3K223sD9wRVXYZ6ukY3rb96Awffr0wffff48///wTPj4++Pnnn1GzZk2F2/bz8vJQt25dLFq0SGkbRe0T+TZU/Y6/jrLPOlB8fygNDAzw999/48CBA/j999+xd+9ehIeHo1WrVti3bx+0tbVL5LUdNWoU1q9fjzFjxsDd3R2mpqaQyWTo06eP0s+KstdB3TZelV9n48aNShOql+/6HjNmDDp37oxdu3bhr7/+wjfffIPg4GDs37+/0P5fwIsfIOqcRct/LYu7s3xmZqZ0g8KNGzfw/PnzAv3wAEixWlpaFuv2NYWJ2AfKxsYGI0aMwIgRI5CYmIgGDRpg9uzZUiJmbm6Op0+fFljvzp07b3Wm6VX29vbIy8vDtWvXpI6lwIuO7U+fPoW9vT0AwNvbGxEREUrXB1786nv5F192djZu3bql8Ecs/5f6q/v16q/r8+fP4+rVq9iwYQMGDBgglSvbvjLK/niUK1cOxsbGyM3Nfe2dRW/yyy+/oGXLlli7dq1C+dOnTxUOKoX9AcvvJG1iYvLaOJydnQvs75t+FVepUgWRkZHw8PAo9A/ru6ZqTPmfo+vXryuclXj8+HGBPzBv+x4Upnnz5rCxsUF4eDiaNm2K/fv34+uvvy6wP+fOnUPr1q3Vbj//vb9w4UKh733+66BsjLPLly/D0tKySEMqqBurqscFdWhpaaF169Zo3bo1Fi1ahDlz5uDrr7/GgQMH4OXlpfZrm3+m6WVXr15FmTJlpAT/l19+ga+vLxYuXCjVycjIUHpsLYyqbbzpO1++fHmVjj1VqlTBuHHjMG7cOFy7dg0uLi5YuHAhNm3aVOg6NWvWxObNm5GSkqJSl5D87gPF/eMsKCgIsbGxWLBgASZOnIhJkyZh6dKlBerdunULABQ+Wx8y9hH7wOTm5hY4nV2+fHnY2toq3KJdpUoV/PPPP8jKypLKfvvtN9y9e7dY48kfyDMkJEShPP9XaceOHQG8SBy9vLwUJgBo2LAhypUrh1WrVinEGhYWVuBAlX9AevkW89zc3AKXCvN/4b/8i14IUeAW/8IYGhoW2La2tja6d++O7du348KFCwXWefTokUpta2trFzjTsG3bNty/f79ADEDBpNPV1RVVqlTBggULkJaWVmgc5ubmBV5vfX3918bWq1cv5Obm4ttvvy2wLCcn541/fNQZvkJVqsbUunVr6OjoFLjNPTQ0tMB6b/seFEZLSws9evTAnj17sHHjRuTk5Chclszfn/v372PNmjUF1v/vv/+kO+2UadCgARwdHRESElIgpvz9sbGxgYuLCzZs2KBQ58KFC9i3b1+RB95V9p14HVWPC6pSduYl/4xw/nFP3df2+PHjCn207t69i927d6Nt27bSMUTZZ2XZsmUFzsK/jqptFPZ58/b2homJCebMmYPs7OwC7ed/558/f17gDuEqVarA2Nj4jUOGuLu7QwiBM2fOKG37Zc+ePUNISAgsLS0V+tglJSXh8uXLCkOfqOPEiRNYsGABxowZg3HjxmHChAkIDQ3FoUOHCtQ9c+YMZDIZ3N3di7St9w3PiH1gnj17hooVK6JHjx5wdnaGkZERIiMjcerUKYVfXIMHD8Yvv/yCdu3aoVevXrhx4wY2bdpU4Lbzt+Xs7AxfX1+sXr0aT58+haenJ06ePIkNGzbAx8dH6SjNL9PV1cWsWbPw5ZdfolWrVujduzdu3bqF9evXFzhzV7t2bXzyySeYPHkynjx5AgsLC2zdulW6cSBfzZo1UaVKFYwfPx7379+HiYkJtm/frvKpd1dXV0RGRmLRokWwtbWFo6Mj3NzcMHfuXBw4cABubm4YMmQIatWqhSdPniA6OhqRkZEqnabv1KkTZs6cCT8/PzRp0gTnz5/H5s2bC+xrlSpVYGZmhlWrVsHY2BiGhoZwc3ODo6MjfvjhB7Rv3x61a9eGn58fKlSogPv37+PAgQMwMTHBnj17VNrPV3l6euLLL79EcHAwYmJi0LZtW+jq6uLatWvYtm0blixZgh49ehS6vrrDVxRnTFZWVggICMDChQvRpUsXtGvXDufOncOff/4JS0tLhbMNxfEeFKZ3795YtmwZgoKCULdu3QK/2Pv374+ff/4Zw4YNw4EDB+Dh4YHc3FxcvnwZP//8M/766y80bNhQadtaWlpYuXIlOnfuDBcXF/j5+cHGxgaXL1/GxYsX8ddffwF4cdm6ffv2cHd3x6BBg6ThK0xNTTF9+vQivQ+FfScK87bHhVfNnDkTf//9Nzp27Ah7e3skJiZixYoVqFixotRHSd3Xtk6dOvD29lYYvgIAZsyYIdXp1KkTNm7cCFNTU9SqVQvHjx9HZGSkWn0JVW3DxcUF2tramDdvHlJSUiCXy9GqVSuUL18eK1euRP/+/dGgQQP06dMH5cqVQ1xcHH7//Xd4eHggNDQUV69eRevWrdGrVy/UqlULOjo62LlzJxISEqThUwrTtGlTlC1bFpGRkQpXJpYvX45du3ahc+fOqFSpEh4+fIh169YhLi4OGzduVLjBKjQ0FDNmzMCBAwcUxqoMDQ3F06dPpZvL9uzZg3v37gF4cdnW1NQUGRkZ8PX1RbVq1TB79mzpfdizZw/8/Pxw/vx5hTO5ERER8PDwKHKfzvfOu71Jk95WZmammDBhgnB2dhbGxsbC0NBQODs7K72VeOHChaJChQpCLpcLDw8Pcfr06UKHr9i2bZvCuvm3Y586dUqhPP929ZdvI8/OzhYzZswQjo6OQldXV9jZ2YnJkyeLjIwMlfdrxYoVwtHRUcjlctGwYUPx999/K72t/caNG8LLy0vI5XJhZWUlpkyZIiIiIgrc9n3p0iXh5eUljIyMhKWlpRgyZIg4d+5cgdunlQ1fcfnyZdG8eXNhYGBQYOiDhIQEMXLkSGFnZyd0dXWFtbW1aN26tVi9evUbX1MhXgydMG7cOGFjYyMMDAyEh4eHOH78uNJ93b17t6hVq5bQ0dEpEPfZs2fFp59+KsqWLSvkcrmwt7cXvXr1ElFRUW98rZUNPfGy1atXC1dXV2FgYCCMjY1F3bp1xVdffSUePHjw2jbUHb5CWQzK3g9VY8rJyRHffPONsLa2FgYGBqJVq1YiNjZWlC1bVgwbNkyqVxzvwavDV+TLy8sTdnZ2AoCYNWuW0n3PysoS8+bNE7Vr1xZyuVyYm5sLV1dXMWPGDJGSkvLG1+7IkSOiTZs20ve/Xr16YtmyZQp1IiMjhYeHhzAwMBAmJiaic+fO4tKlSwp1lH2XhVA+TExh34nC2hBC9eOCKsNXREVFia5duwpbW1uhp6cnbG1tRd++fcXVq1cV6qn62gIQI0eOFJs2bRLVqlUTcrlc1K9fv8DQEcnJycLPz09YWloKIyMj4e3tLS5fvlxgeKDCjpfqtCGEEGvWrBGVK1cW2traBY5pBw4cEN7e3sLU1FTo6+uLKlWqiIEDB0pDcCQlJYmRI0eKmjVrCkNDQ2Fqairc3NzEzz///NrXNt/o0aNF1apVFcr27dsn2rRpI6ytrYWurq4wMzMTbdu2VXqcyf8svPoa2tvbS8OFvDrlf8bGjh0rtLW1xYkTJxTWPX36tNDR0RHDhw+Xyp4+fSr09PTEDz/8oNJ+fQhkQqjZY5qI6APx9OlTmJubY9asWQX6a9HHSyaTYeTIkUovXX+sbt68iZo1a+LPP/9E69atNR1OoUJCQvDdd9/hxo0b701f1rfFPmJEVCooG9Mov4/Sy5dKiKigypUrY9CgQZg7d66mQylUdnY2Fi1ahKlTp5aaJAxgHzEiKiXCw8MRFhaGDh06wMjICEeOHMFPP/2Etm3bwsPDQ9PhEb33Xr3Z5X2jq6uLuLg4TYdR7JiIEVGpUK9ePejo6OC7775Damqq1IF/1qxZmg6NiKhQ7CNGREREpCHsI0ZERESkIbw0qUReXh4ePHgAY2PjUvMsKyIiIno3hBB49uwZbG1tCzxO7lVMxJR48OCBRp75RkRERKXH3bt3UbFixdfWYSKmhLGxMYAXL2D+k+3pzbKzszF58mT8/PPPkMlk6NWrF4KDgxUeSptv9erV2Lx5My5duoQ2bdpgy5YtCsv79++PEydO4Pnz5zA3N8eAAQMwYcIEafn+/fsRFBSEmzdvokKFCpgzZ85bPQOSiIiouKSmpsLOzk7KJ16HiZgS+ZcjTUxMmIipISgoCCdPnkRsbCwAoH379ggNDcW0adMK1K1cuTKCgoIQGRmJe/fuFXidZ82aherVq0MulyMuLg7t2rVDjRo18Pnnn+PmzZv4/PPPsXXrVnTo0AF//PEHevfujfPnzxfrA82JiIjehirdm9hZn4rNunXrMHXqVNjY2MDGxgZff/011q5dq7Tup59+Ch8fH1haWipdXrduXcjlcgAvPshaWlq4du0aAGDv3r1o0KABOnXqBC0tLXTq1AmNGzfGjz/+WDI7RkREVEKYiFGxSE5Oxr179+Di4iKVubi4IC4uDikpKUVqc8SIEShTpgwqVaqEtLQ0DBw4EMCLmyleHXUlLy8P//77b1HDJyIi0ggmYlQs0tLSAABmZmZSWf7/nz17VqQ2V6xYgbS0NJw6dQoDBgyAubk5AKBNmzY4deoUdu3ahZycHOzatQtHjx5FamrqW+0DERHRu8ZEjIqFkZERACic/cr/vyqdFQujpaWFhg0bwtjYGOPHjwcA1KhRA+Hh4ZgxYwbKly+PtWvXok+fPihbtuxb7AEREdG7914kYsuXL4eDgwP09fXh5uaGkydPFlr34sWL6N69OxwcHCCTyaSH+hZm7ty5kMlkGDNmTPEGTQrMzc1RsWJFxMTESGUxMTGws7ODqanpW7efnZ0t9REDgK5du+Ls2bN48uQJ9uzZg2vXrsHT0/Ott0NERPQuaTwRCw8PR2BgIIKCghAdHQ1nZ2d4e3sjMTFRaf3nz5+jcuXKmDt3LqytrV/b9qlTp/D999+jXr16JRE6vcLPzw+zZ89GfHw84uPjMWfOHAwePFhp3ZycHGRkZCAnJwd5eXnIyMhAVlYWAODOnTvYvn070tLSkJeXh2PHjmHp0qXw9vaW1j99+jRycnLw7NkzzJw5E0+ePIGvr+872U8iIqJiIzSscePGYuTIkdJ8bm6usLW1FcHBwW9c197eXixevFjpsmfPnolq1aqJiIgI4enpKQICAlSOKSUlRQAQKSkpKq9DQmRlZYkRI0YIMzMzYWZmJvz9/UV2drYQQogvv/xSfPnll1LdoKAgAUBh8vT0FEIIcfv2bdG0aVNhamoqjI2NRY0aNcSsWbNEbm6utL6Xl5cwNjYWJiYmonv37uLu3bvvdF+JiIgKo04eodGHfmdlZaFMmTL45Zdf4OPjI5X7+vri6dOn2L1792vXd3BwwJgxY5RedvT19YWFhQUWL16MFi1awMXFpdDLmJmZmcjMzJTm8wdiS0lJ4ThiREREpJbU1FSYmpqqlEdo9NJkUlIScnNzYWVlpVBuZWWF+Pj4Ire7detWREdHIzg4WKX6wcHBMDU1lSY+3oiIiIjehVI3sv7du3cREBCAiIgI6Ovrq7TO5MmTERgYKM3nnxErSUe7di/R9ql08Ni9XdMhEBFRCdJoImZpaQltbW0kJCQolCckJLyxI35hzpw5g8TERDRo0EAqy83Nxd9//43Q0FBkZmZCW1tbYR25XC6N4k5ERET0rmj00qSenh5cXV0RFRUlleXl5SEqKgru7u5FarN169Y4f/48YmJipKlhw4bo168fYmJiCiRhRERERJqi8UuTgYGB8PX1RcOGDdG4cWOEhIQgPT0dfn5+AIABAwagQoUKUn+vrKwsXLp0Sfr//fv3ERMTAyMjI1StWhXGxsaoU6eOwjYMDQ1RtmzZAuVEREREmqTxRKx379549OgRpk2bhvj4eLi4uGDv3r1SB/64uDhoaf3vxN2DBw9Qv359aX7BggVYsGABPD09cfDgwXcdPhEREVGRaXT4iveVOredFhU765Mq2FmfiOjD88EMX0FERET0MWMiRkRERKQhTMSIiIiINISJGBEREZGGMBEjIiIi0hAmYkREREQawkSMiIiISEPUHtA1MzMTJ06cwJ07d/D8+XOUK1cO9evXh6OjY0nER0RERFRqqZyIHT16FEuWLMGePXuQnZ0NU1NTGBgY4MmTJ8jMzETlypUxdOhQDBs2DMbGxiUZMxEREVGpoNKlyS5duqB3795wcHDAvn378OzZMzx+/Bj37t3D8+fPce3aNUydOhVRUVGoXr06IiIiSjpuIiIiog+eSmfEOnbsiO3bt0NXV1fp8sqVK6Ny5crw9fXFpUuX8PDhw2INkoiIiKg0UikR+/LLL1VusFatWqhVq1aRAyIiIiL6WKjdWT/f6dOnERsbCwBwcnJCw4YNiy0oIiIioo+B2onYvXv30LdvXxw9ehRmZmYAgKdPn6JJkybYunUrKlasWNwxEhEREZVKao8jNnjwYGRnZyM2NhZPnjzBkydPEBsbi7y8PAwePLgkYiQiIiIqldQ+I3bo0CEcO3YMNWrUkMpq1KiBZcuWoVmzZsUaHBEREVFppvYZMTs7O2RnZxcoz83Nha2tbbEERURERPQxUDsRmz9/PkaNGoXTp09LZadPn0ZAQAAWLFhQrMERERERlWYyIYRQZwVzc3M8f/4cOTk50NF5cWUz//+GhoYKdZ88eVJ8kb5DqampMDU1RUpKCkxMTEpkG0e7di+Rdql08di9XdMhEBGRmtTJI9TuIxYSElLUuIiIiIjoJWonYr6+viURBxEREdFHp8gDugJARkYGsrKyFMpK6lIeERERUWmjdmf99PR0+Pv7o3z58jA0NIS5ubnCRERERESqUTsR++qrr7B//36sXLkScrkcP/zwA2bMmAFbW1v8+OOPRQpi+fLlcHBwgL6+Ptzc3HDy5MlC6168eBHdu3eHg4MDZDKZ0j5rwcHBaNSoEYyNjVG+fHn4+PjgypUrRYqNiIiIqKSonYjt2bMHK1asQPfu3aGjo4NmzZph6tSpmDNnDjZv3qx2AOHh4QgMDERQUBCio6Ph7OwMb29vJCYmKq3//PlzVK5cGXPnzoW1tbXSOocOHcLIkSPxzz//ICIiAtnZ2Wjbti3S09PVjo+IiIiopKjdR+zJkyeoXLkygBf9wfKHqGjatCmGDx+udgCLFi3CkCFD4OfnBwBYtWoVfv/9d6xbtw6TJk0qUL9Ro0Zo1KgRAChdDgB79+5VmA8LC0P58uVx5swZNG/evED9zMxMZGZmSvOpqalq7wcRERGRutQ+I1a5cmXcunULAFCzZk38/PPPAF6cKct/CLiqsrKycObMGXh5ef0vIC0teHl54fjx4+qGVqiUlBQAgIWFhdLlwcHBMDU1lSY7O7ti2zYRERFRYdROxPz8/HDu3DkAL85ILV++HPr6+hg7diwmTJigVltJSUnIzc2FlZWVQrmVlRXi4+PVDU2pvLw8jBkzBh4eHqhTp47SOpMnT0ZKSoo03b17t1i2TURERPQ6al+aHDt2rPR/Ly8vXL58GWfOnEHVqlVRr169Yg2uOIwcORIXLlzAkSNHCq0jl8shl8vfYVREREREbzmOGADY29vD3t6+SOtaWlpCW1sbCQkJCuUJCQmFdsRXh7+/P3777Tf8/fffqFix4lu3R0RERFSc1E7Eli5dqrRcJpNBX18fVatWRfPmzaGtrf3GtvT09ODq6oqoqCj4+PgAeHEpMSoqCv7+/uqGJhFCYNSoUdi5cycOHjwIR0fHIrdFREREVFLUTsQWL16MR48e4fnz59IArsnJyShTpgyMjIyQmJiIypUr48CBAyp1eg8MDISvry8aNmyIxo0bIyQkBOnp6dJdlAMGDECFChUQHBwM4EUH/0uXLkn/v3//PmJiYmBkZISqVasCeHE5csuWLdi9ezeMjY2l/mampqYwMDBQd5eJiIiISoTanfXnzJmDRo0a4dq1a3j8+DEeP36Mq1evws3NDUuWLEFcXBysra0V+pK9Tu/evbFgwQJMmzYNLi4uiImJwd69e6UO/HFxcXj48KFU/8GDB6hfvz7q16+Phw8fYsGCBahfvz4GDx4s1Vm5ciVSUlLQokUL2NjYSFN4eLi6u0tERERUYmRCCKHOClWqVMH27dvh4uKiUH727Fl0794dN2/exLFjx9C9e3eFBOpDkpqaClNTU6SkpJTYszOPdu1eIu1S6eKxe7umQyAiIjWpk0eofUbs4cOHyMnJKVCek5MjXQK0tbXFs2fP1G2aiIiI6KOidiLWsmVLfPnllzh79qxUdvbsWQwfPhytWrUCAJw/f54d5ImIiIjeQO1EbO3atbCwsICrq6s0/lbDhg1hYWGBtWvXAgCMjIywcOHCYg+WiIiIqDRR+65Ja2trRERE4MqVK7hy5QoAoEaNGqhRo4ZUp2XLlsUXIREREVEpVeQBXV9NvoiIiIhIPWpfmiQiIiKi4sFEjIiIiEhDmIgRERERaQgTMSIiIiINKbZEbMeOHahXr15xNUdERERU6qmViH3//ffo0aMHPvvsM5w4cQIAsH//ftSvXx/9+/eHh4dHiQRJREREVBqpnIjNnTsXo0aNwu3bt/Hrr7+iVatWmDNnDvr164fevXvj3r17WLlyZUnGSkRERFSqqDyO2Pr167FmzRr4+vri8OHD8PT0xLFjx3D9+nUYGhqWZIxEREREpZLKZ8Ti4uKkZ0k2a9YMurq6mDFjBpMwIiIioiJSORHLzMyEvr6+NK+npwcLC4sSCYqIiIjoY6DWI46++eYblClTBgCQlZWFWbNmwdTUVKHOokWLii86IiIiolJM5USsefPm0kO+AaBJkya4efOmQh2ZTFZ8kRERERGVcionYgcPHizBMIiIiIg+PhxZn4iIiEhD1ErErl27hu3bt+PWrVsAgN9//x3NmzdHo0aNMHv2bAghSiRIIiIiotJI5UuTO3fuRK9evaClpQWZTIbVq1fjyy+/RIsWLWBiYoLp06dDR0cHEydOLMl4iYiIiEoNlc+IzZ49G1999RUyMjKwcuVKDBs2DMHBwfjzzz/x22+/Yfny5QgLCyvBUImIiIhKF5UTsStXruCLL76ATCaDr68vsrKy4OXlJS1v27Yt7ty5U6Qgli9fDgcHB+jr68PNzQ0nT54stO7FixfRvXt3ODg4QCaTISQk5K3bJCIiItIElROx9PR0GBsbv1hJSwsGBgbSmGIAYGBggMzMTLUDCA8PR2BgIIKCghAdHQ1nZ2d4e3sjMTFRaf3nz5+jcuXKmDt3LqytrYulTSIiIiJNUDkRk8lkCuOEvTpfVIsWLcKQIUPg5+eHWrVqYdWqVShTpgzWrVuntH6jRo0wf/589OnTB3K5vFjazMzMRGpqqsJEREREVNJUTsSEEKhevTosLCxgYWGBtLQ01K9fX5qvWbOm2hvPysrCmTNnFC5xamlpwcvLC8ePH1e7vaK2GRwcDFNTU2mys7Mr0raJiIiI1KHyXZPr168v9o0nJSUhNzcXVlZWCuVWVla4fPnyO2tz8uTJCAwMlOZTU1OZjBEREVGJUzkR8/X1Lck4NEoulxd6mZOIiIiopGh0ZH1LS0toa2sjISFBoTwhIaHQjviaaJOIiIioJGg0EdPT04OrqyuioqKksry8PERFRcHd3f29aZOIiEiTsrOz4e/vD3Nzc1hYWGDUqFHIyckpUt0bN26gffv2MDc3R4UKFfDdd98prP/NN9+gbt260NHRwZgxY0pytwjvwbMmAwMDsWbNGmzYsAGxsbEYPnw40tPT4efnBwAYMGAAJk+eLNXPyspCTEwMYmJikJWVhfv37yMmJgbXr19XuU0iIqIPyaxZs3DkyBFcunQJFy9exOHDhzFnzhy16+bm5qJLly5o0KABEhMTsX//foSGhmLLli3S+lWrVsV3332HLl26vJN9+9jJxHvwgMjQ0FDMnz8f8fHxcHFxwdKlS+Hm5gYAaNGiBRwcHKRR+2/fvg1HR8cCbXh6euLgwYMqtfkmqampMDU1RUpKCkxMTN56/5Q52rV7ibRLpYvH7u2aDoGI3gN2dnZYvHgxevToAQDYtm0bxo8fr3Qg9dfVvXTpEurVq4fnz59DT08PADBjxgwcOHBA4W8oAAwcOBBmZmaFDpxOhVMnj1C5s35J8vf3h7+/v9Jlr34wHBwcVHq4+OvaJCIi+lAkJyfj3r17cHFxkcpcXFwQFxeHlJQUmJqaqlw3Ly8PABT+jubl5eHff/8t8f0g5VRKxF4e2uFNFi1aVORgiIiISFFaWhoAwMzMTCrL//+zZ88UErE31a1RowYcHBwwbdo0zJw5E9evX8e6des4kLkGqZSInT17VmE+OjoaOTk5qFGjBgDg6tWr0NbWhqura/FHSERE9BEzMjICAKSkpMDS0lL6PwDp0YOq1tXV1cXu3bsxduxYVKhQARUrVoSfnx++//77d7IvVJBKidiBAwek/y9atAjGxsbYsGEDzM3NAbw4Fern54dmzZqVTJREREQfKXNzc1SsWBExMTGoUqUKACAmJgZ2dnYKZ8NUrVu7dm3s27dPWmfixInw9PR8R3tDr1K7j9jChQuxb98+KQkDXrzxs2bNQtu2bTFu3LhiDZCIiOhj5+fnh9mzZ8PDwwMAMGfOHAwePLhIdf/9919UqVIFurq6+O2337Bu3TqFIZ+ys7ORm5srTRkZGdDW1oaurm4J7uHHS+1ELDU1FY8ePSpQ/ujRIzx79qxYgiIiIqL/+eabb/D48WM4OTkBAD7//HNMmTIFADBs2DAAwKpVq95YFwB+/vlnrFy5EhkZGXB2dsauXbtQr149afmQIUOwYcMGaT40NBS+vr7S6AVUvNQevmLAgAE4fPgwFi5ciMaNGwMATpw4gQkTJqBZs2YKb96HisNX0PuCw1cQEX14SnT4ilWrVmH8+PH47LPPkJ2d/aIRHR0MGjQI8+fPL1rERERERB8htROxMmXKYMWKFZg/fz5u3LgBAKhSpQoMDQ2LPTgiIiJ1rVmzRtMh0AdgyJAhmg4BwFsM6GpoaKhwTZmIiIiI1KNSIvbpp5+q3OCOHTuKHAwRERHRx0SlROzVcUqIiIiI6O2plIitX7++pOMgIiIi+uhoFWWlnJwcREZG4vvvv5fGDnvw4IH0jCsiIiIiejO1O+vfuXMH7dq1Q1xcHDIzM9GmTRsYGxtj3rx5yMzMlAaUIyIiIqLXU/uMWEBAABo2bIjk5GQYGBhI5d26dVN4RAIRERERvZ7aZ8QOHz6MY8eOQU9PT6HcwcEB9+/fL7bAiIiIiEo7tc+I5eXlITc3t0D5vXv3YGxsXCxBEREREX0M1E7E2rZti5CQEGleJpMhLS0NQUFB6NChQ3HGRkRERFSqqX1pcuHChfD29katWrWQkZGBzz77DNeuXYOlpSV++umnkoiRiIiIqFRSOxGrWLEizp07h61bt+Lff/9FWloaBg0ahH79+il03iciIiKi1yvSsyZ1dHTw+eefF3csRERERB8VlRKxX3/9Fe3bt4euri5+/fXX19bt0qVLsQRGREREVNqp1Fnfx8cHycnJ0v8Lm7p161akIJYvXw4HBwfo6+vDzc0NJ0+efG39bdu2oWbNmtDX10fdunXxxx9/KCxPS0uDv78/KlasCAMDA9SqVYsDzRIREdF7R6VELC8vD+XLl5f+X9ikbFiLNwkPD0dgYCCCgoIQHR0NZ2dneHt7IzExUWn9Y8eOoW/fvhg0aBDOnj0rJYEXLlyQ6gQGBmLv3r3YtGkTYmNjMWbMGPj7+7/xbB4RERHRu6RSImZhYYGkpCQAwBdffCE9X7I4LFq0CEOGDIGfn5905qpMmTJYt26d0vpLlixBu3btMGHCBDg5OeHbb79FgwYNEBoaKtU5duwYfH190aJFCzg4OGDo0KFwdnZ+45k2IiIiondJpUQsKysLqampAIANGzYgIyOjWDaelZWFM2fOwMvL638BaWnBy8sLx48fV7rO8ePHFeoDgLe3t0L9Jk2a4Ndff8X9+/chhMCBAwdw9epVtG3bVmmbmZmZSE1NVZiIiIiISppKnfXd3d3h4+MDV1dXCCEwevToQoeqKOxMljJJSUnIzc2FlZWVQrmVlRUuX76sdJ34+Hil9ePj46X5ZcuWYejQoahYsSJ0dHSgpaWFNWvWoHnz5krbDA4OxowZM1SOm4iIiKg4qHRGbNOmTejQoQPS0tIgk8mQkpKC5ORkpdP7YNmyZfjnn3/w66+/4syZM1i4cCFGjhyJyMhIpfUnT56MlJQUabp79+47jpiIiIg+RiqdEbOyssLcuXMBAI6Ojti4cSPKli371hu3tLSEtrY2EhISFMoTEhJgbW2tdB1ra+vX1v/vv/8wZcoU7Ny5Ex07dgQA1KtXDzExMViwYEGBy5oAIJfLIZfL33p/iIiIiNSh9rMmb926JSVh9+7dQ15eXpE3rqenB1dXV0RFRUlleXl5iIqKgru7u9J13N3dFeoDQEREhFQ/Ozsb2dnZ0NJS3DVtbe23ipWIiIiouBVpZP18tWrVQkxMDCpXrlzkNgIDA+Hr64uGDRuicePGCAkJQXp6Ovz8/AAAAwYMQIUKFRAcHAwACAgIgKenJxYuXIiOHTti69atOH36NFavXg0AMDExgaenJyZMmAADAwPY29vj0KFD+PHHH7Fo0aK32V0iIiKiYvVWiZgQ4q0D6N27Nx49eoRp06YhPj4eLi4u2Lt3r9QhPy4uTuHsVpMmTbBlyxZMnToVU6ZMQbVq1bBr1y7UqVNHqrN161ZMnjwZ/fr1w5MnT2Bvb4/Zs2dj2LBhbx0vERERUXGRibfIpoyNjXHu3Lm3OiP2PkpNTYWpqSlSUlJgYmJSIts42rV7ibRLpYvH7u2aDoHog7NmzRpNh0AfgCFDhpRY2+rkEWr3EXvZlClTYGFh8TZNEBEREX203urS5OTJk4srDiIiIqKPjtqJWG5uLsLCwhAVFYXExMQCdyLu37+/2IIjIiIiKs3UTsQCAgIQFhaGjh07ok6dOpDJZCURFxEREVGpp3YitnXrVvz888/o0KFDScRDRERE9NFQu7O+np4eqlatWhKxEBEREX1U1E7Exo0bhyVLlhTLGGJEREREHzO1L00eOXIEBw4cwJ9//onatWtDV1dXYfmOHTuKLTgiIiKi0kztRMzMzAzdunUriViIiIiIPipqJ2Lr168viTiIiIiIPjpFGlk/JycHkZGR+P777/Hs2TMAwIMHD5CWllaswRERERGVZmqfEbtz5w7atWuHuLg4ZGZmok2bNjA2Nsa8efOQmZmJVatWlUScRERERKWO2mfEAgIC0LBhQyQnJ8PAwEAq79atG6Kiooo1OCIiIqLSTO0zYocPH8axY8egp6enUO7g4ID79+8XW2BEREREpZ3aZ8Ty8vKQm5tboPzevXswNjYulqCIiIiIPgZqJ2Jt27ZFSEiINC+TyZCWloagoCA+9oiIiIhIDWpfmly4cCG8vb1Rq1YtZGRk4LPPPsO1a9dgaWmJn376qSRiJCIiIiqV1E7EKlasiHPnziE8PBznzp1DWloaBg0ahH79+il03iciIiKi11M7EQMAHR0d9OvXD/369SvueIiIiIg+Gmr3EdPW1kbLli3x5MkThfKEhARoa2sXW2BEREREpZ3aiZgQApmZmWjYsCEuXrxYYBkRERERqUbtREwmk2H79u3o3Lkz3N3dsXv3boVlRERERKSaIp0R09bWxpIlS7BgwQL07t0bs2bN4tkwIiIiIjUV6aHf+YYOHYo///wTISEhGDBgQJHbWb58ORwcHKCvrw83NzecPHnytfW3bduGmjVrQl9fH3Xr1sUff/xRoE5sbCy6dOkCU1NTGBoaolGjRoiLiytyjERERETFTe1EzN7eXqFTfsuWLfHPP//g7t27RQogPDwcgYGBCAoKQnR0NJydneHt7Y3ExESl9Y8dO4a+ffti0KBBOHv2LHx8fODj44MLFy5IdW7cuIGmTZuiZs2aOHjwIP79919888030NfXL1KMRERERCVBJorpmmJGRgYSEhJgb2+v1npubm5o1KgRQkNDAbx4hJKdnR1GjRqFSZMmFajfu3dvpKen47fffpPKPvnkE7i4uGDVqlUAgD59+kBXVxcbN25UKYbMzExkZmZK86mpqbCzs0NKSgpMTEzU2h9VHe3avUTapdLFY/d2TYdA9MFZs2aNpkOgD8CQIUNKrO3U1FSYmpqqlEcU+dLkmTNnsGnTJmzatAnR0dHQ19dXOwnLysrCmTNn4OXl9b+AtLTg5eWF48ePK13n+PHjCvUBwNvbW6qfl5eH33//HdWrV4e3tzfKly8PNzc37Nq1q9A4goODYWpqKk12dnZq7QcRERFRUaidiCUmJqJVq1Zo1KgRRo8ejdGjR6Nhw4Zo3bo1Hj16pFZbSUlJyM3NhZWVlUK5lZUV4uPjla4THx//2vqJiYlIS0vD3Llz0a5dO+zbtw/dunXDp59+ikOHDiltc/LkyUhJSZGmol5mJSIiIlKH2onYqFGj8OzZM1y8eBFPnjzBkydPcOHCBaSmpmL06NElEaNa8vLyAABdu3bF2LFj4eLigkmTJqFTp07SpctXyeVymJiYKExEREREJU3tRxzt3bsXkZGRcHJykspq1aqF5cuXo23btmq1ZWlpCW1tbSQkJCiUJyQkwNraWuk61tbWr61vaWkJHR0d1KpVS6GOk5MTjhw5olZ8RERERCVJ7TNieXl50NXVLVCuq6srnY1SlZ6eHlxdXREVFaXQflRUFNzd3ZWu4+7urlAfACIiIqT6enp6aNSoEa5cuaJQ5+rVq2r3YSMiIiIqSWqfEWvVqhUCAgLw008/wdbWFgBw//59jB07Fq1bt1Y7gMDAQPj6+qJhw4Zo3LgxQkJCkJ6eDj8/PwDAgAEDUKFCBQQHBwMAAgIC4OnpiYULF6Jjx47YunUrTp8+jdWrV0ttTpgwAb1790bz5s3RsmVL7N27F3v27MHBgwfVjo+IiIiopKidiIWGhqJLly5wcHCQ7i68e/cu6tSpg02bNqkdQO/evfHo0SNMmzYN8fHxcHFxwd69e6UO+XFxcdDS+t+JuyZNmmDLli2YOnUqpkyZgmrVqmHXrl2oU6eOVKdbt25YtWoVgoODMXr0aNSoUQPbt29H06ZN1Y6PiIiIqKQUaRwxIQQiIyNx+fJlAC/6X706pMSHTJ3xP4qK44iRKjiOGJH6OI4YqeJ9GUdMrTNi2dnZMDAwQExMDNq0aYM2bdq8VaBEREREHzO1Ouvr6uqiUqVKyM3NLal4iIiIiD4aat81+fXXX2PKlCl48uRJScRDRERE9NEoUmf969evw9bWFvb29jA0NFRYHh0dXWzBEREREZVmaidiPj4+JRAGERER0cdHpURs6dKlGDp0KPT19eHn54eKFSsqDClBREREROpTKZsKDAxEamoqAMDR0RFJSUklGhQRERHRx0ClM2K2trbYvn07OnToACEE7t27h4yMDKV1K1WqVKwBEhEREZVWKiViU6dOxahRo+Dv7w+ZTIZGjRoVqCOEgEwm49AWRERERCpSKREbOnQo+vbtizt37qBevXqIjIxE2bJlSzo2IiIiolJN5bsmjY2NUadOHaxfvx4eHh6Qy+UlGRcRERFRqadSIpZ/2REAfH19SzQgIiIioo+FSndN1q5dG1u3bkVWVtZr6127dg3Dhw/H3LlziyU4IiIiotJMpTNiy5Ytw8SJEzFixAi0adMGDRs2hK2tLfT19ZGcnIxLly7hyJEjuHjxIvz9/TF8+PCSjpuIiIjog6dSIta6dWucPn0aR44cQXh4ODZv3ow7d+7gv//+g6WlJerXr48BAwagX79+MDc3L+mYiYiIiEoFtR5x1LRpUzRt2rSkYiEiIiL6qPA5RUREREQawkSMiIiISEOYiBERERFpCBMxIiIiIg1hIkZERESkIUzEiIiIiDTkvUjEli9fDgcHB+jr68PNzQ0nT558bf1t27ahZs2a0NfXR926dfHHH38UWnfYsGGQyWQICQkp5qiJiIiI3o7GE7Hw8HAEBgYiKCgI0dHRcHZ2hre3NxITE5XWP3bsGPr27YtBgwbh7Nmz8PHxgY+PDy5cuFCg7s6dO/HPP//A1ta2pHeDiIiISG0aT8QWLVqEIUOGwM/PD7Vq1cKqVatQpkwZrFu3Tmn9JUuWoF27dpgwYQKcnJzw7bffokGDBggNDVWod//+fYwaNQqbN2+Grq7uu9gVIiIiIrVoNBHLysrCmTNn4OXlJZVpaWnBy8sLx48fV7rO8ePHFeoDgLe3t0L9vLw89O/fHxMmTEDt2rXfGEdmZiZSU1MVJiIiIqKSVmyJ2I0bN9CqVSu11klKSkJubi6srKwUyq2srBAfH690nfj4+DfWnzdvHnR0dDB69GiV4ggODoapqak02dnZqbUfREREREVRbIlYWloaDh06VFzNFdmZM2ewZMkShIWFQSaTqbTO5MmTkZKSIk13794t4SiJiIiI1Hjo99KlS1+7/P79+2pv3NLSEtra2khISFAoT0hIgLW1tdJ1rK2tX1v/8OHDSExMRKVKlaTlubm5GDduHEJCQnD79u0CbcrlcsjlcrXjJyIiInobKidiY8aMgY2NDfT09JQuz8rKUnvjenp6cHV1RVRUFHx8fAC86N8VFRUFf39/peu4u7sjKioKY8aMkcoiIiLg7u4OAOjfv7/SPmT9+/eHn5+f2jESERERlRSVEzF7e3vMmzcPvXr1Uro8JiYGrq6uagcQGBgIX19fNGzYEI0bN0ZISAjS09OlpGnAgAGoUKECgoODAQABAQHw9PTEwoUL0bFjR2zduhWnT5/G6tWrAQBly5ZF2bJlFbahq6sLa2tr1KhRQ+34iIiIiEqKyomYq6srzpw5U2giJpPJIIRQO4DevXvj0aNHmDZtGuLj4+Hi4oK9e/dKHfLj4uKgpfW/rmxNmjTBli1bMHXqVEyZMgXVqlXDrl27UKdOHbW3TURERKRJMqFi9nTp0iU8f/4cDRs2VLo8OzsbDx48gL29fbEGqAmpqakwNTVFSkoKTExMSmQbR7t2L5F2qXTx2L1d0yEQfXDWrFmj6RDoAzBkyJASa1udPELlM2K1atV67XJdXd1SkYQRERERvSsqJ2IvS0pKwu3btyGTyeDg4FCgTxYRERERvZla44hdvHgRzZs3h5WVFdzc3NC4cWOUL18erVq1wpUrV0oqRiIiIqJSSeVELD4+Hp6ennj06BEWLVqEP/74A7///jvmz5+Phw8folmzZoU+qJuI6H2TnZ0Nf39/mJubw8LCAqNGjUJOTo7adTMzMzFkyBA4OjrC2NgYNWvWVHhWblxcHIyMjBQmHR0ddOnS5Z3sJxG931ROxBYvXgx7e3ucPXsWAQEB8Pb2Rrt27RAYGIjo6GjY2dlh8eLFJRkrEVGxmTVrFo4cOYJLly7h4sWLOHz4MObMmaN23ZycHNjY2CAyMhKpqakICwvDuHHjsG/fPgBApUqVkJaWJk1PnjyBmZkZ+vTp8872lYjeXyonYhEREZg4cSL09fULLDMwMMCECRPw119/FWtwREQlZd26dZg6dSpsbGxgY2ODr7/+GmvXrlW7rqGhIWbOnIkqVapAJpPhk08+QcuWLXHkyBGlbe3atQt5eXn49NNPS2zfiOjDoXIidvPmTTRo0KDQ5Q0bNsTNmzeLJSgiopKUnJyMe/fuwcXFRSpzcXFBXFwcUlJSilwXADIyMnDy5EnUq1dP6bbXrl2Lfv36Kf1RS0QfH5UTsWfPnr12LAxjY2OkpaUVS1BERCUp/1hlZmYmleX//9mzZ0WuK4TA4MGDUa1aNaVnvO7cuYPIyEgMHjz4LfeAiEoLtYavePbsWaG/4lJTU4s0sj4R0btmZGQEAEhJSYGlpaX0f+DFj8qi1BVCYMSIEbhy5QoiIyMVngiSb/369ahfvz6cnZ2LeY+I6EOlciImhED16tVfu1wmkxVLUEREJcnc3BwVK1ZETEwMqlSpAuDF83Lt7Oxgamqqdl0hBEaOHIkTJ04gKiqqQBsAkJeXh/Xr12Py5MklvHdE9CFRORE7cOBAScZBRPRO+fn5Yfbs2fDw8AAAzJkzp9BLhm+q6+/vj6NHj2L//v0wNzdX2kZERASSkpLQt2/fYt4TIvqQqZyIeXp6qtXw3LlzMWzYMIV+FURE74tvvvkGjx8/hpOTEwDg888/x5QpUwAAw4YNAwCsWrXqjXXv3LmDFStWQC6XKzzm7fPPP5fWB1500u/Ro4fSs2VE9PFS+aHf6jIxMUFMTAwqV65cEs2XKD70m94XfOg3kfr40G9Sxfvy0G+1HnGkDnbcJyIiInq9Ij30m4g+Lp3H7dZ0CPQB2LOwq6ZDIPrglNgZMSIiIiJ6PSZiRERERBrCRIyIiIhIQ0osEWvWrBkMDAxKqnkiIiKiD16RO+tfvHgRubm50ry2tjZq164tzf/xxx9vFxkRERFRKafyGbHDhw+jUaNG0vwnn3yC+vXrw8XFBS4uLqhXrx4iIyNLJEgiIiKi0kjlRGzFihXo37+/QtmBAwdw69Yt3Lx5EwEBAVi5cmWxB0hERERUWqmciJ0+fRqtWrVSKKtYsSLs7e3h4OCA/v374/jx40UKYvny5XBwcIC+vj7c3Nxw8uTJ19bftm0batasCX19fdStW1fhMmh2djYmTpyIunXrwtDQELa2thgwYAAePHhQpNiIiIiISorKidi9e/cUnpG2YcMGWFtbS/MWFhZ4/Pix2gGEh4cjMDAQQUFBiI6OhrOzM7y9vZGYmKi0/rFjx9C3b18MGjQIZ8+ehY+PD3x8fHDhwgUAwPPnzxEdHY1vvvkG0dHR2LFjB65cuYIuXbqoHRsRERFRSVI5ETM2NsaNGzek+U8//RRlypSR5m/dulWk5zIuWrQIQ4YMgZ+fH2rVqoVVq1ahTJkyWLdundL6S5YsQbt27TBhwgQ4OTnh22+/RYMGDRAaGgoAMDU1RUREBHr16oUaNWrgk08+QWhoKM6cOYO4uDi14yMiIiIqKSonYm5ubvjxxx8LXR4WFgY3Nze1Np6VlYUzZ87Ay8vrfwFpacHLy6vQy5zHjx9XqA8A3t7er70smpKSAplMBjMzM6XLMzMzkZqaqjARERERlTSVE7HAwEBs2LABEyZMULhsmJiYiHHjxmHTpk0IDAxUa+NJSUnIzc2FlZWVQrmVlRXi4+OVrhMfH69W/YyMDEycOBF9+/Yt9IxdcHAwTE1NpcnOzk6t/SAiIiIqCpUTsZYtW2LZsmVYunQpbGxsYG5uDgsLC9jY2CA0NBQhISEFOvNrWnZ2Nnr16gUhxGvv6Jw8eTJSUlKk6e7du+8wSiIiIvpYqTWg64gRI9C5c2f88ssvuHbtGgCgWrVq6NGjR5HOIllaWkJbWxsJCQkK5QkJCQo3ArzM2tpapfr5SdidO3ewf//+1/Zfk8vlkMvlasdPRERE9DbUHlnfzs4OY8eOVbrsv//+U+uxRnp6enB1dUVUVBR8fHwAAHl5eYiKioK/v7/Sddzd3REVFYUxY8ZIZREREXB3d5fm85Owa9eu4cCBAyhbtqzKMRERERG9K8XyrMnMzEwsXLgQjo6Oaq8bGBiINWvWYMOGDYiNjcXw4cORnp4OPz8/AMCAAQMwefJkqX5AQAD27t2LhQsX4vLly5g+fTpOnz4tJW7Z2dno0aMHTp8+jc2bNyM3Nxfx8fGIj49HVlZWcewuERERUbFQ+YxYZmYmpk+fjoiICOjp6eGrr76Cj48P1q9fj6+//hra2tqFnil7nd69e+PRo0eYNm0a4uPj4eLigr1790od8uPi4qCl9b98sUmTJtiyZQumTp2KKVOmoFq1ati1axfq1KkDALh//z5+/fVXAICLi4vCtg4cOIAWLVqoHSMRERFRSVA5EZs2bRq+//57eHl54dixY+jZsyf8/Pzwzz//YNGiRejZsye0tbWLFIS/v3+hlyIPHjxYoKxnz57o2bOn0voODg4QQhQpDiIiIqJ3SeVEbNu2bfjxxx/RpUsXXLhwAfXq1UNOTg7OnTsHmUxWkjESERERlUpqPeLI1dUVAFCnTh3I5XKMHTuWSRgRERFREamciOXm5kJPT0+a19HRgZGRUYkERURERPQxUPnSpBACAwcOlMbbysjIwLBhw2BoaKhQb8eOHcUbIREREVEppXIi5uvrqzD/+eefF3swRERERB8TlROx9evXl2QcRERERB+dYhnQlYiIiIjUx0SMiIiISEOYiBERERFpCBMxIiIiIg1hIkZERESkIUzEiIiIiDSEiRgRERGRhjARIyIiItIQJmJEREREGsJEjIiIiEhDmIgRERERaQgTMSIiIiINYSJGREREpCFMxIiIiIg0hIkYERERkYYwESMiIiLSECZiRERERBryXiRiy5cvh4ODA/T19eHm5oaTJ0++tv62bdtQs2ZN6Ovro27duvjjjz8UlgshMG3aNNjY2MDAwABeXl64du1aSe4CERERkdo0noiFh4cjMDAQQUFBiI6OhrOzM7y9vZGYmKi0/rFjx9C3b18MGjQIZ8+ehY+PD3x8fHDhwgWpznfffYelS5di1apVOHHiBAwNDeHt7Y2MjIx3tVtEREREbyQTQghNBuDm5oZGjRohNDQUAJCXlwc7OzuMGjUKkyZNKlC/d+/eSE9Px2+//SaVffLJJ3BxccGqVasghICtrS3GjRuH8ePHAwBSUlJgZWWFsLAw9OnTp0CbmZmZyMzMlOZTUlJQqVIl3L17FyYmJsW9ywCAf/p8XiLtUunyydZNmg4BANBryu+aDoE+AD/P6ajpEAAAYWFhmg6BPgADBw4ssbZTU1NhZ2eHp0+fwtTU9PWVhQZlZmYKbW1tsXPnToXyAQMGiC5duihdx87OTixevFihbNq0aaJevXpCCCFu3LghAIizZ88q1GnevLkYPXq00jaDgoIEAE6cOHHixIkTp2Kb7t69+8ZcSAcalJSUhNzcXFhZWSmUW1lZ4fLly0rXiY+PV1o/Pj5eWp5fVlidV02ePBmBgYHSfF5eHp48eYKyZctCJpOpt1NUJPm/HkryLCRRceHnlT4k/Ly+e0IIPHv2DLa2tm+sq9FE7H0hl8shl8sVyszMzDQTzEfOxMSEBwr6YPDzSh8Sfl7frTdekvx/Gu2sb2lpCW1tbSQkJCiUJyQkwNraWuk61tbWr62f/686bRIRERFpgkYTMT09Pbi6uiIqKkoqy8vLQ1RUFNzd3ZWu4+7urlAfACIiIqT6jo6OsLa2VqiTmpqKEydOFNomERERkSZo/NJkYGAgfH190bBhQzRu3BghISFIT0+Hn58fAGDAgAGoUKECgoODAQABAQHw9PTEwoUL0bFjR2zduhWnT5/G6tWrAQAymQxjxozBrFmzUK1aNTg6OuKbb76Bra0tfHx8NLWb9AZyuRxBQUEFLhETvY/4eaUPCT+v7zeND18BAKGhoZg/fz7i4+Ph4uKCpUuXws3NDQDQokULODg4KNyOvG3bNkydOhW3b99GtWrV8N1336FDhw7SciEEgoKCsHr1ajx9+hRNmzbFihUrUL169Xe9a0RERESFei8SMSIiIqKPkcZH1iciIiL6WDERIyIiItIQJmJEREREGsJEjOgNpk+fDhcXF02HQVTAwYMHIZPJ8PTpU02HQsXk9u3bkMlkiImJeeu2ZDIZdu3a9dbtvMnq1athZ2cHLS0thISE8JipJiZiH5njx49DW1sbHTsqfzjvf//9h6CgIFSvXh1yuRyWlpbo2bMnLl68qFBv+vTpkMlkGDZsmEJ5TEwMZDIZbt++XVK7oJJ3dQAiItK0whKfhw8fon379iW67dTUVPj7+2PixIm4f/8+hg4dWqLbK42YiH1k1q5di1GjRuHvv//GgwcPFJZlZmbCy8sL69atw6xZs3D16lX88ccfyMnJgZubG/755x+F+vr6+li7di2uXbv2Lneh2GRlZWk6BPoIZGdnazoEKiYf2jHD2tq6xMcOi4uLQ3Z2Njp27AgbGxuUKVOmRLeX70N7L16HidhHJC0tDeHh4Rg+fDg6duyoMDYbAISEhOD48eP47bff0KtXL9jb26Nx48bYvn07nJycMGjQILw82kmNGjXQsmVLfP3112rFkZmZiYkTJ8LOzg5yuRxVq1bF2rVrpeWHDh1C48aNIZfLYWNjg0mTJiEnJ0da3qJFC4wePRpfffUVLCwsYG1tjenTp0vLHRwcAADdunWDTCaT5vN/Nf7www9wdHSEvr4+gBcHkq5du8LIyAgmJibo1atXgUdk0fshLy8P3333HapWrQq5XI5KlSph9uzZAIDz58+jVatWMDAwQNmyZTF06FCkpaVJ6w4cOBA+Pj5YsGABbGxsULZsWYwcOVJKlKZMmSKNX/gyZ2dnzJw5U5r/4Ycf4OTkBH19fdSsWRMrVqyQluVfVgoPD4enpyf09fWxefNm5OTkYPTo0TAzM0PZsmUxceJE+Pr6KgwynZeXh+DgYDg6OsLAwADOzs745ZdfFGL5448/UL16dRgYGKBly5YaP/Nc2rVo0QL+/v4YM2YMLC0t4e3tDQC4cOEC2rdvDyMjI1hZWaF///5ISkqS1vvll19Qt25d6bPo5eWF9PR0AC/e55kzZ6JixYqQy+VwcXHB3r17C40hLCyswLOPd+3aBZlMJi2fMWMGzp07B5lMBplMJh3bX70y8LbfEWWx1a1bFwBQuXLlQq+GqLLPqsY2e/Zs2NraokaNGoW+Zh8cQR+NtWvXioYNGwohhNizZ4+oUqWKyMvLk5bXq1dPtG3bVum6mzdvFgDE2bNnhRBCBAUFCWdnZ3HmzBmhpaUlTp06JYQQ4uzZswKAuHXrVqFx9OrVS9jZ2YkdO3aIGzduiMjISLF161YhhBD37t0TZcqUESNGjBCxsbFi586dwtLSUgQFBUnre3p6ChMTEzF9+nRx9epVsWHDBiGTycS+ffuEEEIkJiYKAGL9+vXi4cOHIjExUYrZ0NBQtGvXTkRHR4tz586J3Nxc4eLiIpo2bSpOnz4t/vnnH+Hq6io8PT2l7eXvK2neV199JczNzUVYWJi4fv26OHz4sFizZo1IS0sTNjY24tNPPxXnz58XUVFRwtHRUfj6+krr+vr6ChMTEzFs2DARGxsr9uzZI8qUKSNWr14thBDiwoULAoC4fv26tE5+2bVr14QQQmzatEnY2NiI7du3i5s3b4rt27cLCwsLERYWJoQQ4tatWwKAcHBwkOo8ePBAzJo1S1hYWIgdO3aI2NhYMWzYMGFiYiK6du0qbWvWrFmiZs2aYu/eveLGjRti/fr1Qi6Xi4MHDwohhIiLixNyuVwEBgaKy5cvi02bNgkrKysBQCQnJ5fsC/+R8vT0FEZGRmLChAni8uXL4vLlyyI5OVmUK1dOTJ48WcTGxoro6GjRpk0b0bJlSyGEEA8ePBA6Ojpi0aJF4tatW+Lff/8Vy5cvF8+ePRNCCLFo0SJhYmIifvrpJ3H58mXx1VdfCV1dXXH16lUhxP8+Q/nH2vXr1wtTU1OFuHbu3Cny/3w/f/5cjBs3TtSuXVs8fPhQPHz4UDx//lwIIQQAsXPnTiGEKJbvyKueP38uIiMjBQBx8uRJ8fDhQ5GTk1PgmPmmfVY1NiMjI9G/f39x4cIFceHCBbXfz/cVE7GPSJMmTURISIgQQojs7GxhaWkpDhw4IC3X19cXAQEBSteNjo4WAER4eLgQQjE56dOnj2jVqpUQ4s2J2JUrVwQAERERoXT5lClTRI0aNRQSxOXLlwsjIyORm5srhHhxcGzatKnCeo0aNRITJ06U5l8+AOULCgoSurq6UmImhBD79u0T2traIi4uTiq7ePGidGB5dV9Jc1JTU4VcLhdr1qwpsGz16tXC3NxcpKWlSWW///670NLSEvHx8UKIFwdye3t7kZOTI9Xp2bOn6N27tzTv7OwsZs6cKc1PnjxZuLm5SfNVqlQRW7ZsUdj2t99+K9zd3YUQ//sjmv89y2dlZSXmz58vzefk5IhKlSpJiVhGRoYoU6aMOHbsmMJ6gwYNEn379pViqVWrlsLyiRMnMhErQZ6enqJ+/foKZd9++22BH6x3794VAMSVK1fEmTNnBABx+/ZtpW3a2tqK2bNnK5Q1atRIjBgxQgihfiImROHHqJePg8X1HXmVsmP+q/G8aZ9Vjc3KykpkZmYWGsuHipcmPxJXrlzByZMn0bdvXwCAjo4OevfurXBJEIDCpUdVzZo1C4cPH8a+ffveWDcmJgba2trw9PRUujw2Nhbu7u7SaXcA8PDwQFpaGu7duyeV1atXT2E9GxsbJCYmvnH79vb2KFeunML27OzsYGdnJ5XVqlULZmZmiI2NfWN79O7ExsYiMzMTrVu3VrrM2dkZhoaGUpmHhwfy8vJw5coVqax27drQ1taW5l/93PTr1w9btmwB8OK78NNPP6Ffv34AgPT0dNy4cQODBg2CkZGRNM2aNQs3btxQiKdhw4bS/1NSUpCQkIDGjRtLZdra2nB1dZXmr1+/jufPn6NNmzYKbf/4449S27GxsQUunbq7u6vwytHbePl9AoBz587hwIEDCu9TzZo1AQA3btyAs7MzWrdujbp166Jnz55Ys2YNkpOTAbzo2P7gwQN4eHgotOnh4VHix5vi+o6oS5V9VjW2unXrQk9Pr8ixvK80/tBvejfWrl2LnJwc2NraSmVCCMjlcoSGhsLU1BTVq1cv9GCQX67seZ1VqlTBkCFDMGnSpAKJ3asMDAzeYi/+R1dXV2FeJpMhLy/vjeu9/EWnD0txfHbe9Lnp27cvJk6ciOjoaPz333+4e/cuevfuDQBSf5U1a9YUSIhe/sMFqP85y2/7999/R4UKFRSW8UHNmvXqe5mWlobOnTtj3rx5Bera2NhAW1sbEREROHbsGPbt24dly5bh66+/xokTJ1C2bFm1t6+lpVXgB3JJ3gBS1GPru1Baj988I/YRyMnJwY8//oiFCxciJiZGms6dOwdbW1v89NNPAIA+ffogMjIS586dU1g/Ly8PixcvRq1ateDs7Kx0G9OmTcPVq1exdevW18ZSt25d5OXl4dChQ0qXOzk54fjx4woHnqNHj8LY2BgVK1ZUeZ91dXWRm5v7xnpOTk64e/cu7t69K5VdunQJT58+Ra1atVTeHpW8atWqwcDAAFFRUQWWOTk54dy5c1KHaODF50ZLS0utTr0VK1aEp6cnNm/ejM2bN6NNmzYoX748AMDKygq2tra4efMmqlatqjA5OjoW2qapqSmsrKxw6tQpqSw3NxfR0dHSfK1atSCXyxEXF1eg7fyztU5OTjh58qRC26/eyUwlr0GDBrh48SIcHBwKvFf5iYJMJoOHhwdmzJiBs2fPQk9PDzt37oSJiQlsbW1x9OhRhTaPHj1a6PGmXLlyePbsmcJn+9UxxvT09N54vCuu74i6VNlnTcX2vmAi9hH47bffkJycjEGDBqFOnToKU/fu3aWzWGPHjkXjxo3RuXNnbNu2DXFxcTh16hS6d++O2NhYrF27VuGS4cusrKwQGBiIpUuXvjYWBwcH+Pr64osvvsCuXbtw69YtHDx4ED///DMAYMSIEbh79y5GjRqFy5cvY/fu3QgKCkJgYCC0tFT/uDo4OCAqKgrx8fHSZQFlvLy8ULduXfTr1w/R0dE4efIkBgwYAE9PT4XLS6R5+vr6mDhxIr766ivpkt0///yDtWvXol+/ftDX14evry8uXLiAAwcOYNSoUejfvz+srKzU2k6/fv2wdetWbNu2TbosmW/GjBkIDg7G0qVLcfXqVZw/fx7r16/HokWLXtvmqFGjEBwcjN27d+PKlSsICAhAcnKy9H0yNjbG+PHjMXbsWGzYsAE3btxAdHQ0li1bhg0bNgAAhg0bhmvXrmHChAm4cuUKtmzZUuDOZyp5I0eOxJMnT9C3b1+cOnUKN27cwF9//QU/Pz/k5ubixIkTmDNnDk6fPo24uDjs2LEDjx49gpOTEwBgwoQJmDdvHsLDw3HlyhVMmjQJMTExCAgIULo9Nzc3lClTBlOmTMGNGzeUvu8ODg64desWYmJikJSUhMzMzALtFOd3RF1v2mdNxvZe0GgPNXonOnXqJDp06KB02YkTJwQAce7cOSGEEOnp6eLrr78WVatWFbq6usLCwkJ0795dnD9/XmE9ZZ1DU1JShKWl5Rvvmvzvv//E2LFjhY2NjdDT0xNVq1YV69atk5YfPHhQNGrUSOjp6Qlra2sxceJEkZ2dLS339PQscFNB165dFe6w+fXXX0XVqlWFjo6OsLe3LzRmIYS4c+eO6NKlizA0NBTGxsaiZ8+eUgfR161H715ubq6YNWuWsLe3F7q6uqJSpUpizpw5Qggh/v33X9GyZUuhr68vLCwsxJAhQ6Q71YR40dn35bsUhRAiICBA4Q5ZIYRITk4WcrlclClTRmH9fJs3bxYuLi5CT09PmJubi+bNm4sdO3YIIQp2tM6XnZ0t/P39hYmJiTA3NxcTJ04UPXv2FH369JHq5OXliZCQEFGjRg2hq6srypUrJ7y9vcWhQ4ekOnv27BFVq1YVcrlcNGvWTKxbt46d9UuQsmONEEJcvXpVdOvWTZiZmQkDAwNRs2ZNMWbMGJGXlycuXbokvL29Rbly5YRcLhfVq1cXy5Ytk9bNzc0V06dPFxUqVBC6urrC2dlZ/Pnnn9JyZZ+hnTt3iqpVqwoDAwPRqVMnsXr1aoXO+hkZGaJ79+7CzMxMumNciII3LRXXd+RlqnTWf9M+FzW20kImRBF6ZxMRUZHl5eXByckJvXr1wrfffqvpcIhIg9hZn4iohN25cwf79u2Dp6cnMjMzERoailu3buGzzz7TdGhEpGHsI0ZEVMK0tLQQFhaGRo0awcPDA+fPn0dkZKTUb4iIPl68NElERESkITwjRkRERKQhTMSIiIiINISJGBEREZGGMBEjIiIi0hAmYkREREQawkSMiIiISEOYiBERERFpCBMxIiIiIg35P/sJqTPt1YM3AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(figsize=(6.2, 3.2))\n", "bars = {\n", " \"AON control\": aon_metrics[\"rg_d1\"],\n", " \"converged\": metrics[\"rg_d1\"],\n", " \"resolution floor\": metrics[\"floor_gap\"],\n", "}\n", "ax.bar(list(bars), list(bars.values()), color=[\"#c44e52\", \"#4c72b0\", \"#9a9a9a\"])\n", "ax.set_ylabel(\"RG_D1 (frozen-field BR gap)\")\n", "ax.set_title(f\"{scenario.name}: negative control separates ({separation:.1f}x)\")\n", "for i, v in enumerate(bars.values()):\n", " ax.text(i, v, f\"{v:.3f}\", ha=\"center\", va=\"bottom\", fontsize=9)\n", "fig.tight_layout()\n", "fig" ] }, { "cell_type": "markdown", "id": "edoc-sumo-15", "metadata": {}, "source": [ "## Takeaways & pointers\n", "\n", "- **Observational, not cost-matched.** With no declared latency function, the matched object is\n", " the **engine itself** under G1 replay fidelity; the certified claim is *`P` is best-response\n", " stable under the pinned replay map*.\n", "- **The engine is the instance.** Engine identity + version + seed + config are inside the hash;\n", " a version drift RAISES at certify time (G0). The solver that produced `P` is as model-blind as\n", " every other benchmark model.\n", "- **`RG_D1` is not Wardrop `relative_gap`.** A separate leaderboard table (R8); never compared to\n", " the static rows' gap.\n", "- **Provenance vs score.** duaIterate's own convergence print and its internal experienced record\n", " are provenance only — `X` and the field are defined by the pinned replay (ADR-037), which is why\n", " a self-reported gap is never gated.\n", "\n", "See [ADR-037](../../docs/design/adr-037-sumo-duaiterate.md) for the measured family constants and\n", "the deterministic-track (single-seed) decision." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.12" }, "tabench": { "covers": [], "requires_extra": "sumo", "track": "external", "unit": "sumo-duaiterate" } }, "nbformat": 4, "nbformat_minor": 5 }