{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Chapter 7 - Advanced Feature Engineering" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Latent Semantic Analysis" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn.feature_extraction.text import TfidfVectorizer\n", "from sklearn.decomposition import TruncatedSVD\n", "\n", "def latent_semantic_analysis(docs):\n", " tfidf = TfidfVectorizer() # Using default parameters\n", " tfidf.fit(docs) # Creating dictionary\n", " vecs = tfidf.transform(docs) # Using dictionary to vectorize documents\n", " svd = TruncatedSVD(n_components=100) # Generating 100 top components\n", " svd.fit(vecs) # Creating SVD matrices\n", " return svd.transform(vecs) # Finally use LSA to vectorize documents" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "array([[ 0.24972705, 0.06942988, 0.01310897, ..., 0.03782795,\n", " -0.00157027, 0.00801295],\n", " [ 0.1399918 , 0.07671455, 0.03975246, ..., 0.02621848,\n", " 0.03578636, -0.0356997 ],\n", " [ 0.37184255, 0.041429 , 0.06708912, ..., 0.03003491,\n", " 0.00086582, 0.01227815],\n", " ..., \n", " [ 0.18476811, 0.00611433, 0.08038825, ..., 0.00609275,\n", " -0.01109097, 0.00355132],\n", " [ 0.18795807, 0.0660674 , -0.04157325, ..., 0.00980154,\n", " 0.0529207 , -0.01526676],\n", " [ 0.08231697, 0.09080506, -0.00372612, ..., -0.01004126,\n", " -0.01808032, 0.01173057]])" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.datasets import fetch_20newsgroups\n", "newsgroups_train = fetch_20newsgroups(subset='train')\n", "latent_semantic_analysis(newsgroups_train.data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Latent Dirichlet Analysis" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from gensim.models.ldamodel import LdaModel\n", "\n", "def lda_model(docs):\n", " # Build LDA model, setting the number of topics to extract\n", " return LdaModel(docs, num_topics=20)\n", "\n", "def lda_vector(lda_model, doc):\n", " # Generate features for a new document\n", " return lda_model[doc]" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:gensim.models.ldamodel:no word id mapping provided; initializing from corpus, assuming identity\n", "WARNING:gensim.models.ldamodel:too few updates, training might not converge; consider increasing the number of passes or iterations to improve accuracy\n" ] } ], "source": [ "from gensim.utils import mock_data\n", "#gensim_docs = [d.split(\" \") for d in newsgroups_train.data]\n", "gensim_corpus = mock_data()\n", "lda = lda_model(gensim_corpus)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Histogram of Oriented Gradients \n", "\n", "See the full example in the Scikit-Image Gallery:\n", "\n", "http://scikit-image.org/docs/dev/auto_examples/features_detection/plot_hog.html" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(array([ 0.04526684, 0.0142712 , 0.01551548, ..., 0.00192692,\n", " 0.005256 , 0.0027118 ]),\n", " array([[ 0. , 0. , 0. , ..., 0. ,\n", " 0. , 0. ],\n", " [ 0. , 0. , 0.00272911, ..., 0.00113187,\n", " 0. , 0. ],\n", " [ 0. , 0.00026697, 0. , ..., 0. ,\n", " 0.00048557, 0. ],\n", " ..., \n", " [ 0. , 0.00145732, 0. , ..., 0. ,\n", " 0.00224509, 0. ],\n", " [ 0. , 0. , 0.00322786, ..., 0.01282706,\n", " 0. , 0. ],\n", " [ 0. , 0. , 0. , ..., 0. ,\n", " 0. , 0. ]]))" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from skimage import data, color, feature\n", "\n", "image = color.rgb2gray(data.lena())\n", "feature.hog(image, orientations=9, pixels_per_cell=(8,8),\n", " cells_per_block=(3,3), normalise=True, visualise=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Event data to time-series" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(8000, 14000)" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\ngUAgHRyPS38cAABwp7UuKRcXl+pLly69/PjxYyOGYXg//vhjkEgkkkRERBzLyMiIJyLKyMiImVto\n/wAAC0FJREFUj4qKyiUiioyMPJqdnb2qp6dnQn19vV1dXZ2jj49PiaWlZcukSZM6i4uL5zEMw8vM\nzFzNvgcAADRHa1cYnp6e5WvWrPnmpZdeKtXT0+ufM2fOlbfffvtvcrncNCYmJic9PX2dra1tQ05O\nTgwRkUgkksTExOSIRCKJgYGBIi0tLZGd/pWWlpa4du3avz9+/NgoPDz8RFhYWJ626gEAMG5pawxj\nrOXOnTs2AQEB50Qi0XU3N7fK1NTUjQzDUHt7u1lQUFC+o6NjbXBw8On79+9PYd/zxz/+8QMHB4c6\nZ2fn6lOnToWwx0NDQ/M8PT2vikSi6wkJCek9PT18TcdkS0RExFF3d/cKbdRz4cKFBc7OztVeXl5l\nXl5eZffu3ZuqyXjd3d0T3nrrrb85OTnVuLi4VB0+fHiZJuvY2dlpytbNy8urbOrUqfc2bdr0haa/\n13379r3h7u5e4eHhUR4WFnayra3NXJPxsrOzV3p4eJS7ublVbt26NUVdvzvt7e1mAQEB50xMTOQb\nNmz4UvlcpaWl3u7u7hUODg51GzduTNVGzA8//PAzGxubOyYmJnJ1tgXDxezq6jIKDw//wcXFpcrN\nza1y27ZtuzRdR021PSPF5Nr2cCnPPBFwLTKZzLKsrMyLYRiSy+UmTk5ONRKJxPX999//0+eff76F\nYRhKSUnZyv6Hun79usjT0/NqT08Pv76+3tbe3v5Gf38/j30/e97o6OhDmZmZr2sqZl9fnx57vsOH\nDy+Li4vbLxaLr2mjngEBAecuX748R1vf60cffbRzx44dn7DnHqoh1cT3yhZvb+/SwsLCVzRZz+7u\n7glmZmbt7e3tZgzD0JYtWz5PTk7+WFPx2trazGfMmHGb/S7j4+P/fubMmVfVUcdHjx5NvHDhgt9X\nX331zuBGZu7cuSXFxcU+DMPQ7373uxMnT54M03TM4uJiH5lMZvm0hKGumF1dXUYFBQULGYahnp4e\nvr+///mh6qnOOmqq7RkpJte2h0t55olA1bJ06dLc/Pz8IGdn5+qWlhYL9kt2dnauZpiBv9ZSUlK2\nsq8PDQ3Nu3jx4svK5+jp6eFHREQcHe4/gzpjyuVyk1deeaVQIpG4jibLjyVmQEDAudLSUm9Nf6+X\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pandas as pd\n", "from datetime import datetime\n", "\n", "df = pd.read_csv(\"data/sfpd_incident_all.csv\")\n", "\n", "df['Month'] = map(lambda x: datetime.strptime(\"/\".join(x.split(\"/\")[0::2]),\"%m/%Y\"),df['Date'])\n", "\n", "# create classical time series\n", "df_ts = df.groupby('Month').aggregate(len)[\"IncidntNum\"]\n", "\n", "# plot time series\n", "plot(df_ts.index,df_ts.values,'-k',lw=2)\n", "xlabel(\"Month\")\n", "ylabel(\"Number of Crimes\")\n", "ylim((8000, 14000))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Windowed Statistics" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# window = spring 2014\n", "window1 = (datetime(2014,3,22),datetime(2014,6,21))\n", "\n", "# find which data points fall within the window\n", "idx_window = np.where(map(lambda x: x>=window1[0] and x<=window1[1], df_ts.index))[0]\n", "\n", "# windowed mean and standard deviation\n", "mean_window = np.mean(df_ts.values[idx_window])\n", "std_window = np.std(df_ts.values[idx_window])\n", "\n", "# windowed differences:\n", "# window 2 = spring 2013\n", "window2 = (datetime(2013,3,22),datetime(2013,6,21))\n", "\n", "# find which data points fall within the window\n", "idx_window2 = np.where(map(lambda x: x>=window2[0] and x<=window2[1], df_ts.index))[0]\n", "\n", "# windowed differences: mean and standard deviation\n", "mean_wdiff = mean_window - np.mean(df_ts.values[idx_window2])\n", "std_wdiff = std_window - np.std(df_ts.values[idx_window2])\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Periodogram features" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAETCAYAAAAyK6EVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXdcU3f3x08gLBmyFJUhGlBwAG5xAFplulq1aqu2Tlor\nONo+bYkUbNXq89SnFdRWq7Wtba1PbetgiStBBXEhOBEiKOBkCcpM+P7+4HfbS7xJbkJChuf9en1f\nr9yR7z335uZ+7jnnOziEEEAQBEEQCiNtG4AgCILoFigMCIIgSBtQGBAEQZA2oDAgCIIgbUBhQBAE\nQdqAwoAgCIK0QS+EYeHChd87OTk9Gjhw4FVF+65evfq/gwYNyhk0aFBO37598+3s7Ko6wkYEQRBD\ngaMP/RhOnz491srK6tn8+fN/unr16kC239u6devyK1eu+O3atWuxJu1DEAQxJPTCYxg7duxp6Td/\nkUjECwsLSx06dOjFgICAjPz8/L7S3/v111/fmDNnzr6OsxRBEET/4WrbAFVZunTpzh07dkR6eHgU\nZmdnj1i2bNn2EydOvEJtv3v3bs/i4mL38ePHn9SmnQiCIPqGXgrDs2fPrLKysvxnzpz5O7WuqanJ\nlL7Pb7/9NnvmzJm/czgc3Y+VIQiC6BB6KQwtLS1Gtra21Tk5OYNk7bN///5Z27dvX9aRdiEIghgC\nepFjkMbGxqamV69eRQcOHJgBAEAI4eTl5flQ22/duuVVVVVlN3LkyHPasxJBEEQ/0agwKGpmWl5e\n7hgaGprm5+d3ZcCAAdd++OGHt5n2mzNnzr5Ro0Zl5ufn93V1dS3Zs2fPgl9++eXN3bt3L6K+e/jw\n4SnU/vv375+FSWcEQRDV0GhzVUXNTOPj4+MbGxvNvvjii0/Ky8sd+/btm//o0SMnLpcr1phRCIIg\niFw06jEwNTOl07179wc1NTU2AAA1NTU2Dg4OFSgKCIIg2kWryeclS5Z8N378+JM9evS4X1tba/2/\n//3vdW3agyAIgmhZGDZs2BDj5+d3RSAQBIlEIt7EiROP5ebm+lpbW9fS98MmpwiCIKpBCOEo+x2t\ntkrKzMwcRfVF4PF4ol69ehUx9WAGaD05LIQTFxe3Vts26ErBa4HXAq+F/KLqs1mrwuDl5XXr+PHj\nEwAAHj165JSfn9+3d+/ed7RpE4IgyMuORkNJc+bM2ScUCgPLy8sdXV1dS9auXRvX3NxsAgAQGRm5\nIyYmZsOCBQv2+Pr65ra0tBj9+9///pe9vX2lJm1CEARB5KNRYdi3b98cedsdHR3Ljxw5MlmTNhga\nQUFBAm3boCvgtfgHvBb/gNei/XCIHgy7zeFwSHviZQiCIC8jqj479XJIDARBEERzoDAgCIIgbUBh\nQBAEQdqAwoAgCIK0AYUBQRAEaYNeTtSjiOTkjPCEhPToxkauuZmZuCE6OjghIiIgRdt2IQiC6AMG\nJwzJyRnhK1Yc3SISrfeg1olEfB4AAIoDgiCIYgwulJSQkB5NFwUAAJFovUdi4rEobdmEIAiiTxic\nMDQ2cs2Z1jc0GFt0tC0IgiD6iMEJg5mZuIFpvbm5pL6jbUEQBNFHDE4YoqODE3g8fiF9HY8XI4qK\nmpioLZsQBEH0CYMcKyk5OSP8nXeOffv0qbHtqFGSs1FRExMx8YwgyMuGqmMlGaQwAADMnAm/5+dD\n37w88NGUXQiCILoMDqInRUUFODQ2gpm27UAQBNE3DFYYysvBsakJTLVtB4IgiL6hUWFYuHDh905O\nTo8GDhx4VdY+AoEgaNCgQTkDBgy4ps4JNtBjQBAEUQ2N5hhOnz491srK6tn8+fN/unr16kDp7dXV\n1bajR48+e/To0RAXF5fS8vJyR0dHx/IXjFQyTkYIcCwsoN7SEp5XVIBDe88DQRBEH9HJHMPYsWNP\n29nZVcna/uuvv74xffr0P1xcXEoBWqf6VMdx6+qgU2MjmGEoCUEQRHm0OlZSQUGBZ3Nzs8m4ceNO\n1dbWWq9YsWLLvHnz9jLtGx8fH099DgoKEsgLO1VUgEPXrvC4qgrs1G81giCIbiIQCIIEAkFQuysi\nhGi0FBUVuQ8YMOAq07b33ntvq7+/f2ZdXZ1FeXm5g6en5+3bt297Su/Xaib7Y16+TAb5+JBcAEJa\nWghH0+eIBQsWLLpYlH12UkWrHoOrq2uJo6NjuYWFRb2FhUV9QEBARm5urq+np2dBe+qtqAAHR0co\nNzGB5qYmMDUzg0Z12YwgCGLoaLW56tSpUw+dOXNmjEQiMa6rq+uUnZ09ol+/fjfaW29FBTg4OECF\nmRk0YsskBEEQ5dCoxzBnzpx9QqEwsLy83NHV1bVk7dq1cc3NzSYAAJGRkTu8vLxuhYaGpvn4+OQZ\nGRm1LFmy5Dt1CwMmoBEEQZTDIIfE+Owz+LS5GUx274ZFFy7AMGdnKNOkfQiCILqITjZX1RboMSAI\ngqiOQQuDqSk0YY4BQRBEOQxaGDD5jCAIojwGLwwYSkIQBFEOgxYGDCUhCIIoj0ELA4aSEARBlMfg\nhEEsBu7z52DZuTM8xVASgiCI8hicMFRWgr2tLVQbGUELhpIQBEGUx+CEgQojAQCgx4AgCKI8BicM\n5eXg6OgI5QAA6DEgCIIoj8EJg7THgMKAIAiiHAYvDBhKQhAEUQ6DFgYMJSEIgiiPQQsDhpIQBEGU\nx+CFAUNJCIIgymHQwoChJARBEOXRqDAsXLjweycnp0cDBw68Km+/CxcuDONyueI///zztfYeEz0G\nBEGQ9qFRYViwYMGetLS0UHn7SCQS448++mhTaGhomiozDUmDHgOCIEj70KgwjB079rSdnV2VvH0S\nExOjZsyYcaBLly5P1HHMigpwoDq4YfIZQRBEebjaPHhZWZnzoUOHpp48eXL8hQsXhnE4HJkTUMfH\nx8dTn4OCggRBQUEC6X0IAU5FBTjY20MlAIaSEAR5uRAIBEECgSCovfVoVRhWrlz59caNGz+mJqyW\nF0qiC4MsamrAxsIC6k1NoQkAQ0kIgrxcSL80r127Nk6VerQqDJcuXRoye/bs3wAAysvLHVNTU8NM\nTEyap0yZcliV+uj5BQAMJSEIgqiCVoXhzp07vanPCxYs2DN58uQjqooCwIvCYGoKTRhKQhCEieTk\njPCEhPToxkauuZmZuCE6OjghIiIgRdt26QIaFYY5c+bsEwqFgeXl5Y6urq4la9eujWtubjYBAIiM\njNyh7uOhx4AgCBuSkzPCV6w4ukUkWu9BrROJ+DwAABQHDQvDvn375rDdd8+ePQvaezwmYUCPAUEQ\naRIS0qPpogAAIBKt90hMjI1CYTCwns9MoST0GBAEkaaxkWvOtL6hwdiio23RRQxaGDCUhCAIE2Zm\n4gam9ebmkvqOtkUXMXhhwFASgiDSREcHJ/B4/EL6Oh4vRhQVNTFRWzbpElptlaRuysvBcfRoOEst\nYygJQRAmqDzC6tWxXz18aNzN31+SGRUVmoj5hVYMShgwlIQgCFsiIgJSLlwIGH74MExJS4Mwbduj\nSxh0KAn7MSAIIo/GRjCrq4NO2rZD1zBoYUCPAUEQeTQ0gHl9PWBLJCkMXhjQY0AQRBboMTBjMMLQ\n2AhmTU1gamUFz6h1mHxGEEQejY1ghh7DixiMMFDeAocDfw/dzeWCuKUFjCQSMNambQiC6CYNDWBe\nVwedCIF2TxJmSBicMNDXcThAMJyEIIgsGhvBjBDg4DOiLQYtDAAYTkIQRDYNDWAOAIB5hrYYlDBQ\nU3rSQY8BQRBZUC+NmGdoi8EIQ3k5OKLHgCCIMlDPBvQY2mIwwiArlIR9GRAEkQUVSkKPoS0vhTBg\nKAlBECYaG8HMxASa0WNoi0JhkEgkKjf1XLhw4fdOTk6PBg4ceJVp+y+//PKmr69vro+PT97o0aPP\n5uXl+ah6LEw+IwiiLA0NYG5vD5XoMbRFoTB4enoWfPjhh/+5ceNGP2UrX7BgwZ60tLRQWdt79+59\nJyMjIyAvL88nNjb286VLl+5U9hgUGEpCEERZGhvBzM4OqtBjaItCYbhy5Yqfp6dnweLFi3eNGDEi\ne8eOHZE1NTU2bCofO3bsaTs7uypZ2/39/bM6d+78FABgxIgR2aWlpS7sTW8LhpIQBFEWShjQY2iL\nwmG3bWxsapYuXbpz6dKlOwUCQdCbb775y6pVq76aOXPm77GxsZ97eHgUKqqDDbt3714UHh4ucyz0\n+Pj4eOpzUFCQICgoSADQOql3QkJ69JUrXL+PPhJv/OST4C/oY6pjKAlBEFk0NIC5IXkMAoEgSCAQ\nBLW7IkKI3NLc3Mw9ePDg1KlTpx709fW9snnz5tUPHjzo9vvvv8/w9PS8rej7RUVF7gMGDLgqb5+T\nJ0+O8/b2vlFZWWnHtL3VzBfXJyUJw3m8mAIAQqjC48UUJCUJw6l9wsNJclISiVBkJxYsWF6+YmFB\n6t54g/yyYwdZqm1bNFFkPTsVFYUeQ58+fW4HBQUJ/vWvf/171KhRmdT6GTNmHBAKhYHtFaa8vDyf\nJUuWfJeWlhYqL+zEREJCerRItN6Dvk4kWu+RmBgbRXkN6DEgCMIEIcAxNI9BXSgUhp9++mn+mDFj\nztDXnTlzZsyYMWPOJCYmRrXn4Pfu3XN77bXX/vz555/nqhKSamzkmjOtb2gw/jteiMlnBEGYEIuB\na2QELdbWUIs5hrYoFIbo6OiEy5cvD6avi4qKSszJyRmk6Ltz5szZJxQKA8vLyx1dXV1L1q5dG9fc\n3GwCABAZGbnjs88++7Sqqsru3Xff/QYAwMTEpPn8+fPD2RpvZiZuYFpvbi6p/2cfTD4jCPIijY1g\nZm4ODRYWUI8eQ1tkCkNWVpZ/ZmbmqMePH3f973//u5oQwgEAqK2ttW5paWHVMW7fvn1z5G3ftWvX\n4l27di1WzuR/iI4OThCJ+Dx6OInHixFFRYUmUssYSkIQhImGBjA3M4PGTp2g7uFD6KZte3QJmcLQ\n1NRkWltbay2RSIxra2utqfU2NjY1Bw4cmNEx5smHyiNs2BAbk5tr7DdmjOR0VFRoIr1VEoaSEARh\norERzMzMoBE9hheRKQyBgYHCwMBA4YIFC/b07NnzbkcapQwREQEp9vYBVatXw3/T0iBMejuGkhAE\nYaKhAczNzaGhUyeowxxDW2QKw4oVK7Zs2bJlxfLly7dKb+NwOOTw4cNTNGsae54/B0tLS3jOtA1D\nSQiCMIEeg2xkCsP8+fN/AgB4//33N0tv43A45MVvaI+6OujUqRPUMW1DjwFBECboyWf0GNoiUxiG\nDBlyCaC1lzG1rrKy0r60tNTFx8cnrwNsY408YTA1habaWrBm2oYgyMsLPfmMHkNbFLYuCgoKEtTU\n1NhUVlbaDxky5NLixYt3rVq16quOMI4tdXXQSVYoCZPPCIIwQQ8locfQFoXCUF1dbWtjY1Pz559/\nvjZ//vyfzp8/P/z48eMTOsI4tjx/DpYYSkIQRBkw+SwbVvMxPHjwoPv//ve/1yMiIpIB9CvHgMln\nBEGYwOSzbBQKw6effvpZSEjIUR6PJxo+fPh5kUjE8/T0LOgI49iiKPmMwoAgiDToMchG4ZAYM2fO\n/H3mzJm/U8s8Hk/0xx9/TNesWcrx/DlYdusGD5m2YSgJQRAm0GOQjUJhePz4cdfvvvtuSXFxsbtY\nLOYCtIaSvv/++4WaN48dGEpCEERZKGFAj+FFFArD1KlTDwUEBGRMnDjxmJGRUQuAfuUY0GNAEIQJ\nKpREeQyEAIfDAZ16tmkLhcJQX19vsWnTpo86whhVQY8BQRBloTwGY2OQmJhAc1MTmJqZQaO27dIF\nFCafJ02alJScnBzREcaoirwhMTD5jCAIE5THAACAeYa2KBSGr7/+euXkyZOPmJubN1hbW9daW1vX\n2tjY1HSEcWzBUBKCIMpCeQwAAJhnaItCYXj27JlVS0uLUUNDg3ltba11bW2tdU1NjQ2byhcuXPi9\nk5PTo4EDB16VtU90dHSCp6dnga+vby6byX+YwFASgiDKQhcG9BjaolAYWlpajPbu3Tvvs88++xSg\ndTpOtrOsLViwYE9aWlqorO0pKSnhhYWFHgUFBZ47d+5cSs3kpiwYSkIQRFnooST0GNqiUBiWLVu2\nPSsry//XX399AwDAysrq2bJly7azqXzs2LGn7ezsqmRtP3z48JS33nrrRwCAESNGZFdXV9s+evTI\nia3xFIo8BgwlIQgiDXoMslEoDNnZ2SO2b9++zMLCoh4AwN7evpKat7m9lJWVObu6upZQyy4uLqWl\npaUuytaDPZ8RBFEW9Bhko7C5qqmpaZNEIjGmlp88edKF6s+gDqi5pClk9ZGIj4+Ppz4HBQUJ6MOB\n4yB6CIIoiyF6DAKBIEggEAS1tx6FwhAVFZX46quv/vX48eOuMTExGw4cODBj3bp1a9p7YAAAZ2fn\nspKSEldqubS01MXZ2bmMaV+6MNAhBDiYfEYQRFkMsVWS9Evz2rVr41SpR6EwzJ079+chQ4ZcOnHi\nxCsAAAcPHpzWr1+/G6ocTJopU6Yc3rp16/LZs2f/du7cuZG2trbVTk5Oj5Spo6kJTLlcEHO5IGba\njqEkBEGYwH4MslEoDHl5eT63bt3y6tq16+N+/frdUEYU5syZs08oFAaWl5c7urq6lqxduzaOyk9E\nRkbuCA8PT0lJSQn38PAotLS0fL5nz54Fyp6APG8B4J/kM3Z3RxCEjiF6DOpCpjA8ffq089SpUw/d\nu3fPzdfXN5cQwrl69epANze3e4cOHZrKppPbvn375ijaZ+vWrcuVNZqOvKaqAADGxiAxMoIWsRi4\nJibQ3J5jIQhiOKDHIBuZrZLWrFmzbujQoRcLCws9/vrrr1cPHjw47fbt232GDRt2gc/nr+9II+Wh\nyGMAwAQ0giAvgh6DbGR6DMePH5+Ql5fnQ2+BZGxsLFm/fj1fXk/mjoaNMFAJaHmeBYIgLxeG2CpJ\nXcj0GExNTZtMTExeCL2YmJg0m5mZ6cwIhPKaqlJgAhpBEGmwH4NsZHoMjY2NZpcvXx5MCOHQ+xYQ\nQjiNjY0685Ctq4NOijwBDCUhCCINegyykSkM3bp1e/j+++9vZtrWvXv3B5ozSTmUCSV1lE0Igug+\n6DHIRqYwqKP3XEfANvmMwoAgCB30GGSjcKwkXUdRc1UADCUhCPIi2CpJNnovDBhKQhBEWVpawIg+\nlSd6DG15KYQBPQYEQeg0NYGpqSk0UaMhoMfQFpk5hkuXLg2RNdIpAMDgwYMva8Yk5WDTXBU9BgRB\n6NATzwDoMUgjUxjef//9zfKE4dSpU+M0Y5Jy1NVBpx494L68fTD5jCAIHXp+AQA9BmlemlZJGEpC\nEIRCWhgsLKAeheEfFI6uCgBw9erVgTdv3vRuaGgwp9bNnz//J82ZxR5MPiMIoiwYSpKPQmGIj4+P\nFwqFgdevX+8fERGRnJqaGjZmzJgzuiIMbJurojAgCEKBoST5KGyVdODAgRnHjx+f0L179wd79uxZ\nkJub61tdXW3bEcaxAUNJCIIoiyyPgRDgyPvey4JCYbCwsKg3NjaWcLlc8dOnTzt37dr1MX06Tm2D\noSQEQZRF2mMwNgaJiQk04wtkKwqFYdiwYReqqqrslixZ8t3QoUMvDho0KGfUqFGZbCpPS0sL9fLy\nuuXp6VmwadOmj6S3l5eXO4aGhqb5+fldGTBgwLUffvjhbWVPgO3oqviDIwhCIS0MAJhnaAMhRGZp\naWnh3L17141avnPnTq8rV674yvsOVcRisTGPxyssKipyb2pqMvH19b1y48YNb/o+cXFx8R9//PEX\nhBB48uSJo729fUVzczNXuq5WM5mP068fuX7tGukvz5aYGLL+88/JGjZ2Y8GCxfBLUhKJCAsjKfR1\n3buT+2VlpIe2bVNnkffslFcUegzh4eEp1OdevXoV+fr65rIRnPPnzw/38PAodHd3LzYxMWmePXv2\nb4cOHZpK36d79+4PampqbAAAampqbBwcHCq4XK5YGWHDQfQQBFEW9BjkI1cYOBwOGTJkyKXz588P\nV7bisrIyZ1dX1xJq2cXFpbSsrMyZvs+SJUu+u379ev8ePXrc9/X1zd2yZcsKZY+DoSQEQZRFOvkM\ngC2T6Chsrnru3LmRP//889yePXvetbS0fA7QKhh5eXk+8r4nr9c0xYYNG2L8/PyuCASCIJFIxJs4\nceKx3NxcX2tr61rpfePj4+Opz0FBQYKgoCABACafEQRRHkP1GAQCQZA6OicrFIb09PRgQkibJlxs\nHvrOzs5l9NZLJSUlri4uLqX0fTIzM0fx+fz1AAA8Hk/Uq1evovz8/L5Dhw69KF0fXRgoCAEOhpIQ\nBFEWJmEwBI+B/tIMALB27do4VepRmGNYs2bNOnd392J6WbNmzTpF3xs6dOjFgoICz+LiYvempibT\n/fv3z5oyZcph+j5eXl63jh8/PgEA4NGjR075+fl9e/fufYet8Y2NYGZqCk3GxiCRtx+GkhAEocMU\nSjIEj0FdKPQYrl27NoC+LBaLuZcuXRqisGIuV7x169blISEhRyUSifGiRYt2e3t739yxY0ckAEBk\nZOSOmJiYDQsWLNjj6+ub29LSYvTvf//7X/b29pVsjWeTXwDAUBKCIG0xVI9BXcgUhg0bNsR88cUX\nn9TX11vQY/4mJibNS5cu3cmm8rCwsNSwsLBU+rrIyMgd1GdHR8fyI0eOTFbFcIDW/IKi4TAA0GNA\nEKQt6DHIR2YoKSYmZkNtba31hx9++J/a2lprqlRWVtpv3Ljx4440UhZs8gsA6DEgCNIW9Bjkw6rn\nM31spOrqatuDBw9O06xZ7GAbSsLkM4IgdAy1VZK6UCgMa9eujbO1ta2mlm1tbauZWghpA7YeA4aS\nEAShg/0Y5KNQGKSbqgIASCQSY82YoxxscwwYSkIQhA56DPJRKAxDhgy5tHr16v+KRCJeYWGhx6pV\nq74aMmTIpY4wThHKeAwoDAiCUKDHIB+FwpCYmBhlYmLSPGvWrP2zZ8/+zdzcvGHbtm3vdYRxilAm\nx4ChJARhT3JyRnhIyJq0oKB4QUjImrTk5IxwbdukTtBjkI/CfgxWVlbPNm3a9NHz588tqSExdAUM\nJSGI+klOzghfseLoFpFovQe1TiTi8wAAIiICUmR/U3/AVknyUegxZGZmjurXr98NLy+vWwAAubm5\nvsuWLduuedMUg8lnBFE/CQnp0XRRAAAQidZ7JCYei9KWTeoG+zHIR6EwrFy58uu0tLRQR0fHcgAA\nX1/fXKFQGKh50xSDPZ8RRP00NnLNmdY3NBgbzNs0egzyURhKAgBwc3O71+ZLSs6ZoCn0LfmcnJwR\nnpCQHt3YyDU3MxM3REcHJxiKa44YDmZm4gam9ebmkvqOtkVToMcgH4XC4Obmdu/s2bOjAQCamppM\nExISor29vW9q3jTF1NVBJ3t7UDi2ki6Ekl6GuC1iGERHByeIRHwe/V7l8WJEUVGhidq0S52gxyAf\nhaGkb7755t1t27a9V1ZW5uzs7FyWk5MzSN9aJelCKOlliNsihkFEREDKli0hK9zcYu+amMQ3h4TE\npm3ZEhptSC8w2CpJPgo9hi5dujz59ddf3+gIY5RFmbGSmpvBhBDgcDigcC4JTfAyxG0RwyEiIiAl\nMDAg4+efYW5yMkxSNLS9voH9GOSj0GMQiUS8yZMnH3F0dCzv0qXLk6lTpx66c+dO744wThFsm6ty\nOEBMTaFJm+GklyFuixgWVVVgRwhwKivBXtu2qBv0GOSjUBjeeOONX19//fX/PXjwoPv9+/d7zJw5\n8/c5c+bs6wjjFMHWYwDQfjgpOjo4gcfjF9LXtcZtJxpM3BYxLKqqwA4A4MkT6KJtW9QNegzyUSgM\n9fX1FvPmzdtrYmLSbGJi0jx37tyfGxoaGMMiHQ3bHAOA9hPQVNy2Z8/YYoB4CAmJPWpocVvEsKiq\nAjs7O6h6/Bi6atsWdSPLY0BhaEWhMISFhaV+8cUXnxQXF7sXFxe7b9q06aOwsLDUyspK+8rKSrku\nZlpaWqiXl9ctT0/Pgk2bNn3EtI9AIAgaNGhQzoABA67R5yplgz55DACt4vDKK5+fBIiHX375/E0U\nBUSXqaoCu759Id8QPQZ5wkAIvDBw6MuGwuTz/v37Z3E4HLJz586lTOtl5RskEonx8uXLtx4/fnyC\ns7Nz2bBhwy5MmTLlML2pa3V1te1777237ejRoyEuLi6l5eXljsoYzzbHAKA7fRno7rmDA1Ro2x4E\nkUVVFdhNnAjHDE0YxGLgEgIcLhfa9McyNgYJlwvipiYwlRaNlw2FwlBcXOyuSsXnz58f7uHhUeju\n7l4MADB79uzfDh06NJUuDL/++usb06dP/8PFxaUUoHWqT2WOoU+hJIrqarAFaBUGLy+4pW17EIQJ\n6s3ZzQ3uGZowUN4CUwtFKgGNwiCD8+fPD3d1dS3p3r37AwCAH3/88a0//vhjuru7e3F8fHy8vb29\n3I5lZWVlzq6uriXUsouLS2l2dvYI+j4FBQWezc3NJuPGjTtVW1trvWLFii3z5s3by1QffXKgoKAg\nQVBQkEDfQkkArcLg6golhvZnQwwLKr/QpQs8uX0b+mjbHnXClHimoBLQdnZQ1dF2qQOBQBAkEAiC\n2luPTGGIjIzcceLEiVcAADIyMgI+/vjjjVu3bl2ek5MzaOnSpTsPHDgwQ17FHA5HYX+B5uZmk8uX\nLw8+ceLEK3V1dZ38/f2zRo4cec7T07NAel+mWeOUDSXpisfg6QkFKAyILkMJQ9eu8PjMGRijbXvU\nCVN+gULfm6xSL83U8tq1a+NUqUemMLS0tBhRXsH+/ftnRUZG7pg+ffof06dP/8PX1zdXUcXOzs5l\nJSUlrtRySUmJKxUyonB1dS1xdHQst7CwqLewsKgPCAjIyM3N9WUSBmkIAU59PVhYWACrfgC64jFU\nVYFdcDCkozAgugzdYzC0e1WeMGCT1VZktkqSSCTGzc3NJgAAx48fnzBu3LhT1DaxWKwwNzF06NCL\nBQUFnsXFxe5NTU2m+/fvnzVlypTD9H2mTp166MyZM2MkEolxXV1dp+zs7BH9+vW7wcbw+nqwMDOD\nRiMjaGHJUkjbAAAgAElEQVSzvy4kn1tawKimBmw8PKDQ0P5siGFhyMIgL5Sk7x6DupD5gJ8zZ86+\nwMBAoaOjY3mnTp3qxo4dexqgNS9ga2tbrbBiLle8devW5SEhIUclEonxokWLdnt7e9/csWNHJEBr\nqMrLy+tWaGhomo+PT56RkVHLkiVLvmMrDMrkFwB0I5RUWwvWVlbwrFs3eHj5MgzWpi0IIg9DFgb0\nGBQjUxj4fP768ePHn3z48GG34ODgdCMjoxYAAEIIJzExkdXAb2FhYalhYWGp9HWRkZE76MsffPDB\nlx988MGXyhquTH4BQDdCSVVVYGdrC9WG+GdDDAtKGBwdobyiAhxaWsCIrXeu66DHoBi5ISF/f/8s\n6XV9+vS5rTlz2KNMU1UA3QglVVeDLQoDog9QwmBiAs02NlBTWQn2jo6gVHNyXQU9BsUo7Pmsq+hj\nKAmFAdEXKGEAADC0+9WQWyWpC70WBn0LJVVXgy0Vty0vB0fseo/oKoYsDGz6MXS0TbqGXguDvnkM\nVI7B3BwaTE2hqaYGbLRpD4LIgi4MXbvCY0MSBvQYFKO3wqBsjkFXPAZbW6gGMLy3MMSwkPYYDGmE\nVfQYFKO3wqCKx6ALwmCo7jliWBhyKAk9BsXotTAok2NgE0pKTs4IDwlZkxYUFC8ICVmTlpycEd5+\nS/+BCiUBGN6fDTEsDF0Y0GOQj8IezLqKKqEkeT94cnJG+IoVR7eIROs9qHUiEZ8H0DqPQvusbQVD\nSYi+IJ1jyMoCf23bpC4aGsAcPQb56LXHoM5QUkJCejRdFAAARKL1HomJx1h15mODOoVB094N8vLS\n0ADmLS1gRI1DZmg5BuzHoBi99RjU3SqpsZHLOF1pQ4Ox2m4Saff84UPopko9HeHdIC8vVVVgZ28P\nldR8BYbm3WLPZ8Xorcfw/DlYqrMfg5mZmPFGMTeXsBq9lQ3q8hg6wrtRFfRk9J/KSrCnz0dgaMKA\nHoNi0GP4f6KjgxNEIr6HSLSeR63j8WJEUVGhie21lUJdwtAR3o0qoCdjGNA9WwAAQxsvSV7yGT2G\nVvTWY1BWGBR5DBERASnz54f80LlzbLWjY3y5n19szpYtodHqfKCpq7lqR3g3qqDLngzCHmlhMDWF\nJisreEZNS6vvyEs+o8fQil57DMo2V1XUj6GoKIAXFxfwWVER9OLxQBQRAWoTheZmMKmvBwsrK3gG\n0D5h+H/vhkd/CKvbu1EFXfVkEOWQFgaAfxLQ9vYgd0pffQD7MShGb4VBldFV5SefwezQIZj6+ecQ\n++uv8EZpKbiox9JWnj6Fzp07w1N1JPQoL2bBgtg9T54Ydx0zRnL6449DN2o7XKOrngyiHLKE4ckT\n6OLlBbe0ZZe6MNSez8nJGeEJCenRjY1cczMzcUN0dHCCqnXprTCoO5SUng7BAwbANRcXKHVxgdKc\nHBikHktboecXAAAsLeE5IcBRNolOERERkOLsHHCfwwH48EP4Up3ejaroqieDKIc8YdCWTerEED0G\nefk9VdBojiEtLS3Uy8vrlqenZ8GmTZs+krXfhQsXhnG5XPGff/75Gtu61d2PYf9+mDVrFuwHAHB2\nhjJ1ewzSfzYOB0h7/2z37oFbcDCk5+dDX/VY2T4iIgJStmwJWWFuHltvYRFfP2iQ+vM0iOZhEgZD\nGkjPEHs+y8rvqVqfxjwGiURivHz58q3Hjx+f4OzsXDZs2LALU6ZMOezt7X1Ter+PPvpoU2hoaBoh\nhPUw1Mq+acsLJdXXg0VSEkzavBneBwBwcYFSdQuDtMcA8M9bmLs7FCtb37NnYNXQAOajR8PZixdh\nqNoMbSfjxgUIOJwAiIqCRAsLqG+PJ8PkGqPIaJ6qKrAbPBgu09cZUic3RT2f9VEYZOX3VEVjwnD+\n/PnhHh4ehe7u7sUAALNnz/7t0KFDU6WFITExMWrGjBkHLly4MEyZ+tUZSkpJgfChQ+GikxM8Amj1\nGO7fhx7qbJ4nTxhUqe/uXejp5gb3+vaF/F9+gTfVYaM6yM+Hvh4eUDh4MFz+7TeYrWo92PRVe8gK\nJd25A721ZZM6URRKqq8HC0KAQ+UD9QFZ+T1V0ZgwlJWVObu6upZQyy4uLqXZ2dkjpPc5dOjQ1JMn\nT46/cOHCMA6HI/OHiI+Pj6c+BwUFCerqgtTWj4EeRgIAMDeHBhsbqHnyBLpQYtFe6E1VKdorDD17\nwt2+fSFfV0JJAAA3b4K3lxfc8vODK598Al+oWo/spq+xUSgMmkWWMGRnwwhZ39En5CWfjY1BwuWC\nuKkJTGWJhy7yT35vogeAAAAA7OxOVFVVgZ0q9WlMGOQ95ClWrlz59caNGz/mcDiEEMKRF0qiCwOA\nemZwS07OCP/qq/RVAgF3XHm52KFHj+Ay6qFDhZPUJQz0kVUp1OExdO8ODxoawLyyEux1oSnhrVvg\n5e0NNz08oPDRI3CiWmMpWw82fdUeL0OOQd5Dv1MnqKurg076JAzUc+vdd499Y2Zm3MTjSQqjotYn\nTpoUmKxKfRoTBmdn57KSkhJXarmkpMTVxcWllL7PpUuXhsyePfs3AIDy8nLH1NTUMBMTk+YpU6Yc\nlld3SwsYyVN9JqSTz9KhilOnYPy9e3w3gNaLTAnDkCFwie0x5KGJUFLPnnCXwwFCeQ3+/pClDlvb\nw82b4D19OvxhbAySAQPgWl4e+IwdC6eVrQebvmoPef0YtGWTOpGXfAb4J5wkfQ10nYiIgBRv74Bb\nK1bAlvDw9rVS1FirpKFDh14sKCjwLC4udm9qajLdv3//LOkH/p07d3oXFRX1Kioq6jVjxowD33zz\nzbuKRAGgNVlsbg4NysT/pUNJinrpurhAaVkZOLOtXxHqDiXduwduPXvCXQAAXQonUaEkAAA/P7iS\nmwu+qtQTHR2cwOPxC+nrWpu+TsSmrxrG0Juryks+A/zjMXSkTepCJAIejwei9tajMY+By+WKt27d\nujwkJOSoRCIxXrRo0W5vb++bO3bsiAQAiIyM3KFq3comngFeDCUpClWou2WSJkJJuiYMYjFwRSLg\n9e0L+QAAvr6Qe/kyDFalroiIgJTmZuC+9lrsX506GdcPGCC5Ghsb+jnmFzSL9JDbFI6OUF5eDo76\nlpRlQlEoSV9bJonFwC0pAVdVWjlKo9EObmFhYalhYWGp9HWyBGHPnj0L2NarSqcwaY9BUajCxQVK\nT5yAV5Q5hjw0FUoCaBWG9rQAUhdFRdCre3d4QD1U/Pzgyp49wPp3lcbDI+BOnz4BBYMHw+WwMEjV\nhU58hg7lLUg//M3MoLFTJ6hj8nz1DUVhaH3t5HbvHrh16wYP1ZEb0ctB9FTxGKRzDNHRwQmOjvwn\n9H3ooQp1ewyyhEGVuG1TE5g+eQJdevSA+wC64zHQw0gAAAMHwtUbN6CfWKzaC8i1azCgf3+47uEB\nhYWFoHJnHYQ9TGEkCkNJQLNJPuujx3DnDvRWRxgJQE+HxFBFGIyNQdLSAkYSCRgbG4OkNVEDN6uq\nYh86OBhXmptL6qOiQhOlWyWpy2Z15hhKS8Gle3d4wOWCGADA0xMK7tyB3tS5qctmZbl5E7y9veHv\nfirW1lDbvTs8uH0b+vTrBzeUre/6deg/YABc4/FAlJ4Oweq1FmFCnjBQLzJ9+sDtjrZLXRACHHlN\nUZOTM8KvXUvvHx3NTejeXXxfnzpVqiu/AKDHwqBsKInDAUKFkywsoJ4Q4Ny5E8ATCAKCPDygUHp/\nalgMdcVUmXIMnTvD08ZGMJN2bRX1+KWaqlLLnTpBXdeu8Li4GNzVdWOowq1b4DV6NJylr6MS0KoK\nw+zZ8JuzM5Shx9AxyGv2bAgJ6KYmMOVyQczUcIVqqVhRsd6xogIcr16FgfrUqVIkAl7v3nBHHXXp\nZShJ2ZFVKegJ6Hv3wE0sBq6sB6mVFTwzNYUmVTuISMMUSuJwgDg6Qjn9z0bdnOnp60KEwvjA9PR1\nIStWHN1CnwmNnl+g6NsX8m/dAi912Koq0qEkgNYEtKotkzCU1PEo8hj0XRjkhZH0fT4RdXoMeikM\nqoSSANrmGc6cgTFjxsAZed6AusJJDQ1gDtCa1JLeJv1nY3Nz0puqUnh5wS1N5xnkTdtJCHCkQ0kA\nrcJw5Qr4KXushgYwLykBV09PKOjaFR43NoKZoUwUo8sYeo5BXuJZ3ztVYiipHcJAtUyihEHe/pQw\n+PhAnqq2AjCHkSikhYHNzXn3LvQcORLO0bf37Qv5eXng0x475aFo7KKHD6GbqSk0OThABf17qvZl\nuHULvHg8EJmaQhMAAI8HIpEIeOrqcIgwo8hjKC4G9w42Sa3I8xj0uVMlIcB56T0GVecwoIeSlBEG\nVe2kYAojUUgLA5ubU1YoSZMegyJPhslbAABwdYWShgYwV7b11fXr0L9/f7hOLWM4qWN4GUJJsjwG\nfe5UWV4Ojqam0CTrOaMseikM7fUYqqrArrgY3H19IVfe/toQhujo4ARzc36bG1f65tSGMCjyZGQJ\nA4cDRJU8w7VrMGDAALhGLXt4QKFIBCpPPKIN5IXedBVDFwZ5vZ6p+URCQmLTrK3ja4cPj83Wl/lE\n1Jl4BngJQ0mNjWCWmQmjhg+H8yYm0CxvfxcXKM3MhFGqW9qKvE5B0n+2YcMCLhoZgWTChNhjp04Z\njw8IkAjffz90M3VztrSAUUkJuNJbJQG0tqKqrQXrmhqwsbGBmvbaLI0iT+bWLfCSNe2jnx9cuXIF\n/CZOhGNsj3f9OvR/+234gVrm8UCUlQX+SpqtNfR12HBDzzEo6sMQERGQEhERkPLhh/AfGxuoYepU\nqYvzhKgzjASgpx5De0NJZ8/CaEVhJAD1jZekTI7h8GGYMmlSQPKxY58HjxsXf2r16s+/ot90jx6B\nk40N1Egnso2MoMXTEwo05TVERwcnWFjw24gx3ZOR5TEAqNYySd9DSfrawuVl8BjYDL4ZGAhCoRAC\npdezaTWoDVAYoP2hJDb5BQDthJIOHoRp06bBQQAAf3/Ikn5LZmqRRKHJcNKYMQFnAUJgwoTYY76+\n8bmWlrHPvv76HzdbnjAom4B+/hwsHzyA7vQbnUo+M+2viyEbfW3hwkYYCAHWMy3qGoo8BooxY+BM\ndjaMkJ7DRVcFX93C8FKFkkxNoammBmwuX4bB0q16mFCnMLB5C6utBeuMDAigZmTz94es//wHPqTv\nz5RfoPDyglua6suQlgah48YFCJKTAyIIAc6AAXDNyqr1N3j6FDpXV4OtqyuUMH337t0Mt+vX0/sF\nBHAzLCzEdYpc75s3wbtPH7hN9ewGaP0tKivBXtpb1NWQjb62cJEnDGZm0GhuDg1Pn0JndSU5OxpF\nQ25T2NpCdZ8+cPvCBRhG77Spq4IvEgFv4UL4Xl31vXQeQ2YmjOrTB25bW0Otov07d4anEgkY19SA\njWqWtsI2lJSWBqGjRkEmNbHNyJFw7uJFGEofa0ieMGjSYzh0CKZOmQKHAVoTysuWwfZt2+A9gNbp\nPPv2hXxZvUk/+ODol4SsMzp9On4sG9dbOowE0Boq69ULiqSnl2T7BtfRXkV0dHCCgwO/TdNdTbdw\nUcc5yhMGAP3PMygacpsOUzhJVwVfneMkAeihx5CcnBF+7Fj6hNxcru/eveK5yiR+zMyg8eRJGM8m\njATQ+gCk8gztSehWV4OtpycUMG2jC8Nff8Grr74Kf1Hb7OygytkZyq5dgwF+fnAFoFUYZI1Vw0YY\nVEmcNTeDSVoahH75JXxArZs3D/bGxsLnZWXgzNTjmUKVKTqlWyRRUOGkgQPhKrWOzRucNryKiIiA\nFGdnKHFzi73b0mJsfPu2xHPz5tBVmjqeOs5R1pDb9GOUl6c7zprF3d+li/ixLiRdlYVtKAmgVRi2\nbYP3YmJgA7UuOjo44fp1fv+ysvV/RxJaBT9UJcFXRyK7rg46VVWBHTWopjrQK2Ggbv4nT9Z3ffIE\nul6/Dv2VuflNTaHpwgUYtno1/JftMalwkqz4ORvkhZLs7aGythasnz8Hy9RUCNu8Gd6nb6fyDHRh\nkNW6p08fuF1YCB4tLWAkbywY6YfHhQvXhmVl3feXdXMKhRDo6QkF9BvPxgZq5syBfTt2QGRTE5jK\nuj6quN7Xr0P/d96Bb6XXMyWg2bzBaWP+6OfPwfLOnQCPsrIAZxsbqJk4EY49egTdNXEsAPWco6wh\ntwH+uXeePl3fOScHBrXWr/2QnbIoM/Pj2LFwet482NvcDCZUC8aIiICUgQMhr1On2Lpu3YwfZWZK\n/D//PJSvyjVQRszlCcidO9Db3R2KlZm4TCGEEJ0vrWYSCA7mpwEQIl1CQtakKqojKUkY3r07vwwg\njgQE8AVJScJwNseeP5/8+P33ZEF77J8wgRxLTycTZW3v0oU8/uEH8pa/P8mU3rZzJ1kybx75iVoe\nOJDk5eQQP1nnaGbGrx8xIu5ccDA/Tfocma+fkFhYRD6nr+PxYgro342KIgnr15MY6eNt3y58x9SU\n32BvH1fh68u/wnRNVfnN3NzI3cJCwpNev3Uree+dd8g30udsbx9T0db+TwrptgQGxgmYbAgMjBNo\n6p5NTibhAQFESC1nZ5Phzs6ktK6OWGjieOo4x+vXST8vL3KTaVt7/nu6VL79lkQuWUJ2st3f15dc\nycoiI6nlujpiYW9PKu7dI66EEJg6lRzcu5fMVcUWttc0KUkYzuPFFMj6jx48SKZGRJAkpmNQz05l\ni8ZzDGlpaaFeXl63PD09CzZt2vSR9PZffvnlTV9f31wfH5+80aNHn83Ly5M5rIOqiR9KmR88WNcD\nIB4yMtYFsm1ixpSAVjaWKy/HANAaTtq5E5bSw0gU0i2T7t0DN+k+DPRzbGxcZ56dHT+CKZbPfP3S\nob7+2zaTktBj9IQAh55foB9v8+aj7zc1rTOrrIy3z81d58t0TZXtTVpTAzYVFeDQqxcUSW/j8UAk\n7TFERASk2NqGVHp7x960sIivDwmJTZPulKSNuPDRoxASEgJHqeXhw+G8q2vGPT+/NTmayHOo4xzl\n5Rd0NemqLGyTzxTSeYZDh2Dq0KFwkWpoMWkSJB05ApNVs4XdNVWUR1N3iyQA0KzHIBaLjXk8XmFR\nUZF7U1OTia+v75UbN2540/fJzMz0r66u7kwIgdTU1NARI0ack6V6qr61tOdtZ/t28u7SpWQHW/Vm\nKjweKbx9m3gybUtKEobb2fErAeLImDH8DOl6JBJi1LkzqX78mHSpriadraxIbUsL4ahyjsz7xL3w\nHfqbZk4O8evdm4ikj6nMNU1KEoaHhKxJ7ds37lbXrmseyrtWWVlk5JAh5CLTtoIC4uHuToro6+7e\nJW6OjuRJYyMxtbYmNRUVxJ7p+C/+Zm29CnWXvn3JrYsXyRC6Da6uMXeVuW+UKUlJwnArq5gaNueY\nlCQMDw7mpwUGxgnonuWRI2RSeDhJVvd/SJfKpk3kXx98QP7Ddv8//iCvhYaSv88xJISk/formUMt\n379PutvakqrGRmKqrC1sr6kib3DZMrJtyxYSzXQM6tmpbNHoj5CZmekfEhKSRi1/8cUXH3/xxRcf\ny9q/srLSztnZuVTWyTH/uRT/wdvjZh8+TCbT/yyq/EEcHEj5kyfEUXo9W5GZOJGkHz5MJufmEp/+\n/ck1Vc8xKUkY3qVLzCP6dguL15/LO5+1a8mnq1aR/6rjmlZUEHtra1JTW0usZO2zaxdZNH8++ZFp\nW1MTMTEzIw30P2FCAol6+22yhxAC48eTE8nJhPFe2LZN+K6FxZrn7u5xRe7ua+7IumekH5pxcdvi\nmB6i8kpxMenZpQt5LJEQo/bcN8qUsjLSw9JSWDt+/Jrjbm5xd3m8NTJFQdY999NPZN6bb5KfZV0X\n6e/17v2JSJPiqony2Wckls8n69ju/+QJcbSxIU+bmwm3tJQ429mRSulw4LBh5PyJE2S8srYkJQnD\ne/WKESl6nim6d0JDSeqRI2QS0zFUFQaNJp/LysqcXV1d/27b7uLiUpqdnT1C1v67d+9eFB4ezpjE\niY+PjwcAcHO7X1JbO9/a17d3nvSsa7Joj5stHUpS1qUmBDjV1WBLNUGlwzZhSA8nyWqqyuYcw8MD\nUi0soH7o0NgLlpbGdebmkvqRIwPP/fwzfy7dDi43ptnLy+VmSMiatMxM7mhvb/HN5OTg8PaGZ+zt\noXLUKMhMToaIWbNgP9M+1KxtTNtMTKDZ2RnKiovBnWqZdfAgTIuOhgSA1ut07hyMDA9/cRgDI6MA\n8vrrAb8vWgS7V62Cr2QNddA2GZgBJ0/+Ol4s/taE2odNwjU9HYInToRj9GSgpkMx27fDsrffDvhx\n69aA5UlJMCkhAaKZzlHePRcWFpAma5Ie6nwTE2OjGhqMLW7ckHhPnBiark+JZ4DW5LOsVldMODpC\nuasrlOTkwKATJ+CVmTPhd+nvT54MR44cgcnjx8NJZWyJiAhIOXIEJh88GDvN0tK4TiyWGDONzaSo\nJRQ9lCQQCIIEAkGQMnYwokl1PnDgwPTFixd/Ry3v3bt37vLlyxOZ9j158uQ4b2/vG5WVlXbyVI/P\nJ+s+/ZSsVVaZVQ0lPH5Mutjbkwq26i1damqItaUleca0je1bd0oKCQsKIqcSE8nyd98l29meo5vb\nJ8X0czx6lAQPHEjypMNCVKgnMDBOEBKyJjUkZFsylxvTLM+TUfWa7tpFFs2YQX5nsj84mJ9mZxdX\nOWgQ/5KseoKDyVHKK6ioIPY2NuTp8+ekEyGtoZAJE8gxpu+98Qb5ZdcusqihgZhZWZHaqipi+2Ld\n0r8tnzHMpugtf/p0cuDHH8l8+XWzq4tNqasjFl26kMf5+aQPdc927kyq6R4Lm3suLo7Es/1vXbpE\nBvfoQco0lUzXVHn/ffLlv/9NPlTmOxERwiN9+vDzLSzi6oYP55+Tvjdzcogfj0cKmUK88kpLC+F4\neZGbAgEJPHuWjBo8mFySte+CBcLdbm5rikePjjvD5a5p2rNHOJ8QAmIxMTYzIw319cSc6Xv0Z6cy\nRaM/QlZW1kh6KGnDhg2fbNy48SPp/XJzc314PF5hQUGBh6KTmzqVHPz9dzJDWVukH35sXeCWFsIx\nMyMN1B/g66+FUcbGMWK2D8R794iriwspYdrG9mFRWUnsrKxI7cqV5KuNG8kL14/pHHv3XlM4fryw\nzUMyNJSk7t5NFio6Z2VaSyh7TSnX/NkzYkmvh23eZtkysi0hgUQRQuCnn8i8adPIX9J1i8XEWPp7\nrq7kHvXgnDCBHDt0iEyR3ufFh2ac3PwLU2luJlw7O1L54AHpJn2tpM/RxeWTe+oIxezcSZZMmkSO\n0Nd5eJCCa9dIf2V+2+hosuWrr8hKtsedOpUc/PprsqK99ndkWb6cJFL3D5uSlCQMd3KKeSDv3mxp\nIRwXF1Jy4wbxVsaW48fJK/37k2stLYTT0EDMOnUiz2WFWadMIYd++43MIoTA6tVk88qV5CtCCBQV\nEXdZzxdCdFQYmpubub179xYVFRW5NzY2mjIln+/evevG4/EKs7KyRso0knZyPB4pvHmTeHXkzdS7\nNxEVFBAPQlofru+8I9wWErIm1dk5rrRPnzW35P258/LIwAEDyFVZNx3bt24vL3LT05Pc3rePzGZj\n89OnxKZrV/IoL48MJITAjRvE28mJPJT1ZkEvmm7eOXEiSaeLuzJv05s3k9XR0WQLIQRee4388cMP\n5C36dg8PUnD1KhlAX1dcTHp27UoeUW9069YRPlPeRB0ew9mzZJSvL7ki6/emhLR//zVXvb2F15je\nMmUlh2XtY2nJr123TvgJffvcuWTvrl1kEdP3OneOqWK65+bNIz9JX095JSeH+NnZCSsmTOAfUyYH\nI6uwOe/2lsWLyXc7dpClbPdne2++8w75ZtMm8i9lzufVV8mf27eTd6nlUaPI2ZMnyThpG1paCMfB\ngZSXlBAXQghQuY7ycuJw/Dh5JTCQCGTZr5PCQAiBlJSUsD59+uTzeLzCDRs2fEIIgW+//Tby22+/\njSSEwKJFi3bZ29tX+Pn55fj5+eUMGzbsvKyTe/aMWFpYkLrmZsLVtN30EhBAhKdOkSChkAS4u5Mi\nKvl54ACZLqsVB1WEQhIwZgw5LWs7m7fupCRheI8e/FKAOMLkysoqX31FVg4bJswODuande8ed793\nbz6r8JmmE6U7dpCls2aR36hlZYTo0CEyJTycJNfVEQsbG/K0vJw40LfPm0d++u47spi+bu9eMnf6\ndHKAWj57lozy8yM50nUfPiyMMDamh9CEhMuNbFImXPbpp2Ttv/5FNim6BmIxMR40iFyWFno23hOb\nfbZuJe8tWkR2MR3b2VlY4u+/5qyfX1yOhcWa5wcPCicTQmDSJHKEyZOSd+9aWsbUsvH02NSlbGs/\nVYqy4sf23oyLE8bZ2vIr6Y0W5J3PvXvE1c6OVNbUEGuqjg8+IP9Zt47wpW24eZN49exJiunrFi8m\n38XFkfgdO8jShQvJbln266wwqKNQJ3f+PBnG9IfWdHnjDfLLTz+ReaNGkbP02DG9xYKs7x46RKZI\nu/nKlPb8Yf76SzhVUa6A/THV17yTioFT4blXXuEfYytE166R/n37kluHD5PJQUHklPT2bdvIMuk/\nytKlZAc95NHYSEytrEitdNNWoZAE9OwpLKILdVzctriQkDWpvr5xV2xt11Qqas1kbR1XM3Qo/zyb\na5WRQca6uZG7VI6EkPY0O267z6VLZDBTC7bbt4ln9+7kPpV/GD+enKDCi6NHkzMZGWQs299RnS8Q\nHdUcduZM8j8qJKMuu5KShOG9e8cU0rcrau3H55N1771HttKP9eef5FWmF81du8iiN94gv9DX5eeT\nPtbWwmpXV/7dXr3i7sjysF4KYdi9myycO5fs7chjJyUJw93d+Xc6d46rtrTk1x4+LGzTLGzgQJKX\nnU2Gy/r+jz+S+fSey8qW9vxh2ttTXJWcDNvi4yO84uvLzwkMjBPY2CyqsrBYJdX7mlmI6uqIhZkZ\naavf52QAABhHSURBVHjrLfIDU3z78mUyqF8/cp2+ztub3Lh0iQxue23I0b/+ItPo65YsITulwwFU\nqa0lVp06kecNDcSM6VqpKt5jxgiFPB6/gHrTdHdfeUfRGyqbt9imJmJiaUmeVVeTzvTjffUVWbl4\nMfm7Qcjp02QM5QX360euS4fh5BV1hhzbU5cyIagpU8gh6d9dUd2KXpKU6R/Uv//SvAkT+OkmJnFN\no0fzz9DrefCAdLOzI5XSjQbefpvsoYecKLvYeGuqCoNejZV07RoMoA+gpmmo5ovFxet7UetWreJ/\nZWQELVSTsnHj4NSpUzBu+HA4z1SHol7PimhPM8f2fJeayUqxhcqTnJwR/uDB0R5Pnqz/e5ROJ6dF\nD7y937tpbd3lmbxmyCdPZowDSCd793LnFRWJe3l4BBfQ9xs4EK7euwdu1BwY5eXgWFYGztLTuAYF\ngUAggCBq7ouGBjD/4w+YfuUK+DHZbGUFz/r2hfxLl2DIqFGQSd+m6jhFyckZ4SUlR3vevbu+p0hE\n9eieRZj2pTcDZtNU2MQEmgcPhsvnz8Nw+thayckQ8d57sI1aHjMGzvTpA7d/+AHeVjSyqjTtaQZO\nH/vHxETcdO1aVT9V6lJ28EBlez5LN9NlujeZ/2fiF1dBBty+zel7/fq6gQAAZ8/C6BUr+Fuo43Tr\nBg/t7KDq1i3w6tcPblDfOnsWRq9aBV/Ra0pISI9+/ny9FX2dWsf/UkVNOrrA/6vehAnkmKwOTJoo\nbN64//yTvErvGSld4uNJXGws+UyTNmjiu9q+rkyF7Zt5YCARHD1Kggkh8NdfZFpICEmTrisri4z0\n8SG51PIff5DXxo0jJ+Udf/lykvif/5APpNer+rbLfuyqtm+obDt6/utfZNNnn5FYavnpU2JjZUVq\npVu+fPmlcLWZGb+ew4lreeUV/jG23iHT79Gz5ydFqoQqTU0X1jk5rXqg6Jzaey8FBhIBU4JX/ffz\ni7+jufnr9YpsnTuX7KXnyB4+JE6dO5Nq6ZZ2bO856tmpbEGPQQ5s3rgDA0H41lvwI30ERjrV1WDL\nNLYRW6KjgxNEIj6P/kbEdpjf9nxXk6jqybB9Mx85Es5lZYF/cDCknz4NY8eOhdPSdQ0ZApeKiqBX\nRQU4ODhAxS+/wJtvvgm/yDv+6NFwdv9+mPXBB/Alfb2qb87M1yEAevf+ReTiEltWV2dsee6cZMQH\nH4T+m35+EREBKT17QrGFRWx99+7GD2V5WCNHwrnvvoMl1PKxYzBx9Gg4a2UFz6h1yckZ4d98c/Td\nxsb15gAAJ07AhOJivjt1HHn2S79Nl5RIXBwcQivDwwNS5X2P6Xdsatpt4ey85LqfX+yVR4+Mu+Xn\nS/p++WXoakU2KHsvKTPsNluY/2dporlzffaeOxc7kvI07t/v4Xz1KgyUZ+uoUZCZmQmjFi+GXQAA\nmZkwyt8fsoyNQUL/jqbH/9IbYSgvB8f6erBwcYHSjjomm4tvbw+VvXvDnUuXYAjTrHBVVWDn4wN5\nqtrAxpXVxHc1iXofpC8+BPz9Ievbb+EdAIDTp2EsfR4JChMTaB49Gs4KhRA4bhycOn4cJuzeDYvk\nHX/UKMiMjoYEQoBDH5o6Ojo4IS+P7/Pw4fq/h9VmI8CyroOLS9eytLTPwwAAPvsMPr1wAUa88w7s\npLZfuwYDCgoC+opEATx5c5+PGAHZixbBbsrepCSYNGkSJNH3ae9w3fSQY1MTmPbrl3Gtf/8117p2\n5T6RNb+ArN/R2tr5eVpafBgAQFgYpJaWgpui4z94IO7GtF7WvaTMsNtsYfs/CwlZk8YkDHRbR42C\nzC1bYAW1LGsaYo2/9KnTpdJUAQBy6hQJGj2anOnI47JtnbNyJflqwwbyCVMdU6eSg3/+SV7V9jXU\npaJqqye2YYOHD4kT1RTQ0pI8k9V3Y+NG8lFUFEnYuZMsYeqNzVRcXEgJ1aeFXoKChCe9vdfcUCZZ\nz+Y6VFQQezs7Ukm1YSeEwOuvk/1se++6uZG7+fmkj0RCjLp2JY/u3CG96NvVmUBmO1BgcDD/qKLf\nMSeH+HXrRh5Ih73oieb+/flXbWy2VfXsGVPE9l7y9iY3mDr+6cp9LxYTYxsb8pQaW23ECHLu1CkS\nJKs+RQ1EwNBDSVevwkBZY+hoCrZvAkFBINi+HZZ98gl8IV2HvEl6XlZU9WTYviU5OcEjW1uo/vFH\neMvPD67IekM0Mclo3LMnfYGxMVfSq5f4jvR4UEyMHg1nz56F0R4e8PdQ4g0NYH7lSsCgGzcC+nXv\nDg/YXAMAdtfB3h4qFyyAPZs3w/tffQWrrl2DAUIhBH7/PSxkcwxqnK3qarDt0gWeSA9nrs6QREJC\nenRJyfo2b/lM3oeTU/ADc3N+fUPD+r89Penf0c8PrvTpk3HLzy89x8WFW2ZmJm7w9++R9fPPZW3G\n9XJz4997+23nH86dix1ZX2/c6cIFydClS0N3yPodlU0+qxM2v7exMUhGjIDsc+dg5PjxcPLqVRgo\nq2GLJhuIdLhqqlIAgCxdSnZs3Ure07YtTKWykthZW5MapqF3fX3JFVkT62BRvrDtENitG/++uXlc\nvbs7n3Ek1f9/eytU9HYrXRISSJT0RC9//UWmMfWpUFcpLSXOlpbC2qAg/skuXeIee3ry85Xp5PjO\nO+Sb2FjyGVPHO3X2WWHjfZw5Q0Y7OZGHe/YI58v7HZOShOFubjHF9HoU9Q0gpLXzZFgYSZFlY48e\npIzufeliiYsj8Z98QjYIBCRw+HCS3Z66QEWPQesXge3J+fuTTIGABGrbFlll0CBy+exZMopaplxe\nM7O4hoAAvlDfhifW18K25ZKqLaMuXiRDpDuOzZlDfpVuZ67uc7K2jnmqrIgR0triyMqKX2NlFVc7\nbBg/W5ZIqqPPiqxr6ua2uCg4mJ82enTcGXNzfv2nnwrjVKsrjrFvAF14GhqIWY8epOzyZTKIqV4H\nB1L++DHpou37VF45epQEBwYSwbp1hL96NdncnroMXhisrUmN9PAHulSmTRP+6eHBvx0YGCcYNGjR\nxW7dVt1X5Y+MpX1FXZOfyCrNzYRrbU1qKiuJHSEEnj8nnTp3JtWPHpGu2j4n6cLUI1eT9yGTKDs6\nLnhsbLxK6d73zL8Pu7GrNm8mq2fOJP9jqtfSkjyjD0Ohi2X/fuFMIyO+2M4urtLXl5/Tnt/L4IWh\ne3dyX9t2yCqtoYuY+8rewFjUX9g+8NvTx4M+IdCBA2T6K6+Q47pwTtJFG/1YpL2PQYOWXVLFBlX7\neBDS2kvdxkZYPWYMP0O6NzSXS5pVmW2to4q6x4xSVRj0Jvnckf0XlCUhIT2a3lRRVitgfZsfVx9h\nm0xtT3M/qq15eDik7N8Ps2RNOqQuNN28V51IJ0SDguIFqtjAtm8AU6MFoTAjwNj4qOTMmfVjqXUi\nEZ/X0gJGEkmAMVN/I12hvc2H1YXeCENHt0hShhf/gEzd4TU7+TzSCtsHfnv6eIweDWc3bYKPnj8H\ny6NHIWT7dlim/jP5B1VFTNOdoNigqg3t+X0SEtKjq6rW29PXiUQhHm+/ve0HDuckCQ0VpzL1r9AF\ntCHmjGjbdWLrDu3ZQ97Wth2yyotur5AAxBBFLi8WzRRNDwBYVUVsraxI7c8/kzeZhtvQlXPS9Ci5\nbO3uaBteDL0x/R91M+en7vAfGHqO4cIFMlTbdsgqTDd/t24L7g8evOyiph5OWLT7e1tZ8WvNzePq\n+/fnX9Xl31bTIqmLNqhrilZt/V7qFFKdFIbU1NTQvn373vLw8ChgmtKTEAJRUVEJHh4eBT4+PrmX\nL19mbGIGAIQ+Zr0ulo66+U+dOhWk7XPVlaKNa9FRE8row7XQ1fLFF19/1PY3ilPYzFWXijqfJTon\nDGKx2JjH4xUWFRW5NzU1mTBN65mcnBweFhaWQgiBc+fOjRgxYsQ5WSenqan+9K3ExcXFa9sGXSna\nuBa6OmIt3hdtrwX94erg8PoTXfzNOqKoKgxGmspdnD9/friHh0ehu7t7sYmJSfPs2bN/O3To0FT6\nPocPH57y1ltv/QgAMGLEiOzq6mrbR48eOTHVl56+LmTFiqNbkpMzwjVlM4IoQmeSg4hcIiICUtLS\nPg8TCOKDfvzxvbd4PH4hfXtr8n6iVkcZ1mU01iqprKzM2dXVtYRadnFxKc3Ozh6haJ/S0lIXJyen\nR0x1aqPZFoLQ0YWWPohy6OoowzqNplyYAwcOTF+8ePHfUwju3bt37vLlyxPp+0yaNOnImTNnRlPL\nr7zyyvFLly4Nlq4LAAgWLFiwYFG+qPL81pjH4OzsXFZSUuJKLZeUlLi6uLiUytuntLTUxdnZuUy6\nLkIIR1N2IgiCIG3RWI5h6NChFwsKCjyLi4vdm5qaTPfv3z9rypQph+n7TJky5fBPP/00HwDg3Llz\nI21tbatlhZEQBEGQjkFjHgOXyxVv3bp1eUhIyFGJRGK8aNGi3d7e3jd37NgRCQAQGRm5Izw8PCUl\nJSXcw8Oj0NLS8vmePXsWaMoeBEEQhCXabk5FL+rq92AIRdG1uHnzptfIkSOzzMzMGr788sv3tW2v\nNq/Fzz///KaPj0/uwIED80aNGnU2NzfXR9s2a+taHDx4cKqPj0+un59fzuDBgy+dOHFivLZt1sZ1\noMr58+eHGRsbi//444/XtG2ztq7FqVOngmxsbJ76+fnl+Pn55Xz++edrFNWp9ZOiijr7Peh7YXMt\nHj9+3OXChQtD+Xz+OkMWBjbXIjMz07+6urozIa1/kpf5vnj27Jkl9TkvL28gj8cr1Lbd2rgO1H7j\nxo07GRERkXTgwIHp2rZbW9fi1KlTQZMnTz6sTL0ayzEoi7r7PegzbK5Fly5dngwdOvSiiYmJzo4U\nqQ7YXAt/f/+szp07PwVovS9KS0tdtGOtZmFzLSwtLZ9Tn589e2bl6OhY3vGWahY21wEAIDExMWrG\njBkHunTp8kQbdnYEbK8FUbIBj84IA1OfhrKyMmdF+xjiQ4DNtXhZUPZa7N69e1F4eLhBtk9ney0O\nHjw4zdvb+2ZYWFhqQkJCdMdaqXnYPisOHTo09d133/0GAIDD4ZCOtrMjYHMtOBwOyczMHOXr65sb\nHh6ecuPGjX6K6tWZYbfZ/nDSymeIP7ghnpOqKHMtTp06Ne77779fePbs2dGatElbsL0W06ZNOzht\n2rSDp0+fHjtv3ry9+fn5fTVtW0fC5jqsXLny640bN37M4XAIIYSj7BuzvsDmWgwePPhySUmJa6dO\nnepSU1PDpk2bdvD27dt95H1HZ4RBnf0e9B021+Jlge21yMvL81myZMl3aWlpoXZ2dlUda2XHoOx9\nMXbs2NNisZhbUVHh4ODgUNExVmoeNtfh0qVLQ2bPnv0bAEB5ebljampqmImJSbN0k3l9h821sLa2\nrqU+h4WFpS5btmx7ZWWlvb29faXMirWdPKFKc3Mzt3fv3qKioiL3xsZGU0XJ56ysrJGGmmRkcy2o\nEhcXF2/IyWc21+Lu3btuPB6vMCsra6S27dX2tSgsLOS1tLRwCCFw6dKlwb179xZp225tXAd6efvt\nt/cYaqskNtfi4cOHTtQ9kZ2dPbxnz57FiurV+onRS0pKSlifPn3yeTxe4YYNGz4hhMC3334b+e23\n3/5fe/ce1FR2BgD8uwkSdMHBtFOr8gjEIpBLCBDoijwiLgngFsUHo1gGEAWVGeh0Fx/8AaZ/YCno\nuAyz1q02OAKz62Ozg1IiC7sCC4PI8pJFCoXwap06BlpZmgAhp38wd5swgVW2GGW/38yZuck9uefc\nw3C/5N57vpvK1ElLSyvi8/l/EwqFHebSZ6yU8n1j8eTJk587ODiMrF279t/29vbjjo6OwxMTE7aW\n7rclxiI5OfkKl8vVMLfj+fv7N1u6z5Yai7y8vJMCgaBLJBK1BQUF1Tc3N/tbus+WGAfjspIDw4uM\nRVFRUZpAIOjy9vZu37p1a+OLfIGiCMHT2QghhP7ntbkrCSGE0OsBAwNCCCETGBgQQgiZwMCAEELI\nBAYGZBGFhYXpnp6e3fHx8dct3Zf/F4lEct/d3b3n7t277wIA3Lx5c79AIPiGzWbPtra2+s6vLxaL\nW2ZmZlYtV39yc3OzmOXBwUGel5fXI3P1MjMz8zds2PDk/Pnz7y1XX9Cb5bWZ4IZ+XC5dunS8pqZm\nx8aNG/9h/L5er7eysrLSW6pfPwRFUaSsrCzO19e3FQDAy8vrkVKpjElNTb08v65arXbZtGnT35cz\n19W5c+fOZGVl5X5fvfz8/ExbW9tvl6sf6M2DvxjQK3fs2LE/DgwMuEZERKguXrz4G7lcnhMfH389\nKCjoq4SEhGvPnj376b59+24FBAQ0BwQENDc2NgYCAGg0mp9IpdIqmqa7jh49+icejzc4NjbGnf9t\nuKCg4H25XJ4DANDf38+PjIysFIvFLSEhIXVMeojExMTijIyMD7Zt29bA5/P7b9++vZf5fF5e3imh\nUNgpEonas7KycgcGBlz9/Py+Ztb39fX9wvi1MWKUesHd3b3Hzc2t11w9lUoVERkZWQkAYGtr++3J\nkyf/QNN0V3h4+OdNTU1vh4aG1vL5/P47d+78CgBAp9PZJCUlKYRCYaevr2/r/fv3JQAAxcXFiXv2\n7Pk0MjKy0s3NrffUqVN5AACnT5/+vVarXe3j49MWHx9/naIoMjs7y05JSfmIpukumUx2T6fT2Szx\nT4hWOktPzsDy4yw8Hk+t0Wi4hMzN3haLxQ91Oh2HEAIHDx4sY54FPjQ05OTh4dFNyNyzOJhc8hUV\nFVEURRk0Gg1XrVbzaJp+xGy7oKDgPblcnk0IgbCwsJq+vr7NhMylag8LC6shhEBCQkJxbGzsJ4QQ\n6O7u9ti8eXMfIXOThQIDAxu0Wq0NIQTGx8ftCSGwffv2L9rb270JIXDmzJncoqKitPn7JJFIvjQ3\n6dLc+7t27fpMrVbzCCFAUZRBpVLJCCEQExPzaXh4eJVer2d3dHQIRSJRG7NPycnJVwgh0NPTs8XJ\nyWlIp9NxFApFoqura//z58/tdDodx9nZeXB0dHQTIQRsbW0nmPbUajXPyspqhnlWRWxs7CclJSWH\nmPVnz57NWckz6LG8XMFTScjiKIoi0dHR5RwOZwoAoLq6+p3Hjx97MOsnJibsJicn36qvrw9WKpUx\nAABRUVF/WSwnEiGEmpycfKuxsTFw//79N5n3p6enrZk2d+/e/RkAgIeHx2MmfXt1dfU7hw8f/rON\njY0OAMDe3v5fAABHjhy5olAoki5cuPDbGzduxD58+NB/qfs7PT1tPTo66sDj8QYBAKytradlMtk9\ngLnTTzY2Njo2mz1L03TX4OAgDwCgoaFhW3p6eiEAwJYtW/7q7Ow81Nvb60ZRFNmxY0cNkw/H09Oz\ne2hoyNlcDjEXFxe1UCjsBADw8/P7mtk2QvNhYECvhTVr1vyHWSaEUA8ePPiltbX19Px6xEyWTCsr\nK73BYPjutKhWq11NURQxGAysdevWjbe1tfmYa9N4+8x2mWyc8+vu3bv3tlwuzwkLC/tCLBa3/JBE\nffX19cFBQUFfMa+NrzOwWCwD0y8Wi2XQ6/Xf/Y+a6xcAABNQAQDYbPas8WcWq6fValcvdR/QyobX\nGNBrRyqVVhk/R6Cjo8MbACAkJKSurKwsDgCgsrIycnx8fB0AwPr16//59OnTn42NjXGnpqY4zF1B\ndnZ2Ey4uLupbt27tA5g7sHZ2dgoXazs8PPxzhUKRxBw0mTY4HM6UTCa7d/z48UtJSUmKl90n44O6\nSqWKeNlnRgQHB9eXlpYeAgDo7e11Gx4ednJ3d+9ZKFgAzAWchYIEQovBwIAsYn4eeePXhYWF6S0t\nLWJvb+8OgUDwzeXLl1MBAHJycuR1dXUhNE13KZXKGCcnp2GAuQNgdnb27wICApqlUmmVp6dnN7Ot\n0tLSQ1evXk0WiUTtNE13lZeXR5trk1mWyWT3oqOjy8VicYuPj0+b8S2ccXFxZSwWyyCVSqteZB+V\nSmWMo6PjSFNT09s7d+6sYC4219bWhoaGhta+yFgwyydOnPjQYDCwhEJh54EDBz6+du1awqpVq2Yo\niiIL5eRPSUn5SCgUdjIXnxdrByETlr7IgQXLUovxBexXUfLz89/Pzs6WL7ReIpF82dLS4rfYNkZG\nRhyioqIqLD1288tKT9+O5eUK/mJAb6xX+Y03JiZGWVJS8uuMjIwPFqrD5XLHEhMTi5lTWeY4ODiM\nVlRU7FyeXi5NZmZmfmlp6SGcy4AYmHYbIYSQCfzFgBBCyAQGBoQQQiYwMCCEEDKBgQEhhJAJDAwI\nIYRMYGBACCFk4r/VTGsTvquxrQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import scipy.signal\n", "\n", "# compute the periodogram\n", "f, psd = scipy.signal.periodogram(df_ts, detrend='linear')\n", "plt.plot(f, psd,'-ob')\n", "plt.xlabel('frequency [1/month]')\n", "plt.ylabel('Spectral Density')\n", "plt.show()\n", "\n", "# Features:\n", "# period of highest psd peak:\n", "period_psd1 = 1./f[np.argmax(psd)] # = 47.0 months\n", "\n", "# sum of spectral density higher than 1/12 months\n", "sdens_gt_12m = np.sum(psd[f > 1./12])\n", "# ratio of spectral density higher than to less than 1/12 months\n", "sdens_ratio_12m = float(sdens_gt_12m) / np.sum(psd[f <= 1./12])\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.10" } }, "nbformat": 4, "nbformat_minor": 0 }