{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Example 1: Malus law" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this example, we analyze, from a computational point of view the Malus law (https://en.wikipedia.org/wiki/Polarizer) for Jones and Stokes-Mueller formalisms. We will also analyze the cases of perfect and imperfect polarizers.\n", "\n", "A polarizer is an ideal optical device that allows light to be transmitted without loss when the electric field vector is parallel to the polarizer transmission axis, and blocks it when perpendicular to the transmission axis (i.e., parallel to the extinction axis). In the case of two ideal polarizers, and a circularly polariced incident light wave, the light intensity that passes through them depends on the angle between their transmission axes: \n", "\n", "$I(\\theta) = \\frac{I_{0}}{2} * cos(\\theta_1 - \\theta_0)^2$.\n", "\n", "Being $I_0$ the intensity of the incident wave and $\\theta_i$ the azimuth of the i-th polarizer.\n", "\n", "The case of imperfect polarizers is slightly different. They block part of the light that passes through them when the electric field is parallel to their transmission axis. This is described by their electric field maximum transmission ($p_1$) or their intensity maximum transmission ($T_{max} = p_1^2$). Also, those polarizers don't block all of the light that passes through them when the electric field is parallel to the extinction axis. This is described by their electric field minimum transmission ($p_2$) or their intensity minimum transmission ($T_{min} = p_2^2$). In that case, the equation of the Malus law gets a little more complicated:\n", "\n", "$I(\\theta) = \\frac{I_{0}}{2} * [T^2_{min} + T^2_{max} + (2 * T_{max} * T_{min} - T^2_{max} - T^2_{min}) * cos(\\theta_1 - \\theta_0)^2]$.\n", "\n", "## Jones formalism\n", "\n", "Let us start by Jones formalism. Jones formalism is easier to visualize and understand.\n", "\n", "### Perfect polarizers\n", "\n", "This is the easiest case. Start by importing all the required modules and classes." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "from py_pol import degrees\n", "from py_pol.jones_vector import Jones_vector\n", "from py_pol.jones_matrix import Jones_matrix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is usual to work with circular polarization for the incident wave as, in that case, the intensity that passes through the first polarizer is independent of the azimuth of the polarizer." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Incident wave = \n", "[+0.707] \n", "[+0.000] \n", "\n" ] } ], "source": [ "# Incident wave\n", "E0 = Jones_vector('Incident wave')\n", "E0.circular_light(intensity=1)\n", "print(E0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let us define the first ideal polarizer, with the azimuth of the transmission axis at 50º, and a second polarizer with angles between 0º and 360º." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Polarizer 0 @ 50.00 deg = \n", "[+0.413 +0.492] \n", "[+0.492 +0.587] \n", "\n", "Polarizer 1_picked = \n", "[+1.000 +0.000] \n", "[+0.000 +0.000] \n", " Polarizer 1_picked = \n", "[+1.000 -0.000] \n", "[-0.000 +0.000] \n", " Polarizer 1_picked = \n", "[+1.000 -0.000] \n", "[-0.000 +0.000] \n", "\n" ] } ], "source": [ "# First polarizer\n", "P0 = Jones_matrix('Polarizer 0')\n", "P0.diattenuator_perfect(azimuth=50 * degrees)\n", "print(P0)\n", "\n", "# Second polarizer\n", "P1 = Jones_matrix('Polarizer 1')\n", "angles = np.linspace(0, 360*degrees, 361) # Steps of 1 degree\n", "P1.diattenuator_perfect(azimuth=angles);\n", "print(P1[0], P1[180], P1[-1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The resulting electric field is calculated by multiplying the original field $E_0$ by the two polarizers, first $P_0$ and then $P_1$. In polarization, the first optical element to be passed through must be at the right position:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "E_final = P1 * P0 * E0\n", "E_final.name = 'Output wave'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let us plot the intensity in terms of the angle. All the methods in the *parameters* class allow doing it setting the draw argument to True." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The intensity of Output wave is (a.u.):\n", "The mean value is 0.2498797450293165 +- 0.1765464271966945\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "I_perfect = E_final.parameters.intensity(draw=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The maximum of intensity is achieved when the transmission angles of $P_0$ and $P_1$ are parallel: when the azimuth of $P_1$ = 50º and 230º.\n", "\n", "### Imperfect polarizers\n", "\n", "Imperfect polarizers can be considered a good model for most real polarizers. Again, start by importing the required modules and classes." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "from py_pol import degrees\n", "from py_pol.jones_vector import Jones_vector\n", "from py_pol.jones_matrix import Jones_matrix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is usual to work with circular polarization for the incident wave as, in that case, the intensity that passes through the first polarizer is independent of the azimuth of the polarizer." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Incident wave = \n", "[+0.707] \n", "[+0.000] \n", "\n" ] } ], "source": [ "# Incident wave\n", "E0 = Jones_vector('Incident wave')\n", "E0.circular_light(intensity=1)\n", "print(E0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The ideal polarizers described by their transmissions and azimuth are called linear polarizers (the states of maximum and minimum transmission are linear polarization states). Let us define the first linear polarizer, with the azimuth of the transmission axis at 50º, and a second polarizer with angles between 0º and 360º. We will use some transmission values far from the ideal behavior." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Polarizer 0 @ 50.00 deg = \n", "[+0.632 +0.220] \n", "[+0.220 +0.710] \n", "\n", "Polarizer 1_picked = \n", "[+0.894 +0.000] \n", "[+0.000 +0.447] \n", " Polarizer 1_picked = \n", "[+0.894 -0.000] \n", "[-0.000 +0.447] \n", " Polarizer 1_picked = \n", "[+0.894 -0.000] \n", "[-0.000 +0.447] \n", "\n" ] } ], "source": [ "# First polarizer\n", "P0 = Jones_matrix('Polarizer 0')\n", "P0.diattenuator_linear(Tmax=0.8, Tmin=0.2, azimuth=50 * degrees)\n", "print(P0)\n", "\n", "# Second polarizer\n", "P1 = Jones_matrix('Polarizer 1')\n", "angles = np.linspace(0, 360*degrees, 361) # Steps of 1 degree\n", "P1.diattenuator_linear(Tmax=0.8, Tmin=0.2, azimuth=angles);\n", "print(P1[0], P1[180], P1[-1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The resulting electric field is calculated by multiplying the original field $E_0$ by the two polarizers, first $P_0$ and then $P_1$. In polarization, the first optical element to be passed through must be at the right position:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "E_final = P1 * P0 * E0\n", "E_final.name = 'Output wave'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let us plot the intensity in terms of the angle. All the methods in the *parameters* class allow doing it setting the draw argument to True." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The intensity of Output wave is (a.u.):\n", "The mean value is 0.2499567082105539 +- 0.06355671379081002\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "I_imperfect = E_final.parameters.intensity(draw=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The maximum of intensity is achieved when the transmission angles of $P_0$ and $P_1$ are parallel: when the azimuth of $P_1$ = 50º and 230º. However, this case differs from the case of perfect polarizers as the maximum achieved intensity is smaller and the minimum intensity is higher.\n", "\n", "## Mueller-Stokes formalism\n", "\n", "Mueller-Stokes formalism is more complicated than Jones formalism, but allows working with partial polarization states. This example uses completely polarized light, but it is a good example to start using *Mueller* and *Stokes* classes.\n", "\n", "### Perfect polarizers\n", "\n", "This is the easiest case. Start by importing all the required modules and classes." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "from py_pol import degrees\n", "from py_pol.stokes import Stokes\n", "from py_pol.mueller import Mueller" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is usual to work with circular polarization for the incident wave as, in that case, the intensity that passes through the first polarizer is independent of the azimuth of the polarizer." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Incident wave = \n", "[+1.000] \n", "[+0.000] \n", "[+0.000] \n", "[+1.000] \n", "\n" ] } ], "source": [ "# Incident wave\n", "S0 = Stokes('Incident wave')\n", "S0.circular_light(intensity=1)\n", "print(S0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let us define the first ideal polarizer, with the azimuth of the transmission axis at 50º, and a second polarizer with angles between 0º and 360º." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# First polarizer\n", "P0 = Mueller('Polarizer 0')\n", "P0.diattenuator_perfect(azimuth=50 * degrees)\n", "\n", "# Second polarizer\n", "P1 = Mueller('Polarizer 0')\n", "angles = np.linspace(0, 360*degrees, 361) # Steps of 1 degree\n", "P1.diattenuator_perfect(azimuth=angles);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The resulting Stokes vector is calculated by multiplying the original Stokes vector $S_0$ by the two polarizers, first $P_0$ and then $P_1$. In polarization, the first optical element to be passed through must be at the right position:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "S_final = P1 * P0 * S0\n", "S_final.name = 'Output wave'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let us plot the intensity in terms of the angle. All the methods in the *parameters* class allow doing it setting the draw argument to True." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The intensity of Output wave is (a.u.):\n", "The mean value is 0.24987974502931648 +- 0.17654642719669453\n" ] }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "I_perfect = S_final.parameters.intensity(draw=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The maximum of intensity is achieved when the transmission angles of $P_0$ and $P_1$ are parallel: when the azimuth of $P_1$ = 50º and 230º.\n", "\n", "### Imperfect polarizers\n", "\n", "Imperfect polarizers can be considered a good model for most real polarizers. Again, start by importing the required modules and classes." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "from py_pol import degrees\n", "from py_pol.stokes import Stokes\n", "from py_pol.mueller import Mueller" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is usual to work with circular polarization for the incident wave as, in that case, the intensity that passes through the first polarizer is independent of the azimuth of the polarizer." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Incident wave = \n", "[+1.000] \n", "[+0.000] \n", "[+0.000] \n", "[+1.000] \n", "\n" ] } ], "source": [ "# Incident wave\n", "S0 = Stokes('Incident wave')\n", "S0.circular_light(intensity=1)\n", "print(S0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The ideal polarizers described by their transmissions and azimuth are called linear polarizers (the states of maximum and minimum transmission are linear polarization states). Let us define the first linear polarizer, with the azimuth of the transmission axis at 50º, and a second polarizer with angles between 0º and 360º. We will use some transmission values far from the ideal behavior." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "# First polarizer\n", "P0 = Mueller('Polarizer 0')\n", "P0.diattenuator_linear(Tmax=0.8, Tmin=0.2, azimuth=50 * degrees)\n", "\n", "# Second polarizer\n", "P1 = Mueller('Polarizer 0')\n", "angles = np.linspace(0, 360*degrees, 361) # Steps of 1 degree\n", "P1.diattenuator_linear(Tmax=0.8, Tmin=0.2, azimuth=angles);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The resulting Stokes vector is calculated by multiplying the original Stokes vector $S_0$ by the two polarizers, first $P_0$ and then $P_1$. In polarization, the first optical element to be passed through must be at the right position:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "S_final = P1 * P0 * S0\n", "S_final.name = 'Output wave'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let us plot the intensity in terms of the angle. All the methods in the *parameters* class allow doing it setting the draw argument to True." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The intensity of Output wave is (a.u.):\n", "The mean value is 0.24995670821055394 +- 0.06355671379081004\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUkAAAE/CAYAAADL8TF0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAA/gUlEQVR4nO29eXxcV5Xv+12ap9I8WvJsSZ5iO47jTAyBJBADF0MDTdK8NFMenX7kdXO76du5l9t84MPtz2u40PTlNXReGNMD5DI2oUkIEAiTyeA4jofIGjxrljWWJGus9f6oc+yKoqEkVdWpYX0/H31Uteucs1edU+e391pr731EVTEMwzDmJ81rAwzDMOIZE0nDMIxFMJE0DMNYBBNJwzCMRTCRNAzDWAQTScMwjEUwkTQSFhF5UET+JkrHrhCRZhHJicbxQ+qpEpEmEcmOZj3GyjGRNMJCRM6JyO1hbvuUiNwbbZtU9T5V/ZRT560i0h7Bwz8AfF1VJyJ4zFegqj3AL4EPRbMeY+WYSBrGHJxe3XuBf41Rlf8G/EmM6jKWiYmksWxE5H0i8lsR+ayIDIrIWRE54Hz2t8CrgX8UkVER+UenfKuI/ExEBhw39g9DjvcNEfmiiPxYRPwi8oyIbHY+ExH5vIj0isiwiBwTkZ0h+/0PEckHHgfWOHWOisgaERkXkbKQeq4TkT4RyVziK94ADKnqlZ6piLzfcYv9InJGRBYUNdeukPdL9XKfATaJyPol7DI8wETSWCk3AM1AOfAZ4KsiIqr6MeA3wP2qWqCq9zsi9jPgm0AlcDfwJRHZEXK8u4FPAiVAG/C3TvkbgNcADUAx8G6gP9QQVR0DDgCdTp0FqtoJPAX8Ycim/wfwiKpOi8iQiLxqge92jfPdQukF3gIUAu8HPi8ie5c4R2GhqjMEv/PuSBzPiCwmksZKOa+qX1bVWeBhoAaoWmDbtwDnVPXrqjqjqkeA7wHvDNnm+6r6rCMY/wbsccqnAR+wFRBVbVLVrjBtfJigMCIi6QSF+F8AVLVYVX+7wH7FgD+0QFV/rKqnNcivgJ8S7DFHCr9TrxFnmEgaK6XbfaGq487LggW2XQ/c4PTehkRkCHgPUD3f8YBx91iq+gvgH4EvAj0i8pCIFIZp4w+B7SKyCbgDGFbVZ8PYb5CgMF9BRA6IyNNOuGAIeBPBXnSk8AFDETyeESFMJI1oMHdpqYvAr5zem/tXoKp/GtbBVL+gqtcBOwi63X8VRp04melvExTke3B6kWFwzKkHuJLI+R7wWaBKVYuBxwBZYP8xIC/kffUC27nHzwC2AC+GaZ8RQ0wkjWjQA2wKef8fQIOI3CMimc7f9SKybakDOdvd4CRbxoAJYHaBOstEpGhO+T8D7wPeSvjZ6meBYhGpdd5nAdlAHzDjJKnesMj+R4E3iUipiFQDH1mivv0EwxHnw7TPiCEmkkY0+F/AO53M9xdU1U9QVO4COgm61p8mKDxLUQh8maALfJ5g0uazczdS1VPAt4Azjku/xin/HRAAjqjqOXd7JwM+b0xRVaeAb+DEMx37/4xgr3QQ+CPg0ZBjrXOOt84p+heCvcJzBGOX/zv0+CLyuIj8t5Ci9wAPLn0qDC8QW3TXSHZE5BfAN1X1K8vYp4Jglv5aVb0cRdsqgV859UR14LqxMkwkjaRGRK4nOPxordMjNIxlYe62kbSIyMPAz4GPmEAaK8V6koZhGItgPUnDMIxFMJE0DMNYhAyvDVgO5eXlumHDBq/NMAwjyXj++ecvqWrFfJ8llEhu2LCBw4cPe22GYRhJhogsOJDf3G3DMIxFMJE0DMNYBBNJwzCMRTCRNAzDWAQTScMwjEUwkTQMw1gEE0nDMIxFMJE0DMNYBBNJwzCMRUioGTeJypm+UV5sHyInI50bN5VRkp/ltUlGDFBVjncM09IzSml+JjdtKic3K91rs4xlYiIZRfpHJ/nYD07wk5NXHwSYnZHGn966mftft4WMdOvIJyvn+8f480eOcvTi0JWykrxMPvbm7bzzujrvDDOWjYlklOjzT/KH/9/v6Ri6zF/c0cCbrqnGPzHD1353jn/4eStn+sb4/Lv3kJ620AP3jETl6MUhPvCN55gNKH/79p3csrmc9sHLfOHJVj76nRfpGZngw6/b4rWZRpiYSEaB8akZ/vhrz9I9PME3772BfRtKr3z2/64rYVuNj8/8pJmSvEw+eXCnh5YakaZ7eIJ7H36OguwMHv7AfjaW5wOwoTyfmzaX8ZffPsr/fKKZ0vws7t6/bomjGfGAiWQU+LvHT3Gqe4Svv+/6lwmky/916xb6R6f46m/P8pqGCm7bVuWBlUakmQ0oH/7mEcanZvnW/3njFYF0SU8T/ue7dtM/NsUnHj3JDRtL2VRR4JG1RrhYUCzCHDp9iX/+/Xnef/NGbm2sXHC7/3JnI1urfTzw/eMMj0/H0EIjWnzz2Qs8f36Qv337TuqrfPNuk5mexmfftZuczHQ++p0XCQTs8SnxjolkBAkElE/9RxNrS3P5qzc2LrptdkY6n33Xbi6NTvKlX7XFyEIjWgyMTfHZJ5q5aVMZb9tTu+i2VYU5/M1btnPkwhA/OtYZIwuNlWIiGUF+dKyTpq4RPvqGxrCGeuysLeLg7jV843fn6B62Ry4nMg/+6jT+iWk+eXAHIksn4/7g2lq21RTyuZ+2MDUTiIGFxkoxkYwQswHl8z9rYWu1j/+0a03Y+/3FHY3MBpQv/tJ6k4nK0PgU//r0ed66ew0NC7jZc0lLE/7LGxu5MDDOd59vj7KFxmowkYwQP2/q4Vz/OP/36+tJW8awnnVlebz92lq++3w7Q+NTUbTQiBbfOHSO8alZ/vTW5Q3rubWxgmtqi/jqb89YbDKOMZGMEF//3Vlqi3N5447lZ6rff8tGLk/P8shzF6NgmRFNJmdm+effn+f2bVU0VofXi3QRET7wqg2c7hvjN22XomShsVpMJCPAS50jPH1mgD++af2KZtFsX1PITZvK+OdD55iZtfhUIvHEyR4Gxqb445vWr2j/N1+zhgpfNl/77dkIW2ZEChPJCPC/n7tAVkYa775+7YqP8d6b19M5PGE9igTjm8+cZ11pHq/aUr6i/bMy0vij/ev4dWsfnUOXI2ydEQlMJFfJ5MwsP3yxkzdsr6I4b+ULV7x+axUleZl8z4L4CcOZvlGePjPAXfvXLisOPZd3XleHKvzghY4IWmdEChPJVfLLU70MjU/zjlUuWpCVkcbBPbX89KUeG1yeIPz70U5E4J17V3ft15bmsX9jKd99vh1VS+DEGyaSq+R7Rzqo9GXz6hW6W6G887o6pmYC/MdxG2Ac76gqP3qxk5s2lVFZmLPq473zujrOXhrjyIWh1RtnRBQTyVUwNjnDr1r6ePOumogse7ZjTSGbKvJ57HhXBKwzosmJjhHOXhrjrbvDHxO7GAd2VpOVnmbXPg4xkVwFv2rpY2omwBt3VEfkeCLCgZ3VPH1mgIExGzMZz/zoWCeZ6cKdOyNz7X05mby6vpyfnOg2lzvOCEskReROEWkWkTYReWCezw+KyDEROSoih0XkVU75WhH5pYg0ichJEfnzkH0+ISIdzj5HReRNkftaseEnJ7opzc/i+nlW+lkpB3bWMBtQfvZS99IbG56gqvz0ZDc3by5fVbJuLgeuqaFj6DLH2ocjdkxj9SwpkiKSDnwROABsB+4Wke1zNnsS2K2qe4APAF9xymeAv1TVbcCNwIfn7Pt5Vd3j/D22uq8SW6ZmAvzyVC+3b6uM6MK5O9YUsrY0l8eOm0jGK6f7xjjXP87t2xZe5Wkl3LGtiow04bET5nLHE+H0JPcDbap6RlWngEeAg6EbqOqoXvUR8gF1yrtU9Yjz2g80AYsvkZIgHDp9Cf/kTMTcLRcR4c4d1fz+dD9jkzMRPbYRGZ5s6gHg9RFeB7QoL5ObNpfxZFNvRI9rrI5wRLIWCJ0v1848QicibxeRU8CPCfYm536+AbgWeCak+H7HTf+aiJQsx3CveeJkD/lZ6dy8efVZ7bnc2ljJ1GyA35/uj/ixjdXzZFMvW6t91BbnRvzYr22ooK13lPbB8Ygf21gZ4YjkfL7kKyLLqvoDVd0KvA341MsOIFIAfA/4iKqOOMX/BGwG9gBdwOfmrVzkQ06c83BfX18Y5kYfVeXJph5ubawkJzPyT7/bt6GEvKx0nmqxHkW8MTQ+xeHzA9wepdXk3YWan2qOj9+6EZ5ItgOh8+3qgAUH8qnqr4HNIlIOICKZBAXy31T1+yHb9ajqrKoGgC8TdOvnO95DqrpPVfdVVFSEYW70ae7x0+uf5LWN0bEnOyPYQ32quc8ynXHGU819BBRui3A80mVzRT51JbkmknFEOCL5HFAvIhtFJAu4C3g0dAMR2SLOSqMishfIAvqdsq8CTar693P2qQl5+3bgxMq/Rmz5bWtwfvWr6yPvarvc2lhB++BlTveNRa0OY/k8eaqX8oJsdtcVR+X4IsKtjRUcOn2JyZnZqNRhLI8lRVJVZ4D7gScIJl6+raonReQ+EbnP2ewdwAkROUowE/5uJ5FzC3AP8Pp5hvp8RkSOi8gx4HXAf47oN4siv269xJbKAmqKIh+TcrnV6aU+1Wwud7wQCCi/be3jNQ3lq5qrvRS3NlQyPjXL4XODUavDCJ+wnpboDM95bE7ZgyGvPw18ep79fsv8MU1U9Z5lWRonTEzP8uzZfu66PrqPA60ryWNLZQG/aunj3ldvimpdRnic6vYzOD7NLVFI1oVy85YystLTeKq5l1siMN3VWB0242aZPH9+kInpAK9piP6P99aGCp45M8DEtLld8cCh08Ewy81byqJaT15WBvs3lvLrFls2Lx4wkVwmv2m9RGa6cMPG6N4oELwZp2YDHLlgblc8cOh0P5vK86MaZnG5aXMZzT1++kcno16XsTgmksvkN6197F1XQn52WJGKVbFvQylpAk+fGYh6XcbiTM8GeOZMf9R7kS43bgrW8+xZu/ZeYyK5DIbGpzjZObLiVaiXS2FOJjtri3j6jA0q95pj7cOMTc1GZfLAfOyqKyI3M51nTCQ9x0RyGbjZxv0bI7egxVLcsLGUoxeHLC7pMYecx2rctCk2PcnM9DT2bSixBjIOMJFcBs+eGyArPY3da4tjVueNm8qYmgnwgi3G6imHTvezvaaQkvzIrfqzFDduKuNUt9+WzfMYE8ll8OzZAXavLYrKVMSFuBqXtB6FV0zNBJNnN8aoF+ly46agx/LsWbv2XmIiGSbjUzOc6BiO6NqR4VCUm8mONRaX9JITncNMzgS4fkNs12C5praY3Mx0S9x5jIlkmLxwYYiZgHJ9DOORLjduKuWFCxaX9IrnnVj0dTEWyawMi0vGAyaSYfLM2QHSBK5bH/sV3a7fUMrUbIDjHbZitRccPj/AutI8Kn2rf+DXcrl+QynNPX5GJuwJml5hIhkmz50dYFtNIYU5mTGve68jzEfO26DyWKOqPH9+kH0x7kW67F1XgioctcSdZ5hIhsHUTIAXLg7GPB7pUl6QzbrSPJt54wHn+se5NDrFvvXeXPvda4sQwa69h5hIhkFT1wgT0wHPehMQdPOPXBiy9SVjzOFzwaSJV9fel5NJY5XPnsftISaSYfCC04rvXeedSO5dV0yff5L2wcue2ZCKPH9+kMKcDLZUFHhmw971JbxwYZBAwBpILzCRDIOjF4eo9GVTUxT7wL3LtY5Am9sVWw6fH+S69SVRXT9yKfauK8E/MUNb36hnNqQyJpJh8MLFIa5dV4yz+LonbK32kZeVbsmbGDI8Pk1b76gnIxpC2buuGLDEnVeYSC7BwNgU5/vH2bPW2xslIz2NXXVFFpuKIcc6hgA8v/Yby/Mpycs0L8IjTCSX4OjF4A/zWqc195Lr1pfwUtcI41P2PO5YcKw9OC71mroiT+0QEfauK7EG0iNMJJfg6IUh0iS4dJXX7F1XwmxAOd5ug8pjwdGLQ2yqyKcoN/ZjY+eyd30Jbb2jDF+2QeWxxkRyCV64OERjdSF5WdFfZHcp3B6NzbyJPqrK0YtDUXsq4nJxG+mTdu1jjonkIgQCwRslHlxtgEpfDtWFOSaSMaB7ZII+/yS748CDANi5JmjHMbv2McdEchHOXBrDPzHDnhiuH7kU19QVmbsdA168OAQQ07VDF6MkP4u1pbl27T3ARHIRjjvZzXhxuQB21RY54m2xqWhy9OIwmenCtppCr025wq7aYvMiPMBEchFOdIyQk5nG5op8r025ghuXPNEx4rElyc2LF4fYVlMY0wWWl2JnbREXBsYZGreVymOJieQiHO8YZltNIRnp8XOarql1kzdD3hqSxAQCyvGO4bgY0RDKLkvceUJYd7+I3CkizSLSJiIPzPP5QRE5JiJHReSwiLxqqX1FpFREfiYirc5/b0fsziEQUF7qHLkSMI8XygqyqS3O5bj1JKPGmUtjjE7OsCuOwixwNXljIhlblhRJEUkHvggcALYDd4vI9jmbPQnsVtU9wAeAr4Sx7wPAk6pa7+z/CvH1knP9wRvF7bnFE9fUFnG8fchrM5KWk51BEYq3BrIoL5P1ZXmWvIkx4fQk9wNtqnpGVaeAR4CDoRuo6qheXcMrH9Aw9j0IPOy8fhh424q/RRQ40Rnsqe2ojZ/Avcs1dUWc6x9neNySN9HgZOcIWelp1Fd5t/LPQlxTW3RlJpARG8IRyVrgYsj7dqfsZYjI20XkFPBjgr3JpfatUtUuAOd/5fJMjy4nOobJSk+jocrntSmvwO3dnui0myUanOwcprHaR2YcxaJddtUV0TF02R4zG0PC+RXMt/TNKxa2U9UfqOpWgj3CTy1n30UrF/mQE+c83NfXt5xdV8WJjmG21sTnjXI1eWMiGWlUlZOdI+xYE38eBAQz3GDXPpaEowDtwNqQ93VA50Ibq+qvgc0iUr7Evj0iUgPg/O9d4HgPqeo+Vd1XUVERhrmrR1U50TF85QcZb9jA4ujRMXSZofHp+BdJi0nHjHBE8jmgXkQ2ikgWcBfwaOgGIrJFnMUWRWQvkAX0L7Hvo8B7ndfvBX642i8TKS4OXGZkYibuAveh7KotvrKUlxE5Tl6JRcfntS/MyWRTeb7FJWPIkiKpqjPA/cATQBPwbVU9KSL3ich9zmbvAE6IyFGC2ex3a5B593X2+TvgDhFpBe5w3scFriuzMw6TNi47a4u4OHDZBhZHmJOdI6QJbKuO72t/wtztmBHW0jaq+hjw2JyyB0Nefxr4dLj7OuX9wG3LMTZWnOgcJiNNaKyOv6SNy3bHHWzq8nPT5jKPrUkeTnYMs7migNys+JlpM5ftawp59MVOhsanKM7L8tqcpCf+shJxwImOYRqqfGRnxPGN4swpfqnLBpVHknhO2rjYtY8tJpJzcJM28TiIPJQKXzblBdk02Y0SMS6NTtI9MsGOOI5FA1cW3Wjq8ntsSWpgIjmHruEJBsen43IQ+Vy21fhMJCPIyTieQBCKNZCxxURyDqe6gz+8eFoiayG2rymktWeU6dmA16YkBe50xB018d2ThOC1f6nTRDIWmEjOwXVh4jlp47K9ppCp2QCn7XnMEeFkxwh1JbkU5Xn/TJul2Fbjo613lKkZayCjjYnkHJq6gjdKYU783yhXAvjWo4gIJzuH43psbCjWQMYOE8k5NHWNsDWOx8iFsrE8n6yMNItNRYCxyRnOD4wnRJgFrjaQdu2jj4lkCBPTs5y9NMb2mvh3tQEy0tNorPLZUJAI0NLjRxW2Jsi1dxtI8yKij4lkCC09fgKaGEkbl+01hTR1+bm6Up2xEpq7g7HorQkQi4ZgA7m12kdTt4lktDGRDMF1XbYmkEhuq/ExMDZFr3/Sa1MSmlPdfvKy0llbkue1KWGzrdoayFhgIhlCU5ef3Mx01pcmzo2y3Uk0mNu1Ok51j9BQ5SMtbb7V/eKT7WsKGRibomfEGshoYiIZQlPXCI3ViXWjuDE0i0uuHFXlVLefbQkSj3TZZsmbmGAi6XD1RkkcVxuCS2fVleSaSK6CXv8kQ+PTNMbhKvSLYQ1kbDCRdOganmD48nTC9SbATd7YjbJSEjEWDcEGcm2pNZDRxkTSIZGmI85la7WPc5fGmJie9dqUhCTRMtuhNFYV0tJtC11EExNJh0SajjiXhmofAYW2Xpt9sRJOdfupLsxJyLUZt1b7OHNpjMkZayCjhYmkw0sJNB1xLm4PqKXHehQr4VS3PyEbRwg2kLMB5UzfmNemJC0mkg6nEmg64lzWl+WTlZ5Gs4nkspmeDdDW60+YmTZzcZNN1kBGDxNJYHJmlnP94zRWx9/D6MMhMz2NTRX5FptaAWcvjTE9qwkZj4Tg9MSMNOGUXfuoYSIJnLs0zmxAaUiwISChNFb7riQgjPC5ktlOUC8iKyONzRUF1kBGERNJrroq9ZWJLZKdwxOMTEx7bUpC0dztJyNN2FyRmF4EBOOSFmqJHiaSQGuPnzSBTRX5XpuyYtzYVKvdLMviVLefzRUFZGUk7q3QWFVA++BlRidnvDYlKUncX0YEae0dZX1ZPjmZ8ft0xKVwQwXN3TYMaDk0J3Bm26XRCRVY8iY6mEgS/HFtqUxcdwugriSX/Kx0mm3prLAZvjxNx9DlxBdJN8NtccmokPIiOTUT4Fz/OA1ViS2SImKxqWXi9rwScSpqKHUlueRlpVuGO0qkvEievTSW8Jltl8aqYIbb1hcMD1dUGhM0s+2SlibUV/nM3Y4SYYmkiNwpIs0i0iYiD8zz+XtE5Jjzd0hEdjvljSJyNORvREQ+4nz2CRHpCPnsTRH9ZmHi/rAS3d2GYFxycHyavlFbXzAcWnv8+LIzWFOU47Upq6axqsBEMkosKZIikg58ETgAbAfuFpHtczY7C7xWVXcBnwIeAlDVZlXdo6p7gOuAceAHIft93v1cVR9b9bdZAa29o6QJCT0ExOXK9ERL3oRFS4+fLVUFiCTO+qEL0VDl49LoFJesgYw44fQk9wNtqnpGVaeAR4CDoRuo6iFVHXTePg3UzXOc24DTqnp+NQZHmtYeP+tK8xI6s+3S4IikxSXDo7VnlPok8CDg6mB4S95EnnBEsha4GPK+3SlbiA8Cj89TfhfwrTll9zsu+tdEpCQMWyJOa+8o9UkQjwQoL8imLD/LbpQw6B+dpH9sKili0QANzpRaayAjTzgiOZ8vMm9mQEReR1Ak/3pOeRbwVuA7IcX/BGwG9gBdwOcWOOaHROSwiBzu6+sLw9zwmZoJcO7SWMJntkNpqPJxym6UJWl1lpVLhlg0QEVBNiV5mTY1NQqEI5LtwNqQ93VA59yNRGQX8BXgoKr2z/n4AHBEVXvcAlXtUdVZVQ0AXybo1r8CVX1IVfep6r6KioowzA2fs5fGmAloQk9HnEtjtY/WHj+BgGW4F8MVyWTpSYpIcP6+NZARJxyRfA6oF5GNTo/wLuDR0A1EZB3wfeAeVW2Z5xh3M8fVFpGakLdvB04sx/BI0NrrzNlOop5kY7WP8alZOoYue21KXNPa46cgO4OaJMhsuzRW+WixIWARJ2OpDVR1RkTuB54A0oGvqepJEbnP+fxB4ONAGfAlJ1M4o6r7AEQkD7gD+JM5h/6MiOwh6Lqfm+fzqNPSkzyZbRe3Z3Sq28/aBHo0bqxxZ1klQ2bbpaHax9jULO2Dl+3aR5AlRRLAGZ7z2JyyB0Ne3wvcu8C+4wQFdG75PcuyNAq09SZPZtvFja+29vq5Y3uVx9bEL229o7x+a6XXZkQUd3piW++oiWQESekZNy09yZPZdvHlZFJTlENrj42VXIiBsSkujSZPZtvFTULZoPLIkrIi6Wa2k2WcXChbKguuxFuNV9KaRLOsQinOy6LCl30lKWVEhpQVyXP9wcx2svUmILh4cFvvqGW4F6AlyTLbodRXFphIRpiUFclkmrM9l4aqAiamA5bhXoBkzGy7NFT5aOuxDHckSVmRbHUy28kokvUhyRvjlbT2jCZdZttlS2UBY1OzdA1PeG1K0pC6IpmEmW2XLRXuY0bN7ZqP1l5/Us2yCqXekjcRJ3VFsmeULUk00yaUorxMKn3ZluGeBzeznUyzrEKpDxkGZESGlBTJqZkAZ5NszvZc6qsKaDN3+xW4me1kmmUVSml+FmX5WdZARpCUFEk3s52sNwoEM9ytvaMWwJ+Dm9lOtvGxodgQsMiSkiLptrLJ6nJBsKc0PjVLpwXwX0abk9lOhtXIF6KhyhrISJKSItnS40eSNLPt4jYAFsB/OS1JnNl2qa8qwD8xQ8+IrVIeCVJSJNt6R5M2s+3iZjnbLDb1Mlp7k2c18oVwG39zuSNDSopkS48/qV1tgJL8LMoLsuxGCWFwLPgMmGScaROK+9u25E1kSDmRdDPbyZy0cdliU9RexpVZVkl+7csLsijOy7RrHyFSTiTPX5mzndw3CrhT1CyA75Jsq5EvhIjQUOmzIWARIuVEsiUFMtsu9ZUF+CctgO/S2uMnPys9qTPbLluqCmixBjIipJxItvYGM9vJtBr5QmyxDPfLaO0dZUuVL6kz2y71lQUMX56mz57DvWpSTyR7gpnt3KzkzWy7XF3owmJTEPQiGpI8s+3ieko2umH1pJxIBjPbqXGjlOVnUZKXabEpUiez7WINZORIKZGcnnUz26lxo4gI9VU+GwpCyHO2UyBhB1Dpy6YwJ8OGgEWAlBLJc5dSJ7Pt4q5UneoBfDcumyo9SWsgI0dKiaTbm0iFzLbLlQC+P7UD+G29oymT2XaxRzlEhpQSSXfOdipktl3c0EKq3ywtPf6UyWy7bKksYGBsin7LcK+KlBLJ1p5R1pakRmbbxU1Stab4MKBUymy7WAMZGVJLJJN42f6FqPBlU5Sb2lPUhsaDme1UmIoaSoNluCNCWCIpIneKSLOItInIA/N8/h4ROeb8HRKR3SGfnROR4yJyVEQOh5SXisjPRKTV+V8Sma80P6mW2XYRkZSPTbWmwEK781FdmENBdgZtKe5FrJYlRVJE0oEvAgeA7cDdIrJ9zmZngdeq6i7gU8BDcz5/naruUdV9IWUPAE+qaj3wpPM+apzvH2N6VlNmjGQo9VUFtKbwY0avLrKcWtdeRNhSWWAPhFsl4fQk9wNtqnpGVaeAR4CDoRuo6iFVHXTePg3UhXHcg8DDzuuHgbeFZfEKcX8oqTIEJJQtlT4Gx6fpH5vy2hRPaOnxk5eVzpqiXK9NiTmp7kVEgnBEsha4GPK+3SlbiA8Cj4e8V+CnIvK8iHwopLxKVbsAnP+V4Zm8MlIxs+1yNXmTmjdLW29wNfK0tNTJbLvUVxVwaXSSwRRtICNBOCI53y9rXr9NRF5HUCT/OqT4FlXdS9Bd/7CIvGY5BorIh0TksIgc7uvrW86uL6O1N/Uy2y4NVx4zmpqxqdZef1I/qmMxrjxiti81G8hIEI5ItgNrQ97XAZ1zNxKRXcBXgIOq2u+Wq2qn878X+AFB9x2gR0RqnH1rgN75KlfVh1R1n6ruq6ioCMPc+WntSb3MtktVYTa+7IyUdLuGL0/TM5I6c7bnkupeRCQIRySfA+pFZKOIZAF3AY+GbiAi64DvA/eoaktIeb6I+NzXwBuAE87HjwLvdV6/F/jhar7IYriZ7S0pNNMmFBFx1hdMvZ5kW29qJm1c1hTlkpeVnpLXPlJkLLWBqs6IyP3AE0A68DVVPSki9zmfPwh8HCgDvuTMaJhxMtlVwA+csgzgm6r6E+fQfwd8W0Q+CFwA3hXRbxaCm9lO1Z4kBEXiF6fm7awnNe4g+lSaihpKWloww92Wgl5EpFhSJAFU9THgsTllD4a8vhe4d579zgC755Y7n/UDty3H2JWSSquRL0R9pY9vH25nYGyK0vwsr82JGa29o+RkplFbknqZbZctlQX8tvWS12YkLCkx46a1ZzTpn7O9FFfWF0wxt6u1d5TNFQWkp2Bm26Whykevf5Lhy9Nem5KQpIRItvT6Uzaz7eJmOVtSzO1q6/GnbNLG5coz2FN0dMNqSQmRbOtJ/gfSL8WaotSbouafmKZzeCKlPQi4OgTMZt6sjKQXyenZAGcujabcvN25pOIUtVTPbLvUFueSm2kZ7pWS9CJpme2rpNoUtVRd2GIuluFeHUkvkq2W2b5CQ5UvpaaotfWOkpWRxrrSPK9N8Zz6FB0nGwmSXiRbLLN9BfchWKlys7T2+FM+s+1SX+mjZ8Qy3Csh6UWytddPXUluSme2XRpSbKXq1l5L2Lm44SbLcC+f5BfJnlEazNUGghnu/Kz0lBgrOTY5Q/vgZRNJB8twr5ykFknLbL+c4BxuX0r0JE/3uUkbE0m4muG2hS6WT1KL5Pn+8ZRdjXwhGlJkGJArBqm6qMlc3Ax3q7nbyyapRbI1xR5IHw6psghra+8omenC+jLLbLvUVxZYT3IFJLdIOm7l5sp8jy2JH1LlMaNtvX42lReQmZ7UP/FlUV/lo3tkwjLcyySpf0EtPX7WluaSlxXWYkcpwdUAfnK7XS09o1eGPBlBrma4k7uBjDRJLZKW2X4lqZDhvjw1y8XBcYtFz8GdUJHM1z4aJK1IzjiZbetNvJxUyHCf7htF1WZZzaWuxJ3DnbzX/kTHMN99vp2J6dmIHTNpRfL8QDCzbT3JV5LsGe4rC1tYA/kyUiHD/fiJLh743jHSJHKzrJJWJDeV5/Pcx27nDTuqvDYl7kj2DHdrr5+MNGFDmSXs5pLsGe6WnlE2lOeTlRE5aUtakRQRKnzZ+HIyvTYl7kj2DHc0bpRkwc1wj0wkZ4a7tccf8Vi0/YpSEPdHlKwZ7jabs70gyfyI2YnpWS4MjEd8hp2JZApSW5xLflZ6Ug4FmZie5Xz/mInkAlxZ5CQJG8jTfaMElIivHWsimYK4Ge5k7EmevTRGQGGLzbKal7qSXHIy05Iy1OL2jiM9w85EMkVJ1lXK3e9kK9HPj5vhTsYGMloJOxPJFKWhqoA+/yRD48mV4W7r8ZMmsLHcMtsL0VDpS8pQS0vPKBujkLAzkUxR3IHWyTZesqVnlPVl+WRn2CLLC7GlqoCu4eTLcLf2+KMyNjYskRSRO0WkWUTaROSBeT5/j4gcc/4Oichup3ytiPxSRJpE5KSI/HnIPp8QkQ4ROer8vSlyX8tYCvfHlGwDi1t6/OZqL0HDlemJydNAXp6a5fzAeFRW/FpSJEUkHfgicADYDtwtItvnbHYWeK2q7gI+BTzklM8Af6mq24AbgQ/P2ffzqrrH+Xtsld/FWAZuhjuZbpSJ6VnO9Y/RWF3otSlxjSskyfQoh7be4FTUrdUeiCSwH2hT1TOqOgU8AhwM3UBVD6nqoPP2aaDOKe9S1SPOaz/QBNRGynhj5Vx9Dndy3SgBhUbLbC+Km+FOplBLcxTXjg1HJGuBiyHv21lc6D4IPD63UEQ2ANcCz4QU3++46F8TkZIwbDEiSH2SLXThCn5jtbnbi3F1DnfyXPvm7hGyMtJYH4WpqOGI5HwzxXXeDUVeR1Ak/3pOeQHwPeAjqjriFP8TsBnYA3QBn1vgmB8SkcMicrivry8Mc41wqa9Mrgx3c7efrPTo3CjJRn2lL6kGlDf3BGdZRePxweGIZDuwNuR9HdA5dyMR2QV8BTioqv0h5ZkEBfLfVPX7brmq9qjqrKoGgC8TdOtfgao+pKr7VHVfRUVFON/JCJNke8Rsc4+fzZW2Gnk41DsZbn+SZLhbuv00RiEeCeGJ5HNAvYhsFJEs4C7g0dANRGQd8H3gHlVtCSkX4KtAk6r+/Zx9akLevh04sbKvYKwUN8OdLHHJlm4/jZbZDosrGe4kaCCHx6fpHpmIWix6yecaqOqMiNwPPAGkA19T1ZMicp/z+YPAx4Ey4EtBXWRGVfcBtwD3AMdF5KhzyP/mZLI/IyJ7CLru54A/ieD3MsJgTVEueUmS4R6ZmKZzeIKGKPUmko0rQ8B6/Oxdl9jpgCtJmyhd+7Ae/uKI2mNzyh4MeX0vcO88+/2W+WOaqOo9y7LUiDhpaUJ9lY/m7sTvSbY43yEaQ0CSkbUleeRmptPcnfgNpCuS0br2FrxJcbZW+TjVPYLqvLm4hCGaQ0CSkbQ0oaGqgOaekaU3jnOau0fw5WRQXZgTleObSKY4W2t8DI5P0+ef9NqUVdHS7Sc/K53a4lyvTUkYtlYXcqorGbyIURqrfEgEH9kQiolkiuNmBE8luMt9qttPQ3X0bpRkpLHaR//YVEI3kKpKc48/qrFoE8kUZ6szhe9Ud+K6XapKS4/f4pHLZGuN20Am7rXv9U8yfHk6qtfeRDLFKc3PotKXndA9yb7RSQbHpy0euUzcBjKRE3fu7zaa195E0mBrTWLHplqcDK3N2V4ebgPZlNDX3pmKaiJpRJOt1cFFWGdmA16bsiJcdzFaMy6SmcZqX0JnuJt7/FT6sinJz4paHSaSBlurfUzNBjh7acxrU1ZES4+f8oIsygqyvTYl4dhWU0hLT+I2kM1RnI7oYiJpJHyGu7ln1OKRK6SxysfUTIBz/eNem7JsZgNKa68/6tfeRNJgi7N6SiIG8AMBpbUn+jdKsnK1gUw8l/viwDgT04Gox6JNJA2yM9LZXJGfkDdK++BlxqdmbfjPCnEbyERM3Lmej7nbRkxorC5MSHe7yRF2W9hiZeRkprOxPD8hr/2p7hFEiMrDv0IxkTSAYPKmffBywq0v2NQVvFGsJ7lytlb7EtKLaOoaYWNZPnlZYa3Ts2JMJA3gqsgk2tqSsbpRkpnEbSD9bKuJ/kPfTCQNIDigHEi4gcUvdY2wbY09HXE1uDNvEqmB9E9Mc2FgnO0xuPYmkgYAa4py8OVkJFSGe2RimosDl9keg95EMpOIQ8BcW7fVRD/MYiJpAMFHzCZabMrNyJpIro66klwKsjMSKsP9Umfwd7q9pijqdZlIGldorPZxqtufMAvwNnUFb5RYxKWSGREJTk9MoJ5kU9cIJXmZVBVGf5aViaRxha3VhfgnZugcnvDalLCI5Y2S7Gyt9tGUQCvUN3WNsK2mMCbrh5pIGldwe2SuKxPvvNQ1wvY1sblRkp1tNcEGsn3wstemLMnMbIBT3f6YhVlMJI0rbKvxIQInO4e9NmVJZmYDNHf72VZtrnYk2OFkiU8mQAN5rn+MyZlAzMIsJpLGFfKyMthcUcCJjvi/Uc5eCt4osRgCkgpsqykkPU0SooF0hTxW195E0ngZO9YU8lIC3CgvWdImouRkBufvJ0JPsqnLT2a6sLkiutMRXUwkjZexY00hncMTDIxNeW3KorzUNRLTGyUV2LGmiBMdidFAbqn0kZURG/kykTRexs41wXFn8e52NXX5qY/hjZIK7FhTSK9/Mu6fntjUNRLTsbH2CzNexvYECeC7Q0CMyLEjARrIPkfEYzHTxiUskRSRO0WkWUTaROSBeT5/j4gcc/4OicjupfYVkVIR+ZmItDr/SyLzlYzVUJyXRW1xbly7Xb3+Cfr8k5a0iTCJ0EC6sehYXvslRVJE0oEvAgeA7cDdIrJ9zmZngdeq6i7gU8BDYez7APCkqtYDTzrvjThgZ21hXI+VPN4eFPBraqM/JS2VKMrNZF1pXlz3JI+3DwGwM4bXPpye5H6gTVXPqOoU8AhwMHQDVT2kqoPO26eBujD2PQg87Lx+GHjbir+FEVF2rCnibP8Yo5MzXpsyL8c7hhG5OrbPiBw71hTGdU/yeMcwG8vzKczJjFmd4YhkLXAx5H27U7YQHwQeD2PfKlXtAnD+V4ZjsBF9dqwpRPXq3Oh443j7MFsqCsjPtjUkI82ONYWc7x9nJE7XljzePhxzDyIckZxvzte8EzxF5HUERfKvl7vvgpWLfEhEDovI4b6+vuXsaqwQ15U5GYdxSVXlWMcw19SZqx0NdjjXPh7DLX3+STqHJ9gV42sfjki2A2tD3tcBnXM3EpFdwFeAg6raH8a+PSJS4+xbA/TOV7mqPqSq+1R1X0VFRRjmGqul0pdNeUFWXLpdPSPB7KbFI6NDPE9PdJOJsYxHQngi+RxQLyIbRSQLuAt4NHQDEVkHfB+4R1Vbwtz3UeC9zuv3Aj9c+dcwIomIBAcWx+GNcty5UWLdm0gVKn05VPqy49KL8CoWvaRIquoMcD/wBNAEfFtVT4rIfSJyn7PZx4Ey4EsiclREDi+2r7PP3wF3iEgrcIfz3ogTdqwppLXHz8T0rNemvIzj7UOkSWwWW01Vdqwp5EQcZriPtQ+zqTwfXwyTNgBhRb5V9THgsTllD4a8vhe4N9x9nfJ+4LblGGvEjl11xcwElKauEa5dFz9DWI91DNNQ5SM3K91rU5KWXXXFPNXSx+jkDAVxlBw73jHEzZvLY16vzbgx5mXP2mIAXrw45Kkdoagqx9uHYx6TSjX2rC1GlbiaUNA7MkHPyKQn195E0piX6qIcqgqzebE9fm6UruEJ+semLB4ZZdzzG08NpJexaBNJY0F21RXH1Y1yzGbaxISygmzWlubyojO7JR441j7sxKJjP4HARNJYkD1rizlzaYzhy/ExsPh4xxAZaWILW8SA3XXFvHgxfryI4x3DbKn0ZgKBiaSxILvrioGrc6W95lj7MPVVPnIyLWkTbfasLaZj6HJcLJumqhzzMBZtImksiDurJR7crkAgeKPsMlc7JuxyGshjcXDtO4cnuDQ66dm1N5E0FqQoN5NN5fkcjYO4pOv2711f7LUpKcHO2kLSJD6SN0fOB9fO2bvem6FoJpLGouxeW8zRi0OeP4/5yAXnRomjMZvJTF5WBg1VPo7GQajlyIVBcjLTPItFm0gai7K7rog+/yRdwxOe2vHChUEKczLsmTYxZM/a4OiGQMDrBnKIXbXFZKZ7I1cmksaiXLe+FIDD5weX2DK6HDk/xLXrSkhLm29hKSMa7F1fwvDlaU73jXpmw8T0LC91DnvmaoOJpLEE22p85GWl8/y5Ac9sGJmYpqXXb652jNnnCJOXDeTxjmGmZ5W964o9s8FE0liUjPQ09qwt9vRGOXphCFUsaRNjNpbnU5afxeFz3l17r5M2YCJphMG+DaU0dY149jiHIxcGEbk6n9yIDSLC3vUlPH/eOy/iyIVB1pXmUV6Q7ZkNJpLGkuxbX0JAg8kTLzhyYYiGSl/Ml8gygtf+XP+4J4PKVZUjF4Y8dbXBRNIIg2vXFZMmeOJ2BQLKCxcGzdX2iH0bgm7u8x6EW9oHgzN+vHS1wUTSCANfTiaN1YWe3ChN3SP4J2bYv7E05nUbwUclZGWkcdiDxN0zZ4N1en3tTSSNsLh+QwlHLgwyMxuIab1PnwneKDdsLItpvUaQ7Ix0dtcVeZK4e/pMP8V5mTRU+mJedygmkkZYXLe+hPGpWZq6/DGt9+kz/awvy2NNcW5M6zWuct36Uk52DnN5KraP8nj6TD83bCz1fGysiaQRFjduCvbkfn/mUszqDASUZ88OcIO52p5y46ZSpmeVwzHMcrcPjtM+ePnK785LTCSNsKgqzGFzRT6HTvcvvXGEONXtZ/jydFzcKKnM9RtKyUiTmF77Z5wwSzxcexNJI2xu2VLOs2cHmJqJTVzy6TPBm/KGOLhRUpn87AyuXVfMobbYeRFuPLKxytt4JJhIGsvg5s1ljE/NxmyNwafP9LOuNI9ai0d6zk2byzneMRyzVeqfPtvP/g3exyPBRNJYBjduKkMEftcWfbcrEFCeOTvAjZssHhkP3LK5jIDCM2eif+3bB8e5OBAf8UgwkTSWQXFeFjvWFHLodPTdrpOdIwxfnuamzfFxo6Q6e9YVk5OZFpO45CGnEY6Xa28iaSyLmzeX88KFoagPB3mquReAV9dXRLUeIzyyM9K5fkMpv4+BSD7V0ktVYTZbq72PR0KYIikid4pIs4i0icgD83y+VUR+LyKTIvLRkPJGETka8jciIh9xPvuEiHSEfPamiH0rI2rcvLmMqdkAz0V5BsZTLX3sqivydGED4+XcsqWc5h4/vf7oLcA8MxvgN62XeG1DBSLexyMhDJEUkXTgi8ABYDtwt4hsn7PZAPBnwGdDC1W1WVX3qOoe4DpgHPhByCafdz9X1cdW/jWMWHHDxjKyM9L4pdPTiwZD41O8cGGQWxusFxlPvMbp1T/V3Be1Oo5cGMI/McOtjZVRq2O5hNOT3A+0qeoZVZ0CHgEOhm6gqr2q+hywWOrrNuC0qp5fsbWG5+RmpXPz5jKebOqN2nNvftN6iYDCa+PoRjGCCzCvKcrhyaaeqNXxVHMv6WnCLVvKo1bHcglHJGuBiyHv252y5XIX8K05ZfeLyDER+ZqI2LLTCcJt26q4MDBOW290lvV/qrmP4rxMWz8yzhARXr+tkt+0XmJiOjox6aea+7huXQlFufGzLF44IjlfYGBZXQgRyQLeCnwnpPifgM3AHqAL+NwC+35IRA6LyOG+vuh1843wuW1bsIf386bIu9yBgPKrlj5eXV9BehyMkTNezm3bqhifmr0y0D+S9I5M8FLXCK9tjK8wSzgi2Q6sDXlfB3Qus54DwBFVvdJPV9UeVZ1V1QDwZYJu/StQ1YdUdZ+q7quoiK+Tl6rUFOWyY01hVNyuk50jXBqdtHhknHLTpjJyM9N5MgoNpBvrvDUBRfI5oF5ENjo9wruAR5dZz93McbVFpCbk7duBE8s8puEht22r4siFQQbGpiJ63J+c7CI9TXj9VotHxiM5mem8qr6cX5yKfEz6Jye7qS3OZbtHz9deiCVFUlVngPuBJ4Am4NuqelJE7hOR+wBEpFpE2oG/AP67iLSLSKHzWR5wB/D9OYf+jIgcF5FjwOuA/xyxb2VEndu3VRJQ+OWpyPUoVJXHjndz06YySvKzInZcI7Lcvq2SjqHLEV02b2Rimt+09nFgZ3XcDP1xyQhnI2d4zmNzyh4Med1N0A2fb99x4BVD51X1nmVZasQVO9cUUVucy4+Pd/GO6+a99MumucfP2Utj3PvqjRE5nhEdbt9WRXraCX58vJPtayLT6/tFUy/Ts8qBa2qW3jjG2IwbY0WkpQlv2VXDr1v6GIyQy/3Y8W5E4A3bqyNyPCM6lBVkc8uWch59sTNiLvdjx7uoLszh2jgc0WAiaayY/7R7DTMB5bETXas+lqry7y90cNOmMip8Nssm3nnr7jVcHLjMCxeHVn2swbEpftncy5t31cTFqj9zMZE0VsyONYVsqsjnh0eXO9jhlTx3bpALA+O8Y29kXHcjurxxRxVZGWk8GoFr/6NjnUzPatxeexNJY8WICO/YW8ezZwc4e2lsVcf63vPt5Gelc+Aac7UTAV9OJm/YXsW/H+1Y9cDy7z7fzraawojFNyONiaSxKt51XR0ZacK3nr2w4mOMTc7w4+NdHLimhryssHKJRhzwR/vXMTQ+zeOrCLec6h7hWPsw79i7kkl8scFE0lgVlYU53L6tiu8+387kzMp6FN870s7o5Ax3718XYeuMaHLT5jI2lOXxzWdW3kA+fOgc2Rlp/EGcutpgImlEgPfcuI6BsakVxSYDAeXrvzvHnrXFXLfepu8nEiLCH92wjufODXKiY3jZ+w+MTfH9Ix38wd5aSuN4XKyJpLFqXrWlnG01hTz4q9PMBpY3JOSXzb2cvTTGB15lYyMTkbv2r8OXk8GXnmpb9r7fevYCkzMB3n9LfF97E0lj1YgIH37dZs70jfHEye6w9wsElM//vIW6klwO7LSETSJSmJPJe2/awOMnupe1KtTw5Wke+vUZbm2soCEOnoi4GCaSRkQ4sLOGTRX5fO6nzWE/cvbxE92c6BjhL+5oIDPdfoqJyvtv2UBORjqffaI57H2+/OszDF+e5qNvaIyiZZHBfplGREhPE/77m7dxum+Mhw+dW3L78akZPvPEKRqqCji4J34zm8bSlBVkc//rt/CTk938pnXp5QwvDozz1d+e5S27athZWxQDC1eHiaQRMV6/tYrbtlbyDz9v4dwS4yY/85NmzveP88m37rR1I5OAe1+9kQ1leXz8hycZnZxZcLtAQPnod14kI034r2/aFkMLV46JpBFRPnlwB5kZadz3r88zPjX/zfL48S6+cegc77t5Q9w8NtRYHdkZ6fzdO3ZxYWCcv/rOiwvO6f7CL1p55uwAf/OW7dQW58bYypVhImlElLqSPL5w17U09/h539efe8XiF0829fBnj7zA3nXF/PWdWz2y0ogGN24q44E7t/L4iW7+6rvHXhabVlUe+vVp/uHnrbxjbx3v2he/4yLnYtMbjIjzmoYK/uHde/ir7xzjzV/4De+7ZQNVhTn8qqWPH7zQwfaaQr7+/v3kZqV7baoRYe599UZGJ2f4X0+20tQ1wt3715GTmc6jL3by65bgepGffsc1cbdm5GJItJ54Fw327dunhw8f9toMI0yOXBjkkz96iRedlWJyM9N5zw3r+Is3NNj0wyTnJye6+H8eP8X5/nEAyvKz+NNbN/OBWzbG5Uo/IvK8qu6b9zMTSSPa9IxMMHx5mnWleeRkWu8xVVBVLg5cZmo2wIayPDLieJjXYiJpzbkRdaoKc6gqzPHaDCPGiAjryvK8NmPVxK+0G4ZhxAEmkoZhGItgImkYhrEIJpKGYRiLYCJpGIaxCCaShmEYi2AiaRiGsQgmkoZhGItgImkYhrEIJpKGYRiLkFBzt0WkDzi/zN3KgUtRMGclmC3zE0+2QHzZY7bMT6RtWa+qFfN9kFAiuRJE5PBCE9djjdkyP/FkC8SXPWbL/MTSFnO3DcMwFsFE0jAMYxFSQSQf8tqAEMyW+YknWyC+7DFb5idmtiR9TNIwDGM1pEJP0jAMY8UkrUiKyJ0i0iwibSLygAf1nxOR4yJyVEQOO2WlIvIzEWl1/pdEsf6viUiviJwIKVuwfhH5r865ahaRN8bAlk+ISIdzfo6KyJtiZMtaEfmliDSJyEkR+XOnPObnZhFbYn5uRCRHRJ4VkRcdWz7plHtxXhayxZPfDKqadH9AOnAa2ARkAS8C22NswzmgfE7ZZ4AHnNcPAJ+OYv2vAfYCJ5aqH9junKNsYKNz7tKjbMsngI/Os220bakB9jqvfUCLU2fMz80itsT83AACFDivM4FngBs9Oi8L2eLJbyZZe5L7gTZVPaOqU8AjwEGPbYKgDQ87rx8G3hatilT118BAmPUfBB5R1UlVPQu0ETyH0bRlIaJtS5eqHnFe+4EmoBYPzs0itixENG1RVR113mY6f4o352UhWxYiqr+ZZBXJWuBiyPt2Fv/xRQMFfioiz4vIh5yyKlXtguANAlTG2KaF6vfqfN0vIsccd9x142Jmi4hsAK4l2FPx9NzMsQU8ODciki4iR4Fe4Geq6tl5WcAW8OC8JKtIzvdg31in8W9R1b3AAeDDIvKaGNe/HLw4X/8EbAb2AF3A52Jpi4gUAN8DPqKqI4ttGm175rHFk3OjqrOqugeoA/aLyM7FzPbAFk/OS7KKZDuwNuR9HdAZSwNUtdP53wv8gGD3v0dEagCc/72xtGmR+mN+vlS1x7kRAsCXueoeRd0WEckkKEr/pqrfd4o9OTfz2eLluXHqHwKeAu7E499MqC1enZdkFcnngHoR2SgiWcBdwKOxqlxE8kXE574G3gCccGx4r7PZe4Efxsomh4XqfxS4S0SyRWQjUA88G01D3BvP4e0Ez0/UbRERAb4KNKnq34d8FPNzs5AtXpwbEakQkWLndS5wO3AKb87LvLZ49ZuJSPYnHv+ANxHMFp4GPhbjujcRzLa9CJx06wfKgCeBVud/aRRt+BZBl2SaYEv7wcXqBz7mnKtm4EAMbPkX4DhwzPmR18TIllcRdMWOAUedvzd5cW4WsSXm5wbYBbzg1HkC+PhSv1kPbPHkN2MzbgzDMBYhWd1twzCMiGAiaRiGsQgmkoZhGItgImkYhrEIJpKGYRiLYCJpGIaxCCaShmEYi2AiaRiGsQj/P95ROscKw6JqAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "I_perfect = S_final.parameters.intensity(draw=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The maximum of intensity is achieved when the transmission angles of $P_0$ and $P_1$ are parallel: when the azimuth of $P_1$ = 50º and 230º. However, this case differs from the case of perfect polarizers as the maximum achieved intensity is smaller and the minimum intensity is higher." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.10.7 64-bit", "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.7" }, "latex_envs": { "LaTeX_envs_menu_present": true, "autocomplete": true, "bibliofile": "biblio.bib", "cite_by": "apalike", "current_citInitial": 1, "eqLabelWithNumbers": true, "eqNumInitial": 1, "hotkeys": { "equation": "Ctrl-E", "itemize": "Ctrl-I" }, "labels_anchors": false, "latex_user_defs": false, "report_style_numbering": true, "user_envs_cfg": true }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": true }, "vscode": { "interpreter": { "hash": "26de051ba29f2982a8de78e945f0abaf191376122a1563185a90213a26c5da77" } } }, "nbformat": 4, "nbformat_minor": 4 }