{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Fitting dispersive material models\n",
    "\n",
    "Here we show how to fit optical measurement data and use the results to create dispersion material models for `Tidy3D`.\n",
    "\n",
    "`Tidy3D`'s dispersion fitting tool performs an optimization to find a medium defined as a dispersive [PoleResidue](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.PoleResidue.html) model that minimizes the RMS error between the model results and the data. This can then be directly used as a material in simulations.\n",
    "\n",
    "If you are new to the finite-difference time-domain (FDTD) method, we highly recommend going through our [FDTD101](https://www.flexcompute.com/fdtd101/) tutorials. For simulation examples, please visit our [examples page](https://www.flexcompute.com/tidy3d/examples/). If you are new to the finite-difference time-domain (FDTD) method, we highly recommend going through our [FDTD101](https://www.flexcompute.com/fdtd101/) tutorials. FDTD simulations can diverge due to various reasons. If you run into any simulation divergence issues, please follow the steps outlined in our [troubleshooting guide](https://www.flexcompute.com/tidy3d/examples/notebooks/DivergedFDTDSimulation/) to resolve it.\n",
    "\n",
    "We recommend using the [FastDispersionFitter](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.plugins.dispersion.FastDispersionFitter.html), with advanced options configurable using the [AdvancedFastFitterParam](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.plugins.dispersion.AdvancedFastFitterParam.html)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# first import packages\n",
    "import matplotlib.pylab as plt\n",
    "import numpy as np\n",
    "import tidy3d as td"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Load Data\n",
    "\n",
    "The fitting tool accepts three ways of loading data:\n",
    "\n",
    "1. Numpy arrays directly by specifying `wvl_um`, `n_data`, and optionally `k_data`;\n",
    "\n",
    "2. Data file with the `from_file` utility function.\n",
    "\n",
    "    Our data file has columns for wavelength (um), real part of refractive index (n), and imaginary part of refractive index (k).  k data is optional. \n",
    "    \n",
    "    Note: `from_file` uses [np.loadtxt](https://numpy.org/doc/stable/reference/generated/numpy.loadtxt.html) under the hood, so additional keyword arguments for parsing the file follow the same format as [np.loadtxt](https://numpy.org/doc/stable/reference/generated/numpy.loadtxt.html).\n",
    "    \n",
    "3. URL linked to a csv/txt file that contains wavelength (micron), n, and optionally k data with the `from_url` utility function. URL can come from [refractiveindex.info](https://refractiveindex.info).\n",
    "\n",
    "Below the 2nd way is taken as an example:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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rSutGxERoRMnTriUnThxQhEREW7rz5gxQzk5Oc7Xd99957F+AwAA+BNTg51hGJo8ebLWrl2rLVu2KDY2tsp9EhIStHnzZpeyTZs2KSEhwW394OBghYaGurwAAACsyNRr7CZNmqTVq1dr/fr1CgkJcV4nFxYWpgYNGkiSxo8fr1atWik5OVmSNGXKFA0cOFCLFi3SiBEjtGbNGu3evVvLly837fcAAADwB6YGu6VLl0qSEhMTXcpfeeUV3XHHHZKkzMxMBQSUDCz2799fq1ev1syZM/XYY4+pY8eOWrduXaULLgAAgFRUVKQLFy6Y3Q2UERgYqHr16nmkLb+6j50vcB87AEBdYxiGsrOzdfr0abO7ggo0btxYERERstls5T6rSXbxm9udAAAA73CEuvDwcDVs2NBteIA5DMPQuXPndPLkSUlSZGTkJbVHsAMAwMKKioqcoa5Zs2ZmdwduONYVnDx5UuHh4Zc0LesXtzsBAADe4bimrmHDhib3BJVx/Plc6jWQBDsAAOoApl/9m6f+fAh2AAAAFkGwAwAAllJYWKgOHTpo586dFdY5evSobDab0tPTvd6fZcuWaeTIkV7/HolgBwAALGbZsmWKjY1V//79PdruHXfcodGjR9d4v7vuukt79uzR9u3bPdofdwh2AACgUnPnSgsWuP9swQL75/7CMAw9//zzmjhxotldcQoKCtJtt92mZ5991uvfRbADAACVqldPmj27fLhbsMBe7qGHJpSTmJioBx54QI888oiaNm2qiIgIza0iRaalpenw4cMaMWKES/nnn3+uHj16qH79+urVq5f27t3r8nlRUZEmTpyo2NhYNWjQQHFxcXrmmWecn8+dO1evvvqq1q9fL5vNJpvNppSUFEnS//7v/6pTp05q2LCh2rVrp1mzZpVb3Tpy5Ej9+9//1vnz5y/+gFQD97EDAACVmjXLvp09u+RnR6ibP7/kc2949dVXNW3aNO3atUupqam64447dPXVV+u6665zW3/79u3q1KmTQkJCnGVnz57VjTfeqOuuu06rVq3SkSNHNGXKFJf9iouL1bp1a7399ttq1qyZdu7cqXvuuUeRkZG69dZb9fDDD+urr75Sbm6uXnnlFUlS06ZNJUkhISFauXKloqKitH//fiUlJSkkJESPPPKIs/1evXrp119/1a5du8o9StWTahzscnNzK3ycxaFDh9ShQ4dL7hQAAPAvpcPdE09IhYXeD3WSFB8frzlz5kiSOnbsqOeff16bN2+uMNgdO3ZMUVFRLmWrV69WcXGxXn75ZdWvX19XXnmlvv/+e91///3OOoGBgZo3b57z59jYWKWmpuqtt97SrbfeqkaNGqlBgwYqKChQRESES/szZ850vm/btq0efvhhrVmzxiXYNWzYUGFhYTp27NjFH4xqqPFU7IgRI1RQUFCuPCMjw6sJFAAAmGvWLCkoyB7qgoK8H+oke7ArLTIy0vn4LXfOnz+v+vXru5R99dVXio+PdylPSEgot++SJUvUs2dPtWjRQo0aNdLy5cuVmZlZZR/ffPNNXX311YqIiFCjRo00c+ZMt/s1aNBA586dq7K9S1HjYNeoUSPddNNN+vXXX51lX331lRITE3XLLbd4tHMAAMB/LFhQEuoKCyteUOFJgYGBLj/bbDYVFxdXWL958+Y6depUjb9nzZo1evjhhzVx4kR99NFHSk9P15133qnCwsJK90tNTdW4ceP029/+Vu+995727t2rxx9/3O1+v/zyi1q0aFHjvtVEjYPdv/71L+Xk5GjcuHEyDEMHDhxQYmKixo4d63KRIQAAsI7S19QVFNi37hZUmK1Hjx76+uuvZRiGs+yKK67QF198ofz8fGfZZ5995rLfp59+qv79++uPf/yjevTooQ4dOujw4cMudYKCglRUVORStnPnTrVp00aPP/64evXqpY4dO7qdbj18+LDy8/PVo0cPT/yaFapxsGvQoIE2bNigjIwM3XrrrRoyZIjGjx+vxYsXe6N/AADAZO4WSsya5Z/hbtCgQTp79qwOHjzoLLvttttks9mUlJSkL7/8Uu+//77+9re/uezXsWNH7d69Wx9++KG++eYbzZo1S//5z39c6rRt21ZffPGFMjIy9NNPP+nChQvq2LGjMjMztWbNGh0+fFjPPvus1q5dW65f27dvV7t27dS+fXvv/OL/p1rBLjc31+UVEBCgN998U7t27dItt9yiWbNmOT8DAADWUlTkfqGEI9yVGcQyVbNmzXTTTTfp9ddfd5Y1atRI7777rvbv368ePXro8ccf11//+leX/e69917dfPPNGjNmjPr27auff/5Zf/zjH13qJCUlKS4uTr169VKLFi306aef6ne/+52mTp2qyZMnq3v37tq5c6dmubn48I033lBSUpJ3fulSbEbpscoKBAQEuH04rWNXm80mwzBks9nKDVH6m9zcXIWFhSknJ6fC1b0AAFhFfn6+jhw5otjY2HKLCqzqiy++0HXXXafDhw+rUaNGZndHBw8e1ODBg/XNN98oLCzMbZ3K/pxqkl2qdbuTrVu3VrPrAAAA5oqPj9df//pXHTlyRF27djW7O8rKytJrr71WYajzpGoFu4EDB3q7HwAAAB5zxx13mN0Fp6FDh/rsu3ikGAAAgEUQ7AAAACyCYAcAAGARBDsAAACLINgBAABYhEeD3eDBg7VgwQKvP+AWAAAA5Xk02MXExGjz5s26/PLLPdksAAAAqsGjwW7lypVKSUnRgQMHPNksAACogxITE/Xggw/WeL9Zs2bpnnvu8UrbNfXTTz8pPDxc33//vde/S/LSNXY8qgsAAJghOztbzzzzjB5//HGPtpuSkiKbzabTp0/XaL/mzZtr/PjxmjNnjkf7U5FqPXmirM2bN2vz5s06efKkiouLXT5bsWKFRzoGAAD8UFaW9MIL0r33SpGRZvemnJdeekn9+/dXmzZtzO6K05133qmePXtq4cKFatq0qVe/q8YjdvPmzdP111+vzZs366efftKpU6dcXgAAwMKysqR58+xbH9uwYYPCwsL0+uuvV1hnzZo1GjlypEtZXl6exo8fr0aNGikyMlKLFi0qt98//vEP9erVSyEhIYqIiNBtt92mkydPSpKOHj2qQYMGSZKaNGkim83mfGTZxo0bdc0116hx48Zq1qyZbrzxRh0+fNil7SuvvFJRUVFau3btpfz61VLjEbtly5Zp5cqV+p//+R9v9AcAAKCc1atX67777tPq1at14403uq3zyy+/6Msvv1SvXr1cyqdPn65t27Zp/fr1Cg8P12OPPaY9e/aoe/fuzjoXLlzQggULFBcXp5MnT2ratGm644479P777ys6Olr//Oc/dcsttygjI0OhoaFq0KCBJHtonDZtmuLj43X27FnNnj1bN910k9LT0xUQUDJ+1qdPH23fvl0TJ070/MEppcbBrrCwUP379/dGXwAAgD/KyioZoduzx3Ur2adkvTgtu2TJEj3++ON69913NXDgwArrZWZmyjAMRUVFOcvOnj2rl19+WatWrdKQIUMkSa+++qpat27tsu9dd93lfN+uXTs9++yz6t27t86ePatGjRo5p1DDw8PVuHFj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zrFgYs8e13qM3gEAAA9g8YS3VbWggkUUAACgEjXJLozYedu990q/+539/Z49UlKSNHKkNGkS19oBAACPIth5m7up1nfftY/SXXWVKV0CAADWxKpYAAAAi2DEzhccz4/98Uf7NOy777KAAgAAeBzBzhdeeKH8AoqkpJL3LKAAAAAeQLDzBXcLKBYulL79Vrr5Zik+3tz+AQAASyDY+YK7qdbISGn6dHvoYxoWAAB4gF8snliyZInatm2r+vXrq2/fvvr8888rrLty5UrZbDaXV/369X3YWwAAAP9k+ojdm2++qWnTpmnZsmXq27evnn76aQ0bNkwZGRkKDw93u09oaKgyMjKcP9tsNl9199I4FlDwFAoAAOAFpge7xYsXKykpSXfeeackadmyZdqwYYNWrFihRx991O0+NptNERERvuymZ7CIAgAAeJGpU7GFhYVKS0vT0KFDnWUBAQEaOnSoUlNTK9zv7NmzatOmjaKjozVq1CgdPHiwwroFBQXKzc11eZnm3nultDT768UX7WUzZ9q3q1bZPwcAALhIpga7n376SUVFRWrZsqVLecuWLZWdne12n7i4OK1YsULr16/XqlWrVFxcrP79++v77793Wz85OVlhYWHOV3R0tMd/j2qLjLQ/bcLxkqTLL7dvr7iCaVgAAHBJ/GLxRE0kJCRo/Pjx6t69uwYOHKh//etfatGihV544QW39WfMmKGcnBzn67vvvvNxj93IypK++sr+/uuv7ds9e0pejuvvAAAAasDUYNe8eXPVq1dPJ06ccCk/ceJEta+hCwwMVI8ePXTo0CG3nwcHBys0NNTlZboXXpBuv93+/okn7NukJKlnT/urgpAKAABQGVODXVBQkHr27KnNmzc7y4qLi7V582YlJCRUq42ioiLt379fkbVpGpNr7QAAgBeYvip22rRpmjBhgnr16qU+ffro6aefVl5ennOV7Pjx49WqVSslJydLkubPn69+/fqpQ4cOOn36tBYuXKhjx47p7rvvNvPXqBl3tzVxXGv3ySfS4MG+7xMAAKj1TA92Y8aM0Y8//qjZs2crOztb3bt318aNG50LKjIzMxUQUDKweOrUKSUlJSk7O1tNmjRRz549tXPnTnXu3NmsX+HiubvWbvlyacCAksUUtWkkEgAAmMpmGIZhdid8KTc3V2FhYcrJyTH/eru5c8vf16407msH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j7VZkZkzZ+rPf/6zcnJyvP5dAGqOYAfAqwYNGqSzZ89q9+7dzrLt27crIiJCu3btUn5+vrN869atiomJUfv27c3oaq107tw5vfzyy5o4caJPvq9Lly5q3769Vq1a5ZPvA1AzBDsAXhUXF6fIyEilpKQ4y1JSUjRq1CjFxsbqs88+cykfNGiQJGnjxo265ppr1LhxYzVr1kw33nijy0je8uXLFRUVpeLiYpfvGzVqlO666y5JUnFxsZKTkxUbG6sGDRqoW7dueueddyrsa3XqJyYm6oEHHtAjjzyipk2bKiIiQnPnznWpc+bMGY0bN06/+c1vFBkZqb///e/OUbo77rhD27Zt0zPPPCObzSabzeYyhVpcXFxp22W9//77Cg4OVr9+/VzKd+zYocDAQJfgfPToUdlsNh07dsz5/p///KcGDBigBg0aqHfv3srMzNT27dvVr18/NWzYUEOGDNHp06dd2h45cqTWrFlTab8AmINgB8DrBg0apK1btzp/3rp1qxITEzVw4EBn+fnz57Vr1y5nsMvLy9O0adO0e/dubd68WQEBAbrpppucQe73v/+9fv75Z5d2f/nlF23cuFHjxo2TJCUnJ+u1117TsmXLdPDgQU2dOlW33367tm3b5raf1a3/6quv6je/+Y127dqlp556SvPnz9emTZucn0+bNk2ffvqp/v3vf2vTpk3avn279uzZI0l65plnlJCQoKSkJGVlZSkrK0vR0dHVbrus7du3q2fPnuXK09PTdcUVV6h+/frOsr1796pJkyZq06aN9u3bJ0launSp/vKXv2jnzp06ceKEbr/9dj355JN6/vnntXXrVu3bt0+vvPKKS9t9+vTR559/roKCggr7BcAcl5ndAQDWN2jQID344IP69ddfdf78ee3du1cDBw7UhQsXtGzZMklSamqqCgoKnMHulltucWljxYoVatGihb788kt16dJFTZo00fDhw7V69WoNGTJEkvTOO++oefPmGjRokAoKCvSXv/xFH3/8sRISEiRJ7dq1044dO/TCCy9o4MCBLu3XpH58fLzmzJkjSerYsaOef/55bd68Wdddd53OnDmjV1991aVfr7zyiqKioiRJYWFhCgoKUsOGDRUREVHuWFXWtjvHjh1ztl3avn371KNHD5ey9PR0devWzfm+adOmevPNN9WsWTNJ0sCBA7Vjxw4dPHhQDRs2lCT17t1b2dnZLu1ERUWpsLBQ2dnZatOmjdt+ATAHI3YAvC4xMVF5eXn6z3/+o+3bt6tTp05q0aKFBg4c6LzOLiUlRe3atVNMTIwk6dtvv9XYsWPVrl07hYaGOhcGZGZmOtsdN26c/vnPfzpHjl5//XX94Q9/UEBAgA4dOqRz587puuuuU6NGjZyv1157ze3ijJrUj4+Pd/k5MjJSJ0+elCT997//1YULF9SnTx/n52FhYYqLi6vWsaqsbXfOnz/vMirnkJ6eru7du7uU7d2711m2b98+3XTTTc5QJ9mP7ZgxY5yhzlEWGxvr0k6DBg0k2a/vA+BfGLED4HUdOnRQ69attXXrVp06dco5+hUVFaXo6Gjt3LlTW7du1eDBg537jBw5Um3atNGLL77ovJauS5cuKiwsdKljGIY2bNig3r17a/v27fr73/8uyb7yVpI2bNigVq1aufQnODi4XB9rUj8wMNDlZ5vNVu5av4tV07abN2+uU6dOuZQVFRXpwIED5Ubs9uzZ4xwJTU9P14wZM1w+37dvn6ZOner8OT8/XxkZGc5RPodffvlFktSiRYtq/lYAfIVgB8AnBg0apJSUFJ06dUrTp093lg8YMEAffPCBPv/8c91///2S7Pdly8jI0Isvvqhrr71Wkn0xQFn169fXzTffrNdff12HDh1SXFycrrrqKklS586dFRwcrMzMzHLTru7UtH5F2rVrp8DAQP3nP/9xjj7m5OTom2++0YABAyRJQUFBKioquujvKK1Hjx7lVqhmZGQoPz/fZYo2NTVVP/zwg7p3767c3FwdPXrUJfgdOXJEOTk5LmX79++XYRjq2rWrS/sHDhxQ69at1bx5c4/8DgA8h2AHwCcGDRqkSZMm6cKFCy7BaeDAgZo8ebIKCwud19c1adJEzZo10/LlyxUZGanMzEw9+uijbtsdN26cbrzxRh08eFC33367szwkJEQPP/ywpk6dquLiYl1zzTXKycnRp59+qtDQUE2YMMGlnZrWr0hISIgmTJig6dOnq2nTpgoPD9ecOXMUEBAgm80mSWrbtq127dqlo0ePqlGjRmratKkCAi7uyphhw4ZpxowZOnXqlJo0aSLJPhonSc8995weeOABHTp0SA888IAkqbCwUPv27VO9evXUpUsXZzuOa+5KXzOXnp6u9u3bq1GjRi7fuX37dl1//fUX1V8A3sU1dgB8YtCgQTp//rw6dOigli1bOssHDhyoM2fOOG+LIkkBAQFas2aN0tLS1KVLF02dOlULFy502+7gwYPVtGlTZWRk6LbbbnP5bMGCBZo1a5aSk5N1xRVX6IYbbtCGDRvKXTN2sfUrsnjxYiUkJOjGG2/U0KFDdfXVV7usUH344YdVr149de7cWS1atHC5brCmunbtqquuukpvvfWWsyw9PV3Dhg3Tf//7X3Xt2lWPP/645s2bp9DQUD377LPat2+f4uLiXK7Nc7fYYt++feWmYfPz87Vu3TolJSVddJ8BeI/NMAzD7E4AgJXl5eWpVatWWrRokVduJLxhwwZNnz5dBw4cUEBAgIYNG6bevXvriSee8Ph3LV26VGvXrtVHH33k8bYBXDqmYgHAw/bu3auvv/5affr0UU5OjubPny/JfvNkbxgxYoS+/fZb/fDDD4qOjta+ffucN2n2tMDAQD333HNeaRvApWPEDgA8bO/evbr77ruVkZGhoKAg9ezZU4sXLy63CMEbsrOzFRkZqYMHD6pz585e/z4A/oVgBwAAYBEsngAAALAIgh0AAIBFEOwAAAAsgmAHAABgEQQ7AAAAiyDYAQAAWATBDgAAwCIIdgAAABZBsAMAALAIgh0AAIBFEOwAAAAs4v8Dqyvit01EPA4AAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from tidy3d.plugins.dispersion import AdvancedFastFitterParam, FastDispersionFitter\n",
    "\n",
    "fname = \"misc/nk_data.csv\"\n",
    "\n",
    "# note that additional keyword arguments to load_nk_file get passed to np.loadtxt\n",
    "fitter = FastDispersionFitter.from_file(fname, skiprows=1, delimiter=\",\")\n",
    "\n",
    "# lets plot the data\n",
    "fitter.plot()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Fitting the data\n",
    "\n",
    "The fitting tool fit a dispersion model to the data by minimizing the root mean squared (RMS) error between the model n,k prediction and the data at the given wavelengths.\n",
    "\n",
    "There are various fitting parameters that can be set, but the most important is the number of \"poles\" in the model.\n",
    "\n",
    "For each pole, there are 4 degrees of freedom in the model.  Adding more poles can produce a closer fit, but each additional pole added will make the fit harder to obtain and will slow down the FDTD.  Therefore, it is best to try the fit with few poles and increase until the results look good.\n",
    "\n",
    "Here, we will first try fitting the data with 1 pole and specify the RMS value that we are happy with (`tolerance_rms`).\n",
    "\n",
    "We specify weights for the real and imaginary part of the permittivity using `AdvancedFastFitterParam`, although the default weights which are calculated based on the typical values would also work fine here. Also note that, by default, `eps_inf` is optimized, although alternatively a fixed value for `eps_inf` can be specified as an argument to `fitter.fit`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "768c2aff40804ebb9f69d09e1592ff36",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"><span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">14:17:35 UTC </span><span style=\"color: #800000; text-decoration-color: #800000\">WARNING: Unable to fit with weighted RMS error under               </span>\n",
       "<span style=\"color: #7fbfbf; text-decoration-color: #7fbfbf\">             </span><span style=\"color: #008000; text-decoration-color: #008000\">'tolerance_rms'</span><span style=\"color: #800000; text-decoration-color: #800000\"> of </span><span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0.02</span><span style=\"color: #800000; text-decoration-color: #800000\">                                            </span>\n",
       "</pre>\n"
      ],
      "text/plain": [
       "\u001b[2;36m14:17:35 UTC\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING: Unable to fit with weighted RMS error under               \u001b[0m\n",
       "\u001b[2;36m             \u001b[0m\u001b[32m'tolerance_rms'\u001b[0m\u001b[31m of \u001b[0m\u001b[1;36m0.02\u001b[0m\u001b[31m                                            \u001b[0m\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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mDbNvI7dpEkGVWZV4fyV8+x7ch+t/Fsxc6YZ6nSBYhERESmIEnnnibS0NFatWkVSUhJhYWE51tmxYwfdu3e3K+vVqxc7duzItd2UlBQSEhLsNkexXpz4xZlxnL9yHjeLG42rNLZNz7q7O+yjRURERJx/HbuDBw8SFhZGcnIy3t7erF69mqZNm+ZYNy4ujurVq9uVVa9enbi4uFzbj4iIYPr06YXa59zYrl+39DAMggaVGjArooztjhO65ImIiIg4ktNH7Bo1akRkZCQ7d+5k5MiRDB48mCNHjhRa+xMnTiQ+Pt62nTp1qtDazsnkyXD3YPP8uqPbmivUiYiISJFx+oidp6cn9evXB6B169b89NNPzJ07l3fffTdbXX9/f86cOWNXdubMGfz9/XNt38vLCy8vr8Lt9A189tIIKjTsyLWU2/D0VKgTERGRouH0Ebvrpaenk5KSkuO+sLAwNmzYYFe2fv36XM/Jc5Y5r5Xn2sm2eJ4PJTVVlzgRERGRouHUYDdx4kS+//57Tpw4wcGDB5k4cSKbN29mwIABAAwaNIiJEyfa6j/33HOsW7eO2bNn88svvzBt2jR2797N6NGjnfUVsrEulJgxA1JSdP06ERERKTpOnYo9e/YsgwYNIjY2Fj8/P0JCQvjvf/9Ljx49AIiJicHNLTN7dujQgRUrVjBp0iT+8Y9/0KBBA9asWUPz5s2d9RXsZA111ulX24KKKfavRURERApbsbuOnaMVxXXscgpvuo6diIiI3IyCZBcFOxEREZFirEReoFhEREREbo2CnYiIiIiLULATERERcREKdiIiIiIuQsFORERExEUo2ImIiIi4CAU7ERERERehYCciIiLiIhTsRERERFyEgp2IiIiIi1CwExEREXERCnYiIiIiLkLBTkRERMRFKNiJiIiIuAgFOxEREREXoWAnIiIi4iIU7ERERERchIKdiIiIiItQsBMRERFxEQp2IiIiIi5CwU5ERETERSjYiYiIiLgIBTsRERERF6FgJyIiIuIiFOxEREREXISCnYiIiIiLULATERERcREKdiIiIiIuQsFORERExEUo2ImIiIi4CAU7ERERERehYCciIiLiIhTsRERERFyEgp2IiIiIi1CwExEREXERCnYiIiIiLkLBTkRERMRFKNiJiIiIuAgFOxEREREXoWAnIiIi4iIU7ERERERchFODXUREBG3btsXHx4dq1arRr18/oqKi8nzP0qVLsVgsdluZMmWKqMciIiIixZdTg92WLVsYNWoUP/74I+vXr+fq1av07NmTpKSkPN/n6+tLbGysbTt58mQR9VhERESk+LrNmR++bt06u9dLly6lWrVq7Nmzh06dOuX6PovFgr+/v6O7JyIiIlKiFKtz7OLj4wGoVKlSnvUSExOpXbs2QUFB9O3bl8OHD+daNyUlhYSEBLtNRERExBUVm2CXnp7OmDFj6NixI82bN8+1XqNGjVi8eDFr165l2bJlpKen06FDB37//fcc60dERODn52fbgoKCHPUVRERERJzKYhiG4exOAIwcOZJvv/2WH374gZo1a+b7fVevXqVJkyb079+fmTNnZtufkpJCSkqK7XVCQgJBQUHEx8fj6+tbKH0XERERcZSEhAT8/PzylV2ceo6d1ejRo/nqq6/4/vvvCxTqADw8PAgNDeXYsWM57vfy8sLLy6swuikiIiJSrDl1KtYwDEaPHs3q1avZuHEjwcHBBW4jLS2NgwcPEhAQ4IAeioiIiJQcTh2xGzVqFCtWrGDt2rX4+PgQFxcHgJ+fH2XLlgVg0KBB1KhRg4iICABmzJjBHXfcQf369bl48SKzZs3i5MmTDB8+3GnfQ0RERKQ4cGqwW7BgAQDh4eF25UuWLGHIkCEAxMTE4OaWObB44cIFRowYQVxcHBUrVqR169Zs376dpk2bFlW3RURERIqlYrN4oqgU5AREEREREWcrSHYpNpc7EREREZFbo2AnIiIi4iIU7ERERERchIKdiIiIiItQsBMRERFxEQp2IiIiIi5CwU5ERETERSjYiYiIiLgIBTsRERERF6FgJyIiIuIiFOxEREREXISCnYiIiIiLULATERERcREKdiIiIiIuQsFORERExEUo2ImIiIi4CAU7ERERERehYCciIiLiIhTsRERERFyEgp2IiIiIi1CwExEREXERCnYiIiIiLkLBTkRERMRFKNiJiIiIuAgFOxEREREXoWAnIiIi4iIU7ERERERchIKdiIiIiItQsBMRERFxEQp2IiIiIi7iNmd3QERERG5eWloaV69edXY35BZ4eHjg7u5eKG0p2ImIiJRAhmEQFxfHxYsXnd0VKQQVKlTA398fi8VyS+0o2ImIiJRA1lBXrVo1ypUrd8uBQJzDMAwuX77M2bNnAQgI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CxSPGjWKFStWsHbtWnx8fGznyfn5+VG2bFkABg0aRI0aNYiIiADgueeeo3PnzsyePZt7772XVatWsXv3bhYtWuS07yEiIiKONWTIEGd3web6RZzFiVNH7BYsWEB8fDzh4eEEBATYto8//thWJyYmhtjYWNvrDh06sGLFChYtWkTLli357LPPWLNmTZ4LLkRERERKA6eO2OXn9D7rfduyevjhh3n44Ycd0CMRERGRkqvYrIoVERERkVujYCciIiLiIhTsRERERFyEgp2IiIiIi1CwExEREXERCnYiIiJSJMLDw+3uHJVfkydP5oknnnBI2wV17tw5qlWrxu+//+7wz7oZCnYiIiJSbMXFxTF37lxefvnlQm138+bNWCwWLl68WKD3ValShUGDBjF16tRC7U9hUbATEREpzWJjYdo087EYev/99+nQoQO1a9d2dldshg4dyvLlyzl//ryzu5KNgp2IiEhpFhsL06c7Jdh9/fXX+Pn5sXz58lzrrFq1ij59+tiVJSUlMWjQILy9vQkICGD27NnZ3vfvf/+bNm3a4OPjg7+/P48++ihnz54F4MSJE3Tp0gWAihUrYrFYbLcsW7duHXfeeScVKlSgcuXK3HfffRw/ftyu7WbNmhEYGMjq1atv5es7hIKdiIiIFLkVK1bQv39/li9fzoABA3Ksc/78eY4cOUKbNm3syidMmMCWLVtYu3Yt3333HZs3b2bv3r12da5evcrMmTPZv38/a9as4cSJE7bwFhQUxOeffw5AVFQUsbGxzJ07FzBD47hx49i9ezcbNmzAzc2NBx54gPT0dLv227Vrx9atWwvjUBSqAt9SLCEhAV9f3xz3HTt2jPr1699yp0RERMSBYmMzR+isgShrMAoIMDcHmT9/Pi+//DJffvklnTt3zrVeTEwMhmEQGBhoK0tMTOSDDz5g2bJldOvWDYAPP/yQmjVr2r338ccftz2vW7cub7/9Nm3btiUxMRFvb28qVaoEQLVq1ahQoYKt7kMPPWTXzuLFi6latSpHjhyxuy99YGAg+/btK/iXd7ACj9jde++9pKSkZCuPiooiPDy8MPokIiIijvTuu9C6tbmNGGGWjRiRWfbuuw776M8++4yxY8eyfv36PEMdwJUrVwAoU6aMrez48eOkpqbSvn17W1mlSpVo1KiR3Xv37NlDnz59qFWrFj4+PrbPiomJyfMzf/31V/r370/dunXx9fWlTp06Ob6vbNmyXL58Oe8v6wQFDnbe3t488MADXLt2zVb2888/Ex4eni3lioiISDH05JOwZ4+5vfeeWfbee5llTz7psI8ODQ2latWqLF68GMMw8qxbpUoVAC5cuFCgz0hKSqJXr174+vqyfPlyfvrpJ9v5cKmpqXm+t0+fPpw/f5733nuPnTt3snPnzhzfd/78eapWrVqgfhWFAge7//znP8THxzNgwAAMw+DQoUOEh4fTv39/2/y0iIiIFGMBAXD77Zkb2L924DRsvXr12LRpE2vXruWZZ565YV1fX1+OHDliV+bh4WELXGAGv6NHj9pe//LLL/z111+8+uqr3HXXXTRu3Ni2cMLK09MTgLS0NFvZX3/9RVRUFJMmTaJbt240adIk11B56NAhQkND8//Fi0iBg13ZsmX5+uuviYqK4m9/+xvdunVj0KBBzJkzxxH9ExERERfTsGFDNm3axOeff57nRYXd3Nzo3r07P/zwg63M29ubYcOGMWHCBDZu3MihQ4cYMmQIbm6ZkaZWrVp4enryzjvv8Ntvv/HFF18wc+ZMu7Zr166NxWLhq6++4s8//yQxMZGKFStSuXJlFi1axLFjx9i4cSPjxo3L1q/Lly+zZ88eevbseesHo5DlK9glJCTYbW5ubnz88cfs3LmThx56iMmTJ9v2iYiISAkSEABTpzp0lC4njRo1YuPGjaxcuZLnn38+13rDhw9n1apVdqtSZ82axV133UWfPn3o3r07d955J61bt7btr1q1KkuXLuXTTz+ladOmvPrqq7zxxht27daoUYPp06fz0ksvUb16dUaPHo2bmxurVq1iz549NG/enLFjxzJr1qxsfVq7di21atXirrvuKoQjUbgsxo0muDETs8ViyVZufavFYsEwDCwWi92QZnGUkJCAn58f8fHxua7uFRERKc6Sk5OJjo4mODjYbmGBKzIMg/bt2zN27Fj69+/v7O4AcMcdd/Dss8/y6KOPFlqbef2ZFiS75OtyJ5s2bbr5noqIiIjcJIvFwqJFizh48KCzuwKY94p98MEHi03IvF6+RuxciUbsRESkpCtNI3alRWGN2OnOEyIiIiIuQsFORERExEUo2ImIiIi4CAU7ERERERehYCciIiLiIgo12HXt2pWZM2cWy5viioiIiLi6Qg12tWrVYsOGDTRu3LgwmxURERGRfCjUYLd06VI2b97MoUOHCrNZERERKcVSU1OpX78+27dvL/LPPnHiBBaLhcjIyHy/Jzw83O4euHfccQeff/554XcuBw45x04X/hUREZHCsnDhQoKDg+nQoYOzu3JTJk2axEsvvWR3v1tHydctxa63YcMGNmzYwNmzZ7N1cvHixYXSMRERERHDMJg3bx4zZsxwdlduWu/evRk+fDjffvst9957r0M/q8AjdtOnT6dnz55s2LCBc+fOceHCBbtNREREJCfh4eE8++yzvPDCC1SqVAl/f3+mTZuW53v27NnD8ePH7QKRdXr0k08+4a677qJs2bK0bduWo0eP8tNPP9GmTRu8vb3p3bs3f/75p+196enpzJgxg5o1a+Ll5UWrVq1Yt26d3eft2rWL0NBQypQpQ5s2bdi3b1+2Ph06dIjevXvj7e1N9erVeeyxxzh37lyu38Hd3Z177rmHVatW5fNI3bwCj9gtXLiQpUuX8thjjzmiPyIiIlJAhmFw+apzrkhRzqMcFosl3/U//PBDxo0bx86dO9mxYwdDhgyhY8eO9OjRI8f6W7dupWHDhvj4+GTbN3XqVN566y1q1arF448/zqOPPoqPjw9z586lXLly/O1vf2PKlCksWLAAgLlz5zJ79mzeffddQkNDWbx4Mffffz+HDx+mQYMGJCYmct9999GjRw+WLVtGdHQ0zz33nN1nXrx4ka5duzJ8+HDefPNNrly5wosvvsjf/vY3Nm7cmOv3bteuHa+++mq+j9PNKnCwS01NLbFz3CIiIq7o8tXLeEd4O+WzEycmUt6zfL7rh4SEMHXqVAAaNGjAvHnz2LBhQ67B7uTJkwQGBua4b/z48fTq1QuA5557jv79+7NhwwY6duwIwLBhw1i6dKmt/htvvMGLL77I3//+dwBee+01Nm3axFtvvcX8+fNZsWIF6enpfPDBB5QpU4ZmzZrx+++/M3LkSFsb8+bNIzQ0lFdeecVWtnjxYoKCgjh69CgNGzbMsa+BgYGcOnWK9PR03NwcdxnhArc8fPhwVqxY4Yi+iIiIiIsLCQmxex0QEMDZs2dzrX/lyhXKlClzw7aqV68OQIsWLezKrG0nJCRw+vRpW+iz6tixIz///DMAP//8MyEhIXafFxYWZld///79bNq0CW9vb9tmvczb8ePHc/0eZcuWJT09nZSUlFzrFIYCj9glJyezaNEi/ve//xESEoKHh4fd/jlz5hRa50REROTGynmUI3FiotM+uyCuzw0WiyXP1aJVqlTh4MGDN2zLOh18fVlhr0RNTEykT58+vPbaa9n2BQQE5Pq+8+fPU758ecqWLVuo/blegYPdgQMHaNWqFUC269UVZI5dRERECofFYinQdGhJEhoayoIFCzAM45Zyhq+vL4GBgWzbto3OnTvbyrdt20a7du0AaNKkCf/+979JTk62jdr9+OOPdu3cfvvtfP7559SpU4fbbst/jDp06BChoaE33f/8KnCw27RpkyP6ISIiIpJNly5dSExM5PDhwzRv3vyW2powYQJTp06lXr16tGrViiVLlhAZGcny5csBePTRR3n55ZcZMWIEEydO5MSJE7zxxht2bYwaNYr33nuP/v3721b3Hjt2jFWrVvH+++/j7u6e42dv3bqVnj173lL/88NxZ++JiIiI3KLKlSvzwAMP2MLXrXj22WcZN24czz//PC1atGDdunV88cUXNGjQAABvb2++/PJLDh48SGhoKC+//HK2KVfrqF9aWho9e/akRYsWjBkzhgoVKuS6KOKPP/5g+/btDB069Ja/w41YDMMwHP4pxUhCQgJ+fn7Ex8frDhkiIlIiJScnEx0dTXBwcK4LC1zJgQMH6NGjB8ePH8fb2zmrf2/Fiy++yIULF1i0aFGudfL6My1IdtGInYiIiBRrISEhvPbaa0RHRzu7KzelWrVqzJw5s0g+66ZuKSYiIiJSlIYMGeLsLty0559/vsg+SyN2IiIiIi5CwU5ERETERSjYiYiIiLgIpwa777//nj59+hAYGIjFYmHNmjV51t+8eTMWiyXbFhcXVzQdFhERESnGnBrskpKSaNmyJfPnzy/Q+6KiooiNjbVt1apVc1APRUREREoOp66K7d27N7179y7w+6pVq0aFChUKv0MiIiIiJViJPMeuVatWBAQE0KNHD7Zt25Zn3ZSUFBISEuw2EREREVdUooJdQEAACxcu5PPPP+fzzz8nKCiI8PBw9u7dm+t7IiIi8PPzs21BQUFF2GMRERGxCg8PZ8yYMQV+3+TJk3niiScKv0P5UNA+L1261G5WceHChfTp06fwO5aLEnWB4kaNGtGoUSPb6w4dOnD8+HHefPNN/v3vf+f4nokTJzJu3Djb64SEBIU7ERGREiIuLo65c+dy8OBBZ3flpjz++OPMnDmTrVu3ctdddzn880rUiF1O2rVrx7Fjx3Ld7+Xlha+vr90mIiIiJcP7779Phw4dqF27trO7clM8PT159NFHefvtt4vk80p8sIuMjCQgIMDZ3RAREZEC+vrrr/Hz82P58uW51lm1alW2qczw8HCeeeYZxowZQ8WKFalevTrvvfceSUlJDB06FB8fH+rXr8+3335r974tW7bQrl07vLy8CAgI4KWXXuLatWu2/UlJSQwaNAhvb28CAgKYPXt2tv6kpKQwfvx4atSoQfny5Wnfvj2bN2/O83v26dOHL774gitXruTjqNwapwa7xMREIiMjiYyMBCA6OprIyEhiYmIAcxp10KBBtvpvvfUWa9eu5dixYxw6dIgxY8awceNGRo0a5Yzui4iIFA+GAdeSnLMZxk11ecWKFfTv35/ly5czYMCAHOucP3+eI0eO0KZNm2z7PvzwQ6pUqcKuXbt45plnGDlyJA8//DAdOnRg79699OzZk8cee4zLly8D8Mcff3DPPffQtm1b9u/fz4IFC/jggw/45z//aWtzwoQJbNmyhbVr1/Ldd9+xefPmbOfxjx49mh07drBq1SoOHDjAww8/zN13382vv/6a63dt06YN165dY+fOnTdzqArEqefY7d69my5dutheW8+FGzx4MEuXLiU2NtYW8gBSU1N5/vnn+eOPPyhXrhwhISH873//s2tDRESk1Em7DJ94O+ez/5YIt5Uv0Fvmz5/Pyy+/zJdffknnzp1zrRcTE4NhGAQGBmbb17JlSyZNmgSYA0GvvvoqVapUYcSIEQBMmTKFBQsWcODAAe644w7+7//+j6CgIObNm4fFYqFx48acPn2aF198kSlTpnD58mU++OADli1bRrdu3QAzPNasWdOuP0uWLCEmJsbWp/Hjx7Nu3TqWLFnCK6+8kuP3KFeuHH5+fpw8ebJAx+lmODXYhYeHY+SR9JcuXWr3+oUXXuCFF15wcK9ERETEUT777DPOnj3Ltm3baNu2bZ51rVOXZcqUybYvJCTE9tzd3Z3KlSvTokULW1n16tUBOHv2LAA///wzYWFhWCwWW52OHTuSmJjI77//zoULF0hNTaV9+/a2/ZUqVbJbtHnw4EHS0tJo2LChXV9SUlKoXLlynt+lbNmyttFDRypRq2JFREQkB+7lzJEzZ312AYSGhrJ3714WL15MmzZt7ILW9apUqQLAhQsXqFq1qt0+Dw8Pu9cWi8WuzNpuenp6gfqXl8TERNzd3dmzZw/u7u52+7y98x4xPX/+fLbv4AgKdiIiIiWdxVLg6VBnqVevHrNnzyY8PBx3d3fmzZuXZ11fX1+OHDmSbZSsoJo0acLnn3+OYRi20Ldt2zZ8fHyoWbMmlSpVwsPDg507d1KrVi3ADJRHjx61TReHhoaSlpbG2bNnC3TpkuPHj5OcnExoaOgtfYf8KPGrYkVERKRkadiwIZs2beLzzz/P8+K/bm5udO/enR9++OGWP/Ppp5/m1KlTPPPMM/zyyy+sXbuWqVOnMm7cONzc3PD29mbYsGFMmDCBjRs3cujQIYYMGYKbW2ZUatiwIQMGDGDQoEH85z//ITo6ml27dhEREcHXX3+d62dv3bqVunXrUq9evVv+HjeiYCciIiJFrlGjRmzcuJGVK1fy/PPP51pv+PDhrFq16panVGvUqME333zDrl27aNmyJU899RTDhg2zLcAAmDVrFnfddRd9+vShe/fu3HnnnbRu3dqunSVLljBo0CCef/55GjVqRL9+/fjpp59so3w5WblypW1Rh6NZjLxWL7ighIQE/Pz8iI+P18WKRUSkREpOTiY6Oprg4OAcFxa4EsMwaN++PWPHjqV///7O7k6BHT58mK5du3L06FH8/PxyrZfXn2lBsotG7ERERKTYslgsLFq0yO5CwiVJbGwsH330UZ6hrjBp8YSIiIgUa61ataJVq1bO7sZN6d69e5F+nkbsRERERFyEgp2IiIiIi1CwExEREXERCnYiIiIlVGHeVUGcq7D+LLV4QkREpITx9PTEzc2N06dPU7VqVTw9PfO8NZcUX4ZhkJqayp9//ombmxuenp631J6CnYiISAnj5uZGcHAwsbGxnD592tndkUJQrlw5atWqZXeni5uhYCciIlICeXp6UqtWLa5du0ZaWpqzuyO3wN3dndtuu61QRl0V7EREREooi8WCh4cHHh4ezu6KFBNaPCEiIiLiIhTsRERERFyEgp2IiIiIi1CwExEREXERCnYiIiIiLkLBTkRERMRFKNiJiIiIuAgFOxEREREXoWAnIiIi4iIU7ERERERchIKdiIiIiItQsBMRERFxEQp2IiIiIi5CwU5ERETERSjYiYiIiLgIBTsRERERF6FgJyIiIuIiFOxEREREXISCnYiIiIiLULATERERcREKdiIiIiIuQsFORERExEUo2ImIiIi4CAU7ERERERehYCciIiLiIhTsRERERFyEgp2IiIiIi3BqsPv+++/p06cPgYGBWCwW1qxZc8P3bN68mdtvvx0vLy/q16/P0qVLHd5PERERkZLAqcEuKSmJli1bMn/+/HzVj46O5t5776VLly5ERkYyZswYhg8fzn//+18H91RERESk+LvNmR/eu3dvevfune/6CxcuJDg4mNmzZwPQpEkTfvjhB95880169erlqG6KiIiIlAgl6hy7HTt20L17d7uyXr16sWPHDif1SERERKT4cOqIXUHFxcVRvXp1u7Lq1auTkJDAlStXKFu2bLb3pKSkkJKSYnudkJDg8H6KiIiIOEOJGrG7GREREfj5+dm2oKAgZ3dJRERExCFKVLDz9/fnzJkzdmVnzpzB19c3x9E6gIkTJxIfH2/bTp06VRRdFRERESlyJWoqNiwsjG+++caubP369YSFheX6Hi8vL7y8vBzdNRERERGnc+qIXWJiIpGRkURGRgLm5UwiIyOJiYkBzNG2QYMG2eo/9dRT/Pbbb7zwwgv88ssv/N///R+ffPIJY8eOdUb3RURERIoVpwa73bt3ExoaSmhoKADjxo0jNDSUKVOmABAbG2sLeQDBwcF8/fXXrF+/npYtWzJ79mzef/99XepEREREBLAYhmE4uxNFKSEhAT8/P+Lj4/H19XV2d0RERETyVJDsUqIWT4iIiIhI7hTsRERERFyEgp2IiIiIi1CwExEREXERCnYiIiIiLkLBTkRERMRFKNiJiIiIuAgFOxEREREXoWAnIiIi4iIU7ERERERchIKdiIiIiItQsBMRERFxEQp2IiIiIi5CwU5ERETERSjYiYiIiLgIBTsRERERF6FgJyIiIuIiFOxEREREXISCnYiIiIiLULATERERcREKdiIiIiIuQsFORERExEUo2ImIiIi4CAU7R0lLhrRUZ/dCRERESpHbnN0Bl3R6HeweBdX+Dus84MknISDA2b0SERERF6cRO0dIPguJv8GJt2DudIiNdXaPREREpBRQsHOE4IHgezukX4ZHgD//hGnTFPBERETEoRTsCltsLOyLhPi+5utOwO6PYfp02LhR4U5EREQcRsGusL37LrRuDQOnwtaMsj+XmI8DB5r7RURERBxAwa4wxcZC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5rZ2rOfcZT1nLjIyknr16uHt7W33mVu3bqVnz5431V8RcSydYyciRaJLly5cuXKF+vXrU716dVt5586duXTpku2yKABubm6sWrWKPXv20Lx5c8aOHcusWbNybLdr165UqlSJqKgoHn30Ubt9M2fOZPLkyURERNCkSRPuvvtuvv7662znjN1s/dzMmTOHsLAw7rvvPrp3707Hjh3tVqiOHz8ed3d3mjZtStWqVe3OGyyoFi1acPvtt/PJJ5/YyiIjI+nVqxe//fYbLVq04OWXX2b69On4+vry9ttvs3//fho1amR3bl5Oiy3279+fbRo2OTmZNWvWMGLEiJvus4g4jsUwDMPZnRARcWVJSUnUqFGD2bNnO+RCwl9//TUTJkzg0KFDuLm50atXL9q2bcs///nPQv+sBQsWsHr1ar777rtCb1tEbp2mYkVECtm+ffv45ZdfaNeuHfHx8cyYMQMwL57sCPfeey+//vorf/zxB0FBQezfv992kebC5uHhwTvvvOOQtkXk1mnETkSkkO3bt4/hw4cTFRWFp6cnrVu3Zs6cOdkWIThCXFwcAQEBHD58mKZNmzr880SkeFGwExEREXERWjwhIiIi4iIU7ERERERchIKdiIiIiItQsBMRERFxEQp2IiIiIi5CwU5ERETERSjYiYiIiLgIBTsRERERF6FgJyIiIuIiFOxEREREXISCnYiIiIiL+P8Ow+hYG+vuZQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "advanced_param = AdvancedFastFitterParam(weights=(1, 1))\n",
    "medium, rms_error = fitter.fit(max_num_poles=1, advanced_param=advanced_param, tolerance_rms=2e-2)\n",
    "fitter.plot(medium)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The RMS error was above our tolerance and there is room for improvement at short wavelengths, so we might want to try more fits.\n",
    "\n",
    "Let's now try a fit with up to 3 poles."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f5881fed70e0445a844cef1ef67836a7",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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zMxMVqxYQWpqKuHh4fnW2bZtGz179rQr69OnD9u2bSuw3fT0dJKTk+02R7FenHjGDIMDf5qjjro4sYiIiJQWp1/Hbt++fYSHh5OWloa3tzcrV66kefPm+dZNTEykVq1admW1atUiMTGxwPajo6OZPn16ifa5ILbr1738J4w/gwUL/32nCf+aqosTi4iIiOM5fcSuSZMmxMTEsH37dh5//HEeeeQRDh48WGLtT5w4kaSkJNt24sSJEms7P5Mnw5AJZv+Ns/X419RKCnUiIiJSKpw+Yufp6UnDhg0BaNu2LT/99BNz5szh7bffzlPX39+fkydP2pWdPHkSf3//Atv38vLCy8urZDt9Fe36HmTRl8CfzfH0VKgTERGR0uH0EbsrZWVlkZ6enu++8PBw1q9fb1e2bt26As/Jc5ajX90Fny7hpl2jyMjQJU5ERESkdDh1xG7ixIn07duX4OBgzp8/z7Jly9i0aRNff/01AJGRkdSuXZvo6GgAnn76abp27cqsWbO46667WLFiBTt27GDBggXO/Bp2oqJg9tS6zJhRl8mTc65rBxq5ExEREcdyarA7deoUkZGRJCQk4OfnR2hoKF9//TW9evUCID4+Hje3nEHFTp06sWzZMiZNmsTzzz9Po0aNWLVqFS1atHDWV7BjDXG5z6mzLahQuBMREREHK3PXsXO00rqO3ZV0HTsRERG5FsXJLgp2IiIiImVYubxAsYiIiIhcHwU7ERERERehYCciIiLiIhTsRERERFyEgp2IiIiIi1CwExEREXERCnYiIiIiLkLBTkRERMRFKNiJiIiIuAgFOxEREREXoWAnIiIi4iIU7ERERERchIKdiIiIiItQsBMRERFxEQp2IiIiIi5CwU5ERETERSjYiYiIiLgIBTsRERERF6FgJyIiIuIiFOxEREREXISCnYiIiIiLULATERERcREKdiIiIiIuQsFORERExEUo2ImIiIi4CAU7ERERERehYCciIiLiIhTsRERERFyEgp2IiIiIi1CwExEREXERCnYiIiIiLkLBTkRERMRFKNiJiIiIuAgFOxEREREXoWAnIiIi4iIU7ERERERchIKdiIiIiItQsBMRERFxEQp2IiIiIi5CwU5ERETERSjYiYiIiLgIpwa76Oho2rdvj4+PDzVr1mTAgAHExsYW+p7FixdjsVjstgoVKpRSj0VERETKLqcGu82bNzNy5Eh++OEH1q1bx6VLl+jduzepqamFvs/X15eEhATbdvz48VLqsYiIiEjZdZMzP3zt2rV2rxcvXkzNmjXZuXMnt99+e4Hvs1gs+Pv7O7p7IiIiIuVKmTrHLikpCYCqVasWWi8lJYW6desSFBRE//79OXDgQIF109PTSU5OtttEREREXFGZCXZZWVmMHj2azp0706JFiwLrNWnShIULF7J69WqWLFlCVlYWnTp14rfffsu3fnR0NH5+frYtKCjIUV9BRERExKkshmEYzu4EwOOPP85XX33Fd999R506dYr8vkuXLtGsWTMGDhxIVFRUnv3p6emkp6fbXicnJxMUFERSUhK+vr4l0ncRERERR0lOTsbPz69I2cWp59hZjRo1ii+++IJvv/22WKEOwMPDg7CwMI4cOZLvfi8vL7y8vEqimyIiIiJlmlOnYg3DYNSoUaxcuZINGzYQEhJS7DYyMzPZt28fAQEBDuihiIiISPnh1BG7kSNHsmzZMlavXo2Pjw+JiYkA+Pn5UbFiRQAiIyOpXbs20dHRAMyYMYNbb72Vhg0bcu7cOWbOnMnx48cZPny4076HiIiISFng1GA3b948ACIiIuzKFy1axODBgwGIj4/HzS1nYPHs2bOMGDGCxMREqlSpQtu2bdm6dSvNmzcvrW6LiIiIlEllZvFEaSnOCYgiIiIizlac7FJmLnciIiIiItdHwU5ERETERSjYiYiIiLgIBTsRERERF6FgJyIiIuIiFOxEREREXISCnYiIiIiLULATERERcREKdiIiIiIuQsFORERExEUo2ImIiIi4CAU7ERERERehYCciIiLiIhTsRERERFyEgp2IiIiIi1CwExEREXERCnYiIiIiLkLBTkRERMRFKNiJiIiIuAgFOxEREREXoWAnIiIi4iIU7ERERERchIKdiIiIiItQsBMRERFxEQp2IiIiIi5CwU5ERETERSjYiYiIiLgIBTsRERERF6FgJyIiIuIiFOxEREREXMRNzu6AiIiIXLvMzEwuXbrk7G7IdfDw8MDd3b1E2lKwExERKYcMwyAxMZFz5845uytSAipXroy/vz8Wi+W62lGwExERKYesoa5mzZpUqlTpugOBOIdhGFy4cIFTp04BEBAQcF3tKdiJiIiUM5mZmbZQV61aNWd3R65TxYoVATh16hQ1a9a8rmlZLZ4Q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FmJiYor8noiICLt74N566618+umnJd+5fDjkHDtd+FdERERKyvz58wkJCaFTp07O7so1mTRpEs8995zd/W4dpUi3FLvS+vXrWb9+PadOncrTyYULF5ZIx0REREQMw+Ctt95ixowZzu7KNevbty/Dhw/nq6++4q677nLoZxV7xG769On07t2b9evXc/r0ac6ePWu3iYiIiOQnIiKCp556igkTJlC1alX8/f2ZNm1aoe/ZuXMnR48etQtE1unRjz76iC5dulCxYkXat2/P4cOH+emnn2jXrh3e3t707duXP//80/a+rKwsZsyYQZ06dfDy8qJ169asXbvW7vN+/PFHwsLCqFChAu3atWP37t15+rR//3769u2Lt7c3tWrV4h//+AenT58u8Du4u7tz5513smLFiiIeqWtX7BG7+fPns3jxYv7xj384oj8iIiJSTIZhcOGSc65IUcmjEhaLpcj133//fcaOHcv27dvZtm0bgwcPpnPnzvTq1Svf+lu2bKFx48b4+Pjk2Td16lRef/11goODGTp0KA899BA+Pj7MmTOHSpUq8cADDzBlyhTmzZsHwJw5c5g1axZvv/02YWFhLFy4kL/97W8cOHCARo0akZKSwt13302vXr1YsmQJcXFxPP3003afee7cObp3787w4cN57bXXuHjxIs8++ywPPPAAGzZsKPB7d+jQgZdeeqnIx+laFTvYZWRklNs5bhEREVd04dIFvKO9nfLZKRNTuNnz5iLXDw0NZerUqQA0atSIt956i/Xr1xcY7I4fP05gYGC++8aNG0efPn0AePrppxk4cCDr16+nc+fOAAwbNozFixfb6r/66qs8++yz/P3vfwfg5ZdfZuPGjbz++uvMnTuXZcuWkZWVxXvvvUeFChW45ZZb+O2333j88cdtbbz11luEhYXx73//21a2cOFCgoKCOHz4MI0bN863r4GBgZw4cYKsrCzc3Bx3GeFitzx8+HCWLVvmiL6IiIiIiwsNDbV7HRAQwKlTpwqsf/HiRSpUqHDVtmrVqgVAy5Yt7cqsbScnJ/PHH3/YQp9V586dOXToEACHDh0iNDTU7vPCw8Pt6u/Zs4eNGzfi7e1t26yXeTt69GiB36NixYpkZWWRnp5eYJ2SUOwRu7S0NBYsWMD//vc/QkND8fDwsNs/e/bsEuuciIiIXF0lj0qkTExx2mcXx5W5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TupV2VO5cmUaN27MkSNHnN2VMsP6+9Bvp3D169enevXqN8RvZ9SoUXzxxRds3LiROnXq2Mr9/f3JyMjg3LlzdvVvlN9KQcclPx07dgRw+d+Lp6cnDRs2pG3btkRHR9OqVSvmzJlzQ/9WCjom+blRfidXo2CXD09PT9q2bcv69ettZVlZWaxfv95ubv9Gl5KSwtGjRwkICHB2V8qMkJAQ/P397X47ycnJbN++Xb+dXH777Tf++usvl/7tGIbBqFGjWLlyJRs2bCAkJMRuf9u2bfHw8LD7rcTGxhIfH+/Sv5WrHZf8xMTEALj07yU/WVlZpKen37C/lfxYj0l+btTfSR7OXr1RVq1YscLw8vIyFi9ebBw8eNB49NFHjcqVKxuJiYnO7prTPPPMM8amTZuMuLg44/vvvzd69uxpVK9e3Th16pSzu1aqzp8/b+zevdvYvXu3ARizZ882du/ebRw/ftwwDMN46aWXjMqVKxurV6829u7da/Tv398ICQkxLl686OSeO05hx+T8+fPGuHHjjG3bthlxcXHG//73P6NNmzZGo0aNjLS0NGd33WEef/xxw8/Pz9i0aZORkJBg2y5cuGCr889//tMIDg42NmzYYOzYscMIDw83wsPDndhrx7vacTly5IgxY8YMY8eOHUZcXJyxevVqo379+sbtt9/u5J471nPPPWds3rzZiIuLM/bu3Ws899xzhsViMb755hvDMG7M30phx+RG/Z0UhYJdId58800jODjY8PT0NDp06GD88MMPzu6SUz344INGQECA4enpadSuXdt48MEHjSNHjji7W6Vu48aNBpBne+SRRwzDMC95MnnyZKNWrVqGl5eX0aNHDyM2Nta5nXawwo7JhQsXjN69exs1atQwPDw8jLp16xojRoxw+X8k5Xc8AGPRokW2OhcvXjSeeOIJo0qVKkalSpWMe+65x0hISHBep0vB1Y5LfHy8cfvttxtVq1Y1vLy8jIYNGxrjx483kpKSnNtxBxs6dKhRt25dw9PT06hRo4bRo0cPW6gzjBvzt1LYMblRfydFYTEMwyi98UERERERcRSdYyciIiLiIhTsRERERFyEgp2IiIiIi1CwExEREXERCnYiIiIiLkLBTkRERMRFKNiJiIiIuAgFOxEREREXoWAnIiIi4iIU7ERERERchIKdiNywIiIiGD16tLO7YXOt/fnr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Zw/u7u60aNHC1o71nLvc58zFxMTQoEEDvL297T5zy5Yt9O7d+5r6KyKOpXPsRKRUdOvWjYsXL9KwYUNq1aplK+/atSvnz5+3XRYFwM3NjRUrVrBz505atGjBmDFjmDlzZr7tdu/enapVqxIbG8tDDz1kty8qKorJkycTHR1Ns2bNuOOOO1izZk2ec8autX5BZs+eTXh4OHfffTc9e/akc+fOditUx40bh7u7O82bN6dGjRp25w0WV8uWLWnTpg0fffSRrSwmJoY+ffrw66+/0rJlS1544QWmT5+Or68vb7zxBnv27KFJkyZ25+blt9hiz549eaZh09LSWLVqFSNGjLjmPouI41gMwzCc3QkREVeWmppK7dq1mTVrlkMuJLxmzRrGjx/P/v37cXNzo0+fPrRv355//etfJf5Z8+bNY+XKlXzzzTcl3raIXD9NxYqIlLDdu3fz888/06FDB5KSkpgxYwZgXjzZEe666y5++eUXfv/9d4KCgtizZ4/tIs0lzcPDgzfffNMhbYvI9dOInYhICdu9ezfDhw8nNjYWT09P2rZty+zZs/MsQnCExMREAgICOHDgAM2bN3f454lI2aJgJyIiIuIitHhCRERExEUo2ImIiIi4CAU7ERERERehYCciIiLiIhTsRERERFyEgp2IiIiIi1CwExEREXERCnYiIiIiLkLBTkRERMRFKNiJiIiIuAgFOxEREREX8f8BZIjY/AZwC4gAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "medium, rms_error = fitter.fit(max_num_poles=3, advanced_param=advanced_param, tolerance_rms=2e-2)\n",
    "fitter.plot(medium)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This fit looks great and should be sufficient for our simulation."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Alternatively, if the simulation is narrowband, you might want to truncate your data to not include wavelengths far outside your measurement wavelength to simplify the dispersive model. This is through modifying the attribute `wvl_range` where you can set the lower wavelength bound `wvl_range[0]` and the higher wavelength bound `wvl_range[1]`. This operation is non-destructive, so you can always unset them by setting the value to `None`. \n",
    "\n",
    "E.g. if we are only interested in the wavelength 3-20 um, we can still use the single-pole model:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "218a46d8c3ba42f595e0b9c552bbe434",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Output()"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\"></pre>\n"
      ],
      "text/plain": []
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fitter = fitter.copy(update={\"wvl_range\": (3, 20)})\n",
    "medium, rms_error = fitter.fit(max_num_poles=1, tolerance_rms=2e-2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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kdKmxRMiIiIiZZgWT7jQrFkFn0M3d67uNiEiIiLOo2BXwnTHCREREXEVnWNXwnTHCREREXEVBTsn0B0nRERExBW0eMKJdMcJERERuVFaPFEG6I4TIiIiUtoU7JxAd5wQERERV3BpsFu0aBGhoaH4+fnh5+dHeHg4X375ZaHv+fjjj7n11lupXLkybdq04Ysvviil3hZNQXecULgTERERZ3NpsGvQoAEvvvgie/bsYffu3fTo0YOBAwdy+PBhh/V37NjB4MGDGTlyJPv27WPQoEEMGjSIQ4cOlXLPC1bYHSfmzNEdJ0RERMR5ytziiRo1ajBv3jxGjhyZb9+DDz5IWloa//nPf2xlXbp0oV27dixevLhI7Ttz8cSsWeZ16hytfp071wx1ukCxiIiIFEe5XDyRlZXFmjVrSEtLIzw83GGd6OhoevXqZVfWt29foqOjC2w3IyODlJQUu81ZdHFiERERcSWXX8fu4MGDhIeHk56ejo+PD2vXrqVly5YO6yYlJVG3bl27srp165KUlFRg+5GRkcyePbtE+1wQXZxYREREXMnlwS4kJISYmBiSk5P55JNPGDZsGFu3bi0w3BXX1KlTmThxou11SkoKQUFBJdK2I7o4sYiIiLiKy6divby8aNq0Ke3btycyMpK2bduyYMECh3Xr1avH6dOn7cpOnz5NvXr1Cmzf29vbturWujnb9Om516/z8lKoExERkdLh8mB3tezsbDIKuE1DeHg4mzZtsiv7+uuvCzwnz1V0cWIRERFxBZcGu6lTp/LNN99w4sQJDh48yNSpU4mKimLIkCEADB06lKlTp9rqjxs3jo0bNzJ//nx++OEHZs2axe7duxk7dqyrvkI+ujixiIiIuIpLz7E7c+YMQ4cOJTExEX9/f0JDQ/nvf/9L7969AUhISMDDIzd7du3alVWrVjFt2jT+/ve/06xZM9atW0fr1q1d9RXsFHRxYrBfUCEiIiLiDGXuOnbOpuvYiYiISHlSnOyiYCciIiJShpXLCxSLiIiIyI1RsBMRERFxEwp2IiIiIm5CwU5ERETETSjYiYiIiLgJBTsRERERN6FgJyIiIuImFOxERERE3ISCnYiIiIibULATERERcRMKdiIiIiJuQsFORERExE0o2ImIiIi4CQU7ERERETehYCciIiLiJhTsRERERNyEgp2IiIiIm1CwExEREXETCnYiIiIibkLBTkRERMRNKNiJiIiIuAkFOxERERE3oWAnIiIi4iYU7ERERETchIKdiIiIiJtQsBMRERFxEwp2IiIiIm5CwU5ERETETSjYiYiIiLgJBTsRERERN6FgJyIiIuImFOxERERE3ISCnYiIiIibULATERERcRMKdiIiIiJuQsFORERExE0o2ImIiIi4CQU7ERERETehYCciIiLiJhTsRERERNyEgp2IiIiIm3BpsIuMjKRjx474+vpSp04dBg0aRGxsbKHvWb58ORaLxW6rXLlyKfVYREREpOxyabDbunUrY8aM4bvvvuPrr7/m8uXL9OnTh7S0tELf5+fnR2Jiom07efJkKfVYREREpOy6yZUfvnHjRrvXy5cvp06dOuzZs4e77rqrwPdZLBbq1avn7O6JiIiIlCtl6hy75ORkAGrUqFFovdTUVBo1akRQUBADBw7k8OHDBdbNyMggJSXFbhMRERFxR2Um2GVnZzN+/Hhuv/12WrduXWC9kJAQli5dyvr161mxYgXZ2dl07dqVX375xWH9yMhI/P39bVtQUJCzvoKIiIiIS1kMwzBc3QmAJ554gi+//JJvv/2WBg0aFPl9ly9fpkWLFgwePJi5c+fm25+RkUFGRobtdUpKCkFBQSQnJ+Pn51cifRcRERFxlpSUFPz9/YuUXVx6jp3V2LFj+c9//sM333xTrFAH4OnpSVhYGMePH3e439vbG29v75LopoiIiEiZ5tKpWMMwGDt2LGvXrmXz5s0EBwcXu42srCwOHjxIQECAE3ooIiIiUn64dMRuzJgxrFq1ivXr1+Pr60tSUhIA/v7+VKlSBYChQ4dSv359IiMjAZgzZw5dunShadOmnD9/nnnz5nHy5ElGjRrlsu8hIiIiUha4NNgtWrQIgIiICLvyZcuWMXz4cAASEhLw8MgdWDx37hyjR48mKSmJ6tWr0759e3bs2EHLli1Lq9siIiIiZVKZWTxRWopzAqKIiIiIqxUnu5SZy52IiIiIyI1RsBMRERFxEwp2IiIiIm5CwU5ERETETSjYiYiIiLgJBTsRERERN6FgJyIiIuImFOxERERE3ISCnYiIiIibULATERERcRMKdiIiIiJuQsFORERExE0o2ImIiIi4CQU7ERERETehYCciIiLiJhTsRERERNyEgp2IiIiIm1CwExEREXETCnYiIiIibkLB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K5s5cybr1q1j//79+epnZGSQkZFhe52SkkJQUBDJycn4+fmV2HcQEREpLenp6cTHxxMcHJxvYYE7OnDgAL179yYuLg4fHx9Xd4fDhw/To0cPjh07hr+/f4m0WdifaUpKCv7+/kXKLi4dsTMMg7Fjx7J27Vo2b958zVAH5qqXq5dFf/311w5XwwB4e3vj5+dnt4mIiEj5ERoayksvvUR8fLyruwJAYmIiH3zwQYmFupLk0gsUjxkzhlWrVrF+/Xp8fX1t58n5+/tTpUoVAIYOHUr9+vWJjIwEYNy4cXTr1o358+fTv39/1qxZw+7du1myZInLvoeIiIg41/Dhw13dBZurF3GWJS4dsVu0aBHJyclEREQQEBBg2z788ENbnYSEBBITE22vu3btyqpVq1iyZAlt27blk08+Yd26dYUuuBARERGpCFw6YleU0/us923L6/777+f+++93Qo9EREREyq8ysypWRERERG6Mgp2IiIiIm1CwExEREXETCnYiIiIibkLBTkRERMRNKNiJiIhIqYiIiLC7c1RRTZ8+nUcffdQpbRfX77//Tp06dfjll1+c/lnXQ8FOREREyqykpCQWLFjA888/X6LtRkVFYbFYOH/+fLHeV6tWLYYOHcrMmTNLtD8lRcFORESkIktMhFmzzMcy6N1336Vr1640atTI1V2xGTFiBCtXruTs2bOu7ko+CnYiIiIVWWIizJ7tkmC3YcMG/P39WblyZYF11qxZw4ABA+zK0tLSGDp0KD4+PgQEBDB//vx87/vXv/5Fhw4d8PX1pV69ejz00EOcOXMGgBMnTtC9e3cAqlevjsVisd2ybOPGjdxxxx1Uq1aNmjVrcs899xAXF2fXdqtWrQgMDGTt2rU38vWdQsFORERESt2qVasYPHgwK1euZMiQIQ7rnD17liNHjtChQwe78smTJ7N161bWr1/PV199RVRUFHv37rWrc/nyZebOncv+/ftZt24dJ06csIW3oKAgPv30UwBiY2NJTExkwYIFgBkaJ06cyO7du9m0aRMeHh7ce++9ZGdn27XfqVMntm3bVhKHokQV+5ZiKSkp+Pn5Odx3/PhxmjZtesOdEhERESdKTMwdobMGorzBKCDA3Jxk4cKFPP/883z++ed069atwHoJCQkYhkFgYKCtLDU1lffee48VK1bQs2dPAN5//30aNGhg995HHnnE9rxx48a88cYbdOzYkdTUVHx8fKhRowYAderUoVq1ara6f/nLX+zaWbp0KbVr1+bIkSN296UPDAxk3759xf/yTlbsEbv+/fuTkZGRrzw2NpaIiIiS6JOIiIg409tvQ/v25jZ6tFk2enRu2dtvO+2jP/nkEyZMmMDXX39daKgDuHTpEgCVK1e2lcXFxZGZmUnnzp1tZTVq1CAkJMTuvXv27GHAgAE0bNgQX19f22clJCQU+pk//vgjgwcPpnHjxvj5+XHLLbc4fF+VKlW4ePFi4V/WBYod7Hx8fLj33nu5cuWKrezo0aNERETkS7kiIiJSBj32GOzZY27vvGOWvfNObtljjznto8PCwqhduzZLly7FMIxC69aqVQuAc+fOFesz0tLS6Nu3L35+fqxcuZLvv//edj5cZmZmoe8dMGAAZ8+e5Z133mHnzp3s3LnT4fvOnj1L7dq1i9Wv0lDsYPfvf/+b5ORkhgwZgmEYHDp0iIiICAYPHmybnxYREZEyLCAAbrstdwP7106chm3SpAlbtmxh/fr1PPXUU9es6+fnx5EjR+zKPD09bYELzOB37Ngx2+sffviBP/74gxdffJE777yTW2+91bZwwsrLywuArKwsW9kff/xBbGws06ZNo2fPnrRo0aLAUHno0CHCwsKK/sVLSbGDXZUqVdiwYQOxsbE88MAD9OzZk6FDh/Lqq686o38iIiLiZpo3b86WLVv49NNPC72osIeHB7169eLbb7+1lfn4+DBy5EgmT57M5s2bOXToEMOHD8fDIzfSNGzYEC8vL958801++uknPvvsM+bOnWvXdqNGjbBYLPznP//ht99+IzU1lerVq1OzZk2WLFnC8ePH2bx5MxMnTszXr4sXL7Jnzx769Olz4wejhBUp2KWkpNhtHh4efPjhh+zcuZO//OUvTJ8+3bZPREREypGAAJg506mjdI6EhISwefNmVq9ezTPPPFNgvVGjRrFmzRq7Vanz5s3jzjvvZMCAAfTq1Ys77riD9u3b2/bXrl2b5cuX8/HHH9OyZUtefPFFXnnlFbt269evz+zZs3nuueeoW7cuY8eOxcPDgzVr1rBnzx5at27NhAkTmDdvXr4+rV+/noYNG3LnnXeWwJEoWRbjWhPcmInZYrHkK7e+1WKxYBgGFovFbkizLEpJScHf35/k5OQCV/eKiIiUZenp6cTHxxMcHGy3sMAdGYZB586dmTBhAoMHD3Z1dwDo0qULTz/9NA899FCJtVnYn2lxskuRLneyZcuW6++piIiIyHWyWCwsWbKEgwcPurorgHmv2Pvuu6/MhMyrFWnEzp1oxE5ERMq7ijRiV1GU1Iid7jwhIiIi4iYU7ERERETchIKdiIiIiJtQsBMRERFxEwp2IiIiIm6iRINdjx49mDt3bpm8Ka6IiIiIuyvRYNewYUM2bdrErbfeWpLNioiIiEgRlGiwW758OVFRURw6dKgkmxUREZEKLDMzk6ZNm7Jjx45S/+wTJ05gsViIiYkp8nsiIiLs7oHbpUsXPv3005LvnANOOcdOF/4VERGRkrJ48WKCg4Pp2rWrq7tyXaZNm8Zzzz1nd79bZynSLcWutmnTJjZt2sSZM2fydXLp0qUl0jERERERwzB46623mDNnjqu7ct369evHqFGj+PLLL+nfv79TP6vYI3azZ8+mT58+bNq0id9//51z587ZbSIiIiKORERE8PTTTzNlyhRq1KhBvXr1mDVrVqHv2bNnD3FxcXaByDo9+tFHH3HnnXdSpUoVOnbsyLFjx/j+++/p0KEDPj4+9OvXj99++832vuzsbObMmUODBg3w9vamXbt2bNy40e7zdu3aRVhYGJUrV6ZDhw7s27cvX58OHTpEv3798PHxoW7duvztb3/j999/L/A7VKpUiT/96U+sWbOmiEfq+hV7xG7x4sUsX76cv/3tb87oj4iIiBSTYRhcvOyaK1JU9ayKxWIpcv3333+fiRMnsnPnTqKjoxk+fDi33347vXv3dlh/27ZtNG/eHF9f33z7Zs6cyeuvv07Dhg155JFHeOihh/D19WXBggVUrVqVBx54gBkzZrBo0SIAFixYwPz583n77bcJCwtj6dKl/PnPf+bw4cM0a9aM1NRU7rnnHnr37s2KFSuIj49n3Lhxdp95/vx5evTowahRo3jttde4dOkSzz77LA888ACbN28u8Ht36tSJF198scjH6XoVO9hlZmaW2zluERERd3Tx8kV8In1c8tmpU1O52evmItcPDQ1l5syZADRr1oy33nqLTZs2FRjsTp48SWBgoMN9kyZNom/fvgCMGzeOwYMHs2nTJm6//XYARo4cyfLly231X3nlFZ599ln++te/AvDSSy+xZcsWXn/9dRYuXMiqVavIzs7mvffeo3LlyrRq1YpffvmFJ554wtbGW2+9RVhYGP/85z9tZUuXLiUoKIhjx47RvHlzh30NDAzk559/Jjs7Gw8P511GuNgtjxo1ilWrVjmjLyIiIuLmQkND7V4HBARw5syZAutfunSJypUrX7OtunXrAtCmTRu7MmvbKSkpnDp1yhb6rG6//XaOHj0KwNGjRwkNDbX7vPDwcLv6+/fvZ8uWLfj4+Ng262Xe4uLiCvweVapUITs7m4yMjALrlIRij9ilp6ezZMkS/ve//xEaGoqnp6fd/ldffbXEOiciIiLXVtWzKqlTU1322cVxdW6wWCyFrhatVasWBw8evGZb1ungq8tKeiVqamoqAwYM4KWXXsq3LyAgoMD3nT17lptvvpkqVaqUaH+uVuxgd+DAAdq1aweQ73p1xZljFxERkZJhsViKNR1anoSFhbFo0SIMw7ihnOHn50dgYCDbt2+nW7dutvLt27fTqVMnAFq0aMG//vUv0tPTbaN23333nV07t912G59++im33HILN91U9Bh16NAhwsLCrrv/RVXsYLdlyxZn9ENEREQkn+7du5Oamsrhw4dp3br1DbU1efJkZs6cSZMmTWjXrh3Lli0jJiaGlStXAvDQQw/x/PPPM3r0aKZOncqJEyd45ZVX7NoYM2YM77zzDoMHD7at7j1+/Dhr1qzh3XffpVKlSg4/e9u2bfTp0+eG+l8Uzjt7T0REROQG1axZk3vvvdcWvm7E008/zcSJE3nmmWdo06YNGzdu5LPPPqNZs2YA+Pj48Pnnn3Pw4EHCwsJ4/vnn8025Wkf9srKy6NOnD23atGH8+PFUq1atwEURv/76Kzt27GDEiBE3/B2uxWIYhuH0TylDUlJS8Pf3Jzk5WXfIEBGRcik9PZ34+HiCg4MLXFjgTg4cOEDv3r2Ji4vDx8c1q39vxLPPPsu5c+dYsmRJgXUK+zMtTnbRiJ2IiIiUaaGhobz00kvEx8e7uivXpU6dOsydO7dUPuu6bikmIiIiUpqGDx/u6i5ct2eeeabUPksjdiIiIiJuQsFORERExE0o2ImIiIi4CZcGu2+++YYBAwYQGBiIxWJh3bp1hdaPiorCYrHk25KSkkqnwyIiIiJlmEuDXVpaGm3btmXhwoXFel9sbCyJiYm2rU6dOk7qoYiIiEj54dJVsf369aNfv37Ffl+dOnWoVq1ayXdIREREpBwrl+fYtWvXjoCAAHr37s327dsLrZuRkUFKSordJiIiIuKOylWwCwgIYPHixXz66ad8+umnBAUFERERwd69ewt8T2RkJP7+/rYtKCioFHssIiIiVhEREYwfP77Y75s+fTqPPvpoyXeoCIrb5+XLl9vNKi5evJgBAwaUfMcKUK4uUBwSEkJISIjtddeuXYmLi+O1117jX//6l8P3TJ06lYkTJ9pep6SkKNyJiIiUE0lJSSxYsICDBw+6uivX5ZFHHmHu3Lls27aNO++80+mfV65G7Bzp1KkTx48fL3C/t7c3fn5+dpuIiIiUD++++y5du3alUaNGru7KdfHy8uKhhx7ijTfeKJXPK/fBLiYmhoCAAFd3Q0RERIppw4YN+Pv7s3LlygLrrFmzJt9UZkREBE899RTjx4+nevXq1K1bl3feeYe0tDRGjBiBr68vTZs25csvv7R739atW+nUqRPe3t4EBATw3HPPceXKFdv+tLQ0hg4dio+PDwEBAcyfPz9ffzIyMpg0aRL169fn5ptvpnPnzkRFRRX6PQcMGMBnn33GpUuXinBUboxLg11qaioxMTHExMQAEB8fT0xMDAkJCYA5jTp06FBb/ddff53169dz/PhxDh06xPjx49m8eTNjxoxxRfdFRETKBsOAK2mu2Qzjurq8atUqBg8ezMqVKxkyZIjDOmfPnuXIkSN06NAh377333+fWrVqsWvXLp566imeeOIJ7r//frp27crevXvp06cPf/vb37h48SIAv/76K3/605/o2LEj+/fvZ9GiRbz33nu88MILtjYnT57M1q1bWb9+PV999RVRUVH5zuMfO3Ys0dHRrFmzhgMHDnD//fdz99138+OPPxb4XTt06MCVK1fYuXPn9RyqYnHpOXa7d++me/futtfWc+GGDRvG8uXLSUxMtIU8gMzMTJ555hl+/fVXqlatSmhoKP/73//s2hAREalwsi7CRz6u+ewHUuGmm4v1loULF/L888/z+eef061btwLrJSQkYBgGgYGB+fa1bduWadOmAeZA0IsvvkitWrUYPXo0ADNmzGDRokUcOHCALl268H//938EBQXx1ltvYbFYuPXWWzl16hTPPvssM2bM4OLFi7z33nusWLGCnj17AmZ4bNCggV1/li1bRkJCgq1PkyZNYuPGjSxbtox//vOfDr9H1apV8ff35+TJk8U6TtfDpcEuIiICo5Ckv3z5crvXU6ZMYcqUKU7ulYiIiDjLJ598wpkzZ9i+fTsdO3YstK516rJy5cr59oWGhtqeV6pUiZo1a9KmTRtbWd26dQE4c+YMAEePHiU8PByLxWKrc/vtt5Oamsovv/zCuXPnyMzMpHPnzrb9NWrUsFu0efDgQbKysmjevLldXzIyMqhZs2ah36VKlSq20UNnKlerYkVERMSBSlXNkTNXfXYxhIWFsXfvXpYuXUqHDh3sgtbVatWqBcC5c+eoXbu23T5PT0+71xaLxa7M2m52dnax+leY1NRUKlWqxJ49e6hUqZLdPh+fwkdMz549m+87OIOCnYiISHlnsRR7OtRVmjRpwvz584mIiKBSpUq89dZbhdb18/PjyJEj+UbJiqtFixZ8+umnGIZhC33bt2/H19eXBg0aUKNGDTw9Pdm5cycNGzYEzEB57Ngx23RxWFgYWVlZnDlzpliXLomLiyM9PZ2wsLAb+g5FUe5XxYqIiEj50rx5c7Zs2cKnn35a6MV/PTw86NWrF99+++0Nf+aTTz7Jzz//zFNPPcUPP/zA+vXrmTlzJhMnTsTDwwMfHx9GjhzJ5MmT2bx5M4cOHWL48OF4eORGpebNmzNkyBCGDh3Kv//9b+Lj49m1axeRkZFs2LChwM/etm0bjRs3pkmTJjf8Pa5FwU5ERERKXUhICJs3b2b16tU888wzBdYbNWoUa9asueEp1fr16/PFF1+wa9cu2rZty+OPP87IkSNtCzAA5s2bx5133smAAQPo1asXd9xxB+3bt7drZ9myZQwdOpRnnnmGkJAQBg0axPfff28b5XNk9erVtkUdzmYxClu94IZSUlLw9/cnOTlZFysWEZFyKT09nfj4eIKDgx0uLHAnhmHQuXNnJkyYwODBg13dnWI7fPgwPXr04NixY/j7+xdYr7A/0+JkF43YiYiISJllsVhYsmSJ3YWEy5PExEQ++OCDQkNdSdLiCRERESnT2rVrR7t27VzdjevSq1evUv08jdiJiIiIuAkFOxERERE3oWAnIiIi4iYU7ERERMqpkryrgrhWSf1ZavGEiIhIOePl5YWHhwenTp2idu3aeHl5FXprLim7DMMgMzOT3377DQ8PD7y8vG6oPQU7ERGRcsbDw4Pg4GASExM5deqUq7sjJaBq1ao0bNjQ7k4X10PBTkREpBzy8vKiYcOGXLlyhaysLFd3R25ApUqVuOmmm0pk1FXBTkREpJyyWCx4enri6enp6q5IGaHFEyIiIiJuQsFORERExE0o2ImIiIi4CQU7ERERETehYCciIiLiJhTsRERERNyEgp2IiIiIm1CwExEREXETCnYiIiIibkLBTkRERMRNKNiJiIiIuAkFOxERERE3oWAnIiIi4iYU7ERERETchIKdiIiIiJtQsBMRERFxEwp2IiIiIm5CwU5ERETETSjYiYiIiLgJBTsRERERN6FgJyIiIuImFOxERERE3ISCnYiIiIibULATERERcRMKdiIiIiJuQsFORERExE0o2ImIiIi4CZcGu2+++YYBAwYQGBiIxWJh3bp113xPVFQUt912G97e3jRt2pTly5c7vZ8iIiIi5YFLg11aWhpt27Zl4cKFRaofHx9P//796d69OzExMYwfP55Ro0bx3//+18k9FRERESn7bnLlh/fr149+/foVuf7ixYsJDg5m/vz5ALRo0YJvv/2W1157jb59+zqrmyIiIiLlQrk6xy46OppevXrZlfXt25fo6GgX9UhERESk7HDpiF1xJSUlUbduXbuyunXrkpKSwqVLl6hSpUq+92RkZJCRkWF7nZKS4vR+ioiIiLhCuRqxux6RkZH4+/vbtqCgIFd3SURERMQpylWwq1evHqdPn7YrO336NH5+fg5H6wCmTp1KcnKybfv5559Lo6siIiIipa5cTcWGh4fzxRdf2JV9/fXXhIeHF/geb29vvL29nd01EREREZdz6YhdamoqMTExxMTEAOblTGJiYkhISADM0bahQ4fa6j/++OP89NNPTJkyhR9++IH/+7//46OPPmLChAmu6L6IiIhImeLSYLd7927CwsIICwsDYOLEiYSFhTFjxgwAEhMTbSEPIDg4mA0bNvD111/Ttm1b5s+fz7vvvqtLnYiIiIgAFsMwDFd3ojSlpKTg7+9PcnIyfn5+ru6OiIiISKGKk13K1eIJERERESmYgp2IiIiIm1CwExEREXETCnYiIiIibkLBTkRERMRNKNiJiIiIuAkFOxERERE3oWAnIiIi4iYU7ERERETchIKdiIiIiJtQsBMRERFxEwp2IiIiIm5CwU5ERETETSjYiYiIiLgJBTsRERERN6FgJyIiIuImFOxERERE3ISCnYiIiIibULATERERcRMKdiIiIiJuQsFORERExE0o2ImIiIi4CQU7ERERETehYCciIiLiJhTsnCkxEWbNMh9FREREnEzBzpkSE2H2bAU7ERERKRUKds6SmAhvv20+/+03jdyJiIiI093k6g64ncREczt6FJYsMcu+/RZeeAGaNYMePSAgwLV9FBEREbekEbuS9vbb0L49PPxwbtkLL5iPDz+cO4onIiIiUsIU7EpSYiKEh8OKFTBuXG55//7m47hx5v69ezUtKyIiIiXOYhiG4epOlKaUlBT8/f1JTk7Gz8+vZBufNctcLFEUM2ea9UVEREQKUZzsohG7kvTYY7Bnj7nNm5dbPnKk+Th9Ojz6KGzcaNYVERERKUEKdiUpIABuu83cevQwyx59FO6/33weEmIuqKhdWwsoREREpMRpVayzaWRORERESomCnbMEBJjn0Xl4wOnT5siddcHE3r329TR6JyIiIiVAiyec7VoLKrSIQkRERApRnOyiETtne+wx+POfzed798Lo0TBgAIwZo3PtREREpEQp2Dmbo6nWzz83R+luu80lXRIRERH3pFWxIiIiIm5CI3alwXr/2N9+M6dhP/9cCyhERESkxCnYlYa3386/gGL06NznWkAhIiIiJUDBrjQ4WkAxbx78+CPcdx+Ehrq2fyIiIuIWFOxKg6Op1oAAmDzZDH2ahhUREZESUCYWTyxcuJBbbrmFypUr07lzZ3bt2lVg3eXLl2OxWOy2ypUrl2JvRURERMoml4/Yffjhh0ycOJHFixfTuXNnXn/9dfr27UtsbCx16tRx+B4/Pz9iY2Ntry0WS2l198ZYF1DoLhQiIiLiBC4Pdq+++iqjR49mxIgRACxevJgNGzawdOlSnnvuOYfvsVgs1KtXrzS7WTK0iEJEREScyKVTsZmZmezZs4devXrZyjw8POjVqxfR0dEFvi81NZVGjRoRFBTEwIEDOXz4cIF1MzIySElJsdtc5rHHYM8ec3vnHbNs2jTzccUKc7+IiIjIdXJpsPv999/Jysqibt26duV169YlKSnJ4XtCQkJYunQp69evZ8WKFWRnZ9O1a1d++eUXh/UjIyPx9/e3bUFBQSX+PYosIMC824R1A7j1VvOxRQtNw4qIiMgNKROLJ4ojPDycoUOH0q5dO7p168a///1vateuzdtvv+2w/tSpU0lOTrZtP//8cyn32IHERDh61Hz+ww/m4969uZv1/DsRERGRYnBp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yrVmzpxptG3b1tXdKFMAY+3atbbX2dnZRr169Yx58+bZys6fP294e3sbq1evdkEPS9/Vx8QwDGPYsGHGwIEDXdKfsuLMmTMGYGzdutUwDPN34enpaXz88ce2OkePHjUAIzo62lXdLHVXHxfDMIxu3boZ48aNc12nyojq1asb7777rn4reViPiWHod1IQjdg5kJmZyZ49e+jVq5etzMPDg169ehEdHe3Cnrnejz/+SGBgII0bN2bIkCEkJCS4uktlSnx8PElJSXa/HX9/fzp37lzhfztRUVHUqVOHkJAQnnjiCf744w9Xd6lUJScnA1CjRg0A9uzZw+XLl+1+K7feeisNGzasUL+Vq4+L1cqVK6lVqxatW7dm6tSpXLx40RXdc4msrCzWrFlDWloa4eHh+q2Q/5hYVeTfSUEq3L1ii+L3338nKyuLunXr2pXXrVuXH374wUW9cr3OnTuzfPlyQkJCSExMZPbs2dx5550cOnQIX19fV3evTEhKSgJw+Nux7quI7r77bu677z6Cg4OJi4vj73//O/369SM6OppKlSq5untOl52dzfjx47n99ttp3bo1YP5WvLy8qFatml3divRbcXRcAB566CEaNWpEYGAgBw4c4NlnnyU2NpZ///vfLuyt8x08eJDw8HDS09Px8fFh7dq1tGzZkpiYmAr7WynomEDF/Z1ci4KdFFm/fv1sz0NDQ+ncuTONGjXio48+YuTIkS7smZR1f/3rX23P27RpQ2hoKE2aNCEqKoqePXu6sGelY8yYMRw6dKhCnpNamIKOy6OPPmp73qZNGwICAujZsydxcXE0adKktLtZakJCQoiJiSE5OZlPPvmEYcOGsXXrVld3y6UKOiYtW7assL+Ta9FUrAO1atWiUqVK+VYcnT59mnr16rmoV2VPtWrVaN68OcePH3d1V8oM6+9Dv53CNW7cmFq1alWI387YsWP5z3/+w5YtW2jQoIGtvF69emRmZnL+/Hm7+hXlt1LQcXGkc+fOAG7/e/Hy8qJp06a0b9+eyMhI2rZty4IFCyr0b6WgY+JIRfmdXIuCnQNeXl60b9+eTZs22cqys7PZtGmT3dx+RZeamkpcXBwBAQGu7kqZERwcTL169ex+OykpKezcuVO/nTx++eUX/vjjD7f+7RiGwdixY1m7di2bN28mODjYbn/79u3x9PS0+63ExsaSkJDg1r+Vax0XR2JiYgDc+vfiSHZ2NhkZGRX2t+KI9Zg4UlF/J/m4evVGWbVmzRrD29vbWL58uXHkyBHj0UcfNapVq2YkJSW5umsu88wzzxhRUVFGfHy8sX37dqNXr15GrVq1jDNnzri6a6XqwoULxr59+4x9+/YZgPHqq68a+/btM06ePGkYhmG8+OKLRrVq1Yz169cbBw4cMAYOHGgEBwcbly5dcnHPnaewY3LhwgVj0qRJRnR0tBEfH2/873//M2677TajWbNmRnp6uqu77jRPPPGE4e/vb0RFRRmJiYm27eLFi7Y6jz/+uNGwYUNj8+bNxu7du43w8HAjPDzchb12vmsdl+PHjxtz5swxdu/ebcTHxxvr1683GjdubNx1110u7rlzPffcc8bWrVuN+Ph448CBA8Zzzz1nWCwW46uvvjIMo2L+Vgo7JhX1d1IUCnaFePPNN42GDRsaXl5eRqdOnYzvvvvO1V1yqQcffNAICAgwvLy8jPr16xsPPvigcfz4cVd3q9Rt2bLFAPJtw4YNMwzDvOTJ9OnTjbp16xre3t5Gz549jdjYWNd22skKOyYXL140+vTpY9SuXdvw9PQ0GjVqZIwePdrt/yfJ0fEAjGXLltnqXLp0yXjyySeN6tWrG1WrVjXuvfdeIzEx0XWdLgXXOi4JCQnGXXfdZdSoUcPw9vY2mjZtakyePNlITk52bced7JFHHjEaNWpkeHl5GbVr1zZ69uxpC3WGUTF/K4Udk4r6OykKi2EYRumND4qIiIiIs+gcOxERERE3oWAnIiIi4iYU7ERERETchIKdiIiIiJtQsBMRERFxEwp2IiIiIm5CwU5ERETETSjYiYiIiLgJBTsRERERN6FgJyIiIuImFOxEpMKKiIhg/Pjxru6GzfX2548//qBOnTqcOHGixPt0tb/+9a/Mnz/f6Z8jItdHwU5EnGrx4sX4+vpy5coVW1lqaiqenp5ERETY1Y2KisJisRAXF1fKvSxdJR0o//GPfzBw4EBuueWWEmuzINOmTeMf//gHycnJTv8sESk+BTsRcaru3buTmprK7t27bWXbtm2jXr167Ny5k/T0dFv5li1baNiwIU2aNHFFV8ulixcv8t577zFy5MhS+bzWrVvTpEkTVqxYUSqfJyLFo2AnIk4VEhJCQEAAUVFRtrKoqCgGDhxIcHAw3333nV159+7dAdi4cSN33HEH1apVo2bNmtxzzz12I3lLliwhMDCQ7Oxsu88bOHAgjzzyCADZ2dlERkYSHBxMlSpVaNu2LZ988kmBfS1K/YiICJ5++mmmTJlCjRo1qFevHrNmzbKrc+HCBYYMGcLNN99MQEAAr732mm2Ubvjw4WzdupUFCxZgsViwWCx2U6jZ2dmFtn21L774Am9vb7p06WJX/u233+Lp6WkXnE+cOIHFYuHkyZO2559++il33XUXVapUoWPHjiQkJLBt2za6dOlC1apV6dmzJ+fPn7dre8CAAaxZs6bQfomIayjYiYjTde/enS1bttheb9myhYiICLp162Yrv3TpEjt37rQFu7S0NCZOnMju3bvZtGkTHh4e3HvvvbYgd//99/PHH3/YtXv27Fk2btzIkCFDAIiMjOSDDz5g8eLFHD58mAkTJvDwww+zdetWh/0sav3333+fm2++mZ07d/Lyyy8zZ84cvv76a9v+iRMnsn37dj777DO+/vprtm3bxt69ewFYsGAB4eHhjB49msTERBITEwkKCipy21fbtm0b7du3z1ceExNDixYtqFy5sq1s3759VK9enUaNGrF//34AFi1axD//+U927NjB6dOnefjhh3nxxRd566232LJlC/v372fZsmV2bXfq1Ildu3aRkZFRYL9ExDVucnUHRMT9de/enfHjx3PlyhUuXbrEvn376NatG5cvX2bx4sUAREdHk5GRYQt2f/nLX+zaWLp0KbVr1+bIkSO0bt2a6tWr069fP1atWkXPnj0B+OSTT6hVqxbdu3cnIyODf/7zn/zvf/8jPDwcgMaNG/Ptt9/y9ttv061bN7v2i1M/NDSUmTNnAtCsWTPeeustNm3aRO/evblw4QLvv/++Xb+WLVtGYGAgAP7+/nh5eVG1alXq1auX71gV1rYjJ0+etLWd1/79+wkLC7Mri4mJoW3btrbnNWrU4MMPP6RmzZoAdOvWjW+//ZbDhw9TtWpVADp27EhSUpJdO4GBgWRmZpKUlESjRo0c9ktEXEMjdiLidBEREaSlpfH999+zbds2mjdvTu3atenWrZvtPLuoqCgaN25Mw4YNAfjxxx8ZPHgwjRs3xs/Pz7YwICEhwdbukCFD+PTTT20jRytXruSvf/0rHh4eHD9+nIsXL9K7d298fHxs2wcffOBwcUZx6oeGhtq9DggI4MyZMwD89NNPXL58mU6dOtn2+/v7ExISUqRjVVjbjly6dMluVM4qJiaGdu3a2ZXt27fPVrZ//37uvfdeW6gD89g++OCDtlBnLQsODrZrp0qVKoB5fp+IlC0asRMRp2vatCkNGjRgy5YtnDt3zjb6FRgYSFBQEDt27GDLli306NHD9p4BAwbQqFEj3nnnHdu5dK1btyYzM9OujmEYbNiwgY4dO7Jt2zZee+01wFx5C7Bhwwbq169v1x9vb+98fSxOfU9PT7vXFosl37l+16u4bdeqVYtz587ZlWVlZXHo0KF8I3Z79+61jYTGxMQwdepUu/379+9nwoQJttfp6enExsbaRvmszp49C0Dt2rWL+K1EpLQo2IlIqejevTtRUVGcO3eOyZMn28rvuusuvvzyS3bt2sUTTzwBmNdli42N5Z133uHOO+8EzMUAV6tcuTL33XcfK1eu5Pjx44SEhHDbbbcB0LJlS7y9vUlISMg37epIcesXpHHjxnh6evL999/bRh+Tk5M5duwYd911FwBeXl5kZWVd92fkFRYWlm+FamxsLOnp6XZTtNHR0fz666+0a9eOlJQUTpw4YRf84uPjSU5Otis7ePAghmHQpk0bu/YPHTpEgwYNqFWrVol8BxEpOQp2IlIqunfvzpgxY7h8+bJdcOrWrRtjx44lMzPTdn5d9erVqVmzJkuWLCEgIICEhASee+45h+0OGTKEe+65h8OHD/Pwww/byn19fZk0aRITJkwgOzubO+64g+TkZLZv346fnx/Dhg2za6e49Qvi6+vLsGHDmDx5MjVq1KBOnTrMnDkTDw8PLBYLALfccgs7d+7kxIkT+Pj4UKNGDTw8ru/MmL59+zJ16lTOnTtH9erVAXM0DuDNN9/k6aef5vjx4zz99NMAZGZmsn//fipVqkTr1q1t7VjPuct7zlxMTAxNmjTBx8fH7jO3bdtGnz59rqu/IuJcOsdOREpF9+7duXTpEk2bNqVu3bq28m7dunHhwgXbZVEAPDw8WLNmDXv27KF169ZMmDCBefPmOWy3R48e1KhRg9jYWB566CG7fXPnzmX69OlERkbSokUL7r77bjZs2JDvnLHrrV+QV199lfDwcO655x569erF7bffbrdCddKkSVSqVImWLVtSu3Ztu/MGi6tNmzbcdtttfPTRR7aymJgY+vbty08//USbNm14/vnnmT17Nn5+frzxxhvs37+fkJAQu3PzHC222L9/f75p2PT0dNatW8fo0aOvu88i4jwWwzAMV3dCRMSdpaWlUb9+febPn++UCwlv2LCByZMnc+jQITw8POjbty8dO3bkhRdeKPHPWrRoEWvXruWrr74q8bZF5MZpKlZEpITt27ePH374gU6dOpGcnMycOXMA8+LJztC/f39+/PFHfv31V4KCgti/f7/tIs0lzdPTkzfffNMpbYvIjdOInYhICdu3bx+jRo0iNjYWLy8v2rdvz6uvvppvEYIzJCUlERAQwOHDh2nZsqXTP09EyhYFOxERERE3ocUTIiIiIm5CwU5ERETETSjYiYiIiLgJBTsRERERN6FgJyIiIuImFOxERERE3ISCnYiIiIibULATERERcRMKdiIiIiJuQsFORERExE0o2ImIiIi4if8PSGmjeUV4T8EAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fitter.plot(medium)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using Fit Results\n",
    "\n",
    "With the fit performed, we want to use the `Medium` in our simulation.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Method 1: direct export as Medium\n",
    "\n",
    "The fit returns a medium, which can be used directly in simulation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "b = td.Structure(geometry=td.Box(size=(1, 1, 1)), medium=medium)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Method 2: print medium definition string\n",
    "\n",
    "In many cases, one may want to perform the fit once and then hardcode the result in their tidy3d script.\n",
    "\n",
    "For a quick and easy way to do this, just `print()` the medium and the output can be copied and pasted into your main script"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "td.PoleResidue(\n",
      "\teps_inf=3.3946193815577166, \n",
      "\tpoles=(((-1667817350156640-206849778478075.84j), (1.0047082751083348e+16-2.307684527436744e+16j)),), \n",
      "\tfrequency_range=None)\n"
     ]
    }
   ],
   "source": [
    "print(medium)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# medium = td.PoleResidue(\n",
    "# \teps_inf=3.394619381557077,\n",
    "# \tpoles=(((-1667817350156741.8-206849778477574.28j), (1.004708275108508e+16-2.307684527443524e+16j)),),\n",
    "# \tfrequency_range=None)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Method 3: save and load file containing poles\n",
    "\n",
    "Finally, one can save export the `Medium` directly as .json file. Here is an example."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": [
    "# save poles to pole_data.txt\n",
    "fname = \"misc/my_medium.json\"\n",
    "medium.to_file(fname)\n",
    "\n",
    "# load the file in your script\n",
    "medium = td.PoleResidue.from_file(fname)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Advanced Parameters and Tips for FastDispersionFitter\n",
    "\n",
    "There are a number of advanced parameters for the `FastDispersionFitter` which can be useful if the default settings do not work to find a fit. The advanced parameters are configured by passing in an `AdvancedFastFitterParam` object. When trying to improve a fit, the first thing to try is changing the arguments `max_num_poles` and `eps_inf` to the `fit` function. Importantly, although `eps_inf = None` performs optimization for the value of `eps_inf` as well, this optimization is nontrivial and so it can sometimes be better to provide a fixed value of `eps_inf`. Besides these arguments, the following advanced parameters may be helpful:\n",
    "\n",
    "- `loss_bounds = (lower, upper)` are bounds on `Im[eps]` over all frequencies (not just the fitting range). The default `(0, np.inf)` corresponds to a passive medium requirement, which leads to stable simulations. The upper bound can be used to ensure a good fit for a lossless medium. Setting a small negative lower bound can sometimes be informative; if a lower bound of 0 results in a poor fit but a small negative lower bound results in a good fit, then the poor fit was due to difficulty satisfying the passivity requirement. A negative lower bound, and thus a violation of the passivity requirement, may result in unstable simulations. However, a small violation of the passivity requirement may on occasion be acceptable, if there is loss elsewhere in the simulation to offset the resulting gain.\n",
    "\n",
    "- `weights = (real, imag)` are weights for `Re[eps]` and `Im[eps]` used in the fitting objective function (and when reporting rms error). These can be used if it is necessary to more accurately fit either the real or imaginary part.\n",
    "\n",
    "- `relaxed`, `smooth`, and `logspacing` can usually be left at their default values of `None`, which makes the fitter try both `True` and `False` values and take the better fit. Sometimes, however, it may be clear that specific values are better for a certain medium. `relaxed` controls whether the relaxed version of the fitting algorithm is used. For example, `relaxed = True` could prevent overfitting and also allow for pole relocation further outside the fitting window. The `smooth` and `logspacing` parameters control the initial pole placement. `smooth = True` may be appropriate for fitting metals. `logspacing = True` may be better when the poles are spread over a large frequency range. Again, the default option is usually fine here unless a particular type of model is required, since the default option tries both `True` and `False`.\n",
    "\n",
    "- `num_iters` controls the tradeoff between speed and quality of fit, although a higher `num_iters` doesn't necessarily result in a better fit. Usually, after a certain number of iterations, the algorithm has converged to a certain fit, and increasing `num_iters` further won't significantly help. However, it may be good to try increasing it to `100` or so to make sure that the algorithm has converged.\n",
    "\n",
    "Information on additional advanced parameters may be found in the documentation [here](https://docs.flexcompute.com/projects/tidy3d/en/latest/api/_autosummary/tidy3d.plugins.dispersion.AdvancedFastFitterParam.html).\n",
    "\n",
    "Here are a couple more general tips on dispersion fitting:\n",
    "\n",
    "- If you are unable to find a good fit to your data, it might be worth considering whether you care about certain features in the data.  For example as shown above, if the simulation is narrowband, you might want to truncate your data to not include wavelengths far outside your measurement wavelength to simplify the dispersive model.\n",
    "\n",
    "- It is common to find divergence in FDTD simulations due to dispersive materials. The `FastDispersionFitter` by default should enforce a passivity requirement and produce stable material fits. If there is still a divergence, besides trying \"absorber\" PML types and reducing runtime, a good solution can be to try other fits; for example, using a smaller number of poles, or setting `loss_bounds = (min_loss, np.inf)` for some small positive number `min_loss` (the latter can only work if the data satisfies this minimum loss constraint)."
   ]
  }
 ],
 "metadata": {
  "description": "This notebook demonstrates how to fit dispersive material models in Tidy3D for FDTD simulations.",
  "feature_imag": "",
  "feature_image": "N/A",
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "keywords": "dispersive material, fitting, Tidy3D, FDTD",
  "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.11.2"
  },
  "title": "Fitting Dispersive Material Models in Tidy3D | Flexcompute",
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {
     "0270eecf4fb54dd4b251dbdce35c6f1e": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "073ce4e86b5443c7a18aa610b879ef5f": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_69fff25b7c5e4bb4b606e923081085de",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Best weighted RMS error: 0.000114 <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "Best weighted RMS error: 0.000114 \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "2c5bb871611b47e0a8c35f6789500cdb": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "69fff25b7c5e4bb4b606e923081085de": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {
       "_model_module": "@jupyter-widgets/base",
       "_model_module_version": "2.0.0",
       "_model_name": "LayoutModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/base",
       "_view_module_version": "2.0.0",
       "_view_name": "LayoutView",
       "align_content": null,
       "align_items": null,
       "align_self": null,
       "border_bottom": null,
       "border_left": null,
       "border_right": null,
       "border_top": null,
       "bottom": null,
       "display": null,
       "flex": null,
       "flex_flow": null,
       "grid_area": null,
       "grid_auto_columns": null,
       "grid_auto_flow": null,
       "grid_auto_rows": null,
       "grid_column": null,
       "grid_gap": null,
       "grid_row": null,
       "grid_template_areas": null,
       "grid_template_columns": null,
       "grid_template_rows": null,
       "height": null,
       "justify_content": null,
       "justify_items": null,
       "left": null,
       "margin": null,
       "max_height": null,
       "max_width": null,
       "min_height": null,
       "min_width": null,
       "object_fit": null,
       "object_position": null,
       "order": null,
       "overflow": null,
       "padding": null,
       "right": null,
       "top": null,
       "visibility": null,
       "width": null
      }
     },
     "d09103c8267d4fbf9dff576e1904db43": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_0270eecf4fb54dd4b251dbdce35c6f1e",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Best weighted RMS error so far: 0.0295 <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "Best weighted RMS error so far: 0.0295 \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     },
     "ea8f3d5a28d349d88e035629ca1dc3f9": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "_dom_classes": [],
       "_model_module": "@jupyter-widgets/output",
       "_model_module_version": "1.0.0",
       "_model_name": "OutputModel",
       "_view_count": null,
       "_view_module": "@jupyter-widgets/output",
       "_view_module_version": "1.0.0",
       "_view_name": "OutputView",
       "layout": "IPY_MODEL_2c5bb871611b47e0a8c35f6789500cdb",
       "msg_id": "",
       "outputs": [
        {
         "data": {
          "text/html": "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">Best weighted RMS error: 0.0114 <span style=\"color: #729c1f; text-decoration-color: #729c1f\">━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</span> <span style=\"color: #800080; text-decoration-color: #800080\">100%</span> <span style=\"color: #008080; text-decoration-color: #008080\">0:00:00</span>\n</pre>\n",
          "text/plain": "Best weighted RMS error: 0.0114 \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[36m0:00:00\u001b[0m\n"
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ],
       "tabbable": null,
       "tooltip": null
      }
     }
    },
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
