{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "References:\n", " \n", "* [ONS Code History Database](http://geoportal.statistics.gov.uk/datasets?q=Code+History+Database&sort_by=name&sort_order=asc)\n", "* [Boundaries](http://geoportal.statistics.gov.uk/datasets/clinical-commissioning-groups-april-2017-full-clipped-boundaries-in-england-v4)\n", "* [CCG to LOSA lookups](http://geoportal.statistics.gov.uk/datasets/lsoa-2011-to-clinical-commissioning-groups-to-sustainability-and-transformation-partnerships-april-2017-lookup-in-england)\n", "* [GP Practice Details](https://digital.nhs.uk/organisation-data-service/data-downloads/gp-data)\n", "* [NHS Postcode Directory Centroids](http://geoportal.statistics.gov.uk/datasets/675f07b52292428992709d0af98d86d9_0)\n", "\n", " \n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import geopandas as gpd\n", "from shapely.geometry import Point" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "headers = [\n", " 'code','name','postcode','status_code','ccg','setting']\n", "epraccur = pd.read_csv(\"epraccur_may_2017.csv\", names=headers, usecols=[0,1,9,12,23,25])" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
codenamepostcodestatus_codeccgsetting
0A81001THE DENSHAM SURGERYTS18 1HUA00K4
1A81002QUEENS PARK MEDICAL CENTRETS18 2AWA00K4
2A81003VICTORIA MEDICAL PRACTICETS26 8DBD00K4
3A81004WOODLANDS ROAD SURGERYTS1 3BEA00M4
4A81005SPRINGWOOD SURGERYTS14 7DJA00M4
\n", "
" ], "text/plain": [ " code name postcode status_code ccg setting\n", "0 A81001 THE DENSHAM SURGERY TS18 1HU A 00K 4\n", "1 A81002 QUEENS PARK MEDICAL CENTRE TS18 2AW A 00K 4\n", "2 A81003 VICTORIA MEDICAL PRACTICE TS26 8DB D 00K 4\n", "3 A81004 WOODLANDS ROAD SURGERY TS1 3BE A 00M 4\n", "4 A81005 SPRINGWOOD SURGERY TS14 7DJ A 00M 4" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "epraccur.head()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "lsoa_lookup = pd.read_csv(\n", " \"LSOA_2011_to_Clinical_Commissioning_Groups_to_Sustainability_and_Transformation_Partnerships_April_2017_Lookup_in_England.csv\",\n", " names=['lsoa','ccg17cd', 'ccg','name'],\n", " header=0,\n", " usecols=[0,2,3,4]\n", ")" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
lsoaccg17cdccgname
0E01021729E3800011706TNHS North East Essex CCG
1E01021730E3800011706TNHS North East Essex CCG
2E01029950E3800020407KNHS West Suffolk CCG
3E01021731E3800011706TNHS North East Essex CCG
4E01021732E3800011706TNHS North East Essex CCG
\n", "
" ], "text/plain": [ " lsoa ccg17cd ccg name\n", "0 E01021729 E38000117 06T NHS North East Essex CCG\n", "1 E01021730 E38000117 06T NHS North East Essex CCG\n", "2 E01029950 E38000204 07K NHS West Suffolk CCG\n", "3 E01021731 E38000117 06T NHS North East Essex CCG\n", "4 E01021732 E38000117 06T NHS North East Essex CCG" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lsoa_lookup.head()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "boundaries = gpd.read_file('Clinical_Commissioning_Groups_April_2017_Full_Clipped_Boundaries_in_England_V4.shp')" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
bng_ebng_nccg17cdccg17nmgeometrylatlongobjectidst_areashast_lengths
0393990462191E38000001NHS Airedale, Wharfedale and Craven CCGPOLYGON ((385565.5894845667 483953.6485985344,...54.055599-2.09330011.220633e+09221998.415512
1597640140644E38000002NHS Ashford CCGPOLYGON ((606433.5512145269 156322.4880208465,...51.1310010.82337425.806172e+08149424.217436
2481343219317E38000003NHS Aylesbury Vale CCGPOLYGON ((472043.0687303017 242900.0443609316,...51.866501-0.82002039.790281e+08278005.394431
3547758185109E38000004NHS Barking and Dagenham CCG(POLYGON ((548883.1758077047 190820.2720849307...51.5455020.12949343.609104e+0740663.923224
4523471191753E38000005NHS Barnet CCGPOLYGON ((525815.8440469442 198211.9265971188,...51.611099-0.21822058.673644e+0750837.784444
\n", "
" ], "text/plain": [ " bng_e bng_n ccg17cd ccg17nm \\\n", "0 393990 462191 E38000001 NHS Airedale, Wharfedale and Craven CCG \n", "1 597640 140644 E38000002 NHS Ashford CCG \n", "2 481343 219317 E38000003 NHS Aylesbury Vale CCG \n", "3 547758 185109 E38000004 NHS Barking and Dagenham CCG \n", "4 523471 191753 E38000005 NHS Barnet CCG \n", "\n", " geometry lat long \\\n", "0 POLYGON ((385565.5894845667 483953.6485985344,... 54.055599 -2.093300 \n", "1 POLYGON ((606433.5512145269 156322.4880208465,... 51.131001 0.823374 \n", "2 POLYGON ((472043.0687303017 242900.0443609316,... 51.866501 -0.820020 \n", "3 (POLYGON ((548883.1758077047 190820.2720849307... 51.545502 0.129493 \n", "4 POLYGON ((525815.8440469442 198211.9265971188,... 51.611099 -0.218220 \n", "\n", " objectid st_areasha st_lengths \n", "0 1 1.220633e+09 221998.415512 \n", "1 2 5.806172e+08 149424.217436 \n", "2 3 9.790281e+08 278005.394431 \n", "3 4 3.609104e+07 40663.923224 \n", "4 5 8.673644e+07 50837.784444 " ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "boundaries.head()" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP0AAAD8CAYAAAC8aaJZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXVYFWkXwH9zL92ChCKIYmIrBnauLbbi2t3Yiq7dCmJ3\n666xdq3dYreiqICKIiECKg13vj/mepElxP10Q+b3PPdh7jvnjTt65q3zniOIooiMjEzOQfFPN0BG\nRubvRVZ6GZkchqz0MjI5DFnpZWRyGLLSy8jkMGSll5HJYchKLyOTw5CVXkYmhyErvYxMDkPrn27A\ntyZ37tyig4PDP90MGZm/nZs3b74VRdHyS3I/nNI7ODhw48aNf7oZMjJ/O4IgvMiOnDy8l5HJYchK\nLyOTw5CVXkYmhyErvYxMDkNWehmZHIas9DIyOQxZ6WVkchiy0sv8bcTGxvL48eN/uhk5HlnpZf4W\nfH19MTQ0pHjx4sTHx//TzcnRyEov87cwafJkzfWMGTP+wZbIyEov892ZOm0au3ftQqnUwjKPLTt3\n/k5UVNQ/3awcyw9ney/z7+LBgwdMmTyZziMn4NKgKaIosm/NEqpWr86BfftITEzEycnpn25mjkLu\n6WW+GyqVik4/d6ZV70G4NGgKgCAItOwzBHQNKVy4MCVKlGD58uX/cEtzFrLSy3xzUlJS6NmrN0ql\nkvv37lK3tVua+4Ig4NproOb77du3CQsLQ6lUolDI/yW/N/ITlvnmREVFsWH9Oqzz2TN4pneGimzn\nWISBMxYAsHbtWlxcXFCpVH93U3MkstLLfHMsLCxYsGABVnlsKV6hcqZyJZyrMGjGAkpUrEJ8ihRe\n7cOHD39XM3MsstLLfBfc3NyICg3G59jBLOWcnKswcPoCBs9eDMDNmzf/jublaGSll/ku2NjYsMDL\nk5M7tmRL3tTcgvyFinDq1Knv3DIZWellvhtVq1blY3QUURHh2ZIvW6Mup06f/s6tkpGVXua7kTdv\nXqq4VGFS19ZkJyR6zeZtuHTxojyv/87ISi/zXRBFkcWLF5OUmESVn5oiCMIX8+gZGKKtrcObN2/+\nhhbmXGSLPJlvzsuXL6lYsSIJySlUadCEhm7ds5Xv6b3bJCUl8vz5c4oUKfJ9G5mDyVZPLwiCmSAI\nuwRBeCwIwiNBEFwEQTAXBOGEIAhP1X9zqWUFQRAWC4LwTBCEe4IglP+snG5q+aeCIHT7LL2CIAj3\n1XkWC+puIbM6ZP69qFQqfv/9d8LCwpiyYRctegxAV08/W3kXjhkEQPXq1b9nE3M82R3eLwKOiqJY\nDCgDPALGAadEUSwMnFJ/B2gMFFZ/+gIrQFJgYDJQGagETP5MiVeoZT/la6ROz6wOmX8Z/v7+lChZ\nCi0tLUaNGkXdVh3Q0dX9qjKqNGgCwLRp0+Tjt9+RLyq9IAgmQE1gHYAoiomiKEYBrsAmtdgmoKX6\n2hXYLEpcAcwEQcgDNAROiKL4ThTFSOAE0Eh9z0QUxcuitNqz+U9lZVSHzL+IK1euUKNWLRydqzFj\n6z5GeK2kTT/3ry7HybkKAHPnziUiIuJbN1NGTXbm9AWBcGCDIAhlgJuAO2AtiuIbAFEU3wiCYKWW\ntwWCPsv/Sp2WVfqrDNLJog6Zfwk3b96keQtXXPsOpXyNugCYWXwxslKGVKhVHx1dPR6fO4qtre2X\nM8j8JbIzvNcCygMrRFEsB8SQ9TA7o2Va8S+kZxtBEPoKgnBDEIQb4eHZ2xOW+f8JCwvD2dmZBm7d\nNQr//xIREoy9Xb5vUpZMxmRH6V8Br0RRvKr+vgvpJRCqHpqj/hv2mbzdZ/nzAcFfSM+XQTpZ1JEG\nURRXi6LoLIqis6XlX+tlZL6eTy9Ya7v836zM0lVrsv/AQcLCMvynlvkGfFHpRVEMAYIEQSiqTqoH\n+AIHgE8r8N2A/errA0BX9Sp+FSBaPUQ/BvwkCEIu9QLeT8Ax9b0PgiBUUa/ad/1TWRnVIfMPk5KS\nQu06dajWqDmFSpb9ZuWaW9lQrEJlBg8Z+s3KlElLdvfphwC/CoKgAwQAPZBeGDsFQegFvATaqWWP\nAE2AZ0CsWhZRFN8JgjAduK6WmyaK4jv19QBgI6AP/KH+AMzJpA6Zf5APHz7Qt18/3oaH09LZJVuG\nN1/Dk3u3Cdb/upV/meyTLaUXRfEO4JzBrXoZyIrAoEzKWQ+szyD9BlAyg/SIjOqQ+efwXrQI74UL\nsStVEoVSyfGdmylQzAmz3N9mjfXWhdNEhocS+U1Kk8kI2QxXJtscPHSIEcOG0WBAf9p6jKOftxcv\nnzxmco/22bKtzw6fr/x//Pjxm5QpkxZZ6WWyxbp162jRvDk9586hVM0aCIJAkYoVmfD7TpKTEhnc\nuBoTu7X+y+Vv9prBoEZV0dU3YPHhCwC4urp+q+bLfIbwrd7Q/xacnZ3FGzdu/NPN+CF49+4dFhYW\nODg68tzfn74LPCnu4pJO7sXDhyzu2x+VSsWyoz5fXc+1U0fZNH9ahvcSEhLQ0dH56jJzIoIg3BRF\nMaNpeBrknl4mU8zMzAAo07QJUw7uz1DhAU5u3oJKpUKp9fXnt1QqlUbhy5aSLPKqlq5JrXLSvn+L\nFi3+StNlskA+ZSeTKf369QOgUtMmGJiYZCiTnJjIg/MX6DZ6MpXqNfzqOua79wFg+dy96Onp09O9\nET73zmvuHzt2jPfv32OSSf0yX4/c08toePfuHVu2bGHe/PkIgsDatWsB2LtwUaZ5dnl6AVCsfMWv\nru/E71t5+fQRAAPHtqKne6N0MoVKF2LIsCFfXbZM5shKLwNAREQEFhYWdO3albXbtqW5d+OPo5nm\naz54MAB71iz56jovHt6HjVU+Rg6cqUlzdCgmXQigo6fDs3vP2Lxh81eXLZM58vBeBj8/P4oVK6b5\n/vT2bVxaumJfvBilatXi2uEjmeb9ZJbzV4JUvA2RrK29lk8AwDaPA8Eh0pksfV1D4uJjvrpMmS8j\nK30OJyUlJY3CA+gZGtKody9MLCwAqNPJLaOsAPymjkD78zAPQJrja2Wy2p6SksLsgd0oVr4ijTv1\nAKBF05KMGVafWZ7HOXLMVyMbFx9Do7ptscydh0f+V/76D5RJh6z0OZyTJ09ikisXkw7sY1SNWnSd\nPpVy9etnO3/Dnj14eOEigkLB5eOH2bpgJpXrN6HrqF80MrcunObobxuIDA8l9uNH3rwI4MzeHRgY\n6LJ3m7SQd/D3frx4EYFCKeDgNBUAq9x52LxTmjYEBweTN2/eb/jLcy7yPn0Op4ObGym2eanets1f\nyp+SksK4OvUxNDYh+t1bctnYEBUaSqs+g6nVoh1+t6+zfOJIdHS1KFYyH/duPse1WSn2H7rP5dMj\nqOSc/oTex4/xmOYdi6mJOSgSaNTKGSeHOkyaNDmDFsh8Qt6nl8kWr16/xtLe/i/nVyqVDFq+BMsC\n9nSZOoVJe3dTs0MH9qxegnuzmiyfOBJb+9zcCFqIq5u0D3/0hLRi73M1MMMyjYz0AIh+/44WHStT\nqXphrlz9eqMfmYyRlT4H4+/vj+/DB1jkzfN/leNQsiSDli6h/E8NAKjVsT0A81b3pPewhhy9ORWl\nUknHHrXo0L06+Qta0X9kY0aN30eRMtMxtBrF2In7iYlJ0JS5fWN3ALauOkO1uk5cuXKVBw8e/F/t\nlJGQ5/Q5lIsXL1KjRg06jBtD7nzf1lPNnVOnUSoVNG1TkaZt0u7fT/L6WXNdo0FJ5k74nfjAt3gu\nOo3nIim6Tf/e1dHTVQLQuLUzSUnJRL6LplSpUrx8+RI7Oztk/jqy0udQ1q5bB0Dl72Dmennffiws\njb8oV7ZiQbYdH0tE+HuSElOYOWY7Vy8+YeXaixqZTr1qUb+0tKVnaGKIvb09Pj4+uGRiEizzZWSl\nz4F4eHiwaeNGpv9x+Js7wAAwz2OD37Ug9v7qQ6ufq35R3sJSMrFd8usATVrwq3c8efiK0s4FSIhP\noknPZrQb2o4eZbsREyPv3/8/yHP6HMicOXMAMFIfqPnW9PVeAMCZY/eynUcURd69/UBiYjIAefOZ\nU6N+CcraSBZ/bQa3oX/VvgA0aNCAuXPn8v79+2/c8pyB3NPnQLr36MEH8+8XLCg5MRGAPsPT29Jn\nRp82i7l87jEAXfvXxcBQl5Vekte0zQ+2EhMdQ0Js6kLflv27WLR0CdOnTKVGjRoULlz4u4xafkTk\nnj4Hsm/fPvIUcvxu5evo6VGgVAm6t1hI4NOQL8onJSVz+dxjKleTjII2rzzNllXSvF5bRxuFloIB\n1fqlydN/3XxaThzKhn07qVKtKnXq1cV70ULGjx//zbz4/KjIPX0O4+rVq0RFRmJbuPB3rWfQihUs\nGzCAFlWns+ngcMpXKZShXEqKittX/QHIa+fIvOWDiIwIw7FwCfp2qomDUwEmt58IgIGpMQ16d6J+\nr44AONWohFONSiQnJnHj8ElGDBsOSGcJPD09KVCgwHf9jf9V5J4+h9HC1ZXGvXuhZ2iYLfmbx44T\n8xfmzkqlkqGrV2NT0IGeLTM+mnvx1EP6tl1MD9eFAOzdvooxA1sRHvKaxMR4VCoVRrmM8L8nvRSS\nE5N44/+c05t+5/DSjfheuMb1gydAgMS4BJRKLWYN9OLqpWuUKlWa06dPk5yc/NVt/9HJlhmuIAjP\ngQ9ACpAsiqKzOiDlDsABeA60F0UxUu27fhGSG+xYoLsoirfU5XQDPhllzxBFcZM6vQKpLrCPAO6i\nKIqZ1ZFVW2Uz3KwZN96DLdt34L5+HTp6GbuZVqlUnN+5k6Nr1pIQGweAbeHCBD97hlX+/LgOHUJx\nlyrZqi8+JgaP+j9xN3QJ837ZTYPm5ahYrQiBT0NoVkWysXfMV5hJvWbwx6UDbD/5a5bl6WjrkJiU\niLaWNknJSSgUSlSqFAAEQWDjpO0AnLxxlC2HNwDw+vXrHGG3n10z3K9RemdRFN9+ljYPeCeK4hxB\nEMYBuURRHCsIQhMkP/lNkCLULhJFsbJagW8gudIWkWLiVVC/KK4hxce7gqT0i0VR/COzOrJqq6z0\nX6ZV27ZE62jTYmjGzilWug/D79p1rAvaM3b3GvZ5ruD8r/swNDMh/mMsKcnJ1OvamZI1auBQMp3n\ncg2nNm8h4O49fH18UCgEVCrp/1puK1MiIz6QP08BitoVp7ZzA2zMbQCI+hiFu1e/DMsb0HooVUpV\nS5OWkpLC0yA/7GzyE/n+HfmsUg13es/sDIC1lTV37t3BQn1q8Efl71B6P6C2OrBkHuCsKIpFBUFY\npb7e9rncp48oiv3U6auAs+rPGXUYbARBcPskl1kdWbVVVvov8/btW5xKlqT9pIkUKl8uzb2khATG\n1WtA6XrV6Ok9RbMiLooigiAgiiJbPWZz7cAJAOadPY12BiGpF/Xpy/MHD8llZoEWSlrXaU+VktV4\n8SaQbSe24Fy8Mg0qNcp0xf3Fm0D+uHyI/q2H8CHmPcaGad1lJaUkcenOOcoUqYCJoQlKhTLT3zti\n0UAGDR3E1KlTv+o5/df41kofCEQi9dCrRFFcLQhClCiKZp/JRIqimEsQhEPAHFEUL6rTTwFjkZRe\nTxTFGer0iUAcktLPEUWxvjq9BjBWFMVmmdWRVVtlpc8eBw8epM/AgQxcuVxzbh7gwJKlnN2+A68b\nR9DOZPgP8OZZIN6dhxL3/iNm1tbUcXOjZofUAERj69SjSeVmtKr9bYMSJSZJ24ETV48l5G2wJt3U\n2IxKTi60rNUWI30jVCoV8YnxGOgZMGrREMKjwjhx4gT1v+LY8H+N7Cp9dlfvq4miGKwOFX1CEITH\nWdWdQdp3j1oL9AWw/z9OjOUkmjdvjnLAACY3k8xwq7dpzQvfRwQ9fkyHycOzVHiAPIUKMPPcbnx2\nHeag9xr2LlzIvkWL0Dcywsg8F4nx8XyM+3bBKhISE3D37k9cfCzmZhaYGpqR38kJu+LFqdCoIVf2\n7+f00WOcu3UaLaUWsX/yutO1UyU858/8oZU+u2Rr9V4UxWD13zBgL1AJOWrtf54Tx49rrq8cOEjQ\no0f8PH001ds3z1Z+bV0dav3cCs8bR2g/cRi1urShoHMpwl68xNTIlM6Nun+ztp6/c4a4+Fi6zpjG\nu6gIAl/7U6BsadqMGoFDyRJ0nDCeUZs3YmpjRWx8DCYmeqxd5sa4kQ149WQaKxd14Pad2zx+nFV/\nlTP4otILgmAoCILxp2ukaLMPkKPW/udxcnLC3MKC6m1aY543L/mKF6JK68Z/qawabq60GTeIfstm\n0nvJdKI/Rn/TttYsVwcAQxNTfp40kYKlS9NswIA0MjYFCtBr/lwALhx3p0eXKsyc3Iw8Nqbo6mrR\n5Ccnxo0bk+ONd7LT01sDFwVBuAtcAw6LongUKaJsA0EQngIN1N9BWn0PQIpauwYYCFLUWuBT1Nrr\npI9au1adx5+0UWszqkPmGxEVGcnF3XsIe/ECfRNjhjjV0WzTAQT5PiHuY+pQWZWS8sUydfX1Ab7K\nLFYlqkhOyXxPXVdblwK2jhxYvATnxo0YsmpFhsE1rPPnR6mlxcat19Ld69WtMvv3H+TDhw/ZbteP\nSHbi0weIolhG/SkhiuJMdXqEKIr1RFEsrP77Tp0uiqI4SBRFR1EUS6kj0n4qa70oioXUnw2fpd8Q\nRbGkOs9gdeTbTOuQ+Xb0798fgOodWmDtIM2+VvQbB8DNI6eZ17Yfrx8/08i7l6rP3NZ9siwzb2HJ\nEm6oZ1+6Te3Avae3SVGlf1kEhb5k5obJ/LJqDD2mudFrxs8Ehb7ItNwaZWrx+tmzL/bUKcnJbNhy\nJZ2cSyUHGjUoiZWVFZcuXcqyjB8Z2SIvh7N06VLq1q+PpX1eLu44AID/Tel03MZR0wGwcyoCwJU9\n0gDs1WcvgYx45SfdT0hKwFDfEK/f5tBzeidW712mkTlz4yRT1o7nycvHxCmTqdy8GQBzt0xHFEWW\n7VrI6MVDefc+QpOniH1xAALvZ+xBZ0abdsxq1x67okWIio7j+s20LxBBENi2oTMtmhSnevXqjBs3\nLhtP6MdDtr3P4QiCwIply3ByctKk1e+d1uX1sZVb+Rj+jsv7paAXsy7sybS8pPgEVvSV7KdWeWwC\n4HX4a/yeP2TTkXUYG5pw/s5Z4uJjqNyiOW1GjURLPUwPe/6CwPv36T6to6Y8z62zmNhrBh/jPrJq\n31IUCgVL+vWn55xZFK1cGa9u3Ql7GZRhW5TKtH3avfuvaem2hsunRhD0OoZcuXJp7A9yErI3XBkA\nAgICKF++PNHR0XheP4JCS8mIculj01Xv6EqHScMyLWdxt2EE3XvCjH7zsMxllebewm3zuP3kJka5\ncjF+53b0jYzS3L9x7Bg3jx6jYNkyVGjYiOf377F18lRJMREQEalSoipXfS/jVK0appa58dm7D2sr\nY5yK29CofnFu3HnN77tvsn9nH5o1SmstaFt4EiGh0WhrKylVIg+37rzCxNQUd3d3hgwezH995+eb\nGuf8l5CV/q/zqcdb4nuG05t+J+KaL+fPnAWgXr16BL95wyNfX6p3aEGHycPT5d81awnntu5hcu+Z\nFLTN+FTdyevH2HJkPT/17EGj3r2+2MsmJyUxumbtdOntPcZikTcvK4a48+jWBIoUskqf+TPOXXxK\n3SZLad6tLzfOniA6IoyE+HiqN2lFRHAQD25cJTQ0FCurrMv5N/OtjXNkchDTG3dBFZ/IlUs+6Ojo\nYGFhgYGBAYGBgRQsWBCFdsYmrxd+20dR++KZKjxA/YoNefb6KSc2bOTNs2f0nJv1hoyWtjYAlvZ2\njNmymQ+RkeSytgakwzxmlrkpXn4m1VwKstSrLaVL2qbJP2v+Mbbvvs1jv1DyFy5CI7fuNHLrrrl/\nZMsa7gU8pXXbdhgYGGTn8fznkRfyZDQUVp+xD3vxinGjx+Do6IidnR0GBgb4+flRsGBBAAo5l02X\nV6VSoVKpqFqmxhfr6d9yMO4dRnH//AWe3rz1RXk9Q0PCXwaRGB+vUfhP6ZMP7MeuWBEuXQ6gbpPU\nhcI3IdEY24xm8syjRMcbUa2xK6MWrU9TbsjL51w5dpAnfn7s/n0nRn+abvyoyEovo8HXNzWWnJtb\n6mJecnJymnh3t/84ky6vZ8eBAOw5s5NuUztkuecOYG6aWyo7MSFLOYDZJ49jZGbG3M5duHnseLr7\nIzZsQFAo0NFRsGf/HTwmH6BL7y3ExiYydeMuPJZvosPg0emCbAa/CKCKS1Vy5879xTb8SMhKL6NB\nS0uLpKQkEhMT05w/T1T7vPtET+/U8FKhgUGMrtSMoAd+AER/jALgD5+DWdaloyUN20MCM45y82fa\njhlNUkICW6dMzTB0tqVtXkLDPtCuywbmeZ/izPmnOBQrgbmVTaZlGpmYEh4enq36fyRkpZdJg5aW\nFtrqefQnsprrvrjnS/zHGPIVko5PCIKAQlCw6/R2ZqyfxOYj6zLs9fPktqVYficOLV+ZrXaVqVOb\nXnMlE9sDy5aluz92+za8Ll3A+/IlXN2HSm3z8+XAxlWZlmlXqBgP798nOvrbmgz/25GVXiZLkpOT\nWb16dZq0uA+SWe5a90ls8ZgDArx69opWTbqwaekJVnkdoIpzHfxfPeXU9eOs2rM0XbmPnj/k8Qtf\nrB0csqw/4M49FvXtz60TJwlVjwpGbtyQTk6hUGiG77U7dqBKi+YICgV+d9Lu5KhUKoKfBwCgb2hI\n0XIV2LMnc7uDHxF59V4mU9av30ivXj3Spf/6yzx6L0p1SNF9Yk82TluPS0Xp2Kqurh4De0ygfzcP\nvJZP4JrvZVJ2JDO0wyhNHoUgKegbf39G16qDXfFiVGzcGIeSJYgMDSMi+DW3Tpzk+b37ADy/f1+T\nN/jJE0wzmYeHBAbi1b0ngiCgZ2hIclKS5t61U0fZNH8aAMuOSgExK9RuyOq16+jRI/3v/FGRe3qZ\nTNmdSQ9YtV0z7p68gP8NyVw38GEABgaG2Fil3S5TKBSMHjybmi6Nufn4Os/fBGjuFc1fnJ7NJbv/\n5MREAu/eY+ecuczr3JU1I0dxcMlSnt+7T+XGVRg4b6AmX6PevShQtizbZ84m+FmqOXByYiIvHz1i\nbqfOpCQnk5SQQOz792kWCv0fSu3VM0h1ClqycjUCAgM5cyb94uSPiqz0Mply5vTJdGmW+W3JZWPJ\nxlHT0dISGL1qDG8Cg8nYF4pE784jMTYyZfJqD1SiCoDomGjWH0w/n7ctlI9tT3aww/93fg/czdjV\n4zi75xwA3WZIZwE86jXg6qFDCOrh/KEVKxldqw7ePXujZ2DI/N//oGTl6lT5qSljl6VOBdr2lywJ\nOwxOHXFoaWvj2msw/foPIC4u9XThj4ys9DKZYmZhDoCOjp4mLfzFa2a16EFyYhJLzy/HpUlVcue1\nxMwk64g5w/tLCnvy2jEeP/fF3asfBnqGjOs2KY257utnr3Ar0oFV41fSrkAb1k5ag++VhwCUrVeX\no2vXaWRXj5CU9/LefRQqWZZO7uOYs+Mw+obGDJg6jy4jJqRpu7aODgCb5k3l/MHdmvQy1WqRy9Ye\n92GZmxf/SMhKL5Mpn5Skoks9Vmw5ReHiZQBQKBW4je6EgZEBh9YdxOfQJYJDgjI98hrxLpQFKyXP\n578e3cieMzsQEFgxdj1zNk0jPFJyiHT/mgf7tvcG4NgWaVvuyIbDmnIS4+PxvnyJ8TslN9dRoaE8\nvnIVA1NTwoKDqNa4BdraOln+pgq16gGwY5kXh7dKLxBBEGg/eDSHjvzBzp07v/5B/ceQlV4mU14G\nSKvlUZFhaGvrMnbyMnT19ClUtjAt+rgCsH6KpDgG+kZ0G9yA6A/pwxJs3bWcZFUic/bPxSKPBX4v\nH6MSVSzd7Z1GrlSl2Ywcvw+Alh2rUKdRKRq2LK+5/2kOb2lnx7TDhwBYNXwEokqFoYnpF39PfFws\nN8+dAsDYRJ8jW9fx9J5kEahvaESXMVMYMHAggdm0HfivIiu9TKbkyyftvT+8d53eHavTu2N1EuLj\neHLTD7ciHWht1xITC8k1dbIo7cX/cfL3dOW8jQjB2s6aIuWLsvrqWrY92UHboe24/uAKQBr31Z9G\nCwFPQhg7sz2ea3ox2UuyDrx6MLXXNzQzpW7nnwGICA4mPjaWLQtmEheT6ozz2YO7bPGawcf30j78\nPR9pbUBPX4cP76X5+951yzXy+YsUp27bzrRp1z6dQdKPhHzKTiZT3rx5w/r1G/jllwlp0guUKEDg\nw7S9YZP+fQm4fYd3Aa/wnLJZk/4s8BHTPIcwZMFQ6rSrmybP5SM+XNx/kctHfChe1YWQgEAiQ9IH\nvFQqFaSkSAuAeRwL0sfLi2ktWwHQecpktk5J3T60sMmLQ1EnfG9c0bwAzCxyY5rLnBfPnqClrUVy\nUrK6XCWmuS2ZuOo3dPSkub8oiqybPo46VSrh5eX5l57bP0V2T9nJPb1MpuTJk4eTJ09ovhdxkkxz\nAx8G0mnGaBY/PM3ih6cpWL4UpzZvpc3oUYS/fcOy9TM0eSwtJDPYHd47WDDYiw+Rqf7pHEsVwtpe\nOkDjd+Uq47b/prnXfVIPfvPbxvgNE9j6aBu7XuwBAd74BxASkLr197nCA0SEBHPz3EniYj6i1Nam\nbIOaREW85cWzJ+QvXoTKTRtQvHpFhm1ZTEpKCpXKl2P9DA8SE6StPZUqhQ5Dx7Fp61aOHTv2rR7l\nvwrZOEcmUwICArjkIxmx/NynNiZmBjzxDWbU9uXkL11cI5e3SAFCnr0gKT6esvXqcfXkSa7ePIuu\nrh6J6n3ysKBQwoJC0TfUo8PwjuxasoujmyX3W1YF7AkLfMnSAYMAcO3nqlkzcK5fUVOPto4OpevU\nRsdAP11bDU1MqdrYlUtH9hKrdnyZv2RRei2ayu1j54iJjqZq22ZpDt10nePBjine1KlTh5WTRlK1\nsSsb5kjnCvLY5adlq1bExcZ+s+f5b0Ee3stkSp369Tl76hSCQuDMw9kIiNQq7oGRhRkmFua0HD2A\nfE6FOLNxJyfX7UBUqdKVkcvcksh34az+7Rzzpg4m0F86yadQKqnSpgntJgxFEAS2TpjL1b3Siv2K\niyuxzm/QBubZAAAgAElEQVSD3y0/HJwc0FUH3miTvxWiOh4egoB5HhveBb8BwNLenvCXL7FxzE/b\n8UNY2msUQzcupHClMhn+tnHVWhIb/QFRpUKhUOA+bBi3bt+hqksVKlWsyCUfHzznz8fHxwcXF5dv\n/Wi/C7ITDZn/i4MHD3L2lLTSvWRLfyytTBFFEQtLY6Ij3/MxIorlfUZr5M1tLEhJSiYpKYnY97FU\n79iCi9sP0K3fOAyNTJg5oTcvAp8CYFXAjl8ObUrjNafzzLF0njmWoSXqMqB6/zRt0dLWYur2aYgq\nEX1jY2YcPcLZbds5uFQ6eFOrYwfCX75Eqa1gwsEN7JwuhcYW/jR5TU5K4n14BKbWlsRESot75hbW\ntOrQh40bltOqdSuGDhmCjY0Nenp6eM6f/0Mu6GV7Ti8IglIQhNvqWHUIglBAEISrgiA8FQRhhyAI\nOup0XfX3Z+r7Dp+V4aFO9xMEoeFn6Y3Uac/U0WnJqg6Z78/4iRPR1tXFzMKIKrWks/SCIHD+8TzW\n7XUHoMpPqcPltdfXseHOJlr2bw2ArnoI/jLwCTMn9CHy3WvqNi7NyMktCQsM4taRVLPX5MREjq/+\nld9nLEIURRydS1OgXAlaewyi67wJJCclM6HNePSNjZm0dzcKhUKj8HNOn6Sl+1Ce3b6DVQHJhffz\nu74UKFuCQs6pvXxCTCzjXFyZXN+NkeUboa2jQ6MWP/MuIpQHd6/i7uHN46evqVe/AVFRUZibm7Ny\n5Spq1ar1nZ/038/X9PTuwCPgU/jQuYC3KIrbBUFYCfQCVqj/RoqiWEgQhI5quQ6CIDgBHYESQF7g\npCAIRdRlLUMKZvEKuC4IwgFRFH2zqEPmO/M8IICkhASiEhJwzudO0zbOTF3UhXPH7nPrqrRf/rP7\nWGo0bcl8994MrTOYd6HviP0gzYE/vJPO1e/ZLh1tPXV/JvN+2Y21rTm1G5Vm4+jpbJvsiaNzaV4+\n8OOjWr5EbRf6Lp2RZu6dK48Vi7q4Y2yeCz1DyW6+Sb++6BoYoKuvz8NLPiTGxWFoagyAlq4278Pf\nERX6FuPcuVAqlXh1GqwJ4lGhYm1q1XelqFM5jh74leKlnMln74ieviGPfH3JlUuyLvxhg2KIovjF\nD1J8uVNAXeAQkqH1W0BLfd8FKUQVSOGrXNTXWmo5AfAAPD4r85g6nyavOt1D/cm0jqw+FSpUEGX+\nf7p27SoiBRLVfHJbGaf53mHwKHHZUR+xWDlnUVtHV5MuCEK6vMam+pprhTLtfYcyxUWHMk5inW7t\nxElHt4qLH54Wl/ieEZf4nhFL162eRtb78qV0n1zWVqIgCOKko1vFRQ9OiUptLY28roG+uMT3jPjz\nrLFS3QqFOGXeRnHt9ovi2u0XRYVCKdao21ycMHONCIiWVnnT1Ofh4fFP/1NkG+CGmB19zpYQ7AIq\nIIWbPgTkBp59dt8OeKC+fgDk++yev1p+KdD5s/R1QFv1Z+1n6V3UspnWkUH7+gI3gBv29vbf+9nm\nCBISEkQjExOx/bixYu58tp8prEKcf8RLzF/cQQREC5s8YtdREyUF09MX7Yvai1UaVxHtitqLgNiw\nc0MREO0LWoo3Xi0SrwZ6iS07uYgzlnQRrwR4pVEwhUIhAqK2rq5o7WCnSW/ct4/meszWzWkUfsT6\n9Zp75RvXEet2by8C4tSNu8RmXfuICIjtJrqLRrnMREBc/dt5jcKv3X5RdHAsLgKijq6eCGjSP2/X\nsWPH/ul/jmyRXaXPTgDLZkCYKIo3P0/OQFT8wr3vFsJalKPWfnMSEhLQ09Fh55y5vH31GgDjXLlQ\npagwNDWkYn1pkTgi5A2bPaXDNAnxcbz0e8nDy34E+b0EoGLDygCIKpGUZBVGJgbMXNIV145VqFJw\npKa+6mVqsWHiNtaM30JKYhKhz4NQKpSUrVeXn3p0x01tILR1ylSCHkuuuVJSUtjt6Yl1Xmk4fvvY\nWU5v3EleB0dy2+SltEtNBEHB/vmrMLeU7AUCn6X6AQQYP30V5hZWJCbEY50nNajy2u0XWbv9IgAN\nG6b3//9fJjtz+mpAC0EQmgB6SHP6hYCZIAhaoigmkza89KeQ1K8EQdACTIF3ZB6qmkzS32ZRh8x3\nIiEhgRUrVjDfaz5v374FoOfc2Rxbt4E3/v4AzO0zh6iwVBv7mi6NqFC2Ot4rfkFbR4eJa7Yzpl1D\ndPR0mNlNeiEEPX9LZYfhaGkpqVyzKGFvpDn8jaCFNKs8jXvPbhOfGI+ejh71Kzck5F0ITg4l2X58\nC5EhIQxbu4aTmzcT/MyfBT16pmnzJE83OvSoCUApy0EUKS3Z69sWcGTpkYsaudFtG3Hu1AEci6QG\nwVAoFEz13ML2TYvo2C3zU3avXr3SmCX/18lOAEsPURTziaLogLQQd1oUxZ+BM0hDc0gfqvpTeOm2\nanlRnd5RvbpfACiMFAX3OlBYvVKvo67jgDpPZnXIfAdq1qyJdR5rtuzbypBl7szaK/mk/xgZhb6R\nIaqUFLS0tXnh+5zot9F8GoxVr/wTIaGvABAUCiLDJVPalJQURJVIwjsvYsLmc3h3P5KTU7h+8Qkp\nKSrW7B6KvoEuc1Z2Iyb+IwPm9iAi+i0/N+zOSLdxNHZpRt7ctrx4KPXO43dsx/vyJUrWkNxse8xq\nx5XABRqFB6jg4sjZA+nt/wEMjI3xOXeE44e2p0nX1zekR//x6Oun9wW4dvtFjE1M2b//x/mv9/+Y\n4Y4FRgiC8AywQJqjo/5roU4fAYwDEEXxIbAT8AWOAoNEUUxR9+KDkRb2HgE71bJZ1SHzHTA2NiY6\nMppilYtRtHxRCpUphImZCcdXr6F0LUmxPnc/9Wm29TzoKXsObwSk46+zB0rv/JSkFHKZ6dPQdQXm\ndh40bSOt5F95voCDlydTtbZk1VexWhHuhCxBpVKx4dAaYuJTQ2M3rtYCgNNbf9Wk+V72QaFU0Llf\nXYxN0lrn2dhKQ/23IekHhQOmzid/USd2bl3Kxw/Zd4bZd+g0vL0XosrA+Oi/iGyRJ5OG169fU7J0\nSXLlNce1jytKbSX7Fu5DodDi6ePHGrm8ecwIVg/RtbS0SE5Opmnbikyc15G5E3ex99fLacotVT4/\nDoWsObjzGlefL8DIOL0prfe0vaxddJxyRZ1pXqMVC36bw8fY1G2zFkMGU8S5Ap7demBXwJKjN6al\nKyMlJYXSVoOp1tiVTu5j0/++5wHM6t8ZgEpV69N36JQvPhNRFJkzqS/eXnNp3rz5F+X/KeRYdjJ/\nGX19feLj4wHpJFpKSmpseT09Pc29TxSpXI4nV28zZ2V3mreTFu5UavPW29f8WT7vMIs290dPT4tS\nloPYfW48xUra8Wf2/ubDL0O2aL7r6GpTuUYRLpx8mE72bugSTbTbP1PCYgAORZ0YvWhthvdjPn5g\nbLtGODgWZ8KM1RnK/JkbV85w6fQu7ty+lS5oxr8F+ZSdzF/mwYPU+O/dxkxh6OzFABQvX4muYybj\nsXwzVraS0vZfMZshGxZgU9Cecf03Uq/0eM6feKBRjHKVHFmzaygGBjqaNCOT9L08QKtOVbkfvowt\nh0dy9uEcbgcvZuWOwdwNXULvYWlX0EUR3oZGs3PThTTpn4bgCi1t1kwfn2E9hkbGIAjpVvKzokLl\n2rz/EMuFCxe+LPwvR1Z6mXQ4Ojpqrl8/e0TBEqVZdtSHwbMWUqZqLfIVLMTgmQsBOLlOWhSbcGgT\n9Xu7EfI6kgEdlxH0POPIMdo6WuzZeinTuhUKBeWrFMLSRvKEo1KpuHbhCWsXHsMslzlKpRYFC9vQ\nptYsajmNY+qI32hbdzZPfF8TH5dIqHrKEfDwLncunSX01YsM6+k+ehIA8bExGd7/M4IgULp8dQ4e\nPJQt+X8zstLLZIgoikRERKCbGMPKicOJi0mrHJFvJb925nmtNeatgiLVtGLWuIx9zWlrK1jldZQx\n/dYT9e5jhjKfGNV7PaUsB9Gn7RIABo+ah4hIwNMQ/P3eYGBkjNvQsTz1fUOrGjOokM+d+qWl/Xyl\nlhZa2troGWQclPL1c390dHTRzWDFPjMcC5fg4iWfbMv/W5FP2clkirm5OXv37EGpVDKqTQOmb96j\niQ3nWKI0xco5c+PwKa4dOI6ekSHxH1NfDOdPPGDh9H0Mm9iSOeN34u/3hhs+z0hMTCa/vTlH997k\n8K7rbDkyivKVHTOs/+KpBwiCgLGJGYWLleXqpZOoVCqMzU348O49A6bNp6BTacpWr0Psh2h0dPWY\n0Fk6h5+SnMz0TbsxNbfIsOy8Do4kJibw8N51SpaplK3nYZM3Py9fZDxy+C8h9/QyWWJvbw9ArRZt\nyWWZGiZaEARcGjZHpV7k+1zhi1eXlGjNwmO8evGWLavO4HP2MYUcLXnxaCoBDyaTGOlNdZeCdGni\nSRnrQSyeeSBNvaIooqWtRdWajZm5cDs3r57hxJHtFClfhHK1ygFoenEjExOsbO0wy23JvN+P0raf\ndAowKOBpmjLj42I4u38XC0b2Y9O8qSgUAgtnj8jUi++fSUxKQD8DBx7/NWSll8mSjh07YmhsTERo\nMBGhksOK5KQk5rn3ZsOcySi1tajk2pCOU0fQfqI7ix+epv1Ed03+huUnYm+Xi7cvZnP/6jjy2Zpp\n7i3xkuyukpNVrFrwByUsBtClqRdnjt6jbJ4hREZ8oHT5qrx7Kxn7eB9fyLSd03n1VDIEyp0nNbLu\nJwyNTajeTPKfJ3xmyf3y2RNGtmrAoY1LsdB7z87N3XkXNBuAuzczX2P4nEkjOxPg/+zLgv9y5OG9\nTJZ4enrSsGFDfvrpJ2o2b0tum7xs8ZrBCz9fanZqSZvxQ9JtYZnb2lCna1vObt2NqBJ5GRRJ7vwe\nnDw4iDq1imjkSpe0xUBfG8Nc1rjPW8qDaz7sWDKfwVckxRIUClZ4/6KR3710N+Gvwgh44I9jyTJE\nhodhnc8+XZu1tXUQFAqCnvlR2kWy3rtx5hhKpYKPofPTyDoWtGTL2nmUda6e5XM4c1wK8dWvX7+v\neHr/TmSll/kiDRo0AGD5LyNYePAsN86ewM6pMK09BqdT+LdBr5nXtp8msi1AMQcnHj/3pb/7Tvzu\n/JJGPl++XLyNTiJXbitqNGlJtUYt2Dh3CvqGRrgNHYMoiswe2I3Xgc8oUr4wFw9IW2b+D+4yrXdH\nLG3tGO29BkMTE02ZgY8fIKpUHPl1PQ+u+WBmacWj65fp1bVKut9maqJHSFhUpr9dFEWWeXlw58ZF\n/P39KViw4Nc/wH8Z8vBeJluULl0akHrRYuUqEuT7lPXDp6aTWz1wAnEfYvC9MZ4505qjpdSiWmmp\ntxUENIY+CQlJ1G26hCdPw3gXFkqceutMoVDQ02MabkPHqPMIOJaUPOCsn7IegGbuPenpPQVtXV3C\nXwcxqUcbxrRvzKHNa4j9+IFlE4ZjaqJHhXJ22JrHE+p/hxLFrZk+qWm69kZFx1OwUIkMf7MoinjP\nGs7dm5cICgrKUuHj4uJ4/vx5mryfjJj+bMz0TyMrvUy2+BTD/cTvW3HtOQCAwNsPCLyTauCiUql4\nFxJOPttcFC1iTY2qhUhOSSYmXvKm89Q/nOLlZwEwbMwezl1InR/HZuGlplnXPgCUqia9eA4tWs8+\nz5UsuH2UX45sIT4mhpj30fzx2wZGt21IXEwMT+9O5Nq5UVw8MZzgp9O5eXE0uS3Sb9/17FKJRw9S\nLThfvfQnPk5q78aVswl6/oTXr19neMIuODgYQRAQBAEDAwMKFCig+a5QKNDX10cQBM3f7t27c/bs\nWSIiIrK9ePg9kIf3MpkiiiK//vorlSpVokiRIqxZu5Y+vXtr7n+IiGRBp0FUadWI0OdBvHr4lKTE\nREITEkhMTGb0L1KIquu+l7G1zMfr8Ff4B74lMTGJ46dT7fj1DAwxt7JOV/8nAn2l2PS+VyVzXAvb\nvES8Duboqq0cXrQOLR1txuxaQ/DTADaOlOzxExJTMi3vc96EvEdHJ9X14pQx0mGhyXM3cuncER48\neECePHkyfDbNm7fIVh2fuOl3k1tjbxP4OICUlBTs89vTumVrRo8arXHR9XcgK71Mhty9e5d9e/cx\nZeoUQBp2d/65C0lJSXTs6IaZXn5qVW1Mj6ENuaJ2Xf2JBvWK0q7LenyuSFFw/F+l9ugjhtShZsPF\nPH/xThNq2nP38TSecf/MuUPSKCMlWVLkOm6d2OXpyeFF69A3NmTulYMIgoCZdeqefH/3HRzY2TfL\n35iUlMSy1RcoVLQUcXGx6OsbsHjdHwzt1ZipY7tjY2NDiRIZD/1Pnz5NZEQ0G5ccQ/FZWK7o95EM\n8WjH4jNLyVco8/P3Me9jCA4I5vT2kziVdGLd2nU0adwky/Z+K2Sll0nHli1bGDRwMPb5CjJ/8iZe\nvvYnPj6OM5cO4ezszN27d3HvK83nNyw+hn/gI2JiPuK5woOSTjYcOSYN+bW0lfx2bAzPn4bQpE1F\nSuYeyIIlZ9DS0sKmQH5CAl9gZGqWpcIDPL17K833XZ6eKJRKuntNpET1ypr8v02cj1JLCwN9A3S0\nlRkVlYa9B6URxDO/+wzp8ROrfzuP3mcWeiEhIRw9epSGDRuma+P+/fspV7JqGoUHMFWH7B7TdBS/\n+aU9t/85hiaGFC5bmMJlC3Pv4l169OlB21Zt8fbyTjPy+B7Ic3qZNNy5c4euXbvS3rUPY4d4Ym1l\nS8VyNanh0pA+ncfg5/eUuZM2UKFMNU0exwLFCY+Q9vAf+Iagb6DD1ecLuPB4HiXK2NO0bSUEQaBL\nfymWnW1hR0Zt2YKZtTUfo6NYOGYQiQmZL3YlqaPkfE77ie6U+6kWOgZ6xMfGMb1JV+4cP0/nXqNI\nTEri1NknX5w3L1p2DqVSyeK1UqSdvp1q0reT5PK6XqO25LKwonHjxri7p/Wok5SUxNYtW3EuWzNN\nekzcR4ZP7ARAJbWbsOxQunoZvI4t4NaTW9SqW4vQ0NBs5/0ryEovk4bISMkNVrlS6aO65LG2Y7XX\nAfJYpz8WW6taY6wt8yIICqrVccLIWB8Ts7R27eNmtmPnqXG8eOTH8sFD6L94Ibnt8vH03m2Gu9Zl\nUKOqLPFwT+OsIiU5OU0ZpetWY47Pfqq1Tz3XvnvWYsKeB+ExfRU16jRjpvc2YmKTmL/wVJa/Nep9\nPIZGphgYGbNozeE0935q1pHIiDBKlXNhyZLFDB48mFevXvHs2TPatGlLAfui5LVJ+xxiYz4Q8S6M\n+m4NaO/enpjoGJKSkrh74U6W7QAwNDVi1Jox5K/kQDnn8ly9evWLef4qstLLpOHIkT+oX6sFJsZm\nXxb+jMCXTwkND0YUVTRtWzFTOYdC0oKdgakp1vb2TNi5g3lnT9Ns4ABqu3Xg8e3reI8aoJFfPd0D\ngD/2Smnlm9TFwNSYM5t+Z0KN1sxr148re45StVZjHAtL82+zXLlp0KQDU2b+QfKfXhpnzj8hf/Ep\nmOUdx2O/EOzyFwJgw0rJOs97jXSKbuxgyVqwdUcp2s6yZcuws7OjcOHCXLl8jYE9J6Ub2sepPf7E\nx8YzuPYgupT8mQ4F2zG10xQ2z9r0xWeoUCjoMKIj3aZ0o3GzxmzesvmLef4K8pxeJg3nz5/j2rVr\nvIsKx73PtC/Ot3sPb5Im9JMgwIwx2/mpRfkM5RVKqZ8pX7+eJk1bV5d6XTrz8tEjzm7bwcdoyVjm\n14WzeXD1EnNnuPJTvWIUcLBk46jpbBw1HUGQ9vDfR0RSqVoDuvfzSFNPa7f+HD34G8dP+WFirIdr\nxzW4ta1AikokJPQjbX8eiIGhMWXKS9OUXBZWuHUfRnJikvp3CMxdtgdzc0uMjE34+OE9tnnyU8C+\nKBevHkdHO/28++VraeHy4v4LGOgbEhsXi66ukkrO+dm3Yi9Pbz5m+u7ZWT5PkKYGRmbGdGvbjT27\n97Bv374v5vkaZM85Mml4//49c+fOZdYsaT99SJ/JVCxbI53c24gQRkzqAojo6ChJTExBR0dJ8aI2\n3L3/mgM+E3EsmtY2PiVFhefk3WxecRo9Q0MGLF6IdYEC6Orr8/TmLZYPHgJA+Vr18Lt9nZj37yno\nYMHTe5PU+VNo5bYOGytjlnm3Y+mqC4wav4/Vv53P0JvNmEEtiYuNJre5IUGvU63u9PT0WLrx5Bef\nRWJiIr9tWMDFM1Lv3861F3WqN2Pg6FbMGLcSe7tC6fKIosiDRzexz1eQbXtW43P9JKOH1UVbS4vZ\nXifoMLwD7Yd3TJcvJSWFJ7eeMKG1B7Xb1uHsrjMICgWiSkVSUlKmXoI+R/acI/OXMDExYebMmURE\nRACwZM1UngWm9zDz6+4VgMiebb2Je7uAlPeLiHu7gJbNSgHQqsbMdHnWLTrG5hWnsbW0Iz4mBu9e\nfTi+fj1JiYmsHzsOPQNDlh314dGNyyTHx9KiaSke3Ur1fqNUKjmwsy+rl7qhra1Ft07Sab4/Dvya\nri6ATj1GYl+gJO+iU/fsi5Usz9BxXl98Dp7TBzOwa12Nwv8ywpvmP7mxdst8tLV0yJsnf4b5BEHA\nLm8BPGb0xue69GIxNNBl+qSm2Fgbs3vZbtZNXkPPct148egFt87c5OntJ7RzaMOE1tJo5eyuMxR2\nrsCcUycoWKIE58+f/2J7vwZZ6WUyxMwsdU5/8276U2gdWkpWcq3dUv3QiaLIXO+MF88e3Q9i0cwD\nuNZsk2bKcPvEKby69SA+Job42BhGtfmJuJhYhgyoyd5tvTPs4e7df01Zl7lYOkgvhJtXT2dYZ1nn\nGoyetIRFa/+gcDHJlPfxg1sEvwrM9Hd/Gvn6+d5l5ORWWFqbYW1pSxFH6WX2MeYDOjq6aGlpZ5g/\n+M0Lhk7oQGzcBxbMbkXK+0VMHNcIgD7dXUhKSOLw+sNEvY1m+E/uzOg6nbEtxuC+eDgNOzfSlFOq\nZk109PQoUtWFrdu2Zdrev0J2ItzoCYJwTRCEu4IgPBQEYao6XY5a+wPzafV4rfdhjYJ/jo1VPlo1\n6QLA0FG7APB9FEJ8fBLdOriTkqKiquMonvi+5snD17StPQsrcyta1W7Hq7CXFCmel6Il8qGnnUR8\ndDgjJrlSu1Fp4mIkbzq9u2UcE/7jx3jKVZvH/YeSi+vGrp35ZeaXPaM3bdkVKxvJWOZt2BvGDm7N\noO71mflLX0YPbIX37BH071ybPm41cO/dGIAmrZ0JD40iNPy1ppwC9kUyVXiAvX9Ijj3Dn8/CfVDt\nNPfKl0272t9tYOq6xvGtR6nUqDJ7gvaRt2Be9izwZrhLNY6uWcuGtRk7+PyrZKenTwDqiqJYBigL\nNBIEoQqpEWULA5FIEWXhs6i1gLdajj9FrW0ELFeHv1YiRa1tDDgBbmpZsqhD5jsiiiJt2rTB0MAI\nHR3dTOVaNe1G947DWLb6At5Lz7B6ow+mJqbUq9mcsUPmER0VQ7fmC2hVcwYAYe/COHhhLwBPHgWz\nft8wTt6dic8zT3q5N0JXN7VX7+ee3t3W7n13MM0rubU2NzFHoVBw6o9d2fJOu3/XOsJCpHP4Rw/8\nirZuMk3blCfi7Qu0tBN5EfCApm2dWbNrKG69qrL77Hha156lyb9l51IAcplZkJScccx6n+unuHrz\nLNZWxpiZpXfD1bxJKW5fGsOcqS1QKhVsWp46Knp07RHTO0/lxsnrLD23nMqN0p4I/JZrb19cHVBH\nmvnkzExb/RGRIth2UqdvAqYghZF2VV+DFPhyqSCN51yB7aIoJgCB6gAWn/wUPRNFMQBAEITtgKsg\nCI+yqEPmOxIbG8ubN2/o2n7IF2Xr1mhGfEIco8ZLgSxKFC3DU/+H3L4v+b1/HxWbRn73mR1YWpsS\nHhrNktkHsLWzoOfQnwAICY5CV0+fhPg4nIqlt8Vv33WD5vrnRj1YstMLpfLLlnexsTEEPvPFvoAl\nmw+PxNBYDwMD6WU2fXGXNLIBT0J4dD+ItYuOAbD1j1F0buzJlRun6dJ+ME8DHmKgZ5hhPQXsi6JQ\nKAkN+0BUVGyGil+6lC2lS9kyfEhtajVajI2VMZvXdOHew2A8Jh9iVo+ZaOtqI6okJW89aiR7PL1I\nTk5GWzvzEcbXkK05vbpHvgOEASeQItFGqaPTgBSnzlZ9bQsEAajvRyNFp9Gk/ylPZukWWdQh852I\njIykdOkyWFvlpXjRssTEfjlGe5P67fhlxEJcnOswoMdELt88zfGzezEwTB0ldGxbAYBB45px1ncO\nFasVYfv683hN3Utpq0GUth7M3esBOBQshkVuSy76BKSrp2+PqprrJTu90NbWYYZ35vPd5ORklswf\nx9Ce0kxy19nxWFqbahT+c8JDoylhMYDmLlO5dNqXUuUduOA3j3KVHDEzN0IEQsODuXXPh7YteqbL\nD5DHOh+eU6S9dQt7jwxlPqGlpeTSyeHs/q03hoa6uFQqwJ5fpXKTEpJITpL+27s0b4aBkRHv37/P\nsryvIVtKrw4/VRYpiGQloHhGYuq/f3vUWkEQ+gqCcEMQhBvh4Rm7XpbJHlpaWgQE+JPX2h6P6b3Y\ntHNRtvIVcSzJgB4TMDE24+c2A9DT0ychITUE1p4DklXasjmHKGU5EN+7LzA0MqKJaxdSUlQULlqW\nmvVaMGLCQgaNmsvDR28o4zIX38dvNGWsWNQBgOp1muFSoxHLNp3E1Mw8w/aIosjwvs24e/MifYY1\n5ODlyRga6WXaflMzA2Yt68a15948jFjB9hNjMc9tDEBcbAIfY96zYOUEbPM4ULVivUzLyW1hzbD+\nkh1BdHRctp7dJ/T0tBncrybPfacwc0ozANaOGkXxShU5ePDgV5WVFV+1ei+KYhRwFqiCOqKs+lZG\nUWvJZtTazNI1UWszqOPP7ZJDVX9jbt+/QtmyZYmKfvfVeZVKLRwdipOSrGLt7qEAJKqPutZrWhbb\n/BbEfEygQKGStOwgLRLGfHxP1z5jUCqV2DsUYcq8LUR90KNUpTmUqTyb+PhEeg38TZL9EEWvQb+k\nm406v1EAACAASURBVMsvmDWc3h2rM2VMN6aN60FcrDQrfXDnJXeu+ZOYmNY673N0dLVx7VgFQ+P0\nL4ZK1SUXX29Cgngb8YbdhzZm+fu37V6GKMKVG8+//LDUhIV/4MTpR1y6/D/2zjq8iayLw++k7kah\npVhxbaG4OxQWd3fdAsXdYXF3iru7uzsUdytQqEHdm2S+PyZNCUlpYYGP3c37PDxM7ty5M5PmzFw5\n5/xe0rv/dlauvYqVlQlPb9zi1ukzdO7cOd1tpUV6Zu8dBUGwVW2bATWQhCb1qrX/QkJDQ6lZoyZ5\n8uTlzp07NKnbMe2DviAhIZ4nz+/iXiInS2YcBqBmW2ncvmB9T47enESlmoV5cOcqi2dLy24f3vtp\ntJE5Sw7Gz5C6yg8eB2LlNJS1G69hampGrrxFtM6pUCh4dO8GICXCCAp8Q7HSUqabK2cfM8Z7I8Wc\n+xIbq3sS7msMmdgUADsHS+o0Lca+Ixs5enqXer9SqUCpVLJ07VS27l1BUEgg3TuVpXZ1XR1i3ZSv\nMZcmbVZz+957jhx/REBILAmJIjLVkuWiRYu++bpTIz1uuM7AOtUsuwxJVfagIAiPgK2CIEwGbqOp\nWrtBNVEXimTEiKL4UBCEZNVaOSrVWgBBEJJVaw2A1V+o1uo6h56fwID+A1mxcgUVStfij2rtyNTS\nBZdUnFC+RljERxQKBTNXdGb8wM1ky5eN575PAXDL5IVCnhJQU7p8De7euohCnkTA+zecObEHE2NT\njIxNkKtmydu3LklCQhLbd99h9NTVODmndAzPnzrAtg0LSIiXutLew2exZe1cggPfc/uaNC9gbmFJ\nnvzu3L11iR5NF7LxyKB030tcbCINykmJOS48nYEgCLjmycScCUvZfXAtcoUcuTxJ67gVa6+wdH7L\nNN2YAfoN3cmr15+wzZSRUTt3aPkmjKtbjxYtWqT7mtNC74arB4CgoCBcXLIwe8IG7O2+f4gU8imQ\nZWun8vyV9NzOXzgLr1+FkBiX+NVlJxv7DESEftQqz5HNgYO7elAgnxOlKs/mpV8MM5fsRS5PYtnc\nMdz1vUSpcjWwc8jIm1dPGDR6PomJ8SyeNRK/V08wN7dk5GQfPoUE8NfoHrTpVoVR01um614UCiVu\nGb0AuP1hAcYm0uz57HG7WL3oJIXcSlGmYm1y5S2MUiFnvc9UXr14hIW5Ca1beGBvZ0G7ViXIntUO\nU1NtFxOFQkH/obtZsuIigkzGrAvntIYscdHRTG7clODAQCwsdK8aJKNXrdXzTSgUCho2aMSL5354\nd5+IpYW1xv6QT4EEBvlTpODXf1M79q3iwPEtFMnlTnRcFH4BryVjFwRJdfILBEFg9u6TKBRy5gzu\nTYDfK/LlzcjDGyO13pKRkXE4Zh9JzrxuPH9yF1EUMTYxZfHaE2m+Uf8a1Z3XLx9z4MpYcubVTn+l\niyoFhxMSFMG5x9PJkDHl+6jhPgYryywMHa/Z5V4+fzQ3rpxVfzY0lCFX9Wpy53IkICASExNDCuTP\nhJGhAU+fB/PxUzRNG7qze/895HIlZRo1pNngQYiiiCIpCd8TJ4m6d5+D+zXFQHSh973X800YGBiw\n/8A+ipdwZ8iEDvi9S1GH6dr/DwaNbcfMxcMZMVm3f1RMXAw79q/mwHFpCa2yRzXGd5/KqtGbMDQw\nwsbGnqate2kd516+CkqlgntXzjNk7goAnj4LJmOOkdSsvxj/zwJlrK3N6N6lHM8e38HWLgM+m8+z\nZN3JdHWhO/SQnHr2bL6Sru/jr2HbCAmKYNVubw2DB+jStzrPn97lwR3NmPfYGMknoUbVvIS+m0bl\nCnmpV6cwxYtmJXsWWyaNrUvblsURBIF7Dz9gbm7E41uj2LS6IzcvDKJ+nYJc3r2HgeUqMKh8RYZW\nqcbWv6bQppV2gM7fQf+m16NBcjLMvn36UbhACW7euUh8fBwGBoa0qtGWTcekuPBhfadjbm5Fjqx5\nOHPxEGu3zlO30axaawrkKMSsTVOwtrAmMiaSuIRYVm69yOF9GzExNuWN3xMunzua2mWosbMz5+Mb\nKRw1LCyWZu3WcPbCM/oMmU7R4uXTOFqTQb0aYGgk5/yT6V+t9/j+O5pVmULlWoVZssVLZ51yuQcj\nKo2ZszxlKS048D3TJ3hhapzEh+cTMcswSL1iYGpqSJj/dIyNvz6NtnCZFFwzb/EZ/N5IKyc3b96k\nePHiad6fvnuv529x48YNtm7dypLFS6niUZ3WtSTPtRGLB/Hho7+6noW5ldqBRybIUIpKne0BTJm3\nVe3/fvPaWZbNHc32U8OZPnon+QtnoUCRrFTxdMNOlaq6X/tlnDp8lw0r29OmRQkatljBwaMPKFGm\nKj290471/5zHD24xe7Ikt9WhdzWGTW6eat2YqHjevg6hgJt2hiClUkmnBnOxz2DFiQO3yZPfjWHj\nl6j3d29dCVFU4lmzEEdPPMQhgxOhn4IRRSUv740lRw7dgpq66NRzG2UrtqN3795pVyb9Rq9PoqFH\nJyVLlmT16jWUKliGVjXbqcsn9ZrOnM3TePhKSioZExtFjVKemBiZEPDxA+HRYcjlclxdclI4lxsJ\niQlcfXCZBy/vMn5YJ7p5jaZYycpcOLUfmUygUNHsrD+oezZ9wYZeeLj0o323DbhktmHVktZkyjlK\nkq1Kp8G/ef2Ma5eO4//mJSZGJthZO7B+6WlePQ1i+Y4+Oo+xsDLVafAA+7Ze5daVFxgYGGBta87z\nJ/c09puZmxMbE83RE9JEZmREKKKopErF3N9k8ACfQmPJmlX3dfwd9EavRyevXr1i2TIpzMHe2oHG\nVaQ3o6GBIUPbjyYuIY5e0zoB8Pr9S16+l+YAOtfvQRUPTY+1ikWrcPjyfg5d2s+SOaPJk9+d50/u\n0ndEfdLimt8cBnZZSbW6KZNmRsape9Z9yZTRPVAopC524dzuDGo9nH6ze3Lx9EPWLjlJpZqFyZnH\nKd3tfQqRejUKhYLI8FhMTM1ITIzHWHVNC1ZJQxa/l4+5d/sKVta2bFo9h6Xz0rdi8DnhEXHY2Nh8\n83FpoZ/I06OFKIrkypULQRDwbjmYPyo01KpjZmKGoYH0zkg2eIDdZ7YRFaftr1+3XAOGtJUccZ4/\nuYupmTG9Bqed593IyJCFG3oxZXGKk1DNuuk3IENDQzzL1KNW6bp0b9AbmUzGkHbSdcwcs4u2tWeg\nUKQ+JPmSxm3KkjVHRtxKuNK0XTkS4uO4de2cVr0cuQrQoFkXnj6+g6GhAXnzZEz3OeLjk4iKiuf9\nh1Cdyjp/F/2bXo8Wyd5fq0dv/mrY6tLhazAyMEIQBEIjQ1l3cAV3nvsS/CkQqyxWWvWzO7tSv2Jj\nnr99wquAb5N8LlVRcoXNkTMfzi7aSrVfolAomDi8MwkJ8RR0LYR73pScfdmdXfEZuZ5953Zy6NJ+\nRnqtY/qy9Lm5Ojhac/TWBBQKBT2aSd9TiTJVdNZ9dO8GN6+cpnrVfOlqG2DClCNMnJYyweni8uNj\nzPRvej0aiKLIiOEjyJstf5px6saGKWNre2t7/AJeYyAzIFeWPDrrC4JAs2qtePbuKY5O1jrrpEa9\n0hMwMDSkTMXaadZds2wqPdtW5v07ySNv+yntSDwTIxNa1GhLZkcXDu64zqeQyG+KWW9YfjJXzz/B\n3MISIyPdOQfmTBkAwNxpjdNsLz5e8urr07MStrZm6vKfIXyhN3o9Gvj5+RETG8PrDy+/+VgjIyMU\nSgUD5v351XpKpZL3bz9RyKE3hRx68/jeu6/WXzL9IPFxidjY2FOjTuruqJERYYwe2JZLZw9hZ+PA\n0pl7yJuzMO9D3hGXoDvibVAbKQS2Uv5h1C8zMY07lAj7GMXr54HUbdRePYbXRe58UozAa79PX23P\n3HEgFhkHA5DRdSTh4d8Wnfet6I1ejwZ3794FYFRnbRnqtBjRcTx1yjUgNOLrqqyrRm3CztoemSD9\n/JpVncLF09rJN33mHMHDpR+LZxzCMYMloZ+CObh7jVa9ZBbOHEbghzfUr92G+VO2YWFuRa/OklEf\nuqTboy2DrSPrxm2jZqk6Wgk/kklMlNO92QLa1ZlJ44qT2a1y8Clb0ZNPH4NITEzg2MEtDPVqQrdW\nFfB7+Ri5PJEXT6UVjuFjNcNiP59DOHP+OQkJKYk7HTOkKOsuX7481Xv9O+jH9Ho0KF9ecnhxsPl2\n/3sHGwcaVmrMkcv7efHuGXmy6R7LGhoaMm/AUvad38XuM1JarJ7NF3L19RysrKWu7bWLT5n/134s\nzI1JABISpBn4E4e3U69Jyvh7+8ZFfAwOwPf6Odp2HcTrF4/IYJ8yafb4meSuW9BVtxAlQKI8kRPX\nj+jcN2/yPs6feMDTBym+CclefWMGtdWom8leWgXwWTCeBs1TEm3s2qSZdKNkpVncvf8eReR8KpXP\npS5PSlIQ8lEKBw4ODuZnhYnr3/R6NLC2tsbZyZk3galnjP0aBjLpPWJpLk3khUZ8YsuxDfgH+2vU\nu/P0ltrgB8/1AaBbk/lqSatNK85iZ2tOZOBM5BHzsLSUxs3zVbpzL54+YHDvRhw/uBXf69Ls+T1f\nyRijoiMAiIuLYcWGGVTxqE5B18KpXvP8LTPV22GfotXbj+69ZcXcozx94I97tarMvXKJYZs34vcy\nGAALc0tKFChNzdJ1WDFqAzP6zkcmyAgOek/YJyl4qHf3CuTLq5n6a9PqDtJ3Ze2Nz+pLrFjcGgBT\nh4HkyeOKUqn8aQYPeqPX8wUmJiY0bdqU5++eftNxu05vY/HOeZzzlZI9OmeQhC6W7JrP0asHGbNs\nCLef3aLXtM50nNCSuVtnAGBlbYtrgcK4la3Ig9tvKOLoxTu/ED68+USpEtIsvSAIjBoqxeOHh0vj\n40WzhhEe/omh4xezcutFylf5g/u3L6M6AABjY1MMDAxIUmiHvgLEJcTx6v1Lnr19QuFcbpgam1K3\n1Hiunn/Cx+BIpo3cgbWDPXMuX6TTX1JyTydXV6adOoG5tTUxsdH0bTGQdp6dMDaUJtzmDVyCoYER\n505JqR+WrrjIo8cBzF10Rn3eAvmcWL1U6iX0GbSTazfeqPdt2LDlmzwNvwd9916PFqXLlObcyVmI\nopiuH6Aoiuy/IGnIX38ovW03H1tPQddC6oeHUlQyb4tk6L3GzwCZwLKxQ7BU5dfvOW46g5vWxMQY\n7t3y4/H9d/TrmjJp16trBbwG7GDhjGG4FStLdJT0Np8x3ouVWy/SoftQMmfJgUIuZ+fW5dSq3AhT\nU3NEETJn0Fz2ik+MZ/TSIXwMD0FUZWDzyF+Kbg16M33DJLo2TkkRpuv+jU1Nsc7ggDJBOyGHjaUd\nLWq0ZvOxFB26IqWnATB09D6USpEMGaz4+DEKZydbAgLDWblWelgdPnyY0qXTr3b7veiNXo8WLVu2\nZNrUaRy4uIcGFZukWT8oNBCAivWakMHZhZtnjnPs6iGOXT2EpY0tTllz0GHoWAQErO3sMVRldV18\n9LJGO3ExMcTFwNAeq7G2MqVze00DsLMzJ8D/BUEfXtK5fWl27rlLJhdp/d7AwIDa9Vqzd7uUIz48\nMhQ7QUCpVJCQqCmDvWj7HELCpS56efeKFM1TglKFpJTTE3tM5/ztMyhFJXK5nO2nNnHt4CHK1K+n\n0UaGLFkIfx+o8/s4cU0aghTIUZBCOd2oU64+vk9ucNb3FA9f3UcpN8bYyJiAwJQIQi8vL+rUqZPm\nd/0j0Bu9Hi2MjIw4feY0OV1zYmdlj6NtRu6+8KVGSU8cbDJo1RdUs/AfXr2gVZ/BVK7XhOPbNyAY\nGODZqmO68tIDlKhcnZvnTtG9czmWzdf2ukuOtktmzYZrRD3V9H2PCJPG0kMndMLUVEpBXV/14IqM\njWT2pqn4fZDW7yf0mEYOZ1eN442NjKlRKsUX4Py9Mzy6dEnL6N2rVuXhhYuERYZiZ52SnPPu89uE\nhIcwpN0oCudyA+BtoB8lC5ahVKEUAQ9RFOk0UQqZXbx4MX/++fVlzh+JfkyvRycZM2Zk5KhRrNy3\nFJ8Dizl86QAD53kRHh2uVTeTfSaaVGnBy0eSARqZmPBH+27UbdM53QYP8Ck4CEifMwuAmZkxefMX\n1Sjr0GMYDZp1oVHzbsTHx2JsZIJfgDQpuXz3QrXBA8Qnpr0ebmFiwf1z5/mrueZDqIRnbRwyZ2bi\n6tHExKVM/vkHvwXQiDYcs3wY41eM1Dj+6oMUqTAvL93huz8LvdHrSZURI4Zz6tQpnr94hkKhYNzY\ncXjP7klUbEoO9uCwIGZsmMzus9JMvEIhrTlvWzSLPnXSH++elJiA35OHZMpojZlZ+rzQlEolAR80\nVxkEQaBBsy7Ua9qJzr1HYmhszF9rxjJr81Rql6mroSm/fM/iNM9Rr0IjAD76a64+HPbxISkpkdCI\nTwxbMlBdXqesFEQ0Z/M0jfp+Aa/oOKGleihUsmAZ2tTqkK77/NHojV5PqgiCQLVq1bCzs0MmkzFu\n/DgMDQ3pM7M7y/csYvjigQxZ0I+Hr+5ToHhpFh25RHxsDF6e5Th/cPc3ubU+unkNURR5+2R8uuov\nWn4ep4xWREVGkJSUoLV/y9p5rFk6BXMLK0ZMXM7953fYcHgNSmWKI0xoxEcGzPuTS3dTV4Utlrc4\nZqbm2HyxhHZy3QYigkMwNDCkqkc1dflrVU/CNXMu7r24o/UdDF3ozdlbp4hPjMcv+DWlS5UhKUn3\n6sLPQj+m15NuBEHg5s2bFC1alMv3LgBQt11X/mjXFVEUmTu4Ny8fpoyxvaenP22zKIrIZAKGhmnL\nVAGMGHuA2LhEDA2N1HMKn2NqJiWR/Bj8genjpSQUwWFB2NlmYPCfU1ixcSZuBUpy+uIB1hxcQXn3\nSlptKJQK7jz1JS4+lmzuKev8k5u1QFQqMTE2YenQNRrSWpkdpaXK1x9eMXvTVK02AZ77P2XfxV00\nb9mcOXNmp0t7/keS5tkEQcgKrAecACXgI4rifEEQ7IFtQA7AD2ghimKYSrduPlAXiAU6iaLoq2qr\nIzBa1fRkURTXqcqLA2sBM+Aw4C2KopjaOf72Xev5btzd3RFFEceMGWkzaAz5ikqJWgLf+mkY/Jcz\n82lxZPMqDNOhS5dMtcp5OHj0ISMmLdOpItu4ZXce37/JqxcPaVa/C/HxsYRFfKRl455YW9owcZiU\nK+DI6Z1ktNfWzdt1ZjuHLu1DqVSQ092NTlP+AqSH06f378lgm5GZfedrzVkYyAxZPWYz74P9GbN8\nqLrcy8uLWrVq0bBhQ4qWL8Ls5TMoVaoU/w/S84iRA4NEUfQVBMEKuCUIwgmgE3BKFMVpKnnp4Uh5\n6usgCVnkAUojCU6WVhnwOKAEkjzVLUEQ9quMeCnQA7iKZPSewBFVm7rOoef/THx8PDYOKTP5n2/3\nn5H2WPlLwkOCKVIofVlqAWZMbsihYw+ZNKIr5hYWJCYkMmLSMrK7Sq6/CoWcgA+S08u+oxtxypiF\nEf1mYW5uqdGOi1N2jSSgABEx4ew/v4sSnrVpM3aMxlq9IAhY2thQ3q2ClsErRSXdp2gKYiazaeMm\nFi1a9EPVZ7+XNMf0oigGJL+pRVGMQlK3cUFSoV2nqrYOaKTabgisFyWuIklTOQO1gROiKIaqDP0E\nkuy1M2AtiuIVlarN+i/a0nUOPf9HwsPDiY6KQqmatEtMSGBIM2mZq3S12uQq7P7NbRYuU5Hnr74e\njfY5+fJm4vzx/hgYyIiNiUEuTyIi7BMREWH82bEGPdtWIS42mjo9u1Osdi3evHvBX/MGaLVTr5a0\nbLZ89yIiY6QJyid+j5DJDGg7bqyGwYcFBXF4uQ/RERE89nukdhlORibIaOvZSaMsg60jA1sPTzNn\n/a/kmwYTgiDkAIoB14BMoigGgPRgEAQhOcrhW9VpXVTbX5bzlXPo+T9iaiqlhpLJDDiyaQ0nd24C\nYPC8FbjmTz2wRRfeDaowcPZSjI2MiYyMZe/BezSq55auY8uVdqVxfTd27pXEMXPnd2PyyG4kJsRj\nbm1FwXLlqNGhAzKZjKBXr/B7+IiIiE/Y2KTkqitRtCJZXXJy/fFVrj64hFKUxupfaqX6P3vG7I4p\ngT7P3j5h9LIhTPlztka9WqXr8CHEnzO3TqpTh70J9OP9h/ff9L38TNI9ey8IgiWwC+gviuLXdHN/\nmjrtV65Nr1r7f2D2oF4c3LCC+DgpJDWLa+5U60aGhzKldwdePrjLxrlT8fIsh5dnOeSJicwe0JPz\nh/YA4D1kV6pt6GLDynZMmSAtk/Xr4klwoPT+yFawEG3HjVV3wSu1aokoKlmyVnMpLSo6nLj4WOTy\nJJSikmEDa1CxfHaUSiURqt9SaEAAszt2RmYgY8bBWay8uZoCpQryPsSf83ck771jVw/TcUJLOk5o\nyZlbJwG489SXZ2+fcOCCdG/+Xyz7/b9Irz69EZLBbxJFcbeqOEjVNUf1f7Cq/FvVaf1V21+Wf+0c\nGuhVa38tyd3a2Cjp2Z/TRTL2/g2r4uVZTv0Q+Lz+TO9uvH/9gjmDe3Pl2Bfx5XI5GVykv5uHexZ8\n7349qcbnGBsbMWxADfXnSi1bYGJmRoWmmu7DWQrkB+Dxs9ucuXiI42f30rlvbfqOaEFkTDjNh0tT\nRdExCeTNLU3sjW/QiHVjxjKzvbSerlQouX/5LvaZ7BmxeiQFShVk1b5ldJ7Yms3H1qnPZaLyBLz9\n7CZ/rRnHjUdXAdixY0e67+tnkmbee9Vs/DogVBTF/p+VzwQ+fTbJZi+K4lBBEP4A+iDN3pcGFoii\nWEo1kXcLSE5W5gsUF0UxVBCEG0BfpGHDYWChKIqHUzvH165Xn/f+12BpaYmJiQmhoaFM7zOXmLgY\nomKjmLtlOvU6dKdyg+bEx8Zw4dAeAl6/5MmdG4zdt5ewwECOr15N44EDuH7wEMdWrcazYx16TO7J\nosELOL3tNDKZQFL4vLQv4jPMMwxCNDBk+ulTOveLosjAchUAaTJOFEWK1qrMnePnMDYzo//KFcxo\nm5LqW0Czu5nJ0QpzCyNe+4Wy/fVO9TJbxKcIVk1YycU9F2jXdQhnT+wmPOwT0VGanou1atXm6NEj\nPzWC7kfmvS8PtAfuC4JwR1U2EpgGbBcEoSvwFkhWDziMZPAvkJbsOgOojHsSkjQ1wERRFJPFz3uT\nsmR3RPWPr5xDz/+ZyZMnM3PqLJYMXYWFmTQjHp8Qj5GhEQfXr+Dg+hUa9bvNnI6lrQ2WtjZ0nSEp\nzNw+KRloj8k9AbCwltppoGNMHxeXiKmpUapG417EhRu+bwn98AE7Z2cOLF7CmU2baTliGGUaNEAQ\nBOr27M7h5SsYs2cXExs14cX12wAkxsUxp7NmoguZgYBCIeKUMQuBwf4EhUTx/tJE8rhPpoVrM12X\nwK7NS4n7zCU3mYaNGrFr586fHjKbXvQKN3q+GVEUcbB3oINnNzzyab9YRFFkwLw/iZXHM/XkcZQK\nBQY6HFAGlC2PgaEBO15L4/g9S3ezYcp6BvWtxtJVF2nVzIOg4Cju3n+v1rQbPrAGJYpnY+uOW3j1\nrESl8tLQYvP2m7TvtgEAmYGBemXBwsYGMysr3KtWoVLLFoyr14AqrVtxdsvWdN+vXUYnwoIDafBH\nYfYfegBA3RotOHp6p9YMPoCjYyZCQqQ4gkmTJjF69GitOj8DvYClnp/GihUrCAsPY9muBczbOlNr\nvyAI2FnZkxgfjyAIOg0+uZ5CnuIWW6xyMQBmLzyNfdYcrF5/lUNHHxL0MZas+fNRpFJFps09SbO2\nq9m59y6tOq5VH9umRQnKlpIi5gyMDJlx/SCFKpchJiKCj/7+nNqwkXH1pfz9lnZ2ADRtmL5VgrDg\nQGQyQW3w8yZvoVXjHjoNfvLkybx//46goCACAgJ+mcF/C/o3vZ50c+DAAZo3b05Cgrave5f6Pams\n8kFftGMuNx5dxbN7V2p36aJVN5m/mrfgo/973Cq4cf/yfUSliKWdHdFhYYzZvRNLOzsMDA01Hhpb\n/5rKtYMH1Z+zuNhRolgWLl59jYFMIChYEtoYeWAt75++ZN3gSVrnLVK5MvfPaQtUpIccWfMQFx9N\nz44j2H90M3ceXMXZxYGA95o+Bnv37qWBaljxq9C/6fX8UA4ePEiHjm0ZOb0ZTdunRM/90U6Srr7+\nKEUCumYpTwDcqlT5apsjt2/Ds3tXgvwjyFWsGJMOH2TS4YNkzJ6dhb0kNZovewktRgyj57y56s/+\n78PYe/A+Hz9GExQcxfg5bQCYUr8T64dIKa5yuBVg8rmUpcD7585hnM5IPoDK5VOUeCLjwgkKCWDi\nrH7ceyxNTzm52PLw01LcS+RU12vUqBF2DvZ49+/PunXriI+P12pXF7GxsTofqj8S/ZteT5r4+/tT\nrLg789d3pWhJ6Ye9fd0FJgzcrK5jZGhEFY/q3Hp6ndAIaX7Wa8lichcrqrPNr/Hk2nWW9x9Ah8mT\nKFa9mtZ+hVzO/B49eff4CcWqeHD7rK96392gRXhk7oe1rTk9B9Xh2vmnnDl6Tz3OL1akDLfvX/3m\nawKYvfskpubmKBRywkNCMDAyYmLXliTE647L77d2Li9v3uXljXtkMLXk1PETavEKhUKBv78/Q4YM\noXr16rx48YK5c+eqQ5O/xy71b3o9f5uIiAgaNWpI1qxZqd3QXW3wACXKaDriJMmTOHXzGFUqZ6VL\nByn11MOLF7/rvCsGDwEgR2Hd3n13z5zl3eMnVG5SmaE+KaEYK3b2w9DQgOw5HUlMSKJ9z2r0Vunl\nKRUK/qjZkgG9JjNl9EqtNg0NNU3B2MyMPksXM2D1SgxNJEM1NZfW3w0MDHFwcmb9zAmpGjzAgk4D\nOLRoLYmJiVw8d54tW7YwZMhQXHPkxNDQkKJFPdixYwcjho3Ez9efLvV7MrrLRGysbb/h2/p29KG1\nelJl1apV7NsniURUq5sy6TV1xHY2+qRkd718agClS+ZQf37/IZzV66/iUTPFaeZbaOzdj12zrIJu\nEQAAIABJREFU57B33nzylynDuS1bUSgVGBoYkpiQQMZsUpbcc7vPcW63NDY3MJCxbNZh/N9+5IN/\nKKZmJtQsOoYP76T0WV3bDqZyOWnY4aiKqjM1syA+LgYAuVyJjaMjESEhtG/uxYYdi7HNmBGHzJmx\ntncgNCCALQtmULh0eU7v3kJ5z4Y8vXNLfc11mpTgxH5f5HIlQ3YsY2bzXup9r25LE4C9evaiUrna\ntG82gOxZchGfEEuf4c0JiwglMiaS1x9ecuf5bTJk0E5J9iPRd+/1aHDu3DmqVKnCiRMnmDRpAnGK\nYNbulwJVXj79QKbMdlQpOJy42EQyO9vw7qmmFJRCocDYTsokM/vShW9Kl/U5Exs3JSxQyjJjYWOL\no7MLpuYWRIZ9IikhgciwUCysrbG0tiXgzSsMDA2Jj9X0BDQyNiEpURofr1lwDAMDAzp41UAQZIii\nEtdcBXj98jGuuQvy+kWKwk6mjC4EBb8nV7FiuFeryu7ZczC3Mic2SrcCzpdkcs1KuykjmN1aM+9d\n8jUADJvYmYCgFM9DYyMTEpMSsLKyYv78+XTunD5Bzc/5kc45ev5DFCtWjAULFlCzZk0AbB0sWDn/\nGO/8PrJzvWZ3fZ1PW27ffYdCoaSER3bevAllzcarmJoaEh8vZ7FXH/ouXfJd15Fs8CYW5sREhFOu\nVj0adf168sjzB3axbfFsTExMUSqVGBgakpSYgLNTNkl2e5QUUSeKSmQyA6rWakLuty+o07A950/u\nY+92yaEo+OMHMmRz4eXt27y8fZt8xfMzde80zu46w4EVB/hzphdxUbEUKluYptmkfH7r7m3AwsaC\ntZPWcnDlfrXBt2vhRc1KjfD/8Jp5PmPp32MiMpmM0LAQ3AuVZmDvyQiCwN4jG9l9cC2GBobfZfDf\ngv5Nr0cnR48e1UjJLDOQYe3gQP+VK3h28xY7Z84kMS5lRlomE1Aqpd9Slry58X8mSVHPvXKJb0Uh\nlzO4YmX+6NsZz94d6FuwKgC5C7vTfex0LK11K96KokifOuXJmSMfLRp0Y9qCIRibmCCKoJAnoVQq\nKVK2Im5lKrBp7lR69JtAqXLVEUWR7RsXceLQNozNzei3Zi52zo6MqdoCEJl3YgFZ8qSuE58Ql4CJ\nWYpybWxkLF2KdyIxPpGOLftx9dYZnr6QdO3KlqhOb5W+XmxcDCMnd6VAXsk/4dL1EwC8ePGCXLly\n8a3oJ/L+gYiiqNPhI73H3rt3j5UrVzJ37lwEQcDKyorly5cTGSkFxjx//pygoKB0tRceHk6uIkWY\ne+UScy5fZPbFC4zbtxcbR0dK1vHkr2NHKduoIWN276Tp4EEYGBmTOVdOZl04x6B16xi2RQq3Vcjl\n33QfN48eZewfUtScW/WKANT16oSBkSEvHtzF78mDVI+N+CStlQ/s/Rc5XQsAYG3nwPRth6nXoTv2\njpnoOHgsSYmSSEVyvrxZk7w5cWgbHp5VmX3zMNmL5MM6gz0l6tXAwSnDVw0e0DB4AENTQ4qqHI3W\nbVvA0xf3KVWsErldC/L67RPuPryOQqHg7KXDhIZ/5NL1E2qDz5bFlZcvv10x+FvQd+9/I4oXL87t\n27fTXK5p0aKFRsSWja0tEeGSm6qdnQNhYZ/Iki0nQYHv6dWrF/0HDMDK2hqFqCQxPoEaNWowfepU\n8ubNq9FuUlISN2/exNjYmHnz5vHy/n3eP3+OSx5tvXlDIyNaDJNinyo0baIV1XZ5916MTU1T9cb7\nElEUObF2HUdXrsImYwYcsmQiU04pKLOOV0fkSUkc99lE1tx5U21j+xIptj0kJJCHT6VJto+BHzAx\nM6N2q47UbtURgJM7pAdS0RLSQ+X9O8nIOs8Zq9Heq1v3sHeyS9f1f06vMj0IDwmneqX6VCxTG9ds\n+RAEgU07l3LszC5mL9FMh21ibKoW5IiLi/3p2XX0Rv8b4eCQvlnbZIOv5tmM4qUqI5fLyZW3ECYm\nZgiCwNEDm3n66DYhQQFYOzgwdu9uQgMCccjsTFJiImc3bKRc+fL069uXqKgoChUqxIbNmzl94gRW\ndnbY2tnx7pWU1dXmO2aSRVHk1rFjFKmsnWwyNR5cuMARnxXkKVmUvmvnaHmy2WeWZtyn/tkR5+yu\ntB80GvuMThp1CpUqx93L55gyfyADekmeeN46UnflyFeIyLBPmJpKCrnJy25Lewyj1/Jp6nPLDA2J\n/Pi11BHabJ+3lfCQcIb2mU7hAsU19mVwkO6haOEyOGXMwuNnd6hbowX2do7M9xlHnpyF8Xv3BBcX\nF11N/zD0Rv8bMX36NDZuTF1dFcDHR5ps6jNkGkWLV9BZ5/jBLURHR5IxWzbKNmqIgaEhjlmlLqqJ\nmRm1e3QnS6FCnL97l3cPH3Hm9m3yli3NjFEjMDIxITQgkElNmgIQHR6u9lVPL8fXrCU+Joamgwel\n+5hCFSpgbGZK7pLuOl1Xy7eoT3RYBO8ePefuifOsmzGRAbM0JwnLe9anaPkqDG1emyWrpUSWWXJq\nJ/ZwK1cR3wspIbhFPMrhe+0sjy5eZ0jJemTO60q2wvmIi4wiNjKKJlkbYZ/JHp/rK7+6GnFq+ym2\nzt5KkYIltAweoFiRsmzauQSnTFlo0yRlSU+pVJKQGM/t+5eZOXMWhQt//Tfwd9Eb/W+Eh4cHHh4e\nX63z4IE0IVTILfVMqk4u2QkMeof3Sh+1Q8mXFCpfjkLly+ncZ+/sRNtxY9k0YSIBL1/h5Oqqs54u\nYiMjOb56DTU6tMfM0jLtA1TIZDIcMmfm9tGz1O3TSWed2j3bERsZzb2TF3jx4A5entL11+vQnTpt\nOhMfF8vQ5lKuvmhVvjtzSyutdpLnGWZN8iYo4C1hoVKGnEz2TgSFBvL6zkPeP3lBYnwChkbGWNpY\nERoUSouczVAqpDkXcytzll5ajpVdSvsrx6wABAb0nKzz+uf7jAOgaKEUjb6jZ3Zy8txekpKkeYZB\ngwbqPPZHop+9/4ehVCo18qwDVK7RiPbdBqs/R0dFMHZIe+JiY2jQz4syDRt+V271AWUlH/s5ly+m\nO3Bkfo9e+N2//03HJLNv4SLObt7C5HM7sXF0SLVeWFAI1/YcJVvhfCztIXnkOTg5U75OQ/avWUaI\n3xQcc0jj5kVHLvHE9zpGJqYcXOeD37NHiEol8qQkHDI7kadMMQRB4Mquw5ibWZAhR2a8Ny1gkIe0\nclG/Yw88W3fi2qmj+L98RnREOLFRUTy4Lq1KeC8YQOXGlaXvq2Z/3jzxo1XjHtSt0ULjmv0/vGbC\nzL64Fy5DxdI1OX/tCA8eSTn1fX19KVas2Dd9V7pI7+y93uj/YURFRWGtY8lq5VbNNXSlUsny+ePw\nvX4WA0NDStatQ/0+Xt/09g1+84apraQAlvQa8aVdu9k5azYIAlVat6Re797pnsxLiItjeLUazPY9\ngrEq+WZarBownjvHNCPmPIpmwfeOKh+dIEhZcERQ58IRBIbt9CFLAanrnxiXwOJugzG3saTt5OFY\n2FnTr1A1LG1smb7tsM7zDmhYlURVYEzFhhUZsGgQs3rP4PrRG0wfsxrHDFI6716DGxKr8vozMjKm\naoU/ePz8FlOm/kW1atVwdnb+YZF4euecfzjnz59n6tRpeHh40KlTR/LkyUN0dDQeHil/05VbL3Lm\n+B7u3LygdbxMJqP3gEkkJSUya1I/ruzbj3OuXIiIBPu9wTpDBqp3aK/Va/icxPiUaK9jq1bj2a1r\nmtftkk+aXc9aIA8Xtu/kpe9tBqxela4fdrKhx0XHpMvoRVEk8NkrDAxkeBTNgq2NGa/9QvG940/x\n0pVp330oL58+oKBbCYyMpGW1iSO68Pb1M6Y37U6H6aMoWb8GxmYmDNi0UKNtUwtzoiO0xToBkpIS\nSUxIYOS0Fjx79J6d6y9w5/wdosKksN5Vm2fj1WUML988URt8Q8+2FClYklWbZ3Dj5vWfPln3NfRv\n+t+UBg0bcezYMSpVrceta2do2rQxd+7cxdLWmbMnJX/4L9/uqREVFcGA7n9gZmVJXFQ05hZWxMZE\nYWxqyvQzunPKAbx5+Ihds2fTeeoUjIyNdU7oKZVKEuPj1XMHG8ZP4M7JU0w8vY3EuHgm1e1Aq5HD\nKfXHHxrHxUZGcv/CBWwdHcmnUnpJzmNnm8mRSWe2p3lf8bFxDClRlzOH+1KpQm4W+1yg3+CdDBo1\nnwJFtCfSkklKSqB3++oA5CtbnD6rZmnsv33sLBtHTsc1X2H6TVugdfzO5fM5s2cbh6+PJ3uuTDx5\n6M/wXmt5/TwQx4w2BAWGq8f+GTM4M2uClNFn697llKvszqhRo9K8t+9B/6b/h3Ng/z6Kl65Cq079\nqV63Bb7XzuJe2pOSZaurjT69WFnZ0L7rYB4/uIVrnoLUrtca3+vnWDJnFLM6dKLv8qWYmJlpHZe9\nUEEGrl6Varv3z51n9XDJu6x0vT9oNnQIvseOY+Vgpx6TF6hQkp0zZ2OdIQO5ixfnwrbtHFiyFPEz\nJ6Ss+fPhVqUqVdtJQ4nwoPSlMTc1l65ZrgpHXb3uGlmz5UrV4C+dPUzAez+atf2TRWuP069LHRJi\nYokJj8TCVhoyja/Zmk/vJRfgQiXK6mwneX7EJbu0nJm/UBb2XkjJkCOKIvXLTuD18yCCPwbQe2hj\nFk7ZRlR0ONlUwUL/T/Rv+t+Q2NhYLCwssLaxx8DQkJmLd2vVkcvlf0v4UKFQsGHlTC6eOYiphQUe\ntWoSHhSEZ7fuZC2QL11tjKvXgMhPnyhUuQwPz6XEqOdwK8CgrdJymlKpZEzVFkR+DMVAJU6pSJJj\nbG5GxdYNMTAw4OmVW7x79BzbjI6EBgSSt4wHfVfPRiFXsHrAeO6dukjf1bPJW0Z7ZWN8zdY428q4\nenoAlpmG0NVrDGUr1tZ5vd1aSUucg8csIDIiDJ8F49T7LO1smXppD30LVsXSxhavyXPIlie/VhtJ\nSYkc37aBwxtX0b5nVYZPaaFVB6BuqXG8eZmSsd29UCmUSiXFSxdhzZrVaX2134X+Tf8PZuJEKXJN\noZATGRFKUlISRkaaIo1/V+nUwMCATj2H07qjN8vmj+XJhcuEfgzG1c0N59w5kSclpbrcl0zkp08U\nrFiKXkunsvOvBUSGhtN0hBc2GVJm3mUyGYO3LWFG0x7kL1+SDtNHEhcVw5iqzbm0bT8m5uZ4r5+H\nkakJS7sPI3OenLT9S/L06++WEpq7sMsghu9eiZmVBfYuklPOg7OXCQ/+iCzRnJu+UsRaIfe0RSGz\nuebF1NScG5dPcvvmBTJkzMzH4A/I5XIQoJxnfbLlyc/0fl0xNTfHe9pCkhITOblzk0aW300rzhIb\nm8D4OW011u/fvAomMV5Jjx7dadWqNadOnSIqMoqXr15TqWL6HZZ+Fnqj/w0xMzMjk1MWJs7eRM92\nVdi5aTGtO/VP+8DvwMTUDO9hM4mPi6VP51ocWracQ8uWY2Riwoyzp1M97vRGyZW1Vk8pV3yzUf1S\nrWvnlJGpl/aqP5tbWzJo62LmtulLRPBHYsIjyeFWgBH7Uh9KAExr0g2A5mP68+7hE67uPgrA2GG1\n2L3/DqamZloClckkr4N7lKqiruM1eCre3eryMVjSVhngJkUWypMSeffiKW+fPcbUwpITOzaxd5Xk\n2Zc5pwsTtk5k47T1nNt9jl0bLhMbncislV2Ji03k3PH7LJh8iFEjxuPl5QVA1apVv3pfv5o0A24E\nQVgtCEKwIAgPPiuzFwThhCAIz1X/26nKBUEQFgiC8EIQhHuCIHh8dkxHVf3nKsnq5PLigiDcVx2z\nQCWukeo5/gu4urpibWOLgYEBMpmM2BjtXOo/GlMzcybP3ULZSp607TKIpIQENk2YSPCbN8THxuJ3\n/z5Lvfszs30HBpQtz4HFUvfdNtP3KQplzpOTTLmyA2BprztTzJw7x8haSNvXfsekeVzdfVS9FNh3\n8E7y5clEfHycOojmS5JXD3yvn9Uot7H90h9A4PTubZw/KElRxcdEc2zrOmQyGc36tWDh2UU4ODvg\nNbsvzjmkZTkjYwO6NlpCiazebFpykzmzFqkN/nckPVF2a5Gkoz8nWUI6D3BK9Rk0Zap7IElQ85lM\ndWmgFDDuMyNOlqlOPs4zjXP863n27BnPnz7g2ZO7KBUKGrfq8UvO6+Scla5/jqZqrcYYGZtw8+gx\nprZqw4jqNZnfoxfPrt8gNjqSPKWKMfvWURY+OoODi1PaDadCDjcpEm7toIk69xsZGzN0x3Jqdm+j\nLqtavh75cktZfD6P4PMaKMUj/NmhBt1aVWDhDE1F8/UrpFTdfzRWv2+IjAjD3iFFE9W9eDmat/sT\nO3tHLh9NmSyNj42hQKmCVGteVf3wuHPuDgF+AdjZ2ZLZ3p1RQ6cQHR3NrZu3adJEM/jodyPN7r0o\niudVarWf0xCootpeB5xF0o1Xy1QDVwVBSJaproJKphpApW/vKQjCWVQy1aryZJnqI185x78aURSJ\niYmhRp1mzBgvvS0unTlE3cbtMTD4daOxpetPsXnNXE4f24W9cyaG7PLB0lZ3HPv30mxkX67uPpJq\nVJlSqcS7cHWNslfvHuBgl/aD5q5vShx/eNhHdWacI/s28P7tM96/e01cXCzlypUDRWHy5ctHxYoV\n6d9fexgliiIPrz5g1+JdeM3sQ+CbQJYOWcKaNWvo2LHjb6Nck16+91f0W8lUC4LQA6m38FssiXwv\nHz58oFHjJgQHf6JH/8m4F6/I7Mne7Nu5CkEmo16Tjmk38gNp1rY3F88eIjQgiKCXflgWT584xLdg\nm8mRtw+ecmLFZo03ukKuQGag2RGtVq0aS5cuZcKEifjeTT2jrUvWnGTJnpsebSrjUbIcz57cp1Sp\n0lQoV4qaNWvg4uJC3rx5yZUrl5bBent7I4oiJ0+e5PqNG4z+bE09U9ZMJMQlMKv7DMaOHkOnTp1+\nzJfwi/nRSTR+uUw1/HtUa4cPH86N69cYOmEZmZyyUKBwcZZtPIullS0PvvIj/1kEB34gMSGeVuMH\nktOjyA9pM/DVG+RJSerPVTpI0Xz7565gdOVm6i57f7ca9CuUkv7a3c2d06dPky9fPiwtLdi5cyft\n27cnW7ZsBAYG4uvry8KFC2natBmJCbFcu3gcpVJBz24dCAz4wInjR9m+fRvdu3enbt265M6dO9U3\ntCAI1KxZk1EjRyKKInfv3qVBwwZc2nmRLsU6UaZ4Gbz7ev+Q7+P/wfe+6YMEQXBWvYHTK1Nd5Yvy\ns6RDplrHOf513LlzRx1wMW76WkxMUlxQDQ0NyZmnEE8f+qZ2eLoRRZE3r59iYmKGs0v2VOstnj2C\n2zcu0LGHNI2ydfwcji9ZTy4PN0o29SR/uRLf3KVNjE9gkEfK1NDI/Wt4cPYy++ekLIFFhHxibOXm\nRIZJ7q/169fnwAFJ1vruvbvqej4+PuzasQszczNKliqJnZ0dmTJlolixYvTp04c9e/bQpEkTfHxW\n0K1bt2+6Tl24ubmxb+8+5HI5oaGhODo6/uO69J/zvW/6/UByX7MjsO+z8g6qWfwyQISqi34MqCUI\ngp1qAq8WcEy1L0oQhDKqWfsOX7Sl6xz/OpIN3mvQFLJm147/rt+0EwkJccjlSVr7dPHB34/rl7Xd\na+VJiUwe2Y0xg9oSEZ4iwxQU6M/xQ1vZvWUJqxZP4PYNyZf/xMEN9O/fn/j4eK5dukKPpq05NnMF\ny7oMwe/e43TfX1JCoobBA0xp0JnM8UYsWSKtAhQqVAhRFHl0PyUdVrLBA9QqXYecmXNRunA5lo9Y\nx+y+i/F/78+ePXu0DLBx48YoFAq6d//7Bv85hoaGZMyY8R9t8JA+ffotSG/pDEAQ0iz8XmA7kA2V\nhLRKiloAFiHNwMcCnUVRvKlqpwuSxDXAX6IorlGVl0BTprqvKIqiIAgOus6R1g390zzynj17Rr58\n+Vi+6WyqE3VKpZI/O1Qjd143Bo/V9gX/nJfPHzJ1jCT9nDV7birVaEiFKvXYs80Ht2JlkclkzJjQ\nh/bdBlO5RiMunz/Czk2LadWqJblz5cLMzAwXFxcaN26ss325XM66desYPmokCfIkei2dSrbCX/fg\ne/foOTOaaa5AVK1aldOntf0AoqOjsbGxUecKHNNlErmzSst2SlEqkwky7r+4w4r9S8jolImHDx9o\nOS/9F9GH1v6myOVyihUrRnh4ODExMYSFhfFHo3Y0btXrq8et85nO5XOHWb7p68KLA3rWw8jMgAKl\nCnD96DWSElN6BwaGhgwdt5ipY3piYGhI2y6DWO8zHWdnZz58+PCVVrX5+PEjyfMnNbq2okbX1uwY\nNwcUSpzy58Q5f27Mba2ICY/AvXpFBEFAnpjEs2u+LO05nCxZs/Lu7VutdhMTE2nRogU9e/YkIiKC\nfn37kSdrPlpX74i1hbR6oBSV9Jvdg81bN+Pp6fm3vRP/LeiN/jfk1KlT1KiR4lpqYmJGucp1aNb2\nT41xvC4O793A7q3LqflHS1q276uzTsD7N4wZ1JZNT7ZgZiEFo0RHRLN11haKVCjC9G7T1HUFQUAU\nRXx8fOjcufN3GY6uhB67du3ilq8vN31vcfrEScm1FajQsgEl69fA3NaGv+p1ZO7cuTqXx74kLi6O\nsWPHsm7NOjrX7UG+7AW5dPc8+y/vIuRj+gJz/ivojf43Q5eBmJlZMH/VkXSpwISFhTCkd2MEQcbS\nDacwNNTuzkaEhzKoVwM2P92Kqbn2Q2TJ0MXcv3QPSxNL7vjewfIbEmp8DWNjY5JUM/KxsbGYqSL2\nkn9b7969Y+HiRcyaMZPMWbPglMmJ3Tt3kj176pOJX5L8wDQxNqF0qdKMGjOKWrVq/ZDr/7egz3v/\nm/HkyRMA3DxS8tLFxcXQo036AjDs7BypULUeoqjkzw41dObHv37pBDKZTMvgt83dSpOsjTi55QRB\nb4NYsXzFDzN4kLrkbu7ugLQSkYwgCAiCQLZs2Zg5fQYBAQG883vDrRs3vsngAapXr05ERAQhH0M4\nd+Gc3uD/Bnqj/0Ukv/X6DJ7G/JWHWbn1Is3a9P6mNjr1HI6DoxNKpYIzx7XDbf3fvsTWUduPvWHP\nRgD0neuNg6PDTwkAcVBF1n0t15uTk9N3a9sBWFtbY2WlnehSz7ehN/pfgEKhIHnIIZPJsLCUJqQ8\nG7RNd/YbgLjYGD6FSAke3r15rrX/Y8gHdWKJzzE1N2X3u70YGRvxKeQTiSqFlx/JsiVLCQgIwDSd\nue30/P/QG/1PZteuXRgaGtKpUyeKlUy9Ky+KIjHRqQsrxMZGc+uzCLGLZw5p1YmKCic6MooFA+bx\n5OYT4mPjaZK1Ef4v/Al4HcAcLykt1MOHD7//hlIhb968ODl9f/CNnl+H3uh/Ms2aNVNv9/TWHU0G\ncOPKKby71eXpo9vqslfPH6qHBf26eLJ22VT1PqfM2fgUEqjhsNOyXV/iIuM4u/MsIxsP5/imY9Kx\nVftw5cgVQHJ4KVq06I+5OT3/SPRG/5NITEzkzZs3ALTtMoiVWy9+dVksbwHJEGdO7Isoirx785wp\nY3qyaNZwnd51IcEBDOvbjHMnUxwVC7mXpm0XSVVGkAmsnbhGvW/j1PWA5Nr67Nmzv3+Dev6x6I3+\nJ9GzZ09y585Njpx5qVClbqr1nj66Te/21Rjcu5G67PSxXWxbL6VkvnvrEgGvfSlSxF3jOIXqDb9l\n7TwunTuC/9uXXD5/BI+SkvCCqExZih28bKh629bWlnz50pcDT8+/E70r008gJiaGU6dO45q7EH2H\nTsfIOEXKWBRFDd/tYwe3kJSUSPHixbl1S1JavX31GNEx0VSsWBFvb2+aNpUi0T73gvucNUv/Um8P\nHrOA7n3HYmPrwKxJ3hSvXgIHJ3v1/t69v23FQM+/D71zzg9CLpeza9cuPDw8yJs3LyYmpsxZfgAT\nlTLqrevnWDpnFCXLVqen9wT1cd1aVaBfv37MmzcPURTTXNLat28fMTExZM6cmQYNGhAVFaWzXukK\ntbh28TgAFpYW1K5dm61btup91P/F6LPh/gKWLVvG7du3CQoKomnTpnTo0AGAGnWa06J9Xw0DXjpH\nSsZw48opylbyRCYIHNoriSAUL15c7ciSFg0bNlRvR0ZG8ujRI1xdXVEqlWqHm3ZdB7NRJeBgZWdF\nndp12LZl24+5aT3/ePRG/x2Ioki5cuW5evUKllY2REdFsG/fPqp7NqVlB28NY4+OjqR/N80x/apF\nE4mJSXlDt27d+ruvpWDBgurtGzduULJkSS6eOaguK1CiIPny6MfwelLQT+R9I9OmTUMmk3H16hW6\n/jmaeSsO0abTAABKlq2h1T3XFUgTFxdDnz59SExMJCoq6od1uUuUKEHXrl3xe/VEXXb9xDVCQ9OM\nSNbzH0I/pv8G9u7dS+PGjencexQly1ZDJpNx7eIJlKKSDI7OFCisW04pWVklmZ/9ncfHxxMbG8vw\n4cOZP3++OgBGz78b/Zj+J5AcJuruUQ5jYxPW+0zn/OmU7C79hs2kYJGS6vX4Z4/vMmNCSv5zT09P\ndaaYn4mpqSmmpqb4+Pj89HPp+eehN/p08ubNG9q0kbK1JnvBPX7oi52dHa9fv8bW1pYF04cAMHzC\nUt68fsqWtfPUx8+YMYMhQ4b8+gvXo+cL9EafTpycnDA3NyciIkLDkebChQvY2Niou+xHjhyhbt26\nzPU5wMfgACytbNizzYf9+w/ojV7Pb8F/ciJPqVTSo0cPGjRogEKhWwbpS0xMTAgPD+fUqVMUKFCA\n58+fo1QqqVBBc7xep04dABbMGEbLDn2p26g9giCQw9X1h9+HHj3fw39uIu/ChQtUqpQS7WZiYkJ8\nfPwPvQZBELB3yETp8jU4cXg7cnkSMTExmKehAqtHz99BnzknFbZu3arxOSEh4YfHl8+dO5fQT0Ec\n2b+J+/fvERoaqjd4Pb8Nv/2YXhAET2A+YACsFEVxWhqHfBX5Z6KHAG/fvsXY2PjvNKltNxzBAAAF\nLklEQVRF//79KVu2LA8fPiJ//vw/tG09ev4uv3X3XhAEA+AZUBNJDecG0FoUxUepHfO17v2HDx9w\ncXFRfw4PD8fGxuaHXrMePf8v/i3r9KWAF6IovgIQBGErkpptqkb/NTJnzoyRkREymeyHj+P16Pmn\n8LuP6VNTu/1uEhMT9Qav5z/N72706VK1FQShhyAINwVBuBkSohdA0KPna/zuRp+aCq4G/xapaj16\nfgW/u9HfAPIIguAqCIIx0ApJzVaPHj3fyW89kSeKolwQhD5IUtcGwGpRFH98/mY9ev5D/NZGDyCK\n4mHg8P/7OvTo+bfwu3fv9ejR84PRG70ePf8x9EavR89/jN/aDfd7EAQhBHjz/76ObyAD8PH/fRG/\nmP/aPf+q+80uimKaa9b/OqP/pyEIws30+Ev/m/iv3fPvdr/67r0ePf8x9EavR89/DL3R///5L6as\n/a/d8291v/oxvR49/zH0b3o9ev5j6I3+OxEEIasgCGcEQXgsCMJDQRC8VeX2giCcEAThuep/O1W5\nIAjCAkEQXgiCcE8QBI/P2uqoqv9cEISOn5UXFwThvuqYBYJK4TK1c/yi+zYQBOG2IAgHVZ9dBUG4\nprqWbarAKARBMFF9fqHan+OzNkaoyp8KglD7s3JPVdkLQRCGf1au8xy/6H5tBUHYKQjCE9Xfuuw/\n/m8siqL+33f8A5wBD9W2FVJar4LADGC4qnw4MF21XRc4gpQjoAxwTVVuD7xS/W+n2rZT7bsOlFUd\ncwSooyrXeY5fdN8Dgc3AQdXn7UAr1fYyoLdq+09gmWq7FbBNtV0QuAuYAK7AS6RgKgPVdk7AWFWn\n4NfO8Yvudx3QTbVtDNj+0//G/3fj+bf8A/Yh5fJ7CjirypyBp6rt5Uj5/ZLrP1Xtbw0s/6x8uarM\nGXjyWbm6Xmrn+AX3mAU4BVQDDqp+qB8BQ9X+ssAx1fYx/tfO+btGEURx/PMgoqD4E5RACj0QWyMp\nIloIQoogVikEIaJ/gZVw5H+QFIqNYiUI/kDSpVDrgIKoIOKJggfRKGIUW78W8+6yhN2VJO7Juu8D\nw91+582+mR3eMfNuGTjq34fczoA20M7cc97b9du63vZS6GMA490OvMNzX6vnrq5zHMv7v4AvXUeB\nBWCfpEUA/9zrZkVHf5Xp3RydEh9VMwtcAn759R7gm6TeEcPZPvbH5fXLbr/W51Dmo2pawGfgpm9p\nrpvZVmo+xxH0G8TMtgH3gIuSvpeZ5mhah/5PMLNTwJKkp1k5x1R/qKvTcxgCjgDXJI0CP0lL7SJq\nMbYI+g1gZptIAX9L0n2XP5nZsNcPA0uuFx39VaaP5OhlPqrkGHDazN4Dt0lL/Flgp5n1zmXI9rE/\nLq/fAXxl7c/hS4mPqukCXUkLfn2X9CNQ6zmOoF8nnmW9AbySdDlTNQf0srPnSHv9nj7tGd5xYNmX\nbfPAhJnt8gztBGnPugj8MLNx9zW96l55PipDUlvSiKT9pMTcI0lngcfAVE5fsn2ccnu5fsaz+weA\ng6RkVu7RaN6myEelSPoIfDCzQy6dJB2/Xu85HkRC5H8swHHSUuw58MzLJGkP+hB445+73d6Aq6QM\n9QtgLHOvC0DHy/mMPga89DZXWHmZKtfHAMd+gpXsfYsUtB3gDrDZ9S1+3fH6Vqb9jI/pNZ6tdn2S\n9C/IW2Amo+f6GNBYDwNPfJ4fkLLvtZ7jeCMvCBpGLO+DoGFE0AdBw4igD4KGEUEfBA0jgj4IGkYE\nfRA0jAj6IGgYEfRB0DB+A/fSbbP42thoAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "boundaries.plot()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "postcode_lookup = pd.read_csv(\n", " \"NHS_Postcode_Directory_Latest_Centroids.csv\",\n", " usecols=[0,1,2,3,4,19]\n", ")\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "ccg_lookup = lsoa_lookup[['ccg17cd', 'ccg']].drop_duplicates().set_index('ccg17cd')\n", "boundaries.set_index('ccg17cd', inplace=True)\n", "boundaries_with_ccg = boundaries.join(ccg_lookup)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
bng_ebng_nccg17nmgeometrylatlongobjectidst_areashast_lengthsccg
ccg17cd
E38000001393990462191NHS Airedale, Wharfedale and Craven CCGPOLYGON ((385565.5894845667 483953.6485985344,...54.055599-2.09330011.220633e+09221998.41551202N
E38000002597640140644NHS Ashford CCGPOLYGON ((606433.5512145269 156322.4880208465,...51.1310010.82337425.806172e+08149424.21743609C
E38000003481343219317NHS Aylesbury Vale CCGPOLYGON ((472043.0687303017 242900.0443609316,...51.866501-0.82002039.790281e+08278005.39443110Y
E38000004547758185109NHS Barking and Dagenham CCG(POLYGON ((548883.1758077047 190820.2720849307...51.5455020.12949343.609104e+0740663.92322407L
E38000005523471191753NHS Barnet CCGPOLYGON ((525815.8440469442 198211.9265971188,...51.611099-0.21822058.673644e+0750837.78444407M
\n", "
" ], "text/plain": [ " bng_e bng_n ccg17nm \\\n", "ccg17cd \n", "E38000001 393990 462191 NHS Airedale, Wharfedale and Craven CCG \n", "E38000002 597640 140644 NHS Ashford CCG \n", "E38000003 481343 219317 NHS Aylesbury Vale CCG \n", "E38000004 547758 185109 NHS Barking and Dagenham CCG \n", "E38000005 523471 191753 NHS Barnet CCG \n", "\n", " geometry lat \\\n", "ccg17cd \n", "E38000001 POLYGON ((385565.5894845667 483953.6485985344,... 54.055599 \n", "E38000002 POLYGON ((606433.5512145269 156322.4880208465,... 51.131001 \n", "E38000003 POLYGON ((472043.0687303017 242900.0443609316,... 51.866501 \n", "E38000004 (POLYGON ((548883.1758077047 190820.2720849307... 51.545502 \n", "E38000005 POLYGON ((525815.8440469442 198211.9265971188,... 51.611099 \n", "\n", " long objectid st_areasha st_lengths ccg \n", "ccg17cd \n", "E38000001 -2.093300 1 1.220633e+09 221998.415512 02N \n", "E38000002 0.823374 2 5.806172e+08 149424.217436 09C \n", "E38000003 -0.820020 3 9.790281e+08 278005.394431 10Y \n", "E38000004 0.129493 4 3.609104e+07 40663.923224 07L \n", "E38000005 -0.218220 5 8.673644e+07 50837.784444 07M " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "boundaries_with_ccg.head()" ] }, { "cell_type": "code", "execution_count": 143, "metadata": { "collapsed": true }, "outputs": [], "source": [ "#postcode_lookup = postcode_lookup.set_index('pcd2')\n", "epraccur_with_centroids = epraccur.merge(postcode_lookup, left_on='postcode', right_on='pcds', how='left')\n", "#epraccur_with_centroids = postcode_lookup.join(epraccur, how='left', on='postcode', rsuffix='postcode')" ] }, { "cell_type": "code", "execution_count": 144, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
codenamepostcodestatus_codeccg_xsettingXYobjectidpcd2pcdsccg_y
0A81001THE DENSHAM SURGERYTS18 1HUA00K4-1.31899954.5616372361079.0TS18 1HUTS18 1HU00K
1A81002QUEENS PARK MEDICAL CENTRETS18 2AWA00K4-1.31389354.5691752361300.0TS18 2AWTS18 2AW00K
2A81003VICTORIA MEDICAL PRACTICETS26 8DBD00K4-1.21761354.6852502369245.0TS26 8DBTS26 8DB00K
3A81004WOODLANDS ROAD SURGERYTS1 3BEA00M4-1.23226954.5718222354363.0TS1 3BETS1 3BE00M
4A81005SPRINGWOOD SURGERYTS14 7DJA00M4-1.05545954.5326102358498.0TS14 7DJTS14 7DJ00M
\n", "
" ], "text/plain": [ " code name postcode status_code ccg_x setting \\\n", "0 A81001 THE DENSHAM SURGERY TS18 1HU A 00K 4 \n", "1 A81002 QUEENS PARK MEDICAL CENTRE TS18 2AW A 00K 4 \n", "2 A81003 VICTORIA MEDICAL PRACTICE TS26 8DB D 00K 4 \n", "3 A81004 WOODLANDS ROAD SURGERY TS1 3BE A 00M 4 \n", "4 A81005 SPRINGWOOD SURGERY TS14 7DJ A 00M 4 \n", "\n", " X Y objectid pcd2 pcds ccg_y \n", "0 -1.318999 54.561637 2361079.0 TS18 1HU TS18 1HU 00K \n", "1 -1.313893 54.569175 2361300.0 TS18 2AW TS18 2AW 00K \n", "2 -1.217613 54.685250 2369245.0 TS26 8DB TS26 8DB 00K \n", "3 -1.232269 54.571822 2354363.0 TS1 3BE TS1 3BE 00M \n", "4 -1.055459 54.532610 2358498.0 TS14 7DJ TS14 7DJ 00M " ] }, "execution_count": 144, "metadata": {}, "output_type": "execute_result" } ], "source": [ "epraccur_with_centroids.head()" ] }, { "cell_type": "code", "execution_count": 145, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
codenamepostcodestatus_codeccg_xsettingXYobjectidpcd2pcdsccg_ygeometry
0A81001THE DENSHAM SURGERYTS18 1HUA00K4-1.31899954.5616372361079.0TS18 1HUTS18 1HU00KPOINT (-1.318998500227571 54.56163711943564)
1A81002QUEENS PARK MEDICAL CENTRETS18 2AWA00K4-1.31389354.5691752361300.0TS18 2AWTS18 2AW00KPOINT (-1.313892735075778 54.56917529964024)
2A81003VICTORIA MEDICAL PRACTICETS26 8DBD00K4-1.21761354.6852502369245.0TS26 8DBTS26 8DB00KPOINT (-1.217613081180904 54.68524956577383)
3A81004WOODLANDS ROAD SURGERYTS1 3BEA00M4-1.23226954.5718222354363.0TS1 3BETS1 3BE00MPOINT (-1.232269492241478 54.57182217067488)
4A81005SPRINGWOOD SURGERYTS14 7DJA00M4-1.05545954.5326102358498.0TS14 7DJTS14 7DJ00MPOINT (-1.055459266614189 54.53260970143794)
\n", "
" ], "text/plain": [ " code name postcode status_code ccg_x setting \\\n", "0 A81001 THE DENSHAM SURGERY TS18 1HU A 00K 4 \n", "1 A81002 QUEENS PARK MEDICAL CENTRE TS18 2AW A 00K 4 \n", "2 A81003 VICTORIA MEDICAL PRACTICE TS26 8DB D 00K 4 \n", "3 A81004 WOODLANDS ROAD SURGERY TS1 3BE A 00M 4 \n", "4 A81005 SPRINGWOOD SURGERY TS14 7DJ A 00M 4 \n", "\n", " X Y objectid pcd2 pcds ccg_y \\\n", "0 -1.318999 54.561637 2361079.0 TS18 1HU TS18 1HU 00K \n", "1 -1.313893 54.569175 2361300.0 TS18 2AW TS18 2AW 00K \n", "2 -1.217613 54.685250 2369245.0 TS26 8DB TS26 8DB 00K \n", "3 -1.232269 54.571822 2354363.0 TS1 3BE TS1 3BE 00M \n", "4 -1.055459 54.532610 2358498.0 TS14 7DJ TS14 7DJ 00M \n", "\n", " geometry \n", "0 POINT (-1.318998500227571 54.56163711943564) \n", "1 POINT (-1.313892735075778 54.56917529964024) \n", "2 POINT (-1.217613081180904 54.68524956577383) \n", "3 POINT (-1.232269492241478 54.57182217067488) \n", "4 POINT (-1.055459266614189 54.53260970143794) " ] }, "execution_count": 145, "metadata": {}, "output_type": "execute_result" } ], "source": [ "epraccur_with_centroids = epraccur_with_centroids[epraccur_with_centroids.X.notnull()]\n", "epraccur_with_centroids['geometry'] = epraccur_with_centroids.apply(lambda z: Point(z.X, z.Y), axis=1)\n", "epraccur_with_centroids = gpd.GeoDataFrame(epraccur_with_centroids)\n", "epraccur_with_centroids.head()" ] }, { "cell_type": "code", "execution_count": 146, "metadata": {}, "outputs": [], "source": [ "epraccur_with_centroids.crs = {'init' :'epsg:4326'}\n", "boundaries_with_ccg.crs = {'init' :'epsg:27700'}\n", "epraccur_with_centroids = epraccur_with_centroids.to_crs({'init': 'epsg:27700'})\n" ] }, { "cell_type": "code", "execution_count": 147, "metadata": {}, "outputs": [], "source": [ "practices_with_ccg = gpd.sjoin(epraccur_with_centroids, boundaries_with_ccg.reset_index(), how=\"left\")" ] }, { "cell_type": "code", "execution_count": 148, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
codenamepostcodestatus_codeccg_xsettingXYobjectid_leftpcd2...ccg17cdbng_ebng_nccg17nmlatlongobjectid_rightst_areashast_lengthsccg
0A81001THE DENSHAM SURGERYTS18 1HUA00K4-1.31899954.5616372361079.0TS18 1HU...E38000075445468.0523188.0NHS Hartlepool and Stockton-on-Tees CCG54.601799-1.2977170.02.977915e+08204336.25197600K
1A81002QUEENS PARK MEDICAL CENTRETS18 2AWA00K4-1.31389354.5691752361300.0TS18 2AW...E38000075445468.0523188.0NHS Hartlepool and Stockton-on-Tees CCG54.601799-1.2977170.02.977915e+08204336.25197600K
2A81003VICTORIA MEDICAL PRACTICETS26 8DBD00K4-1.21761354.6852502369245.0TS26 8DB...E38000075445468.0523188.0NHS Hartlepool and Stockton-on-Tees CCG54.601799-1.2977170.02.977915e+08204336.25197600K
3A81004WOODLANDS ROAD SURGERYTS1 3BEA00M4-1.23226954.5718222354363.0TS1 3BE...E38000162461718.0519597.0NHS South Tees CCG54.567799-1.04695150.02.987713e+08113083.59812700M
4A81005SPRINGWOOD SURGERYTS14 7DJA00M4-1.05545954.5326102358498.0TS14 7DJ...E38000162461718.0519597.0NHS South Tees CCG54.567799-1.04695150.02.987713e+08113083.59812700M
\n", "

5 rows × 24 columns

\n", "
" ], "text/plain": [ " code name postcode status_code ccg_x setting \\\n", "0 A81001 THE DENSHAM SURGERY TS18 1HU A 00K 4 \n", "1 A81002 QUEENS PARK MEDICAL CENTRE TS18 2AW A 00K 4 \n", "2 A81003 VICTORIA MEDICAL PRACTICE TS26 8DB D 00K 4 \n", "3 A81004 WOODLANDS ROAD SURGERY TS1 3BE A 00M 4 \n", "4 A81005 SPRINGWOOD SURGERY TS14 7DJ A 00M 4 \n", "\n", " X Y objectid_left pcd2 ... ccg17cd bng_e \\\n", "0 -1.318999 54.561637 2361079.0 TS18 1HU ... E38000075 445468.0 \n", "1 -1.313893 54.569175 2361300.0 TS18 2AW ... E38000075 445468.0 \n", "2 -1.217613 54.685250 2369245.0 TS26 8DB ... E38000075 445468.0 \n", "3 -1.232269 54.571822 2354363.0 TS1 3BE ... E38000162 461718.0 \n", "4 -1.055459 54.532610 2358498.0 TS14 7DJ ... E38000162 461718.0 \n", "\n", " bng_n ccg17nm lat long \\\n", "0 523188.0 NHS Hartlepool and Stockton-on-Tees CCG 54.601799 -1.29771 \n", "1 523188.0 NHS Hartlepool and Stockton-on-Tees CCG 54.601799 -1.29771 \n", "2 523188.0 NHS Hartlepool and Stockton-on-Tees CCG 54.601799 -1.29771 \n", "3 519597.0 NHS South Tees CCG 54.567799 -1.04695 \n", "4 519597.0 NHS South Tees CCG 54.567799 -1.04695 \n", "\n", " objectid_right st_areasha st_lengths ccg \n", "0 70.0 2.977915e+08 204336.251976 00K \n", "1 70.0 2.977915e+08 204336.251976 00K \n", "2 70.0 2.977915e+08 204336.251976 00K \n", "3 150.0 2.987713e+08 113083.598127 00M \n", "4 150.0 2.987713e+08 113083.598127 00M \n", "\n", "[5 rows x 24 columns]" ] }, "execution_count": 148, "metadata": {}, "output_type": "execute_result" } ], "source": [ "practices_with_ccg.head()" ] }, { "cell_type": "code", "execution_count": 152, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "There are 3278 practices whose inferred CCG (based on location) does not match their stated one\n" ] } ], "source": [ "matching = practices_with_ccg[practices_with_ccg.ccg_x == practices_with_ccg.ccg]\n", "non_matching = practices_with_ccg[practices_with_ccg.ccg_x != practices_with_ccg.ccg]\n", "print \"There are %s practices whose inferred CCG (based on location) does not match their stated one\" % len(non_matching)" ] }, { "cell_type": "code", "execution_count": 156, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
codenamepostcodestatus_codeccg_xccg
74A81630FULCRUM MEDICAL PRACTICETS5 4EQA11200M
87A82011HARTINGTON STREET MEDICAL PRACTICELA14 5SLC01H01K
145A82619NELSON STREET SURGERYLA15 8AFC01H01K
153A82642HAWKSHEAD MEDICAL PRACTICELA22 0NUD01H01K
240A83642RECOVERY CENTRE DURHAMDH1 3BQA11600J
\n", "
" ], "text/plain": [ " code name postcode status_code ccg_x \\\n", "74 A81630 FULCRUM MEDICAL PRACTICE TS5 4EQ A 112 \n", "87 A82011 HARTINGTON STREET MEDICAL PRACTICE LA14 5SL C 01H \n", "145 A82619 NELSON STREET SURGERY LA15 8AF C 01H \n", "153 A82642 HAWKSHEAD MEDICAL PRACTICE LA22 0NU D 01H \n", "240 A83642 RECOVERY CENTRE DURHAM DH1 3BQ A 116 \n", "\n", " ccg \n", "74 00M \n", "87 01K \n", "145 01K \n", "153 01K \n", "240 00J " ] }, "execution_count": 156, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# discard uninteresting columns\n", "non_matching = non_matching[['code', 'name', 'postcode', 'status_code', 'ccg_x', 'ccg']]\n", "non_matching.head()" ] }, { "cell_type": "code", "execution_count": 159, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "status_code\n", "A 2540\n", "C 694\n", "D 43\n", "P 1\n", "Name: code, dtype: int64" ] }, "execution_count": 159, "metadata": {}, "output_type": "execute_result" } ], "source": [ "non_matching.groupby('status_code').code.agg('count')" ] }, { "cell_type": "code", "execution_count": 161, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
codenamepostcodestatus_codeccg_xccg
74A81630FULCRUM MEDICAL PRACTICETS5 4EQA11200M
240A83642RECOVERY CENTRE DURHAMDH1 3BQA11600J
243A83645RECOVERY CENTRE CONSETTDH8 5RLA11600J
357A86041SWARLAND AVENUE SURGERYNE7 7TDA99C13T
466A91020LARKHILL MEDICAL CENTRESP4 8QYA13Q99N
467A91021CRANWELL MEDICAL CENTRENG34 8HBA13Q04Q
468A91022BOVINGTON MEDICAL CENTREBH20 6JAA13Q11J
469A91023BULFORD MEDICAL CENTRESP4 9ADA13Q99N
470A91024CATTERICK MEDICAL CENTREDL9 3PZA13Q03D
471A91025PIRBRIGHT MEDICAL CENTREGU24 0QQA13Q09N
472A91026SANDHURST MEDICAL CENTREGU15 4PQA13Q10G
473A91027TIDWORTH MEDICAL CENTRESP9 7EAA13Q99N
474A91028WARMINSTER MEDICAL CENTREBA12 0DJA13Q99N
475A91029BENSON MEDICAL CENTREOX10 6AAA13Q10Q
476A91030BRIZE NORTON MEDICAL CENTREOX18 3LXA13Q10Q
477A91031CONINGSBY MEDICAL CENTRELN4 4SYA13Q03T
478A91032COSFORD MEDICAL CENTREWV7 3EXA13Q05N
479A91033LYNEHAM MEDICAL CENTRESN15 4PZA13Q99N
480A91034HEADLEY MEDICAL REHABILITATION CENTREKT18 6JWA13Q99H
481A91035LINTON-ON-OUSE MEDICAL CENTREYO30 2AJA13Q03Q
\n", "
" ], "text/plain": [ " code name postcode status_code \\\n", "74 A81630 FULCRUM MEDICAL PRACTICE TS5 4EQ A \n", "240 A83642 RECOVERY CENTRE DURHAM DH1 3BQ A \n", "243 A83645 RECOVERY CENTRE CONSETT DH8 5RL A \n", "357 A86041 SWARLAND AVENUE SURGERY NE7 7TD A \n", "466 A91020 LARKHILL MEDICAL CENTRE SP4 8QY A \n", "467 A91021 CRANWELL MEDICAL CENTRE NG34 8HB A \n", "468 A91022 BOVINGTON MEDICAL CENTRE BH20 6JA A \n", "469 A91023 BULFORD MEDICAL CENTRE SP4 9AD A \n", "470 A91024 CATTERICK MEDICAL CENTRE DL9 3PZ A \n", "471 A91025 PIRBRIGHT MEDICAL CENTRE GU24 0QQ A \n", "472 A91026 SANDHURST MEDICAL CENTRE GU15 4PQ A \n", "473 A91027 TIDWORTH MEDICAL CENTRE SP9 7EA A \n", "474 A91028 WARMINSTER MEDICAL CENTRE BA12 0DJ A \n", "475 A91029 BENSON MEDICAL CENTRE OX10 6AA A \n", "476 A91030 BRIZE NORTON MEDICAL CENTRE OX18 3LX A \n", "477 A91031 CONINGSBY MEDICAL CENTRE LN4 4SY A \n", "478 A91032 COSFORD MEDICAL CENTRE WV7 3EX A \n", "479 A91033 LYNEHAM MEDICAL CENTRE SN15 4PZ A \n", "480 A91034 HEADLEY MEDICAL REHABILITATION CENTRE KT18 6JW A \n", "481 A91035 LINTON-ON-OUSE MEDICAL CENTRE YO30 2AJ A \n", "\n", " ccg_x ccg \n", "74 112 00M \n", "240 116 00J \n", "243 116 00J \n", "357 99C 13T \n", "466 13Q 99N \n", "467 13Q 04Q \n", "468 13Q 11J \n", "469 13Q 99N \n", "470 13Q 03D \n", "471 13Q 09N \n", "472 13Q 10G \n", "473 13Q 99N \n", "474 13Q 99N \n", "475 13Q 10Q \n", "476 13Q 10Q \n", "477 13Q 03T \n", "478 13Q 05N \n", "479 13Q 99N \n", "480 13Q 99H \n", "481 13Q 03Q " ] }, "execution_count": 161, "metadata": {}, "output_type": "execute_result" } ], "source": [ "non_matching[non_matching.status_code == 'A'].head(20)" ] }, { "cell_type": "code", "execution_count": 164, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "code 189\n", "name 189\n", "postcode 189\n", "status_code 189\n", "ccg 189\n", "setting 189\n", "dtype: int64" ] }, "execution_count": 164, "metadata": {}, "output_type": "execute_result" } ], "source": [ "epraccur[epraccur.ccg == '13Q'].count()" ] }, { "cell_type": "code", "execution_count": 165, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "lsoa 0\n", "ccg17cd 0\n", "ccg 0\n", "name 0\n", "dtype: int64" ] }, "execution_count": 165, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lsoa_lookup[lsoa_lookup.ccg == '13Q'].count()" ] }, { "cell_type": "code", "execution_count": 169, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "00D\n", "00F\n", "00J\n", "00L\n", "00M\n", "00N\n", "00P\n", "00Q\n", "00W\n", "00X\n", "00Y\n", "01A\n", "01C\n", "01D\n", "01E\n", "01F\n", "01H\n", "01J\n", "01K\n", "01M\n", "01N\n", "01T\n", "01V\n", "01X\n", "02A\n", "02D\n", "02F\n", "02G\n", "02H\n", "02M\n", "02N\n", "02P\n", "02Q\n", "02R\n", "02T\n", "02V\n", "02W\n", "02Y\n", "03A\n", "03C\n", "03G\n", "03J\n", "03K\n", "03M\n", "03N\n", "03Q\n", "03R\n", "03T\n", "03V\n", "03W\n", "03Y\n", "04C\n", "04D\n", "04E\n", "04G\n", "04H\n", "04J\n", "04K\n", "04L\n", "04M\n", "04N\n", "04Q\n", "04V\n", "04X\n", "04Y\n", "05C\n", "05D\n", "05G\n", "05H\n", "05J\n", "05L\n", "05N\n", "05P\n", "05Q\n", "05V\n", "05W\n", "05X\n", "06A\n", "06D\n", "06F\n", "06H\n", "06M\n", "06N\n", "06P\n", "06Q\n", "06V\n", "06W\n", "06Y\n", "07G\n", "07H\n", "07J\n", "07K\n", "07L\n", "07M\n", "07N\n", "07P\n", "07Q\n", "07R\n", "07T\n", "07V\n", "07W\n", "07Y\n", "08C\n", "08D\n", "08E\n", "08F\n", "08H\n", "08J\n", "08K\n", "08L\n", "08M\n", "08Q\n", "08R\n", "08T\n", "08X\n", "08Y\n", "09A\n", "09C\n", "09D\n", "09E\n", "09F\n", "09H\n", "09J\n", "09L\n", "09N\n", "09W\n", "09X\n", "09Y\n", "106\n", "107\n", "109\n", "10A\n", "10C\n", "10D\n", "10E\n", "10H\n", "10J\n", "10K\n", "10M\n", "10N\n", "10R\n", "10V\n", "10W\n", "10X\n", "110\n", "111\n", "112\n", "113\n", "114\n", "116\n", "117\n", "11A\n", "11C\n", "11D\n", "11E\n", "11H\n", "11J\n", "11T\n", "12A\n", "12G\n", "12J\n", "12K\n", "12R\n", "12V\n", "13C\n", "13N\n", "13P\n", "13Q\n", "13R\n", "13T\n", "13V\n", "13W\n", "13X\n", "14A\n", "14E\n", "14F\n", "14G\n", "14H\n", "14K\n", "14L\n", "209\n", "211\n", "212\n", "215\n", "216\n", "218\n", "219\n", "305\n", "310\n", "311\n", "313\n", "319\n", "322\n", "413\n", "414\n", "480\n", "5A3\n", "5A5\n", "5A7\n", "5C1\n", "5C3\n", "5C4\n", "5C9\n", "5CN\n", "5CQ\n", "5D7\n", "5D8\n", "5E1\n", "5EM\n", "5ET\n", "5F1\n", "5F5\n", "5F7\n", "5FE\n", "5FL\n", "5H1\n", "5HG\n", "5HP\n", "5HQ\n", "5HX\n", "5J2\n", "5J9\n", "5JE\n", "5K3\n", "5K5\n", "5K7\n", "5K8\n", "5K9\n", "5KG\n", "5KM\n", "5L1\n", "5LA\n", "5LD\n", "5LE\n", "5LF\n", "5LH\n", "5M1\n", "5M2\n", "5M3\n", "5M6\n", "5M7\n", "5MD\n", "5MX\n", "5N1\n", "5N3\n", "5N4\n", "5N5\n", "5N6\n", "5N7\n", "5N9\n", "5NC\n", "5NE\n", "5NG\n", "5NH\n", "5NJ\n", "5NK\n", "5NL\n", "5NP\n", "5NR\n", "5NT\n", "5NV\n", "5NW\n", "5NY\n", "5P1\n", "5P2\n", "5P5\n", "5P6\n", "5P7\n", "5P8\n", "5P9\n", "5PA\n", "5PC\n", "5PD\n", "5PE\n", "5PF\n", "5PG\n", "5PH\n", "5PJ\n", "5PK\n", "5PL\n", "5PM\n", "5PN\n", "5PP\n", "5PQ\n", "5PR\n", "5PT\n", "5PV\n", "5PX\n", "5PY\n", "5QA\n", "5QC\n", "5QE\n", "5QF\n", "5QG\n", "5QH\n", "5QJ\n", "5QM\n", "5QN\n", "5QQ\n", "5QR\n", "609\n", "613\n", "615\n", "704\n", "720\n", "723\n", "725\n", "7A1\n", "7A2\n", "7A3\n", "7A4\n", "7A5\n", "7A6\n", "7A7\n", "905\n", "909\n", "99C\n", "99D\n", "99E\n", "99F\n", "99G\n", "99J\n", "99K\n", "99M\n", "99N\n", "99Q\n", "AA8\n", "AAR\n", "AAX\n", "AC2\n", "AC6\n", "ACD\n", "ACH\n", "ACV\n", "AD9\n", "ADH\n", "ADP\n", "AE8\n", "AER\n", "AH7\n", "AJ3\n", "AJ9\n", "AJQ\n", "AJT\n", "AKQ\n", "AKV\n", "ALK\n", "ALM\n", "AND\n", "AP2\n", "AQM\n", "ARD\n", "ARF\n", "ARG\n", "AT0\n", "ATK\n", "ATR\n", "AVQ\n", "AWH\n", "AXM\n", "AYN\n", "DA8\n", "DAA\n", "DAN\n", "DDC\n", "DEC\n", "DG3\n", "NAG\n", "NCN\n", "NDA\n", "NDJ\n", "NDL\n", "NEN\n", "NHT\n", "NI3\n", "NKB\n", "NKI\n", "NL1\n", "NL8\n", "NLE\n", "NLG\n", "NLL\n", "NLO\n", "NLW\n", "NLX\n", "NMC\n", "NMG\n", "NMK\n", "NMS\n", "NNC\n", "NNS\n", "NO0\n", "NPR\n", "NQ7\n", "NQA\n", "NQH\n", "NQL\n", "NQT\n", "NQV\n", "NR3\n", "NR5\n", "NRX\n", "NT4\n", "NTP\n", "NTV\n", "NV1\n", "NVC\n", "NVE\n", "NVK\n", "NW0\n", "NWC\n", "NWE\n", "NX1\n", "NYF\n", "NYG\n", "Q65\n", "Q78\n", "Q80\n", "Q81\n", "Q82\n", "Q99\n", "R1A\n", "R1C\n", "R1D\n", "R1E\n", "R1F\n", "R1H\n", "R1J\n", "R1K\n", "R1L\n", "RA9\n", "RAJ\n", "RBL\n", "RBZ\n", "RCB\n", "RCD\n", "RCF\n", "RCU\n", "RDD\n", "RDR\n", "RE9\n", "RFR\n", "RFS\n", "RGD\n", "RGQ\n", "RGR\n", "RH5\n", "RH8\n", "RHA\n", "RJ1\n", "RJ2\n", "RJ7\n", "RJ8\n", "RJC\n", "RJN\n", "RL4\n", "RLQ\n", "RLY\n", "RM3\n", "RMC\n", "RMY\n", "RN3\n", "RNA\n", "RNN\n", "RNU\n", "RPG\n", "RQ3\n", "RQX\n", "RRE\n", "RRF\n", "RRV\n", "RT2\n", "RTD\n", "RTF\n", "RTG\n", "RTQ\n", "RTR\n", "RTV\n", "RV3\n", "RV9\n", "RVJ\n", "RVR\n", "RVW\n", "RW1\n", "RW5\n", "RW6\n", "RWE\n", "RWK\n", "RWX\n", "RX3\n", "RX4\n", "RX6\n", "RXA\n", "RXC\n", "RXE\n", "RXG\n", "RXH\n", "RXK\n", "RXL\n", "RXM\n", "RXQ\n", "RXX\n", "RY1\n", "RY2\n", "RY3\n", "RY4\n", "RY5\n", "RY6\n", "RY7\n", "RY8\n", "RYA\n", "RYF\n", "RYG\n", "RYJ\n", "RYW\n", "RYX\n", "RYY\n", "TAD\n", "TAJ\n", "TAK\n", "YAE\n" ] } ], "source": [ "for group, df in non_matching.groupby('ccg_x'):\n", " print group" ] }, { "cell_type": "code", "execution_count": 171, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
codenamepostcodestatus_codeccg_xccg
7693P81181KINGSFOLD MEDICAL CENTREPR1 9BXA00X01E
7735P81687NEW LONGTON SURGERYPR4 4LUA00X01E
7739P81692BEECHES MEDICAL CENTREPR4 5ABA00X01E
12641Y04939EATING DISORDER SERVICEPR1 3SGA00X01E
\n", "
" ], "text/plain": [ " code name postcode status_code ccg_x ccg\n", "7693 P81181 KINGSFOLD MEDICAL CENTRE PR1 9BX A 00X 01E\n", "7735 P81687 NEW LONGTON SURGERY PR4 4LU A 00X 01E\n", "7739 P81692 BEECHES MEDICAL CENTRE PR4 5AB A 00X 01E\n", "12641 Y04939 EATING DISORDER SERVICE PR1 3SG A 00X 01E" ] }, "execution_count": 171, "metadata": {}, "output_type": "execute_result" } ], "source": [ "non_matching[non_matching.ccg_x == '00X']" ] }, { "cell_type": "code", "execution_count": 172, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
codenamepostcodestatus_codeccg_xccg
312A850251 RAWLING ROAD(THE MEDICAL CENTRE)NE8 4QSC00F13T
314A85601BIRTLEY LANE SURGERYDH3 1AXC00F13T
\n", "
" ], "text/plain": [ " code name postcode status_code ccg_x \\\n", "312 A85025 1 RAWLING ROAD(THE MEDICAL CENTRE) NE8 4QS C 00F \n", "314 A85601 BIRTLEY LANE SURGERY DH3 1AX C 00F \n", "\n", " ccg \n", "312 13T \n", "314 13T " ] }, "execution_count": 172, "metadata": {}, "output_type": "execute_result" } ], "source": [ "non_matching[non_matching.ccg_x == '00F']" ] }, { "cell_type": "code", "execution_count": 174, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
codenamepostcodestatus_codeccg_xccg
11438Y03733NHS CORBY CCGNN3 6BFA03V04G
11951Y04248PRIMECARE CORBYNN1 5DQA03V04G
\n", "
" ], "text/plain": [ " code name postcode status_code ccg_x ccg\n", "11438 Y03733 NHS CORBY CCG NN3 6BF A 03V 04G\n", "11951 Y04248 PRIMECARE CORBY NN1 5DQ A 03V 04G" ] }, "execution_count": 174, "metadata": {}, "output_type": "execute_result" } ], "source": [ "non_matching[non_matching.ccg_x == '03V']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "13Q is the \"National Commissioning Hub\"\n", "\n", "00X: NHS CHORLEY AND SOUTH RIBBLE CCG\n", "01E: NHS GREATER PRESTON CCG\n", "\n", "00F: NHS GATESHEAD CCG\n", "13T: NHS NEWCASTLE GATESHEAD CCG\n", "\n", "03V: NHS CORBY CCG\n", "04G: NHS NENE CCG\n", "\n", "Either practices are assigned to CCG that they're not geographically in; or using centroids of postcodes for locating a practice is not good enough\n" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 2 }