{ "cells": [ { "cell_type": "markdown", "id": "f2c7f8f6", "metadata": {}, "source": [ "# `dtd-link` — He, Guo & Liu's (2010) link-based day-to-day dynamics\n", "\n", "**What.** The state is the aggregate LINK-flow vector, which moves each day toward the frozen-cost proximal target x*(v) = Proj_Ω(v − a t(v)) — a rational-behaviour adjustment that stays inside the OD-feasible polytope Ω. Its fixed point is Wardrop UE.\n", "\n", "**Why it is in the benchmark.** Its distinctive signature is INVARIANCE: the emitted link flows never leave Ω (node balance ≈ 0 on every day), the He-Guo-Liu invariance principle — a different paradigm from route-swap (dtd-swap) that reaches the identical certified UE. See the\n", "[model compendium](../../docs/MODELS.md) and the certificate design in\n", "[docs/ARCHITECTURE.md](../../docs/ARCHITECTURE.md) (P1).\n", "\n", "**Scope.** Runs the process on a built-in scenario and certifies the result; it does\n", "not benchmark day-to-day models against each other. Reference: He, Guo & Liu (2010), *Transportation Research Part B* 44(4).\n", "\n", "**Canon.** `[he2010linkbased]`, [docs/REFERENCES.md](../../docs/REFERENCES.md) / [docs/references.bib](../../docs/references.bib)." ] }, { "cell_type": "markdown", "id": "97bd793c", "metadata": {}, "source": [ "## How this notebook is graded\n", "\n", "**A notebook never claims a number it does not compute in that cell.** Every scored\n", "quantity below is recomputed live by the P1 `Evaluator` from the flows the model\n", "emitted, in the cell where it is claimed. Model self-reports (the per-day gap/residual,\n", "the Lyapunov value) are shown only as provenance and diffed against the certificate,\n", "exactly as the harness treats them ([README](../../README.md), *Certified, not\n", "self-reported*)." ] }, { "cell_type": "code", "execution_count": 1, "id": "e9b2b376", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:46:22.890109Z", "iopub.status.busy": "2026-07-21T13:46:22.889488Z", "iopub.status.idle": "2026-07-21T13:46:24.872955Z", "shell.execute_reply": "2026-07-21T13:46:24.872205Z" } }, "outputs": [], "source": [ "# Setup. `dtd-link` is a core day-to-day model: a plain `pip install -e .` suffices —\n", "# no optional extra, so no guard cell. The inline backend is Agg-based (headless CI\n", "# renders into the notebook); NEVER matplotlib.use(\"Agg\") in-kernel — it silently\n", "# suppresses inline figure capture.\n", "%matplotlib inline\n", "import numpy as np\n", "\n", "from tabench import (\n", " Budget,\n", " Evaluator,\n", " LinkBasedDTDModel,\n", " RngBundle,\n", " Trace,\n", " braess_scenario,\n", " viz,\n", ")" ] }, { "cell_type": "markdown", "id": "9921c1c1", "metadata": {}, "source": [ "## The scenario\n", "\n", "The built-in Braess network (4 nodes, 5 links, one OD pair 1→2, demand 6). Scenarios are\n", "frozen and content-hashed (P2) — the hash below is the benchmark instance's identity." ] }, { "cell_type": "code", "execution_count": 2, "id": "de43031e", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:46:24.876385Z", "iopub.status.busy": "2026-07-21T13:46:24.875965Z", "iopub.status.idle": "2026-07-21T13:46:24.880597Z", "shell.execute_reply": "2026-07-21T13:46:24.880088Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "scenario : braess\n", "content hash : cf00f411cdccec88…\n", "links : 5 (tail→head: 1->3, 1->4, 3->4, 3->2, 4->2)\n", "total demand : 6.0\n", "task : Wardrop UE fixed point\n" ] } ], "source": [ "scenario = braess_scenario()\n", "net = scenario.network\n", "print(f\"scenario : {scenario.name}\")\n", "print(f\"content hash : {scenario.content_hash()[:16]}…\")\n", "print(f\"links : {net.n_links} (tail→head: \"\n", " + \", \".join(f\"{i}->{j}\" for i, j in zip(net.init_node, net.term_node)) + \")\")\n", "print(f\"total demand : {scenario.demand.total}\")\n", "print(\"task : Wardrop UE fixed point\")" ] }, { "cell_type": "markdown", "id": "39ebca71", "metadata": {}, "source": [ "## Run the adjustment process\n", "\n", "The model contract ([CONTRIBUTING.md](../../CONTRIBUTING.md)): a model receives\n", "`(scenario, budget, rng, trace)` and records one checkpoint per day — here a *budget\n", "iteration is a day*. Everything the model writes into `self_report` (the per-day\n", "gap/residual, the Lyapunov value) is provenance, not a score." ] }, { "cell_type": "code", "execution_count": 3, "id": "a032f873", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:46:24.882849Z", "iopub.status.busy": "2026-07-21T13:46:24.882550Z", "iopub.status.idle": "2026-07-21T13:46:24.921793Z", "shell.execute_reply": "2026-07-21T13:46:24.921289Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "model : dtd-link\n", "days simulated : 43 (44 shortest-path calls)\n", "emitted flows : [4. 2. 2. 2. 4.]\n", "self-reported gap : 7.403e-09 (provenance only)\n" ] } ], "source": [ "bundle_trace = Trace()\n", "model = LinkBasedDTDModel()\n", "model.solve(scenario, Budget(iterations=800, target_relative_gap=1e-8),\n", " RngBundle(0), bundle_trace)\n", "final = bundle_trace.final\n", "print(f\"model : {model.name}\")\n", "print(f\"days simulated : {final.coords.iterations} \"\n", " f\"({final.coords.sp_calls} shortest-path calls)\")\n", "print(f\"emitted flows : {np.round(final.link_flows, 6)}\")\n", "print(f\"self-reported gap : {final.self_report['relative_gap']:.3e} (provenance only)\")" ] }, { "cell_type": "markdown", "id": "b3b307ee", "metadata": {}, "source": [ "## Certify (P1) — the fixed point AND the descent\n", "\n", "The harness, never the model, computes every scored metric. Certified here: (1) the\n", "terminal flows are the Wardrop UE — relative gap → 0 with the analytic Braess anchor\n", "recomputed in-cell; (2) the day-to-day signature — Beckmann descends monotonically to\n", "386 — plus this model's distinctive provenance measure." ] }, { "cell_type": "code", "execution_count": 4, "id": "e6294ca3", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:46:24.924035Z", "iopub.status.busy": "2026-07-21T13:46:24.923767Z", "iopub.status.idle": "2026-07-21T13:46:24.942480Z", "shell.execute_reply": "2026-07-21T13:46:24.941982Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "certified relative gap : 7.403e-09\n", "feasible : 1\n", "route time (TSTT/D) : 92.0000 (analytic UE: 92)\n", "Beckmann descent : 438.00 → 386.00 (monotone ✓)\n", "worst node-balance/day : 3.55e-15 (stays inside Ω every day)\n" ] } ], "source": [ "evaluator = Evaluator(scenario)\n", "metrics = evaluator.evaluate(final.link_flows)\n", "gap = metrics[\"relative_gap\"]\n", "print(f\"certified relative gap : {gap:.3e}\")\n", "print(f\"feasible : {metrics['feasible']:.0f}\")\n", "assert metrics[\"feasible\"] == 1.0\n", "assert gap < 1e-6\n", "# Analytic Braess UE anchor, recomputed in-cell (flows (4,2,2,2,4), every route costs 92).\n", "ref_flows = np.array([4.0, 2.0, 2.0, 2.0, 4.0])\n", "assert evaluator.evaluate(ref_flows)[\"relative_gap\"] < 1e-6\n", "assert np.allclose(final.link_flows, ref_flows, atol=1e-4)\n", "route_time = metrics[\"tstt\"] / scenario.demand.total\n", "print(f\"route time (TSTT/D) : {route_time:.4f} (analytic UE: 92)\")\n", "assert abs(route_time - 92.0) < 1e-2\n", "# Beckmann is a Lyapunov function: monotone non-increasing to the UE value 386.\n", "beckmann = [s.self_report[\"beckmann\"] for s in bundle_trace]\n", "assert all(beckmann[i] >= beckmann[i + 1] - 1e-9 for i in range(len(beckmann) - 1))\n", "assert abs(beckmann[-1] - 386.0) < 1e-2\n", "print(f\"Beckmann descent : {beckmann[0]:.2f} → {beckmann[-1]:.2f} (monotone ✓)\")\n", "# Honesty diff (P1): the terminal self-reported Beckmann value against the SAME\n", "# quantity the certificate itself computes from final.link_flows -- the Lyapunov\n", "# claim is not backed by self-report alone.\n", "assert np.isclose(beckmann[-1], metrics[\"beckmann_objective\"], atol=1e-6)\n", "# INVARIANCE (He, Guo & Liu 2010): the LINK-flow state never leaves the OD-feasible set\n", "# Ω — node balance is at the noise floor on EVERY recorded day, not only at convergence.\n", "worst_balance = max(\n", " evaluator.evaluate(s.link_flows)[\"node_balance_residual\"] for s in bundle_trace\n", ")\n", "print(f\"worst node-balance/day : {worst_balance:.2e} (stays inside Ω every day)\")\n", "assert worst_balance <= 1e-6 * scenario.demand.total" ] }, { "cell_type": "markdown", "id": "8c4e9cd0", "metadata": {}, "source": [ "## Visualize\n", "\n", "Both figures come from `tabench.viz`, the house visualizer — every plotted number is one\n", "certified above. Left/top: the certified terminal link flows on the network. Right/bottom:\n", "the emitted flows against the fixed point recomputed in the certify cell — points on the\n", "`y = x` guide mean the day-to-day process settled on it link-for-link." ] }, { "cell_type": "code", "execution_count": 5, "id": "6f351dec", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:46:24.944643Z", "iopub.status.busy": "2026-07-21T13:46:24.944484Z", "iopub.status.idle": "2026-07-21T13:46:25.244595Z", "shell.execute_reply": "2026-07-21T13:46:25.243933Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAesAAAGsCAYAAAD9ro91AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABHiklEQVR4nO3deXgT1cIG8HeSJs0CbSmUFijQBQsIskMttCAgmyxCgbIUXK4CRT8U9CJcZanKppdNkUU2RS4qWwFZVBRQKCgUqoIoBcqiZS0CLTRdkjTfH7XBQpc0mSST5P3xzPPQmTNnzgTSN+fMyYxgMOhNICIiIsmSObsBREREVD6GNRERkcQxrImIiCSOYU1ERCRxDGsiIiKJY1gTERFJHMOaiIhI4hjWREREEsewJiIikjiGNYmid+/emDx5srObYRf3n9sjjzyCJUuWWLz/gQMH4Ovrh9u3b1u8j8lkwksvvYz69UPg6+uH48ePu/VrTETl83J2A4hczb59+6DRaOx6jG+//Raffvopdu7cgZCQEFSvXt2uxyMiaWNYk9MUFBRAqVQ6uxmVVqNGDbsf4/z58wgKCkRkZKTdj0VE0sdhcBKNwWDEv/89EXXr1kNoaBhmzJgBk+nec2IeeeQRvPvuuxgzZgyCg+vi5ZdfBgBMmzYdrVq1RlBQLTRr1hwzZsyAXq8vUffOnTsRE9MRNWsGolmz5pgzZw4MBgOAoiHj2bNno0mTpggIqImGDRvhtddeM++7YsVKtGzZCjVrBqJBg4cwcuRTNp3n/cPgvr5+WLPmE8THxyMoqBZatmyFXbt2lbm/TqfDwIGD0L17j1KHxseOHYuJE1/Dn39mwNfXD4888kip9dy6dRtjxoxBvXr1ERRUCwMHDkJ6ejqAotckLCwcW7duM5ePjo5GRERD888//PADAgJqQqfTVfgaEpFzMaxJNJ999hm8vOTYu3cP3nlnDhYvXoI1az4pUWbRog/QtGlT7N+/HxMnFoVB1apVsHTpEhw+/CPeeWcO1qz5BIsX3wvDQ4cOISFhLMaOTcDhw4excOFCrFv3KebOnQsA2LbtCyxZshQLFy5AauoxfPrpOjz8cBMAQGrqT5g0aRLeeON1HD2ags2bN6FDh/bmutetWwdfXz+bz/2dd97BgAEDcPDgQXTv3g2jRo3GzZu3Hih3+/Zt9O8/AIWFhdi6dQv8/B489pw5c/DGG6+jTp06OH06Dfv27Sv1mC+8MBY//fQzPv/8M3zzzW6YTCYMGjQYer0egiCgffv2SE5OBlAU7Glpp5GXl4vTp08DAJKTD6JVq1bQaDTlvoZE5HwcBifR1KlTB7Nnz4YgCHjooYdw8uRvWLJkCZ555mlzmY4dYzBu3LgS+02cONH89/r162PcuLPYvHkzxo8v6nnPmfMOxo8fj+HDhwMAQkNDMGXKG5g2bTomT56MjIw/UbNmTTz22GNQKBSoW7cuWrduDQDIyPgTWq0WPXr0QNWqVVGvXj00b97cfDwfHx889NBDNp/78OHDMGjQIADAtGnTsGzZh0hNPYbHH3/cXOb69et49tlnERYWjlWrVpZ5CcDX1xdVqlSBXC5DYGBgqWXS09Oxa9eX2L37a/NQ+cqVK/Dww02wY8dODBjQHzEx0fjoo48BAIcOHUSzZs0QGFgTBw4kIyIiAsnJyejQoYP5dSrrNSQi52PPmkTTtm0bCIJg/rldu7ZIT0+H0Wg0r2vRouUD+23enITu3XvgoYciULt2HcyYMQMZGRnm7b/++iveffdd1K5dx7y89NLLuHr1KnQ6Hfr374+8vDw0b94C48a9hO3bt5uHyDt37oy6dYPRvHkLjB49Ghs2bIBOpzPX3bdvXxw9mmLzuTdp0tT8d61WCx8fH2RmZpYo07//AISGhuHjjz+y+Vp9WloavLy80KZNG/M6f39/NGjQAKdPpwEAOnTogFOnTuHGjRs4ePAgoqOjER0djeTkZOj1ehw5cgTR0dF/t63s15CInI9hTQ6l1ZacRX3kyBGMGjUK3bp1w/r163HgwH78+9+vQq8vMJfJycnBf/7zHxw4cMC8HDp0CKmpqVCpVAgODsbRoymYN28u1GoVXn313+jV6wno9XpUrVoV+/fvx6pVqxAYGISZM2ehQ4foSn2NyhIKRclBKkEACgsLS6zr3r07Dh06hFOnTol67LI0adIE1apVQ3LyQSQnH0RMTFFYHzx4EKmpqdDr9YiMbAcA5b6GROR8HAYn0Rw9eqzEzykpRxEeHg65XF7mPocPH0bdunUxceK/zev++OPPEmWaN2+OM2fOIDw8rMx61Go1evXqhV69emHUqFFo06YtTp48iRYtWsDLywudOz+Gzp0fw+TJk1CvXn3s378f/fr1s+IsrZeYOB1arRb9+j2JnTt3oFGjRlbX1bBhQxgMBhw9etQ8DH7z5k2cPXsWDRsW1Vt03ToKu3btxKlTp/Doo49Co9EgPz8fH330EVq2bAmtVmuus7zXkIici2FNosnIyMDrr7+OZ599Fr/88guWL1+OGTNmlLtPeHg4MjIysGnTZrRq1Qq7d3+NHTt2lCjz2muvYciQIahbNxhPPvkkZDIZTpz4Fb///jumTp2CdevWwWg0ok2bNlCrNVi/fj3UajXq1auHr776ChcuXED79u3h5+eH3bu/QWFhofk69fbt2/Hmm2+JMhRuiZkzZ6Cw0Ii+ffth584diIiIsKqe8PBw9O79BF566WUsXLgAVapUQWLim6hVqxZ6937CXC46OhpvvDEFLVu2RJUqVQAAHTq0x4YNG/HSSy+Zy5X3GhKR83EYnEQzdOhQ5ObmoUuXrnj11X8jISEBzz77TLn7PPHEE3jhhRcwceJExMTE4PDhI3jttYklyjz+eFesX78ee/fuQ+fOXfD4492wZMkS1K1bF0DRhKw1az5Bjx490aFDB3z33ff4/PPP4e/vD19fX2zfvh19+/ZDu3aR+Oij1Vi1ahUaN24MAMjOzsaZM2fs8nqUZfbs2RgwoD/69u2Hs2fPWl3P4sVL0KJFcwwZMgTdunWHyWTCpk0boVAozGU6dOgAo9FovjYNFAX4/evKew2JyPkEg0FvqrgYEREROQt71kRERBLHsCYiIpI4hjUREZHEMayJiIgkjmFNREQkcQxrIiIiiWNYExERSRzDmoiISOIY1kRERBLHsCYiIpI4hjUREZHEMayJiIgkjmFNREQkcQxrIiIiiWNYExERSRzDmoiISOIY1kRERBLHsCYiIpI4hjUREZHEMayJiIgkjmFNREQkcQxrIiIiiWNYExERSZyXsxtAREQkpoL8fLz66iu4cycbH69ZW2oZnU6HFcs/RGrqMSiVSvTo2QuDBg22eLujMayJiMitrF//OQICAnDnTnaZZVavXoW7d+9iydIPkZWVhbffehMBAQHo1Okxi7Y7GsOayALZ2dk4dy4d169fh0Gvh5dCgZo1ayIsLBw+Pj7Obh6R5BQUFMBgMNhcj8lkgiAIJdYpFAooFIpSy59LT8fPP/+Mp55+Ggvmzyu1TH5+Pg4dTMbbM2ZCq9VCq9WiV69e2LtnDzp1eqzC7c7AsCYqQ1ZWFvbs+Rbf7duLq1evllkuKCgInbt0RZcuXeHr6+vAFhJJU0FBAQYPGwlvme1hrVKpkJeXV2LdoMFxiIsb8kBZo9GIDz9ciueefx4mk6nMOi9fvgSDwYCQkFDzupCQUGzZkmTRdmdgWBPdp6CgABs2rMfOHTtgNBrQsGEjdO7cFWHh4ahTJxhKhQIFej0uXcrAufR0pKYew2efrsOG9evRu08fxMUNgVKpdPZpEDmNwWCAt8yA725GwGCyfh6zl1CIx/xPY+my5VCr1eb1ZfWqv/hiG0JCQvHww01w8uSvZdabl5cHb28V5HK5eZ1Gq0Vubq5F252BYU30D+fOncOi9xfi0qVLiI7piAH9YxESGlpq2cDAQLRq1RqDBsfhwvnz2LI1CV9s24pjR1Mw7qXxCAsLc3DriaTFYJLBaJJXXLACarUaGo2m3DJXr1zBN7u/xrvvzq2wPpVKhYKCfBiNRnMg63Q55g8EFW13Bn51i+hvv508icTpU5GTo8Pk/7yBCRNeLTOo7xcSGooJE17F5MmvIydHh8TpU/HbyZN2bjGRxAkiLBY6dep3ZGVl4eWXx+G5fz2Dd995B7m5uXjuX8/gzJnTJcrWrl0HcrkcFy9cMK+7cOEC6tWrZ9F2Z2BYE6GoRz179ixUq+aPOe/8F23btrOqnrbtIjHnnf8W1TNnFs6dOydyS4lchyDCH0tFte+A9xctxrv/nYd3/zsPCWPHQqVS493/zkNoSMkP3d7e3mjfvgPWr/8MupwcXLlyGV99uQtduj5u0XZnYFiTxysoKMCi9xdCrVZjeuJbCAgIsKm+gIAATE98CyqVGoveX4iCggKRWkrkagRAsGGpRFh7e3ujevXq5sXHxweCAFSvXh1eCgVmzZyBpKTN5vL/eu55qDUaJCSMxtQpb6BLl64lZnpXtN3RBINBX/aUOSIP8L//rcUX27Zi8n/esLpHXZqUI4cxZ84s9HuyP0aMGClavURSp9Pp8MzTI7Hn5sMwwvpr1nIY0dX/N3y8Zm2F16zdHXvW5NGysrKwc8cORMd0FDWogaIh8Q7RMdi1cweysrJErZvINTjworWbY1iTR9uz51sYjQYM6B9rl/oHDIiFwWDA3r177FI/kaQxq0XDsCaP9t2+vWjYsJFFs7779euHyMhIREVFoVu3bvjll18q3Cc0NAwRDRtiH8OaPJAjJ5i5O4Y1eazs7GxcvXoVrVq1tqj8J598gsOHD+OHH37AuHHjMGbMGIv2a9WyNa5evYo7d+7Y0lwi8mAMa/JY586lAwDCwsMtKu/n52f+e3Z29gP3Ky5Lcf3FxyPyGLbMBDfPCCeAdzAjD3b9+nUAQJ06wRbvM2rUKOzfvx8AsHnz5gpKo0T9165dq2QLiVydrReeGdbF2LMmj2XQ6wEAyjLuM1yaFStWIC0tDdOmTcO0adMs2kepVJQ4HhFRZTGsyWN5/R3SBVaEaHx8PPbv34+//vqrwrIFBfoSxyPyGJwNLhqGNXmsmjVrAgAuXcqosOzt27dx5coV88/bt2+Hv78//P39K9y3uP7AwEArW0rkmjgbXDy8Zk0eKyzs74lf6ekVzgjPzs7GyJEjkZubC5lMhho1amDTpk0WTTI7l55e4nhEHqOStwwtpQKxWuLyGNbksXx8fBAUFITU1GMYNDiu3LL16tXD999/b9VxUn86hqCgIFStWtWq/YmIOAxOHu2xzl2QlnYKF86ft0v958+fw+m0NHTu0tUu9RNJGy9ai4VhTR6ta9fHIZd7YcvWJLvUv2VLEry8vNCFYU1ENmBYk0fz9fVF7z59kHxgP1JSjohad8qRwziYfABP9O4DX19fUesmcgWCINi8UBGGNXm8uLghqFOnDpYtXYLMzExR6szMzMSyZUtQp04w4uKGiFInEXkuhjV5PKVSiXEvjUdeXi7eTJxmc2BnZmYicfpU5OXlYdxLL0OpVIrUUiJXw2vWYmFYEwEICwvD5Mmv49atm5g8aaLVQ+IpRw5j8qR/4/btW5g8+XWEhYWJ3FIiFyLAxnuDO/sEpINhTfS3h5s0QeKbb0Or1WDO7JmYP3+uxbPEz58/h/nz52LOnFnQarVIfPNtPNykiZ1bTESegt+zJvqHsLAwvPPuXGzYsB67du7AweQDiGjYEK1atkZYeDjq1AmGUqlAQYEely5l4Fx6OlJ/OobTaWnw8vJCvyf7Iy5uCIe+iUhUDGui+yiVSowYMRJ9+/bD3r17sG/vHnz++adllq9VqxaGD49H5y5dOeub6B8EwbZbhvJ2o/cwrInK4OvriwEDYjFgQCyys7Nx/vw5XLt2DQa9Hl4KBQIDAxEWFs47kxGVibcbFQvDmsgCPj4+aN68hbObQUQeimFNRET2wY6xaBjWRERkJxwGFwvDmoiI7IITzMTD71kTERFJHHvWRERkJxwGFwvDmoiI7INZKxqGNRER2Ql71mLhNWsiIiKJY8+aiIjsQgBng4uFYU0kMSaTCWeuGVBFJaCWrxyCwF9Y5KIEDoOLhcPgRBIjCAKUXsBfdwtx+bYRJpPJ2U0iIidjWBNJUL3qXqjiLeBmDgObiDgMTi7gZrYOc//3PfYdPYvbd/PQulEdTPnX42gUUtPZTbMbmSCgfg0vXLxhwM2cQgBAbT8OiZOLccIw+OpVK5GScgQ6nQ4qlRpRUVEYMWIkvBSKEuVuZGZiwoTxJdbp9QVo2bIVJk3+DwAgcfo0nD6dBrn8XlS+9/4i+Pv7V/5UbMSwJkm6ma3DzuTfkbTvV+w7dhb/7FhezszGzuRT2DhnJB5v95DzGmlnDGxydc6YYNa9R08Mjx8BlUqF7OxsLJg/F9u+2IaBAweVKFcjIABr/7fO/LNBr8eYMaPQoUN0iXLxI0aid+8+1p2AiBjWJBnFAb31+5P47lg6DMbCMssWmkwY+sY6XP96GmQy972aw8AmAnJzc0v8rFAooLivp1wsODj43g8mEwRBhitXrlR4jCMpR1BYaEK7yEib2movDGtyqsoE9P30BiPWffUTRj7R2o4tdD4GNrkskYbBxyaMLrF20OA4xMUNKXOvrVuSsHnzZuTn56Fq1aqIHzGiwiPt27sHMTExUCqVJdYnbd6ETRs3IiAgAL379EGnTo9V/jREwLAmp/jj6m0krtiNbd+frFRA3+9sxl8itkq6GNjkyZYuWw61Wm3+uaxedbH+A2LRf0AsMjIykHxgP/z8qpVbPjPzOo4fP4H4EU+VWD98eDyCg4Oh9PbGr7+ewIL586FWqZ3S+3bf8UOSrAtXbiH6+cXYvPeETUENwK0nmd2vOLA5S5xchiDYvgBQq9XQaDTmpaKwLhYcHIz6ISFYsnhRueX27duH0NBQhISElFgf0bAhNFotvLy80KJFS3Tr1g2HDh206qWwFcOaHO6VBV8gKyfP5nq85DIM6tJUhBa5DgY2UeUYDcZyr1kXFhbiu3170aVr1wrrcuZIFsOaHCqvQI8DP58Xpa6+MQ9D4eV5V3IY2OQqBBH+VEZebi727duLnJwcmEwm/HHxIjZv3oTmzVuUuc/x47/gzp07iL5vFnhOTg5SU48hPz8fhUYjTpw4jm++2Y3IRx+15qWwmef9piOn0hsKUaA3ilLXU73de2JZeXgNm1yCo79nLQhIPnAAaz9ZA73eAF9fH0RGPoq4IUMBALNmzkCjxo0RGzvQvMvevXsQ+WgUNFptiaqMBgM2bdyI9xYuAAAEBATgqaefQVRUexvOx3qCwaDnR3JyqFYjFyLdxolh/j4anEl6DV5yuUitck2FJhMu3jDgbr4J/loZA5skQafT4ZmnR+KgsTOMNvQJ5TCgg3wfPl6zFhqNRsQWuh4Og5PDvTWmu8119Ilp7PFBDXBInMhTMKzJ4fpEP4zxQ6MrLliO/p08a2JZeRjYJFkizQYnhjU5QX6BAb9fuG71/v4+GnRsGSpii1wfA5ukSRBhIYBhTQ6WX2DAU4mf4+sfT1tdR5+YxlB4cQj8fgxsIvfFsCaHKQ7qr35Is6keDoGXjYFNUsJRcPEwrMkhxApqDoFXjIFN0sFhcLEwrMnuxApqgEPglmJgk3QwqMXAsCa7qmxQa1Rl3/PXSy7D/w12zg0JXBEDm8h9MKzJbiob1DWrVcG+pWPwxrNdIJOV/FQtkwl4O6EHGtb3nAd3iIGBTU7Fi9ai4e1GyS6sCeodC55Fw/o10SgkEF3bPoS1X6bibMYNRNQNwJBuzRHZtJ6dW+2eeGtSchYH32zUrTGsSXS2BHWx1o2D0bpxsL2a6HEY2ESujcPgJCoxgprsg0Pi5Hi2DoHzw2QxhjWJxhOC2tXDjYFNjsWvbomFYU2i8JSgPnPNgMw74jzi01kY2OQwnGAmGoY12cwTghoATADyDSbkucFTZRnYRK6FYU028ZSgdkcMbLI3DoKLh2FNVmNQuz4GNtkVh8FFw7AmqzCo3QcDm+yHfWuxMKyp0hjU7oeBTSRtDGuqFAa1+2Jgk+g4DC4ahjVZjEHt/hjYJCYOgouHYU0WYVB7DgY2iYY9a9EwrKlCDGrPw8AmkhaGNZWLQe25GNhkOw6Ei4VhTWViUBMDm2zDsBYLw9oF6XQ6NG3aFG+8McVux2BQUzFnB3ZGRgZ69+6Ndu0i0b59e2zZstVhxyaSCj7P2gXNnTsPbdq0tVv9DGq6nzOfh+3l5YXZs2ejWbNmuHbtGjp1egzdu3eDVqu1+7HJNrbOEWO/+h72rF1Meno6Tp8+jW7dHrdL/QxqKouzethBQUFo1qwZACAwMBDVq/vj1q1bdj8uiYHD4GJhWLuYKVOmIDFxul3qZlBTRZw9JP7TTz/DaCxEcHCww45JNuBXt0TDsHYhO3fuRHh4AzRo0ED0uhnUZClnBfbNm7eQkJCA995baPdjEUkNr1m7kJSUo0hKSsK2bVtx924ODAYDfHyqYtKkSTbVy6CmynL0Nez8/HzExw/HhAnjERkZaZdjEEkZw9qFJCZONw+Br1u3Dr/99juDmpzGUYFtMpkwduwL6NixI4YOHSpq3WRfgiDY9P9B4DVrMw6DezAGNdnKEUPiP/74I5KSkrBz505ER0cjOjoaJ0+eFPUYZC+cYCYW9qxdVHx8vE37M6hJLPbuYUdFReH2bc7+JsusXrUSKSlHoNPpoFKpERUVhREjRsJLoXigbOL0aTh9Og1y+b0ofO/9RfD39wdQdE+LFcs/RGrqMSiVSvTo2QuDBg122Ln8E8PaAzGoSWzO/B42SZjNM7orv2/3Hj0xPH4EVCoVsrOzsWD+XGz7YhsGDhxUavn4ESPRu3efUretXr0Kd+/exZKlHyIrKwtvv/UmAgIC0KnTY5Vul604DO5hGNRkL87+WhcRAAQHB0OlUhX9YDJBEGS4cuVKpevJz8/HoYPJGDpsGLRaLWrXro1evXph7549IrfYMuxZexAGNdkbe9hkD7m5uSV+VigUUJQyrF1s65YkbN68Gfn5eahatSriR4wos2zS5k3YtHEjAgIC0LtPH3Ov+fLlSzAYDAgJCTWXDQkJxZYtSbadjJUY1h6CQU2OwsCmYmLNBh+bMLrE+kGD4xAXN6TM/foPiEX/AbHIyMhA8oH98POrVmq54cPjERwcDKW3N3799QQWzJ8PtUqNdpGRyMvLg7e3CnK53Fxeo9U+8MHBURjWHoBBTY7GwKYits7oLtp36bLlUKvV5rXl9ar/KTg4GPVDQrBk8SJMnZb4wPaIhg3Nf2/RoiW6deuGQ4cOol1kJFQqFQoK8mE0Gs2BrdPllGiHI/GatZtjUJOz8Bo2iXW7UbVaDY1GY14sDWsAMBqMFl+z/ueHydq160Aul+PihQvmdRcuXEC9evUsPraYGNZujEFNzsbAJkfKy83Fvn17kZOTA5PJhD8uXsTmzZvQvHmLB8rm5OQgNfUY8vPzUWg04sSJ4/jmm92IfPRRAIC3tzfat++A9es/gy4nB1euXMZXX+5Cl672eYhSRTgM7qYY1CQVHBInhxEEJB84gLWfrIFeb4Cvrw8iIx9F3JCiO9/NmjkDjRo3RmzsQBgNBmzauBHvLVwAAAgICMBTTz+DqKj25ur+9dzzWL58GRISRkOpVKJnz15O+doWAAgGg54fc90Mg9o+Ck0mnLykh59Ghrr+/JxbWYUmEy7eMOBuvgn+WhkD243pdDo88/RIHNXEoVBQWl2PzFSANroN+HjNWmg0GhFb6Ho4DO5mGNQkVRwS90B8RKZoGNZuhEFNUsfAJrIOw9pNMKjJVTCwPQkf5CEWhrUbYFCTq2FgewhmtWgY1i6OQU2uioFNZDmGtQtjUJOrY2C7N0GEP1SEYe2iGNTkLhjYboyzwUXDsHZBDGpyNwxsd8WL1mJhWLsYBjW5KwY2UdkY1i6EQU3ujoHtZtixFg3D2kUwqMlTMLDdCdNaLLzBsQtgUJOn4cM/3IMgCDb9m3E2+D3sWUscg5o8FXvYRPcwrCWMQU2ejoHt6jgMLhaGtUQxqImKMLBdGLNaNAxrCWJQE5XEwHZVTGuxMKwlhkFNVDoGNnkyhrWEMKiJysfAdi28N7h4GNYSwaAmsgwD24VwFFw0DGsJYFATVQ4DmzwNw9rJGNRE1mFguwJ2rcXCsHYiBjWRbRjYUifAtsdjMqyLMaydhEFNJA4GtnRxgpl4GNZOwKAmEhcDm9wdw9rBGNRE9sHAliBeshYNw9qBGNRE9sXAlhqmtVgY1g7CoCZyDAa2hNgyucw8yYwAhrVDMKiJHIuBTe6GYW1nDGoi52BgOx9ng4uHYW1HDGoi52JgOxkvWYuGYW0nDGoiaWBgkztgWNsBg5pIWhjYzsKutVgY1iJjUBNJEwPbCQTYOBvc2ScgHQxrETGoiaSNge1YnGAmHi9nN8BdMKiJXENxYF+8YcDNnEIAQG0/OQR+p9ctrF61EikpR6DT6aBSqREVFYURI0bCS6EoUS4rKwtrPv4Iv/12Erm5uQgMDEJc3BC0advWXObFFxJw+3YWZLKifq1cLsPHa9Y69HyKMaxFwKAmci0MbPfVvUdPDI8fAZVKhezsbCyYPxfbvtiGgQMHlSiXl5eLkNBQxI8YiWrVqiE19RjeW7gAs2e/g+C6dc3lXh4/Hu3aRTr6NB7AsLYRg5rINTGwHcDWu5D9vW9ubm6J1QqFAor7esrFgoOD7/1gMkEQZLhy5coD5QIDg9Cv35Pmn9u0aYvatWvj9JnTJcJaKhjWNmBQE7k2Bra92Tqju2jfsQmjS6wdNDgOcXFDytxr65YkbN68Gfn5eahatSriR4yo8EhZWVnIyLiE+vXrl1i/YvmH+HDZUgQF1cLAQYPQqlVrK87DdgxrKzGoidwDA1v6li5bDrVabf65rF51sf4DYtF/QCwyMjKQfGA//PyqlVveoNdj4YL5iGrfHuHhDczr/2/cSwgLC4dMJsPhH3/EvLlz8eZbb6NBgwbl1GYfnA1uBQY1kXvhLHH7EATB5gUA1Go1NBqNeakorIsFBwejfkgIlixeVGYZg16PefPmwtvbGwljEkpsa9z4YXh7e0OhUCA6Jgat27TG4R9/sP4FsQHDupIY1ETuiYHtnowGY6nXrIGioJ4/fx4MBgNe/ffEB2aM308mOC8yGdaVwKAmcm8MbJE5+BGZebm52LdvL3JycmAymfDHxYvYvHkTmjdv8UBZg8GA+QvmIT8/DxNfm/RAb/1GZiZ+++0k9Ho9DAYDDh06iJSUFLR10sxwXrO2EIOayDPwGrYLEwQkHziAtZ+sgV5vgK+vDyIjH0XckKEAgFkzZ6BR48aIjR2I02lpOJqSAoVCief+9ay5igGxsYiNHYi8vDx8tHo1rl69Crlchlq1amPCK68gIiLCOadmMOj5sbECDGoCgEKTCScv6eGnkaGuPz/nurtCkwkXbxhwN98Ef62MgV0JOp0Ozzw9EieCxqFQ5m11PbLCfDxydRE+XrMWGo1GxBa6Hg6DV4BBTeSZOCRuOwePgrs1hnU5GNREno2BTVLBsC4Dg5qIgPID+25+Ic5d1yOPVxPLwEdkioUX3krBoCaifypt0pmvWsCFv4wwmYC/7hpRpxp/nT5ApNuNEnvWD2BQE1Fp7u9hn79RFNQAkJ1byOHxUrFnLRaG9T8wqImoPDJBQI2qD/7aNBQCugKGNdkPx23+xqAmoorczS/Exb+MpW67rSuE1pv9n3/iKLh4+D8LDGoisszlWwaUNdqdxaHwUnAYXCwMawAvz9vGoCaiCtWp5gUflVBqhBgLgZz8Qoe3SdL4RWvRePww+N6jZ/HZ7p8tKsugJvJsWm8ZtN4yGAtNuJNXiCxdIe7kmVDcn76WXYgqKrlT20juyePD+qtD7FETUeXIZQL8NHL4aeQwFpqQnVuI69lGaJXsCZZk61A2X89iHh/W12/drbAMg5qIyiKXCaimlaOalj3q+zGqxePx16yjHqlf7nYGNREROZvHh/XALo+gVo2qpW5jUBMR2cBDJ5ht374dt2/fFrVOjw/rGn5a7FzwHCLq1SixvlOrMOz+YBSDmojIap751a25c+fhoYci0LFjJ0yZMhW7d+/G3bsVX3Itj8dfswaA8ODqOPLxS0hNu4QrN7JRN9APzRrU4rNriYhs4aF3Rfn+++9w69ZtHDyYjP3792P69EScPXsWLVu2xO7dX1tVJ8P6b4IgoHWjYGc3g4iI3EC1an6IiIjAlStXcfXqNVy+fBmFhdZ/D59hTUREJKLnnnseBw8eRPXq/ujUqROGDRuKDz5YBB8fH6vrZFgTEZFdCIJg0+VEV70UuW/fPvj4+ODxx7shJiYG7dtHQaPR2FSnx08wIyIie/HMCWbnzqXjf/9bi8DAmli5cgUeeaQZevToiVmzZlldJ3vWREREImvatClCQkLQoEEDhIaGYt26dUhJScHrr79uVX0OC+tXPruC70/lOOpwJXRqpMX8YbWccmwiotJ4xO9EATbOBhetJQ6VmPgmkpOT8csvv+ChhxogJiYGixcvRnR0jNV1Oiysvz+VA73RBIXcsa++3mhy2huCiKgs/J3ovrKzs/Hiiy8iJiYaNWrUqHgHCzh0GFwhF3BgSoQjD4mYGacdejwiIkvxd6J7mj9/nvnvf/31F6pXr25znZxgRkREdlE8G9yWxRXl5uZi/PgJCAqqhQYNHkJQUC2MHz8BOTnWj2gwrImIyE48czb466+/gbNnz+CLL7YhLe0Utm//Aunp6ZgyZarVdXI2OBER2YeHPiPzyy+/xKFDh+DvXw0AULNmTaxZ8zGiotpjwYL5VtXJnjUREZGITCYTZLKSnzQEQQaTyWR1nQxrIiKyE88cBu/RoweeeupppKb+hBs3buDYsVQ8++yz6Nmzp9V1MqyJiMguBBH+uKJZs2aibt1g9OzZEw89FIEnnngCderUxsyZM6yuk9esiYjITmx8RKaLhnWVKlWwePFifPDBB7hx4wZq1Khh88x2hjUREZEdCIKAgIAAUepiWBMREdmoXr36FvWeL168YFX9kg/rKf+ZiK+/+hIZf/6Bb/Ylo+kjzZzdJCKbZWRkYMyYMcjMvAEvLzkmTnwNAwb0d3azSOLy8vKQMOpZnEk7BZVajRo1AjDnv/MRGhbu7KaVTrBxGNyFbory6afr7Fq/5MO6d9/+eGHceDzZu4ezm0IkGi8vL8yePRvNmjXDtWvX0KnTY+jevRu0Wq2zm0YSN/KpZ9Dl8e4QBAGrV36IV8ePQ9IXu5zdrFLZOknMmn1Xr1qJlJQj0Ol0UKnUiIqKwogRI+GlUDxQVqfTYcXyD5GaegxKpRI9evbCoEGDLd7+T9OnJ2LPnm8BAHPmzMHkyZMr3fbySH42eFT7Dqhdu46zm0EkqqCgIDRrVjRKFBgYiOrV/XHr1i0nt4qkTqVSoWu3Hubh1lat2+LPP/9wcqukpXuPnliw8H2s+eR/+O/cebh48QK2fbGt1LKrV6/C3bt3sWTph3jzrRnY8+23+P777yze/k9nzpyBwWAAAHzwwWKxT0v6PWsid/fTTz/DaCxEcHCws5tCLmbl8qXo0esJZzejbCINg+fm5pZYrVAooCilpwyg5PvIZIIgyHDlypUHyuXn5+PQwWS8PWMmtFottFotevXqhb179qBTp8cq3H6/mJhoREfHIDw8HLm5uYiPH1Fq+9at+5+FJ18Sw5rIiW7evIWEhAS8//57zm4KuZj3FszFhfPnsGHedmc3pUxi3W10bMLoEusHDY5DXNyQMvfbuiUJmzdvRn5+HqpWrYr4EQ8G5+XLl2AwGBASEmpeFxISii1bkizafr/Vq1dj27ZtuHjxInbv3o1HHmlq6WlahGFN5CT5+fmIjx+OCRPGIzIy0tnNIRey9IP3sWvHdmxI2gaNRuPs5tjd0mXLoVarzT+X1asu1n9ALPoPiEVGRgaSD+yHn1+1B8rk5eXB21sFuVxuXqfRas29+Iq238/b2xtxcXEAgNu3szzvmjWROzKZTBg79gV07NgRQ4cOdXZzyIUsW/IBtiRtwvrNW+Hr6+fs5pSreBTclgUA1Go1NBqNeakorIsFBwejfkgIlixe9MA2lUqFgoJ8GI1G8zqdLsf8oaCi7eWx5U5lZZF8WE985WW0eqQRrly+hGFxAxDVtrmzm0Rksx9//BFJSUnYuXMnoqOjER0djZMnTzq7WSRxly9fwpvTXkd29m0M6t8Hjz/WAU907+zsZpVJCs+zNhqMpV6zrl27DuRyOS5euGBed+HCBdSrV8+i7Y4m+WHw/87ntTxyP1FRUbh9m7O/qXJq166DKzeynd0MiwkCILN9fpnF8nJz8cOPP6Bdu0hoNBr8+ccf2Lx5E5o3b/FAWW9vb7Rv3wHr13+Gl1+egKzsLHz15S4MGTrMou2OJvmwJiIisoggIPnAAaz9ZA30egN8fX0QGfko4oYUXWqaNXMGGjVujNjYgQCAfz33PJYvX4aEhNFQKpXo2bNXiZneFW13JIY1ERHZhWDjdPDK9qxVKhWmTpte5vbX35hS4meNRoPx418ps3xF28uyYsVKjBr1/APrX355PN57b2Gl6wNc4Jo1ERG5Js98mjWwePFibNtW8kYsr7zyqk3zUtizJiIiuxBsvCmKGBPMnGHTpo3o1+9JVK9eHdHR0XjttdeQmpqKbdu2Wl0nw5qIiEhEDRo0wNq1nyA+fgQ6dozBqVNp+OKLbfD19bW6ToY1ERHZhUwATJ7x0C38+uuvJX729vbGmDFjsGzZMqxcuQIZGRnIyMhA06bW3dmMYU1ERHbh6AlmzhQdHQNBEGAymR7Y1rdvPwBFw/q3bt20qn6GNRERkY3sfd8EhjUREdmFJ/Ws7c2hYa03mhAz47QjDwm90QSFnP/iRCQ97v47USYIMHngbPDLly9j5syZ+Pnnn3Hnzt0S244f/8WqOh0W1p0aafH9qRxHHc5MIRfQqZHW4cclIiqPJ/xOtDVqXTOqgdGjR0Ot1mD8+PGiPRXNYWE9f1gtRx2KiEjy+DvRff388y84dy4dSqVStDp5BzMiIrILsR6R6WoaNWqEa9euiVonJ5gREZFdeOoEs759+2LYsGF4/vlRqFkzoMS2J554wqo6GdZERGQXnjrBbOXKlQCAefPmlVgvCALDmoiISApOnDguep0MayIisgtPHQa3B4Y1ERHZhSd9datHj574+uuvANy79WhpDhzYb1X9DGsiIrILm2d0u1BaP//8c+a/v/DCWNHrZ1gTERHZaPDgwea/Dx8+XPT6Gdb/oDeakHnHiICqct6ilIjIRrZes3alnvWuXbssKsfZ4CIoMJjw191C3MkrRFiAgoFNRGQDAZ4zDj5p0uQKy/CrWyLRestQy0+OK7eNOJepZ2ATEZFF7PF1rX9iWN+nRhU5ADCwiegBBXoDNu/7Fb+fv4aH6tZAfM+WkMl41+ayyDxoGNzeGNalYGATUTG9wYj9P53H2l3HsP3AbzAYC83bJizYjs9nxuPxdg85sYXS5UnXrO2NYV0GBjaR59IbjPg+9Ry2fn8SO5J/w63s3DLLDZ68Fj+s/j80Cqnp4FZKH39jiodhXQ4GNpHnsDSg71doMmHmR3uw9s1hdm4heTKGdQUY2ETuLe3idSzacKhSAX2/o79niNwq9yDYelcU3m/UjGFtAQY2kXtavPEQpi77GsbCwooLl6NaVbVILXIvnGAmHk5jtFCNKnLU8pOjwACcy9RDbzQ5u0lEZIMfT1zElGVf2RzUANC5TbgILXI/xR1rWxYqwrCuBAY2kftY/+0vKCy0/T0sCMCr8Z1EaBFR2RjWlcTAJnIPZ/64IUo9Xdo0gL+PRpS63A171uJhWFuBgU3k+sKDq4tST2znR0Spxx3JINi8UBGGtZUY2ESu7aknWkMmsy0MvOQyPNGhkUgtIiobw9oGDGwi19W6cTD+83Rnm+ro3CacQ+Dl4DC4eBjWNmJgE7mufh0fhkalsHr//p2aitga98OwFg+/Zy0Cfg+byPWkXbyOvq98DF2e3qr9FV5y9I5uLHKr3Iuj7w2u1+uxatVKnDh+HHfuZMPf3x/9nuyPLl26PlD2RmYmJkwYf9/+BWjZshUmTf4PACBx+jScPp0GufxeVL73/iL4+/tX+lRsxbAWCQObyHWkXbyOPhM+wvVbd62u47HWYbwZisQYjUZU8/PD1GnTERgYiDNnzmD2rBmoXr06mjdvUaJsjYAArP3fOvPPBr0eY8aMQocO0SXKxY8Yid69+zii+eViWIuIgU0kfWIENcAhcEsIglB0y1Ermf7eNze35G1gFQoFFIoHL1+oVCoMGXrvHu0RERFo0qQpTv3++wNhfb8jKUdQWGhCu8hIq9trTwxrkTGwiaRLrKDmELhlbL7uLAAmAGMTRpdYPWhwHOLihlS4e0FBAc6ePYPo6JgKy+7buwcxMTFQKpUl1idt3oRNGzciICAAvfv0QadOj1XmDETDsLYDBjaR9IgV1ADwZMeHOQRuAVsvWQNFYb102XKo1fde79J61Q/sZzJh2bKlqFWrVoW95czM6zh+/ATiRzxVYv3w4fEIDg6G0tsbv/56Agvmz4dapXZK75uzwe2Es8SJpKOyQd3j0QiMHxpd6jZfrQqJo7uL2TyqgFqthkajMS8VhbXJZMLKFctx5fIlTJw4CTJZ+VG3b98+hIaGIiQkpMT6iIYNodFq4eXlhRYtWqJbt244dOigradjFfas7Yg9bCLnq2xQ94xqiE8Sh8Jb6YW2Tepi+vLdOPvnX/BWeCG6RQjmT+iHuoF+9m20m5DZOAxuEoDKPmbFZDJh1coVOHv2DKZOS4RGqy23fGFhIb7btxf9B8RWWLct199txbC2MwY2kfPYEtQA0Cf6YfSJfhh3dPlQesnN68kytk4wsybpV61aibS0U5g2/U1UqVKlwvLHj/+CO3fuIPq+WeA5OTlISzuFJk2aQuHlhZO/ncQ33+zGmISxlW6TGPg/zwEY2ESOZ2tQ/1NVjbfYzSM7yMy8jt1ffwWFQoEXxiaY18d07IjRo8dg1swZaNS4MWJjB5q37d27B5GPRj3QAzcaDNi0cSPeW7gAABAQEICnnn4GUVHtHXMy9xEMBj0vpjrIjbtGXLlthNILDGwXVGgy4eQlPfw0MtT15+dcKRMzqKnydDodnnl6JJSd34HgpbK6HpMhDwX7JuHjNWuh0Xj2bV05wcyBOOmMyP4Y1NIhE2xfqAjD2sEY2ET2w6CWFkGEhYowrJ2AgU0kPgY1uTOGtZMwsInEw6CWpqI7mAk2LM4+A+lgWDsRA5vIdgxq6eIjMsXDsHYyBjaR9RjU0iaDjRPMnH0CEsLXQgIY2ESVx6AmT8KwlggGNpHlGNSugcPg4mFYSwgDm6hiDGrXIYjwh4owrCWGgU1UNga1a+FNUcTDsJYgBjbRgxjU5MkY1hLFwCa6h0Htomy9Xs2etRnDWsIY2EQMalfGCWbiYVhLnDMDOyMjA71790a7dpFo3749tmzZ6rBjk2vQ6XRo2rQp3nhjil3qZ1ATFeH/aBfgrOdhe3l5Yfbs2WjWrBmuXbuGTp0eQ/fu3aC977mv5Lnmzp2HNm3a2qVuBrXrK75tqC37UxH2rF2EM3rYQUFBaNasGQAgMDAQ1av749atW3Y/LrmG9PR0nD59Gt26PS563Qxq98DZ4OJhWLsQZw6J//TTzzAaCxEcHOywY5K0TZkyBYmJ00Wvl0HtPkp75GVlFyrCsHYxzgjsmzdvISEhAe+9t9DuxyLXsHPnToSHN0CDBg1ErZdBTVQ6/g93QY68hp2fn4/4+OGYMGE8IiMj7XIMcj0pKUeRlJSEbdu24u7dHBgMBvj4VMWkSZOsrpNB7X5sndHNS9b38H+5i3JEYJtMJowd+wI6duyIoUOHilo3ubbExOnmIfB169bht99+Z1DTA2SCABnTWhQcBndh9h4S//HHH5GUlISdO3ciOjoa0dHROHnypKjHIGJQuy9+z1o8/N/u4uzZw46KisLt25z9TeWLj4+3el8GNZFl2LN2A7zTGbkiBrX7Y89aPAxrN8HAJlfCoPYMMhEWKsLXwo0wsMkVMKiJKo9h7WYY2CRlDGrPwmFw8TCs3RADm6SIQe15iu8NbstCRRjWboqBTVLCoPZM7FmLh2HtxhjYJAUMaiLbMazdHAObnIlB7dn41C3xMKw9AAObnIFBTbB1CJxhbcaw9hAMbHIkBjUBgCDCHyrCsPYgDGxyBAY1kfgY1h6GgU32xKCmf+I1a/HwHeKBHPk8bPIcDGq6n6OfZ63X67Fq1UqcOH4cd+5kw9/fH/2e7I8uXbqWWj5x+jScPp0Gufze/8H33l8Ef39/AIBOp8OK5R8iNfUYlEolevTshUGDBlt9Prbgu8RDMbBJTAxqKo2jw9poNKKanx+mTpuOwMBAnDlzBrNnzUD16tXRvHmLUveJHzESvXv3KXXb6tWrcPfuXSxZ+iGysrLw9ltvIiAgAJ06PVa5homAw+AejEPiJAYGNdlbbm4udDqdedHr9aWWU6lUGDJ0GIKCgiAIAiIiItCkSVOc+v33Sh8zPz8fhw4mY+iwYdBqtahduzZ69eqFvXv22Ho6VuG7xcOxh022YFBTeQTYdsvQ4tngYxNGl1g/aHAc4uKGVLh/QUEBzp49g+jomDLLJG3ehE0bNyIgIAC9+/Qx95ovX74Eg8GAkJBQc9mQkFBs2ZJkxZnYju8YYmCTVRjUVBFbH3NZPNa3dNlyqNVq83qFQlHxviYTli1bilq1aqFdZGSpZYYPj0dwcDCU3t749dcTWDB/PtQqNdpFRiIvLw/e3irI5XJzeY1Wi9zcXBvOyHocBicAHBKnymFQkyOp1WpoNBrzUlFYm0wmrFyxHFcuX8LEiZMgk5UedRENG0Kj1cLLywstWrREt27dcOjQQQBFQ+oFBfkwGo3m8jpdTokPDY7EsCYzBjZZgkFNlnLGgzxMJhNWrVyBs2fP4I0p06DRaivR3nsHrF27DuRyOS5euGBed+HCBdSrV6/yjRIBw5pKYGBTeRjUVBnOCOtVq1YiLe0UpkydjipVqpRZLicnB6mpx5Cfn49CoxEnThzHN9/sRuSjjwIAvL290b59B6xf/xl0OTm4cuUyvvpyF7p0fdzal8MmfAfRA3gNm0rDoKbKkgkCZDZMMDNVct/MzOvY/fVXUCgUeGFsgnl9TMeOGD16DGbNnIFGjRsjNnYgjAYDNm3ciPcWLgAABAQE4Kmnn0FUVHvzfv967nksX74MCQmjoVQq0bNnL6d8bQsABINBz64TlerGXSOu3DZC6QUGNoBCkwknL+nhp5Ghrr9nBRCDmipDp9PhmadHotmwhZArrb/GayzIxfHPxuPjNWuh0WhEbKHr4TA4lYlD4gQwqMl6zhgGd1cMayoXA9uzMajJFgxr8TCsqUIMbM/EoCZbyURYqAhfC7IIA9uzMKiJpIVhTRZjYHsGBjWJRRAEmxcqwrCmSmFguzcGNYnK1uvVzGozvsOo0jzpe9jGQhOuZhlhLARMf9+pOCe/EH/8ZQAAVFEJ8NfKy6vCZTCoiaSL7zKyiqcEtt5ows2cwvvWAVm5hX//3T3CmkFN9uDo51m7Mw6Dk9U8YUhcpZBBoyz7N0b1Kq7/FmJQk73IBNsXKuL6v2nIqTwhsAN9Su85e3sBvmrXfgsxqMmeBBH+UBHX/k1DkuDugV1FVXrvuqaP3KVnqzKoiVwHw5pE4e6BfX/v2tV71QxqcgTewUw8rvvbhiTHnQO7qHd972dX7lUzqMlReM1aPAxrEpU7B3bNv3vXMsF1e9UManIk9qzF45q/cUjS3DWwq6rk8NMICK7mmr1qBjWR6+K7kOzCXb+HXddf4ewmWIVBTc5g6y1DXfFDsb2wZ0124649bFfDoCZnEURYqAjDmuyKge1cDGoi98CwJrtjYDsHg5qcjbPBxcOwJodgYDsWg5qkgLPBxcOwJodhYDsGg5qkgs+zFg/DmhyKgW1fDGoi98SwJodjYNsHg5qkhtesxcOwJqdgYIuLQU1SJMDGa9bOPgEJYViT0zCwxcGgJinjd6zFwbAmp2Jg24ZBTeQZ+I4lp3PXW5PaG4OapE4mCJDZMKPbln3dDXvWJAnsYVcOg5pcAb9nLR6GNUkGA9syDGpyFQxr8TCsSVIY2OVjUBN5JoY1SQ4Du3QManI17FmLh2FNksTALolBTa5IJsJCRfhakGSVF9i5BYXI0hU6sXWOw6AmIr6bSdJK+1pXvt6EC38ZYDIBEUoFvL3cd6yMQU2uzNaHcfBBHvfwHU2S98/APntND2MhUNzHztIVoqaP3HmNsyMGNbk6W687V3ZfvV6PVatW4sTx47hzJxv+/v7o92R/dOnS9YGyWVlZWPPxR/jtt5PIzc1FYGAQ4uKGoE3btuYyL76QgNu3syCTFQ1Cy+UyfLxmrfUnZAO+q8kl1KgiR77ehJs5JYe+s3KNbhnWDGpyB7Y+jKOy+xqNRlTz88PUadMRGBiIM2fOYPasGahevTqaN29RomxeXi5CQkMRP2IkqlWrhtTUY3hv4QLMnv0OguvWNZd7efx4tGsXaf1JiITXrMkl3M0rxK1SrlHn6YF8g3tNPmNQE5WUm5sLnU5nXvR6fanlVCoVhgwdhqCgIAiCgIiICDRp0hSnfv/9gbKBgUHo1+9JVK9eHTKZDG3atEXt2rVx+sxpe5+OVfjuJsnTG+9doy6NOw2FM6jJnYg1DD42YXSJ9YMGxyEubkiF+xcUFODs2TOIjo6psGxWVhYyMi6hfv36JdavWP4hPly2FEFBtTBw0CC0atXa8hMQEd/hJHkyAVArBOgKSk/r2zr3GAo/f/kmg5rcilgTzJYuWw61Wm1er1AoKtzXZDJh2bKlqFWrFtpFlj+MbdDrsXDBfES1b4/w8Abm9f837iWEhYVDJpPh8I8/Yt7cuXjzrbfRoEGDcmqzD77LSfLkMgHhNRUoMJiQlVv0la1c/b3gzjcUfZVLrXTdqzomkwkvzd3GoCa3YuujLov3VavV0Gg0Fu9nMpmwcsVyXLl8CVOnTjdPECuNQa/HvHlz4e3tjYQxCSW2NW78sPnv0TExOJJyGId//IFhTVQepZeAgKpyBFSVm4P7r7tG6I1Art4EtdLZLbTeL2euYP9P5ywqy6AmKpvJZMKqlStw9uwZTJ2WCI1WW2ZZg16P+fPnwWAw4LVJk+FVQY9dJjivQ+C6XRHyaMXB3aiWEk1qe8Ff69rD4H9eu21ROQY1uZLi2eC2LJW1atVKpKWdwpSp01GlSpUyyxkMBsxfMA/5+XmY+NqkB4bWb2Rm4rffTkKv18NgMODQoYNISUlBWyfNDOc7nlxeeUNcrqJ2gE+FZRjU5Goc/T3rzMzr2P31V1AoFHhh7L0h7ZiOHTF69BjMmjkDjRo3RmzsQJxOS8PRlBQoFEo8969nzWUHxMYiNnYg8vLy8NHq1bh69Srkchlq1aqNCa+8goiICOtPyAaCwaB3r++9ELkgk8mEds+8j9N/3Ch1O4OaXIlOp8MzT4/E4FeWQuGtrniHMujzc7Fx/lh8vGZtpa5ZuyPX75IQuQFBEPDZjHjUqlH1gW3DurdgUJNLKp4NbstCRfjuJ5KIBnVrIHnFi0jadwKHjl9EoH8V9GzfCJ1bhzu7aURWEWy8gxmz+h6GNZGE1PDTYvSARzF6wKPObgqRzcT66hZxGJyIiEjy2LMmIiK7cPRscHfGsCYiIruQCQJkNiSuLfu6G4Y1ERHZBXvW4uE1ayIiIoljz5qIiOyCPWvxMKyJiMguBNgY1qK1xPUxrIkskJ2djXPn0nH9+nUY9Hp4KRSoWbMmwsLC4eNT8X29iTyRDAJkNkSuLfu6G4Y1URmysrKwZ8+3+G7fXly9erXMckFBQejcpSu6dOkKX19fB7aQiDwFw5roPgUFBdiwYT127tgBo9GAhg0boXPnrggLD0edOsFQKhQo0Otx6VIGzqWnIzX1GD77dB02rF+P3n36IC5uCJRKF364NpFIeM1aPAxron84d+4cFr2/EJcuXUJ0TEcM6B+LkNDQUssGBgaiVavWGDQ4DhfOn8eWrUn4YttWHDuagnEvjUdYWJiDW08kLQxr8fCrW0R/++3kSSROn4qcHB0m/+cNTJjwaplBfb+Q0FBMmPAqJk9+HTk5OiROn4rfTp60c4uJyFMwrIlQ1KOePXsWqlXzx5x3/ou2bdtZVU/bdpGY885/i+qZMwvnzp0TuaVErkMm2L5QEYY1ebyCggIsen8h1Go1pie+hYCAAJvqCwgIwPTEt6BSqbHo/YUoKCgQqaVErqVoGNyW51k7+wykg2FNHm/DhvW4dOkSEsa+YHNQFwsICEBCwlhcunQJGzasF6VOIlcjiLBQEYY1ebSsrCzs3LED0TEdrR76LkvbdpHoEB2DXTt3ICsrS9S6icizMKzJo+3Z8y2MRgMG9I+1eJ+1a9eiSpUq2L59e4VlBwyIhcFgwN69e2xpJpFLKp4NbstCRRjW5NG+27cXDRs2snjW98WLF/Hxxx+jXTvLeuGhoWGIaNgQ+xjW5IEEGyeXMazvYViTx8rOzsbVq1fRqlVri8oXFhbixRdfxNy5cyt105NWLVvj6tWruHPnjrVNJXJJtk0uK1qoCMOaPNa5c+kAgLDwcIvKL1q0CI8++ihatmxZqeMU1198PCKiyuIdzMhjXb9+HQBQp05whWVPnjyJbdu24euvv670cYrrv3btWqX3JXJlvIOZeBjW5LEMej0AQKlQVFj20KFDuHjxIpo3bw6gKHjHjRuHq1evYtSoUeXuq1QqShyPyFPIYNvwLYd+72FYk8fy+jukCywI0VGjRpUI5Z49e+LFF19E3759K9y3oEBf4nhERJXFDy7ksWrWrAkAuHQpw67HKa4/MDDQrschkhp+dUs87FmTxwoL+3viV3q6xTPCi3311VcWlz2Xnl7ieESewtYZ3ZwNfg971uSxfHx8EBQUhNTUY3Y9TupPxxAUFISqVava9ThEUsMHeYiHYU0e7bHOXZCWdgoXzp+3S/3nz5/D6bQ0dO7S1S71E5FnYFiTR+va9XHI5V7YsjXJLvVv2ZIELy8vdGFYkwfiNWvxMKzJo/n6+qJ3nz5IPrAfKSlHRK075chhHEw+gCd694Gvr6+odRO5Aoa1eBjW5PHi4oagTp06WLZ0CTIzM0WpMzMzE8uWLUGdOsGIixsiSp1ErkYQ4Q8V4Wxw8nhKpRLjXhqPxOlT8WbiNExPfMum51pnZmYicfpU5OXlYfJ/3qjUfcSJyHp6vR6rVq3EiePHcedONvz9/dHvyf5lXobS6XRYsfxDpKYeg1KpRI+evTBo0GCLtzsSe9ZEAMLCwjB58uu4desmJk+aaPWQeMqRw5g86d+4ffsWJk9+HWFhYSK3lMh1OHo2uNFoRDU/P0ydNh1rPvkfXnhxHNZ+sga//PJzqeVXr16Fu3fvYsnSD/HmWzOw59tv8f3331m83ZEY1kR/e7hJEyS++Ta0Wg3mzJ6J+fPnWjxL/Pz5c5g/fy7mzJkFrVaLxDffxsNNmti5xUTS5uhr1iqVCkOGDkNQUBAEQUBERASaNGmKU7///kDZ/Px8HDqYjKHDhkGr1aJ27dro1asX9u7ZY9F2R+MwONE/hIWF4Z1352LDhvXYtXMHDiYfQETDhmjVsjXCwsNRp04wlEoFCgr0uHQpA+fS05H60zGcTkuDl5cX+j3ZH3FxQzj0TQQgPy9XlP1zc0vWo1AooLDg9r0FBQU4e/YMoqNjHth2+fIlGAwGhITce5Z9SEgotmxJsmi7ozGsie6jVCoxYsRI9O3bD3v37sG+vXvw+eefllm+Vq1aGD48Hp27dOWsbyIAXl5e8PPzw3tv/p/NdalUKoxNGF1i3aDBcRVO3DSZTFi2bClq1aqFdpGRD2zPy8uDt7cKcrncvE6j1Zo/GFS03dEY1kRl8PX1xYABsRgwIBbZ2dk4f/4crl27BoNeDy+FAoGBgQgLC+edyYjuo1Qq8cHipTAYDDbXZTKZHrjtaEW9apPJhJUrluPK5UuYOnU6ZLIHr/iqVCoUFOTDaDSaA1mny4FarbZou6MxrIks4OPjg+bNWzi7GUQuQ6lUOuVykMlkwqqVK3D27BlMnZYIjVZbarnatetALpfj4oULCAsvum//hQsXUK9ePYu2OxonmBERkdtYtWol0tJOYcrU6ahSpUqZ5by9vdG+fQesX/8ZdDk5uHLlMr76che6dH3cou2OJhgMepNTjkxERCSizMzrePGFsVAoFJDJ7l1rjunYEaNHj8GsmTPQqHFjxMYOBFD0Perly5ch9VjR96h79uyFQYPjzPtVtN2RGNZEREQSx2FwIiIiiWNYExERSRzDmoiISOIY1kRERBLHsCYiIpI4hjUREZHEMayJiIgkjmFNREQkcQxrIiIiiWNYExERSRzDmoiISOIY1kRERBLHsCYiIpI4hjUREZHEMayJiIgkjmFNREQkcQxrIiIiiWNYExERSRzDmoiISOIY1kRERBLHsCYiIpI4hjUREZHEMayJiIgk7v8BT0lT/ATOhmAAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Certified terminal flows on the network (house style via tabench.viz).\n", "display(viz.plot_network_flows(net, final.link_flows))\n", "\n", "# Emitted flows vs the Wardrop UE recomputed above (off-diagonal == not settled).\n", "display(viz.plot_flow_scatter((\"Wardrop UE\", ref_flows), {\"dtd-link\": final.link_flows}))" ] }, { "cell_type": "markdown", "id": "69bd4a6b", "metadata": {}, "source": [ "## Takeaways & pointers\n", "\n", "- **Certified, not self-reported.** The gap came from `Evaluator`; the per-day node-balance invariance was certified from the emitted flows, not the self-report.\n", "- **The day-to-day signature is the point.** A UE/SUE *solver* gives you the fixed\n", " point; a day-to-day *model* gives you the adjustment path to it.\n", "- **Where next.** the route-swap paradigm [`dtd-swap`](01-dtd-swap.ipynb); the route-space projected gradient [`dtd-friesz`](04-dtd-friesz.ipynb); the lineage in the\n", " [model compendium](../../docs/MODELS.md)." ] } ], "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": null, "track": "day-to-day", "unit": "dtd-link" } }, "nbformat": 4, "nbformat_minor": 5 }