{ "cells": [ { "cell_type": "markdown", "id": "62c2fe9a", "metadata": {}, "source": [ "# `dtd-stochastic` — Cascetta's (1989) stochastic-process day-to-day model\n", "\n", "**What.** The benchmark's first genuinely stochastic day-to-day model: each day a finite population of travellers samples routes multinomially from the Dial logit fractions at the perceived costs, and memory smooths toward the realized experienced costs. The daily flows never converge; the emitted flow is the burnt-in time average.\n", "\n", "**Why it is in the benchmark.** It witnesses honestly that the stationary MEAN is only approximately SUE at finite population: the certified residual floors at O(bias + SE) (tolerances 0.05, not 1e-5), the daily flows keep an O(1/√N) deviation (Davis & Nihan 1993), and the time average converges by the ergodic theorem. 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: Cascetta, E. (1989), *Transportation Research Part B* 23(1).\n", "\n", "**Canon.** `[cascetta1989stochastic]`, [docs/REFERENCES.md](../../docs/REFERENCES.md) / [docs/references.bib](../../docs/references.bib)." ] }, { "cell_type": "markdown", "id": "3878a773", "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": "a185c40a", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:46:38.092534Z", "iopub.status.busy": "2026-07-21T13:46:38.092260Z", "iopub.status.idle": "2026-07-21T13:46:40.148848Z", "shell.execute_reply": "2026-07-21T13:46:40.147848Z" } }, "outputs": [], "source": [ "# Setup. `dtd-stochastic` 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", " CascettaStochasticProcessModel,\n", " Evaluator,\n", " RngBundle,\n", " Trace,\n", " two_route_scenario,\n", " viz,\n", ")" ] }, { "cell_type": "markdown", "id": "d4cce93b", "metadata": {}, "source": [ "## The scenario\n", "\n", "The built-in two-route logit-SUE anchor (demand 4, dispersion θ=0.5): route A cost 2+f_A,\n", "route B cost 1.5+2 f_B. Its rest point is the binary-logit stochastic user equilibrium,\n", "recomputed analytically in the certify cell — NOT the deterministic Wardrop UE." ] }, { "cell_type": "code", "execution_count": 2, "id": "05366ec9", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:46:40.153162Z", "iopub.status.busy": "2026-07-21T13:46:40.152888Z", "iopub.status.idle": "2026-07-21T13:46:40.158250Z", "shell.execute_reply": "2026-07-21T13:46:40.157551Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "scenario : tworoute\n", "content hash : 9b98e58b339b702f…\n", "links : 4 (tail→head: 1->3, 3->2, 1->4, 4->2)\n", "total demand : 4.0\n", "task : logit SUE, θ=0.5\n" ] } ], "source": [ "scenario = two_route_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 : logit SUE, θ=0.5\")" ] }, { "cell_type": "markdown", "id": "c36a839a", "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": "a09a3af7", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:46:40.161770Z", "iopub.status.busy": "2026-07-21T13:46:40.161594Z", "iopub.status.idle": "2026-07-21T13:46:42.192295Z", "shell.execute_reply": "2026-07-21T13:46:42.191242Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "model : dtd-stochastic\n", "days simulated : 3000 (6000 shortest-path calls)\n", "emitted flows : [2.296176 2.296176 1.703824 1.703824]\n", "self-reported residual: 7.201e-03 (provenance only)\n" ] } ], "source": [ "bundle_trace = Trace()\n", "model = CascettaStochasticProcessModel(\n", " smoothing_weight=0.3, population_scale=25.0, burn_in_days=500\n", ")\n", "model.solve(scenario, Budget(iterations=3000), 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 residual: {final.self_report['sue_fixed_point_residual']:.3e} (provenance only)\")" ] }, { "cell_type": "markdown", "id": "d1355163", "metadata": {}, "source": [ "## Certify (P1) — a stationary distribution, honestly\n", "\n", "The harness recomputes the Dial-STOCH residual of the burnt-in time average. Because the\n", "population is finite, the residual floors at O(bias + SE) — the tolerances are 0.05, not\n", "machine ε, and the notebook certifies exactly that honest floor plus the persistent daily\n", "variability that makes equilibrium a distribution, not a fixed point." ] }, { "cell_type": "code", "execution_count": 4, "id": "3442caaa", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:46:42.196358Z", "iopub.status.busy": "2026-07-21T13:46:42.196091Z", "iopub.status.idle": "2026-07-21T13:46:42.204265Z", "shell.execute_reply": "2026-07-21T13:46:42.203508Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "certified SUE residual : 7.201e-03 (floors at O(bias+SE), not machine ε)\n", "feasible : 1\n", "tail daily deviation : 0.182 (persists at finite N)\n", "stationary window_days : 2500 (days backing the average)\n" ] } ], "source": [ "from scipy.optimize import brentq\n", "evaluator = Evaluator(scenario)\n", "metrics = evaluator.evaluate(final.link_flows)\n", "residual = metrics[\"sue_fixed_point_residual\"]\n", "print(f\"certified SUE residual : {residual:.3e} (floors at O(bias+SE), not machine ε)\")\n", "print(f\"feasible : {metrics['feasible']:.0f}\")\n", "assert metrics[\"feasible\"] == 1.0\n", "assert residual < 0.05 # finite-population floor — NOT solver precision\n", "assert metrics[\"relative_gap\"] > 0.01\n", "\n", "# The burnt-in TIME AVERAGE lands within 0.05 of the analytic logit SUE (θ=0.5).\n", "def _resid(f_a):\n", " c_a, c_b = 2.0 + f_a, 1.5 + 2.0 * (4.0 - f_a)\n", " return f_a - 4.0 / (1.0 + np.exp(0.5 * (c_a - c_b)))\n", "f_a = brentq(_resid, 0.0, 4.0, xtol=1e-12)\n", "ref_flows = np.array([f_a, f_a, 4.0 - f_a, 4.0 - f_a])\n", "assert np.allclose(final.link_flows, ref_flows, atol=0.05)\n", "\n", "# DISTINCTIVE: equilibrium is a STATIONARY DISTRIBUTION, not a fixed point. The daily\n", "# flows keep an O(1/√N) deviation from the mean even while the time-average residual is\n", "# small; the deviation shrinks as the population grows (Davis & Nihan 1993).\n", "dev_tail = [s.self_report[\"daily_flow_deviation\"] for s in list(bundle_trace)[-100:]]\n", "print(f\"tail daily deviation : {np.mean(dev_tail):.3f} (persists at finite N)\")\n", "assert np.mean(dev_tail) > 0.05\n", "print(f\"stationary window_days : {final.self_report['window_days']:.0f} (days backing the average)\")\n", "assert final.self_report[\"window_days\"] == 2500.0\n", "# Honesty (P1): the self-reported residual equals the harness certificate.\n", "assert np.isclose(\n", " final.self_report[\"sue_fixed_point_residual\"], residual, rtol=1e-9, atol=1e-12\n", ")" ] }, { "cell_type": "markdown", "id": "971638f2", "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": "87b9c5a8", "metadata": { "execution": { "iopub.execute_input": "2026-07-21T13:46:42.207815Z", "iopub.status.busy": "2026-07-21T13:46:42.207508Z", "iopub.status.idle": "2026-07-21T13:46:42.466361Z", "shell.execute_reply": "2026-07-21T13:46:42.465271Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAc0AAAHXCAYAAADeCAHgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABJRklEQVR4nO3dd3xT5f4H8E92k3Q3LdDSQkHgioKL0QnqLVARZCgCDtQrIMOr6BVFHNerl6Go16sUEHDDFSxDVBQQHGxFkOFAEfixCqXpSNM2bTOe3x+1oROSdJyMz/v16utF0pOTb09DPn2e55tzZDabVYCIiIguSS51AURERL6CoUlEROQihiYREZGLGJpEREQuYmgSERG5iKFJRETkIoYmERGRixiaRERELmJoEhERuYihSdQKZsyYgcmTJ7u07fLly5GWltbCFXnm3XffQ9eu3RAbG4cDBw5IXQ5Rq1NKXQAR+Qar1YonnngCa9euQUpKitTlEEmCI00igs1mgxAXPw11bm4uysvL0b17d4+ew2q1evQ4Im/C0CQC0KNHD7zyyqu4/vob0K5dLG699TYUFBTi0Uf/gYSEBFxzzbX47rvvnNubzWY89NDD6Nq1G7p27YZp0x5BaWmp8/s7duxAcnIKYmPjcOedd8FsLqn1fMeOHcfo0aPRqVNnXHnllZg3bx4cDscl68zKysKQIUNr3bd69Rr06tUbALB//3789a8ZaN8+HomJnTB69OhG9xUWFo7FixcjKSkZ7drFoqSkpNG6Dhw4gN69+wAAune/AldddTUAoKSkBI89Nh1XXHElOne+DA888ABMJhMA4MSJEwgLC8eyZctw9dXX4PLLuztrHDJkCDp06Iirr74G7777nrOmOXPmYPTo0XjsselISEjAFVdcidWr1zi/73A4sGjRIvTq1Rtxce1xzTXXYvPmzQAAIYTzewkJCbj55pvx22+/XfKYErmDoUn0p7Vr12DZsg9w+PCvOHPmDDIyMnD99f1x/PhxjBp1Gx555BHntjNmzMCxY8ewe/cu7Nq1E0eO/I4nn5wJACgsLMLYsWMxYcIEnDx5AnfddSc++ugj52PLysowbNgt6N+/Pw4f/hVffPEFVq9eg2XLll2yxlGjRmH37t04ffq0876VK1c6w3H69MeRmZmJkydP4PDhX/HQQw9ddH/Z2auwdu0anD59CgqFotG6rrrqKuzevQsA8MsvP+PAgf0AgKlTH0RhYSF27NiOgwcPwGq1Yfr06bWe44svvsA333yNgwcPIDc3F8OHj8Df/nY/jh07iv/9bznmzJmDb7751rn9li1fISUlBcePH8fTTz+Fhx56CGazGQCwePFiLFiwEEuWLMHp06fwySfrEB8fDwBYuvQtfPDBB1i5cgWOHTuGoUOHYvToMaisrLzkcSVyFUOT6E9/+9v9aN++PcLCwjBgwABERkbilltugUKhwMiRI/HLL7+isrISDocDH32Ujeee+yciIyMRFRWFZ599FitWrIDD4cDGjRvQtm07/O1v90GpVOKmm25Cv379nM+zceMmhIWFY8qUKVCr1YiPj8ekSZOQnb3qkjXGxMTg+uuvx0cfZQMA8vLy8PXXX2PMmKrQVKmUOHXqFM6ePQuNRoPU1NSL7u/hhx9Cu3btoNFo3K7LaDTik08+wcsvv4zw8HDo9Xo89dRMrFmzFna73bndE088gfDwcOh0OqxYsRKpqSkYOXIEFAoFunfvjjvvvBPZ2dnO7a+66irn98eMqQq9P/44CgB466238eSTM3DNNVdDJpMhPj4e3bp1AwAsXboUM2fOROfOnaFUKjFp0iSUl5fjhx9+uORxJXIVG4GI/hQTE+38t06nrXVbq9VCCIGysjJUVlaisrISCQkJzu937NgRFRUVyM/Px9mz55yjn2rx8fGoqCgHAJw8eRK//vprrcc7HAJxcXEu1TlmzBjMmzcPjz76CFatWoW+ffs4n2/+/Cy8+OJc9O9/PcLDwzFx4gRMnDix0X21b9/e+W936zpx4iQcDgeuuqpnrfvlcjlyc3NrPMeFY3Hy5Els2vRlreew2x1ITk523m7TJsb5b5lMBq02CCUlVSPNU6dOoXPnzg3Wc/LkSUyc+AAUigtjgcpKK3Jychr+4Yk8wNAkcpPBYIBarcbJkycRE1P1Bn/y5EloNBpERUWhXbu2OHXqVK3HnD59GtHRBgBAXFwcrr76amzZstmj57/55sF45JFH8OOP+7FixUqMH3+/83udOiXizTffhBACu3fvxrBhw9G7dx9cc83VDe5LLr8QMO7W1b59HORyOQ4fPgydTlfv+ydOnPjzOWS1nmPIkCF45523XXqOuuLj43Hs2DH06dOn3vfi4uIwd+4cZGRkeLRvIldwepbITXK5HKNG3Ybnn38BBQWFKCgowL/+9TxGjx4NuVyOgQMH4ezZs3j33fdgs9mwceNGbN261fn4zMxBOH/+PJYsWYry8nLY7XYcOXIE27Ztc+n5tVotbrnlFrzwwgv47bffMHz4cOf3PvzwQ5w/fx4ymQxhYWGQy+W1Rl4X425dbdq0wc0334zp06cjPz8fQFWH7aefftroc4wZMxpbt27FunXrYLVaYbVacfDgQezdu8+lGu+7717MnfsiDh48CCEETp065Wz2mTBhPGbNmo0jR44AAIqLi7F+/XrneihRc2BoEnlg7ty5SEhIQN++fdG3bxI6deqE2bNnAQAiIyPwv/8tx6JFi5CQ0AHvv/8+Ro0a5XxscHAw1q1bh2+//RY9evREYmIi7r9/PHJzz7v8/GPHjsGWLVtw8803IyQkxHn/N998g9TUNMTGxmHs2DvwwgvPo2fPnhfZ0wWe1LVw4QKEhYXh+utvQPv28cjMvAn79zd+0oPY2FisWbMa77zzLrp27YbLLuuCxx6b7nKwTZo0Cfff/zfce+99iItrj2HDhuPUqaqmqIkTJ+KOO+7AXXfdjfbt49GnT1+X1omJ3CGz2awX/3AWERERAeBIk4iIyGUMTSIiIhcxNImIiFzE0CQiInIRQ5OIiMhFDE0iIiIX+XVoVp/27FKXPCIiInKFX4emxWLBvffcDYvF0uR9FeTnNUNFgYfHzTM8bp7hcfNMoB43IQTMZpNLl+Wr5teh2ZzcOah0AY+bZ3jcPMPj5plAPG5CCBQV5aOstAQ2m+sXSGdoEhFRQKkOzMqKCoRHREGt1rj8WIYmEREFjLqBqdEEufV4XhqMiIgChkwmg0YdBJ0u2O3ABDjSJCKiACCEQHl5VVOoTu9ZYAIMTSIi8nPVU7KmokLY7fYm7YvTsxdhdwh8f6wM3x21wFhkgSHciL6dtejTSQdFjavRExGRd6q7hqlQKJq0P4ZmI3b9UYo3vsxHbrENQFVLtlxejE/3F6NNqBJ/HxCF5Mv0EldJRESNaWrTT0M4PduAr38twTNrziO32IbOMWr8PSMKTwzQ4u8ZUegUrUZusQ3PrDmPr38tafJzTZ48GRs2bMBrr/33ktu44uDBg9iy5SuPatm2bRvuvnucR4+tacGCBaisrHTeHjJkSJP3SUTkLiEEhBDNFpgAQ7Oe88U2vLg+D0IITP1rFN68Nw7DrwtDrw5KDL8uDIvvi8PUv0ZBCIEX1+chz2xrluf9738bD013HDp0CF995VloNpeFCxfWCs3PPvtMwmqIKNAIIWC32yCXyxERYWi2wAQYmvV8dqAYVrtAZo8QjOwVBpms9tqlTCbDyF5hGNQjBFa7wGf7zW4/x5w5c3Dddb0wZMhQnD+fh9mz58BkMiEtLQ3Tpj3S4DYN2bp1K5KTU5Camor+/a+H3W7H7NlzsGLFCqSlpWHTpk3Iz8/H6NGjkZKSgptvvhknTpwAAOTm5mLMmDFITU1FWlo6jh49CgAoLi7GHXfcgWuvvQ4zZ850PtdDDz2Mfv36o2/fJLz++hsAALvdjgkTJqJPn75ITk7BsmXLsGTJEpw9ew4DBw7EmDFjAACJiZ2c+5k372UkJ6cgJSUFWVlZbh87IiKHw4FPfizGc2tz8czqc1j6TT7KKqvOalQ9JVtYkA8hRL338KbimmYdGw9VTbmO7BV60e1u7RWKjYfM2HDIjPvSI1ze/969+7Bx4ybs3LkDhYWF6NOnDxYvXozJk6dg+/btjW4zYcL4evvKysrCrFmzcOONN8BkMkGhUGDmzCfxyy+/YtasfwMAHntsOpKTU7By5cNYvXoNnnjiCaxYsQKPP/4EMjNvwr333oOKigrYbDbk5OTgwIED+P777xAeHo6+fZMwefJkxMfH47nnnkNkZARsNhsyM2/CyJEjkJdnxIkTJ/D9998BAEwmE8LCwvD6669j06ZNCA4OhjEv11nvpk2bsHXrVnzzzdfQaDQoKCh0+bgREQHAaxuNyN5jQmlF7VP/LfqmEMmdtZg5UAW5sCI8IqrZAxPgSLMWu0PAaLZBp5ajc8zFT6vUOUYDnVoOo9kGu8P1q6h8991uDBkyBBqNBm3btkV6ej+PtgGAvn2T8Nxzz2HRokWNnpR+9+5dGD36dgDAyJEjsHfvPgDArl27MG7c3QAAjUYDvV7/5z77ICYmBmq1Gt27X45Tp04BAFavXoW0tHT069cPR44cwe+/H0HHjh1x9uxZ/OMfj2HLlq8QFhZ20Z/9m2++wV133QmNpurYRka6/scGEdHfPziDd7cXorTCgSCVDNd0CEKfTlpE6BWw2QW2/l6Gu98phlof0axTsjUxNGuQoWr61WoXlwxCu0PAaheQy2Rw99Mnrvz109A2n376KdLS0pCWloZjx47j0UcfQVbWfJjNJcjIyEBOTk6Tn7vmORjlcgXsdjuOH/8/LFmyFOvXf4adO3eiX79+qKysQEREOHbt2onU1FQsWLAATz319CWfn4jIE29sNmLb72WQyYB70iKwfWYnvDM+Hovva4+vZ3TC7JEGaBSAsVTgoQ/zW6wOhmYNcrkMnaPVsNoF9hy/+OXE9hyzwGoX6ByjdmsKICkpGevXr0dlZSVyc3Oxbds2AIBCoXB+6LaxbYYOHYrt27dj+/bt6NQpEceOHUePHj0wffpj6NbtLzhx4gSCg4NRUlJS6/mys1cBAD7+eB2uu+5aAEBycjLef/8DAEBlZSVKS0sbrbmkxAy9Xo/Q0FCcOXMG3377DQAgPz8fDocDI0eOwJNPzsChQ4cAAMHBIbVqqHb99ddj2bLlqKioAABOzxKRSxwOB7K/MwEA7kgKxyODDFAqq+KrukN28DURyBoXCxmAn06V41R+5UX26DmGZh1DrwkBAHy4uwhWe8OjTatd4MPviqq2vzrErf1fe+01GDAgA8nJKbj//vHo3bs3AGDs2LFITk7BtGmPNLpNXQsWLEDfvklISUlB27Zt0adPH6Sn98OBAweQlpaOTZs24cknZ2D79u1ISUnB0qVLMHfuXADAiy/Oxfr165GSkoKMjAE4d+5cozX36NED3bp1Ra9evfHgg39HUlIyACAnJweDB9+M1NRUPProPzBjxhMAgHvuGYchQ4Y6G4GqDRw4EOnpaejXrz/S0tKwcuUKt44dEQWmzb+UorjcAbVShocHRjnvr276MZurArV3Jz0So9UQAOZvaZnRpsxms7q+IOdjysrKcO89d+Pd9z6ATqdz6TGWSgfuf+s0cottSO2ix8MDoxAVrIQxLxeG6DbIL7Hhv5vyseNIKdqEKvHW/e2hVfNvj8ZUHzdyD4+bZ3jcPOPtx23e53lYvqsIV8RpsHxSAoDGT1zw+iYj3t5WiK5tNfhoakKz18Lu2Tq0ajlmj2qL6SvOYseRUuw+WoY+nbQIUVbAbDuH745a4BACkXoFZo9qy8AkImphdlE1tpP/2UBysTP9KBVV2zhEy4wHGZoN6GhQY/64OLy3vRBf/VKCXX+U/XkaPTvUShluvDwE49Ii0CaUh4+IqKVdFqMGABw7XwmHwwGLpbTRU+Pt+qMMANAurGXen/mu34g2oUo8Pjgak2+MxP4T5ThnLERbQwSu7hCEkKCmnfCXiIhcN/yaULz8hRGlFQ58uLsYdySHQa3WQKVS19ruVH4lfj5TDgCY0D+yRWrh3OIlhAQpkN5Njxu6qpDeTc/AJCJqZUqlHBlXBEMA+M/GPGz6qaReYB7Pq8Rdi0/BIYD4SBV6JmhbppYW2SsREVEzEULg4evlOHBChlOFAk98dA7/2WhEWlcdNEo59v6fBb+dq4AQgE4tx8J7YlusFoYmERF5reqmH4fViv89EIsZqwux62gZzplsWLWnuNa2HQ0qZI2LRVyEupG9NR1Dk4iIvFaxqahW00/WOB3yS2x48+sC/HauAnYH0C5ciQn9ItC1XcucOq8mhiYREXktfXAwgrTaWl2yUcFKzBwaI0k9bAQiIiKvIoRAibkYwuGAUqlqsZOve4KhSUREXqN6DbO01AyrzSZ1OfUwNImIyCvUPdOPWt1yDT2eYmgSEZHkLnZqPG/CRiAiIpKcTCaDWqWBThfstYEJMDSJiEhCQghUVlZAowmCPti9Sy1KgdOzREQkieop2aKiAtjtdqnLcQlDk4iIWl2tNczwSCgUvnFeb4YmERG1Kl9p+mkIQ5OIiFqVEALC4fC5wATYCERERK1ECAGHwwGFQoGIyGjIZDKpS3IbR5pERNTinE0/hUYIIXwyMAGGJhERtbCaa5jBIWE+G5gAQ5OIiFqQLzf9NIShSURELcZqrYS1stIvAhNgIxAREbUAIQQAQK3WwBDdBnK5b3wO81I40iQiomZVPSVbUlIMAH4TmABDk4iImlHNNUy1WiN1Oc2OoUlERM3C35p+GsLQJCKiZlFWWuLXgQmwEYiIiJqJTh8MtUYDlUotdSkthiNNIiLymBACpqICWCsrIZPJ/DowAYYmERF5qHoNs7zcAodwSF1Oq2BoEhGR2wKh6achDE0iInJbsakw4AITYCMQERF5QKcPRpBWF1CBCXCkSURELhJCoKSkGEIIqFTqgAtMgKFJREQuqF7DLC0xw2a1Sl2OZBiaRER0UXWbflRq//5YycUwNImIqFGB2iXbGDYCERHRRamUauh0wQEfmABDk4iIGiCEgLWyEmqNBsEhoVKX4zU4PUtERLVUT8kWFeXD4bBLXY5XYWgSEZFTzTXMsPBIv7qAdHNgaBIREQA2/bhCkjXNyspKvPbaqzhz+jTUajVCQ8MwYcJEtG3Xrt62e/f+gA/efw8OhwMJCR0wZeqD0Ol0ElRNROTfHA4HHHYHA/MiJBtpZmQMwGv/fQPzXn4VvXv3xqJFC+ttU26xYNHCBZj++BN4/Y0sREREYPWqbAmqJSLyX0IIOBx2KBQKREZFMzAvQpLQVKvVuPba6yCTyQAAXbp2RV7e+Xrb/bj/R3TsmIi4uPYAgEGDMrFjx/ZG92u1WlFWVub8slgsLfMDEBH5iarAdKCwIB9CCOf7MjXMKz5y8vn69ejVq3e9+41GI6Kjo523o2NiUFhYBLu96i+iutauXYNV2R/Vuz/feB5lWm2TarTbbTDm5TZpH4GIx80zPG6e4XFzT3VgAlUjzXxj/cFLoDBEt3FpO8lDc82a1Th37hye/edzTd7XiBEjMWTIUOdti8WCyZMmIsoQ0+R1UGNerssHlS7gcfMMj5tneNxcV7PpRy6XIzqmfk8J1Sdp9+wnn6zD9999h5lPPQ2NRlPv+waDAXl5ec7beefPIyIivMFRJgCoVCrodDrnl7aJo0siIn9VWVmByspKhEdEQSbjBylcJdmR+uzTT7Bj+3Y8/cyz0Ov1DW5z9dXX4PjxYzhz5jQAYOPGDUhJTWvNMomI/IoQAkIIaDRBiDa0YdOPmySZns3Pz8f777+HNm3a4F/P/RNA1Shx9py5WLniQ0RERmLgwEHQarWYNGkK5r30Iux2B+IT4vHg1L9LUTIRkc+rnpJVqdQIDg6FvJFZO2qcJKEZFRWFj7JXN/i90WPG1rrdq3dv9Opdv0mIiIhcV3MNU6cLlrocn8WJbCIiP8cz/TQfhiYRkZ8rLTUzMJuJ5B85ISKilqXXh0CjDoJKrZa6FJ/HkSYRkR8SQsBUVACr1QqZTMbAbCYMTSIiP1O9hllebuH1MJsZQ5OIyI+w6adlMTSJiPyIyVTIwGxBbAQiIvIjOp0eWq2OgdlCONIkIvJxQgiUlpohhIBarWFgtiCGJhGRD6tewywxF8Nms0pdjt9jaBIR+ai6TT8qFT9W0tIYmkREPohdstJgIxARkY9SKpTQRQQzMFsRQ5OIyIcIIWC1VkKt1iAkNFzqcgIOp2eJiHxE9ZRsUWE+HA6H1OUEJIYmEZEPqLmGGRYeCbmcb99S4FEnIvJybPrxHgxNIiIv53A4YLfZGZhegI1AREReSggBIQQUCgWiDDGQyWRSlxTwONIkIvJCNZt+hBAMTC/B0CQi8jI11zD1wSEMTC/C0CQi8iJs+vFuDE0iIi9SWVGOyopKBqaXYiMQEZEXqF631ARpYYhWQ6FQSF0SNYAjTSIiiVVPyZaWmgGAgenFGJpERBKquYapVKqkLocugaFJRCQRNv34HoYmEZFESkqKGZg+ho1AREQS0etDoNEEQa3WSF0KuYgjTSKiViSEgMlUCJvNCrlczsD0MQxNIqJWUr2GWW4pg91ul7oc8gBDk4ioFbDpxz8wNImIWoGpqICB6QfYCERE1Aq0Oj20Oj0D08cxNImIPHQsrwJvfJmPPccsqLAJKORAfKQK96VHILNHMGQyGSxlpQxLP8LQJCLywKxPc7Hq+2KIGvdZ7cCR3ErMXJWLBV/l443b9dAprFCpNVCpeLYff8DQJCJy09z155H9fTEA4LI2atybFoGkzjqcNVnx1reF2H6kDKcKbBj/QTHWTI1lYPoRNgIREbkh12TFyu9MAIBxqeFY9WAHDLk6FIYQJXq01+I/d7RD1phgaBRAfqnAgm9LJK6YmhNDk4jIDf/dlA8hqtYuH82MbnCby9tpcG9qKADgiwNmOByO1iyRWhBDk4jIDbuPlgEAxvQNq3W/EAJWayVkMhlCwyLwt/7RUClkKC534OecCilKpRbA0CQickO5tar1p2fChW7Y6hMXFBYYnaPKILUcIUFVb7HnimytXyi1CIYmEZEbVH+2T54pqArCmmf6CQuPhFxe9bbqcDhgsVYFaJiWb7X+gr9JIiI3dGtbdYL15buLLnpqvM8PlsBSKaBWynB1B61U5VIzY2gSEbnhwb9GAQB+Ol2OzYeKYbfZ6gVmSbkdr24wAgBSu+igVvKt1l/wN0lE5IaeCVpcnRAEIYAnVp/HG9sAc2XVnK3D4cCK3UUY8p8TKCi1I0glw+ODG+6wJd/EkxsQEblBCIEXh2sw9UMr/sizY92PZny634wglRxWu4DVXtUopFXJsOCeOLQL54kN/AlDk4jIRdVrmLBb8cGEtsjeV4EVu4uQU2RDWWVV049WLcONlwfj4YEGxITyLdbf8DdKROSChpp+xqXqMC41AvklNuQUWRGsUaBDlNLZQUv+h6FJROSCioryRq+HGRWsRFQw304DAX/LREQXIYSATCZDUJAWqug2UCj4thnIOIdARNSIqinZApSVlQIAA5MYmkREDbmwhlkOhUIhdTnkJRiaRER1XOxMPxTYGJpERHWUmIsZmNQgTtATEdWhDw6BJigIarVG6lLIy3CkSUSEqinZYlMh7DYb5HI5A5MaxNAkooBXvYZpsZTBbrdLXQ55MYYmEQW0uk0/ag1HmNQ4hiYRBSwhBExFBWz6IZexEYiIApZMJkOQVgetTs/AJJdwpElEAUcIgbKyUgghEBSkZWCSyzjSJKKAUnMNU61WQ6nk9S7JdRxpElHAqNv0w8AkdzE0iSgg8NR41BwYmkQUMOQyOQOTmoRrmkTk14QQsNlsUKlUCAuPlLoc8nEcaRKR36qeki0qNEI4HFKXQ36AoUlEfqnmGmZoWARkcr7dUdPxVUREfodNP9RSJFvTfPvtt7D3hz3Iy8vDSy+9jI6JifW2+fnnnzB71izExsY675s1azbPDUlEF2W322Cz2hiY1OwkC82kpCQMGzYczz7z1EW3i42NxbyXX2mlqojIlwkhIISAUqmCIboNZDKZ1CWRn5EsNLt3v6LZ92m1WmG1Wp23LRZLsz8HEXknIQQcDgdMRQUIj4hiYFKL8PqPnOTmnsMTjz8GuVyO62+4EYMGZTa67dq1a7Aq+6N69+cbz6NMq21SHXa7Dca83CbtIxDxuHmGx8091YEJCFitlTx2buLrDTBEt3FpO68OzcTETli0aDF0ej3y8/MxZ/a/ERISgpSU1Aa3HzFiJIYMGeq8bbFYMHnSREQZYqDT6ZpUizEv1+WDShfwuHmGx811NZt+5HI5omPaSV2Sz+HrzXVe3T2r0+mg0+sBAFFRUUhNS8fhX39tdHuVSlX1mD+/tE0cXRKR9ysvtzi7ZGUyr35LIz/g1a+wwsLCP6dcqkaN+/b+0GCXLREFHiEEACAoSIsoQxt2yVKrkGx6dvGbi7Bv314UFRVh1qwXEBSkxRvzs7Bo4QL06tUbvXr3xne7d2HTpo1QKBSw2+1ISk7BDTfcKFXJROQlqqZkCxAUpIVWq4NS6dUrTeRHJHulTXxgUoP3T5o8xfnvzJsGI/Omwa1VEhH5gJprmDqdXupyKMB49fQsEVFNPNMPSY2hSUQ+w2w2MTBJUlwIICKfodeHIChIC7Wap9Ikabg90vz0009RVFTUAqUQEdUnhEBxcRHsdjsUCgUDkyTldmi+/PIr6NKlK/r164+nn34GmzZtQklJSUvURkQBrnoN01JWCrvdJnU5RO6H5rfffoPff/8djz8+HZWVFfjnP59DYmInDBw4qCXqI6IAVbfphyNM8gYerWlGRISja9euOHv2HM6dy0VOTo7zJARERE0lhICpqIBNP+R13A7N++8fjx07diAqKhL9+/fH2LFjMH/+GwgNDW2J+ogoAMlksqoTF+j0DEzyKm6H5tdff43Q0FBkZAxAeno6UlKSm3wydCIioGqEWW4pQ5BWhyAt31fI+7i9pnns2FEsW/YB2rSJwdKlS9CjR08MGpSJ2bNnt0R9RBQgqtcwqzpl2fRD3smjNc0rr7wSHTt2xGWXXYbExEQsX74ce/bswcyZM5u7PiIKAHWbfpRKldQlETXI7dB87rl/Yfv27Thw4AC6dLkM6enpyMrKQlpaekvUR0R+jqfGI1/idmgWFxdj6tSpSE9Pg8FgaImaiCjAyCBjYJJPcDs0X331Fee/8/PzERUV1awFEVFgEELAbrdBqVQhPILvI+Qb3G4EslgsmDbtEbRt2w6XXdYFbdu2w7Rpj6C0tLQl6iMiP1Q9JVtYYHReTJrIF7gdmjNnPoU//jiCTz5Zh99+O4xPP/0ER48exdNPP9MS9RGRn6m5hhkaFgGZTCZ1SUQuc3t69osvvsDOnTsRGRkBAIiJicF7772L5OQU/Oc/rzZ7gUTkP9j0Q77O7ZGmEAJyee2/DGUyOadYiOiS7DYbbFYrA5N8ltuhOWjQIIwbdw/27fsRRqMRe/fuw3333YfMzMyWqI+I/IAQAkIIKFUqGKLbMjDJZ7kdmrNnz0J8fHtkZmaiS5euGDx4MOLiYjFr1r9boj4i8nHVU7ImUyEAcA2TfJrba5rBwcHIysrC/PnzYTQaYTAY+J+AiBpUdw2TyNd5dBo9oOqvxejo6OashYj8CJt+yB+5FJoJCR1cGk2eOPF/Ta2HiPyExVLGwCS/41Jo/u9/y1u6DiLyE0IIyGQyaLU6qNVqnnyd/IpLofnPfz6HLVs2AwDmzp2LGTNmtGhRROSbhBAwFRVUXQ8zSMvAJL/jUvfskSNHYLNVXd9u/vysFi2IiHxT9RpmRUU5mwPJb7k00kxPT0NaWjo6d+4Mi8WCO++8q8Htli9f1qzFEZFvYNMPBQqXQvPtt9/GunXrcOLECWzatAk9elzZ0nURkQ8xF5sYmBQQXApNjUaD22+/HQBQVGTimiYR1aIPDkFQkBZqjUbqUohalNtnBOKZf4gIqJqSNRcXweGwQ6FQMDApILgdmkRE1WuYZWWlziZBokDA0CQit9Rt+lGrOcKkwMHQJCKXsUuWAp3boblkydIG73/44WlNrYWIvJxMJkOQRsvApIDldmhmZWVh3bp1te579NF/4Oeff262oojIuwghUG4pAwBodXoGJgUst69ysmpVNm65ZRiioqKQlpaGxx9/HPv27cO6dR+3QHlEJLWaU7IqlRoKpccXRyLyeW6/+i+77DJ88MH7uPPOu9CvXzoOH/4Nn3yyDmFhYS1RHxFJqO4aJgOTAp1L/wN++umnWrc1Gg0eeOABLFq0CEuXLsHp06dx+vRpXHklzxRE5C/Y9ENUn0uhmZaWDplMBiFEve8NHXoLgKoGgcLCguatjoikIwQgwMAkqsGl0CwqKmzpOojISwghYLfboVQqER4RxSuWENXAz2kSkVP1lGxhgdF5MWkiusDtVf2cnBzMmjUL+/fvh9lcUut7Bw8eaLbCiKh11V3DZGAS1ed2aE6cOBFarQ7Tpk2DTqdriZqIqJWx6YfINW6H5v79B3Ds2FGo1eqWqIeIJGCzWWGttDIwiS7B7TXNv/zlL8jNzW2JWoiolQkhIISASqWGIboNA5PoEtweaQ4dOhRjx47F+PETEBMTXet7gwcPbrbCiKhlVU/JyuUKhIVFQC5nXyDRpbgdmkuXVp2w/ZVXXql1v0wmY2gS+Yi6a5hE5Bq3Q/PQoYMtUQcRtRI2/RB5jvMxRAHGYillYBJ5yKWR5qBBmdi4cQOAC6fUa8i2bVubrzIiahFarR5qlQZKlUrqUoh8jkuhOX78/c5/T5kyucWKIaKWIYSAqajAeS1MBiaRZ1wKzVGjRjn/fccdd7RYMUTU/GquYWp1eqnLIfJpLoXm559/7tLO2D1L5F3Y9EPUvFwKzSeemHHJbfiREyLvYy4uYmASNSOXQpMfMyHyTTp9CIKCdFBrNFKXQuQX+JETIj8jhIDZbILD4YBSqWRgEjUjhiaRH6lewywrLYHNZpW6HCK/w9Ak8hN1m37Uao4wiZobQ5PID7BLlqh1uH3uWSLyPjKZDBp1EHS6YAYmUQtyKTQvduq8mngaPaLWJYRARUU5goK00OmDpS6HyO+5FJo8dR6R96k5JauKbgOFghNHRC3Npf9lPHUekXepu4bJwCRqHR41Ai1btgy33DIMKSkpAIDt27djzZq1zVoYETWMTT9E0nE7NOfNexkLFizArbfeitOnTwMA2rZti9dff73ZiyOi+oQQEEIwMIkk4HZovv/++8jOzsY994wDUNUc1KlTJxw/fry5ayOiGoQQsNttkMvliIgwMDCJJOB2aJaVlaFt27YA4OyotVqt0PBUXUQtpnpKtrDACCGES93sRNT83A7N3r17YenSpbXu++CDZejbt2+zFUVEF9RcwwwJDWdgEknI7Za7OXPm4pZbbsHy5f9DaWkpBgwYiPPnz2Pduo9boDyiwMamHyLv4nZoJiZ2xPfff4eNGzfh5MmTiIuLQ2bmIOj17l0R/u2338LeH/YgLy8PL730MjomJja43VdbNuPjj9dCCIErruyB8eMnQKlkez0FBpvVCmtlJQOTyEt4lD5arRbDhw9r0hMnJSVh2LDhePaZpxrd5nxuLlauXIEXX5yHsPBwvPTiXGze/CUyM29q0nMTebvqDlmVWg1DdFvI5TxNNJE3cCk0p06d6tLOsrKyXH7i7t2vuOQ2u3fvwnW9eiM8IgIAMGDgQKxds4ahSX5NCAGHwwGz2YTQ0HAGJpEXcel/Y2hoqPNLJpMjO3sVcnPPQ63W4Pz5PKxatRpyuaLZizMajYiOjnbejomOgdFobHR7q9WKsrIy55fFYmn2mohaUvUaJiA4HUvkhVwaac6ZM8f577vvHof3338PmZmZzvs2btyIDz5Y1vzVuWnt2jVYlf1RvfvzjedRptU2ad92uw3GvNwm7SMQ8bi5rnqECQgAgLnYBDNM0hblY/h68wyPG2CIbuPSdm6vaX799dd47713a92XkZGB++8f7+6uLslgMOBc7oVf5Pm88zAYDI1uP2LESAwZMtR522KxYPKkiYgyxECn0zWpFmNerssHlS7gcXNdaakZJeZihEdEwVxs4nHzAF9vnuFxc53biyUJCfH1RpXLly9HfHx8sxVVrW9SEvb+sAdFhYUQQuDLTZuQmpra6PYqlQo6nc75pW3i6JKoNel0wYiMiua0LJEXc3ukOW/ePIwdewcWLlyI+Ph4nDp1Cjk5Ofjww/+5tZ/Fby7Cvn17UVRUhFmzXkBQkBZvzM/CooUL0KtXb/Tq3Rtt2rTFqNtH45k/O2y7d78CGQMGulsykdcSQsBkKoROp4darYFKpZa6JCK6CLdDMzU1FQcPHsCGDRtw7lwu2rVri4EDByEiItyt/Ux8YFKD90+aPKXW7YyMAcjIGOBumURer+aJC7Tapi0fEFHr8OhzmuHh4RgzZgzy8/MRFRXV3DUR+T2e6YfIN3l0wvaHH56Gtm3b4bLLuqBt23aYNu0RlJaWtkR9RH6puLiIgUnkg9wOzaeeehpHj/6BTz5Zh99+O4xPP/0ER48exdNPP9MS9RH5Jb0+mIFJ5IPcnp794osvsHPnTkRGVp2lJyYmBu+99y6Sk1Pwn/+82uwFEvkLIQRKS8zQ64OhVKqgVKqkLomI3OT2SFMIAbm89qWJZDI5hBDNVhSRv6lewywtNcNqs0pdDhF5yO3QHDRoEMaNuwf79v0Io9GIvXv34b777qt1hiAiuqBu049azQu2E/kqt0Nz9uxZiI9vj8zMTHTp0hWDBw9GXFwsZs36d0vUR+TT2CVL5F/cXtMMDg5GVlYW5s+fD6PRCIPBwCvJEzVCJpNBrdJApwtmYBL5AY+v5my326HRaGA2m533hYaGNktRRL5OCIHKygpoNEHQB4dIXQ4RNRO3Q3PPnj2YNm0afv31sLP5RwgBmUyGwsKCZi+QyNc4p2QrK2EwtIFC0fyXzSMiabgdmpMmTcZtt92Kt99+mydEJ6qj7homA5PIv7gdmnl5eZgxYwbXMYnqYNMPkf9zu3t21KhR+Pzzz1uiFiKfJoSAcDgYmER+zO2R5tNPP42MjAz897+vIzo6utb3li9f1sijiPyXEAIOhwMKhQIRkdGchSHyY26H5sSJE6FWq5GUlASdjmuaFNiqp2Qddjsio2IYmER+zu3Q3LFjB3777TBCQthGT4Gt7homA5PI/7m9ptmtWzeUlJS0RC1EPoNNP0SBye2R5tChQ3H77aNx//33Iyam9prm4MGDm60wIm9mtVbCWlnJwCQKMG6H5jvvvAMAeOWVV2rdL5PJGJrk96pP6KFWa2CIbgO5nJ/DJAokbofmoUMHW6IOIq9XPSWrVKoQEhLGwCQKQG6vaRIFopprmLy0F1HgYmgSXQKbfoioGkOT6BLKSksYmEQEoAmXBiMKFDp9MNQaDVQqtdSlEJHEONIkakDVlGwBrJWVkMlkDEwiAsDQJKqneg2zotwCh3BIXQ4ReRGGJlENbPohoothaBLVUGwqZGASUaPYCERUg04fjCCtjoFJRA3iSJMCnhACJSXFEEJApVIzMImoUQxNCmjVa5ilJWbYbFapyyEiL8fQpIBVt+mHHyshokthaFJAYpcsEXmCjUAUsFRKNXS6YAYmEbmMoUkBRQgBa2Ul1BoNgkNCpS6HiHwMp2cpYFRPyRYV5cPhsEtdDhH5IIYmBYSaa5hh4ZG8gDQReYShSX6PTT9E1FwYmuT3HA4HHHYHA5OImoyNQOS3hBAQwgGFQoHIqGjIZDKpSyIiH8eRJvml6inZwoJ8CCEYmETULBia5HdqrmEGh4QyMImo2TA0ya+w6YeIWhJDk/xKZWUFrJWVDEwiahFsBCK/IIQAAGg0QTAY2kCu4Ocwiaj5caRJPs95ea9SMwAwMImoxTA0yafVXMPkpb2IqKUxNMlnsemHiFobQ5N8VmmJmYFJRK2KjUDks/TBIdBogqBSc1qWiFoHR5rkU4QQMBUVwGq1QiaTMTCJqFUxNMlnVK9hlpdbeD1MIpIEQ5N8Apt+iMgbMDTJJ5hMhQxMIpIcG4HIJ+h0emi1OgYmEUmKI03yWkIIlJaYIYSAWq1hYBKR5Bia5JWq1zBLSophs1mlLoeICABDk7xQ3aYfnh6PiLwFQ5O8CrtkicibsRGIvI5SoYQuIpiBSUReh6FJXkEIAau1Emq1BiGh4VKXQ0TUIE7PkuSqp2SLCvPhcDikLoeIqFEMTZJUzTXMsPBIyOV8SRKR9+I7FEmGTT9E5GsYmiQZh8MBu83OwCQin8FGIGp1QggIIaBQKBBliIFMJpO6JCIil3CkSa2qZtOPEIKBSUQ+haFJrabmGqY+OISBSUQ+h6FJrYJNP0TkDyRb0zx7NgdZ8+fDbC6GTqfDlKkPIj4+odY2P//8E2bPmoXY2FjnfbNmzYZao2ntcqmJKivKUVlRycAkIp8mWWgufvNNZGRk4PobbsTuXbuwIGs+5sx9qd52sbGxmPfyKxJUSM1BCAEA0ARpYYhWQ6FQSFwREZHnJJmeNZlMOHbsKNL79QcA9E1KgtGYj3Nnz0pRDrUQIQQcDgdKS80AwMAkIp8nyUgz32hEeHiE801UJpPBYDDAaDSibbt2tbbNzT2HJx5/DHK5HNffcCMGDcpsdL9WqxVW64VrL1oslpb5AeiSqtcwAQGlUiV1OUREzcKrP6eZmNgJixYthk6vR35+PubM/jdCQkKQkpLa4PZr167BquyP6t2fbzyPMq22SbXY7TYY83KbtI9AUT3CBKqmZs3FJphhkrYoH8PXm2d43DzD4wYYotu4tJ0koRllMKCoqBB2ux0KhQJCCBiNRhgMhlrb6XS6C4+JikJqWjoO//pro6E5YsRIDBky1HnbYrFg8qSJiDLE1NqXJ4x5uS4f1EBnNptQVlqC8IgomItNPG4e4OvNMzxunuFxc50ka5phYWFITOyEbVu/BQB8t3s3oqKi6k3NFhYWOq96YbFYsG/vD+iYmNjoflUqFXQ6nfNL28TRJXlGrw9BRKSBXbJE5Hckm56dOPEBZGXNx9q1a6DV6jBlylQAwKKFC9CrV2/06t0b3+3ehU2bNkKhUMButyMpOQU33HCjVCXTRQghUFxcBL0+GEqlCmo1PxZERP5HstCMjYvDrNlz6t0/afIU578zbxqMzJsGt2ZZ5IGaJy4ICtKy8YeI/BbPCERNwjP9EFEgYWhSk5iKChiYRBQwvPojJ+T9tDo9tDo9A5OIAgJHmuQ2IQTKSksghIBGE8TAJKKAwdAkt1SvYZrNJthsNqnLISJqVQxNclndph+Vil2yRBRYGJrkEnbJEhExNMkNCrmCgUlEAY3ds3RRQgjYbFaoVGqEhkVIXQ4RkaQ40qRGVU/JFhYYnecAJiIKZAxNalDNNcyw8EjI5XypEBHxnZDqYdMPEVHDGJpUj8Nuh91mY2ASEdXBRiByEkJACAGFUokoQxvIZDKpSyIi8iocaRKAC1OypqICCCEYmEREDWBoUq01TJ0+mIFJRNQIhmaAY9MPEZHrGJoBrqKinIFJROQiNgIFqOp1y6AgLVTRbaBQ8KVARHQpHGkGoOop2bKyUgBgYBIRuYihGWBqrmEqFAqpyyEi8ikMzQDCph8ioqZhaAaQEnMxA5OIqAm4mBVA9MEh0AQFQa3WSF0KEZFP4kjTzwkhUGwqhN1mg1wuZ2ASETUBQ9OPVa9hWixlsNvtUpdDROTzGJp+qm7Tj1rDESYRUVMxNP2QEAKmogI2/RARNTM2AvkhmUwGrVYHrU7PwCQiakYcafoRIQTKykohhIAmSMvAJCJqZhxp+omaa5hqtRpKpUrqkoiI/A5Hmn6gbtMPA5OIqGUwNH0cT41HRNR6GJp+QC6TMzCJiFoB1zR9lBACNpsNKpUKYeGRUpdDRBQQONL0QdVTsoWFRgiHQ+pyiIgCBkPTx9RcwwwLi4BMzl8hEVFr4TuuD2HTDxGRtBiaPsRut8NmtTEwiYgkwkYgHyCEAAAolUoYottAJpNJXBERUWDiSNPLVU/JFhUVAAADk4hIQgxNL1ZzDVOn00tdDhFRwGNoeik2/RAReR+GppcqL7cwMImIvAwbgbyMEAIymQxBQVqoVGoolfwVERF5C440vUjVlGwBLJYyyGQyBiYRkZdhaHqJC2uY5ZDzLD9ERF6J785egE0/RES+gaHpBcxmEwOTiMgHcNHMCwTrQxAUpIVarZG6FCIiugiONCUihEBxcRHsdjvkCgUDk4jIBzA0JVC9hmkpK4XdZpO6HCIichFDs5XVbfpRazjCJCLyFQzNVlT9OUw2/RAR+SY2ArUimUwGbZAWOp2egUlE5IMYmq1ACIFySxmCtDoEaXVSl0NERB5iaLawmmuYKrUaSqVK6pKIiMhDXNNsQXWbfhiYRES+jaHZQnhqPCIi/8PQbEEyyBiYRER+hGuazUwIAbvdBqVShfCIKKnLISKiZsSRZjOqnpItLDBCCCF1OURE1MwYms2k5hpmaFgEZDKZ1CUREVEzY2g2Azb9EBEFBoZmM7DbbLBZrQxMIiI/x0agJqhet1SqVDBEt+WULBGRn+NI00PVU7ImUyEAMDCJiAIAQ9MDNdcwtTyXLBFRwGBouolNP0REgUuyNc2zZ3OQNX8+zOZi6HQ6TJn6IOLjE+pt99WWzfj447UQQuCKK3tg/PgJUCqlW4ott5QxMImIApRkI83Fb76JjIwM/Pf1+Rg2bAQWZM2vt8353FysXLkCzz//b7z+RhZMRUXYvPlLCaq90PQTpNUhyhDDwCQiCkCShKbJZMKxY0eR3q8/AKBvUhKMxnycO3u21na7d+/Cdb16Izyi6mQBAwYOxI7t21u9XiEEHA4HysstkMlkvFoJEVGAkmSeM99oRHh4BBQKBYCqzlODwQCj0Yi27do5tzMajYiOjnbejomOgdFobHS/VqsVVqvVedtisTS51uo1TECwQ5aIKMD51ec0165dg1XZH9W7P994HmVardv7qx5hAlVTs+ZiE8wwNbXMgGK322DMy5W6DJ/D4+YZHjfP8LgBhug2Lm0nSWhGGQwoKiqE3W6HQqGAEAJGoxEGg6HWdgaDAedyL/wiz+edr7dNTSNGjMSQIUOdty0WCyZPmogoQwx0Ovc/GlJsKoLFUorwiCiYi00uH1S6wJiXy+PmAR43z/C4eYbHzXWSrGmGhYUhMbETtm39FgDw3e7diIqKqjU1C1Stde79YQ+KCgshhMCXmzYhNTW10f2qVCrodDrnl9aD0WVN+uAQREQY2PRDREQAJJyenTjxAWRlzcfatWug1eowZcpUAMCihQvQq1dv9OrdG23atMWo20fjmWeeAgB0734FMgYMbNG6hBAoMZugDw6BQqFwrrsSERFJFpqxcXGYNXtOvfsnTZ5S63ZGxgBkZAxolZpqnrhAE6SFWs3AJCKiC3hGoD/VPdOPWq2RuiQiIvIyDE1UB2YBz/RDREQX5VcfOfGUTCZDkCYIOp2egUlERI0K6JGmEAIWSxkAQMvAJCKiSwjYkWbNNUy1Sg2FhCeBJyIi3xCQI826TT8MTCIickXAhSavh0lERJ4KuNCEEIAAA5OIiNwWMPOSQgjY7XYolUqER0TxiiVEROS2gBhpVk/JFhYYIQQv8UVERJ4JiJGmyVQAhVzOESYRETVJQIw02fRDRETNwa9HmkJUXTxao9HCbnegrKzM431ZLJYmPT5Q8bh5hsfNMzxunuFxq6LVai85G+nXoVleXg4AePjhhySuhIiIvN27730AnU530W1kNptVtFI9rc7hcKCwsBBBQUFNWsu0WCyYPGkiFi5a3OQLWwcSHjfP8Lh5hsfNMzxuFwT8SFMulyMqKqrZ9qfVai/5VwjVx+PmGR43z/C4eYbHzTUB0QhERETUHBiaRERELmJoukClUuG2UbdDpVJJXYpP4XHzDI+bZ3jcPMPj5h6/bgQiIiJqThxpEhERuYihSURE5CKGJhERkYv8+nOa7jp7NgdZ8+fDbC6GTqfDlKkPIj4+od52X23ZjI8/XgshBK64sgfGj58ApTJwD6Urx+3nn3/C7FmzEBsb67xv1qzZUGs0rV2u13j77bew94c9yMvLw0svvYyOiYkNbsfXW22uHDe+3mqrrKzEa6+9ijOnT0OtViM0NAwTJkxE23bt6m27d+8P+OD99+BwOJCQ0AFTpj7Iz2/WELj/8xqw+M03kZGRgetvuBG7d+3Cgqz5mDP3pVrbnM/NxcqVK/Dii/MQFh6Ol16ci82bv0Rm5k0SVS09V44bAMTGxmLey69IUKF3SkpKwrBhw/HsM081ug1fb/W5ctwAvt7qysgYgGuuuRYymQwbvvgcixYtxHP/er7WNuUWCxYtXIDn/vU84uLa462lS7B6VTbuHnePRFV7H07P/slkMuHYsaNI79cfANA3KQlGYz7OnT1ba7vdu3fhul69ER4RAZlMhgEDB2LH9u1SlOwVXD1uVF/37ldc8oxVfL3V58pxo9rUajWuvfY65yniunTtiry88/W2+3H/j+jYMRFxce0BAIMGZWLHjsB+vdXFkeaf8o1GhIdHQKFQAABkMhkMBgOMRmOtKQyj0Yjo6Gjn7ZjoGBiNxlav11u4etwAIDf3HJ54/DHI5XJcf8ONGDQoU4qSfQpfb57j661xn69fj169ete7v+7rLTomBoWFRbDb7c7/44GOoUmtIjGxExYtWgydXo/8/HzMmf1vhISEICUlVerSyA/x9da4NWtW49y5c3j2n89JXYpP4vTsn6IMBhQVFcJutwOouhan0WiEwWCotZ3BYEBeXp7z9vm88/W2CSSuHjedTgedXl/1mKgopKal4/Cvv7Z6vb6GrzfP8PXWsE8+WYfvv/sOM596GpoGmqLqvt7yzp9HREQ4R5k1MDT/FBYWhsTETti29VsAwHe7dyMqKqreFGPfpCTs/WEPigoLIYTAl5s2ITU1cP96dfW4FRYWwuFwAKi6FNG+vT802i1KF/D15hm+3ur77NNPsGP7djz9zLPQ//kHRV1XX30Njh8/hjNnTgMANm7cgJTUtNYs0+vxNHo15Jw5g6ys+SgpMUOr1WHKlKlI6NABixYuQK9evdGrd9UawObNX2Ldx2sBVDUlTJj4QEB/BMCV47bhi8+xadNGKBQK2O12JCWnYNSo25t0nVNft/jNRdi3by+KiooQEhKCoCAt3pifxdfbJbhy3Ph6qy0/Px+TJ01EmzZtEBRUdc1MlUqF2XPmYuWKDxERGYmBAwcBAH7YswfLlr0Pu92B+IR4PDj1785ROzE0iYiIXMbpWSIiIhcxNImIiFzE0CQiInIRQ5OIiMhFDE0iIiIXMTSJiIhcxNAkIiJyEUOTvEqPHj3w2WefNcu+br31NixZsrRZ9tWS7HY7UlJS8MsvvzS6zbRpj+DZZ//ZilW1DLPZjKuuuhr5+fmNbrNt2zYkJFy4Hqs7v8fly5cjLc31M9js2bMHffr0RVxceyxatAiTJ0/GjBkzXH48BR6GJvmt1atXYcKE8QDqvxE35o033sC1116HuLj26NSpM265ZRhOnDgBoPE35JpvtCdOnEBYWDhiY+NqfV3sjfjDDz9Ep06d0b17dwDAnDlzcMcdd9Ta5rXX/oPnn/+Xaz+4FwsJCcHYsWPw8ssvu/yYmr/H5vbCC//GbbfdijNnTmPSpEkt8hzkXwL3XFxEdaxcuRKLFy/GypUr0b17dxQVFeGrr7726NRrv/zyM8LDw13adsmSpXjyycAZ3YwdOxbp6el45plnoNPpJK3lxIkTmDhxgqQ1kG/hSJO82sqVK9G7dx8kJCRg0KBM7N+/3/m9oqIijBt3DxISEtCrV2+8+eabCAsLd37/5ptvxoIFC1BQUIDbbhsFk6nYOfLbuXNnvefas+cH9OvX3zniCw8Px8iRI1waoXrq7NmzOHjwoPMk7J999hleeeVVbNiw0Vkr0PBo9oMPPkDPnlchNjYOzzzzLM6dO4dhw4ajfft4DB48GLm5uc7nycvLw/jxE9C1azd06/YXzJgxAxUVFQ3WVFJSgrFjx6Jz58sQH5+Am266CYcOHXLux2CIxsmTJ53bV1RUICGhA77//nsAwI4dO5CcnIK4uPa48867MHXqg5g8ebJz+w4dOiAiIhI7duxw6RhV/x6BCzMG7733Prp3vwIdOybimWeebfSxb731Nnr2vAq///57ve916dIVJ06cwP33j0dsbBz++OOPetvs2/cjBg4chISEBPTp0xerVq0CANhsNsTFtXfu94svvkBYWDg2b94MAPj555+RkJDgvPoP+Q+GJnmtHTt24NFH/4HXXvsPjh49imHDbsGtt94Gk8kEAHj88cdRVlaGQ4cO4bPPPsWKFSsb3E9kZCRWrcpGWFgocnLOICfnDFJSUuptl5TUFx9//DHmzXsZu3fvRnl5eYv+fABw6NAhxMbGIiQkBAAwZMgQ/OMfjyIzc5Cz1sZs27YNu3btxFdfbcGiRYtw7733Ye7cOTh69A+oVGq88sorAKou1zZmzFi0aROD/ft/xK5dO/HTTz9h3rx5De7X4XDgtttG4eDBAzhy5Hf07NkT9957H4QQiI6Oxo033oiVKz9ybv/FFxtgMBjQp08fFBYWYezYsZgyZTJOnPg/3HPPOGRnZ9d7jr/8pRsOHjzk0TEzm0vw22+HsW/fXmzcuAFLly7Ftm3b6m03e/ZsLF26FBs2fIGuXbvW+/6RI78jPr493nprKXJyzuCyyy6r9f2ioiLceuutuPXWkTh69CheffUVPPTQw9i9ezeUSiWSk5OxdWvV827duhWJiYm1bqempvKSWn6IoUlea8WKlbj99tuRmpoKlUqFKVOmIDw8HJs2bYLdbseaNWsxc+ZMhIWFoW3btnjooYea9Hy33XYbsrKy8P333+P2229HYmIn/P3vD6G0tNTtffXo0RMJCQnOr2XLljW4XfWVOjwxffp06PV6/OUvf8GVV16JpKQkXH755dBoNBgyZAgOHDgIoGq0dPToUbzwwgvQ6XSIjIzEo4/+A9nZqxrcb2hoKG69dST0ej2CgoLw5JNP4o8//sDZs2cBAGPGjMHKlRf+QFm5cgXGjBkNoOpSUrGxcbj77ruhVCoxcOBA9O/fv95zhISEoqioyKOfWwiBp59+GkFBQejWrRv69OlTawbCbnfgoYcextat2/D5558jNjbWo+fZtGkTDAYDHnjgAahUKqSlpeG2227D//73IQAgPT3dGdZbt27FjBlP1Lrdr18/j56XvBtDk7xWTk5OvanRDh064MyZHOTn58NqtaJ9+zjn9+Lj2zf5OYcPH4bs7I9w4sQJrFmzGl9//RVefrlqxKZSqWC12uo9xmq1QalU1brv0KGDOHnypPPrrrvuavD5wsPDYTabPao1Ojra+W+dTouYmNq3S0tLAAAnT56EyWRCx44dnSF+zz331LrYcE0WiwWPPvoP9OjRA+3bx6Nnz54A4Ox4HTz4Jpw/n4u9e/ciPz8fmzdvwejRVaF59uw5xMXF1dpf+/b1fy9mc7HLa751hYaG1FoL1et1KCkpcd4+c+Y0VqxYgenTpyMiwrPnqNpP/ddfx44dkZOTA6AqNLdv3w6j0QijMR+jRo3CyZMnUVhYhB07djI0/RRDk7xWbGxsrbUzoCoA4uJiERUVBZVKhdOnL0xfnjp1utF9yeXuvdRlMhmSk5MxbNgw/PLLzwCA+Ph45OTkwGarHZzHjx9Hhw6erXv26NEDOTk5td703a31Utq3j0N0dHStED916mSjU7/z58/H/v37sWHDBpw+fQoHD1aNWIWouopgUFAQhg0bjhUrVmD16tXo1es6dOjQAQDQrl1bnDlTe7+nT9f/vRw+/Bt69uzRnD+mU0JCApYvX4bx48c3OG3rqri4hl9/1SPXq67qCau1EosXL3ZOxSYlJWHhwgVQqVTOtXHyLwxN8lqjR9+O7Oxs7N69GzabDW+++SYKCgowYMAAKBQKjBgxAnPnzoXJZEJubi7mz5/f6L5iYmJgNpc0OroCgGXLlmH9+vXOacNffvkF69d/jj59+gIArrvuOkRHR+P5519AaWkpKisrsWzZMhw+fBiDBw/26Gds164devToUaspJjo6BidPnqoXzp669tprERcXhxde+DfMZjOEEDh58iS+/PLLBrcvLjYjKEiD8PBwlJSU4PnnX6i3zdixY7B69RosW7YcY8aMdd4/cOAgnDlzBsuXL4fNZsPmzZuxdevWWo89efIkCgoKGlxXbi4DBgzAkiVLMG7cPfjmm2893MdA5OXlYcmSpbDZbNi5cyeys7MxduwYAIBCoUBKSgoWLlyE9PR0AED//v2wcOEipKWlBewFr/0dQ5O8VlpaGl566UU8+ODfkZjYCatXr8GqVauc03ovvfQS1Go1rryyB26+eQhGjBgOtVrd4L66dOmCu+++G3369EVCQgJ27dpVb5uwsDDMnz8fV111NeLi2uOOO+7EbbfdimnTHgYAqNVqZGdn448/juCqq65Gly5dsXz5cqxevarelGT37lfU+pzmuHH3NPpzTpgwHsuWLXfeHj58OEJDQ9CpU+dm6dxVKBT46KOVOHs2B3369EV8fAJuv300jh071uD2Dz44FXK5Al26dEVycjL69Oldb5vk5GQEBwfjt99+w/Dhw5z3R0ZGYPnyZXjjjflISOiAd955F8OHD4NarXFus2LFCtxxx1jo9fom/2wXk5HxV7z99tu47777sGXLV24/PiIiHKtXr8JHH32ExMROePjhaXj11VeQnJzs3CY9PR3FxcXOqdj+/fvXuk3+R2azWYXURRA1h1WrVmHWrNn48cd9UpfiFrvdjvT0dLz11lu4/PLLpS6n2Y0YMRIpKSmYPv0xmM1mpKf3w+bNX8JgMEhdGpHbONIkn3X06FHs2/cjhBA4evQo5s17GcOHD5e6LLcpFArs3LnTbwJzy5avkJ+fD5vNhlWrVmPr1q245ZahAKrOCLR//48MTPJZPCMQ+azS0lJMnDgRZ86cQWhoKIYOHYrp0x+TuqyAt3//fkyYMAEWiwUdOnTAW2+9hW7dukldFlGz4PQsERGRizg9S0RE5CKGJhERkYsYmkRERC5iaBIREbmIoUlEROQihiYREZGLGJpEREQuYmgSERG56P8BumfPojKlZk4AAAAASUVORK5CYII=", "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 logit SUE (time avg) recomputed above (off-diagonal == not settled).\n", "display(viz.plot_flow_scatter((\"logit SUE (time avg)\", ref_flows), {\"dtd-stochastic\": final.link_flows}))" ] }, { "cell_type": "markdown", "id": "79a17015", "metadata": {}, "source": [ "## Takeaways & pointers\n", "\n", "- **Certified, not self-reported.** The residual and the anchor came from `Evaluator` at the loose finite-population tolerance; the self-report matched the certificate, so the O(bias+SE) floor is honestly scored, never a false accept.\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 deterministic-in-the-mean limit [`dtd-horowitz`](05-dtd-horowitz.ipynb); the unifying framework [`dtd-unifying`](07-dtd-unifying.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-stochastic" } }, "nbformat": 4, "nbformat_minor": 5 }