{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# This ipython codebook will show a performance comparison of different ML techniques for emotion recognition " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, we will import the libraries and the result file. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "UWR = pd.read_pickle(\"files/UWR.csv\") #File containing the Average Unweighted Recall result for each speaker \n", "Conf_Mat = pd.read_pickle(\"files/Conf_Mat.csv\") #File containing the confusion matrix for each speaker " ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
speakersBaseline_GNBSVMRF
010.5775810.6028940.569329
120.6733770.667770.675786
230.6126960.6066810.607089
340.7087010.7015450.704852
450.6166610.6503860.625562
560.6505140.6575590.672715
670.5324160.5724040.593489
780.5748370.5798890.600976
890.731450.7765050.746929
9100.6218170.7158740.671381
\n", "
" ], "text/plain": [ " speakers Baseline_GNB SVM RF\n", "0 1 0.577581 0.602894 0.569329\n", "1 2 0.673377 0.66777 0.675786\n", "2 3 0.612696 0.606681 0.607089\n", "3 4 0.708701 0.701545 0.704852\n", "4 5 0.616661 0.650386 0.625562\n", "5 6 0.650514 0.657559 0.672715\n", "6 7 0.532416 0.572404 0.593489\n", "7 8 0.574837 0.579889 0.600976\n", "8 9 0.73145 0.776505 0.746929\n", "9 10 0.621817 0.715874 0.671381" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "UWR" ] }, { "cell_type": "code", "execution_count": 6, "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", "
speakersBaseline_GNBSVMRF
01[[40, 10, 15, 6], [5, 53, 6, 4], [4, 11, 12, 3...[[42, 17, 12, 0], [2, 59, 3, 4], [5, 18, 11, 3...[[38, 18, 12, 3], [3, 59, 4, 2], [4, 22, 9, 31...
12[[33, 2, 4, 1], [8, 70, 16, 7], [1, 7, 13, 18]...[[37, 2, 1, 0], [7, 85, 8, 1], [6, 15, 10, 8],...[[37, 2, 0, 1], [6, 82, 8, 5], [3, 12, 11, 13]...
23[[26, 0, 7, 2], [11, 79, 12, 8], [9, 12, 22, 9...[[30, 1, 3, 1], [11, 91, 1, 7], [13, 23, 10, 6...[[30, 2, 2, 1], [8, 94, 1, 7], [3, 28, 13, 8],...
34[[27, 9, 4, 0], [26, 80, 7, 22], [3, 4, 42, 21...[[26, 13, 1, 0], [7, 111, 7, 10], [8, 16, 36, ...[[26, 14, 0, 0], [10, 107, 6, 12], [13, 10, 39...
45[[33, 1, 3, 1], [9, 79, 11, 3], [23, 3, 13, 14...[[34, 2, 2, 0], [2, 95, 2, 3], [23, 8, 12, 10]...[[31, 4, 2, 1], [3, 95, 2, 2], [23, 7, 13, 10]...
56[[57, 4, 17, 10], [19, 98, 14, 17], [22, 10, 3...[[66, 9, 5, 8], [5, 128, 5, 10], [18, 28, 29, ...[[67, 8, 7, 6], [8, 120, 8, 12], [26, 18, 28, ...
67[[58, 6, 35, 12], [6, 72, 9, 9], [1, 2, 0, 4],...[[67, 15, 17, 12], [4, 83, 3, 6], [0, 3, 0, 4]...[[61, 14, 22, 14], [3, 86, 1, 6], [0, 2, 1, 4]...
78[[34, 9, 16, 6], [14, 61, 17, 15], [7, 15, 22,...[[35, 17, 11, 2], [7, 78, 9, 13], [4, 31, 15, ...[[37, 17, 10, 1], [9, 72, 10, 16], [8, 25, 17,...
89[[32, 4, 6, 1], [1, 118, 3, 6], [11, 6, 30, 23...[[35, 3, 4, 1], [1, 121, 0, 6], [6, 12, 37, 15...[[36, 4, 2, 1], [1, 121, 1, 5], [10, 14, 28, 1...
910[[30, 5, 11, 3], [25, 92, 33, 13], [2, 4, 28, ...[[35, 5, 7, 2], [4, 132, 17, 10], [3, 5, 32, 8...[[34, 7, 7, 1], [11, 122, 20, 10], [3, 6, 30, ...
\n", "
" ], "text/plain": [ " speakers Baseline_GNB \\\n", "0 1 [[40, 10, 15, 6], [5, 53, 6, 4], [4, 11, 12, 3... \n", "1 2 [[33, 2, 4, 1], [8, 70, 16, 7], [1, 7, 13, 18]... \n", "2 3 [[26, 0, 7, 2], [11, 79, 12, 8], [9, 12, 22, 9... \n", "3 4 [[27, 9, 4, 0], [26, 80, 7, 22], [3, 4, 42, 21... \n", "4 5 [[33, 1, 3, 1], [9, 79, 11, 3], [23, 3, 13, 14... \n", "5 6 [[57, 4, 17, 10], [19, 98, 14, 17], [22, 10, 3... \n", "6 7 [[58, 6, 35, 12], [6, 72, 9, 9], [1, 2, 0, 4],... \n", "7 8 [[34, 9, 16, 6], [14, 61, 17, 15], [7, 15, 22,... \n", "8 9 [[32, 4, 6, 1], [1, 118, 3, 6], [11, 6, 30, 23... \n", "9 10 [[30, 5, 11, 3], [25, 92, 33, 13], [2, 4, 28, ... \n", "\n", " SVM \\\n", "0 [[42, 17, 12, 0], [2, 59, 3, 4], [5, 18, 11, 3... \n", "1 [[37, 2, 1, 0], [7, 85, 8, 1], [6, 15, 10, 8],... \n", "2 [[30, 1, 3, 1], [11, 91, 1, 7], [13, 23, 10, 6... \n", "3 [[26, 13, 1, 0], [7, 111, 7, 10], [8, 16, 36, ... \n", "4 [[34, 2, 2, 0], [2, 95, 2, 3], [23, 8, 12, 10]... \n", "5 [[66, 9, 5, 8], [5, 128, 5, 10], [18, 28, 29, ... \n", "6 [[67, 15, 17, 12], [4, 83, 3, 6], [0, 3, 0, 4]... \n", "7 [[35, 17, 11, 2], [7, 78, 9, 13], [4, 31, 15, ... \n", "8 [[35, 3, 4, 1], [1, 121, 0, 6], [6, 12, 37, 15... \n", "9 [[35, 5, 7, 2], [4, 132, 17, 10], [3, 5, 32, 8... \n", "\n", " RF \n", "0 [[38, 18, 12, 3], [3, 59, 4, 2], [4, 22, 9, 31... \n", "1 [[37, 2, 0, 1], [6, 82, 8, 5], [3, 12, 11, 13]... \n", "2 [[30, 2, 2, 1], [8, 94, 1, 7], [3, 28, 13, 8],... \n", "3 [[26, 14, 0, 0], [10, 107, 6, 12], [13, 10, 39... \n", "4 [[31, 4, 2, 1], [3, 95, 2, 2], [23, 7, 13, 10]... \n", "5 [[67, 8, 7, 6], [8, 120, 8, 12], [26, 18, 28, ... \n", "6 [[61, 14, 22, 14], [3, 86, 1, 6], [0, 2, 1, 4]... \n", "7 [[37, 17, 10, 1], [9, 72, 10, 16], [8, 25, 17,... \n", "8 [[36, 4, 2, 1], [1, 121, 1, 5], [10, 14, 28, 1... \n", "9 [[34, 7, 7, 1], [11, 122, 20, 10], [3, 6, 30, ... " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Conf_Mat" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Average Unweighted Recall using Support Vector Machine with RBF kernel is 65.32%, using Random Forest is 64.68% and using Baseline_GNB is 63.00%\n" ] } ], "source": [ "UWR_SVM = sum(UWR[\"SVM\"].to_list())/len(UWR)*100\n", "UWR_RF = sum(UWR[\"RF\"].to_list())/len(UWR)*100\n", "UWR_Baseline_GNB = sum(UWR[\"Baseline_GNB\"].to_list())/len(UWR)*100\n", "print(\"Average Unweighted Recall using Support Vector Machine with RBF kernel is {0:.2f}%, using Random Forest is {1:.2f}% and using Baseline_GNB is {2:.2f}%\".format(UWR_SVM, UWR_RF, UWR_Baseline_GNB))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, we will plot the UWR result for each speaker " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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d7TWfpqxTWGeXVV7jKDOofrJT36Sxz3ucUmSDRs25IUvfGGe+cxnZunSpfnUpz6VJNm4cWNe8pKXZNmyZXnGM56RCy+8MElyzTXX5AUveEEOOuigvPjFL84tt9zyM+c/7LDDcvXVVydJFixYkLe+9a1ZtmxZDj744Nx6661JkrVr1+aYY47Js571rDzrWc/KP/zDP2yx3j/6oz/KmWeemQMOOGBz21FHHZXnP//5mz+/4Q1vyJ/92Z/lvvvu2+Z7BwAAZs5I1gS21jZW1cVJ3lFVr0myPMlLkzx3iu7/lOSEqvpSkjuTnJLk5tbabaOoddDuuuuuLF++PHfffXduueWWfOELX0gy9pL0Sy65JAsXLsxtt92Wgw8+OEcddVQuv/zy7Lnnnrn00rH1i+vWrcu9996b0047LZ/61KeyePHiXHjhhXnrW9+6xRG4ZCxMHnzwwXnnO9+Zt7zlLfnLv/zL/M7v/E5e//rX541vfGOe97zn5Xvf+15e/OIX5/rrr5/yHKtXr86b3vSmrd7f3nvvnec973k5//zzc+SRRz7ou+9+97tZvnx51q9fnzvvvDNf+9rXpvPoAACAIRjly+JPSfLhJD9KcnuS17bWVlfVoUn+prW2YLzfm5K8L8k/J9k5yaokR4+wzoHaNB00Sa666qqccMIJWbVqVVprOfPMM/OVr3wlO+20U37wgx/k1ltvzdKlS/OmN70pv/3bv50jjjgihx56aFatWpVVq1blRS96UZLk/vvvzxOf+MStXnfnnXfOEUcckSQ56KCD8rnPfS5J8vnPf/5B6wZ/8pOfZP369dltt6mWZ/5ft99+e174whfmzjvvzMknn/ygcHjmmWfmqKOOykte8uCNcjZNB02SCy+8MCeffHIuv/zybXlsAADAkIwsBLbW7kjysinar8jYxjGbPt+esR1BZ53nPOc5ue2227J27dpcdtllWbt2ba655prMmzcvS5Ysyd133539998/11xzTS677LKcccYZOfzww3P00UfnwAMPzFVXXbXN15o3b97md/DNmTNn83TNBx54IFdddVXmz5//kOc48MAD841vfCPLli3LokWLsnLlyrznPe/Jhg0bHtTvqU99apYvX55PfOITWzzXUUcdlZNOOmmb6wcAAIZjlCOBM26mX+nw7W9/O/fff38WLVqUdevW5fGPf3zmzZuXL37xi7nxxhuTJDfffHN23333/Pqv/3oWLFiQc889N6effnrWrl2bq666Ks95znNy77335oYbbsiBB07/9YmHH354PvCBD+TNb35zkmTlypVZvnz5lH3f8pa35Oijj87BBx+8eV3gnXfeOWXft771rT8zEjjRlVdemX333Xfa9QIAAIPVVQicCZvWBCZJay3nnXde5syZk+OPPz5HHnlkVqxYkeXLl+fpT396kuS6667Lm9/85uy0006ZN29ezj777Oy888656KKL8rrXvS7r1q3Lfffdlze84Q3bFQLf97735dRTT80v/uIv5r777svzn//8fPCDH5yy79KlS/Pe9743J5xwQtavX59FixZl7733zu///u//TN8DDzwwz3zmM/ONb3xjc9umNYGttey888750Ic+NO16AQCAwarW2kzXMBArVqxom3bG3OT6669/0M6WPDz5ewIAgB1XVde01lY8VL9RvSICAACAhwHTQclHPvKRvPe9731Q2yGHHJKzzjprhioCAACGRQgkJ510kp07AQCgE6aDAgAAdEQIBAAA6IgQCAAA0JG+1gS+/TEDPt+6ber2zne+Mx/72McyZ86c7LTTTnniE5+Y5cuX513vetfmPitXrsyxxx6b66+/PkuWLMmTn/zkXHHFFZu/X758ee67776sWrVqsPcAAMAj1/b+9+02/ncss1NfIXAGXHXVVfnsZz+bb3zjG3nUox6V2267LatXr85JJ530oBB4wQUX5Ljjjtv8ef369fn+97+fJz/5ybn++utnonQAAGAWMh10yG655ZbsscceedSjHpUk2WOPPfKCF7wgj33sY/O1r31tc79PfOITeeUrX7n586/92q/lwgsvTJJ8/OMfz7HHHjvawgEAgFlJCByyww8/PN///vez//7755RTTsmXv/zlJMmxxx6bCy64IEnyj//4j1m0aFH222+/zcf96q/+ai6++OIkyWc+85kceeSRoy8eAACYdYTAIVuwYEGuueaanHPOOVm8eHFe8YpX5Nxzz80rX/nKXHTRRXnggQdywQUX/MxI3+67757HPe5xueCCC3LAAQfk0Y9+9AzdAQAAMJtYEzgCc+bMyWGHHZbDDjssS5cuzXnnnZdXv/rVWbJkSb785S/nk5/8ZK666qqfOe4Vr3hFTj311Jx77rmjLxoAAJiVhMAh+853vpOddtpp81TP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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ax = UWR[[\"Baseline_GNB\", \"SVM\", \"RF\"]].plot(kind='bar', title =\"ML Algorithm Comparison\", figsize=(15, 10), legend=True, fontsize=12)\n", "ax.set_xlabel(\"Speaker\", fontsize=12)\n", "ax.set_ylabel(\"performance\", fontsize=12)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The results show that SVM and RF has better performance than our baseline Gaussian Naive Bayes model. However, we need to test if the 'better' result is statistically significant. We will claim significance if p-value<0.05" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Statistical significance between SVM and baseline is 0.04676954353813417 and RF and baseline is 0.050187722660954615\n" ] } ], "source": [ "from scipy.stats import ttest_rel\n", "\n", "stat_SVM, p_SVM = ttest_rel(UWR[\"Baseline_GNB\"].to_list(), UWR[\"SVM\"].to_list()) #Comparison between GNB and SVM\n", "stat_RF, p_RF = ttest_rel(UWR[\"Baseline_GNB\"].to_list(), UWR[\"RF\"].to_list()) #Comparison between GNB and SVM\n", "\n", "print(\"Statistical significance between SVM and baseline is {} and RF and baseline is {}\".format(p_SVM, p_RF))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Therefore performance of SVM is significantly better than the baseline Gaussian NB as p-value .0467<.05 and for RF, the performance is almost significant as p-value is very near to .05" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.4337881248285045\n" ] } ], "source": [ "#Performance of SVM vs RF\n", "stat_RF_SVM, p_RF_SVM = ttest_rel(UWR[\"SVM\"].to_list(), UWR[\"RF\"].to_list()) #Comparison between GNB and SVM\n", "print(p_RF_SVM)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Therefore, we cannto draw a statistical significant conclusion about SVM and RF performance " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Next we will focus on emotion specific performance of one of the model. Reasonably, we choose SVM" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "SVM_conf = Conf_Mat[\"SVM\"].to_list()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "#Let's add up all of them\n", "\n", "matrix = np.zeros((4,4))\n", "for i in range(10):\n", " matrix = matrix + SVM_conf[i]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[407., 84., 63., 26.],\n", " [ 50., 983., 55., 70.],\n", " [ 86., 159., 192., 124.],\n", " [ 22., 106., 66., 431.]])" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matrix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will write a function to plot the confusion matrix" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "def confusion_matrix_plot(cm, classes,\n", " normalize=False,\n", " title=None,\n", " cmap=plt.cm.Blues):\n", " \n", " \"\"\"\n", " This function will create a plot of confusion matrix and also show of per class performance\n", " \"\"\"\n", " if not title:\n", " if normalize:\n", " title = 'Normalized confusion matrix'\n", " else:\n", " title = 'Confusion matrix, without normalization'\n", "\n", "\n", " if normalize:\n", " cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]\n", " cm = np.around(cm, 2)\n", " print(\"Normalized confusion matrix\")\n", " else:\n", " print('Confusion matrix, without normalization')\n", "\n", " print(cm)\n", "\n", " fig, ax = plt.subplots()\n", " im = ax.imshow(cm, interpolation='nearest', cmap=cmap)\n", " ax.figure.colorbar(im, ax=ax)\n", " # We want to show all ticks...\n", " ax.set(xticks=np.arange(cm.shape[1]),\n", " yticks=np.arange(cm.shape[0]),\n", " # ... and label them with the respective list entries\n", " xticklabels=classes, yticklabels=classes,\n", " title=title,\n", " ylabel='True label',\n", " xlabel='Predicted label')\n", "\n", " # Rotate the tick labels and set their alignment.\n", " plt.setp(ax.get_xticklabels(), rotation=45, ha=\"right\",\n", " rotation_mode=\"anchor\")\n", "\n", " # Loop over data dimensions and create text annotations.\n", "\n", " thresh = cm.max() / 2.\n", " for i in range(cm.shape[0]):\n", " for j in range(cm.shape[1]):\n", " ax.text(j, i, format(cm[i, j]),\n", " ha=\"center\", va=\"center\",\n", " color=\"white\" if cm[i, j] > thresh else \"black\")\n", " fig.tight_layout()\n", " return ax\n" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Confusion matrix, without normalization\n", "[[407. 84. 63. 26.]\n", " [ 50. 983. 55. 70.]\n", " [ 86. 159. 192. 124.]\n", " [ 22. 106. 66. 431.]]\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "confusion_matrix_plot(matrix, ['Anger', 'Happy', 'Neutral', 'Sad'], normalize=False)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Normalized confusion matrix\n", "[[0.7 0.14 0.11 0.04]\n", " [0.04 0.85 0.05 0.06]\n", " [0.15 0.28 0.34 0.22]\n", " [0.04 0.17 0.11 0.69]]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUEAAAEYCAYAAADCj0QOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzsnXd8VFXTgJ8JIRRDB4EkdKSFXkSaFBGk2lCx8+pr++yKiqKCvaBiL9iwo6CAgAo2LLzSi4iKIoQSinQVkLLM98e5CZu2u5BsCZmH3/lx7z3nnjtn72Z2TpsRVcUwDKOoEhdtAQzDMKKJKUHDMIo0pgQNwyjSmBI0DKNIY0rQMIwijSlBwzCKNKYEj1JEZKSIvO0d1xSRf0SkWAE/I01EehZknSE88yoR2eS1p1I+6vlHROoWpGzRQkSWiUi3aMtRWDEleIR4CmCTiBzjd+2/IjIzimLliqquUdVEVfVFW5b8ICLFgSeAXl57th5pXd79KwtOuoJHRMaKyP3ByqlqqqrOjIBIRyWmBPNHPHB9fisRh72L4FQFSgLLoi1ILCAi8dGW4WjA/vDyxyhgqIiUzy1TRDqKyDwR2en939Evb6aIPCAis4DdQF3v2v0i8j+vuzZFRCqJyDsi8pdXR22/Op4SkbVe3gIR6ZKHHLVFREUkXkQ6eHVnpH9FJM0rFyciw0TkDxHZKiIfiEhFv3ouFJHVXt7wQB+MiJQSkce98jtF5HsRKeXlDfS6cDu8Njf2uy9NRIaKyI/efe+LSEkRaQAs94rtEJGv/NuV7XP9r3dcX0S+8erZIiLv+5VTEanvHZcTkTdFZLMn750ZP0oiMsST/TER2S4iq0SkT4B2p4nILZ78u0TkVRGpKiKfisjfIvKFiFTwKz9eRDZ6Mn4rIqne9cuB84FbM74LfvXfJiI/Aru8d5o5LCEin4jI4371vy8irwV6V0UeVbV0BAlIA3oCHwH3e9f+C8z0jisC24ELcRbjud55JS9/JrAGSPXyi3vXVgD1gHLAz8Bv3nPigTeB1/1kuACo5OXdDGwESnp5I4G3vePagALx2dqQ8cyHvPMbgNlAClACeAl4z8trAvwDnOjlPQEcAHrm8fk859WdDBQDOnr3NQB2ASd7z7/Va3OC3+c6F0jyPsNfgCtza0du7fKe+V/v+D1gOO7HviTQ2a+cAvW94zeByUAZr87fgEu9vCHAfuAyrx1XAesBCfC9mI2zWpOBP4GFQCuv/V8BI/zKX+I9twTwJLDYL28s3ncrW/2LgRpAKf/vondczXtmD5wSXQmUifbfSyynqAtQWBOHlGBTYCdQhaxK8EJgbrZ7fgCGeMczgXuz5c8EhvudPw586nc+wP+PJBeZtgMtvOORBFeCLwDTgDjv/BfgJL/86p4CiAfuBsb55R0D7CMXJegpnT0ZsmTLuwv4IFvZdKCb3+d6gV/+o8CLubUjt3aRVQm+CYwBUnKRQ4H6OMW2F2jil3eF33scAqzwyyvt3VstwPfifL/zD4EX/M6vBSblcW95r+5y3vlYcleCl+T2XfQ7PwNYC2zBT/Fbyj1ZdzifqOpPwFRgWLasJGB1tmurcdZBBmtzqXKT3/GeXM4TM05E5GYR+cXrSu3AWY+VQ5FbRK4AugHnqepB73ItYKLXTd2BU4o+nFWT5C+vqu4C8pqYqIyzvP7IJS/L5+I9ey1ZP5eNfse78WvzYXIrIMBcr/t9SR6yJpD1XWV/T5nyqOpu7zCQTCG9QxEpJiIPe8MPf+GUWYZMgcjte+PPVJxyX66q3wcpW+QxJVgwjMB1l/z/cNbjlIo/NXFWTwZH7MLHG/+7DTgbqKCq5XEWqYR4733Aqaq60y9rLdBHVcv7pZKqmg5swHXBMuoojeuK58YW4F9ctz47WT4XERGv3vRcygZjl/d/ab9r1TIOVHWjql6mqkk46+75jHHAbLLuJ+u7yv6ewsV5wKm4HkU5nGULh95hXt+PYN+bB3A/YNVF5Nx8ynjUY0qwAFDVFcD7wHV+lz8BGojIed7g9Tm4cbWpBfTYMrgxuc1AvIjcDZQNdpOI1PBkvUhVf8uW/SLwgIjU8spWEZFTvbwJQH8R6SwiCcC95PH98ay714AnRCTJs3g6iEgJ4AOgn4icJG7Jy8247uj/Dqv17jmbccrqAu8Zl+CneEXkLBFJ8U6345SHL1sdPk+mB0SkjNf2m4C3D1eeI6AMru1bcYr8wWz5m4DDWssoIicC/wEu8tIzIpIc+K6ijSnBguNe3DgZAOrWsPXH/ZFvxXXN+qvqlgJ63nTgU9wg/mqc5RWsmwRwEs5amiCHZogzlpw8BXwMzBCRv3ED/O299iwDrgbexVmF24F1AZ4zFFgKzAO2AY/gxh6X4yZ0nsFZYQOAAaq6L8R2Z+cy4BbcZ5xKVmXaDpgjIv947bpeVVflUse1OKtyJfC918ZIzKi+iXt36bhJsNnZ8l8FmnjDE5OCVSYiZb06r1HVdK8r/CrwumdxG7kg3kCqYRhGkcQsQcMwijSmBA3DKNKYEjQMo0hjStAwjCKNbcAG4kqW0bjEKtEWI180TqkQvFCME3eUzF/GF/KGrF6dxpYtWwq0EcXK1lI9sCdgGd2zebqqnlKQzw0FU4JAXGIVyg/IvkSrcPHxqNOiLUK+KRF/dHRMKiYmRFuEfNGpfdsCr1MP7KFEw7MDlvl38XMh7XYqaEwJGoYRfkQgrkB9+hYYpgQNw4gMMeoy05SgYRiRIUY3rZgSNAwjAlh32DCMooxg3WHDMIoyYt1hwzCKODFqCcamVIZhHGV4Y4KBUii1iJwiIstFZIWIZPfmnhFj+2sRWeQFu+obrE5TgoZhhB/BdYcDpWBViBTDBfDqg3NQfK6INMlW7E5cDJtWwGDg+WD1mhI0DCMySFzgFJzjcUGvVnpOeMfhwhP4oxzysF4OF84hIDYmaBhGBBAolu8lMslk9Z6+Ds/zuR8jcZ7Rr8V5eu8ZrFKzBA3DCD8ZS2QCW4KVRWS+X7o8l1qyk901/rnAWFVNAfoCb4kENjPNEjQMIzIEH/fboqqBvDeswy/iIZBCzu7upcApAKr6g4iUxIUw/TOvSs0SNAwjAhTI7PA84DgRqeNFPByMC6DlzxpcMDFEpDEu/vXmQJWaJWgYRmTI5zpBVT0gItfgIi0WA15T1WUici8wX1U/xkV3fFlEbsR1lYdokGhypgQNwwg/IS6DCYaqfoKL6e1/7W6/45+BTodTpylBwzAiQ4zuGDElaBhGBDAvMoZhFHVi1IFCbNqnhZQeTasx+8G+zH24H9f1bZwj//7Brfj6nt58fU9v5jzUlz+eOyMKUubkmy9ncNIJzeneLpUXnhqVI3/u/75nQI8OHFctkU8+/ihH/t9//0WHZnUZcdsNkRA3V77+Yjpd2jWlU+vGPDs6Zxtmz/qO3l3bU7NyaaZOztqG8wf1p3GtY7nonOjGaZkx/TOapzYktVF9Rj36cI78vXv3csF555DaqD5dOrZndVpalvw1a9ZQuXwio594LEISHwahrROMClF7soicLiIqIo2iJUNBEifCIxe25ZzR39Bp+Kec0b4mDZLKZilz57hFdB8xne4jpvPyF78zdcG6KEl7CJ/Px4hhN/D6uMlMn7WIKRPH8/vyX7KUSUqpwaPPjGHgmefkWsfoh+7h+I5dIiFurvh8Pobfcj1vj/+Yr2cvYdKH7/Pbr1nbkFyjBqOfe4XTBg3Ocf+V197EUy++Filxc8Xn83HDdVczecqnLPrxZ8aPe49ffv45S5mxr71KhfIVWPbrCq69/kaG33Fblvxbh95Ir1P6RFLsw6BgHCiEg2hagucC3+PW+oQNEYlIl7913Yqs+vNvVm/exX7fQSbOXUOfVsl5lj/jhFp8NHt1JEQLyJKF86hVux41a9chISGB/qedxeefTs1SJqVmLRqnNiMul1/rpUsWsmXzn3TpFnR3UthYtGAetevWo1btuiQkJHDqGWcz/ZMpWcrUqFmbJk2bEReXsw1duvYgsUyZSImbK/PmzqVevfrUqevacNY5g5k6ZXKWMlOnTOb8Cy8G4IwzBzHzqy/JWP3x8eRJ1KlTlyZNUiMue8iYJXgIEUnETWNfiqcERaSbiMwUkQki8quIvCPiBhFEpK937XsReVpEpnrXjxGR10Rknuc651Tv+hARGS8iU4AZkWhT9QqlWL9td+b5+m17qF6hVK5lUyqVplblY/julzwXsUeMjRvWUz05JfO8elIymzakh3TvwYMHefDuYQwbGd1wpRs3rCcp+dBGgupJyWwMsQ2xwvr16aSkHGpDcnIK6enpOcvUcGXi4+MpW64cW7duZdeuXTw+6hGG3zUiojIfNvn0IhMuojUxchrwmar+JiLbRKS1d70VkIrbCjML6CQi84GXgBNVdZWIvOdXz3DgK1W9RETKA3NF5AsvrwPQXFW35SaAty/xcoC4Y/If7lRy2daY1xLN09vX5OP5azkYeA1nZMhFBgnxC/n2ay/RrWfvLAooGuS2FjbUNsQKobQhrzL33TOCa6+/kcTExLDJl28s5GYOzgWe9I7HeefTgLmqug5ARBYDtYF/gJWqusor/x6e8gJ6AQNFZKh3XhKo6R1/npcCBFDVMcAYgPjKdfOtjdZv301SxdKZ50kVS7Fxx55cy55+fC1ue3t+fh9ZIFRLSmZD+qGxyQ3r0zm2WlJI9y6cP4d5s2fx9utj2L1rF/v37aP0MYncdvf94RI3V6onJbM+/ZBzkQ3r06kaYhtiheTkFNatO9SG9PR1JCUl5Syzdi0pKSkcOHCAv3bupGLFisybO4eJH01g+O23snPHDuLi4ihZoiRXXX1NpJsRkFj9YYq4EhSRSkAPoKmIKG77i+JWge/1K+rz5Av0yQlwpqouz/aM9sCugpQ7GItWbaPusWWoWfkYNmzfw+nH1+SKl37IUa5+tTKUPyaBeSu2RlK8PGneqi1pq1awdnUaVasnMXXSeJ58cWxI9/qXm/DeWyxdvCDiChCgZeu2rPpjBWtWr6Ja9WQmf/QBz738ZsTlyA9t27VjxYrfSVu1iqTkZMa/P46xb72bpUy//gN55603OKFDBz76cAJdu/dARPhy5neZZe6/dyTHJCbGngIkdpVgNMYEBwFvqmotVa2tqjWAVUDnPMr/CtQVkdreuf8U5XTgWr+xw1bhETk4voPKsHcWMP7mrvzvwb5MnreW5ev/YthpTTml5aFf9DPa12LinOhPiGQQHx/PyIdGc/HZA+jVqSX9Bp5Jg0ZNGP3wvXzxmZsgWbJoPh2b1+OTKR9x59Br6d25dZBaI0t8fDz3P/ok553Zn27tmzPgtEE0bNyEUQ/ewwxvgmTxwvm0Sa3L1MkfctuNV9O9Q8vM+0/v04MrhpzHrG+/pk1qXWZ+GZFh5BxtGP3Uswzo15uWzRpz5lln0yQ1lXtH3s3UKc5HwJBLLmXrtq2kNqrP008+wf0P5FxGE7OIIHGBU9REC7K3uOAfKDITeFhVP/O7dh1wFfCHqvb3rj2L2xQ9VkQGAKOALcBcoKqqni8ipXDd6o64H5s0Ve0vIkOAtqoa0s9hfOW6Wn5AdAf388u8UdFd41YQlIg/OpatVkxMiLYI+aJT+7YsWDC/QLVSsYp1tPTJIwOW+eeDIQuCuNIKCxHvDqtqt1yuPQ08ne2avwL7WlUbeRbfc8B8r8we4Ipc6hsLjC0woQ3DyDfWHc4fl3kTJctwcQNeirI8hmEcJiISMEWLQrF3WFVHA6OjLYdhGEeGSHTH/QJRKJSgYRiFH+sOG4ZRpCmI7nAIwddHi8hiL/0mIjuC1WmWoGEY4UfId3fYL/j6ybigS/NE5GPPmzQAqnqjX/lrcbvQAmKWoGEYEaEALMFQgq/7cy5uh1lAzBI0DCPsCCEpusqer4AMxnjbWzMIJfi6e55ILaAO8FWwh5oSNAwjIoTQHQ4WdziU4OsZDAYmqKov2ENNCRqGEX6kQGaHQwm+nsFg4OpQKrUxQcMwIkIBjAmGEnwdEWkIVAByejDJBVOChmFEhPwqQVU9AGQEX/8F+CAj+LqIDPQrei4wLljQ9QysO2wYRtgRCmbHSLDg6975yMOp05SgYRjhp2DGBMOCKUHDMCKCKUHDMIo05kDBMIwijVmChmEUWaLtMzAQpgQNw4gIuQW+jwVMCQItalVk1suDoy1GvqjQLraiix0JW+Y8E20RCoT9Bw5GW4R8EbaoQ7FpCJoSNAwjMlh32DCMIosIxNnssGEYRRebGDEMo4gTozrQlKBhGJHBLEHDMIosIlCsmClBwzCKMDFqCJoSNAwjMsRqdzg2l3AbhnFUkbFEJlAKrZ7AcYe9MmeLyM8iskxE3g1Wp1mChmFEgPwvkQkl7rCIHAfcDnRS1e0icmywes0SNAwjIogETiEQStzhy4DnVHU7gKr+GaxSU4KGYYSf0LrDlUVkvl+6PFstucUdTs5WpgHQQERmichsETklmGjWHTYMI+wIIU2MFETc4XjgOKAbLiTndyLSVFV35FWpWYKGYUSEAugOhxJ3eB0wWVX3q+oqYDlOKeaJKUHDMCJCAcwOhxJ3eBLQHUBEKuO6xysDVWrdYcMwwk8BRJtT1QMikhF3uBjwWkbcYWC+qn7s5fUSkZ8BH3CLqm4NVK8pQcMwwo4bE8x/PcHiDnsB12/yUkiYEjQMIwKYKy3DMIo45lTVMIyiS+gzwBHHZofzyYzpn9E8tSGpjeoz6tGHc+Tv3buXC847h9RG9enSsT2r09Ky5K9Zs4bK5RMZ/cRjEZI4Jyd3bMySiXfx0+QRDP3PyTnya1SrwGdjruOH925j7vu307tzEwBqVq/Ith+eYPa4YcweN4ynh0cvWNXn0z+jVdNGNG98HI+Pyv09XHT+YJo3Po5unU/IfA+r09KoXK40Hdq1okO7Vlx39ZURlvwQn8/4jNbNG9MitQFPjHokR/7evXsZcsFgWqQ2oHuXDqxenZaZ99PSHzmpayeOb92ME9q24N9//42g5MHJWCcYKEWLiFqCIvKPqib6nQ8B2qpqoQyV5vP5uOG6q5n26eckp6TQ+YR29O8/kMZNmmSWGfvaq1QoX4Flv67gg/fHMfyO23j73fcz828deiO9TukTDfEB10V5ctjZ9LvqWdI37eD7d25h6jdL+XXlxswyt/33FD78fCEvj/+eRnWrMemZq2jUbwQAK9dt4YTBOZVOJPH5fNx0/TV8/MkMklNSOLHj8fTtP5DGjQ+9hzdef5Xy5cvz4y+/M/6Dcdw1fBhvvjMOgDp16/HDvEXREh9wbbj5hmuZPG06yckpdOvcnr79B9DIrw1vjn2N8hUqsGTZb0z4YBwjhg9j7NvjOHDgAJddchFjXn2DZs1bsHXrVooXLx7F1uROrHaHzRLMB/PmzqVevfrUqVuXhIQEzjpnMFOnTM5SZuqUyZx/4cUAnHHmIGZ+9SVuAgs+njyJOnXq0qRJasRlz6Bd09r8sXYLaelb2X/Ax/jpC+nfrXmWMqpK2WNKAlAusRQbNu+Mhqh5Mn/eXOr6vYdBZ5/DtGzvYdqUjzPfw+lnDGLm14feQyzg2lCPOnVcG8486xymTc26BG7a1Mmce/5FAJx2xiBmzvwKVeXLL2aQ2rQZzZq3AKBSpUoUK1Ys4m0IRqxagjGjBEVkgIjMEZFFIvKFiFT1ro8UkbdE5CsR+V1ELvOudxORb0Vkouc250URiRORS0VktF+9l4nIE+GQef36dFJSDi1gT05OIT09PWeZGq5MfHw8ZcuVY+vWrezatYvHRz3C8LtGhEO0kEk6thzrNm3PPE/ftJ3kKuWylHngpU8Y3Pd4Vnx2HxOfuYqbHhmfmVc7uRI/vHcbM165nk6t6kVMbn/cZ5ySeZ6cnML63N5DyqH3UK6sew8Aq9NW0fH41vTu2Y1Z338XOcH92JDtu5SUnJyjDRvWr8/ShrJly7Ft61ZW/P47IsJpA06hS4e2PPn4qIjKHhJBdotEc7ww0hMjpURksd95RQ6t+P4eOEFVVUT+C9wK3OzlNQdOAI4BFonINO/68UATYDXwGXAGzrPEjyJyq6ruB/4DXJFdEG9z9uUANWrWPKLG5GZJZP9Fy6vMffeM4NrrbyQxMTFHfiSRXLZjZpf47FPa8vaU2Tz11le0b16HV++/iDaDHmTjlr9o0Odutu3cRavGNfjgictpPegB/t4V2fGo/LyHatWr88uK1VSqVIlFCxcw+KzTmbfoJ8qWLRs2eXPjSNuACL4DB5j9v1nM/H4OpUqXZkCfk2nZujXdup8ULnEPGyF0n4GRJk9LUETKBkpH+Lw9qtoyIwF3++WlANNFZClwC+DfR5ysqntUdQvwNU75Acz13Or4gPeAzqq6C/gK6C8ijYDiqro0uyCqOkZV26pq2yqVqxxRY5KTU1i37pBTi/T0dSQlJeUss9aVOXDgAH/t3EnFihWZN3cOw2+/lYb1a/Ps008y6uEHeeG5Z49IjvyQ/ucOUqpWOCRv1Qqsz9bdvfi0Dnw4YyEAc35cRcmE4lQufwz79h9g285dACz6ZS0r123huFpB3bcVOO4zXpd5np6+juq5vYd1h97Dzr/ceyhRogSVKlUCoFXrNtSpW48Vv/8WOeE9krJ9l9anp+doQ1JycpY2/OW1ISk5mU5dTqRS5cqULl2aXqf0Ycmi6I5x5kacSMAUNbkC5C0DfvL+X5bt/KcwyPIM8KyqNsNZbiX98rL/BGqQ668AQ3BW4OsFK+Yh2rZrx4oVv5O2ahX79u1j/Pvj6Nd/YJYy/foP5J233gDgow8n0LV7D0SEL2d+x/IVaSxfkcY1193ALcPu4KqrIz8/NH/ZaurXrEKtpEoUjy/GWb1bM23mj1nKrN24jW7HNwSgYZ2qlCxRnM3b/6FyhcTMX/fayZWoX7MKq9ZtiXgb2rRtxx9+72HCB+/TN9t76Nt/QOZ7mPjRBLp2c+9h8+bN+Hw+AFatXMkfK36ndp26UWnDyhUrSEtzbfhw/Pv07Tcgaxv6DeS9d94EYNJHE+jatTsiwkkn92bZT0vZvXs3Bw4cYNZ339KwceOItyEYha47rKo18soLE+WAjEGQi7PlnSoiD+G6w92AYbiN0ceLSB1cd/gcYAyAqs4RkRpAa1xXOizEx8cz+qlnGdCvNz6fj4uHXEKT1FTuHXk3rdu0pf+AgQy55FIuGXIhqY3qU6FCRd7yZiRjBZ/vIDc+8gFTnr+aYnHCG5Nn88vKjdx1VT8W/ryGad8sZdgTE3n+rnO59oLuqMJld78FQOfW9bnrqn4c8Pnw+ZRrHxjH9r92R7wN8fHxPP7kM5zW/xR8Ph8XDvkPTZqkct89d9O6dVv6DRjIxf+5lP/+5yKaNz6OChUrMvat9wCY9f233H/PCOLj4ylWrBhPPfMCFStWjEobRo1+mtMH9HFtuPg/NG6Syv33jqB16zb07T+Qi4ZcwuWXXESL1AZUqFCR199ynuMrVKjA1dfdQLfO7RERevXuwyl9+kW8DYGQAtg7HC4klBkyERkM1FXVB0UkBaiqqgsO+2EBlsiIyKnAaJwinA20U9VuIjISSALqATWBR1X1ZRHphutObwaaAd8C/6eqB726hwEtVTXo4rU2bdrqrDnzD7c5MUWFdoVylVEWtsx5JtoiFAgHD8bOrPOR0LXT8SxcML9ANVa5Wo210+1vBCzz6VXtFwTxJxgWgk6MiMizQHHgROBBYDfwItDucB/mrwC987HAWO94MjA5510A/Kaq2b3MAuxW1XPyuKczTqkahhEDxKghGNISmY6qegXwL4CqbgMSwipVPhCR8iLyG24S5stoy2MYhrdjJMi/aBHKEpn9IhKHN+kgIpWAg2GVyg9VHZnH9ZnAzFyu78CNFxqGESuIUKywLZHx4zngQ6CKiNyDW8+Xc2OjYRhGAApidjhY3GERGSIim0VksZf+G6zOoJagqr4pIguAnt6ls1Q1HEtkDMM4ShHI91rAUOIOe7x/OP4IQt0xUgzYj+sSx8xWO8MwCg8FsGMkM+4wgIhkxB3OrgQPT65gBURkOG43RhJuV8e7InJ7fh5qGEbRIlhX2DMSCyLuMMCZIvKjiEzw1gsHJBRL8AKgjarudo2RB4AFwEMh3GsYhgGE1B0uiLjDU4D3VHWviFwJvAH0CChXMKlwuzH8lWU8QULYGYZhZKcA9g4HjTusqltVda93+jLQJlileVqCnjsqxS2OXiYi073zXrgZYsMwjJBwEyP5riYz7jBuZ9lg4LwszxGprqobvNOBwC/BKg3UHc6YAV4GTPO7PjtUiQ3DMAAoAMepIcYdvk5EBgIHgG04RyoBCeRA4dV8SWwYhuFHhOIO3w4c1sRtKHuH6wEP4JyXZrq3UlXblWEYRkgIFOodI2NxPvkE6AN8gPPebBiGETKFOcZIaVWdDqCqf6jqnUD38IplGMbRhgRJ0SKUdYJ7xanpP7x1N+lA5H2oG4ZRaBGJ3e5wKErwRiARuA43NlgOuCScQhmGcfQRq56lQ3GgMMc7/Bu4MLziGIZxtBKjOjDgYumJ5NySkomqnhEWiQzDOOqQGPYnGMgSjHz8xyixz3eQ9G17oi1Gvpj4dnSDuBcEE5asDV6oEJBauVzwQjHMv/t8Yam30HWHzTW9YRgFSaz64AvVn6BhGMYRIxRCS9AwDKMgiY9RUzBkJSgiJfxc1BiGYYRMLAdfD8Wz9PEishT43TtvISJHR5RswzAiRpwETlGTK4QyTwP9ga0AqroE2zZnGMZhkOFAIVCKFqF0h+NUdXU2UzY8c+iGYRy1xOiQYEhyrRWR4wEVkWIicgPwW5jlMgzjKCMScYf9yg0SERWRQDFLgNAswatwXeKawCbgC++aYRhGSBTEjpFQ4w6LSBmcr4M5OWvJSSh7h//E+fI3DMM4Ygpg2C/UuMP3AY8CQ0OpNBTP0i+Tyx5iVc0eE9QwDCNXXKCloFqwsojM9zsfo6pj/M5zizvcPstzRFoBNVR1qogUjBLEdX8zKAmcnk0QwzCMwAgUCz4Dka+4wyISB4wmhOBK/oTSHX4/ixQibwGfH85DDMMwJP/+o4PFHS4DNAVmeqtZqgEfi8hAVfW3MLNwJNvm6gBH0+YLAAAgAElEQVS1juA+wzCKKJGIO6yqO4HKmc8UmQkMDaQAIbQxwe0cMjnjcLE885yaNgzDyI38KsEQ4w4fNgGVoBdbpAVO6wIcVNU8Ha0ahmHkRkGF3AwWdzjb9W6h1BlwqNJTeBNV1eclU4CGYRw+QRZKR9O3Qig7RuaKSOuwS2IYxlFNnEjAFC0CxRiJV9UDQGfgMhH5A9iFs2xVVU0xGoYREq47HG0pcifQmOBcoDVwWoRkMQzjqEWIi2qI9bwJpJsFQFX/yC1FSL6Y55uvZnByxxb0aN+UF59+LEf+3B++Z2DPDjRMKsOnUyZmyWtQPZEBPdozoEd7Lr9wUKREzsH877/iv/07cEmf4/ngladz5H/0xgtcPrAzV53elWGXnsmm9YfWyr/6+D1ccWoXLh/QiRcevINoDRv/+MNMhg3qzq1nnMjUN57Pkf/Vh29z57m9uOv8Pjxw2Zmkr8zqA2TrxnSu6NqYT99+KVIi5+B/33zBmSe15fTurRj7wugc+e+88ixn92rPuX06ctX5A9mQvgaA5T//yCVnnszZvU/g3D4dmTH1o0iLHhTnXj82xwQDWYJVROSmvDJV9YlAFYuIAk+o6s3e+VAgUVVHHq6QIlIeOE9Vc367g9+bBrRV1S2He28wfD4fI4fdyBsfTKVaUjJn9O7CSb37cVzDxpllkpJr8OhTY3jlhady3F+yZCmmfBXSHu+w4fP5eO7+23jw5fFUrpbE9ef0on333tSq1zCzTL3GzXj6/RmULFWaqeNe57XH7+X2x1/m50Vz+XnRXJ7/aCYAQy/qz9J5/6P58Z0i2oaDPh9vPXoXtzz7DhWPrcY9Fw+kVZeeJNdtkFmmQ+9T6XHmBQAs+vZz3nvyfoY+/WZm/ruj76VZh24Rldsfn8/HoyOG8uybk6haLYmLT+vOiT37UPe4RpllGqY2583JX1OyVGkmvP0qTz88goeeeZ2SJUsz8rEXqVmnHps3beDCgd3ocGIPypQtH7X25EAgPkZDbgayBIsBibhV2LmlYOwFzhCRykFLBqc88H+5ZXieJaLCkoXzqVWnHjVr1yEhIYF+pw3ii8+mZimTUrMWjVKbERcXmwMivy1dSFLNOlSvUZvixRPo2ud0Zn/1WZYyLY7vTMlSpQFo1KItWza5Rfoiwr59ezmwfx/79+3Ft/8A5StViXgbVi5bTNWU2hybXJP44gm07zWARd9m3dRUKvHQV3bvnt1ZLI8FM6dTJblmFqUZaZYtWUCNWnVJqVmb4gkJnNz/TL75PMtKENp2ODHzPTRr1ZY/N7r3UKtufWrWqQdAlarVqVipMtu3bo1sA4JQWC3BDap6bz7qPgCMAW4EhvtniEgV4EWcey6AG1R1loiMBP5R1ce8cj/hvFo/DNQTkcW4LXvTgBHABqAl0EREJuG21JQEnsq28TosbNq4nupJyZnn1ZKSWbJwXsj37937L6f16kSxYvFcee3NnNx3YDjEDMiWPzdSpdqhNlSuWp3lSxfmWX7GR+/QtstJADRu2Y7m7TpxfvdmqCoDzr2UmvUir0i2b95IxarVM88rHFudlcsW5Sj3xfg3mP7uK/j27+fW598DnEL85M0XuOXZd/j07bB/ZfJk88YNVK1+6D1UrZ7ET4sX5Fl+8gdv07FrzxzXly1ZwP79+0mpVScscuaHaM4AByKQEiwIiZ8DfhSRR7NdfwoYrarfi0hN3ArwxjnuPsQwoKmqtgQQkW44tzpNVXWVV+YSVd0mIqVwfsY+VNU8fw5F5HLgcoCklBp5FQtIbuNfh7M/8tuFy6laLYk1aau4cFAfGjRpSq3adY9IliMmtzG8PL6sX00Zz2/LlvDo2EkArF+zkrUrf+etLxcDcMdlZ7F0/g80a9shbOLmRu7DkDnb0POsi+l51sX88Nkkprz2DJeNfIKJY56g97n/pWTpY8IuZyA0p6OmPK2jTya9zy9LF/HSe9OyXN/y50buvukKRj72Qkz2PGJUBwZUgiflt3JV/UtE3sQ5ONzjl9UTZ71lnJf1HCEeDnP9FCDAdSJyundcAzgOLy5KHrKNwVmqNGvZ+ohG86tVT2bD+vTM843r0zm2WvUAd2SlarUkAGrWrkP7jify89IlEVeClatWZ/PGQ23YsmkDlapUy1Fu0Q/fMG7Mkzw6dhIJCSUA+N8Xn9CoRRtKlU4EoG3nk/j1x/kRV4IVj63Gtk0bMs+3/7mBClWq5lm+fa+BvPnInQCs/Gkx8776lPeffYjdf/9FXJxQPKEEPc8eEm6xs3BstSQ2bTj0HjZtWE/lY3N+l+Z8P5PXn3ucl96bRkKJEpnX//n7L2649GyuuvlOmrVqFxGZDwcRKBajWjDPnwtV3VZAz3gSuBTw/6mNAzqoaksvJavq37gutL9MJQPUuyvjwLMMe3p1tgAWBbm3QGjeqg2rV65g7eo09u3bx7RJEzipd7+Q7t25Yzt797oIptu2bmHB3B+o36BRkLsKngZNW7F+zUo2rlvN/v37+ObTiZzQvXeWMit+WcrT9wxlxLNvZRnzq1I9haXz/4fvwAEO7N/P0vk/UCMK42p1mrRg09pVbE5fw4H9+5gzYwqtupycpczGNYd+L5fM+oqqNWoDcMfLE3h88iwenzyLXoMvof+QqyOuAAGaNG/NmrQ/SF+bxv59+/h86oec2LNPljLLly3hoTtv4PEx71Gx8qH3sH/fPm658gL6nj6Ynn1jd0WbBEnRIuzB170u6gc4Rfiad3kGcA0wCkBEWqrqYiANNwaIt0slY2DjbwJPxpQDtqvqbhFpBJxQ0O3Ijfj4eEY89AT/GTwQn8/HWedeRINGTXjykXtp2qI1PU/pz4+L5nPVfwbz144dfDXjE54adT+ffbuAP35fzp1DryUuLo6DBw9yxbU3Z5lVjhTF4uO56o6HufOKc/D5fPQ6/Txq1W/Em88+TIPUlpzQ/RRefXwk/+7exYM3XQo45Tfy2bfo3GsAS+Z+x1WndwUR2nbuzgndegd5YnjacMEt9/LYdRdx8KCPLgPOJrleAz566XHqNG5OqxNP5svxb7Bs7vcUiy/OMWXLctmIgIsbIk58fDy3jhzFdRefie+gj4FnXUC9Bo15cfQDNG7Wiq49+/LUQ3ezZ9cuhl1zMQDVklJ44uVxfP7JRBbN+x87d2xj6ofvAjBi1PM0bNI8mk3KQohOVaOChGtdl4j8o6qJ3nFVYBXwqKqO9GaMn8ONA8YD36rqld543mTgWJzbnM5AH1VNE5F3gebAp7iJkaGqmqEwSwCTcJ5nlwNVgJGqOjOUJTLNWrbWSTNmFfyHEEF+3/xPtEXIN5t27wleqBCQWrlctEXIFxcN7MbPSxcVqMaq26S53v/2JwHLnN+mxoIgTlXDQtgswQwF6B1vAkr7nW8Bzsnlnj1ArzzqOy/bpZl+eXuBPuSCqtY+DLENwwgLgsSoJRj27rBhGIZQuOMOG4Zh5JuC8CITLO6wiFwpIktFZLGIfC8iTYLKdQRtMQzDODzE7TAKlIJWcSjucB+gCXBuLkruXVVt5q0pfhQIOgNmStAwjLCT0R0OlEIgM+6wqu4DMuIOZ6Kqf/mdHkMu4YKzY2OChmFEhAJYIhM07jCAiFwN3AQkAD2CypVfqQzDMEIhBAcKlUVkvl+6PHsVuVSbw9JT1edUtR5wG3BnMLnMEjQMI+y47nBQSzBY8PVgcYezMw54IdhDzRI0DCMiFIArrcy4wyKSgIs7nCXMpogc53faD/g9WKVmCRqGEQHyH0wpxLjD14hIT2A/sB24OFi9pgQNwwg7IXaHgxIs7rCqXn+4dZoSNAwj/ETZe3QgTAkahhERYtWLjClBwzDCjnOlFW0pcseUoGEYEeFwQk9EElOChmFEBOsOG4ZRZLHusGEYRRyx7rBhGEUYMUvQMIwiTCwHWjIlCCQUiyO5Yqloi5Ev9vsORluEfNM8uXAHKMqg1dDJ0RYhX2zb+FfwQkdAbKpAU4KGYUSKGNWCpgQNw4gI1h02DKNIE5sq0JSgYRiRIka1oClBwzDCjoh1hw3DKOLEpgo09/qGYUQKCZJCqSJ48PWbRORnEflRRL4UkVrB6jQlaBhGBHDu9QOloDWEFnx9EdBWVZsDE3AB2ANiStAwjLATzAgM0RAMJfj616q62zudjYtIFxBTgoZhRIbgWjBY3OHcgq8nB3jipcCnwcSyiRHDMCJCCF5kgsUdDin4OoCIXAC0BboGe6gpQcMwIkIBeJEJKfi6F3JzONBVVfcGlSvfYhmGYQSjYAYFQwm+3gp4CRioqn+GUqlZgoZhRIT8OlUNMfj6KCARGC9uxnmNqg4MVK8pQcMwwk5BudcPIfh6z8Ot05SgYRiRIUa3jJgSNAwjIliMEcMwijQWY8QwjKJNjCpBWyKTT2ZM/4zmqQ1JbVSfUY8+nCN/7969XHDeOaQ2qk+Xju1ZnZaWJX/NmjVULp/I6Ccei5DEOfnu68/p07kVvTs25+VnHs+RP2/295zRqxNNa5Rj+tSJmdfnzPqG03t2yEwt6lTii0+nRFL0TL7+Yjpd2jWlU+vGPDt6VI782bO+o3fX9tSsXJqpkz/Kknf+oP40rnUsF51zWqTEzZXuqVWZdf8pzH6wD9f2aZhrmYFtU/j23t58c08vXrisfeb1O89sxjf39OKbe3pxarugO8UijlsFE/hftCgUlqCIDAfOA3zAQeAKVZ0Twn21gamq2jQccvl8Pm647mqmffo5ySkpdD6hHf37D6Rxk0N7use+9ioVyldg2a8r+OD9cQy/4zbefvf9zPxbh95Ir1P6hEO8kPD5fNx3x028Ou5jqlZP5uy+J9K9d1/qN2icWSYpuQYPPfkSr734VJZ723fqysQvfgBgx/ZtnNKpBZ26nhRR+cG1Yfgt1/PexE+onpRC3x4d6dWnPw0aHWpDco0ajH7uFV58dnSO+6+89ib27N7N22NfiaTYWYgTePj81pz9xLes376b6Xf2ZPri9fy24e/MMnWOTeS6vo0Y8PBX7Ny9n8plSgDQs1k1mteqQI97PqdEfBwTb+3Gl0s38s+/B6LVnJzEcMjNmLcERaQD0B9o7XmG6EnW/YNRY97cudSrV586deuSkJDAWecMZuqUrJHGpk6ZzPkXXgzAGWcOYuZXX6Lqdvp8PHkSderUpUmT1IjLnsGPi+ZTs3ZdatSqQ0JCAn1PHcRX06dlKZNcoxYNmzQlLi7vr8uMaZPo0v1kSpUuHW6Rc7BowTxq161HrdruPZx6xtlM/ySrRVqjZm2aNG2Waxu6dO1BYpkykRI3V1rXqciqP/9h9ZZd7Pcpk+au5ZSWWbfFXnBiHV7/+g927t4PwJa/3WaIBkll+WH5ZnwHld37fPy8dic9mlaLeBuCUgAeFMJBzCtBoDpuT+FeAFXdoqrrReRuEZknIj+JyBjxVkaKSBsRWSIiPwBXh1Ow9evTSUk5tIsnOTmF9PT0nGVquDLx8fGULVeOrVu3smvXLh4f9QjD7xoRThGD8ufG9VRLOtR9qlo9mU0bcuxECsonkyfQ97SzClK0kNm4YT1JyYfeQ/WkZDZuSA9wR+xRrUIp1m/fnXm+fvtuqlXIGga2XtUy1K2ayJRh3fnk9h50T60KwLK1O+nRrBqlEopRMTGBTo2qkFQx8j9GgQnWGY6eFiwMSnAGUENEfhOR50UkY0P0s6razuvqlsJZiwCvA9epaodAlYrI5RneKjZv2XxEgmVYdNnqDanMffeM4NrrbyQxMfGInl1QhNKGYPy5aSO//bKMzt0Oe51qgVAQbYg2uSqBbO2KjxPqHluG00fN5MqXZ/PExW0pW6o43/y8iS+XbmDqsB68ePkJzP9jK74YjEMtEjhFi5gfE1TVf0SkDdAF6A6873mU/VtEbgVKAxWBZSLyLVBeVb/xbn8L54Axt3rHAGMA2rRpm6snimAkJ6ewbt2hnnl6+jqSkpJyllm7lpSUFA4cOMBfO3dSsWJF5s2dw8SPJjD89lvZuWMHcXFxlCxRkquuvuZIRDliqlZPZuP6dZnnmzakc2y16odVx2dTPqRnnwEUL168oMULiepJyaxPP/QeNqxPp2q1pAB3xB4btu8mqcIh6y2pQmk27vg3S5n12/ewYOVWDviUNVt288emv6lbNZHFadt5ctqvPDntVwBeuKw9K//8J6LyB0OIrqILRGGwBFFVn6rOVNURwDXA+cDzwCBVbQa8DJTEfdZHpNCOhLbt2rFixe+krVrFvn37GP/+OPr1z7pNsV//gbzz1hsAfPThBLp274GI8OXM71i+Io3lK9K45robuGXYHRFXgADNWrZh9ao/WLcmjX379vHJ5Al079X3sOqYNmkC/aLUFQZo2botq/5YwZrV7j1M/ugDevXpH/zGGGJR2nbqVk2kZuXSFC8mnHZ8DaYvyTos8emidDo1OhaAiokJ1K1ahtWbdxEnUOGYBACapJSjSUo5Zi7bFPE2BCNWu8MxbwmKSEPgoKr+7l1qCSwHmgNbRCQRGARMUNUdIrJTRDqr6vc4ZRk24uPjGf3Uswzo1xufz8fFQy6hSWoq9468m9Zt2tJ/wECGXHIplwy5kNRG9alQoSJvvTMunCIdNvHx8dz5wOP897zTOOjzccbgCzmuYROefvQ+mrZoTY/e/Vi6eAHXXnouf+3Ywdeff8ozjz3A1JnzAUhfu5qN69fRrkOXqLbh/kef5Lwz+3PQ5+Oc84fQsHETRj14Dy1atqZX3wEsXjifSy88m507tvP5Z9N4/OF7+fqHxQCc3qcHK35fzu5d/9AmtS6PP/0i3U7qFdE2+A4qt7+7iHE3nEixOOG9WatYvv4vbj01lSVp25i+ZANfL9tEt9RqfHtvbw4eVO4d/yPbd+2jRHwck2/rDsA/e/bzf6/MwXcwYrZAyMSqJSi5jafEEl5X+BmgPHAAWAFcDtyAc6WThpstXq2qI73yrwG7cd4mBgVbItOmTVudNWd+2NoQCdI274q2CPmmbKnodKcLmlZDJwcvFMNsmzyM/Zv/KFCV1bxVG/3kq/8FLFOjYskFQZyqhoWYtwRVdQHQMZesO72UW/kWfpdGhkcywzAOj9g0BWNeCRqGUfixiRHDMIo8cRI4hUIIcYdPFJGFInJARAaFJNfhNcMwDOPIyO/scIhxh9cAQ4B3Q5XLusOGYUSG/HeHM+MOA4hIRtzhnzMKqGqalxfyanGzBA3DiAghbB0u6LjDIWGWoGEYYUcE4oLPjBRY3OHDwZSgYRiRIUJxhw8X6w4bhhERCsCTVtC4w0eCKUHDMCKAECeBUzBU9QDOd8B04Bfgg4y4wyIyEEBE2onIOuAs4CURWRasXusOG4YRdgpqsXQIcYfn4brJIWOWoGEYRRqzBA3DiAihdHmjgSlBwzDCT5S9RwfClKBhGGEnyrGUAmJK0DCMiBCrcV9MCRqGERFiVAeaEjQMIzLEqA40JWgYRoSIUS1oStAwjLAjxO4SmZgPtBQJRGQzsDrMj6kMbAnzM8KNtSE2CHcbaqlqlYKsUEQ+w8kdiC2qekpBPjcUTAlGCBGZH41IWgWJtSE2OBraEEvYtjnDMIo0pgQNwyjSmBKMHGOiLUABYG2IDY6GNsQMNiZoGEaRxixBwzCKNKYEDaOQIN7mW4nVTbiFFFOCRpFARMp4/xdmBVIXQFW1kLcjpjAlaISMiFSItgyHizhqAfNFpE1hVSAikgi8JSKPgCnCgsSUYAQQkT4icnG05cgPIlIDuFdEKhSmPz51rAbGAq+LSMvCpkBEJE5V/wEuADqLyG1girCgMCUYZkSkJS5C1i/RliWfVABqA4mF5Y/PswLjAFT1IeAt4D0RaVVY2gCgqge9w1TgR+AqEbnDyys07YhVTAmGERGpDlwLFFPVud61QvWZi0gVAFX9EVgMjBaRBI3xtVUiIp4VeDCjG6+qo4CXKYSKUEQuAh7AWbQjgT4iMhJMEeaXQvUHWRjI9mXcCXwNlBGRy8H9qhcWReiNpT0gIq97Ewtv4SyRyl5+zP7hZShpEbkRp7jfEZE6qvoE8Dzwpoi0i3Vl7kdp4GlVnQO8CdwEnCUiI+BQe43DxxZLFyAZ1oeI9ACOA3YAk4EzgBOB2ao6NooiBsWvDQmAAsnArcABoCLQAXhBVR+LopghISJXA4OAfsAiYC1wl6r+ICLDgNOBE1V1bxTFzEHGO8h27QrgOqCVqu7z3s8YoB5wmqpujYKoRwXmT7AA8ZTHycCTwI24INFXA+OBg0A/ESmmqq9GUcyAeG04BbgCWA58qar/JyLVcIq8NtBdRKao6vIoipqDXJRHJeAiXFt+A34GXhKRq1X1YRF5KdYUIGSxYgcB5YF5qvqSiNQHvhOR84GOuB8mU4D5xCzBAkJEigEJwHNeKgk8DQxU1XQRKYGzSn5U1aXRkzQwInI8buzpRaA5bkJkNTDa68rXA4YD76jql9GTNG9E5CagFPAgziJ/QVVP8vJ+Az4HblbVf6MnZU5EpLSq7vaObwDOBL4AugHv47rBtwMNgWrANd5YrZEPzBIsOERV94jIz8B/gNbA2Z4CvBxYqarvRFfEwIhICvAEMEtVP/QcYXYGzgFqAKtV9Q8R2Q8MAL7MresWTURkANAKuM2zard510/Dde/nAY/EoALsB5wsIqOAFKCDqnYRkaFAOVybFLjba1fJWGtDYaVQDNDHKn7bmJoBY0SkFLABN9Z0g6cwmuPGcmJGUQRgF/A9cK6ItFfVXao6HfdHWRdAROJx35tXIfoD8p6FnXGcDPQCOgGbvct7gHdwP0z3AA+o6ppIyxkIEemPs1pnqmo6bvLpJk8x9geOx32vrgX+z5tYi7lufGHFusP5RES64yY+TgY+A4biuiztgH+BOsB9qvpx1ITMA79JkNZAErAU+As4DxgIPIUbF/wYuFBVF/rfFyWxMxGRY4AhwAygMa6b+AmuO78euE5VD3g/TnHAMar6Z5TEzRVvrPU94FZVnefJehCoAgwGElT1QW+JTAdgRKy1obBj3eF8ICJtcOu2LgBmAycAz+AWR9fCDWrvVdVlsaI4/PGbyX4ZJ/+9OMX3LW5S4W3gG2CIqi70W3sXE+1Q1V0ikoaTfSvQyBu3vAv4P+AJEblZVfd4t+yKkqiB2AvsB/4VkZLAbbghiIzZ+LbehEhH3PiyKcACxrrDR4Df+rjywBRV/Q74ADeZ0AA3O7xFVReq6jKIfrcxN0SkIW7m9HxVPR+nBDvjBt0fAO7GWSV/R03I4KwE/gB8QDPv2i+4H6NE4JEoyRUqO4DpwGPACtzs+zjgPtwEzjW4H6X+qvpblGQ8qjEleBjksjh4IzBARPqo6n5P4S3CKcfLRCQuFhcUe3KVwHXjmwNdAVR1Em48aphX9H1gAXC3Z6XEFCJyBlAC1028C+dgoLuqHgDKAi8BD0dRxKB4P44v4XaB3ARcoaqvqOos3FjsJlUdq6oroijmUY11hw8Dr/t4EnCmiHwKfIn74t4gIpWA33Gzwp8C1fTQns+YwK9LXlxV94rIU7hxy7oicqqqTgZm4cY3E1R1s4iMAQ7G6Exkc5y1epmqTvB2tbwqIh/hZlPPLwzdR3XOEX7wEgAichbQFGedG2HEJkZCwG8C4QTcmNmXuD+yz4CZQFXc2rm/gDtwy0muxA1s74mFrrBfG/oAlwELcWNp3wI34Ja8pOF2iIxW1SnRkjUYIlJLnWcYRORm3BKeq72JhX64tjylqoXOaYW4/ebn4N7ROar6U5RFOvpRVUshJKARbvlIf++8O/ACzhKs4F2LB3oAvwLNoi2zJ5P4HffGOUHoDryO6+qe7eXdjJsg+U9u98ZKwlnaL+AmCTKu3Y6bDe7knReLtpz5aF8p3Da/+tGWpagkGxPMAxFpKCKDxfnRAxDcWr+rAVT1a+BdoCVwuYiUxu0YqYf7A436rhBxHmBuE5Hy3qVmOCujBM4t09PA9SJyJs7C/Q1o7239Q72/ymiSy5jqatwe4K6e1Yc6N1lrgdtFpISq+iIsZoGhqntUdZraGGDEsO5wLnh/eI/hFjmPB9bhBq4bAhfilMg1qqoi0hXYql63RZwDzJgYCxSRLjh51wOjcMsuKuAWD1+vqj+JyOe4HQkn42ZTzwLe1RgYS/NfViTOKW0J4B/cTPzNuLV0i4B9OAv8EVVNi460RmHFlGAeiEgv3KD7xbitZL/jlmFMx63ij1fV66InYXBEpDhu8uBC4E/cspH9OCXyf7ixzGuBB9VbfhFjSjxjHPNK4HzcrPV3uO7iAuBUXNe+IW4x989RE9YotJgSDICITAIWqOp9niXyFG5N2i+4xau9VfX3aMqYHRGpA2xT1Z3eeTxu1nEbMAdn0T6Im9iph3MkMNkrGxMLukWkJs663uXNuj+Ns8rPwm1J7K+q+/3KV1TVbdGR1ijsmBLMhQxryPOoMgCYgOtCjsYtzj0ZmKGqM6MnZe6ISE+cvBU8K2oSTub3gHOBTbiufjmgjKqujhXlByAiVXEz7GuBF1X1HxF5EjdhcCxwnjpHFTfjfqBmRk9a42jAlGAARORYnPLrjHOI8JJ3PaY9eIjzB/g8rgs/W1VHeNdPwllTm4GRsTiB4DkHOA83C7wKeBbn1PUeoIqq/i0iZ+O6xmeq6qqoCWscFZgSDIJnDT4NnK6qG2JpzCwQnsKbjlsY7R+DogewXmNsDZ2IHAfEqepyT9b+QB9giTqHos/jZrTXAvVxC6SjPgNvFH5MCQbBm1x4EadQJhQGBZiBiPTFjWN2UNUt0ZYnL7xxv83AFpzF58O5jj8Pp/A2eIqwKW4t5hZVXRcteY2jC9s2FwRV3S8iL+FmgwuNAgRQ1U9ExAcsE5FGqro92jLlhqpu9cYyv8DtZ2+B27f8D275S1PPOhwby8MQRuHELMEigLeoeFesTyJ4i7SfxinBqriu+2AOORXtlDHrbRgFhSnBIkQszcVEfgQAAAPCSURBVALnhaewRwMnqOo2cTGDiwOlbSG0EQ6sO1yEiHUFCKCq00TkIDBbRDqoRVIzwowpQSPmUNVPxcXV/UJE2hS2sVijcGHdYSNmEZFEdb72DCNsmBI0DKNIY660DMMo0pgSNAyjSGNK0DCMIo0pQcMwijSmBIswIuITkcUi8pOIjPdCBBxpXd1EZKp3PFBEhgUoW15E/u8InjFSRIaGej1bmbEiMugwnlVbRCzIURHAlGDRZo+qtlTVprg9ulf6Z4rjsL8jqvqxqgaK91se59naMKKOKUEjg++A+p4F9IvnumohUENEeonIDyKy0LMYE8H5LRSRX0Xke1wgd7zrQ0TkWe+4qohMFJElXuqIC4hez7NCR3nlbhGReSLyo4jc41fXcBFZLiJf4NzoB0RELvPqWSIiH2azbnuKyHci8puI9PfKFxORUX7PviK/H6RRuDAlaGS44O8DZPjnawi8qaqtgF3AnUBPVW0NzAduEpGSuBCdA4AuQLU8qn8a+EZVW+AcpS7DOUT9w7NCb/HiuRyHc5TQEmgjIieKSBucA4VWOCXbLoTmfKSq7bzn/QJc6pdXG+iKi1HyoteGS4GdqtrOq/8yL0SBUUSwbXNFm1Iistg7/g54FUgCVqvqbO/6CUATYJbnlzUBF7OkEbAqI8aKiLwNXJ7LM3oAFwF4nqx3ek4R/OnlpUXeeSJOKZYBJqrqbu8ZH4fQpqYicj+uy52I8wOZwQfeFrzfRWSl14Ze/H97d6wSVxCFcfz/xUKSsOYB0kQNC0KQ7dPkEdYixZIUoiBuIfoAWvsOYmEnPoAEkRSGhE21JF3czspi06lodyxmFi5Lkt1Imux8v3Lu3HsutzjMHC5nYLFSL3yWY/fGiGUTwEmwbLcR0agO5ER3Ux0CTiOiNTSvQTqH+V8QsDs4vqASY+sBMQ6AZkR8l7QMvKlcG35W5NgbEVFNlkh68Zdx7T/l7bCN8hV4LeklgKQnkurAD2BW0nye1/rN/R+Bdr53StIMcEVa5Q2cACuVWuNzpfNdPgFLkh5LqpG23qPUgMvcEfzd0LW3kh7ld54DznPsdp6PpLqkp2PEsQnhlaD9UUT084rqUNJ0Ht6OiJ6kNeBY0k/gM/DqF4/YBPYkrZLa5rcjoiPpS/4F5UOuCy4AnbwSvQbeR0RX0hHwDbggbdlH2SEdLXpBqnFWk+05cEZq2LoeEXeS9km1wm7uXt0HmuN9HZsEbqBgZkXzdtjMiuYkaGZFcxI0s6I5CZpZ0ZwEzaxoToJmVjQnQTMr2j3b5yO1t3FMIQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "confusion_matrix_plot(matrix, ['Anger', 'Happy', 'Neutral', 'Sad'], normalize=True)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result shows that Happy emotion is recognized most successfully. However, the performance is poor for neutral emotion. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.4" } }, "nbformat": 4, "nbformat_minor": 2 }