Created
January 29, 2016 19:40
-
-
Save titipata/a8f7e50b1d3cde62b2e9 to your computer and use it in GitHub Desktop.
Linear discriminant analysis
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "## **Simple Linear discriminant analysis**\n", | |
| "\n", | |
| "for blog post" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 150, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "import scipy.io as sio\n", | |
| "import numpy as np\n", | |
| "from scipy import linalg\n", | |
| "import matplotlib.pyplot as plt\n", | |
| "from scipy.spatial.distance import euclidean\n", | |
| "%matplotlib inline" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "train_array = sio.loadmat('train_avg.mat')['train_avg']" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "X = train_array[:,1:5]\n", | |
| "y = train_array[:, 5]\n", | |
| "y = y - 1" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 109, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "n_feature = X.shape[1]\n", | |
| "n_class = len(np.unique(y))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 111, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "mean_x = np.vstack([X[y == n].mean(0) for n in range(n_class)]) # mean of each class\n", | |
| "mean_x_all = X.mean(0) # mean of each data" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 135, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "S_w = np.zeros((n_feature, n_feature))\n", | |
| "for i in range(n_class):\n", | |
| " N_i = len(y == i)\n", | |
| " S_w += (N_i - 1)*(X[y==i] - mean_x[i]).T.dot(X[y==i] - mean_x[i])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 143, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "S_b = np.zeros((n_feature, n_feature))\n", | |
| "for i in range(n_class):\n", | |
| " N_i = len(y == i)\n", | |
| " S_b += N_i*(mean_x[i] - mean_x_all).T.dot((mean_x[i] - mean_x_all))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 137, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "eig_vals, eig_vecs = np.linalg.eig(np.linalg.inv(S_w).dot(S_b))\n", | |
| "W = eig_vecs[:, 0:2].real\n", | |
| "X_2d = X.dot(W)" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 144, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "mean_x_lda = np.vstack([X_2d[y == n].mean(0) for n in range(n_class)])" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 157, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [], | |
| "source": [ | |
| "y_pred = []\n", | |
| "for n_sample in range(len(X)):\n", | |
| " x_proj = W.T.dot(X[n_sample])\n", | |
| " y_pred.append(np.argmin([euclidean(x_proj, mean_x_lda[i]) for i in range(len(mean_x_lda))]))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 172, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "name": "stdout", | |
| "output_type": "stream", | |
| "text": [ | |
| "Prediction accuracy = 95.7191780822 percent\n" | |
| ] | |
| } | |
| ], | |
| "source": [ | |
| "print 'Prediction accuracy = %s percent' % str(100*float(np.sum(y == np.array(y_pred)))/len(y))" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 140, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEACAYAAACpoOGTAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XeQHudh5/nv8+ac5p2Z9515J2FywCDnQIAkSBBM4lqy\nVmtbsst18t4u97Sq8p7sq/KtVHe7t/5j92SVbrXyraSTbK+pbJE0kwgQgYgDYDCDyTnneXNOfX8M\nDBHgkIQ4yHg+VajC2/1099NdU+/v7X5CC0VRkCRJkqSbqe51BSRJkqT7kwwISZIkaVUyICRJkqRV\nyYCQJEmSViUDQpIkSVqVDAhJkiRpVWsOCCHEYSFEnxBiUAjxtY8o861r6zuEEJs+sNwhhPiZEKJX\nCNEjhNi51vpIkiRJt8eaAkIIoQa+DRwGmoAvCCEabypzBKhRFKUW+DLwnQ+s/ivgDUVRGoFWoHct\n9ZEkSZJun7XeQWwHhhRFGVMUJQO8Arx4U5kXgB8CKIpyHnAIIYqFEHZgn6Io37+2LqsoSmiN9ZEk\nSZJuk7UGRCkw+YHPU9eWfVIZH1AFLAohfiCEuCyE+H+FEKY11keSJEm6TdYaELc6T4dYZTsNsBn4\nr4qibAZiwJ+tsT6SJEnSbaJZ4/bTQNkHPpexcofwcWV815YJYEpRlLZry3/GKgEhhJCTRUmSJH0K\niqLc/OP8t7LWO4iLQK0QolIIoQM+D7x6U5lXgS8CXOulFFQUZV5RlDlgUghRd63ck0D3agdRFOW+\n+vfv//2/v+d1eFDqJesk6/Qo1Ot+rNPtsKY7CEVRskKIl4G3ATXwPUVReoUQf3Jt/XcVRXlDCHFE\nCDHEymOkP/rALv4N8HfXwmX4pnWSJEnSPbTWR0woivIm8OZNy7570+eXP2LbDmDbWusgSZIk3X5y\nJPWncODAgXtdhVXdj/WSdbo1sk637n6s1/1Yp9tB3K5nVXeKEEK53+soSZJ0vxFCoNzjRmpJkiTp\nISUDQpIkSVqVDAhJkiRpVTIgJEmSpFXJgJAkSZJWJQNCkiRJWpUMCEmSJGlVMiAkSZKkVcmAkCRJ\nklYlA0KSJElalQwISZIkaVUyICRJkqRVyYCQJEmSViUDQpIkSVqVDAhJkiRpVTIgJEmSpFXJgJAk\nSZJWJQNCkiRJWpUMCEmSJGlVMiAkSZKkVcmAkCRJklYlA0KSJElalQwISZIkaVUyICRJkqRVyYCQ\nJEmSViUDQpIkSVrVmgNCCHFYCNEnhBgUQnztI8p869r6DiHEppvWqYUQ7UKI19ZaF0mSJOn2WVNA\nCCHUwLeBw0AT8AUhRONNZY4ANYqi1AJfBr5z026+AvQAylrqIkmSJN1ea72D2A4MKYoypihKBngF\nePGmMi8APwRQFOU84BBCFAMIIXzAEeC/A2KNdZEkSZJuo7UGRCkw+YHPU9eW3WqZ/xv4d0B+jfWQ\nJEmSbrO1BsStPha6+e5ACCGeAxYURWlfZb0kSZJ0j2nWuP00UPaBz2Ws3CF8XBnftWW/A7xwrY3C\nANiEED9SFOWLNx/k61//+vX/HzhwgAMHDqyx2pIkSZ/e0MgQ04vTGLVGmuqasFgs97pKHD9+nOPH\nj9/WfQpF+fRtw0IIDdAPPAHMABeALyiK0vuBMkeAlxVFOSKE2Al8U1GUnTft5zHgTxVFeX6VYyhr\nqaMkSdKtyuVy9A70EowGcVgcNNY1olarbyjT3ddNz1IP3loPiWiC6HCUw/uewWg03qNar04IgaIo\na3o6s6ZHTIqiZIGXgbdZ6Yn0Y0VReoUQfyKE+JNrZd4ARoQQQ8B3gX/1UbtbS10kSZLWQlEUTp0/\nxXByGKUsz3BymPcvvP+hcv0TfdRuqcFd7KasugyNR8vc3Nw9qPGdt9ZHTCiK8ibw5k3LvnvT55c/\nYR8ngBNrrYskSdKnFY1GWUgu0Lp7PQDuYjedx64SiUSwWq03lP3gUw0l//D2sVlzQEiSJN0L+Xye\neDyOXq9Hq9WueX83P8oWQiDEh5/QNFU203mxA0+tl0Q0Tn5RwdvgXfPx70cyICRJeqAkEgkCgQBt\nPW2kVSnyaYWt9Vuprqpe036tVituvZuBjkEKvC6WZ5YpNBR+qAG6oa4Bg97AzPQMbm0hjXsaMRgM\nazr2/WpNjdR3g2yklqSHn6Io5HI5NJqP/s2az+c5d+kcE4FxOro7qNpcxZ69e8mk0/S/38/h7c9g\nt9vXVI9sNktPfw+BaACnxUlTfdPH1ul+djsaqR/MM5ck6aExNDLEpb6L5IWCx+5hz9Y96HS6D5Ub\nHB5knnmaDjQxk5nBUKZnYmqcqooqTG4TkUhkzQGh0WhobW5d0z4eJjIgJEm6Y2ZmZhicHEQlVDSu\na8Ttdt+wfmlpiUujF6k/WI/BaGCkZ4QLVy6wd/veG8qlUilOt50maAqQ1WRQKWoQgkg8QiaTIe5P\nYK40381TeyTI6b4lSbojpqenOdV7ElWFIF+a49jlo/j9/hvKBAIBbKU2DMaVZ/i+ah9zgRu7jObz\neU6cP4FSnMdQYSSij6BWVPT9up/h8yO0v3WFltIWnE7nbat7Lpf7UKP1o0jeQUiS9KlNT08zOjOK\nUAS+Yh9utxuzeeWX/MDEAKUtpbiLV+4aspksI5MjuFyu69sbDAbiU3EURUEIQSgQwmK4sVE4Go0S\nyofYdWAX3QPdBNNBhodHMCaNFDYWoigK2Vz2tpxPJpPh3OVzTC5NohYqNtVtpq6m7rbs+0EkA0KS\npE9lfGKcc0NnsZZYab90hXh7jFpvHVtqtrC+aT0qobrhV3g+n0clbnxo4fP5GJ8Zp+tUNzqTlqw/\nx8GtB28oo1KpyGdzIMBpcDLSM8Ls5AwbNm5k29NbUWvU9JzuxTPvobi4eE3n1N7VTtAYZNORjaRT\nadrPtmO32te83weVDAhJkj6VvvE+fOvLuHKxncq95QiNwJly0TvRi6fQQ31lPcevHieTzpDP5QkO\nhdi2ffsN+xBCsGf7HpaWlkin0xiqDJhMphvKWCwWyuzltL3bxnhgnOKGIpp1zXhrirna3snWXduw\nFJqJRCJr/iKf889RtsuHEAK9QY+jzM6Sf0kGhCRJ0m8jGonS9f5V+oZ7qXZXY9XZcDsLMbvNRKNR\nqqqq2Bbbxutvv04oEmJj3UbUajXj4+OoVCo8Hg9arRYhBDabjZPnTxLI+Mln89R66tiyYcv1Y+3c\nspPE8QQxe4y6onrsagc4FObHFshms0QXY1gbrB9T21tj0psIB8IYTSvzKsUDcUxu0yds9fCSASFJ\n0qcSiUTIOXOUNvrIqRWmxqZocjcRXAhibbWSTCY5efkkmbIURcVFnO8+z6//06859LlD5LN5tINa\nDu09hE6no72rnWxhhtbGVnK5HD3neimcKKS8vBxYeczU2NCIf8SPx+PB6XBy+txpFocW6VZ301Da\neFt+5W9t2crRC0cJzoXIJjM4cV2vw6NIBoQkSZ8ok8kwOjZKMp2k2F2M2+1Gb9WxZ8ternZ30n+u\nn3wuT1+8n8c2P4bb7WZ6eprJ5AQbDm/AbDWjKVBxfOQ4Lq8Td7Gb4e5hBoYGaGlqYSm8hLfOA4Ba\nrcbhtRMIByjnN1/OXq8X34yPrpPd6MxaCpNFHHnuWYqLiz/0WOrTcjgcPLv/WZaXl1Gr1RQVFaFS\nPbqdPWVASJL0IZlMhng8jtFoRKVScfT0UVKOFEargb7uXrat245BY2RyYgKNS0PrU610vNbJusJ1\nNNU3ASvtC/F4HLPVTDqVYnx8gtmleb73X7/H5h2b8ZX4SJAAwGF2sDy/jNlqRlEUIosRaopqb6iT\nEIJdW3ddb69wNjvvyBTbBoOB0tKbX4z5aJJTbUiSdIOFhQVOtp8Eg0IukafCWUHPcjcJTYJUOoXV\naMWWsLOjZQff+vFfsW73OnLJHFUlVcSn4jy55RBOpxMhBP/5v/1nspVpYuoYo0NjRBYj7PrMTvy9\nAZQ5hf/pyJepr68nkUhw7OwxEtoE+Uwen9XHrq27Vp0sT7o1cqoNSZJuq1wux8n2k5Rt92F32olF\nYxx/5QT9S/3UHq7GYDYQng8zdG6IVDoFOkFkKkJLawto4diFYwwMDbCutJrHtz/Ol3/vy/yH//J/\n0jl7FX2xjqqmCnQaHdlslsqKqutTahiNRg4/dphQKIRarf7QlBkTkxNc6r1IOpumvKiCbRu3PbBz\nJD1I5BWWJOm6RCJBXpPHZrcBYLaYieWixPJRrF4rWr2Wkb5u+vr7WX+glUpnBZPxSX7x1s8JpyIU\nuNxUv7CO8FiE45ffY0vtVjYd3ERRpAj1OjUamwYRFFQUV1BsKLrhbW1qtfqGQXT/xO/3c7b/DNU7\nqzGajQxdHeby1cts37T9Q2Wl20sGhCRJ1w0MD9B26QIzqhlqKqrxFnpZXvBjsVoZOT9KNBIhFAhj\nqTKTtCU496vzuOqcjA6NYTQa2bi/FGeRk3w2TzwYZ35xHpfPhS1n40rfFYJKkMXeRbbUbsapd93S\ns/6lpSVsPhsW28oI68qGCoZPjrCdlYCYmZkhGo1itVrxeh/O9zLcKzIgJOkRMz8/zzvH3kFBYcfm\nHdTX1wPQ0dnB6Z73ad7ZwuTMBGfHz+LIONALPSlVkrGBcSLZCJlwGkNGTyDtR/Hm0Rq0lDWWkcvn\niUXjpFMZMuksyXAKT72HKzNXaNzVgMtdwMWTFynUF7LZu5UNGzZ86H3Pq9HpdCQXU9c/xyIxjLqV\nxunLnZcZDg2vDJQbjFK7VMum9ZvuzIV7BMlGakl6hPT09PCn/+lPUbx5yIMxYeRPf//fYTQa+et/\n+GvCzhB6jY66mjp0WQOOgANbjZX3298nqAuQUWcoqi0mM5tm9Oo4llIzqqgKu9VOTmRZ6F5k275t\nRMejHGp9CrVRzdDIEGmRxlngYHJ4ivKmMkw2E9mlLE/uPITNZruhjvPz84TDYSwWC16vl1AoxOtv\nv07SmqTQU0hqMcmBTQcxmUy8dvo11j/RglqtJpvN0nWsmxf2vnDbur0+yGQjtSRJt0xRFP7qB3+F\nudVAcbOH4FKIsfOj/O//5S/Ysm0r+mYd1Q3VGCx6+l8fwKa1EVxw0FjRSJGjCGeFA61VS3A5iK5A\nh1bRYE1YqN1bQyqTpu8fB9i3bj/N1mZ8T/jomeumpKqEpppGRi+PUqByY9xhpGFLAwBzk3Nc7r7M\ngV0Hrtfxas9Vehd6sBRbiA3FcQ24CKT8WGrNxKfiBPoDvHj4RRwOB6FQCI1eff0uRKPRoNGryWQy\n9+LyPpQe3REgkvSISafThDNh0IDapqagwcm2f7kVY4uRoeUhvFUeNBkNqXCKsf4xoukIpTtL6Wzr\nJB1OM9M5gwYNbo2bqRNT5BbzuIsKSSymyM5kaXY1U99QTyIf51LXJVzVLgo9hej0OqKqGMcuHiUY\nDoIC4VCYnJIjFA1dr18ymeTqWCcVGyoory2naXcjxzuPY6+xU7+pnn3P78VRZ2d5eRlYmaPJkDUy\nPTZDOpVmenQaQ9b4oVeESp+evIOQpEeEVqulzFlG+1w7ptkglY9XsNC/SHltOaHJEKnlNM4mJxNX\nx7HYraxvXc/WLVuorl3HyKkRlBmYeWMGt6cIc9KC0WuktLqExcVFOo91UVpcQoHWxZaNW7jw/gX6\nrvbh9rg5d+4c6kIVJVtL6BvpYz4wT0Gti5nBWSxLVqLRKBaLhenpaTr6r7BsXIY0bNywkZySZd4/\nz3JyGbPejNqgJplOAiu9ng7sOEBbZxsD/YMUWAs4uPPgLbVrSLdGtkFI0kMul8sRjUbR6/XMzc3x\n1f/wVYLWAL7dPoptRVQ7aljoWWBmZBZ9kY6xvjHKG8o4ePBxTBYzIgOaeS1P7H6C2dlZent7+eWF\nX7D+SAuj3aOEI2FsOjs6pw5XlQtL3ML6xvX8/f/zCq3bW/FrlnA4nLSua6W3t5d//PkbbNu7FbvR\njtPpoihXxO4tu/nlu78kYPHjqHWg0Wjo+XUP81cXKNziZv3j6wkuBBh9d4x/9c/+teytdAtkG4Qk\nSR8rHA7z3oX3yGjT5JI51le28u2vf5sf/eRHTA5O4Kx3YdSY2Fa+nXW71uEP+8lvyvH25XeYic1g\nUhsZPDXEk9WHEEJQUlLCiYvHKWsso7K5CovbyuD4ABNnJ7Fb7PjKfHS9e5Wr3VeZmZsm+A8B6vfU\ns3HrRixWC1abjfrGOiwmC1lLjsnABCNDw6yvW4/KJNi5bScDowME40FykTx19bV4qjxMnJ1Aq9FS\n6vXJAXJ3kbzSkvQQO9N+BkeDnWJfMel0mq73r/J46xP82b/9M6anpwmEAhj1RioqKtBqtcDKuILK\nQCWqtCC3kGfv3r34x/xEIhHaOtvoGOygpKmE/vf7EWYVQ2eGcRe4KfX6GLswyvjwBJlkhrJdPmYG\nZ/nVT36FxWGhoaGBxYFFYvMxso1Z8uo8wXgAjU5D28U2ZmZmKaorYn3jeqLhKMZZE9l8huYNzbRu\nbgWg61T3Iz153t0mA0KSHmL+iJ+NJRuAlfEE5msv1nG73fh8Pnw+H7DyGCoSiaDT6cjlcrhL3NRv\nrru+7nJ/O++efRdHg53qZDX+3DK2nB171oFtyY7WqsWIgcxgllw4h6Xagq5AS3X1OrBBb2cf2akc\nLz31ErG5GJdOX8a7oRinx8nIxChnhk5T3VTNj7//E4xmI0o6z/qKVipLK+m70IfL5yK8FMEpnLf1\n3dPSx5MBIUkPMafFydLcEkUlRWQyGWJLMSyeG3v5zM7OcvTsUTRWNeQEzWXN5JayzE3OYbFbmB6a\npsBYQNqRxlvupaC4gM72q1w+cYn9G/fz5//6zzl58SRqtZpkRYpz3ecwqYwEl0K0Prae+d4FEotx\n5tPzXOq6xOL8IrYmC74mH5GlCOoiNQ6Dg427NjI1P4Var+Hpp58itBwi1Bdm47pNLC8t4zF5qV1f\nK+8g7iIZEJL0gFlcXKStq414Ok5pQSnNdc0IITCbzR/68ty9aTfvXXiPxeFFsokszWUtFBYWXl8/\nMDTAD1/7IQWbXDjsDmq8NfR097CjbgdjU2PMDcyTDKVIiAQjkyOUN5dhMpto3bwetV/NC4deRKVS\n8aLzRX766k/IkqbaU0M4FiQwFUD1upr0coqSxhKqSiuJx2MspBaotFUQm48RXg6TCqUoqCggGo5i\nK7FhMBkwGA0YfAbm++fxerxUr6u+25dZQgaEJD1QotEox9vfo3RTKT57KSffOcn3f/p9CrwuHFon\nf/g7f4jH47le3m6389zB54hGo+h0uhtGGPv9fo5dOorGrWb9/haS8SRDA0MUFhQihODArgOcaTtD\nzpXDW+lh+aKfX/zNz9n12G5iCzFa17VeDySLxUJxSTHrN6/ncZ7g+3/zA8bCI8y3LWCw6vF5fbgM\nK+MiCqvd6ON6iq3FFJjdDL0zgmOPA4CZwVm27d4KQDKRREkr12d8le6+Nd+rCSEOCyH6hBCDQoiv\nfUSZb11b3yGE2HRtWZkQ4j0hRLcQoksI8b+stS6S9LBSFIVUKsXS0hJGjwlXoYtYNMZUeoqUM0nt\nU7UYN+r5wc+//6GRxBqNBofDcUM4xGIxXj/6OnPKPMuhZS6euoTeaCCVTROaW5nmIpfLMTg9iLPE\nQTqbZv+BfVSWVWGcN7G3dh/NDc03HMdmshNYDGC1WfkXn/sC6+zVOP1OjAETzryT5rpmTCYTuWie\n5vpmjBEjoc4Qz21+DvWChtnLc6y3ryc5mWKgfZD+9/vZ1rhd9lq6h9Z05YUQauDbwJPANNAmhHhV\nUZTeD5Q5AtQoilIrhNgBfAfYCWSAryqKckUIYQEuCSF+/cFtJUlaeaT04zd+zMjsMJP9k5Q1+7B7\nbCwvLzPrn0Xr1rGUWCS8ECGdyxAKhXC73R+7z/budtwtBaSTKRofa+DUq6cIj4dQ/ILfe+r3KCgo\nIBAI0D3YRa4xi0qo0M5q0aq12Cy2f+pjj6IoTExMEEvEKHGX0D3azbGOY3T1dZFSJdn5+9sxZkz0\ndPRCUmDEyJNNTxKdjJLN5thcsgWtRsv40jgqoaK1uRVPoYd4PI5tne1D74WQ7q61RvN2YEhRlDEA\nIcQrwIvAB7/kXwB+CKAoynkhhEMIUawoyhwwd215VAjRC5TctK0kPTLy+TyjY6OEoiFcNhcVFRVk\nMhl+/uufs2CZx69bRrNZzdmr5xj+1ggOg4PlxDJbn99KnDiLqQVmO+eJfyb+iceKJCIU1hdiTVvp\nn+inxOslPwx/+Lk/vN6zqbO/k4ZNDcQW4rjKnfRc6SXQEcD5ORdjw6MUj3vIK3mWVUuYXCbCE2HK\nLRXMBWeprK5ElAr0bgO5YI7dO3YR6g2zd9/e64PcFEWhq7eL4fgQGw63ksvl6D7Xhc1so6ys7I5e\na+nWrDUgSoHJD3yeAnbcQhkfMP9PC4QQlcAm4Pwa6yNJD6wzbWdYEAvYi2yMzo6wEFigpqKGQCZA\nIBnEVmPDWGai6lAl4d4IsyfncVlcTA5NULq5BJPTRPO2ZrqGuygvL//YYxU7i5kam6K2tQarxUpX\noJs9n9lzPRwAEukELVtbiIajBINBMsE02w9to3ZDDblcjgtvXSCfV9jz/G6EEKQr0pz9+VnyujzL\n0WUsGgtGs4Hp3hl8DT6q11Xj9XrJZrOo1WqEEMwuz+Jt8aJWr0y65650M7c8JwPiPrHWgLjVOTBu\nHu59fbtrj5d+BnxFUZToaht//etfv/7/AwcOcODAgd+qkpJ0vwuFQszEpll/cD1CCDxlHq4e7aKm\nooZsNENancKg0qO1aFBEHndVIZawFf+Yn/p19VjUFvTJJXYf2c1s5xz5fP4ju4NOTE4wuzzL4OAg\nI5eGKfZ4aK1opaqq6oZype5SBgcGqdtci9Pt5OyJc2g0Wt5+820UFPwTAXylpdffG63T6TAYDXT3\nd7P+d1sYHRwnKIJEwhEmLk6w5dBW3jn5DsuxZdSo2dmyE7PBTDQYxe5ceZQUC8bwGOQ0Gp/G8ePH\nOX78+G3d55rmYhJC7AS+rijK4Wuf/xzIK4rylx8o89+A44qivHLtcx/wmKIo80IILfA68KaiKN/8\niGPIuZikh14gEOBo11Fa9v2m4bfzaCfP7nyOweFBvvGdbxA1hzHXmClpKiExlqQkU4oj5WApvYSv\noZS62josVgvLnX5eePKFVY8zNzfHie7jVGyqQKVSMXx5mG0V26mprvlQ2Xw+v/JCnpkhVCo1C5ML\nzJvm2PHSdnL5PJdevYRmXsu+z+7FXmBnZnQGY9DE6OQIqbIUqCG6EMWYMfJY7QEWw4vkPFnKa8qJ\nRWMMnR1mb9Ne2nraEC5BLpPDlDTxxJ4nro/qlj69+2EupotA7bVHRDPA54Ev3FTmVeBl4JVrgRK8\nFg4C+B7Q81HhIEmPCpvNhilrYnxgHFexi4WpBVy6AkwmE54iDwd2PMZbJ99k/tQ8oc4w61tbScUT\nrG/ex/jiOLMjM0xnZ7Dr7BzcevAjjzMxO0FRXREO10q30vKWcqaGp1YNCJVKxdaNW9m6caXbaUdn\nBydnTjDVNYNeq+PA/gPMXZ5HmYSJ/gmKHMVs2baFIlcRvUs9FFcVk/VmCfQHWbduHV3Hu9i0ZyOw\n8q5rc7GZbDbLM/ufYWlpCSEExcXFcjbW+8iaAkJRlKwQ4mXgbUANfE9RlF4hxJ9cW/9dRVHeEEIc\nEUIMATHgj65tvgf4faBTCNF+bdmfK4ry1lrqJEkPomw2i0lr4uJ7bSAE21u2s3PHToQQdA93s/XI\nVjKODMXbixjtHaMwX4gqrWYwMMi2I1upDq1jrH2MHRt34HK5PvI4GrWGTOo33WDTqTQ6jf6W6qhW\nqRFJQUVxOUXuIqKhKIWuQg7u/k0gZbNZ1Co1LAnarrbhcDjZuWEnFosFk95EKBDC4XKQz+dJBOMY\nig3o9fpbeje1dPetuYOxoihvAm/etOy7N31+eZXt3ke+sEiSUBSFUxdOkXGnefz3HyewECA0Erre\nhpDNZxHCSCAcIDmdwOgzsji8SOBqkKd/5ykcLgcOlwOhEswuzd7Q0HyzunV1jJ4ZZSQ9QjaXJTYR\n5+ldT39iHUOhEL1TPSRTCS5cvEA2lsOVdrGlaQtjY2NUVFSQz+d578x7REwRpg1TBJ0hnMVOupe6\nUA+o2b1hNycunmChYIFkJEWlrZLi4uLbdh2l20+OQJGkeyyRSLCcWqKxuhG1Wk1pVSndMz2EQiEK\nCgqoLq3m6Pvv4ip34Z/wMzk5RWlRKSIpMJl/M/gtm84i8nDh8gWml6cx6U1sa9mGy+UimUzy3sn3\nmPXPYNAZmTg+gWLI47A7mJyZ/Ni7DoD+kX5c9S5aKltYXljm/OnzhJaCJD0JLs5eZH55norSCsKa\nMJ7KYsK2MPWV9fS928/mg5vpPN7J7z7zuzy791kCgQD6Cv0njtWQ7j0ZEJJ0j2UyGbqudjOdnkYl\nVNTX1JNLZa8/i69ZV8PszCwnhk9QX1vHk9uexFnk5OKvLjHXNU8iniCfU4iPx1Hp1CRdCar2VhIJ\nRXjv4jEe3/YEP/zpDwm5gpS0lHDh5AUcBXZefP5FtDotPWd6cU+7P/YxTy6fQ6PTIITAareCVaHK\nU0XZujJKK/NcPXYVl82FRqcmr+RRqUGtUQMKQiXIK3kATCbTDSO6pfubfMQjSXfJ5OQklzsvMzA4\nQC6Xu768s6+TslYftgobzgYnJ0+cxJQx43A4iEajvHPyHYbnh0n7U7gcBZhtZkavjrGxfiOHth3C\nmyqhLFfGU7ueYjG2SHVLNQajgUJPIdpCHRcuXWBZvcT2F7ZT1VKFoUiPrkRHKBRCo9Fg81pX3hX9\nMSpLKpnrmyOwFCCwFGBhZJGy8pWxCiqVCrVWjcPhQAlALBAjMh3lytF2bHorwx0j1JR8uBFcuv/J\nOwhJuguu9lylb7kXV5mLSf8Ek2cnObj7ICqVivngPDsP7iQSjhCLx1A3qKkrqkNRFE5cOIGx2sCO\nfdvxDBVz6e3LbGjcQI23huaGZlQq1Q3vR9CoNKSSKYwmIwCZRAZNXoPJbCSdSKPVabE7bCzPLKOu\nV5PP54kWoUxEAAAgAElEQVQuRrH6rB9bf6/Xy57cXnp6e8jn8zQ5mknFUsQiMZZmlzArFgoKCnhy\n15Nc6blCSbyUYCCIx+uhzFpGU33THb2+0p0hA0KS7rBcLkfXWBcth5pX+vdXQvf73SwvL1NYWIjV\naCW4HKLIW4hLcRGZimAymUgkEkTzEaor1gFQWVtJfCnBjpodN0zZ/UHbGrdx4ewF7GU2EqEkTsVJ\ndX01YxdGGTo9iKPSSWQuSmYwx5xnntncHOW28lsaufzBFwwlk0nau9qZvTiHy+Ji045NqFQqLBYL\ne7fvvW3XTrq3ZEBI0h2mKAoIbpiVVKVVX3/MtKN1B8cuHMU/6ScdT+Mz+ygtLSWbzaJkIJVMoTfo\nyeVyZOIZ9PqP7pZaVVmFxWxh2b+ModBAWVkZarWax1NPcLr9NKFTIXb4dnLoa4dIJBJoNJpPNSGe\nwWBg19Zdv/3FkB4oaxpJfTfIkdTSw+DU+VP49X5KqryE/WGiwzGe2f/M9XcdpFIpAoEAWq2WgoKC\n69sNDg9yeewy5kITcX+cGlctm1s336vTkB4gt2MktQwISboLstksnT2dzAfmsRqtbGzaiMVi+eQN\nWXmxTzgcxmQyUVRUdIdrKj0sZEBIkiRJq7odASG7uUqSJEmrkgEhSZIkrUoGhCRJkrQqGRCSJEnS\nqmRASJIkSauSASFJkiStSgaEJEmStCo51YZ03/inqSc++MpJRVFYXFwkk8ngcrkwGo33qnqS9MiR\nA+Wke05RFDoutzEzvPLmWe+6jWzcsh2AC2dOkF7swaRTs5zSs2X/8zdMRSFJ0urkSGrpgaYoClNT\nU3R1tDM/eIYqt4Z8PsfgdARraTNmswNjZpIndzQghGB+MUCv38qBwy/d66pL0n3vdgSEfMQk3XW5\nXI6jv36TX/34BxhTM5QU2clE5ylpqaPaa2F06SpJJUVZXQ3zU13EW8sxm8w47RaSU6F7XX1JemTI\ngJDumuHhYV7/1S9587Wfkpq7QpE5zY4KwWKfoNpj4WpXBqeukk2VZjojGRqrfUwMdDA9NUNdXS3D\nU4u4iuvv9WlI0iNDBoR0V3R3d/ONr36B+HwfTnUGewHUF0KTRyGPQt9CHINlmeOX1bTUePCVeilw\n2igsa+D9gQRDwWkcnmq2yHcQSNJdIwNCumMikQhvvvYzgguT/P3f/w8ssX7KHFBbBChg1EMuDyoB\ns6Ecdr0BncNHf9DCnsZCBkZnUWzr+PzvvITBYLihd5MkSXeeDAjptsrlcvj9fs6cPs03v/FvsDOH\nVa8Qn8vx3GYoMEGJHa7OgdMI434YXIRBv4Hntm/BWLaXbfufJh2PkNZo2bOjDrPZfK9PS5IeSTIg\npNsik8lw5vRp3n31b7hy5i2W52d4qhGeboTLE5BJQ7kL1rlhbBkiCXhtEuxGGFiAsro6Cpue4oln\nP/+pXoEpSdLtJwNCWpNsNsvp06f51v/1NYLTvfjMYfRJ2OyDzWXQ7IVsHiYC0DEFXiuYddA5A5MB\n0OvVbNm2G1/dNrbseVqGgyTdR2RASL+1iYkJvvKVr9DTM0Z1mQMR6sGrXaDQBjkFkgIs+pWy00FQ\nC5gPQyoHP74Ci+GVR0uKWsdnnt7LlsZigvE5zr79P0jsfZ6GppZ7e4KSJAEyIKTfwo9+9CO+9KUv\nASagGtBiiZ+j0ZPkj3auNDi/2w9m/cpjJASMLcGYH4aXVxqjs1mIZsDnsfCVf7aR4fkgXq2KtLGU\n7es99PS8j6+88pbf1yxJ0p2z5sn6hBCHhRB9QohBIcTXPqLMt66t7xBCbPpttpXuDydOnLgWDhag\nCdiK3ZCk1J7CrIMKFxSaYcoPXttKe0PnFPyoDY72QyoDAkgoamxOF1/+zC6MBgOzixEG55LktAWU\nFBdg0atIJBL39mQlSQLWeAchhFAD3waeBKaBNiHEq4qi9H6gzBGgRlGUWiHEDuA7wM5b2Va6f/zl\nX34LMABGjNos6wpOssm3QLFVYTYMbRNgUIPHBjMhWI6BIoA85IB1pWbKCkxkDcU8ubkUn1uLyuwh\nZ1GR1Fg5uKWFQChKJKvDZrPd25OVJAlY+yOm7cCQoihjAEKIV4AXgQ9+yb8A/BBAUZTzQgiHEMID\nVN3CttJ9IhKJoBY53NYkTcUjOE0mtpar0WoEsyGF754CmxHUQLENmktU6DQKo8uCQmseTE6OPLGH\n4YCGsVCKSzMp3EUqmrYcJJjM0zacQqXXsnnvs+j1+nt9upIksfaAKAUmP/B5CthxC2VKgZJb2Fa6\nDywtLfH0oT1Ex35NgUlFQ7HCQiROMqtQW6ygV8Ox/pV2hnASylIq9EYdNUUuDlcJPNYcJ6ac9C9A\nOG+mYf/v0rxxO0IIDAYDdrudTCaDVqu916cqSdIHrDUgbnWa1TXNKPj1r3/9+v8PHDjAgQMH1rI7\n6bfQc7WDsY6jJMeP8txGI7PLCRymlTaFk0MQSoLQWggpgsriDLtqDeTVJi71L7O31cBcIAX6Qhw2\nK4qjiaef+T3WrVuHEDf+SchwkKS1OX78OMePH7+t+1xrQEwDZR/4XMbKncDHlfFdK6O9hW2BGwNC\nunui0Shj3adwZIZZZ4uxtamOycUoHWMxRCpGLGml259kZ72TciXFH++3kcrr2LTrCf6/v/s57/Qo\nfObgZnoXIGqu5Q9e+mNKS0vv9WlJ0kPp5h/P3/jGN9a8z7UGxEWgVghRCcwAnwe+cFOZV4GXgVeE\nEDuBoKIo80KI5VvYVrqH0uk0ZBLYdBmaK90sRMIEUlk8XhvTeQP/8jO7mB7rY4s3RuT8CAOTIbbt\n2I3RYKRxw06m7A5GNaX4Nlfy2KFncTqdd7S+0WiUfD6P1Wr90B2KJEm/vTUFhKIoWSHEy8DbrLRP\nfk9RlF4hxJ9cW/9dRVHeEEIcEUIMATHgjz5u27XUR7q9rFYrCSwshVMUWO2k00lmI2oUJYfNrMNr\nDLHluSO0X+1HcRo5vRikPGFkun2CwUgh//O//V/x+Xx3vJ75fJ7zp08z0d2NSgicZWXsf/JJdDrd\nDeV6e3uZn57GXVxMQ2MjGo0cBiRJH0e+UU76WH6/nx//4Fsk5rtZDgRJhv1s2LyZslIvptQkRruH\nxtbtnOueQevdwtLsGCqVoHXLnrsSDgBDQ0N0vPkmTeXlKIrC8PQ07tZWKqqrMZlMALz6i1/Q89Zb\n2DUaoioVGw4f5ne+8AU5Q6z00JKvHJXuCkVRmJiY4NfvvIWYeIu960sIJQVzMS3DU0EaNuykvGEH\nza0b73hdQqEQCwsLjAwMsDg7y9j4OBNDQ4iZGbS5HOFYjIQQTEWjNFVVMb2wQEpRCExMoFWpsBkM\n5LJZ8jodzU88wXOf/SyHDh360N2GJD3oZEBId00wGOTEq99HGxlgZ42FvJLlzUsB6g78MZu377or\nvZDGx8c5+8YbDFy5Qn9bG1PT0+jjcVKKAmo1RkWhSK9nNBxGm8vhV6tRZ7Po8nlyrAzzywMlajWT\nioKvoICkxULhtm189p//c4pKSmhubcVoNN7xc5GkO02+k1q6a+LxOKVuM76G3XT09pJJ54lqPLRu\n3nZXwiGXy3H+6FHcKhXHu7pYHBmhMJ3GJgTxZJIlIJzPk4pG8SgKaUCby5EHXECYlYAYAvK5HAYg\nFYthyGRYePdd3oxEePrIEWbHxzn80kuy260kIQNCukU2m42uuKDBZODg/t3MzC+jXrbc0V/buVyO\nS+fPM9bXByoV81NT+BcXCUxOosrl0OXzaBUFVT6PBUgDJkVBByRZmWhMDfzTuOw4YANqry2bjsdZ\nymTwWSwkl5bIhEKoNBoWFhZkd1xJ4jZM1ic9GiwWC007nuFUX5R3L8/Qs2Rk695Dd/SYVy5dYra9\nnSank2qjkYG+Pvyzs7gLCsgIwbIQzGcy5IFhVgJiGUgAflZCIsJKMCT5zV1EEAiwEh6RTIapeJyR\n4WFee/VVFhYWZBdZSbpG3kFIt8xXVoa35Euk02kMBsMd/yKdGhqiorgYrUaDVqNhU00NnQMDuOrr\n0QaDJONxpgIBdCoVKrUaey6HJpdjLp8nnM+TZeWOYQRIsRIgDYCblYCYYCUsChSFKo2GdDDIG0eP\nYigvxygEBpOJLXv34vV67+h5StL9SjZSS/ett199FUswiPvaALurIyMsKQpVRiOxUIgz7e3MxuNo\nslnSo6PkwmFyySQ6jYahxUXQ67FlMhizWVLALCt3DRYgysqgnGZAZTAgbDZqfD6GMhkqS0rYu38/\npZWVjEUiPP35z+NwOK7Xy+/389arrxJaWqKqoYHHn3pK9oKS7juyF5P0UFtaWuK9X/0KUyZDJp/H\nVF7Ojn37GOzrIxGLUVpRQYHbzS9feYWOt99GZDJ47HaWQyG6/H68ej0zU1PMT06iVxSqtFpG4nEC\n+TwqoEmvR6Mo2CwWtC4XhYWFnJyc5KnaWqJqNS988Yssx2LUPvkkNTU1hMNhuq5e5a+/+U2KEgkq\n3W46p6aw19Tw2KFDbN23j6KiohvOIZFIEI1GMZlMmM3me3MhpUeSDAjpoReNRllcXESj0VBSUrLq\nwDZFUWg7e5bhK1eIxWKYi4o49OyzdHd3Mz87y0h/P1eOH2eisxNjPE4sl8OrKJQKwZLZTFBRyBuN\nGKxWSj0etrtcTIXDlG/bhr2igo1HjmCz2Xjzxz/myptvMnP5MjmTibReT5FaTSweZ/O+fagrKvij\nr34Vq9UKwMzMDO+/8QbaXI6MEGw+eJCa2tq7fQmlR5Ts5io99CwWyye+flQIwfbdu2nesIFsNovV\nakWlUvHYY48BK72hgi+/zP/xF3/B9LvvogkESEUizOVy5NJplNJSXE1N1KvVrCsu5lJ3Nw6rlYHx\ncZoaGohGo3RevEhudpYSjYaUoqBLJrm4uIhVrabQ7aapsJALPT10dHSwd+9egsEgf/ed71CmVuOp\nrMRstXLu7bexOxwUFhbejUsnSWsmA0J6aHzUIxy1Wo3L5aKispIxg4GYoqAzGgkrCmqDgSNPPUXr\nM8/Q/t57pDQatj75JGqNhp6lJXTRKNOnT9Pe2Yktk0Gn0WDS64nH4yTTaXIqFRaHA61Wi16jIbC4\nSDQa5Y2f/pTE6CjaggK65+bQ2O0MTE6STCSo2bSJvQcOyLmgpPue/AuVHgmX2tqwJBLo8nmKtVqc\nBgNeu53ipiZC2SxNLS2UlZXRfeYMWiGIC0GdTsf6igqEEORzOV5/6y3cuRzC4WA6FkOj17MsBAW5\nHIOLi+QcDoRazSs/+AEznZ0shUJcnZ1Fnc+zlEyybssWtlZWMjEwQHdBARs2bSKXy9HR3s7c+Dgm\nm43NO3bIV65K9w0ZENJDIRKJMDYyQi6Xo6Kq6oapxTOZDH1tbdhY6ao7H4uxmMthKy9n2WikbMMG\nKioqAKiqriaVSpFMJjn/2mvXu/KuKyujbutW4uk0JwcHaaqvZ09ZGf2Tk8TUapJOJ56yMsKjo5iD\nQRba2hiZmUF97fhpm42NzzyD0WCgyG5neW4OgLazZ1no7KS0oIDo1BRH5+d55rOfxWAw3HB++Xye\nSCSCSqW63sYhSXeaDAjpgReJRHjnl7/EkkigEoKBS5d4/KWXcLvdwEoj9szUFJ5AgKc2buSSwUB3\nXx8ZtRrF5eLg4cPX92U2mzGZTCwuLhIFpufnKXA4mF1exuxy4RaCppYWvGo1hT4fLXv2MBEKseXw\nYfyzsyxeukRnWxuT4+MUA9bCQpZTKfwqFUszM7BpE/5IhOK6OvL5PCPd3WwqLUWlUmExmQhNT7O0\ntHTDTLipVIoT77xDaHoaBShtbGTXvn2oVHKcq3Rnyb8w6YE3NDCALZmksqSEcq8Xj1ZLT0fH9fU6\nnQ693U4glSKRTiPUahSrlaqqKpq8Xt756U9ZXl4GVn6pnz5xghO/+AWqRILzo6P0hkJkioow5nJs\nKClh16ZNGPV68ioVap0Om9dLLpOho6OD06dOEVpYwKRWM51O0x+NYtfrySQSvN/WxqneXjSlpazf\nsAEhBGqNhmwud72uWUX5UE+tjkuXyM3M0FpaSmtJCQtdXYyMjJBOp5mcnGRycnLl5U6SdJvJOwjp\ngZfNZG74UtVqNKSy2RvKbN+zh854nIhKhV+loq60lODcHPZUikAkws/+9m/54pe/zNzcHIvd3awv\nK0MIgcdqRVdVhbe8nMGFBbQaDRtbWujR6+kYG6O0tJTszAxL7e1oFxcZHhhgo8eDotNBNst8JEI6\nm8VtMlFsNNI7MsJnv/zl6wPrNuzeTeexY7h0OmLpNDqvl+H+fq62tVHk89HS2kpgcRH3tXYJIQQO\no5GF2Vl6Ll2CQABFUVAVFPDk88/LmWil20reQTzAhoaG+Nk/vM4b7xzD7/ffsC4ejzM3N0coFLq+\nLBwOc7Wrh67uXqLRKLDSBfRBV1ldzVImw3IwSCAcZjIUorK+/oYym7Zto3zzZjQuF9MLCyzPziLm\n55lbXMRiNmOIxejt7iYaDmPV6a63PTitVoJLS1gsFqK5HNlcDq1GQ3FhIQeffRZfVRWOdJqqkhKq\nfD4aCgtRrFaqd+7EUFhIKJ8nX1xMc3k5jRYLM5cu8au//VsCgQAADY2N7H3pJQq3bqX24EEyySTJ\noSGcsRgT585x7v33cRYVsRQOAyt3OMFEgoXFRfShEPWlpTT4fOiCQXq6uu7uhZceevIO4gH1/vun\n+eZPTmEo2wypAOc6f8ZX//hzOJ1O5ubm+MdTnWR1DpRUhF2NXirKSvjl0QukLZUoisKxC29i0KjJ\nq/WUFFh4fM+WTxxvcL8qLCxk34sv0tPeTj6XY9vu3VRWVt5QxmAw8NTzz3Pi2DGeeuwxpi5fxppI\nEPD7mbVYaCouJhGJUFRby7nFRQKBAHqDgbwQeDdvxuPxULtzJ10XLqARAq3dzsH9+5mcmEB9rS2g\nxOvF6vEQTCZxeb002GwEe3vZU1eH4veTVqnwFBZiz+Xo6ehgz7UXzJeUlFBSUsLc3BwiEqGspAQA\nq9lMe18fL/zBH3DG76djchIFqNiwgXQqhfpayAOYDQbikcjduNzSI0QGxAOop6eX/+1bPyZf9wIO\nlRNPZT3dPe/RdukKh544wNvvX8FctQuz1U4um+VM1wmm5+bJO+sp9voYHBrhzfYgZYUmjjx/mEX/\nAu+eauMzzxy816f2qXm93k+cVE+tVqPXaKitrsZttdJ77hyFBgOmykr8ySSby8vJ5XKEIxH809Ok\ns1lEWRmPf+lLAGzcvJna+nrS6TRWqxWNRkOpz0e3RsP88jI6rZbiTZsw5XJo3G7WOZ2Y16+n49gx\nDPE4RpuNsrIynDYbmVRq1frl8vnrn7O5HAiBwWDgySNHiEajqFQqzGYzQ4ODdPT1YbsW6vORCBvL\nyz/2/KempggGAlisViqudd+VpI8jA+I+trCwgN8fwGg0UFZWBkBHRwf/8b+/xoK2DBQHAX+Wsdk+\nhD/Gj175JS6HlUQWXFY7AGqNBpXRTjS2gNatZ3B4jM6JMFlHNVFNnvMd/ezZ0sxcVx/pdPqhn3Su\npKKCi93d1FZUoCgK5zo68JrN7Ni/n3XV1bz+k5+wv7UV07Zt5PN5xhcXWVhYuD42wWw23zAgz263\n8/hnPkNXezuxVIqnv/hFSn0+UqkUZrOZRCLBrxwO2t56i+LiYlpbW1mIx9laV/ehuhUUFGCvrKR/\ndBSrwcByPE7Tnj3X21c+2L21uqaGeCy20g4BNO7Zw7rq6o887472dgbPnMGu1RJJp5lev54910aa\nS9JHkXMx3acuXGjjzbYRjEXrUGWiBIcuMusPc3FwAT8uIvEkac82MBWiD/SgXeyitHErjtQU2yqt\nND7+L3B7fMSjEcLDZ9nXWsHRzmkuz+TRu2u4euYNNu1/nmwmTYtHhTHQxx9+7vAj8auyp7ub3kuX\nQFFo3LKFppaW6+t+9fd/T7lGg+naOISR6WlqnniC2tpaFEXhakcH/R0dzC8sUOjxUNvYSPP69ej1\n+o863Mp+RkYY6OhAURTqWluprqlZtVw2m2V4aIhoOIy7uPj6+Iy1SKfT/OIHP2B9cTEatRpFUeic\nnuapL3zhhllqpYeLnIvpIdXbN8Bf/eQk5pbnyAfjjFy+wvScn5SpjGWNk9TSBNmiFlTL4yiz3aTn\nO2na9wL/f3t3Hhzlfed5/P3ru1st9aETXUgCSQhxCIy5DxliwPG9tmfiye4kmamp1O4km62dzUw8\nqdry7j/Z7OzuTG1lJ1WTY8uTbGwnTuI4duIYH7IxNmAuAxKgC9333a2+u3/7h9qMjNuAaUEL+L6q\nutTP8/y6n4+ebvjqOX6/p7hhL+G+45zqOERMP4ey51BVnMvDezZTWlqC1Wql5Ue/xGmHXWuXMT7W\nwdTkOL5AjAc/v+2OKA4AK+vrWVlfn3JZ9erVtDQ1Ueb1EgqHmbVaKSoqAuBcczPthw4RHB8n0dXF\nwNmzMDjISH8/9z7wQMqBBD9SVVVFVVXVVbOZTCZqV6y4vl/sU8TjcZTWmJL5lFKYDQZil13pJcTl\npEAsAtFolMHBQRKJBF6vl6bjrRhdJdjcRYz1XKAnmocp14WlYC3R9mai9iDEoyQ0YLRiKlzJYG83\nvvhBHA47MyNRNm5bQVlVDdaZTjweN93dPbx97Bz5XjdjQ22s2rQH1/gAXnecxx7Yl/IvyampKQKB\nAGazGY/Hc0eMHVRXX4/RZKKnrQ1LQQF77rrr0qGdnvZ2inJyONrczKriYiampsixWAgMDjIxMZFy\nEL7x8XHGx8exWCyUlZVdsYjcKHa7ndzycjp7eynyepmYnsbodsveg7iq2/9f/CIXDof57YF36ZzQ\ntHX1EJsexuebIeCqpevUSQJTowSjGntshuBQKwlHASoaB6MZbS/AqGIYLh4gEFLoZfsIEsOcv5Lu\n0Wk27KxisDvKuXPnONYxRW7NTtavdtB84hCGoeM8sHk9y5dtw2w2fyLXqdPNvHGsjZaLQ0SiUdYv\nL+CxvVspLy/LwFa6eZRS1K5YkfKveJvDQXBs7NKeVjQex2w2o7VOuffV3d3N4d//HhcQisfpWLaM\ne/buzUgP6B179nDi6FF6BwZwV1aye9OmO6Lgi/TINyTDWts66I/k0DczSfaqBxkb6efMKz+hzBqg\noszG6QvnCFxsI3/L40xcOIWensRMjJg1D5Vfh7HvffKdJgKhKOaJc1iIUFS7idaeQwSCs+hEYq4v\nRE4JNsfcydXa1RuZOe+nbkVtykzt7e384wtNdM8YyK7cRHHZUtpHWnj1cAtfzPXesTe+WbNhA2/1\n96MdDg61tZGbn48zkSCnogKv1/uJ9sffeYdqr5esZOe15s5OBgcHKSkpudnRsVqtbNmx46avV9za\npEBk2GwwQjQaJ2bLR0UjtJ45TsxVRW9vL1nMsiQ3h6Xlu7EbBsn2hmluP4KxoJ54YpJw+6/Jz7Gy\nescTXDx/irylhSRMTgaHumB6ltdfP0DjcgfltdWcPzN2aZ0B/zTZWalPqo6Pj/N3//Q8Z8fMTEz7\nINZN78gUuYZpajy5+Hw+7HY7g4ODRCIRvF4vLpfrJm2tzPJ6vex74gkGBgbo7enBBHjy8qirr0+5\nVxAJhbDNu/LIIsf9xS1GCkSGlRXnEz15hEggh9PHjzBmKCboVBhM2czGp/DkOCivriUWmAHPciYN\n+cR8I2hPFZExJ9mWBH3njuKavQi9fsxFa6lwRPHUlJJvS1C3NB+z2UyBGqf79DtgstH+4fvkexw8\n+2KE1ctLCAaDmEwmVqxYwSsHmph0N+BwZtHT3ok5EiNgysVltdBx4Sy2fWt48+ARWsc1RlsOyt/G\nA9tXUZzs3HW7czqd1NTUUJPiMtXLldfW0tHczNKCAvyBACGL5dIAglfi9/tpOXOGSChEaWXlJzr9\nCXGzSIHIsJKSEh7dtZrv/+QF2k5+iKH+cazZXhwF5bR++Eu2hiaJep3EitYTiUywtKERjznE0YNv\nESvfSSjQhwpNYDHYULEEJoNidV0dGxtW0t95nud+8yrNg2Fm/D6KTNPkZDkYstcRKN3I8ZMX+OGv\n3ya3ci3GRJRiw5sYDEY8JbuxJ8z0TwaZ6juHdbqVsrtWU2A3Mjs7S+u4pqx+KwCzvjKajh7lTx65\nMwrEZ3H3li2cNJno6OzEnpND47ZtVz08FwwGOfDii2QHg9isVo42NxPdu5fqayhIQiy0tAqEUsoL\nPA8sBbqAP9JaT6Votx/4B8AI/FBr/d3k/L8DHgAiQAfwFa319OWvv92tqK2mcct6ms5N4s/2YMst\nITbWgcMYp6qqkmzbLAOzQyyxQ8SZz+hwEH84jjURIhKYxpS/kojVzLa1ZfT7DbjtJiIBP4cP/Iqz\nPZOYVz2O323h5Jk3iB99h/ztWwl2DZNQXoaNVdRVb2J2ZoJDHwxiDI/hHn+HiD0fM3ZKvQ4e3rmZ\ngoIi8qLZRCIRZvwBjr53kHgiQWlJMeaQjCSaitlsZuPWrbB16zW/pr+/H4vPR1lyuG+HzUbL8eNS\nIERGpHs5xbeAA1rrGuCN5PTHKKWMwPeA/cBK4EmlVF1y8WtAvdZ6LdAKPJVmnltSMBhk0Kdp2HwP\n1mA/vo4j+LqOkevx0DWZoLosj9oCE9s3NZAdGaLnxAGs0RlyzDEo38FkwsnUjJ+xkJXaJTnMdr5P\nsL2JkdERgkVbGTMUMDTpJ1F1LwlHPoGc5Zxu66G7s5V4JEJgZpTBiVk89fvJq1zHWNTK7Hg/2b5W\nsnxtZBnD2Gbaady8lkQiwZnmFsYtZYS89bxz+Bh2JQVCiNtRuoeYHgI+6q//DNDEJ4vERqBda90F\noJR6DngYOKe1PjCv3RHgsTTz3JKUUhhQ7Nm5ib7hV+gzZ2OMOUigiHtqOHC8g70bTQS6D7PWHcO4\nIpuxSD4Hzpwm4goQGWwlxjj9Y5WMd37AmmI7b757ke6xEAMzF4mbl5PQVgjMYDBaCXYdwWxxMDXc\niwx1gRsAABZESURBVN3XQeSuVYQTRqzBCZw52axZvo5YzxF2Ne5mcmyI2qxJ9jTuwmq10trRw11b\nGhn0TRGaGGNZVSU5nk+OKySuT0lJCWeys+kdGsJmtTLo87H2c5/LdCxxh0q3QBRqrYeTz4eBwhRt\nSoDeedN9wKYU7f4MeDbNPLckm83G6so8Tg20sm1NBYdPtRExB6nd+QWynC7sk05Gg3Ge3H83LpeL\nN/Jd/OytC5SWLGHKP04oPoAqWsXwdJjISJBpcxEDsUJGPWXQfZSExQ2xKExfxLxkDdrqhvFmvAXF\nuIu9tL36PWxFddRt309WtoeBSR+VVcvILSwmEY/hzlKXhpKwmI04HTZ21lUDMD7cTxZ9mdx8txW7\n3c69jzxCy5kzhINB7q6qkpPUImOuWiCUUgeAohSLvj1/QmutlVKpBk266kBKSqlvAxGt9c9SLX/6\n6acvPW9sbKQxOUzy7WTrxvXkt3fQNziKYzLKyZxqTArC/adouGstwfFeZmdnGRufoG3QR2hmDHsw\nRLbbTaz4Pkwl65m68DaeyjU4y9dCWzvmokoMiRjG4Dih4VZUZIaEjmGNTFC+agtl+TkUuW2UUc6G\npU4G/VNM+QYw9fWyZPfDTIwMEh29QPWqhks5a5ZX0tz5Hv2dcZTBiGnmIg2778rglrv9OJ1ONm7Z\nkukY4hbT1NREU1PTgr5nWoP1KaXOA41a6yGl1BLgLa31isvabAae1lrvT04/BSTmnaj+MvAXwB6t\ndSjFOu64wfpCoRDf//GzBLKrqKpdg8lsYbLtEI80NvBi0ynsZeuYnJriZNswweELjE75MOctp8Rl\npWd0GoOnionJCS5OK3T3u8yG4yRsXnK8BcTOvIDJbKZs6xPkeIswDnzA9oZq/vXuGsrLy4nFYkxO\nTtLS0YfRYGB1bQWFhR/fMZydnaWru4d4PEF5WYkM2SDEIrQYBut7CfgS8N3kzxdTtDkGVCulKoAB\n4I+BJ+HS1U3fBHalKg53KpvNxlf+5FFeeOUt3nr5Z4RmfexcW0UgEOBi7zBTQyeZ9oeZHu3FNDvI\nPbVFGDwGVJabvraTJAJjVJSvYvDkbwhP9mEyZGGaOk92JB9rRR3TwxfJCvRRvrycnGWP0v3hL/E+\nvhlbcgRTp9N5aXjxVLKysqhfWfexeaFQiM6LXYQjMUqLC1OOSySEuLWkuwfhBX4OlDPvMlelVDHw\nA631/cl29/Evl7n+SGv9neT8NsACfHS/zPe11v/usnXccXsQMDeA37MvvUE4p4a8JWVMjg0S6DjI\n++0zGKr3MRoyE5wawtL+Mn/+0FY2rFrGjD/IrG+arr4RhkZHyXM5OHf+Am+0x1DOfMLGHGzuAqKR\nGKUuhTfLhCdvCQXBFv72a3963aO5hsNhfvPaQdqmLYRiCrO/ly8/tJ3yq9zARghx42R8D0JrPQF8\n4hILrfUAcP+86d8Dv0/Rrjqd9d/ORkdHGRgPkO8xMtx3kc6uXjpOtbCkej0tF44TsOQz65/GY8rh\nzGCY/Jw+fBEDDpuZ8tIifEY3YbuHhGMCg2mcQPYyVO5ypjvfoSLPRkHpemrcYVwOC/W5K9Ma6ru3\nt5cTfRGm7MWYs3LxB2388Pnf8V/+01fvmCHEhbgdSU/qRSgYDPLauyf4sD+IeeocAz0d1O14BPtS\nP0Ojo5gSNhzeYrKcOWTNxjl88izhQCV37byPwclx3n/9Je57/Ms4XR4uDoyxwhohGAwymhglr2ED\n9Z4gQwNnsaFpqFzF3evXpZU3FArROxakYnMtBqMRuyOL/kOHmZqawuPxpPXeIyMj9A0MYzGbWL6s\n8tJhMCHEjScFIoNGRkaYnZ3F5XJ9bDTQsy2tRFw1bN5q5e33j+HPXk5/+1nu3Xo3kwNdvPyrnzLc\nfJyEwYy3pIbZ3j7u3rQNZ46bOIqYp5qZyTGcLg8ul5uBqREevX8vza1ddHW0obWPL+5ayY4tGxZk\n6On8/HwMM68xOzWC2Wpnpq+FkqJc4vF4Wu/b3t7BP/3iTQJmD06rkdXnu3j8gd1XvXubEGJhSIHI\nkOMnT3OkfRKDw4v2d7JnfQU11XP3FJ4JhBgf86FNNkqzoiiLonZpPqXFxZgTEUqcMGUvJWfFvSTC\nk0Rnpjly+AhFJUspLVmCMTpDwD8DgMeVjTfwLjP9hZTYItSvsLDvngeuadC4a1VYWMiDW2s52Pom\npuxcim1GVuYXpHV1UyKR4IfP/47x3C24iiro675A75FjuG0J6uvr8Xg8d8woskJkihSIDJienuaD\ntlGKVzViNBqJhEO8ffwtKivKMZvNjAwPcrI1ROGKrczaIvjOvIhlyV76O1sIDZyhbMU6poKlGL1e\nBodjGG3ZhMLDfNDSRU/bWRqX27HqYfqPv0KR28ETX/83hEIhDAYDBQUbb8iNYh65/17KSpoZHJ8m\n15XF3Q3117werTUDAwMEg0Hcbjd5eXnMzMwwEjaTt3Ql/cPjjFuW0tH5Js3nXqZqRTcVbgNfe3Lv\nNd3GUwhxfaRAZEAkEkGZHZduP2mx2ogbzESjUaLRKNPxLLZvW09H7yhOh5WaZRV4ghcZPPkhBfl5\nWM0WKu2KiCNMxOUkludm09JilpR4me5o5QsPf5GsrCzi8fhNu8WlxWJhy8brO5fx3tETnOoNYszy\non2n2d1QzpKiAkpys7nY2cJwxIk2WJge7cOy/C5apy2MhRN85//8hG9//ct09Axhs5pYtWK57FUI\nsYCkQGSAy+XCrn1Mjg3j8uYzNthDQZYBu91OMBgEoKK8jMql5UxMTvDrD5to6RggnLuSrPEYXsYp\nzIPg5BAz7d2srS5ny66HUcrAaKgPe/IOZpm4//FnNTExwenuGUpX78JgMBAJV3Hw5Ft8+bEKGtdV\nMXOkjb5hTcw/js2gcdTdR0IZyC1wcuTnT/Hs6ycpqdtCdDZI++tHeGzfVpxOZ6Z/LSFuC1IgMsBi\nsfDgPXfz5vunGO6epaTAxa5dG1FK4XA4qF7i5ELrKXLySzn63rtMjg6iah6geOV2xvraMYTO4zIN\ns29nPZ2lCvJXMTk6RHC8h+31SzNyz+PrFY1GMVgclzJbrDbiGInH49yzfRN5bie/ePUQ4dIiBnou\nEk6A12khOD1JwpxNduFyPHlzPb37QgH6+weorf3k0NjxeJxAIIDNZkt5D24hxCdJgcgQj8fDY5+/\nJ+Wyxm0byW0+z8hkB+XGIQZKawnleDEYTDg8hcz2tlJZXcrn92wntmsz7R2d+GenKVi+9JbrnOZ2\nu7EnppkYGSTHk8foQBclXtulK5XWrllNWWkJ7x1v5vSRMEMdfyBRUIbBEGZ5YRY2x/y9BU2qbhej\no6O8evAkgYQFsw6xd8tqSktv/n2hhbjVpNWT+ma4U3tSf+T8+fP85x/8gWlLCZGcSlQsgGfyOP/1\nz/dRX1939Te4BUxOTvLO0dNMzgQpLXCxbWPDpcNk8w0NDfH9n/6G9iEfBh1jU00euKtwLllBNBLE\nNtPBY/u343A4Lr0mHo/z7EtvYCjeQLbbS3DWz0z7Ib744M6U6xDidpHxntTixluxYgV/em8vr57o\nZcp/FKchzBMPrLttigPM7U09vG/XVdvZ7XaKlpSQu3I5TmcOwbFualwhrOYBrA4T9Zu3fqw4wFwn\nvtmYiWL3XD8Te5aTKUsOfr9fCoQQVyEF4hZw/77PsW713GWgLpfrth8ILxKJMDMzg9VqJTs7G5jr\nVPjz3/yB4xNOVnutePMLiWa7GO89zBf2bPjU97LZbFiJMOubJivbRTgUhIjvqveGFkJIgbglKKUo\nKbkzjplPTEzwctMxgsqJjsyyua6YqooyXmo6RdhdgyluoHU0htY9LMl1YTNf+Uoto9HI/h0N/O7g\nYaZNTlTEz+c21n5iT0MI8UlyDkIsKr94+Q1C3tW4cwuIx2IMNB9kQ0UWJ8adFJQu48ihg0wacolO\n9bJpqYMHt9ddU/EMh8P4/X4cDoccWhJ3hIU4B3HrXA8pbntaa8ZngrhzCwAwmkwYHF4ikQiJSBCz\nxcqmbTuo9sSoc4zx+J6GS8UhkUjg9/sJh1PfH9tqtZKbmyvFQYjPQA4xiUVDKcUSr5OxoV7yisqI\nhEMwO0rtprVMnGim5/wJjNYsshNTPPjovkvjSfn9fl5tOsJ4yADxMNvXVFJfV5vh30aIW58cYhKL\nis/n49W3jzIRVBgSEXatr6amehmxWIyenh4ikSgFBfkfG/32ldcPMmwsJ794KdFIhOFzh3j8nlW3\n/cl8Ia5ELnMVt53s7Gwe+/w9BINBLBbLpV7PJpPpUwfmGxibIX9NKQBmiwVDdgE+n08KhBBpknMQ\n4oZIJBL09/fT3d2N3+//TK81GAxkZWVd85AYBe4spsaGgbmOcXH/mFzGKsQCkENMYsHF43HeeOcw\n7ZMGDBYH5uAwDzWuu2F/0U9PT/PKW0fxaQc6EmBjbRHrG1bfkHUJcatYiENMUiDEguvu7uaVk8OU\n1W0EYHpilKypZh69r/GGrTMajeLz+bBYLDKaqxDIOQixSEUiEQzWnEvTDmcO/sHIDV2n2Wz+2Ilr\nIUT65ByEWHC5ubkw00fA7yORSDDcfYGqktxMxxJCfEZyiEncED09vbx9rIVQJEZteQFb7m6Q+zAI\ncRPJOQghhBApyVAbQgghbhgpEEIIIVKSAiGEECIlKRBCCCFSuu4CoZTyKqUOKKValVKvKaXcn9Ju\nv1LqvFKqTSn1NymW/5VSKqGUkovYhRBiEUlnD+JbwAGtdQ3wRnL6Y5RSRuB7wH5gJfCkUqpu3vIy\n4F6gO40cQgghboB0CsRDwDPJ588Aj6RosxFo11p3aa2jwHPAw/OW/y/gr9PIIIQQ4gZJp0AUaq2H\nk8+HgcIUbUqA3nnTfcl5KKUeBvq01qfTyCCEEOIGueJYTEqpA0BRikXfnj+htdZKqVS92VL2cFNK\n2YG/Ze7w0qXZV44qhBDiZrpigdBa3/tpy5RSw0qpIq31kFJqCTCSolk/UDZvuoy5vYhlQAXwoVIK\noBQ4rpTaqLX+xPs8/fTTl543NjbS2Nh4pdhCCHHHaWpqoqmpaUHf87qH2lBK/XdgXGv9XaXUtwC3\n1vpbl7UxAReAPcAAcBR4Umt97rJ2F4G7tNYTKdYjQ20IIcRnlOmhNv4bcK9SqhXYnZxGKVWslHoF\nQGsdA74G/AFoAZ6/vDgkSQUQQohFRgbrE0KI21Cm9yCEEELcxqRACCGESEkKhBBCiJSkQAghhEhJ\nCoQQQoiUpEAIIYRISQqEEEKIlKRACCGESEkKhBBCiJSkQAghhEhJCoQQQoiUpEAIIYRISQqEEEKI\nlKRACCGESEkKhBBCiJSkQAghhEhJCoQQQoiUpEAIIYRISQqEEEKIlKRACCGESEkKhBBCiJSkQAgh\nhEhJCoQQQoiUpEAIIYRISQqEEEKIlKRACCGESEkKhBBCiJSkQAghhEjpuguEUsqrlDqglGpVSr2m\nlHJ/Srv9SqnzSqk2pdTfXLbs60qpc0qps0qp715vFiGEEAsvnT2IbwEHtNY1wBvJ6Y9RShmB7wH7\ngZXAk0qpuuSye4CHgDVa61XA/0gjy03V1NSU6QgpLcZckunaSKZrtxhzLcZMCyGdAvEQ8Ezy+TPA\nIynabATatdZdWuso8BzwcHLZvwW+k5yP1no0jSw31WL9MizGXJLp2kima7cYcy3GTAshnQJRqLUe\nTj4fBgpTtCkBeudN9yXnAVQDO5VSh5VSTUqpDWlkEUIIscBMV1qolDoAFKVY9O35E1prrZTSKdql\nmjd/3R6t9Wal1N3Az4Gqq+QVQghxs2itr+sBnAeKks+XAOdTtNkMvDpv+ingb5LPfw/smresHchN\n8R5aHvKQhzzk8dkf1/v/+0ePK+5BXMVLwJeA7yZ/vpiizTGgWilVAQwAfww8mVz2IrAbeFspVQNY\ntNbjl7+B1lqlkVEIIcR1Usm/0j/7C5XyMndYqBzoAv5Iaz2llCoGfqC1vj/Z7j7gHwAj8COt9XeS\n883Aj4EGIAL8lda6Ka3fRgghxIK57gIhhBDi9pbRntRX6kQ3r83/Ti7/UCm17rO8NgOZfqyUGlZK\nnVmoPOlkUkqVKaXeUko1Jzsj/vtFkMmmlDqilDqllGpRSn0n05nmLTMqpU4qpX67UJnSzaWU6lJK\nnU7mOrpIMrmVUi8kO7m2KKU2ZzKTUqo2uX0+ekwv1Hc9ze30VPLf3hml1M+UUtaFyLQAub6RzHRW\nKfWNK64o3ZMYaZzkNjJ3YroCMAOngLrL2nwe+F3y+Sbg8LW+9mZnSk7vANYBZxbJdioCGpLPncCF\nRbKdHMmfJuAwsD3TmZLz/iPw/4CXFsPnl5y+CHgXKs8CZXoG+LN5n6Er05nmtTEAg0BZJjMlX9MJ\nWJPTzwNfyvTnB6wCzgC25PscAJZ92royuQdxpU50H7nUGU9rfQRwK6WKrvG1NzsTWuuDwOQC5FiI\nTIVa6yGt9ankfD9wDijOZKbkdCDZxsLcl3Qi05mUUqXM/aP6IbCQF0aklStpoS/UuO5MSikXsENr\n/ePkspjWejqTmS5r8zmgQ2vdS/rSyTQDRAGHUsoEOID+BciUTq4ioA44orUOaa3jwNvAv/q0FWWy\nQFypE93V2hRfw2tvdqYb5Xozlc5voOauJFsHHMl0puShnFPMdbB8S2vdksFMH7X5e+CbQGIBsixk\nLg28rpQ6ppT6iwxnKgUqgVGl1P9VSp1QSv1AKeXIcKb5vgD8bAHypJOpRGs9AfxPoIe5KzintNav\nZzhXMXN7DzvU3Fh6DuB+PrkNL8lkgbjWs+M38zLX6810I8/0p51JKeUEXgC+kdyTyGgmrXVca93A\n3Bdzp1KqMYOZlFLqAWBEa30yxfJ0pfs93661XgfcB/ylUmpHBjNp5g4prQf+UWu9HpglxThsNznT\n3AKlLMCDwC8WIE86mVBKLQP+A3OHgYoBp1Lqi5nOpbU+z1zXhNeY64t2kiv8UZTJAtEPlM2bLmOu\nyl2pTWmyzbW89mZmWqhdxwXPpOYuJ/4l8FOtdaq+Kjc900eShyZeARZimJV0Mm0FHlJKXQSeBXYr\npf55ATKlmwut9UDy5yjwa+YOL2QyUx/Qp7X+IDn/BeYKRiYzfeQ+4LheuHHd0sm0AXhPaz2utY4B\nv2Lue5bpXGitf6y13qC13gVMMXduMrWFOGlynSdaTEAHcxXWwtVPtGzmX060XPW1NzvTvOUVLOxJ\n6nS2kwL+Gfj7RfTZ5QHu5HM78A6wZzF8dsn5u4DfLpJt5QCyk8+zgEPA3kxvq+RnVpN8/jTw3Uxn\nSs57jgU6EbwAn10DcDb5HVfMnQ/4y0znSk4XJH+WM3deMudT17VQG/M6f9H7mKte7cBTyXlfBb46\nr833kss/BNZf6bWLINOzzB1vDDN3/O8rmcwEbGdu9/EUc7uSJ4H9Gc60GjiRzHQa+OZi+OzmLd/F\nAl7FlOa2qkpup1PM/WezWL7na4EPkvN/xQJcxbQAmbKAMZIFdZFsp78Gmpk77v8MYF4kud5J5joF\n3HOl9UhHOSGEECnJLUeFEEKkJAVCCCFESlIghBBCpCQFQgghREpSIIQQQqQkBUIIIURKUiCEEEKk\nJAVCCCFESv8ft/3x5E0OHOEAAAAASUVORK5CYII=\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x10c1f6110>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "plt.scatter(X_2d[:,0], X_2d[:, 1], c=y, alpha=0.3)\n", | |
| "plt.show()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 107, | |
| "metadata": { | |
| "collapsed": false | |
| }, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "image/png": "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\n", | |
| "text/plain": [ | |
| "<matplotlib.figure.Figure at 0x10ba9bb90>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| } | |
| ], | |
| "source": [ | |
| "from sklearn.lda import LDA\n", | |
| "lda = LDA(n_components=2) #creating a LDA object\n", | |
| "lda = lda.fit(X, y) #learning the projection matrix\n", | |
| "X_lda = lda.transform(X)\n", | |
| "\n", | |
| "plt.scatter(X_lda[:,0], X_lda[:, 1], c=y, alpha=0.3)\n", | |
| "plt.show()" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": { | |
| "collapsed": true | |
| }, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "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 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment