diff --git a/.ipynb_checkpoints/linearRegression-jvsc-9df4d385-edc2-49dd-a0ed-b7d160c0df3b8dedcb04-c549-4e86-9923-7e6b0186e80d-checkpoint.ipynb b/.ipynb_checkpoints/linearRegression-jvsc-9df4d385-edc2-49dd-a0ed-b7d160c0df3b8dedcb04-c549-4e86-9923-7e6b0186e80d-checkpoint.ipynb deleted file mode 100644 index 363fcab..0000000 --- a/.ipynb_checkpoints/linearRegression-jvsc-9df4d385-edc2-49dd-a0ed-b7d160c0df3b8dedcb04-c549-4e86-9923-7e6b0186e80d-checkpoint.ipynb +++ /dev/null @@ -1,6 +0,0 @@ -{ - "cells": [], - "metadata": {}, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/Autoencoders/autoencoder.ipynb b/Autoencoders/autoencoder.ipynb new file mode 100644 index 0000000..29f1ff2 --- /dev/null +++ b/Autoencoders/autoencoder.ipynb @@ -0,0 +1,587 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "os.environ[\"CUDA_DEVICE_ORDER\"]=\"PCI_BUS_ID\"\n", + "os.environ[\"CUDA_VISIBLE_DEVICES\"]=\"1\" #model will be trained on GPU 1" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### IMPORTING MODULES" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-01-24 16:10:49.294647: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n", + "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n", + "2023-01-24 16:10:49.680381: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory\n", + "2023-01-24 16:10:49.680400: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] Ignore above cudart dlerror if you do not have a GPU set up on your machine.\n", + "2023-01-24 16:10:49.731016: E tensorflow/stream_executor/cuda/cuda_blas.cc:2981] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n", + "2023-01-24 16:10:50.868800: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7'; dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory\n", + "2023-01-24 16:10:50.868917: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7'; dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory\n", + "2023-01-24 16:10:50.868926: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.\n" + ] + } + ], + "source": [ + "import keras\n", + "from matplotlib import pyplot as plt\n", + "import numpy as np\n", + "import gzip\n", + "from keras.layers import Input,Conv2D,MaxPooling2D,UpSampling2D\n", + "from keras.models import Model\n", + "from keras.optimizers import RMSprop" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### EXTRACTING DATA" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def extract_data(filename,numImages):\n", + " with gzip.open(filename) as bytestream:\n", + " bytestream.read(16)\n", + " buf = bytestream.read(28*28*numImages)\n", + " data = np.frombuffer(buf,dtype=np.uint8).astype(np.float32)\n", + " data = data.reshape(numImages*28*28)\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((60000, 28, 28, 1), (10000, 28, 28, 1))" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "train_data = extract_data('train-images-idx3-ubyte.gz', 60000)\n", + "test_data = extract_data('t10k-images-idx3-ubyte.gz', 10000)\n", + "train_data = train_data.reshape(-1,28,28,1)\n", + "test_data = test_data.reshape(-1,28,28,1)\n", + "train_data.shape,test_data.shape" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Rescaling" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "train_data = train_data/np.max(train_data)\n", + "test_data = test_data/np.max(test_data)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Dividing the training data into 4:1 ratio for training the model" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((48000, 28, 28, 1),\n", + " (12000, 28, 28, 1),\n", + " (48000, 28, 28, 1),\n", + " (12000, 28, 28, 1))" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "train_X,valid_X,train_ground,valid_ground = train_test_split(train_data,train_data,test_size=0.2,train_size=0.8,random_state=13)\n", + "train_X.shape,valid_X.shape,train_ground.shape,valid_ground.shape" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Initializing Hyperparameters" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "batch_size = 128\n", + "epochs = 50\n", + "inChannel = 1\n", + "x, y = 28, 28\n", + "input_img = Input(shape = (x, y, inChannel))" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### The autoencoder architecture" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def autoencoder(input_img):\n", + " #encode\n", + " conv1 = Conv2D(32,(3,3),padding = 'same',activation = 'relu')(input_img)\n", + " downs1 = MaxPooling2D(pool_size=(2,2))(conv1)\n", + " conv2 = Conv2D(64,(3,3),padding = 'same',activation = 'relu')(downs1)\n", + " downs2 = MaxPooling2D(pool_size=(2,2))(conv2)\n", + " conv3 = Conv2D(128,(3,3),padding='same',activation = 'relu')(downs2)\n", + "\n", + " #decode\n", + " conv4 = Conv2D(128,(3,3),padding = 'same',activation = 'relu')(conv3)\n", + " downs3 = UpSampling2D((2,2))(conv4)\n", + " conv5 = Conv2D(64,(3,3),padding = 'same',activation = 'relu')(downs3)\n", + " downs4 = UpSampling2D((2,2))(conv5)\n", + " conv6 = Conv2D(32,(3,3),padding='same',activation = 'relu')(downs4)\n", + " conv7 = Conv2D(1,(3,3),padding='same',activation = 'sigmoid')(conv6)\n", + "\n", + " return conv7\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2023-01-24 16:10:55.184171: E tensorflow/stream_executor/cuda/cuda_driver.cc:265] failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected\n", + "2023-01-24 16:10:55.184238: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:156] kernel driver does not appear to be running on this host (nishant-OMEN-Laptop-15-ek0xxx): /proc/driver/nvidia/version does not exist\n", + "2023-01-24 16:10:55.185445: I tensorflow/core/platform/cpu_feature_guard.cc:193] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n", + "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n" + ] + } + ], + "source": [ + "autoencoder = Model(input_img,autoencoder(input_img))\n", + "autoencoder.compile(loss = 'mean_squared_error',optimizer = RMSprop())" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"model\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " input_1 (InputLayer) [(None, 28, 28, 1)] 0 \n", + " \n", + " conv2d (Conv2D) (None, 28, 28, 32) 320 \n", + " \n", + " max_pooling2d (MaxPooling2D (None, 14, 14, 32) 0 \n", + " ) \n", + " \n", + " conv2d_1 (Conv2D) (None, 14, 14, 64) 18496 \n", + " \n", + " max_pooling2d_1 (MaxPooling (None, 7, 7, 64) 0 \n", + " 2D) \n", + " \n", + " conv2d_2 (Conv2D) (None, 7, 7, 128) 73856 \n", + " \n", + " conv2d_3 (Conv2D) (None, 7, 7, 128) 147584 \n", + " \n", + " up_sampling2d (UpSampling2D (None, 14, 14, 128) 0 \n", + " ) \n", + " \n", + " conv2d_4 (Conv2D) (None, 14, 14, 64) 73792 \n", + " \n", + " up_sampling2d_1 (UpSampling (None, 28, 28, 64) 0 \n", + " 2D) \n", + " \n", + " conv2d_5 (Conv2D) (None, 28, 28, 32) 18464 \n", + " \n", + " conv2d_6 (Conv2D) (None, 28, 28, 1) 289 \n", + " \n", + "=================================================================\n", + "Total params: 332,801\n", + "Trainable params: 332,801\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "autoencoder.summary()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Training the Data" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/50\n", + "375/375 [==============================] - 130s 346ms/step - loss: 0.0349 - val_loss: 0.0125\n", + "Epoch 2/50\n", + "375/375 [==============================] - 133s 354ms/step - loss: 0.0096 - val_loss: 0.0084\n", + "Epoch 3/50\n", + "375/375 [==============================] - 134s 358ms/step - loss: 0.0068 - val_loss: 0.0050\n", + "Epoch 4/50\n", + "375/375 [==============================] - 136s 363ms/step - loss: 0.0054 - val_loss: 0.0051\n", + "Epoch 5/50\n", + "375/375 [==============================] - 122s 326ms/step - loss: 0.0046 - val_loss: 0.0048\n", + "Epoch 6/50\n", + "375/375 [==============================] - 122s 325ms/step - loss: 0.0040 - val_loss: 0.0035\n", + "Epoch 7/50\n", + "375/375 [==============================] - 127s 338ms/step - loss: 0.0036 - val_loss: 0.0035\n", + "Epoch 8/50\n", + "375/375 [==============================] - 133s 354ms/step - loss: 0.0033 - val_loss: 0.0034\n", + "Epoch 9/50\n", + "375/375 [==============================] - 133s 355ms/step - loss: 0.0030 - val_loss: 0.0025\n", + "Epoch 10/50\n", + "375/375 [==============================] - 132s 353ms/step - loss: 0.0028 - val_loss: 0.0029\n", + "Epoch 11/50\n", + "375/375 [==============================] - 132s 353ms/step - loss: 0.0027 - val_loss: 0.0026\n", + "Epoch 12/50\n", + "375/375 [==============================] - 129s 345ms/step - loss: 0.0025 - val_loss: 0.0023\n", + "Epoch 13/50\n", + "375/375 [==============================] - 123s 328ms/step - loss: 0.0024 - val_loss: 0.0024\n", + "Epoch 14/50\n", + "375/375 [==============================] - 123s 327ms/step - loss: 0.0023 - val_loss: 0.0022\n", + "Epoch 15/50\n", + "375/375 [==============================] - 129s 344ms/step - loss: 0.0022 - val_loss: 0.0021\n", + "Epoch 16/50\n", + "375/375 [==============================] - 131s 349ms/step - loss: 0.0021 - val_loss: 0.0020\n", + "Epoch 17/50\n", + "375/375 [==============================] - 202s 538ms/step - loss: 0.0021 - val_loss: 0.0022\n", + "Epoch 18/50\n", + "375/375 [==============================] - 226s 603ms/step - loss: 0.0020 - val_loss: 0.0021\n", + "Epoch 19/50\n", + "375/375 [==============================] - 228s 608ms/step - loss: 0.0019 - val_loss: 0.0019\n", + "Epoch 20/50\n", + "375/375 [==============================] - 229s 610ms/step - loss: 0.0019 - val_loss: 0.0017\n", + "Epoch 21/50\n", + "375/375 [==============================] - 3212s 9s/step - loss: 0.0018 - val_loss: 0.0021\n", + "Epoch 22/50\n", + "375/375 [==============================] - 123s 328ms/step - loss: 0.0018 - val_loss: 0.0019\n", + "Epoch 23/50\n", + "375/375 [==============================] - 123s 328ms/step - loss: 0.0018 - val_loss: 0.0015\n", + "Epoch 24/50\n", + "375/375 [==============================] - 118s 316ms/step - loss: 0.0017 - val_loss: 0.0018\n", + "Epoch 25/50\n", + "375/375 [==============================] - 114s 304ms/step - loss: 0.0017 - val_loss: 0.0019\n", + "Epoch 26/50\n", + "375/375 [==============================] - 114s 303ms/step - loss: 0.0017 - val_loss: 0.0022\n", + "Epoch 27/50\n", + "375/375 [==============================] - 114s 304ms/step - loss: 0.0016 - val_loss: 0.0016\n", + "Epoch 28/50\n", + "375/375 [==============================] - 114s 304ms/step - loss: 0.0016 - val_loss: 0.0017\n", + "Epoch 29/50\n", + "375/375 [==============================] - 114s 304ms/step - loss: 0.0016 - val_loss: 0.0014\n", + "Epoch 30/50\n", + "375/375 [==============================] - 114s 304ms/step - loss: 0.0016 - val_loss: 0.0017\n", + "Epoch 31/50\n", + "375/375 [==============================] - 114s 304ms/step - loss: 0.0015 - val_loss: 0.0015\n", + "Epoch 32/50\n", + "375/375 [==============================] - 114s 304ms/step - loss: 0.0015 - val_loss: 0.0015\n", + "Epoch 33/50\n", + "375/375 [==============================] - 114s 304ms/step - loss: 0.0015 - val_loss: 0.0015\n", + "Epoch 34/50\n", + "375/375 [==============================] - 114s 303ms/step - loss: 0.0015 - val_loss: 0.0014\n", + "Epoch 35/50\n", + "375/375 [==============================] - 114s 303ms/step - loss: 0.0015 - val_loss: 0.0018\n", + "Epoch 36/50\n", + "375/375 [==============================] - 114s 303ms/step - loss: 0.0014 - val_loss: 0.0014\n", + "Epoch 37/50\n", + "375/375 [==============================] - 114s 304ms/step - loss: 0.0014 - val_loss: 0.0013\n", + "Epoch 38/50\n", + "375/375 [==============================] - 114s 304ms/step - loss: 0.0014 - val_loss: 0.0015\n", + "Epoch 39/50\n", + "375/375 [==============================] - 115s 307ms/step - loss: 0.0014 - val_loss: 0.0017\n", + "Epoch 40/50\n", + "375/375 [==============================] - 124s 331ms/step - loss: 0.0014 - val_loss: 0.0017\n", + "Epoch 41/50\n", + "375/375 [==============================] - 123s 329ms/step - loss: 0.0014 - val_loss: 0.0014\n", + "Epoch 42/50\n", + "375/375 [==============================] - 121s 323ms/step - loss: 0.0014 - val_loss: 0.0015\n", + "Epoch 43/50\n", + "375/375 [==============================] - 114s 305ms/step - loss: 0.0014 - val_loss: 0.0016\n", + "Epoch 44/50\n", + "375/375 [==============================] - 114s 304ms/step - loss: 0.0013 - val_loss: 0.0015\n", + "Epoch 45/50\n", + "375/375 [==============================] - 114s 304ms/step - loss: 0.0013 - val_loss: 0.0013\n", + "Epoch 46/50\n", + "375/375 [==============================] - 114s 305ms/step - loss: 0.0013 - val_loss: 0.0016\n", + "Epoch 47/50\n", + "375/375 [==============================] - 114s 305ms/step - loss: 0.0013 - val_loss: 0.0014\n", + "Epoch 48/50\n", + "375/375 [==============================] - 114s 304ms/step - loss: 0.0013 - val_loss: 0.0014\n", + "Epoch 49/50\n", + "375/375 [==============================] - 114s 305ms/step - loss: 0.0013 - val_loss: 0.0013\n", + "Epoch 50/50\n", + "375/375 [==============================] - 114s 304ms/step - loss: 0.0013 - val_loss: 0.0013\n" + ] + } + ], + "source": [ + "autoencoder_train = autoencoder.fit(train_X, train_ground, batch_size=batch_size,epochs=epochs,verbose=1,validation_data=(valid_X, valid_ground)) " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "313/313 [==============================] - 5s 15ms/step\n" + ] + }, + { + "data": { + "text/plain": [ + "(10000, 28, 28, 1)" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pred = autoencoder.predict(test_data)\n", + "pred.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "autoencoder.save('test.h5')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "313/313 [==============================] - 5s 16ms/step\n" + ] + }, + { + "data": { + "text/plain": [ + "2" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "autoencoder2 = keras.models.load_model('./test.h5') \n", + "pred = autoencoder2.predict(test_data)\n", + "\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test Images\n", + "(10000, 28, 28, 1)\n", + "(10000, 28, 28, 1)\n", + "(10000, 28, 28, 1)\n", + "(10000, 28, 28, 1)\n", + "(10000, 28, 28, 1)\n", + "(10000, 28, 28, 1)\n", + "(10000, 28, 28, 1)\n", + "(10000, 28, 28, 1)\n", + "(10000, 28, 28, 1)\n", + "(10000, 28, 28, 1)\n" + ] + }, + { + "data": { + "image/png": "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7du3G+2Sa5p9vaAs/KUHAAAAAAAAAACIBS56AAAAAAAAAACAWOCiBwAAAAAAAAAAiAUuegAAAAAAAAAAgFjI2ELmiWhFS77++uvIx5BszLegt08xq/Hjxzux3NxcJ/bzn//caGuFfLSYXRzULvQrInLyySc7sc2bNzsxu8BathU2R8X5Fry0iylphQ6feOIJJ7Z//34n9uc//9loH3vsscX/PnjwYOmDhUErkKjNGeedd57Rfumll5w+OTk5Tsx+7bT5T7ud1s9n7tyxY0fCPitWrHBihw4dcmK+z02maNiwodE+8cQTnT7vvvuuE9OKRfsUy/Ypronv+BbR1goY27dN1M5EvmNs27ZtUsdfu3Ztwj7Z9H6256OCggKv29lzqW8h82zIoVTQ1hA7By688EKnj1Yk2S4a/+abbzp9rrjiCifmM5eGXbTcl0+xyX/9619OTCv2q32muffee5MbWExp70s7h7XPXFpMO49etWpVmW3t/kREJk2aZLT/8pe/OH3sz6ciyRd49sk77fuDNWvWeN1fWecy5Smymkol79NnnapIoVv4sz+3avmk5QvfjYRHWz/jVBjedx7N1POIdBg3bpwTK/m9kIjf91IarY/v5wn7+yjtO663337bid19991G2/e76WTnfJ/P89r3JL1793ZiM2fOdGIDBgww2oWFheUY3b/xrQMAAAAAAAAAAIgFLnoAAAAAAAAAAIBY4KIHAAAAAAAAAACIhayt6aGpDHse2nu+afuoabHRo0c7MXsvNW0/bJ96C40aNXL63H///U5M26OVfd3hy85FbX9Arc7Hs88+68TOOusso92zZ8/ifxcWFjo1P6C/V7U5t3v37k7Mrvuj7f2s7eu8ePFio/3yyy87fZo2berEfPY91/ao3rJlixOzaftuavtgZsN6VPJ56tixo/G79957z+lfmfZ4zUY7d+50YnHaiziR1q1bJ3W79evXJ+yTCfub+9bGseee/Pz8pO7PrvNTmkx4blLNp36HiMj5559vtLV1TDuWnXNXXXWV00ebb33HlYl85iKtj13/RETf2/rLL7802naNoyAIsua5SgXfenk+fGo+aH20OlP2a7By5cqkxuTLZ37q0KGD17G087o4rLG+e76jYnzq3fG8p4b9PGrzgHbObNegFHFr0mq1DLPhM19ptPMK7TNyprNfY+291LhxYyc2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USDvEAXyDmEj5xAF8g5RIO8QNnIOUSr3X3rs3bvX+N/4a9eulY8//lgaNWokrVu3lt/85jdy1113yQknnCBt27aVCRMmSF5engwbNiyV40Yl8+mnn0qdOnVEhJxDOPbu3Str1qwpbpN3CANzHaJA3iFsrLGIAnMdwsZchyiQd4gCaywyUbkveixZskQGDBhQ3B4/fryIiFx22WUydepUufHGG2Xfvn0yatQo2b17t/zwhz+Ut956S2rUqJG6UaPSOf3004v/Tc4hDMuWLZNzzjmnuE3eIQzMdYgCeYewscYiCsx1CBtzHaJA3iEKrLHIROW+6NG/f/8y9w+rUqWK3HHHHXLHHXdUaGBASfn5+aXu103OIR1OP/105jqEjrkOUSDvEDbWWESBuQ5hY65DFMg7RIE1FpkopYXMkbm0Rc8upFNUVOT0KflnkUf5FDLXYlpxvJYtW7qDrcR8CidpBfe0xcUuziriFnnSiilpxaIaN25stEtexT/qmmuucWJ2roi4ecbV/crHtwhp+/btE/bxLeK1cuVKo71u3Tqv22VKIfNUC4LAeO7s+Vmbr8N+LrS5TiuoetZZZzmxK664wmhrxaN79uzpxLRihLZkC8dlorAfy1dffWW0165da7SnTp3q3EYryNuuXTsn5lPosE2bNk5s0aJFRls7L/HN/fnz5xvt66+/3umzePFiJ2avxdr9dejQwYmNGzfOif3kJz8x2p999pk+2AQaNWrk1S/b3g/Dhw832qeeeqrTR5tntPnIXlc++OADrzHEdV2pqDg9L/Yaa9PyqX///k7shhtucGL2muf7vGnzny3s93NpX46lk89j1D5DAYDvHHnw4MGEfbSC0playNwuDG4Xkd6/f39ax2SrUqWK8VzZ6+DRwukltW7d2vvYqeDz/avId1vR2ZYtW5bU8X3G3qRJk4R9Sjt+OvncX8nzbu2769KktJA5AAAAAAAAAABAVLjoAQAAAAAAAAAAYoGLHgAAAAAAAAAAIBao6VGJ+ez59q9//Sthn2T3kxPR942vzHyeN7u+hojIyJEjnZhWK8N+rbT7027XqVMno23vGS4i0rBhw4T3V9p9It589qvX9ppu1apVysYwZ86chH18a0jEwZEjR4zXwa5lob13M2G/de318JnrZsyY4fQpLCx0YnYOxPX1zxS//e1vjbZdE0NEZP369Ukd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BfIOYUuUcyLkHVKPuQ5RIO+QiZIqZI7M4VucRrtg9cgjjxhtu7ijiF6U0S7ceN999zl93n33XSeW7cWFgXS5/PLLpXr16sXto39Vd5RvwXBtPkjne8z3/vr27Wu0jz/+eK/jr1692mg/8MADXrcLqxhqNrPXBPu1nDx5snObW265xYk1a9bMib3yyisJ718rkGuPSXsdM7EAcCaz5w77dU5lgbt0Oe6445K6nVZAUONbyDpb+DyedBcyzyRLly6VWrVqFbeTzaeOHTs6sTZt2hhtu0CySOYWMveZC7Si5WPGjHFip512mtHu16+f1xgy4XmIinaupH1O0opsP/zww0b7uuuuc/por539GmtfOtWsWdOJaf8L116ftYLr55xzTsLbJVu0XONbyPzxxx832gcOHHD68JkVADJXlSpVjPOr9u3bJ7xNuot625YsWeLE7ALlIvpnYvv71qN/MVhStWrVnJi9DlbkM479GLU1UBu7fZ5of58jEv4am/mfdgEAAAAAAAAAADxw0QMAAAAAAAAAAMQCFz0AAAAAAAAAAEAsZE1ND3s/Mm1/snTvy5xob+zSxuAzLq2Pz75z3377bcI+IiL333+/Ezv77LONtrbHnL2fnIjI888/b7Rvvvlmp4+2Txv77AO6u+66yyj6Zb/3tX0jfee70aNHG22t3o7P/KO9f33HcMkll3j1s/3ud78z2nv37nX6sO9y8sraj1T7nVa/6Z133nFigwcPNtoTJkxw+mzbts1niA7t9Y5bTQabb00AbV/VTOdzXtCyZcukjr1p0yavfpWxrsDXX3+d1O0aN26c4pGk36xZs4x9jy+66CLj9741s7T318iRI422Ntdpt7PrLVQkB5P9fGS/97TPE7fffrsTGzZsmBM766yzjLb2eUL7TMPnApPv8/Ff//VfRrtTp05OH/s1EXHzTstNu96jiMioUaOc2M6dO422XbutNKncU91+vrTH88knnzixp556qtzHzlY+84PP7VBxiWrpiejnuNr6YMcq43kMKrfGjRsb7yG7xpomlfOaz3tu/vz5Tkx732vnX3Z91y5dujh9fGuDJcsel1ZD5MEHH3Ri06ZNM9ra2uz7HXaq8JceAAAAAAAAAAAgFrjoAQAAAAAAAAAAYoGLHgAAAAAAAAAAIBa46AEAAAAAAAAAAGIha6pe2oVatOIx6S5eW716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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reconstruction of Test Images\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.figure(figsize=(20, 4))\n", + "print(\"Test Images\")\n", + "for i in range(10):\n", + " plt.subplot(2, 10, i+1)\n", + " print(test_data.shape)\n", + " plt.imshow(test_data[i, ..., 0], cmap='gray')\n", + " # curr_lbl = test_labels[i]\n", + " # plt.title(\"(Label: \" + str(label_dict[curr_lbl]) + \")\")\n", + "plt.show() \n", + "plt.figure(figsize=(20, 4))\n", + "print(\"Reconstruction of Test Images\")\n", + "for i in range(10):\n", + " plt.subplot(2, 10, i+1)\n", + " plt.imshow(pred[i, ..., 0], cmap='gray') \n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[3, 1],\n", + " [3, 1]])" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "a = np.array([[[3,2],[1,2]],[[3,2],[1,2]]])\n", + "a[...,0]" + ] + } + ], + "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.10.6" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Autoencoders/notMNIST_small/.gitignore b/Autoencoders/notMNIST_small/.gitignore new file mode 100644 index 0000000..aab52d9 --- /dev/null +++ b/Autoencoders/notMNIST_small/.gitignore @@ -0,0 +1 @@ +*.png \ No newline at end of file diff --git a/Autoencoders/t10k-images-idx3-ubyte.gz b/Autoencoders/t10k-images-idx3-ubyte.gz new file mode 100644 index 0000000..5d53179 Binary files /dev/null and b/Autoencoders/t10k-images-idx3-ubyte.gz differ diff --git a/Autoencoders/test.h5 b/Autoencoders/test.h5 new file mode 100644 index 0000000..3444606 Binary files /dev/null and b/Autoencoders/test.h5 differ diff --git a/Autoencoders/train-images-idx3-ubyte.gz b/Autoencoders/train-images-idx3-ubyte.gz new file mode 100644 index 0000000..6cf3076 Binary files /dev/null and b/Autoencoders/train-images-idx3-ubyte.gz differ diff --git a/NLP/document_search.ipynb b/NLP/document_search.ipynb new file mode 100644 index 0000000..8a5ced9 --- /dev/null +++ b/NLP/document_search.ipynb @@ -0,0 +1,511 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Importing Libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "import re\n", + "import nltk\n", + "import string\n", + "from nltk.tokenize import TweetTokenizer\n", + "from nltk.corpus import stopwords,twitter_samples\n", + "from nltk.stem import PorterStemmer\n", + "import gensim\n", + "import numpy as np\n", + "from gensim.models import KeyedVectors" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[nltk_data] Downloading package stopwords to\n", + "[nltk_data] C:\\Users\\HP\\AppData\\Roaming\\nltk_data...\n", + "[nltk_data] Package stopwords is already up-to-date!\n", + "[nltk_data] Downloading package twitter_samples to\n", + "[nltk_data] C:\\Users\\HP\\AppData\\Roaming\\nltk_data...\n", + "[nltk_data] Package twitter_samples is already up-to-date!\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "nltk.download('stopwords')\n", + "nltk.download('twitter_samples')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Loading Embeddings" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The data\n", + "\n", + "Download\n", + "* English embeddings from Google code archive word2vec\n", + "[look for GoogleNews-vectors-negative300.bin.gz](https://code.google.com/archive/p/word2vec/)\n", + " * You'll need to unzip the file first.\n", + "* and the French embeddings from\n", + "[cross_lingual_text_classification](https://github.com/vjstark/crosslingual_text_classification).\n", + " * in the terminal, type (in one line)\n", + " `curl -o ./wiki.multi.fr.vec https://dl.fbaipublicfiles.com/arrival/vectors/wiki.multi.fr.vec`\n", + "\n", + "The two files will be named as \n", + "* `GoogleNews-vectors-negative300.bin`\n", + "* `wiki.multi.fr.vec`\n", + "\n", + "These files have been used in the code below." + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "en_embeddings = KeyedVectors.load_word2vec_format('./GoogleNews-vectors-negative300.bin',binary=True)\n", + "fr_embeddings = KeyedVectors.load_word2vec_format('./wiki.multi.fr.vec')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Loading Tweets" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "all_positive_tweets = twitter_samples.strings('positive_tweets.json')\n", + "all_negative_tweets = twitter_samples.strings('negative_tweets.json')\n", + "all_tweets = all_positive_tweets + all_negative_tweets" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "def process_tweet(tweet):\n", + " '''\n", + " Input:\n", + " tweet: a string containing a tweet\n", + " Output:\n", + " tweets_clean: a list of words containing the processed tweet\n", + "\n", + " '''\n", + " stemmer = PorterStemmer()\n", + " stopwords_english = stopwords.words('english')\n", + " # remove stock market tickers like $GE\n", + " tweet = re.sub(r'\\$\\w*', '', tweet)\n", + " # remove old style retweet text \"RT\"\n", + " tweet = re.sub(r'^RT[\\s]+', '', tweet)\n", + " # remove hyperlinks\n", + " tweet = re.sub(r'https?:\\/\\/.*[\\r\\n]*', '', tweet)\n", + " # remove hashtags\n", + " # only removing the hash # sign from the word\n", + " tweet = re.sub(r'#', '', tweet)\n", + " # tokenize tweets\n", + " tokenizer = TweetTokenizer(preserve_case=False, strip_handles=True,\n", + " reduce_len=True)\n", + " tweet_tokens = tokenizer.tokenize(tweet)\n", + "\n", + " tweets_clean = []\n", + " for word in tweet_tokens:\n", + " if (word not in stopwords_english and # remove stopwords\n", + " word not in string.punctuation): # remove punctuation\n", + " # tweets_clean.append(word)\n", + " stem_word = stemmer.stem(word) # stemming word\n", + " tweets_clean.append(stem_word)\n", + "\n", + " return tweets_clean" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "def get_document_embedding(document:str,en_embeddings):\n", + " \"\"\"\n", + " Calculates the embedding vector for a given document.\n", + " \n", + " Args:\n", + " document (str): The input document.\n", + " en_embeddings: The word embeddings model.\n", + " \n", + " Returns:\n", + " numpy.ndarray: The document embedding vector.\n", + " \"\"\"\n", + " \n", + " processed_doc = process_tweet(document)\n", + " document_embedding = np.zeros(300)\n", + " for i in range(len(processed_doc)):\n", + " try:\n", + " document_embedding += en_embeddings.get_vector(processed_doc[i])\n", + " except KeyError:\n", + " pass\n", + " return document_embedding" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [], + "source": [ + "def get_document_vecs(all_docs, en_embeddings):\n", + " '''\n", + " Input:\n", + " - all_docs: list of strings - all tweets in our dataset.\n", + " - en_embeddings: dictionary with words as the keys and their embeddings as the values.\n", + " Output:\n", + " - document_vec_matrix: matrix of tweet embeddings.\n", + " - ind2Doc_dict: dictionary with indices of tweets in vecs as keys and their embeddings as the values.\n", + " '''\n", + " ind2Doc_dict = {}\n", + " document_matrix = []\n", + " for index,doc in enumerate(all_docs):\n", + " document_embedding = get_document_embedding(doc,en_embeddings)\n", + " ind2Doc_dict[index] = document_embedding\n", + " document_matrix.append(document_embedding)\n", + " document_matrix = np.vstack(document_matrix)\n", + " return document_matrix,ind2Doc_dict" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Embeddings of each tweet" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [], + "source": [ + "document_vecs, ind2Tweet = get_document_vecs(all_tweets, en_embeddings)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hyperparameters" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "N_PLANES = 10\n", + "N_UNIVERSES = 25\n", + "N_DIMS = 300" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Initializing planes" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "np.random.seed(0)\n", + "\n", + "def generate_planes(N_DIMS, N_PLANES, N_UNIVERSES):\n", + " \"\"\"\n", + " Generate random planes for document search.\n", + "\n", + " Parameters:\n", + " - N_DIMS (int): Number of dimensions for each plane.\n", + " - N_PLANES (int): Number of planes to generate.\n", + " - N_UNIVERSES (int): Number of universes.\n", + "\n", + " Returns:\n", + " - planes_l (list): List of randomly generated planes.\n", + " \"\"\"\n", + " planes_l = [np.random.normal(size=(N_DIMS,N_PLANES)) for _ in range(N_UNIVERSES)]\n", + " return planes_l\n", + "\n", + "planes_l = generate_planes(N_DIMS, N_PLANES, N_UNIVERSES)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "def hash_value_of_vector(v, planes):\n", + " \"\"\"Create a hash for a vector; hash_id says which random hash to use.\n", + " Input:\n", + " - v: vector of tweet. It's dimension is (1, N_DIMS)\n", + " - planes: matrix of dimension (N_DIMS, N_PLANES) - the set of planes that divide up the region\n", + " Output:\n", + " - res: a number which is used as a hash for your vector\n", + " \"\"\"\n", + " h = 0\n", + " for i in range(N_PLANES):\n", + " p = planes[:,i]\n", + " h += (np.sign(np.dot(p,v.T))>=0)*np.power(2,i)\n", + " return h.item()" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [], + "source": [ + "def make_hash_table(vecs, planes):\n", + " \"\"\"\n", + " Input:\n", + " - vecs: list of vectors to be hashed.\n", + " - planes: the matrix of planes in a single \"universe\", with shape (embedding dimensions, number of planes).\n", + " Output:\n", + " - hash_table: dictionary - keys are hashes, values are lists of vectors (hash buckets)\n", + " - id_table: dictionary - keys are hashes, values are list of vectors id's\n", + " (it's used to know which tweet corresponds to the hashed vector)\n", + " \"\"\"\n", + " buckets = 2**N_PLANES\n", + " hash_table = {i:[] for i in range(buckets)}\n", + " id_table = {i:[] for i in range(buckets)}\n", + " for i,v in enumerate(vecs):\n", + " h = hash_value_of_vector(v,planes)\n", + " hash_table[h].append(v)\n", + " id_table[h].append(i)\n", + " return hash_table,id_table" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "working on hash universe #: 0\n", + "working on hash universe #: 1\n", + "working on hash universe #: 2\n", + "working on hash universe #: 3\n", + "working on hash universe #: 4\n", + "working on hash universe #: 5\n", + "working on hash universe #: 6\n", + "working on hash universe #: 7\n", + "working on hash universe #: 8\n", + "working on hash universe #: 9\n", + "working on hash universe #: 10\n", + "working on hash universe #: 11\n", + "working on hash universe #: 12\n", + "working on hash universe #: 13\n", + "working on hash universe #: 14\n", + "working on hash universe #: 15\n", + "working on hash universe #: 16\n", + "working on hash universe #: 17\n", + "working on hash universe #: 18\n", + "working on hash universe #: 19\n", + "working on hash universe #: 20\n", + "working on hash universe #: 21\n", + "working on hash universe #: 22\n", + "working on hash universe #: 23\n", + "working on hash universe #: 24\n" + ] + } + ], + "source": [ + "### Creating the hashtables\n", + "hash_tables = []\n", + "id_tables = []\n", + "for universe_id in range(N_UNIVERSES): # there are 25 hashes\n", + " print('working on hash universe #:', universe_id)\n", + " planes = planes_l[universe_id]\n", + " hash_table, id_table = make_hash_table(document_vecs, planes)\n", + " hash_tables.append(hash_table)\n", + " id_tables.append(id_table)" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "def k_nearest_neighbours(v, candidates: list, k=1):\n", + " \"\"\"\n", + " Finds the k nearest neighbours to a given vector v from a list of candidate vectors.\n", + "\n", + " Parameters:\n", + " v (array-like): The vector for which nearest neighbours need to be found.\n", + " candidates (list): A list of candidate vectors.\n", + " k (int): The number of nearest neighbours to be returned. Default is 1.\n", + "\n", + " Returns:\n", + " list: The indices of the k nearest neighbours in the candidates list.\n", + " \"\"\"\n", + " similarity_score = []\n", + " for c in candidates:\n", + " similarity_score.append(np.dot(v, c) / (np.linalg.norm(v) * np.linalg.norm(c)))\n", + " sorted_ids = np.argsort(similarity_score)\n", + " return sorted_ids[-k:]" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [], + "source": [ + "def approximate_knn(doc_id, v, planes_l, k=1, num_universes_to_use=N_UNIVERSES):\n", + " \"\"\"Search for k-NN using hashes.\"\"\"\n", + " neighbours_to_consider = []\n", + " neighbours_to_consider_id = []\n", + " neighbours_to_consider_id_set = set()\n", + " for i in range(num_universes_to_use):\n", + " planes = planes_l[i]\n", + " bucket_id = hash_value_of_vector(v,planes)\n", + " neighbours = hash_tables[i][bucket_id]\n", + " neighbours_id = id_tables[i][bucket_id]\n", + " for index,i_d in enumerate(neighbours_id):\n", + " if i_d == doc_id: continue\n", + " if i_d not in neighbours_to_consider_id_set:\n", + " neighbours_to_consider_id_set.add(i_d)\n", + " neighbours_to_consider_id.append(i_d)\n", + " neighbours_to_consider.append(neighbours[index])\n", + " print(\"Fast considering %d vecs\" % len(neighbours_to_consider))\n", + " nearest_neighbor_id = k_nearest_neighbours(v,neighbours_to_consider,k=k)\n", + " print(nearest_neighbor_id)\n", + " print(neighbours_to_consider_id)\n", + " return [neighbours_to_consider_id[idx] for idx in nearest_neighbor_id]" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "doc_id = 0\n", + "doc_to_search = all_tweets[doc_id]\n", + "vec_to_search = document_vecs[doc_id]" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Fast considering 939 vecs\n", + "[16 7 35]\n", + "[3, 5, 7, 26, 28, 36, 44, 51, 66, 68, 71, 76, 79, 83, 91, 97, 105, 112, 117, 125, 126, 131, 135, 146, 152, 154, 156, 168, 184, 195, 210, 214, 220, 232, 233, 253, 254, 277, 285, 286, 292, 299, 319, 332, 350, 371, 373, 375, 404, 427, 430, 432, 466, 467, 469, 476, 478, 479, 491, 511, 521, 531, 538, 539, 563, 579, 591, 594, 615, 618, 619, 642, 647, 661, 671, 673, 674, 675, 681, 701, 705, 724, 727, 738, 743, 757, 762, 767, 770, 773, 780, 794, 810, 822, 824, 826, 833, 835, 842, 847, 850, 855, 859, 874, 884, 887, 898, 909, 920, 930, 938, 943, 958, 959, 962, 993, 995, 1005, 1012, 1023, 1033, 1039, 1040, 1058, 1065, 1069, 1073, 1075, 1081, 1088, 1107, 1113, 1117, 1142, 1147, 1154, 1172, 1176, 1180, 1185, 1189, 1202, 1211, 1212, 1219, 1220, 1228, 1248, 1249, 1270, 1278, 1280, 1287, 1296, 1304, 1309, 1324, 1328, 1352, 1358, 1383, 1386, 1411, 1415, 1419, 1420, 1423, 1427, 1444, 1451, 1454, 1461, 1462, 1470, 1473, 1477, 1484, 1485, 1488, 1490, 1512, 1513, 1520, 1529, 1543, 1544, 1546, 1553, 1581, 1588, 1601, 1607, 1618, 1621, 1625, 1627, 1631, 1632, 1634, 1650, 1662, 1670, 1674, 1690, 1698, 1701, 1703, 1716, 1721, 1729, 1731, 1732, 1743, 1760, 1762, 1764, 1777, 1794, 1809, 1830, 1836, 1863, 1864, 1866, 1869, 1876, 1887, 1898, 1916, 1917, 1918, 1924, 1935, 1939, 1945, 1953, 1957, 1977, 2002, 2003, 2008, 2012, 2021, 2028, 2032, 2047, 2051, 2057, 2061, 2074, 2077, 2080, 2086, 2106, 2143, 2154, 2159, 2164, 2185, 2201, 2206, 2211, 2227, 2228, 2236, 2246, 2251, 2304, 2311, 2328, 2333, 2359, 2368, 2384, 2385, 2390, 2402, 2416, 2417, 2419, 2427, 2429, 2438, 2439, 2445, 2453, 2454, 2460, 2465, 2468, 2470, 2472, 2478, 2487, 2498, 2503, 2509, 2510, 2512, 2516, 2528, 2537, 2552, 2554, 2584, 2595, 2634, 2638, 2651, 2654, 2688, 2692, 2693, 2699, 2700, 2706, 2708, 2728, 2736, 2738, 2744, 2747, 2763, 2768, 2780, 2782, 2786, 2812, 2813, 2832, 2837, 2865, 2889, 2898, 2902, 2923, 2928, 2937, 2939, 2942, 2957, 2963, 2967, 2984, 3014, 3026, 3042, 3048, 3051, 3052, 3054, 3072, 3078, 3080, 3088, 3091, 3100, 3130, 3149, 3153, 3159, 3180, 3206, 3210, 3213, 3217, 3223, 3231, 3234, 3237, 3238, 3260, 3264, 3272, 3289, 3290, 3301, 3330, 3356, 3369, 3379, 3382, 3399, 3409, 3432, 3436, 3446, 3456, 3465, 3466, 3467, 3480, 3488, 3490, 3517, 3525, 3531, 3539, 3579, 3581, 3583, 3584, 3587, 3602, 3629, 3634, 3636, 3639, 3640, 3698, 3706, 3708, 3715, 3723, 3737, 3740, 3742, 3748, 3771, 3773, 3779, 3786, 3793, 3794, 3798, 3812, 3815, 3818, 3831, 3837, 3843, 3847, 3874, 3881, 3902, 3903, 3906, 3921, 3930, 3934, 3935, 3947, 3954, 3957, 3965, 3975, 3977, 3999, 4007, 4013, 4025, 4046, 4053, 4094, 4095, 4101, 4104, 4106, 4111, 4116, 4141, 4142, 4178, 4185, 4209, 4214, 4216, 4240, 4257, 4258, 4273, 4276, 4280, 4293, 4318, 4320, 4326, 4337, 4339, 4351, 4362, 4370, 4371, 4380, 4395, 4397, 4399, 4404, 4406, 4407, 4423, 4448, 4453, 4464, 4466, 4479, 4493, 4506, 4543, 4544, 4550, 4556, 4579, 4592, 4598, 4599, 4605, 4624, 4625, 4629, 4646, 4651, 4657, 4660, 4665, 4682, 4701, 4711, 4721, 4739, 4742, 4746, 4750, 4754, 4774, 4783, 4792, 4798, 4806, 4807, 4830, 4833, 4841, 4852, 4854, 4856, 4874, 4877, 4883, 4885, 4899, 4903, 4917, 4931, 4933, 4937, 4945, 4949, 4953, 4969, 4981, 4985, 4987, 4988, 4995, 5015, 5030, 5077, 5107, 5131, 5195, 5223, 5257, 5309, 5327, 5415, 5463, 5583, 5648, 5702, 5746, 5778, 5792, 5800, 5801, 5804, 5821, 5888, 5969, 6023, 6030, 6053, 6054, 6074, 6199, 6233, 6263, 6340, 6351, 6355, 6391, 6394, 6497, 6559, 6583, 6586, 6625, 6643, 6663, 6685, 6727, 6737, 6818, 6832, 6875, 6893, 6968, 7019, 7022, 7029, 7032, 7118, 7137, 7147, 7156, 7181, 7223, 7228, 7238, 7261, 7281, 7312, 7335, 7339, 7441, 7504, 7506, 7636, 7704, 7727, 7765, 7804, 7828, 7833, 7899, 7938, 8011, 8066, 8109, 8135, 8144, 8146, 8161, 8179, 8220, 8228, 8242, 8272, 8431, 8469, 8494, 8591, 8620, 8788, 8825, 8858, 8859, 8864, 8879, 8885, 8908, 8916, 8968, 9029, 9099, 9102, 9177, 9247, 9289, 9348, 9386, 9439, 9449, 9451, 9524, 9612, 9688, 9760, 9769, 9790, 9984, 9990, 19, 166, 416, 524, 1068, 1158, 1253, 1393, 1494, 1582, 2212, 2508, 2896, 2976, 3884, 3933, 4016, 4223, 4245, 4446, 4690, 4880, 5024, 5039, 5160, 5414, 5619, 5699, 5725, 5797, 5846, 6009, 6271, 6389, 6408, 6642, 6793, 6799, 6974, 7296, 7301, 7311, 7408, 7606, 7646, 7696, 7710, 7772, 7782, 7959, 8023, 8101, 8302, 8349, 8446, 8582, 8609, 8699, 8988, 9019, 9128, 9130, 9131, 9250, 9483, 9740, 9761, 9832, 449, 5233, 6426, 7749, 8283, 20, 77, 127, 172, 219, 2360, 3923, 4492, 5218, 5498, 5848, 6594, 8497, 8892, 9913, 22, 24, 46, 107, 115, 143, 200, 216, 243, 246, 250, 261, 291, 297, 308, 315, 333, 364, 414, 425, 458, 470, 480, 481, 501, 544, 549, 556, 560, 585, 633, 685, 691, 694, 719, 819, 895, 929, 931, 1004, 1035, 1161, 1232, 1247, 1265, 1269, 1284, 1318, 1329, 1528, 1572, 1702, 1725, 1806, 1813, 1978, 1988, 1993, 2041, 2197, 2273, 2293, 2308, 2324, 2421, 2463, 2578, 2620, 2659, 2667, 2697, 2698, 2828, 2911, 3033, 3040, 3103, 3111, 3137, 3190, 3212, 3300, 3316, 3329, 3335, 3386, 3410, 3501, 3699, 3703, 3712, 3717, 3726, 3768, 3808, 3814, 3821, 3890, 3916, 3927, 3938, 3939, 3951, 3961, 3970, 3978, 3989, 3994, 4004, 4018, 4019, 4021, 4032, 4039, 4051, 4086, 4138, 4169, 4189, 4201, 4235, 4263, 4275, 4277, 4357, 4358, 4378, 4400, 4451, 4522, 4529, 4572, 4643, 4645, 4704, 4735, 4763, 4835, 4871, 4895, 4952, 4972, 5198, 5365, 5431, 5657, 5899, 6033, 6177, 6380, 6500, 6629, 6842, 6855, 7094, 7188, 7258, 7515, 7540, 7667, 7848, 8932, 9104, 9133, 9427, 9509, 9516, 9588, 9817]\n" + ] + } + ], + "source": [ + "nearest_neighbor_ids = approximate_knn(doc_id, vec_to_search, planes_l, k=3, num_universes_to_use=5)" + ] + }, + { + "cell_type": "code", + "execution_count": 55, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Nearest neighbors for document 0\n", + "Document contents: #FollowFriday @France_Inte @PKuchly57 @Milipol_Paris for being top engaged members in my community this week :)\n", + "\n", + "Nearest neighbor at document id 105\n", + "document contents: #FollowFriday @straz_das @DCarsonCPA @GH813600 for being top engaged members in my community this week :)\n", + "Nearest neighbor at document id 51\n", + "document contents: #FollowFriday @France_Espana @reglisse_menthe @CCI_inter for being top engaged members in my community this week :)\n", + "Nearest neighbor at document id 253\n", + "document contents: #FollowFriday @CCIFCcanada @AdamEvnmnt @boxcalf1 for being top engaged members in my community this week :)\n" + ] + } + ], + "source": [ + "print(f\"Nearest neighbors for document {doc_id}\")\n", + "print(f\"Document contents: {doc_to_search}\")\n", + "print(\"\")\n", + "\n", + "for neighbor_id in nearest_neighbor_ids:\n", + " print(f\"Nearest neighbor at document id {neighbor_id}\")\n", + " print(f\"document contents: {all_tweets[neighbor_id]}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "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.9.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/NLP/en-fr.test.txt b/NLP/en-fr.test.txt new file mode 100644 index 0000000..76b919e --- /dev/null +++ b/NLP/en-fr.test.txt @@ -0,0 +1,2943 @@ +torpedo torpille +torpedo torpilles +giovanni giovanni +chat discuter +chat discussion +chat causerie +chat bavardage +chat chat +catholics catholiques +herald herald +chuck chuck +pit pit +pit fosse +supplied approvisionné +supplied fournis +supplied fournies +supplied fourni +supplied fournie +optional optionnelles +optional facultatif +optional facultative +optional optionnel +optional facultatives +garrison garrison +garrison garnison +sprint sprint +exile exilé +exile exil +exile exilés +surprised surprise +surprised surpris +surprised étonné +surprised étonnée +achievements réussites +achievements accomplissements +achievements réalisations +biblical biblique +biblical bibliques +rebels rebelles +denis denis +geographical géographique +sit asseoir +sit assis +sit sit +alpine alpin +alpine alpins +alpine alpine +bills factures +glacier glacier +glacier glaciers +binding liant +binding contraignant +binding reliure +indicating indiquant +estonia estonie +eating manger +saving sauver +saving épargne +saving économiser +chi chi +developer développeur +developer promoteur +developer développeurs +indie indie +difficulties difficultés +doctrine doctrine +worn usées +worn portés +worn portées +worn usé +worn porté +fork fourchette +fork fourche +fork fourches +simpson simpson +maintaining maintenir +theological théologique +upcoming prochains +upcoming prochaines +temporarily temporairement +temporarily provisoirement +temporarily momentanément +hotels hôtels +edmonton edmonton +developments développements +literacy littératie +literacy alphabétisation +currency monnaie +currency devise +currency monnaies +currency devises +missionary missionnaire +missionary missionnaires +arrives arrive +hammer marteaux +hammer hammer +hammer marteau +hammer maillet +dollar dollars +dollar dollar +ambassadors ambassadeurs +twitter twitter +centres centres +solomon salomon +solomon solomon +recommend recommander +recommend recommande +descendants descendance +descendants descendants +ruth ruth +handling maniabilité +handling manipulation +handling manutention +customs coutumes +customs douanes +customs douane +customs douanières +customs douanier +collect recueillir +collect ramasser +collect rassembler +collect collecter +collect collectionner +grid grid +grid quadrillage +grid grille +secured sécurisée +secured sécurisés +secured sécurisées +secured sécurisé +certificate certificats +certificate attestation +certificate certificat +destination destination +albania albanie +euro euros +euro euro +consumption consommation +feat exploit +feat prouesse +pushing pousser +pushing poussant +constantly constamment +survivors survivants +survivors rescapés +survivors survivant +mansion manoir +cardiff cardiff +temples temples +blake blake +sheet feuille +sheet drap +sheet feuillet +lift soulever +lift ascenseur +lift élévateur +confidence confidence +confidence confiance +cuisine cuisine +cuisine gastronomie +frankfurt frankfurt +frankfurt francfort +galaxy galaxie +galaxy galaxy +ecuador équateur +ecuador equateur +breeding élevage +breeding reproducteurs +breeding elevage +breeding reproduction +outbreak épidémie +outbreak éclosion +legendary légendaire +legendary légendaires +legendary mythique +handball handball +georgian géorgien +georgian géorgie +georgian géorgiens +georgian géorgienne +copenhagen copenhague +trek trek +ignored ignorée +ignored ignorées +ignored ignoré +ignored ignorés +arch voûte +arch arche +arch arch +keys clés +keys clefs +proceedings procédures +enjoy enjoy +enjoy profite +enjoy profiter +enjoy profitez +quartet quartet +quartet quatuor +aims buts +aims objectifs +aims finalités +propaganda propagande +disk disque +disk disquette +realized réalisé +neat soigné +funny drole +funny drôle +funny rigolo +funny marrant +funny amusant +punishment punition +punishment châtiment +punishment punitions +punishment sanction +accuracy exactitude +accuracy précision +accuracy justesse +meter compteur +meter mètre +theoretical théoriques +theoretical théorique +suspension suspension +suspension sursis +suspension suspendre +suspension suspendu +suspension suspensions +seeds semences +seeds graines +lighting éclairage +lighting eclairage +lighting luminaires +jennifer jennifer +smooth lisser +smooth lisses +smooth lisse +customer client +armstrong armstrong +involve impliquer +philosophical philosophique +philosophical philosophiques +escaped échappée +escaped échappé +escaped évadé +escaped échappés +powell powell +kills tue +taste goûter +taste saveur +taste gouter +taste goût +allmusic allmusic +requiring nécessitant +bros bros +assertion affirmation +assertion assertion +boulevard boulevard +brooks ruisseaux +brooks brooks +sending envoyant +sending envoi +atomic atomiques +atomic atomique +antarctica antarctique +strikes frappes +strikes grèves +reconstruction reconstitution +reconstruction reconstruction +chronicle chroniques +chronicle chronique +traveling voyager +traveling voyageant +leslie leslie +ellis ellis +devon devon +ghana ghana +gen gen +rebel rebelles +rebel rebel +rebel rebelle +duncan duncan +pianist pianiste +canon canonique +canon canon +reformed réformé +reformed réformée +pack pack +iceland islande +solve résoudre +solve résout +cyclists cyclistes +payment payement +payment paiements +payment paiement +suburbs faubourgs +suburbs banlieue +suburbs banlieues +militia miliciens +militia milice +militia milices +pronounced prononcée +pronounced prononcé +pronounced prononcés +exhibit exposer +exhibit exposition +mph mph +glen glen +glen vallon +eugene eugène +eugene eugene +compromise compromis +compromise compromettre +tactical tactique +tactical tactiques +discovers découvre +switched basculé +uganda ouganda +jail prison +yeah ouais +yeah oui +yeah yeah +yeah ouai +withdraw retirer +withdraw retirez +holmes holmes +promise promesses +promise promettre +promise promis +promise promesse +promise promets +convert convertir +convert convertissent +convert convertit +dos dos +noting notant +noting constatant +recall rappeler +recall rappel +arrive arriver +arrive arrivez +warrior guerrière +warrior warrior +warrior guerrier +mammals mammifères +mammals mammifère +dimensions dimensions +dimensions dimension +surrey surrey +gaming jeux +gaming jeu +lutheran luthérienne +ports ports +amy amy +survival survie +survival survivre +responses réponses +collegiate collégiale +collegiate collégial +scandal scandales +scandal scandale +widow veuves +widow veuve +widow veuf +swing balançoire +swing swing +nights nuitées +nights nuits +nights soirs +polo polo +linda linda +adr adr +probability probabilités +probability probabilité +probability vraisemblance +farms fermes +farms exploitations +conferences conférences +conferences colloques +zhang zhang +crazy dingue +crazy fou +crazy fous +crazy cinglé +crazy folle +witness témoins +witness témoin +nephew neveu +sensitive sensible +sensitive délicat +sensitive sensibles +mutual mutuelle +mutual réciproque +mutual mutuel +mutual mutuelles +diet diète +diet diététique +diet régime +clients clients +fringe frange +fringe fringe +fringe marginale +fringe franges +passion passions +passion passion +rings bagues +rings anneaux +millions millions +dialect dialecte +orlando orlando +relay relayer +relay relais +wet humide +wet mouillé +wet mouillés +wet mouillée +wet humides +cruise cruise +cruise croisière +cruise croisières +henri henri +publish publier +publish publie +publish publiez +joy joy +joy joie +julia julia +kitchen cuisine +abstract abstraite +abstract abstrait +abstract abstraits +abstract résumé +snake serpents +snake vipère +snake snake +snake serpent +comedian comique +comedian comédien +comedian humoriste +motorcycle motocyclette +motorcycle motocycle +motorcycle motocyclettes +motorcycle moto +nadu nadu +arsenal arsenal +millennium millénaire +millennium millenium +millennium millennium +assists assiste +bow arc +bow bow +andré andré +serie serie +dimensional dimensionnelle +travelled parcourus +travelled voyagé +travelled parcouru +eurovision eurovision +suite suite +doug doug +gravity gravitation +gravity pesanteur +gravity gravité +stored stocké +stored stockés +stored entreposé +stored stockées +departed défunts +optical optique +optical optiques +frontier frontière +frontier frontier +evaluation évaluation +evaluation evaluation +graph graphique +graph graphe +hybrid hybrides +hybrid hybride +oslo oslo +earn gagnez +earn gagner +earn mériter +metre mètre +keyboard clavier +keyboard claviers +jamie jamie +decorated décorées +decorated décorée +decorated décorés +decorated décoré +complicated compliqué +complicated compliquées +complicated complique +complicated compliquée +nathan nathan +slavery esclavage +circular circulaire +circular circulaires +operators exploitants +operators opérateurs +armor blindage +armor armures +armor armure +mechanics mécano +mechanics mécaniciens +mechanics mécanique +mechanics mécanicien +mechanics mécaniques +bradford bradford +leon léon +leon león +leon leon +rachel rachel +strings chaînes +strings cordes +header entête +hood hood +hood capot +hood cagoule +hood capuche +hood capuchon +inspector inspectrice +inspector inspecteur +warnings avertissements +plains plains +plains plaine +plains plaines +defended défendues +defended défendu +defended défendus +defended défendue +wheels roulettes +wheels roues +criterion critère +ace as +ace eca +ace ace +arrangements arrangements +penn penn +approached approchée +approached approchés +approached approché +joke blague +joke plaisanter +joke plaisanterie +sailed navigué +religions religions +religions cultes +grants bourses +grants subventions +andrews andrews +moderate modéré +moderate modérée +moderate modérées +moderate modérés +stolen volée +stolen volées +stolen volé +stolen volés +stolen dérobée +tributary affluent +pin broche +pin épingle +pin pin +pin épingler +carol carol +carol carole +owns possède +prototype prototype +prototype prototypes +copied copié +copied copiés +copied copiée +canterbury canterbury +midnight minuit +midnight midnight +quarterback quarterback +quarterback quaterback +duchy duché +bailey bailey +arbitrators arbitres +performers interprètes +handled manipulée +handled manipulé +handled géré +handled manipulés +handled manipulées +exploration prospection +exploration exploration +diversity diversité +sixteen sixteen +sixteen seize +findings constatations +findings conclusions +repeat répéter +repeat répète +repeat répétition +repeat répétez +brussels bruxelles +planets planete +planets planètes +theatrical théâtrale +theatrical théâtral +reconnaissance reconnaissances +reconnaissance reconnaissance +shots coups +complaint réclamation +complaint plainte +complaint plaintes +batman batman +exhibited exposées +espn espn +investigate enquêter +verify vérifie +verify vérifier +verify vérifiez +discontinued arrêté +discontinued interrompu +absent absents +absent absent +absent absentes +absent absente +girlfriend copine +resignation résignation +resignation démission +fossil fossile +fossil fossiles +explaining expliquant +explaining expliquer +tang tang +inches pouces +inches centimètres +proven prouvés +proven prouvées +proven prouvée +proven éprouvé +proven démontré +proven prouvé +franco franco +dying mourante +dying mourir +dying mourant +tribal tribaux +tribal tribales +tribal tribal +tribal tribale +tyler tyler +surrender capitulation +surrender reddition +glenn glenn +substance substance +focusing focalisation +luxembourg luxembourg +colored coloré +colored colorée +scholarly érudit +administered administrée +administered administrés +administered administré +explosion explosion +explosion explosions +pushed poussé +pushed poussés +generations générations +duck canards +duck canard +duck duck +porter porteur +porter portier +porter porter +permanently définitivement +memphis memphis +salvador salvador +emma emma +mit mit +zoo zoos +zoo zoologique +zoo zoo +gibson gibson +wording libellé +emerging naissants +emerging émergents +emerging émergent +emerging émergente +portions portions +macedonia macédoine +ethics déontologie +ethics éthique +depot dépôt +depot depot +curtis curtis +rescued secouru +rescued sauvés +rescued secourus +rescued sauvée +rescued sauvé +gaelic gaélique +slovakia slovaquie +elevated élevées +elevated élevée +elevated élevés +elevated élevé +jeremy jérémie +jeremy jeremy +jeremy jérémy +listen ecouter +listen ecoutez +listen écoutez +listen ecoute +listen écouter +listen écoute +impressive impressionnante +impressive impressionnantes +impressive impressionnant +impressive impressionnants +bradley bradley +surely sûrement +surely surement +egg ovule +egg œuf +egg œufs +egg oeuf +egg oeufs +conquest conquête +conquest conquêtes +rod baguette +rod rod +rod canne +rod tige +cdp cdp +algorithm algorithme +burn brûlure +burn graver +burn brûler +burn brûlent +thesis thèses +thesis thèse +lover amoureux +lover amant +capitol capitole +capitol capitol +ferdinand ferdinand +marshal marshal +marshal maréchal +judaism judaïsme +balls boules +balls couilles +balls ballons +balls balles +balls billes +nacional nacional +wrestlers lutteurs +ahmed ahmed +sin pêché +sin pécher +sin péché +sin sin +sin péchés +holocaust holocauste +edgar edgar +saxophone saxophone +retain conserver +retain retenir +wishes voeux +wishes désirs +wishes souhaits +wishes souhaite +wishes vœux +prepare prépare +prepare préparer +prepare préparez +ruins ruines +ruins ruine +ibm ibm +rochester rochester +nigerian nigérien +nigerian nigériane +nigerian nigérian +jesse jesse +malaysian malaisien +malaysian malaisienne +atlas atlas +telegraph telegraph +telegraph télégraphe +telegraph télégraphique +performer interprète +cannon cannon +cannon canon +cannon canons +encounter rencontre +emily émilie +emily emilie +emily emily +dissolved dissoute +dissolved dissout +dissolved dissoudre +dissolved dissous +catalogue catalogue +discrimination discrimination +discrimination discriminations +myspace myspace +reveal dévoiler +reveal révéler +reveal révèlent +wizard assistant +wizard sorcier +wizard magicien +teen teen +teen adolescent +teen ado +spots spots +spots taches +bomber bombardier +bomber poseur +foods nourritures +foods aliments +quest quest +quest quête +connor conner +connor connor +screenplay scénario +motors moteurs +minimal minime +minimal minimale +minimal minimaliste +minimal minimum +minimal minimes +minimal minimal +muscle musculaire +muscle muscles +muscle muscle +muscle musclé +prestigious prestigieux +prestigious prestigieuse +prestigious prestigieuses +sustainable durable +sustainable durables +sustainable soutenable +chelsea chelsea +strict rigoureuse +strict strict +strict rigoureux +strict strictes +strict stricte +kingston kingston +sheep moutons +sheep mouton +sheep brebis +sheep ovins +andrea andrea +complaints plainte +complaints plaintes +complaints réclamations +connects relie +connects connecte +nursing infirmier +nursing infirmières +defenders défenseurs +richardson richardson +triangle triangulaire +triangle triangle +triangle triangles +nato otan +teeth dentition +teeth dents +occasional occasionnels +occasional occasionnellement +occasional occasionnelles +occasional occasionnelle +occasional occasionnel +strictly rigoureusement +strictly strictement +harper harper +fluid fluides +fluid fluide +fed fed +fed nourri +fed nourris +newfoundland neuve +disbanded dissoute +disbanded dissous +disbanded démantelé +comparable comparables +comparable comparable +documentation documentation +brien brien +compounds composés +pointing pointage +pointing pointant +edmund edmund +edmund edmond +naturally naturellement +forcing forçant +forcing forcer +ussr urss +laser laser +laser lasers +lat lat +lat lats +sculptor sculpteur +guild guilde +observer observateurs +observer observateur +observer observatrice +worlds mondes +imprisoned incarcérés +imprisoned emprisonnés +imprisoned emprisonné +wrestler lutteur +wrestler catcheur +praise louanges +praise éloge +praise louange +praise éloges +parishes paroisses +bones bones +bones os +css css +cox cox +contracts contrats +consequences conséquences +provisions dispositions +provisions provisions +circulation circulation +butterfly butterfly +butterfly papillons +butterfly papillon +hugo hugo +abolished abolis +abolished abolie +abolished aboli +algeria algérie +edu edu +sufficiently suffisamment +armies armées +separation séparation +spy espion +spy espionne +spy espionner +spy espions +spy espionnage +cliff falaises +cliff falaise +cliff cliff +technically techniquement +reactions réactions +lithuanian lituanie +lithuanian lituaniens +lithuanian lituanien +lithuanian lituanienne +trick trick +trick astuce +curve courbe +accidents accidents +horizontal horizontales +horizontal horizontaux +horizontal horizontal +horizontal horizontalement +horizontal horizontale +uploader uploader +legends légendes +enzyme enzyme +enzyme enzymatique +freight marchandises +freight fret +hydrogen hydrogène +broadcasts émissions +broadcasts diffusions +viii viii +caroline caroline +pull tirer +pull tirez +plymouth plymouth +twentieth vingtième +twentieth twentieth +twentieth xxe +cuts découpes +cuts coupures +cuts coupes +mediation médiation +airfield aérodrome +catalog catalogue +dale dale +synthesis synthèses +synthesis synthèse +rape viols +rape viol +rape colza +rape violer +seoul séoul +engagement engagement +engagement fiançailles +coin pièce +lucy lucie +lucy lucy +platinum platine +platinum platinum +twins jumelles +twins jumeaux +memories mémoires +memories souvenirs +robertson robertson +verified vérifiés +verified vérifiée +verified vérifiées +verified vérifié +anthology anthologie +milton milton +geological géologiques +geological géologique +defining définition +defining définir +defining définissant +dinner dîner +dinner souper +dinner diner +hosting hébergeur +hosting hébergement +thriller suspense +thriller thriller +retreat retraite +albany albany +abdul abdul +abdul abdel +ignore ignore +ignore ignorez +ignore ignorer +migration émigration +migration migration +migration migrations +carefully prudemment +carefully soigneusement +carefully attentivement +magnitude ampleur +magnitude magnitude +magnitude grandeur +sudan soudan +manages gère +duration duree +duration durée +henderson henderson +explorer explorateurs +explorer explorer +explorer explorateur +marco marco +fusion fusion +aids sida +aids aides +gathered rassemblés +gathered recueillies +reflected reflété +reflected réfléchie +afraid peur +afraid effrayée +afraid effrayé +presbyterian presbytérienne +automobile automobile +fault faute +fault faille +pound dièse +pound livre +allegedly prétendument +delay retarder +delay retard +delay délai +developers promoteurs +developers développeurs +belfast belfast +arctic arctique +kurt kurt +mayors maires +windsor windsor +assumption assomption +assumption supposition +assumption hypothèse +plates assiettes +plates plaques +fourteen fourteen +fourteen quatorze +nominee nominée +nominee nominé +disruption perturbations +disruption perturbation +monroe monroe +hearts coeurs +hearts cœur +hearts cœurs +hearts coeur +belgrade belgrade +victories victoires +extending étendre +pale pâles +pale pale +pale pâle +pursuit poursuite +glory glorieux +glory gloire +glory glory +destroyer destructeur +destroyer destroyer +deeply profondément +lectures conférences +affiliate affilié +affiliate affiliés +preston preston +deceased décédée +deceased décédés +deceased défunt +deceased décédé +speaks parle +gathering rassemblement +gathering cueillette +angry énervé +angry colère +angry furieux +angry furieuse +angry fâché +incomplete incomplets +incomplete inachevée +incomplete incomplet +incomplete incomplète +incomplete incomplètes +enrolled inscrits +enrolled inscrit +configuration configuration +brad brad +skill compétence +skill habileté +skill compétences +intense intense +intense intenses +tasmania tasmanie +commitment engagement +loved adoré +loved aimée +loved aimées +loved aimé +loved aimés +reforms réformes +rulers souverains +rulers dirigeants +uruguay uruguay +sustained soutenue +sustained soutenu +napoleon napoléon +confirm confirmez +confirm confirmation +confirm confirmer +breed race +auxiliary auxiliaire +auxiliary auxiliaires +enabled activées +enabled activés +enabled activée +enabled activé +discography discographie +licence permis +licence licence +refugees réfugiés +adrian adrien +adrian adrian +pipe pipe +pipe tuyau +karen karen +altered altéré +altered altérée +budapest budapest +designers concepteurs +designers designers +designers créateurs +designers dessinateurs +heir héritier +heir héritière +advisor conseiller +advisor conseillère +illustrate illustrer +illustrate illustrent +authorized autorisées +authorized autorisé +authorized autorisés +authorized autorisée +hide masquer +hide cache +hide cacher +announcement annonce +compact compact +compact compresser +compact compactes +compact pacte +compact compacts +compact compacte +particles particules +refuses refuse +receiver récepteur +receiver destinataire +receiver receveur +civilians civils +civilians civiles +marsh marécage +marsh marais +marsh marsh +vinyl vinyles +vinyl vinyle +vinyl vinyl +delayed retardée +delayed retardé +delayed retard +delayed retardés +delayed différé +encountered rencontrée +encountered rencontrées +encountered rencontré +encountered rencontrés +wednesday mercredi +chilean chilienne +chilean chilien +chilean chiliens +hey salut +hey hé +hey hey +chambers chambers +demo démonstration +demo demo +demo démo +demo démos +ahmad ahmad +santos santos +paying payant +paying payer +interpreted interprétés +interpreted interprété +interpreted interprétée +submit soumettre +desired désirée +desired désiré +desired souhaités +desired souhaitée +desired souhaité +followers adeptes +followers abonnés +observatory observatoires +observatory observatoire +problematic problématique +problematic problématiques +springfield springfield +kit kits +kit trousse +kit kit +remarks remarques +remarks observations +burton burton +coached entraînée +monarch monarque +observations observations +beetle coccinelle +beetle scarabée +promised promise +promised promises +promised promis +palomar palomar +cream crèmes +cream crème +cream cream +presenter présentateur +potter potter +copyvio copyvio +favourite préféré +favourite préférée +favourite favori +favourite favoris +favourite préférés +transformation transformation +mcdonald mcdonald +bavaria bavière +kumar kumar +nineteenth xixe +nineteenth nineteenth +severely gravement +severely sévèrement +mixture mélange +browser navigateur +endangered menacées +endangered menacée +endangered menacés +endangered menacé +mate mate +lyon lyonnais +lyon lyon +illustration illustration +kyle kyle +afl afl +brook brook +brook ruisseau +geometry géométrique +geometry géométrie +ping ping +extends étend +aggregate agrégat +aggregate agrégats +variants variantes +baroque baroque +baroque baroques +iso iso +collapsed effondré +collapsed écroulé +collapsed effondrée +integral intégral +integral intégrale +integral intégrales +jake jake +hopes espoirs +cornell cornell +modes modes +servant serviteur +servant servante +kenny kenny +hurt blessé +hurt blessée +hurt blesser +inline inline +carlo carlo +lynn lynn +stability stabilité +hoping espérant +hoping espérer +imposed imposés +imposed imposée +imposed imposées +imposed infligée +imposed imposé +confusing confusion +confusing confus +confusing déroutant +summaries synthèses +summaries résumés +summaries sommaires +beetles coléoptères +joel joël +joel joel +jets jets +logos logos +vital vitales +vital vitale +vital vital +vital vitaux +malcolm malcolm +winnipeg winnipeg +kilometers kilomètres +kilometers kilomètre +kilometers kilométrage +songwriters compositeurs +buddhism bouddhisme +nose nez +respected respectés +respected respecté +respected respectée +respected respectées +pace pace +pace rythme +thunder thunder +thunder tonnerre +centered centrée +centered centré +centered centrés +centered centrer +centered centrées +physicians médecins +bolivia bolivie +forget oubli +forget oublions +forget oublier +forget oublie +forget oubliez +implies implique +crops cultures +crops récoltes +halifax halifax +toll péage +toll péages +monk monk +monk moine +extraordinary extraordinaire +extraordinary extraordinaires +lessons leçons +lessons enseignements +pub pub +paralympics paralympiques +monte monte +maría maría +segments segments +deer cerf +deer cerfs +deer daim +deer biche +deer chevreuil +wireless wireless +commenced commencée +mysterious mystérieuses +mysterious mystérieux +mysterious mystérieuse +consultant consultant +consultant conseiller +consultant conseillère +consultant consultante +fraser fraser +formats formats +jam jam +jam confiture +jam confitures +chicken poulet +chicken poule +chicken volaille +chicken poulets +enable activer +idol idol +idol idole +reid reid +births naissances +births accouchements +amazing incroyable +amazing extraordinaire +amazing amazing +amazing étonnant +pet pet +pet animal +upset bouleversé +upset bouleversée +upset contrariée +upset contrarié +loves aime +loves amours +loves adore +stretch tronçon +stretch stretch +stretch étirer +stretch étirement +nominate désigner +striking frappante +striking frappant +striker buteur +striker striker +striker attaquant +accidentally accidentellement +louisville louisville +hopkins hopkins +eds eds +goddess déesses +goddess déesse +resumed repris +resumed reprise +satisfy satisfont +satisfy satisfaire +notion notion +voltage tension +voltage voltage +betty betty +marion marion +geology géologie +cyclone cyclone +export exportations +export exporter +export exportation +lightning lightning +lightning éclairs +lightning éclair +lightning foudre +impressed impressionné +impressed impressionnés +impressed impressionnée +maintains maintient +maintains entretient +logical logique +logical logiques +aggressive agressif +aggressive agressifs +aggressive agressive +aggressive agressives +aggressive agressivité +jin jin +julie julie +fbi fbi +yankees yankees +ludwig ludwig +pond étang +suburban banlieue +enlisted enrôlé +enlisted enrôlés +enlisted engagé +moments moments +moments instants +conjunction conjonction +interim provisoire +interim intérimaire +interim intérimaires +interim intérim +lucky chanceux +lucky chanceuse +lucky lucky +lucky veinard +targeted ciblée +targeted ciblés +targeted ciblé +targeted ciblées +lon lon +speedway speedway +regiments régiments +picks pics +prevented empêchée +prevented empêché +toy toy +toy jouet +toy jouets +bicycle bicyclettes +bicycle vélo +bicycle bicyclette +purely purement +interactions interactions +fraud fraude +fraud imposture +fraud escroquerie +fraud fraudes +fraud imposteur +lang lang +arcade arcades +arcade arcade +lecture conférence +sanctuary sanctuaires +sanctuary sanctuaire +dragons dragons +copa copa +careful prudent +careful prudents +nurse infirmier +nurse infirmière +rivals rivaux +module module +supplement suppléments +supplement complément +supplement supplément +lens lens +lens objectif +lens lentille +lens lentilles +patron patron +patron mécène +patron patronne +commands commandements +commands commandes +trend trend +trend tendance +superintendent surintendant +gerald gerald +gerald gérald +rap rappeur +rap rappeurs +rap rap +geneva geneve +geneva genève +ash frêne +ash cendres +ash ash +ash cendre +blade blade +blade lame +disappeared disparues +disappeared disparue +disappeared disparu +disappeared disparus +patrolling patrouiller +patrolling patrouilles +predominantly principalement +predominantly majoritairement +committees commissions +committees comités +boom boum +boom boom +sailors marins +sailors matelots +beaten vaincu +beaten battues +beaten battue +beaten battu +beaten battus +smoke fumer +smoke fumée +smoke fumées +assassination assassinats +assassination assassiner +assassination assassinat +lancaster lancaster +reynolds reynolds +divorce divorcer +divorce divorce +divorce divorces +dust dust +dust poussière +dust poussières +saxon saxons +saxon saxon +saxon saxonne +separately séparément +grain grain +grain grains +executives cadres +executives exécutifs +executives dirigeants +translations traductions +translations traduction +zimbabwe zimbabwe +thrown jetés +thrown jeté +cohen cohen +diving plongeon +diving plongeur +diving plongée +neighbouring voisines +neighbouring voisine +neighbouring voisin +carroll carroll +accounting comptables +accounting comptable +accounting comptabilité +mesa mesa +mesa missa +prussia prusse +intelligent intelligente +intelligent intelligents +intelligent intelligent +intelligent intelligentes +cherry cherry +cherry cerisier +cherry cerise +cherry cerises +tobacco tabac +tobacco tabagisme +cleaned nettoyées +cleaned nettoyé +cleaned nettoyés +varieties cépages +varieties variétés +bench banquette +bench banc +directions itinéraire +directions directions +ellen hélène +ellen ellen +padding rembourrage +measurement mesures +measurement mesurage +measurement mesurer +measurement mesure +paradise paradis +paradise paradisiaque +paradise paradise +alexandria alexandrie +complement compléter +complement complément +witch sorcière +witch sorcières +attraction attraits +attraction attraction +attraction attirance +attraction attirer +attraction attrait +diana diana +personalities personnalités +colleagues collègues +busy occupé +busy occupés +busy occupée +cia cia +screenwriter scénariste +rankings palmarès +rankings classements +aboriginal aborigène +aboriginal autochtones +aboriginal aborigènes +aboriginal autochtone +commanders commandants +salem salem +wagner wagner +sanctions sanctions +americas amérique +americas amériques +endings fins +instructor moniteur +instructor instructeur +nobility noblesse +divorced divorcées +divorced divorce +divorced divorcée +divorced divorcé +divorced divorcés +varies varie +varies varient +tomorrow demain +tomorrow tomorrow +manuscripts manuscrits +unified unifiée +unified unifiées +unified unifié +unified unifiés +clarify clarifier +scouts éclaireurs +scouts scoutisme +scouts recruteurs +scouts scouts +investigations enquêtes +silva silva +derek derek +agenda agenda +provision provision +provision disposition +humanity humanité +admit admettre +admit admets +admit admet +terror terreur +terror terrorisme +contestants concurrents +trinidad trinité +trinidad trinidad +distant distante +distant distants +distant distant +distant lointaine +distant lointain +burke burke +circles cercles +assignment affectation +assignment cession +assignment assignation +recalled rappelées +recalled rappelé +recalled rappelés +shrine sanctuaire +shrine autel +sail voiles +sail voilier +sail voile +sail naviguer +willie willie +karnataka karnataka +celebrate fêter +celebrate célébrer +ranch ranch +collaborated collaboré +vampire vampire +vampire vampires +playwright dramaturge +sick malades +sick malade +associates associés +heinrich heinrich +ethiopia éthiopie +ethiopia ethiopie +flags pavillons +flags drapeaux +tel tél +tel tel +drove conduisait +learns apprend +shorts short +shorts shorts +accomplished accompli +accomplished accomplis +accomplished accomplie +autobiography autobiographie +recruited recrutée +recruited recruté +recruited recrutés +uprising révolte +uprising insurrection +uprising soulèvement +edwin edwin +velocity vitesse +terminology terminologie +raiders pillards +raiders raiders +coordinates coordonnées +coordinates coordonnés +brighton brighton +viola alto +viola viola +para para +morrison morrison +propulsion propulsion +boxer boxer +boxer boxeur +finale finale +shoulder épaules +shoulder épaule +disabled handicapé +disabled handicapés +disabled désactivés +disabled désactivée +disabled désactivé +joins rejoint +div div +tactics tactique +tactics tactiques +ernst ernst +innocent innocents +innocent innocentes +innocent innocente +innocent innocent +rapper rappeur +privacy intimité +privacy confidentialité +boeing boeing +cites cites +emmy emmy +indo indo +distinguish distinguer +rosa rosa +thermal thermale +thermal thermique +thermal thermiques +flute flûte +flute flûtes +marines marines +feminist féministe +feminist féministes +trustees administrateurs +trustees fiduciaires +trustees mandataires +sculptures sculptures +bacteria bactériennes +bacteria bactérienne +bacteria bactéries +bacteria bactérie +introduce introduire +landmarks repères +disorders affections +disorders troubles +rivalry rivalité +rivalry rivalités +prevention prévention +honored honorées +honored honorée +honored honorés +honored honoré +healthy sain +healthy saine +circus cirque +circus cirques +speculation spéculations +speculation spéculation +burma birmanie +sec sec +quiet silencieuse +quiet tranquille +quiet calme +quiet silencieux +knee genoux +knee genou +deliver livrer +hypothesis hypothèses +hypothesis hypothèse +referendum referendum +referendum référendum +travelling voyager +estonian estonienne +estonian estonien +estonian estoniens +pastor pasteur +sofia sofia +tribune tribune +permit permis +priority priorité +priority priorités +priority prioritaire +priority prioritaires +cent cent +consequence conséquence +rica rica +furniture ameublement +furniture meubles +furniture mobilier +furniture meuble +macdonald macdonald +honest honnête +honest honnêtes +innovative novatrices +innovative innovante +innovative innovantes +innovative innovatrice +innovative innovant +innovative innovateur +estimate estimation +estimate devis +estimate estimations +atp atp +rotation rotation +syracuse syracuse +lecturer conférencier +automated automatisée +automated automatisé +obscure obscures +obscure obscure +obscure obscurs +obscure obscur +kosovo kosovo +classics classiques +julius julius +julius jules +appreciated appréciés +appreciated apprécié +appreciated appréciée +appreciated appréciées +naples naples +sebastian sebastian +sebastian sébastien +sebastian sebastien +activated activées +activated activés +activated activée +activated activé +varied variée +varied varié +varied variées +varied variés +offense offense +advised conseillé +barnes barnes +acknowledged reconnu +acknowledged reconnue +acknowledged reconnus +exceptions exceptions +exceptions exception +exceptions dérogations +martha martha +martha marthe +quarters quarts +quarters trimestres +drawings dessins +refuge refuge +maharashtra maharashtra +conventions conventions +elliott elliott +elliott elliot +diplomat diplomates +diplomat diplomate +unused inutilisées +unused inutilisés +unused inutilisée +unused inutilisé +searches recherches +brigadier brigadier +particle particule +particle particules +malayalam malayalam +thursday jeudi +icon icônes +icon icône +ulster ulster +genes gènes +infinite infinie +infinite infinies +infinite infini +considerably considérablement +vale vale +portraits portraits +paste coller +paste colle +paste pâte +randy randy +saxony saxe +convoy convois +convoy convoi +annie annie +excessive excessif +excessive excessifs +excessive excessive +believing croyant +believing croire +rhine rhin +mineral minéral +mineral minéraux +mineral minérales +implement implémenter +surgeon chirurgien +badge insigne +badge badge +charleston charleston +clause clause +infection infections +infection infection +electron électrons +electron électron +walt walt +cnn cnn +likewise pareillement +tonight tonight +confederation confédération +casino casino +doctorate doctorat +guatemala guatemala +guatemala guatémaltèque +settings paramètres +settings réglages +settings configuration +settings paramétrage +mask masques +mask masquer +mask masque +shelter abris +shelter abri +dorothy dorothée +dorothy dorothy +ethnicity ethnie +ethnicity ethnicité +ethnicity ethnique +hopefully espérons +elimination elimination +elimination élimination +heath bruyère +heath lande +heath heath +pregnant enceinte +pregnant enceintes +richards richards +theodore theodore +theodore théodore +delegates délégués +blair blair +fac fac +phrases phrases +phrases expressions +crashed accidenté +crashed crashé +crashed écrasé +preference préférence +preference préférences +janeiro janeiro +concerto concerto +bits bits +construct construire +tune tune +unofficial officieux +unofficial officieuse +bulk vrac +lighthouse phare +stan stan +highland highland +highland highlands +mascot mascotte +squadrons escadrons +acceptance acceptation +tight serrée +tight serré +tight serrés +tight étroit +considers considère +hub hub +mess mess +mess désordre +mess bordel +mess pagaille +wilderness sauvage +routine routine +dubbed surnommé +dozens douzaine +dozens dizaines +dozens douzaines +spotted repérés +spotted repéré +spotted repérée +harmony harmonie +harmony harmony +entrepreneur entrepreneur +entrepreneur entrepreneurs +wwe wwe +apollo apollo +apollo apollon +runway piste +naked nues +naked nue +naked nu +naked nus +anton anton +moses moïse +moses moses +legally juridiquement +legally légalement +fake faux +fake imposteur +fake simuler +fake fausse +fake fake +biased partiale +biased partial +revolt révolte +revolt révoltes +equity égalité +equity équité +varying variant +providence providence +investors investisseurs +reliability fiabilité +tenor ténor +fights combats +pocket pocket +pocket poches +pocket poche +sad tristes +sad tristesse +sad triste +sad sad +troy troie +troy troy +treasure trésors +treasure trésor +ion ion +ion ionique +ion ions +rendered rendue +rendered rendu +rendered rendues +rendered rendus +transformed transformée +transformed transformés +transformed transformées +transformed transformé +roberto roberto +adoption adoption +decrease diminution +decrease diminuer +decrease réduire +decrease baisse +reserved réservés +reserved réservée +reserved réservé +forgotten oubliés +forgotten oubliées +forgotten oublié +forgotten oubli +forgotten oubliée +lok lok +crop récolte +licensing licences +advocacy sensibilisation +advocacy plaidoyer +collecting collecter +collecting collectionner +collecting collecte +treasury trésorerie +treasury trésor +trumpet trompette +johnston johnston +uncertain incertain +uncertain incertaine +uncertain indécis +uncertain incertitude +norton norton +collector collecteur +collector collectionneur +collector percepteur +cluster cluster +cluster amas +dear chère +dear cher +dear chers +georges georges +roller rouleaux +roller roller +roller rouleau +clothes vêtements +clothes vêtement +sovereign souveraines +sovereign souverains +sovereign souveraine +sovereign souverain +enhanced améliorés +enhanced renforcée +enhanced améliorée +enhanced amélioré +compensation dédommagement +compensation indemnité +compensation indemnisation +compensation rémunération +consent consentement +outline esquisse +holdings exploitations +holdings participations +holdings dotations +jorge jorge +darkness noirceur +darkness pénombre +darkness obscurité +darkness ténèbres +penalties pénalités +penalties peines +penalties pénalité +penalties sanctions +bombers bombardiers +holes trous +blow souffler +blow souffle +blow coup +cooking cuisiner +cooking cuisine +cooking cuisson +aftermath contrecoup +aftermath séquelles +trainer dresseur +trainer formateur +trainer entraîneur +trainer entraineur +measuring mesurage +measuring mesurer +measuring mesure +lawsuit poursuites +lawsuit procès +chip chip +chip jeton +chip puce +consciousness conscience +archaeology archéologie +latvia lettonie +telugu telugu +blogs blogue +blogs blogs +protecting protéger +protecting protégeant +hardy hardy +nicknamed surnommé +nicknamed surnommée +scorer marqueur +stamp cachet +stamp timbre +stamp timbres +stamp poinçon +stamp tampon +nat nat +fur fourrure +fur fourrures +fur pelage +redirected redirigé +estimates estimations +lit allumé +lit éclairé +lit allumée +lit allumés +ritual rituels +ritual rituel +locality localité +trace tracé +trace traces +trace tracer +trace trace +marble bille +marble marbres +marble marbre +foundations fondements +foundations fondations +politically politiquement +nottingham nottingham +derivative dérivés +derivative dérivé +derivative dérivée +boxers caleçon +boxers boxeurs +dimension dimension +touchdowns touchdowns +crawford crawford +bats chauves +bats battes +yugoslav yougoslaves +yugoslav yougoslave +tanzania tanzanie +succeed réussir +motto devise +concentrated concentré +concentrated concentrés +concentrated concentrée +concentrated concentrées +dirty cochonne +dirty sale +dirty sales +hayes hayes +xbox xbox +identifying identifier +likes aime +genres genres +galleries galeries +forbes forbes +adequate adéquate +adequate adéquates +adequate adéquat +brass cuivre +brass cuivres +brass laiton +bach bach +alias alias +alias pseudonyme +alias pseudonymes +inland intérieure +wore portaient +wore portait +tough dur +tough coriace +advertisement publicité +advertisement annonce +protagonist protagoniste +trails sentiers +demanded exigé +claire claire +mistakes fautes +mistakes erreurs +bruno bruno +dylan dylan +bag sac +bag sachet +bag sacoche +churchill churchill +tan tan +tan bronzage +tan bronzé +climb grimper +witnesses témoins +thames tamise +kazakhstan kazakhstan +presenting présentant +highlights souligne +jumping sauter +jumping sauts +jumping sautant +jumping saut +prof prof +slovak slovaque +slovak slovaques +skull crâne +skull crânes +missionaries missionnaires +ordained ordonnés +ordained ordonné +hoped espéraient +hoped espéré +hoped espérait +myth mythes +myth mythe +mandatory obligatoire +mandatory obligatoires +mandatory obligatoirement +stern poupe +stern sévère +stern stern +fees frais +fees honoraires +bet bet +bet pari +bet parie +bet parier +monks moines +dancers danseuses +dancers danseurs +quantity quantités +quantity quantité +inventor inventeur +cairo caire +graves tombes +graves tombeaux +graves graves +graves fosses +proximity proximité +sue sue +armament armements +armament armement +barrier barrière +creatures créatures +logan logan +erik erik +leicester leicester +silence silences +silence silence +jessica jessica +plateau plateau +finite finie +finite finies +precedent précédent +stationed stationnés +stationed stationné +walsh walsh +zones zones +intensity intensités +intensity intensité +exterior extérieurs +exterior extérieur +exterior extérieures +exterior exterieur +exterior extérieure +murders assassinats +murders meurtres +paragraphs paragraphes +costume déguisements +costume costume +costume déguisement +bike bicyclette +bike vélo +neighborhoods quartiers +imprisonment incarcération +imprisonment emprisonnement +suffolk suffolk +forwards transmet +remarkable remarquables +remarkable remarquable +undelete reprennent +differ diffèrent +tin tin +tin étain +garcia garcia +madagascar madagascar +cameras appareils +cameras caméras +ammunition munition +ammunition munitions +fires feux +fires incendies +explore découvrir +explore explorer +builder constructeur +minneapolis minneapolis +bullet balle +bullet bullet +kerry kerry +subway métro +arrow flèches +arrow arrow +arrow flèche +economist économiste +economist economist +bread pain +lou lou +strategies stratégies +rubber caoutchouc +precise précises +precise précis +precise précise +rifles fusils +rifles carabines +cognitive cognitifs +cognitive cognitif +cognitive cognitive +cognitive cognitives +governorate gouvernorat +nest nids +nest nest +nest nid +slam slam +ancestry ascendance +portsmouth portsmouth +convince convaincre +convince convainc +audiences auditoires +audiences audiences +boarding embarquement +boarding abordage +bonds obligations +joshua joshua +inhabited habité +inhabited habitées +inhabited habités +inhabited peuplé +inhabited habitée +casey casey +attract attirent +attract attirer +attract attire +nonetheless néanmoins +kilometres kilomètres +kilometres kilométrage +pump pompe +pump pomper +feeding nourrir +prey proies +prey proie +ain aïn +ain ain +mathematician mathématicien +diary journal +diary agenda +vulnerable vulnérables +vulnerable vulnérable +inscription inscription +dubai dubai +dubai dubaï +michelle michelle +michelle michèle +lebanese libanais +lebanese libanaises +lebanese libanaise +productive productives +productive productive +productive productif +productive productifs +guided guidé +guided guidées +guided guidés +guided guidée +researcher chercheuse +researcher chercheur +della délia +della della +baden bade +baden baden +upgraded améliorés +upgraded modernisé +upgraded améliorée +upgraded amélioré +demonstration démonstration +demonstration démonstrations +demonstration manifestation +equality égalité +equality egalité +philosophers philosophes +spacecraft vaisseau +trap piège +clara clara +invitation invitation +marking marquages +marking marquage +marking balisage +expertise compétences +expertise expertise +expertise expertises +admission admission +sacramento sacramento +certification accréditation +certification certification +precisely justement +precisely précisément +casting fonderie +casting casting +casting coulée +casting moulage +reassessed réévalué +prohibited interdites +prohibited interdite +prohibited interdit +prohibited interdits +supposedly supposé +supposedly prétendument +governance gouvernance +frog grenouille +vague vague +mhz mhz +secular séculaire +secular laïque +secular laïcité +secular laïques +secular laïcs +tracking repérage +tracking suivi +spa spa +spa thermes +publicity publicité +armoured blindé +armoured blindée +armoured blindés +cleared innocenté +watts watt +watts watts +gibraltar gibraltar +renewed renouvelée +renewed renouvelé +renewed renouvelés +reflects reflète +fever fièvre +melody mélodie +melody mélodies +melody melody +supporter partisan +supporter supporter +elaborate élaboré +elaborate élaborer +jeffrey jeffrey +discusses discute +useless inutile +useless inutilisable +useless inutilité +useless inutiles +swift swift +tuesday mardi +silly idiot +silly idiote +empress impératrice +capabilities capacités +newman newman +scales gammes +scales écailles +scales échelles +scales balances +beatles beatles +clergy clergé +jacksonville jacksonville +sara sara +bee abeille +bee bee +holders titulaires +holders détenteurs +baltic baltique +baltic baltes +czechoslovakia tchécoslovaquie +brandon brandon +loaded chargées +loaded chargée +loaded chargés +loaded chargé +maya maya +maya mayas +evangelical évangélique +enterprises entreprises +imo omi +mature maturité +mature mûr +mature mûres +mature mûre +mature mature +physically physiquement +sequences séquences +breast mammaire +breast poitrine +breast seins +breast sein +beast bête +raja raja +für für +educator éducateur +educator éducateurs +bang bang +griffin griffin +griffin griffon +rhodes rhodes +preparing préparer +proportion proportions +proportion proportion +itv itv +ana ana +ceiling plafond +ceiling plafonds +rainbow rainbow +rainbow arc +demon démon +demon demon +prussian prussienne +prussian prusse +equations équations +answered répondu +ist tsi +ist ist +perception perception +perception perceptions +distributor distributeur +distributor distributeurs +entities entités +jackie jackie +dynamics dynamiques +dynamics dynamique +fiji fidji +fiji fidjien +insufficient insuffisante +insufficient insuffisant +insufficient insuffisance +insufficient insuffisantes +insufficient insuffisants +algebra algèbre +homer homer +larvae larve +larvae larves +limestone calcaires +limestone calcaire +johns johns +bce bce +chaos anarchie +chaos chaos +chang chang +layers pondeuses +layers couches +layers calques +crater cratère +crater cratères +chad tchadien +chad tchad +chad chad +seized saisi +seized saisis +webster webster +excess excès +excess excédentaires +excess excédent +bombardment bombardement +bombardment bombardements +hurling hurling +ashley ashley +dot dot +gif gif +translator traducteurs +translator traducteur +translator traductrice +cowboys cowboys +counted comptés +counted comptabilisé +counted compté +counted comptées +hanging suspendus +hanging pendu +hanging pendaison +soprano soprano +interviewed interviewé +interviewed interrogés +interviewed interrogé +workshops ateliers +terrain terrain +belarus belarus +belarus biélorussie +belarus bélarus +liked apprécié +liked aimés +liked aimées +liked aimée +liked aimé +console pupitre +console consoles +console console +nascar nascar +vandal vandales +vandal vandale +graduates diplômés +jungle jungle +ballot scrutin +placement placement +fairy féerique +fairy fées +fairy fée +tourists touristes +reasonably raisonnablement +performs accomplit +performs effectue +quarterly trimestriellement +quarterly trimestriel +quarterly trimestrielle +quarterly trimestrielles +quarterly trimestriels +shifted décalé +romans romans +romans romains +rpm rpm +diploma diplôme +environments environnements +collaborative collaboratif +swan cygne +swan swan +swan cygnes +carpenter charpentier +carpenter carpenter +carpenter menuisier +petition pétition +boris boris +berry baie +berry berry +berry baies +invention invention +southampton southampton +prairie prairie +prairie prairies +bend plier +bend virage +app application +app app +app appli +finalist finaliste +finalist finalistes +questioned interrogée +questioned interrogés +questioned questionné +questioned interrogé +explicit explicite +explicit explicitement +explicit explicites +draws dessine +draws tirages +governed régis +governed gouvernés +governed gouverné +slight légère +drag drag +drag traîner +drag traînée +drag glisser +maxwell maxwell +planes avions +everyday quotidien +everyday quotidienne +oriental orientale +oriental orientales +oriental oriental +oriental orientaux +manufacture fabrication +airing aérer +acclaimed acclamé +coordinator coordonnateur +coordinator coordinatrice +coordinator coordonnatrice +coordinator coordinateur +bombs bombes +mohammad mohammad +mohammad mahomet +bassist bassiste +superman superman +colombian colombien +colombian colombienne +colombian colombiens +philippe philippe +felix felix +felix félix +bengali bengali +greene greene +voluntary volontaire +voluntary volontaires +floating flottant +floating flottants +floating flotter +floating flottante +montenegro monténégro +sketch croquis +sketch esquisse +sketch esquisser +mann mann +flooding inonder +flooding inondations +flooding inondation +escort accompagnateur +escort escorte +escort escort +dressed habillé +dressed habillée +dressed habillées +dressed vêtue +dressed habillés +astronomy astronomie +sudden soudaine +sudden subite +sudden soudain +variables variables +arbitrary arbitraires +arbitrary arbitraire +skiing ski +timothy timothy +cello violoncelle +rainfall précipitations +rainfall pluies +rainfall pluviométrie +rafael rafael +rafael raphaël +sphere sphère +rewrite réécriture +rewrite réécrire +georg georg +cinematography cinématographie +canvas canevas +canvas canvas +canvas toile +canvas toiles +chest poitrine +chest thoracique +chest torse +chest coffre +krishna krishna +provider prestataire +provider fournisseur +frances frances +frances françoise +crowned couronnés +crowned couronnée +crowned couronnées +crowned couronné +wanting vouloir +wanting voulant +carved taillé +carved gravé +carved taillée +carved sculpté +carved sculptés +poles pôles +poles poteaux +poles mâts +poles polonais +cabin cabine +cabin cabane +civilization civilisation +civilization civilisations +avoided évitées +avoided évitée +avoided évités +avoided évité +lisbon lisbonne +eliminate élimine +eliminate éliminer +panels panneaux +darwin darwin +cheese fromages +cheese fromage +easter pâque +easter pâques +rat rat +rat rats +papua papouasie +insert insert +insert insérer +insert insertion +insert insérez +descriptions descriptions +debates débat +debates débats +informal officieux +informal informel +informal informelles +informal informels +informal informelle +castles châteaux +cry pleurer +cry cry +cry pleure +cry pleurs +loyal fidèle +loyal loyal +loyal loyaux +loyal fidèles +loyal loyale +surfaces surfaces +nicolas nicolas +institutes instituts +humor humour +madonna madone +madonna madonna +worcester worcester +cooperative coopératifs +cooperative coopérative +cooperative coopératives +cooperative coopératif +substantially substantiellement +substantially sensiblement +winston winston diff --git a/NLP/en-fr.train.txt b/NLP/en-fr.train.txt new file mode 100644 index 0000000..855f568 --- /dev/null +++ b/NLP/en-fr.train.txt @@ -0,0 +1,10872 @@ +the le +the les +the la +and et +was fut +was etait +was était +for pour +that que +that cela +with avec +from du +from de +from depuis +this ceci +this cet +this cette +this cela +this ce +utc utc +utc tuc +his sa +his his +his ses +his son +not not +not non +not pas +are sont +talk parler +talk parle +talk talk +talk parlez +which lesquels +which laquelle +which lequel +also également +also aussi +also egalement +were étaient +but mais +have avoir +have ont +one un +one une +one one +new nouveau +new nouvelle +new nouvelles +new nouveaux +new nouveautés +first première +first premières +first premier +first premiers +page pages +page page +you vous +you tu +you toi +you you +they elles +they ils +they eux +had avait +had avaient +had avais +article article +who qui +who oms +who who +all toute +all toutes +all tous +all tout +all all +their leur +their leurs +there là +made fait +made fabriqués +made faite +made fabriqué +its sa +its ses +its son +people gens +people personnes +may mai +may may +may peut +after apres +after after +after après +after aprés +other autre +other autres +should devrait +should devraient +should devrais +two two +two deux +score marquer +score score +score partition +her her +can peuvent +can pouvez +can peux +can peut +would serait +would aurait +would ferait +more davantage +more plus +she she +she elle +when lorsque +when quand +time temps +time heure +team équipe +team equipe +american américaine +american américain +american américaines +american américains +such tels +such tel +such telle +such telles +discussion discussions +discussion discussion +discussion débat +links liens +only seul +only uniquement +only seulement +only seule +some certains +some certaines +some quelques +see consultez +see voyez +see voir +see vois +united unie +united unis +united unies +years années +years ans +school ecole +school école +world monde +world mondial +world mondiale +university université +university universitaire +during durant +during pendant +during lors +out sortir +out sortie +out dehors +out out +state etat +state état +states etats +states états +national nationaux +national national +national nationale +national nationales +wikipedia wikipédia +wikipedia wikipedia +year annee +year an +year année +most most +city ville +city villes +used utilisées +used utilisé +used utilisés +used utilisée +then ensuite +then alors +then puis +county comté +external externe +external extérieurs +external extérieur +external extérieure +external externes +where oú +where où +will will +will volonté +will fera +will sera +what quoi +what quel +what quelle +delete supprimer +delete supprimez +delete effacement +delete supprime +delete effacer +these ces +january janvier +march marche +march mars +august aout +august août +july juillet +being etre +being être +film film +him lui +many nombreux +many beaucoup +many nombreuses +many plusieurs +south méridional +south sud +september septembre +like comme +like aime +like aiment +like genre +like aimez +between entre +october octobre +three trois +three three +june juin +well bien +well puits +well bah +use utilisation +use utiliser +use utilise +use utilisez +war guerre +war war +under sous +under under +them eux +april avril +born naître +born né +born naissance +born née +born born +december décembre +december decembre +link lien +later ultérieur +part partie +november novembre +players joueurs +list liste +list listes +please veuillez +please please +please svp +following suivantes +following suivant +february fevrier +february février +known connues +known connue +known connus +known connu +second second +second deuxième +second deuxieme +second seconde +name nommer +name nom +name dénomination +name noms +group groupe +history histoire +history historique +series série +series séries +just just +just simplement +just juste +north nord +work travaux +work travail +work travailler +before auparavant +before avant +since depuis +since puisque +season saison +season saisons +both both +high élevée +high hautes +high haut +high haute +high élevé +through via +district district +now désormais +now now +now maintenant +comments commentaires +comments remarques +comments observations +because parce +because car +because parceque +football football +music musiques +music musique +however toutefois +however cependant +diff différence +diff diff +century siecle +century siècle +century century +league league +league ligue +edits modifications +debate débat +title titre +articles articles +john jean +john john +same pareil +same meme +same identique +same mêmes +same même +including incluant +including comprenant +could pourrais +could pouvait +could pourrait +could pourraient +english anglaise +english francais +english anglais +album album +number nombre +number numéro +against contre +against against +family familiale +family famille +family familles +user utilisateur +user usager +based basée +based basés +based basé +area région +area zone +area domaine +became devenus +became devenu +became devenue +became devint +york york +life vie +british britanniques +british britannique +international international +international internationaux +international internationale +game gibier +game match +game jeu +club club +your votre +your vos +early early +early précoce +early tôt +best meilleure +best meilleures +best meilleur +best best +best meilleurs +west occidentale +west occident +west ouest +west west +house maison +company compagnie +company entreprise +company société +general généraux +general généralités +general générale +general général +left gauche +very très +very tres +very trés +here ici +here voilà +here voici +don don +living vivante +living vivants +living vivant +living vivre +day journée +day jour +day journee +several plusieurs +place place +place endroit +place lieu +party partie +party parti +party fete +party soirée +party fête +college collège +college université +result résultat +keep maintenir +keep garder +keep conserver +appropriate approprié +appropriate appropriées +appropriate appropriés +appropriate appropriée +four quatre +even meme +even même +class classe +government gouvernement +government gouvernements +how comment +called appelée +called appelé +called appelés +did did +each chacune +each chaque +each chacun +found trouvée +found trouvé +found trouvées +found retrouvé +found trouvés +center center +center centrer +center centre +per per +style style +com ocm +com com +long longues +long longs +long longue +long longtemps +long long +country pays +back dos +back arrière +back retour +back revenir +way façon +way manière +way way +www www +modify modifiez +modify modifier +end end +end fin +make faites +make faire +public publics +public publiques +public public +public publique +played joués +played jouées +played jouée +played joué +won gagné +won gagnée +won gagnées +won won +won gagnés +another another +released publié +released relâché +released libérés +released libéré +added ajoutés +added ajouté +added ajout +added ajoutée +support soutien +support assistance +support appui +games jeux +former ancien +former ancienne +those ceux +films films +church église +church eglise +east orientale +east est +east orient +line ligne +line line +major major +major commandant +major majeur +members membres +members adhérents +good bons +good bien +good bonne +good bon +good bonnes +much much +much beaucoup +image image +show afficher +show montre +show montrer +show spectacle +still still +still encore +still toujours +think pense +think pensez +think réfléchis +think penser +think réfléchir +below dessous +town ville +last dernier +last dernière +last derniers +last dernières +system système +right droite +right droit +song chant +song chanson +notable notable +notable notables +notable remarquable +notable remarquables +section section +single célibataire +single single +single unique +single célibataires +included incluses +included inclus +included incluse +included compris +align aligner +align alignement +home maison +home domicile +home accueil +women femmes +women féminin +women femme +television téléviseur +television télévision +television télé +seed graine +seed semences +seed seed +seed graines +seed semence +member membres +member membre +goals buts +goals objectifs +sources sources +book livre +book réserver +station station +station gare +order ordre +order commande +order commander +old ancienne +old anciens +old ancien +old vieux +old vieille +information informations +information infos +information renseignements +information information +set définir +own propres +own propre +own posséder +text textes +text texte +band groupe +band orchestre +band bande +point point +local locale +local local +local locales +local locaux +around autour +around alentour +river fleuve +river rivière +top top +top haut +main principal +main principales +main main +main principale +main principaux +language langue +language langage +language langues +french francais +french française +french français +french françaises +https https +named nommée +named nommé +named nommés +off off +off hors +note remarque +note note +note notez +career carrière +original originale +original original +original originaux +age ère +age age +age âge +age âges +service service +established établies +established établie +established établi +established établis +located situés +located située +located localisé +located situé +said dit +said disait +website site +population populations +population population +air aérien +air air +german allemand +german allemands +german allemande +law loi +law droit +military armée +military militaire +military militaires +great super +great grande +great génial +great grand +clubs discothèques +clubs clubs +published publiée +published publiées +published publiés +published publié +president présidente +president président +park parc +official fonctionnaire +official officielles +official officiels +official officielle +official officiel +case cas +case étui +case affaire +london londres +times fois +although quoique +small petit +small petits +small petites +small petite +third troisieme +third troisième +third tiers +third third +third troisièmement +different différentes +different différente +different différents +different différent +due dus +due due +due dû +get obtenez +get obtenir +village village +closed fermée +closed fermé +closed fermés +closed clos +art art +art artistique +player joueurs +player joueur +player lecteur +final définitif +final finale +final final +final définitive +community communaute +community communautaire +community communauté +community collectivité +held tenu +again again +again encore +began commencé +army armée +award récompense +without sans +death décès +death death +death mort +built construite +built construit +built bâti +built construits +men masculins +men hommes +men homme +large grands +large grande +large grandes +large grand +site site +using utiliser +using utilisant +deletion suppressions +deletion effacement +deletion suppression +white blanche +white blancs +white blanches +white blanc +five five +five cinq +central central +central centrale +road routier +road route +road chemin +children enfants +children enfant +free gratuit +free gratuits +free free +free gratuitement +free libre +took pris +took prit +england angleterre +include incluent +include inclure +include comprennent +include inclut +association association +down down +down descendre +given donné +given donnés +source source +source sources +california californie +california californienne +man man +man mec +man homme +version version +written ecrit +written écrite +written écrit +written écrites +written écrits +created créée +created créé +created crée +created crées +created créés +media média +media médias +black noire +black black +black noires +black noir +black noirs +php php +report signaler +report reportage +report rapport +building batiment +building immeuble +building bâtiment +take prend +take prendre +take prenez +take prends +division division +division circonscription +comment commentaire +comment commente +comment commenter +having ayant +having avoir +king roi +king king +edit modifier +edit édition +edit éditer +stadium stade +stadium stadium +died morte +died décédé +died mort +ship navire +ship vaisseau +research recherches +research recherche +record enregistre +record record +record enregistrer +archive archivage +archive archiver +archive archive +archive archives +places endroits +places lieux +undo annuler +undo défaire +cup gobelet +cup cup +cup tasse +cup coupe +records enregistrements +records records +often souvent +few peu +received reçu +received reçues +received reçus +received reçue +side latéraux +side côté +side latérale +side latéral +power puissance +power pouvoir +education enseignement +education éducation +know connaitre +know connaître +know sais +know sachez +know savoir +category catégorie +category catégories +water eaux +water eau +species espèces +species espèce +field champ +field domaine +near proche +near près +australia australie +video vidéo +video vidéos +video video +need nécessité +need besoins +need besoin +island île +form forme +form formulaire +find trouver +find trouvez +served servi +served servis +served servie +served servies +served desservis +play jouer +play jouez +project projet +radio radiophonique +radio radio +works travaux +works œuvres +works oeuvres +proposed proposée +proposed proposé +proposed proposées +proposed proposés +every chaque +development developpement +development développement +example exemple +live live +live vivant +live vivre +union union +union syndicat +india inde +india indes +next prochain +next suivante +next suivant +next prochaine +next next +special spéciales +special spécial +special spéciaux +special spéciale +court tribunal +court cour +region région +little petit +little peu +little petite +short courte +short court +short courts +short courtes +william guillaume +william william +province province +western occidentale +western occidental +western ouest +western western +son fils +son fiston +france france +council conseil +others autres +royal royale +royal royal +royal royales +royal royaux +current actuel +current courant +current actuels +current actuelle +street rues +street street +street rue +full complète +full pleine +full plein +full complet +red rouges +red roux +red rouge +too trop +too too +department département +san san +help aidez +help aider +help aide +among parmis +among parmi +preserved préservée +preserved préservé +preserved conservés +preserved préservés +preserved conservées +preserved préservées +james james +open ouverte +open ouvrez +open ouvert +open ouverture +open ouvrir +force force +force forcer +position position +head head +head tête +head têtes +director directeur +director directrice +director réalisateur +father pére +father pere +father père +track piste +track morceau +http http +canada canada +never jamais +never never +australian australienne +australian australiens +australian australien +australian australie +george georges +george george +jpg jpg +level niveau +late tardive +late tardif +late retard +late tard +summer eté +summer été +society société +moved déplacé +moved ému +moved déménagé +moved déplacée +office bureaux +office bureau +period période +championship championnat +round arrondi +round ronde +round rond +round rondes +round ronds +story récit +songs chanson +songs chansons +various divers +various diverses +file dossier +file fichier +days jours +days journées +land terre +land terrain +land terres +business affaires +business entreprise +business entreprises +reason raisons +reason raison +america amerique +america amérique +million million +million millions +european européens +european européennes +european européenne +european européen +term terme +six six +post publier +post poste +post publication +why pourquoi +why why +produced produite +produced produites +subject objet +subject sujet +young jeunes +young jeune +total totale +total total +total totaux +david alain +david laurent +david sylvie +david david +science science +science scientifique +science sciences +related connexe +related connexes +related lié +related liés +rock rocheux +rock rock +archived archivées +archived archivé +archived archivés +railway ferroviaire +become devenez +become deviennent +become deviens +become devenir +led led +students étudiants +students etudiants +students élèves +started commencé +started démarré +started commencée +news nouveautés +news actualité +news nouvelles +news actualités +described décrites +described décrits +described décrit +described décrite +role rôle +election élection +election election +election élections +albums albums +present actuel +present présent +present présents +present présente +present présenter +indian indienne +indian indiens +indian indiennes +indian indien +kingdom royaume +books ouvrages +books livres +important importante +important important +important importantes +important importants +northern septentrionale +northern nordique +northern septentrional +northern northern +northern nord +love aime +love amour +love aimer +love love +run courir +run exécuter +canadian canadiens +canadian canadienne +canadian canadien +press appuyez +press presse +rather plutôt +type taper +type type +type tapez +act agir +act loi +act acte +act act +editor rédacteur +editor éditeur +editor rédactrice +editor editeur +came vint +schools école +schools ecoles +schools écoles +program programme +once jadis +once once +social sociale +social sociaux +social social +germany allemagne +production production +male mâle +male masculin +male homme +might pourrait +awards distinctions +awards trophées +awards récompenses +points points +similar similaires +similar similaire +similar semblables +similar analogue +similar semblable +professional professionnels +professional professionnelle +professional professionnel +professional professionnelles +say dites +say say +say dire +say dis +background fond +background contexte +enough suffisamment +enough assez +lead plomb +either soit +common commune +common fréquent +common fréquents +common commun +overlap chevaucher +overlap chevauchement +overlap chevauchements +data données +color couleur +color coloris +color couleurs +better meilleures +better meilleure +better mieux +better meilleurs +better meilleur +person personne +services services +bgcolor bgcolor +museum musées +museum musée +battle bataille +battle combat +went allé +sports sport +sports sports +already déja +already déjà +already deja +already dejà +currently actuellement +currently présentement +hall hall +buildings bâtiments +buildings immeubles +buildings édifices +historic historique +historic historiques +date date +deleted supprimé +deleted supprimée +deleted effacé +deleted supprimés +deleted supprimées +considered considérée +considered considéré +considered considérées +considered considérés +change modifier +change changements +change changer +change changement +location localisation +location emplacement +location localité +location lieu +seems semble +must doit +must moût +must doivent +must devez +yes oui +yes yes +our notre +our nos +southern méridional +southern méridionale +lost perdu +lost perdues +lost perdue +lost lost +lost perdus +something quelquechose +review revue +review examen +review révision +together ensemble +together together +robert robert +robert thierry +less moins +japanese japonais +japanese japonaise +japanese japonaises +groups groupes +content contenu +content contenus +involved impliqué +involved impliqués +involved impliquée +isbn isbn +board planche +japan japon +control contrôler +control contrôle +policy politiques +policy politique +modern modernité +modern moderne +modern modernes +human humaine +human humains +human humain +half moitié +half demi +design dessin +design design +design conception +event évènement +event événement +event evénement +events évènements +events evénements +events evenements +events événements +available dispo +available disponible +available disponibles +done fait +done faite +washington washington +real réel +real réelle +real véritable +real vrai +real vraie +start démarrer +start commencer +start début +personal personnel +personal personnelle +personal personnelles +personal personnels +action action +space espace +areas domaines +areas zones +star étoile +star vedette +star etoiles +star star +star étoiles +really vraiment +really réellement +china chine +possible possible +possible possibles +paul paul +working travaillant +working travailler +taken prises +taken taken +taken pris +taken prise +far far +far loin +going aller +minister ministre +lake lac +reported signalé +reported rapporté +reported signalés +reported signalée +popular populaires +popular populaire +married mariées +married mariés +married mariée +married marié +founded fondé +founded fondée +europe europe +author auteure +author auteur +away loin +independent indépendant +independent indépendante +independent indépendantes +independent indépendants +process processus +process procédé +teams équipes +teams equipes +character caractère +character personnage +low basses +low basse +low faible +low faibles +low bas +michael alain +michael michael +michael michel +pages pages +light lumiere +light lumière +light légère +light léger +big gros +big grosse +big grande +big big +big grand +seen vu +seen vus +release release +release libération +release libèrent +want veulent +want envie +want vouloir +want veux +want voulez +episode épisode +episode episode +wrote écrivit +wrote écrit +republic république +thomas thomas +companies compagnies +companies entreprises +companies sociétés +via via +russian russes +russian russe +thanks merci +thanks remerciement +thanks cordialement +thanks remerciements +put mis +put mettre +race course +race race +worked fonctionné +worked travaillé +route itinéraire +route route +route trajet +route parcours +recorded enregistrées +recorded enregistrée +recorded enregistrés +recorded enregistré +someone someone +civil civil +civil civile +civil civiles +police policière +police policiers +police police +police policier +charles charles +listed listés +listed listé +listed énumérés +listed répertoriés +users usagers +users utilisateurs +template gabarit +template modèle +eastern orientale +eastern oriental +body organisme +body carrosserie +body organe +body corps +question question +italian italiennes +italian italienne +italian italien +italian italiens +featured vedette +featured recommandés +featured vedettes +week semaine +week semaines +editors rédacteurs +editors éditeurs +texas texas +chief chef +close fermer +close proche +match correspondance +match allumette +match match +roman romain +roman romaine +roman roman +roman romaines +roman romains +come viens +come venez +come come +come venir +opened ouvert +tour visite +tour tour +tour tournée +sea mer +cross croisée +cross croix +cross traverser +cross croisé +playing jouer +playing jouant +health sante +health santé +institute institute +institute institut +caps casquettes +caps chapeaux +caps caps +caps bouchons +forces forces +green verte +green vert +green vertes +rights droits +evidence preuve +evidence preuves +originally initialement +aircraft aéronefs +aircraft avion +aircraft avions +arts arts +range gamme +range portée +probably surement +probably probablement +probably sûrement +consensus consensus +bar barreau +bar bar +bar barre +problem problème +problem problématique +look regardez +look regarde +look regardes +issues problèmes +alumni anciens +average moyen +average moyennes +average moyenne +network reseau +network réseaux +network réseau +win victoire +win gagnez +win gagner +win gagnant +shows spectacles +wife épouse +wife epouse +wife femme +returned retourné +returned retournés +returned retournée +night soirée +night nuit +night soir +magazine revue +magazine magazine +magazine magasine +centre centre +joined rejoints +joined rejoint +usually habituellement +usually généralement +middle middle +middle milieu +completed complété +completed terminée +completed achevés +completed achevé +completed terminées +completed terminé +elected élue +elected élu +elected élues +elected élus +significant significative +significant significatif +significant significatifs +african africains +african africain +african africaine +african africaines +able capable +google google +stage étape +stage stade +stage scène +addition addition +addition ajout +ireland irlande +today hui +today aujourdhui +academy académie +academy academy +saint sainte +saint saint +self self +itself soi +continued continué +stations gares +stations stations +mother mère +mother mere +mother maman +appeared apparu +appeared apparut +appeared paru +appeared parut +appeared semblait +africa afrique +culture culture +spanish espagnol +spanish espagnole +spanish espagnols +grand grandiose +grand grand +committee comité +things choses +fire feu +fire incendie +fire incendies +changed changé +changed changée +gold doré +gold or +gold gold +female femelle +female femelles +female féminin +female femmes +female femme +course cours +directed dirigé +directed réalisé +directed orienté +months mois +chinese chinois +chinese chinoise +previous précédentes +previous précédente +previous précédent +previous précédents +developed développées +developed développés +developed développée +developed développé +size taille +size pointure +size tailles +mentioned mentionnée +mentioned mentionné +mentioned mentionnés +add ajout +add ajouter +add ajoute +add ajoutez +festival festival +festival fête +peter peter +peter pierre +basketball basket +basketball basketball +move déménagement +move bouger +move déménager +move déplacer +performance performance +performance performances +performance rendement +standard norme +standard standard +means moyens +means signifie +give donner +give donne +give donnez +training formation +training entraînement +artist artiste +artist artistes +word mot +blue bleu +blue bleus +blue bleue +blue bleues +primary primaire +primary primaires +announced annoncé +announced annoncés +announced annoncées +announced annoncée +value valeur +christian chrétiens +christian christianisme +christian chrétienne +christian christian +christian chrétien +private privée +private privé +private privés +catholic catholique +catholic catholiques +artists artistes +includes inclut +includes comprend +view afficher +view vue +view voir +view affichage +view visualiser +thus ainsi +almost presque +almost quasi +almost pratiquement +almost quasiment +baseball baseball +seven seven +seven sept +appears semble +appears paraît +appears apparaît +appears apparait +ever jamais +ever ever +provide fournir +provide fournissent +technology technologique +technology technologies +technology technologie +olympics olympiades +olympics olympiques +future future +future futures +future futur +future futurs +future avenir +formed formés +formed formé +formed formées +formed formée +census recensements +census recensement +images images +los los +results résultats +return retourner +return retour +return revenir +quality qualite +quality qualité +construction construction +zealand zélande +front front +front avant +front devant +cover couvercle +cover couverture +cover couvrir +cover housse +model modele +model modèle +model mannequin +model maquette +despite malgré +read lecture +read lisez +read lire +read lis +material matériel +material matériaux +material matériau +strong forte +strong forts +strong strong +strong fort +coach coach +coach entraineur +coach entraîneur +henry henri +henry henry +footballers footballeurs +mark marquer +mark marque +mark mark +rev rév +rev rev +organization organisation +studies etudes +studies études +federal fédéral +federal fédérale +federal fédéraux +federal fédérales +richard richard +html html +virginia virginie +virginia virginia +car voitures +car voiture +attack attaquez +attack attaque +attack attentat +attack attack +attack attaquer +conference conférences +conference conférence +outside extérieur +outside dehors +outside exterieur +study etude +study étudier +study étude +brother frangin +brother frère +brother frere +names noms +writer rédacteur +writer auteur +writer écrivain +writer scénariste +characters personnages +characters caractères +musical musicale +musical musical +nothing rien +border frontière +border frontalier +border frontières +border border +border bordure +medical médicaux +medical médicale +medical médical +countries pays +past passées +past passée +past passé +past passés +writing ecrire +writing rédaction +writing écriture +writing écrire +makes rend +interest intérêts +interest intérêt +provided fournies +provided fourni +provided fournie +provided fournis +killed tué +killed tuée +killed tués +medal médaille +medal médailles +signed signées +signed signée +signed signé +signed signés +label libellé +label label +label étiquette +label étiquettes +fair foire +fair justes +fair équitable +fair équitables +search chercher +search rechercher +search recherche +search recherches +search recherchez +bay baie +bay bay +reference référence +especially particulièrement +especially surtout +especially spécialement +removed retirée +removed enlevé +removed retiré +removed supprimée +removed supprimés +removed supprimé +library bibliothèque +library librairie +eventually éventuellement +eventually finalement +management management +management gestion +references références +features caractéristiques +features fonctions +features fonctionnalités +navy navy +navy marine +guitar guitare +guitar guitares +hill hill +hill colline +sure sure +sure sûre +sure sûr +historical historique +historical historiques +lower abaisser +lower inférieur +lower inférieure +daughter fille +appointed désignés +appointed désigné +appointed nommé +appointed nommés +reading lecture +reading reading +reading lire +yet pourtant +systems systèmes +debut débuts +movement mouvements +movement movement +movement mouvement +specific spécifiques +specific spécifique +always always +always tjrs +always toujour +always toujours +actor comédien +actor acteur +natural naturel +natural naturelles +natural naturels +natural naturelle +clear limpide +clear clair +clear effacer +coast côte +let let +got got +chicago chicago +championships championnats +pennsylvania pennsylvanie +ten rte +ten dix +ten ten +performed effectué +individual individuelle +individual individuels +individual individuel +designed conçu +designed conçues +designed conçue +designed conçus +rule règle +etc etc +lists listes +paris paris +thought réfléchi +thought pensais +thought pensé +thought pensée +brown brown +brown marron +brown bruns +brown brun +brown brunes +brown brune +hand main +hand hand +needs besoins +reliable fiable +reliable fiables +smith smith +smith forgeron +generally généralement +base base +sometimes quelquefois +sometimes parfois +florida floride +capital majuscule +capital capitaux +capital capitale +capital capital +valley valley +valley vallée +bank banques +bank banque +ground moulu +reached atteints +reached atteint +italy italie +energy énergie +energy énergies +energy energie +believe croyez +believe croire +believe croient +believe crois +leader meneur +leader leader +active active +active actif +active actives +active actifs +online online +block bloquer +block block +block bloc +block blocage +bridge bridge +bridge pont +bridge passerelle +families familles +changes modifications +changes changements +followed suivis +followed suivit +followed suivie +followed suivies +industry industrie +collection ramassage +collection recouvrement +collection recueil +collection collection +collection collecte +request demander +request demande +request requête +request demandez +soon bientôt +soon prochainement +soon bientot +olympic olympic +olympic olympique +olympic olympiques +sold vendues +sold vendus +sold vendue +sold vendu +writers scénaristes +writers auteurs +writers écrivains +professor professeur +professor professeure +studio studio +mexico mexique +competition compétition +competition concurrence +competition concours +campaign campagne +org org +theatre théatre +theatre théâtre +theatre théâtres +particular particulière +particular particulier +empire empire +length longueur +length longueurs +islands îles +islands iles +singer chanteur +singer chanteuse +create créer +create créez +create crée +create créent +redirect rediriger +redirect redirection +redirect réorienter +additional supplémentaire +additional supplémentaires +additional additionnel +soviet soviétique +soviet soviet +soviet soviétiques +market marché +words mots +producer producteur +producer productrice +producer producteurs +notes remarques +notes notes +hockey hockey +code code +referee arbitres +referee arbitrer +referee arbitre +fourth quatrième +fourth fourth +fourth quatrièmement +sport sportif +sport sportive +sport sport +van camionnette +van fourgonnette +van fourgon +van van +mary marie +mary mary +mary myriam +airport aéroports +airport aéroport +sound sound +sound sonore +sound son +status état +status statut +irish irlandaise +irish irlandais +placed placés +placed placées +placed placée +placed placé +child enfant +idea idée +foreign étranger +foreign etranger +foreign étrangère +foreign étrangères +municipality municipalité +register enregistrer +register enregistrez +register registre +eight huit +eight eight +problems problèmes +native indigènes +native natif +native indigène +native autochtone +coverage couverture +channel canal +channel chaîne +channel chenal +channel channel +parliament parlement +username username +username identifiant +username pseudo +edition edition +edition édition +minor mineures +minor mineure +minor mineur +says dit +foundation fondement +foundation fondation +foundation fondations +units unités +movie film +ice verglas +ice ice +ice glace +simply simplement +limited limitée +limited limitées +limited limité +limited limités +unit unité +unit unite +unit unit +student étudiant +student étudiante +student étudiants +student etudiant +previously auparavant +previously précédemment +stated déclaré +governor gouverneure +governor gouverneur +complete complète +complete complets +complete complètes +complete complet +test essai +test test +test épreuve +test tester +nominated nominée +nominated nominé +nominated désignés +bill bill +bill facture +bill facturer +parts pièces +parts parties +vocals chant +vocals voix +theory théories +theory théorie +regional régionales +regional régionaux +regional régional +account compte +vote vote +vote votez +vote voter +computer ordinateurs +computer ordinateur +none aucun +none néant +none aucune +carolina caroline +carolina carolina +tournament tournois +tournament tournoi +poland pologne +behind derrière +wales galles +winning gagnante +winning gagner +winning gagnant +lot lot +hospital hopital +hospital hôpital +hospital hospitalisation +hospital hôpitaux +mid mid +taking prendre +taking prenant +mountain montagne +mountain montagnes +higher supérieur +cases cas +angeles angeles +editing montage +editing éditer +editing édition +replaced remplacé +replaced remplacée +replaced remplacées +replaced remplacés +food alimentaire +food nourriture +food alimentation +multiple multiple +multiple multiples +multiple plusieurs +likely probable +likely probablement +terms termes +sir messire +sir monsieur +thing truc +thing chose +square carré +square carrés +square square +square carrées +try essaie +try essayez +try essayer +try essaye +topic thème +topic sujet +woman femme +officer officier +categories catégories +greek grecs +greek grecque +greek grecques +greek grec +recent récents +recent récent +recent récentes +recent récente +sent envoyés +sent envoyées +sent envoyée +sent envoyé +copyright copyright +speed vitesses +speed rapidité +speed vitesse +templates modèles +templates gabarits +money monnaie +money argent +saw saw +saw scie +senior seniors +senior aîné +senior senior +selected sélectionnés +selected sélectionnées +selected sélectionnée +selected sélectionné +introduced introduit +introduced introduits +introduced introduites +politician politicien +true vrais +true true +true vraie +true vrai +true véritable +required exigée +required exigé +required requise +required nécessaire +required obligatoire +required requis +regular ordinaire +regular régulière +regular régulières +regular régulier +awarded décerné +awarded attribué +awarded récompensé +awarded décernés +commercial commercial +commercial commerciaux +commercial commerciales +commercial commerciale +cities villes +contains contient +trade commerce +trade échange +trade échanges +degree diplôme +degree degré +anti anti +birth naissance +sun dim +sun soleil +finished fini +finished terminée +finished finis +finished terminé +rugby rugby +earth earth +earth terre +access accès +access accéder +prior prieur +seasons saisons +journal revue +journal journal +beginning commencement +beginning début +software logiciel +software logiciels +famous fameux +famous célèbre +famous célèbres +religious religieux +religious religieuses +religious religieuse +appear apparaître +appear apparaissent +martin martín +martin martine +martin martin +god god +god dieu +bit bit +bit bits +hours horaires +hours heures +running courir +brought apporté +brought amené +brought amenés +missing manquants +missing manquante +missing manque +missing manquant +missing disparu +economic économique +economic economiques +economic economique +structure structure +rural rurales +rural ruraux +rural rurale +rural rural +remained resta +remained resté +remained restait +decision décision +certain certain +certain certaine +certain certaines +hit touché +hit frappé +hit frapper +minutes minutes +spain espagne +plays joue +whole entiers +whole entier +joseph joseph +lord lord +lord seigneur +web web +web enchaînement +decided décidée +decided décidés +decided décidé +operations opérations +function fonctions +function fonction +louis louis +assembly assemblée +assembly assemblage +queen reine +queen queen +security securité +security sûreté +security sécurité +uses usages +uses utilise +uses utilisations +ohio ohio +owned possédée +owned appartenant +owned possédé +owned possédés +jan jan +jan yann +operation fonctionnement +operation opération +call appeler +call appelez +call appel +call appelle +successful réussi +successful réussie +legal juridique +legal légal +legal légales +legal légale +russia russie +prince prince +jewish juives +jewish juif +jewish juifs +jewish juive +staff personnel +establishments établissements +goal objectif +goal but +towards vers +agree convenir +agree acceptez +bad méchant +bad bad +bad mal +bad mauvaise +bad mauvais +attendance fréquentation +attendance présence +attendance assiduité +attendance participation +populated peuplée +populated peuplés +populated peuplé +populated peuplées +nature nature +allowed autorisé +allowed autorisés +allowed autorisées +captain captain +captain capitaine +mount monter +mount mont +mount monture +calculated calculées +calculated calculé +calculated calculés +calculated calculée +structures structures +hard difficiles +hard dur +hard hard +hard difficile +hard dure +saying disant +saying dicton +manager gestionnaire +manager directeur +manager manager +manager directrice +manager gérant +elections élections +elections elections +meet rencontrez +meet rencontre +meet rencontrer +box coffret +box boîte +box boite +lines lignes +democratic démocratique +democratic démocrate +democratic démocratiques +success succes +success succès +success success +success réussite +associated associée +associated associées +singles célibataire +singles simple +singles simples +singles célibataires +traditional traditionnelles +traditional traditionnel +traditional traditionnelle +traditional traditionnels +rest repos +rest repose +highway route +highway autoroute +highway autoroutes +particularly particulièrement +wide large +wide vaste +month mois +care soins +care soin +admin admin +admin administrateur +cultural culturels +cultural culturelle +cultural culturel +commission commission +plan planifier +plan plan +practice pratiquer +practice pratique +practice pratiques +command commandement +command commande +nomination nomination +jersey maillot +jersey jersey +parties parties +michigan michigan +anyone quiconque +overlaps chevauchements +approximately approximativement +approximately environ +master maitre +master master +master maître +noted notée +noted remarqué +noted noté +usa usa +stop arrêt +stop stop +stop arrêter +stop arrête +stop arrêtez +feature fonctionnalité +feature caractéristique +engine moteur +response réponse +response réaction +needed nécessaires +needed nécessaire +needed besoin +needed requis +illinois illinois +afd afd +experience expériences +experience expérience +engineering ingénierie +engineering génie +silver silver +silver argent +silver argenterie +silver argenté +separate distinct +separate séparés +separate séparé +separate séparées +separate séparer +takes prend +secretary secrétaire +dutch hollandaise +dutch néerlandaise +dutch néerlandais +dutch hollandais +lee lee +recording enregistrement +prime prime +rules règles +rules regles +uploaded téléchargés +uploaded téléchargé +uploaded téléchargée +trying essayant +trying essayer +youth jeunesse +youth jeunes +scotland écosse +scotland ecosse +iii iii +houses maisons +heart heart +heart cœur +heart coeur +room salle +room chambre +room chambres +stone stone +stone pierre +stone pierres +shown montré +deal aubaine +drama drame +drama dramatique +scores partitions +scores scores +dead morts +dead morte +dead dead +dead mort +key touche +key clef +key clé +key clefs +key clés +shot coup +shot shot +shot abattus +shot tir +shot abattu +turn tourne +turn turn +turn tourner +turn tournez +occupation profession +occupation occupation +scottish ecossais +scottish écossaise +scottish écossais +executive exécutif +plant végétal +plant usine +plant plante +promoted promue +promoted promus +promoted promu +promoted promues +villages bourgs +villages villages +languages langues +internet internet +leave congés +leave quitter +leave laisser +leave partir +leave congé +feel sentir +feel ressentir +covered couvert +covered couvertes +covered couverte +covered recouvert +covered couverts +merge fusionner +merge fusionne +merge fusion +mostly principalement +mostly essentiellement +mostly surtout +numerous nombreux +numerous nombreuses +ancient antiquité +ancient anciens +ancient ancien +ancient ancienne +attempt tenter +attempt tentative +property biens +property propriété +programs programmes +picture photo +picture image +finally enfin +finally finalement +ships navires +ships vaisseaux +fiction fictions +fiction fiction +looking regardant +secondary secondaires +secondary secondaire +nations nations +majority majorité +majority majoritaire +majority majoritaires +edward edward +edward édouard +annual annuelle +annual annuels +annual annuel +digital numérique +digital numériques +digital digital +mission mission +lived vécue +lived vécu +claim réclamation +claim réclamer +claim revendication +claim revendiquer +seat banquette +seat siège +seat seat +bbc bbc +profile profil +profile profils +dance danse +dance danser +doing faisant +doing faire +georgia géorgie +georgia georgie +port port +pacific pacifique +castle château +castle chateau +pass passer +pass passe +pass passent +pass pass +transport transports +transport transport +organizations organismes +organizations organisations +ratio ratio +recently récent +recently récemment +fall tomber +fall automne +fall chute +fall fall +global global +global mondiale +global mondial +global mondiaux +era eer +era era +era époque +wing escadre +wing aile +wing ailier +wing wing +wing ailes +opinion opinion +opinion avis +commander commandeur +commander commandant +fort fort +effect effets +effect effet +opening vernissage +opening ouverture +fine fine +fine amende +purpose objet +purpose finalité +purpose but +purpose objectif +winter hiver +winter hivers +genus genre +congress congrès +overall globale +overall globalement +activities activités +met rencontrée +met rencontrées +met rencontré +met rencontrés +income revenu +income revenus +massachusetts massachusetts +comes vient +older âgées +older aîné +peak apogée +peak pic +peak crête +lack manque +bass contrebasse +bass basse +bass bassiste +bass bass +super super +complex complexe +complex complexes +academic académiques +academic universitaire +academic universitaires +academic académique +stars etoiles +stars vedettes +stars étoiles +accounts comptes +appearance apparence +appearance apparition +appearance aspect +asian asiatiques +asian asiatique +asked demandé +friends amies +friends amis +kind aimable +financial financière +financial financier +entry entrée +asia asie +asia asiatique +sense sens +meaning signification +meaning sens +meaning signifiant +actress comédienne +actress actrice +map cartes +map plan +map carte +intended destiné +bishop évêques +bishop évêque +bishop bishop +boston boston +rate taux +rate tarif +literature littérature +forest forestier +forest forêts +forest forêt +forest foret +voice voix +jack valet +jack vérin +jack jack +pre pre +pre pré +justice justice +champion championne +champion champion +double doubler +double double +double doubles +polish polonaise +polish polonaises +polish polonais +numbers numéros +numbers chiffres +numbers nombres +columbia colombie +columbia columbia +temple temple +temple tempe +defeated vaincu +defeated défaite +defeated battu +defeated vaincus +defeated vaincue +administration administration +claims réclamations +claims créances +claims allégations +claims revendications +jones jones +parish paroisse +israel israël +israel israel +actors acteurs +actors comédiens +sister sister +sister soeur +sister sœur +nine neuf +nine nine +scored marqué +table table +table tableau +attended participé +pop pop +newspaper journal +friend ami +friend amie +friend amis +unknown inconnue +unknown inconnu +unknown inconnus +unknown inconnues +winner vainqueur +winner gagnants +winner gagnante +winner gagnant +winner lauréat +chart graphique +chart diagramme +initially initialement +loss perte +loss pertes +sites sites +starting démarrer +starting démarrage +architecture architecture +relations relations +upper supérieure +upper supérieur +supported supportés +supported appuyé +supported soutenue +supported soutenu +supported supporté +tracks morceaux +tracks chenilles +tracks pistes +contract contrat +face visage +face face +directly directement +spent dépensé +spent dépensés +girl fille +girl fillette +clearly manifestement +clearly clairement +junior juniors +junior junior +francisco francisco +politics politiques +politics politique +presented présentés +presented présentées +presented présentée +presented présenté +mar mar +cause cause +volume volume +caused causée +caused causés +caused causé +caused causées +tom tom +flight vol +candidate candidats +candidate candidate +candidate candidat +matches matches +matches correspondances +matches matchs +matches allumettes +claimed réclamé +claimed prétendu +claimed revendiqué +except sauf +except excepté +oil huiles +oil huile +oil pétrole +assistant assistant +assistant adjointe +assistant adjoint +assistant assistante +surface surface +victory victoire +victory victoires +regiment régiment +stories histoires +represented représentées +represented représenté +represented représentée +represented représentés +gets obtient +speedy prompt +speedy speedy +weeks semaines +allow permettent +allow autoriser +allow permettre +branch succursale +branch branche +branch embranchement +retired retraités +retired retraite +retired retraité +communities communautés +communities collectivités +train train +paper papier +paper papiers +adding ajout +adding ajoutant +provides fournit +remains restes +remains demeure +victoria victoria +metal métal +metal métaux +metal metal +metal métallique +metal métalliques +wrong faux +wrong tort +wrong mal +wrong erroné +direct directe +direct directement +direct direct +direct directs +frank franck +frank frank +miles milles +miles kilomètres +miles miles +blocked bloquées +blocked bloquée +blocked bloqué +blocked bloqués +launched lancée +launched lancé +launched lancés +mass masse +mass messe +chairman président +comedy comédie +comedy comique +relationship relation +knowledge connaissances +knowledge savoirs +knowledge savoir +knowledge connaissance +format formater +format format +creek crique +creek ruisseau +creek creek +meeting rencontre +meeting réunion +failed échec +failed raté +failed échoué +officers officiers +draft brouillons +draft draft +draft brouillon +goes goes +fight lutte +fight combattre +fight combat +fight bagarre +figure chiffre +figure figure +faculty professeurs +faculty faculté +camp camp +camp campement +camp camps +ran ran +ran couru +variety variété +owner propriétaire +statistics statistiques +statistics statistique +raised élevé +raised soulevées +heavy heavy +heavy lourde +heavy lourd +heavy lourds +alexander aleksandr +alexander alexandre +alexander alexander +alone seul +alone seuls +alone seule +understand comprenez +understand comprendre +understand comprends +episodes épisodes +educational éducatif +daily quotidien +daily quotidiens +daily journalier +daily quotidienne +williams williams +latin latine +latin latin +latin latines +completely complètement +completely complétement +completely entièrement +completely totalement +completely completement +products produits +dark noir +dark foncé +dark sombre +attention attention +religion religion +religion religieux +von von +mind esprit +mind mind +oppose opposer +corps corps +administrative administratif +administrative administratives +administrative administratifs +cut cut +cut couper +cut coupé +cut coupez +cut coupe +scott scott +becoming devenant +becoming devenir +footballer footballeur +jean jean +mayor bourgmestre +mayor maire +mayor maires +pro pro +beach plage +beach plages +descent ascendance +descent descente +nearly presque +leaving quitter +leaving quittant +highly hautement +cast jeté +cast coulée +cast coulé +cast plâtre +territory territoire +write écrivez +write ecrire +write écrire +write rédiger +towns bourgs +forms formes +forms formulaires +joe joe +inside interieur +inside inside +inside intérieur +wanted recherchés +wanted recherché +wanted recherchée +wanted voulu +wanted voulait +solid solides +solid massif +solid solide +individuals particuliers +individuals individus +individuals individuels +authority autorité +mention mention +mention mentionner +projects projets +del del +continue continuer +continue continue +continue continuons +continue continuez +continue poursuivre +cost coût +cost coûts +vice mœurs +vice vice +drive lecteur +drive conduire +notice remarque +notice préavis +notice avis +johnson johnson +forced forcé +forced obligé +forced contraint +forced forcée +basis base +basis fondement +looks looks +reasons raisons +photo photo +hope espère +hope espoirs +hope espérer +hope espoir +hope espérance +log bûche +parents parents +entered entré +entered entrés +mike mike +basic basiques +basic élémentaire +basic basique +basic basic +scientific scientifiques +scientific scientifique +amount montant +spring spring +spring printemps +spring ressort +oxford oxford +kong kong +opera opéra +tried essayé +tried tenté +critical critique +critical critiques +simple simple +simple simples +founder fondateur +founder fondatrice +hong hong +told racontée +told raconté +husband époux +husband mari +useful utile +useful utiles +technical technique +technical techniques +necessary nécessaires +necessary nécessaire +believed croyait +operated fonctionné +operated exploitée +operated opéré +mountains montagnes +mountains monts +mountains montagne +importance importance +musicians musiciens +hotel hôtel +girls filles +crew équipage +crew équipages +feb fév +feb février +boy garçon +boy boy +ontario ontario +nation nation +defense défense +wiki wiki +champions champions +golden dorée +golden golden +golden doré +districts districts +districts arrondissements +districts quartiers +faith faith +faith foi +racing course +racing racing +racing courses +mainly principalement +mainly essentiellement +auto auto +auto automatique +lives vies +swedish suédoise +swedish suédoises +swedish suédois +hot chaud +hot hot +hot chaude +hot sexy +entertainment divertissements +entertainment divertissement +turned tourné +turned tournés +net net +net filets +net filet +soccer football +soccer foot +soccer soccer +creation création +product produit +product produits +tower tour +tower tower +increased augmentées +increased augmenté +increased augmentation +increased augmentée +votes vote +votes votes +votes voix +squadron escadrille +squadron escadre +squadron escadron +squadron escadrons +contemporary contemporains +contemporary contemporain +contemporary contemporaine +focus focus +focus concentrer +marriage mariage +questions questions +naval navale +naval navales +details détails +details détail +forward forward +memorial commémoration +memorial memorial +memorial mémorial +peace paix +kept gardé +iran iranienne +iran iran +korea corée +korea coréenne +analysis analyses +analysis analyse +winners lauréats +winners gagnants +winners vainqueurs +poor pauvre +poor médiocre +poor pauvres +grade grade +cricket criquets +cricket cricket +cricket criquet +judge magistrat +judge juger +judge juge +electric électrique +electric electrique +exist existent +exist existe +exist exister +corporation corporation +hold tenir +hold tiens +hold tenez +campus campus +brazil brésil +chris chris +chris christophe +beyond beyond +fifth cinquième +increase augmenter +increase accroître +increase augmentation +increase accroissement +summary sommaire +summary récapitulatif +summary résumé +remaining restantes +remaining restant +remaining restants +statement énoncé +statement déclaration +broadcast diffusion +broadcast radiodiffusion +broadcast diffuser +getting obtenir +piano piano +novels romans +serving servant +serving portion +serving servir +hour heure +moving déménagement +moving bouger +moving déménager +resolution résolution +concept concept +alternative alternative +alternative alternatif +brothers freres +brothers frères +brothers brothers +attacks attaques +attacks agressions +attacks attentats +encyclopedia encyclopédie +republican républicaine +republican républicain +republican républicains +representatives représentants +politicians politiciens +difficult difficiles +difficult difficile +ability capacité +ability aptitude +studied étudié +studied étudiée +studied étudiées +studied étudiés +host hôte +wall paroi +wall muraille +wall mur +immediately immédiatement +immediately aussitôt +urban urbain +urban urbaines +urban urbains +pakistan pakistan +becomes devient +marine marin +marine marins +marine marine +physical physique +physical physiques +dec dec +dec déc +troops troupes +interview entrevue +interview entretien +interview entrevues +interview interview +coming venir +semi semi +suggest proposer +suggest suggérez +suggest suggère +suggest suggérer +emperor empereur +emperor empereurs +letter lettre +couple couple +duke duke +duke duc +gallery galerie +gallery gallerie +gallery gallery +gallery galeries +follow suivre +follow suivez +follow suivi +windows windows +windows vitres +windows fenêtres +tree sapin +tree arbre +tree arborescence +tree arbres +hits frappe +hits hits +jazz jazz +protection protection +relevant pertinente +relevant pertinent +relevant pertinentes +relevant pertinents +count compter +count compte +count comte +situation situation +reviews examens +reviews critiques +containing contenant +classical classique +classical classiques +offered offerts +offered offertes +offered offerte +offered offert +lady madame +lady dame +netherlands hollande +reports rapports +reports reportages +influence influence +influence influencer +address allocution +address adresse +linear linéaires +linear linéaire +consider envisager +consider considérer +consider considère +consider considérez +consider considérons +machine machine +domain domaine +elements éléments +elements eléments +minnesota minnesota +types types +nov novembre +nov nov +serve servir +serve sers +serve servez +sydney sydney +ministry ministère +blood sang +blood sanguin +blood blood +distance distance +distance éloignement +distance distances +bottom fond +giving donnant +boys garçons +potential potentialités +potential potentiels +potential potentielle +potential potentiel +toronto toronto +toronto montréal +edited modifié +edited édité +infantry infanterie +jun juin +jun jun +formerly anciennement +formerly jadis +formerly auparavant +formerly autrefois +oct octobre +oct oct +conflict conflits +conflict conflit +workers ouvriers +workers travailleurs +steve steve +philadelphia philadelphie +philadelphia philadelphia +helped aidé +helped aidés +der der +nationality nationalité +nationality nationalités +dispute contestation +dispute litige +dispute conflit +dispute dispute +scene scène +method méthode +titles titres +berlin berlin +conditions conditions +arms bras +arms armes +races courses +discovered découvert +discovered découverts +discovered découvertes +iron fer +extended prolongée +extended étendu +extended prolongé +extended prolongés +extended étendue +churches églises +churches eglises +otherwise autrement +otherwise sinon +positive positive +positive positives +positive positif +positive positifs +santa santa +imperial impérial +imperial impériale +imperial impérialiste +imperial imperial +composed composée +composed composées +composed composé +ball boule +ball ball +ball balle +ball ballon +width largeur +width largeurs +quickly rapidement +quickly vite +correct exact +correct corriger +correct corrigez +correct correct +correct correcte +responsible responsable +responsible responsables +possibly éventuellement +possibly possiblement +indiana indiana +soldiers soldats +examples exemples +korean coréens +korean coréen +korean coréenne +genre genre +genre genres +fish poissons +fish pêcher +fish poisson +senate sénat +effects effets +gun fusil +gun pistolet +gun arme +gun revolver +check cocher +check chèque +check vérifiez +check vérifier +appearances apparitions +appearances apparences +plans plans +renamed rebaptisée +renamed rebaptisé +renamed renommé +renamed renommés +renamed renommée +sign signer +sign signe +sign panneau +sign signez +reporting rapports +reporting reportages +reporting reportage +reporting signalement +reporting signaler +sweden suède +consists consiste +heritage héritage +heritage patrimoine +tag étiquette +tag tag +tag balise +primarily principalement +doctor médecin +doctor docteur +leaders meneurs +leaders leaders +leaders dirigeants +lies lies +lies mensonge +lies mensonges +inc inc +rivers fleuves +rivers rivières +crime délit +crime délinquance +crime criminalité +crime crime +liberal libéral +liberal libérale +liberal libéraux +liberal libérales +stand stand +bob bob +existing existantes +existing existant +existing existants +publishing publier +publishing édition +publishing publication +industrial industrielle +industrial industriels +industrial industrielles +industrial industriel +answer réponse +answer répondez +answer répondre +answer reponse +split diviser +split scinder +split split +split scission +apr apr +apr avril +apr avr +sex sexe +mixed mélangé +mixed mixtes +mixed mélangés +mixed mixte +acting agissant +acting agir +personnel personnel +rail ferroviaire +rail rail +die die +die crève +die mourir +die meurs +premier premier +approach approche +approach démarche +wisconsin wisconsin +sentence phrase +sentence sentence +sentence peine +root root +root racines +root racine +standards normes +comics comics +comics bd +earned méritée +earned gagnés +earned mérité +earned gagné +earned gagnées +miss mademoiselle +miss miss +miss melle +miss mlle +specifically spécifiquement +specifically précisément +specifically spécialement +horse chevaux +horse cheval +horse jument +actual réelle +contributions contributions +contributions cotisations +lieutenant lieutenant +wood bois +plants plantes +plants végétaux +initial initiale +initial initial +initial initiales +origin origine +origin origines +environment environnement +pretty joli +pretty jolie +pretty jolies +rank grade +rank rang +rank classer +bus bus +bus autobus +gas gaz +direction direction +guide guide +resources ressources +accepted acceptées +accepted acceptés +accepted acceptée +accepted accepté +animals animaux +nor nor +activity activité +levels niveaux +laws lois +jim jim +creating créer +cambridge cambridge +composer compositeur +composer compositrice +remove supprimer +remove enlever +remove retirer +remove enlèvent +remove supprimez +agency agence +reserve réserve +reserve réserver +atlantic atlantique +supreme supreme +supreme suprême +supreme suprêmes +weight poids +ask demander +ask demandez +ask demande +fighting combats +fighting combat +fighting bagarre +jackson jackson +widely largement +rose rose +rose rosé +treatment traitement +linked liée +linked lié +linked relié +linked liés +andrew andrew +andrew andré +trial essai +trial procès +expanded élargi +expanded élargie +expanded étendu +expanded agrandi +daniel daniel +certainly assurément +certainly certainement +info info +info infos +sciences sciences +fame célébrité +fame renommée +fame gloire +fame fame +everything tout +avenue avenue +travel voyage +travel voyages +scale echelle +scale échelle +break break +break pause +break rupture +break briser +oregon oregon +produce produire +produce produisent +capacity capacité +capacity capacités +#efefef #efefef +fictional fictive +fictional fictif +exchange échange +exchange echange +exchange échanger +actions actions +cited citées +cited cités +cited citée +typically typiquement +typically habituellement +typically généralement +agreement accord +translation traduction +translation traductions +males masculins +males mâles +males hommes +kansas kansas +managed gérée +managed gérés +managed géré +bring amener +bring apporte +bring amenez +bring apportez +bring apporter +charge charge +fails échoue +dedicated dédiée +dedicated dévoué +dedicated dédié +dedicated dédiés +dedicated dévouée +nearby proximité +nearby proche +residents résidants +residents habitants +residents résidents +piece piece +piece morceau +growth croissance +trust trust +trust fiducie +trust confiance +applied appliquée +applied appliqués +applied appliqué +drums batterie +drums tambours +drums fûts +issued émis +issued émises +issued délivrés +issued émise +issued délivré +murder assassiner +murder meurtre +murder assassinat +murder meurtres +normal normale +normal normaux +normal normales +normal normal +twenty twenty +twenty vingt +avoid éviter +avoid évite +avoid eviter +avoid évitez +tony tony +norwegian norvégiens +norwegian norvégien +norwegian norvégienne +criteria critère +criteria critères +context contexte +suggested suggérée +suggested suggérés +suggested suggéré +suggested suggérées +suggested proposé +revolution revolution +revolution révolution +fully complètement +fully pleinement +fully entièrement +fully totalement +wars guerres +aug aout +aug août +aug aug +leaves feuilles +advanced avancés +advanced avancées +advanced avancé +advanced perfectionné +advanced avancée +distribution répartition +distribution distribution +medicine médecine +medicine médicament +garden jardins +garden jardin +reach portée +reach atteindre +turkey turquie +turkey dinde +females femmes +females femelles +publications publications +impact impact +impact incidence +households ménages +survey enquête +survey sondage +height taille +height hauteur +morning matin +morning morning +morning matinée +morning matinale +honor honneur +honor honorer +deep profond +deep profonds +deep deep +deep profonde +argument argumentation +argument dispute +argument argument +argument arguments +publication publication +arthur arthur +elizabeth elizabeth +elizabeth élisabeth +disambiguation homonymie +worth worth +colorado colorado +median médiane +median médian +maryland maryland +falls chutes +falls tombe +falls falls +zone zone +solo solo +solo soliste +learning apprendre +learning apprentissage +pay paye +pay payez +pay payer +pay paie +resolves décide +resolves résout +choice choix +flag pavillon +flag flag +flag drapeau +flag drapeaux +engineer ingénieur +cars voitures +farm ferme +farm fermes +wilson wilson +principal commettant +principal principale +principal principal +acquired acquise +acquired acquises +acquired acquis +constructed construite +constructed construit +constructed construits +secret secrets +secret secret +secret secrète +poet poète +poet poètes +build bâtir +build construire +remain demeurer +remain rester +orchestra orchestre +versions versions +follows suit +fixed corrigé +fixed fixe +fixed fixes +fixed fixé +fixed réparé +efforts efforts +documentary documentaire +documentary documentaires +equipment équipements +equipment équipement +equipment equipements +equipment matériel +equipment equipement +ray raie +ray ray +yellow jaunes +yellow jaune +guard gardes +guard garde +guard gardien +pressure pression +pressure pressions +grant subvention +grant grant +prison prison +freedom liberté +norway norvège +store stocker +store boutique +store magasin +taylor taylor +quarter quart +quarter trimestre +designated désignée +designated désignés +designated désigné +designated désignées +independence indépendance +platform plate +platform quai +platform plateforme +platform plateformes +rome rome +teacher professeur +teacher enseignante +teacher enseignant +teacher institutrice +copy copiez +copy exemplaire +copy copier +copy copie +effort effort +nuclear nucléaires +nuclear nucléaire +pictures images +pictures photos +models maquettes +models modèles +sep sep +easily facilement +easily aisément +thank remercier +description descriptif +description description +agreed accepté +agreed convenu +institutions institutions +covers couvertures +covers couvercles +covers couvre +covers housses +facilities équipements +facilities installations +target cibles +target objectif +target cible +target cibler +stack empiler +stack pile +stack stack +rationale raisonnement +rationale justification +stat stat +combined combiné +combined combinée +combined combinées +combined combinés +bronze bronze +sort tri +sort sorte +sort trier +hosted hébergé +hosted accueillis +hosted accueilli +hosted hébergés +programming programmation +sri sri +railroad railroad +railroad ferroviaire +unique uniques +unique unique +defined définie +defined définis +defined définies +defined défini +ocean océan +cell cell +cell cellules +cell cellule +missouri missouri +concert concert +improve améliorez +improve améliore +improve améliorer +biography biographie +biography biographiques +loan emprunt +loan prêt +contact contacter +contact contactez +contact contact +contact contacte +holy saintes +holy sainte +holy sacré +holy saint +tennessee tennessee +sub sub +safety sûreté +safety sécurité +safety securite +stephen stéphane +stephen stephen +stephen étienne +policies politiques +painting peinture +painting peintures +price prix +price tarif +entirely entièrement +mexican mexicaines +mexican mexicaine +mexican mexicains +mexican mexicain +leadership leadership +flying volants +flying battant +flying volant +flying voler +message message +municipal municipales +municipal municipale +municipal municipaux +serious sérieux +serious serieux +serious graves +serious grave +serious sérieuse +headquarters siège +officially officiellement +cemetery cimetière +memory souvenir +memory souvenirs +memory mémoire +fields domaines +fields champs +generation génération +generation générations +join joindre +join rejoignez +join adhérer +join rejoindre +copies exemplaires +copies copies +copies copie +finals finale +finals finals +finals finales +fox renard +fox fox +fox renards +continues poursuit +continues continue +representative représentant +representative représentante +destroyed détruite +destroyed détruits +destroyed détruit +destroyed détruites +feet pieds +guy mec +guy guy +guy gars +philippines philippines +philippines philippins +revealed révélés +revealed révélé +revealed dévoilé +revealed révélées +revealed révélée +organized organisé +organized organisés +organized organisée +organized organisées +serves sert +conservative conservatisme +conservative conservateur +conservative conservatrice +conservative conservateurs +share partage +share share +share part +share partager +share partagez +maria maría +maria marie +maria maria +disease maladie +disease maladies +sections sections +philosophy philosophique +philosophy philosophie +ways façons +arrived arrivés +arrived arrivé +divided divisé +divided divisée +divided divisées +divided divisés +floor etage +floor étage +floor sol +floor plancher +logo logo +logo logos +cancer cancer +offer offrir +offer offre +tax impôts +tax taxe +tax taxes +tax fiscalité +tax fiscale +tax impôt +expected attendus +expected escompté +expected attendue +expected attendu +traffic trafic +traffic circulation +concerns inquiétudes +concerns préoccupations +graduated diplômée +graduated diplômé +guest invité +guest invitée +guest invités +jews juifs +meant signifiait +economy économie +economy economique +economy economie +storm orage +storm tempête +storm storm +tells raconte +mile mile +protected protégées +protected protégés +protected protégée +protected protégé +bowl gamelle +bowl cuvette +bowl bol +letters lettres +providing fournissant +begins débute +begins commence +classic classic +classic classique +classic classiques +damage dégats +damage dommages +damage dégâts +damage dommage +harry harry +offers offres +offers offre +davis davis +challenge gageure +challenge challenge +challenge contestation +challenge défi +views affichages +views vues +marked marquées +marked marquée +marked marqué +marked marqués +allows permet +density densités +density densité +literary littéraire +literary littéraires +htm htm +ben ben +transportation transports +transportation transport +kentucky kentucky +sales soldes +sales ventes +sales vente +fleet flotte +supporting soutenir +captured capturées +captured capturée +captured capturé +captured capturés +extra supplémentaires +extra supplémentaire +extra extra +recognized reconnu +recognized reconnues +recognized reconnue +recognized reconnus +arizona arizona +compared comparés +compared comparé +theme thème +francis francis +francis françois +moscow moscou +interested intéressée +interested intéressés +interested intéressées +interested intéressé +heard entendu +heard entendue +heard entendues +heard entendus +behavior comportement +transferred transférées +transferred transférés +transferred transférée +transferred transféré +environmental environnemental +blank vide +blank vierge +blank blanc +musician musicienne +musician musicien +assigned attribué +assigned assignée +assigned assignés +assigned affecté +assigned assignées +assigned assigné +seats sièges +tennis tennis +percent pourcent +percent pourcentage +logs grumes +display afficher +display affichage +display affiche +convention convention +ring bague +ring anneau +joint joint +brian brian +deputy adjoint +deputy député +deputy adjointe +planned prévu +planned planifié +planned planifiés +planned planifiée +planned prévue +universities universités +yards verges +yards yards +communist communisme +communist communistes +communist communiste +agent mandataire +agent agent +difference différence +animal animale +animal animal +czech tchèque +czech tchèques +positions positions +exactly exactement +stay reste +stay séjour +stay rester +titled intitulée +titled intitulé +titled titré +combat combattre +combat combat +palace palais +palace palace +ordered commandés +ordered ordonné +ordered commandé +ordered commandée +ordered ordonnée +opposition opposition +attempts tentatives +understanding compréhension +understanding compréhensif +understanding comprendre +understanding compréhensive +wrestling catch +wrestling lutte +wrestling wrestling +wrestling lutter +critics critiques +growing grandir +growing croissant +growing grandissant +growing croissante +establish établir +hands mains +participated participé +poetry poésie +materials matières +materials matériaux +materials materiaux +turkish turques +turkish turque +turkish turc +turkish turcs +paid rémunéré +paid payées +paid payé +paid payée +paid payés +promotion promotion +apparently apparemment +apparently apparement +battalion bataillon +mobile mobile +mobile portable +additions ajouts +additions additions +row rangées +row ligne +row rang +row rangée +merged fusionnées +merged fusionnée +merged fusionnés +merged fusionné +metropolitan métropolitain +metropolitan métropolitaine +metropolitan metropolitan +figures chiffres +existence existence +eye oculaire +eye yeux +eye oeil +eye œil +louisiana louisiane +lewis lewis +melbourne melbourne +austria autriche +brigade brigade +screen screen +screen ecran +screen écran +risk risques +risk risque +conducted mené +lats lat +lats lats +ban ban +ban bannir +ban bannissement +ban interdiction +ban interdire +legislative législative +legislative législatives +legislative législatif +definition définition +definition définitions +indeed effectivement +draw tirage +draw dessine +draw dessiner +application application +application candidature +steel acier +presence présence +expansion agrandissement +expansion extension +expansion expansion +earl earl +earl comte +max max +max maxi +max maxime +max maximum +wild wild +wild sauvage +wild sauvages +planning planifier +planning planification +comic comic +comic comique +adopted adoptées +adopted adoptée +adopted adopté +adopted adoptés +easy facile +easy faciles +easy easy +easy facilité +plus plus +happy heureuses +happy joyeux +happy heureux +happy heureuse +happy joyeuse +acts actes +classes classes +iowa iowa +save économiser +save enregistrer +save sauvegarder +save sauver +wins gagne +wins victoires +theater théatre +theater théâtre +exists existe +roles rôles +chance hasard +chance chance +prevent empêcher +prevent prévenir +linecolor linecolor +candidates candidats +object objet +felt sentis +felt feutre +felt senti +felt ressenti +powers pouvoirs +powers powers +birds oiseaux +spread propagation +spread répandre +defeat défaite +defeat défaites +defeat vaincre +cape cape +cape cap +identified identifiée +identified identifié +identified identifiées +identified identifiés +regions régions +mine miens +mine mine +mine mienne +mine mien +sides côtés +jul jul +showing montrant +teaching enseignement +guidelines directives +simon simon +depth profondeur +depth profondeurs +lyrics paroles +lyrics lyrique +christmas noël +christmas noel +declined décliné +declined refusée +declined refusé +greece grece +greece grèce +express exprès +express exprimer +express express +express expresse +federation fédération +journalist journaliste +intelligence renseignement +intelligence intelligence +connection branchement +connection raccordement +connection connexion +displayed affichée +displayed affiché +displayed affichées +displayed affichés +portuguese portugaise +portuguese portugais +declared déclarées +declared déclarée +declared déclaré +declared déclarés +constitution constitution +presidential présidentielle +presidential présidentiel +standing standing +sons fils +sons sons +plot complot +plot parcelle +dates dates +ends ends +ends extrémités +pilot pilot +pilot pilote +pilot pilotes +relatively relativement +receive reçois +receive reçoivent +receive recevez +receive recevoir +educated éduquée +educated instruit +educated éduqués +educated éduqué +opposed opposés +manchester manchester +queensland queensland +americans américains +introduction introduction +directors administrateurs +directors réalisateurs +directors directeurs +vehicle véhicule +stock stock +vehicles véhicules +israeli israélien +israeli israélienne +israeli israéliens +israeli israéliennes +frequently fréquent +frequently souvent +frequently fréquemment +hills collines +performing performante +performing exécutant +northwest northwest +drug drogue +drug médicament +visit visite +visit visitez +visit visiter +portion portion +residence résidence +walter walter +pov pov +interesting intéressante +interesting intéressant +interesting intéressantes +interesting intéressants +moon lunaire +moon lune +moon moon +limit limite +limit limites +limit limiter +minute minute +bell cloche +bell clochette +bell bell +athletics athlétisme +reduced réduit +reduced réduite +reduced réduites +wind vent +wind éolien +wind éolienne +wind vents +oklahoma oklahoma +architect architecte +architect architectes +ideas idées +electronic électroniques +electronic electronique +electronic électronique +crown couronnes +crown crown +crown couronner +crown couronne +anderson anderson +step step +step étape +weapons armements +weapons armes +weapons armement +unable incapable +neutral neutre +neutral neutres +neutral neutralité +connected connectée +connected connectés +connected raccordée +connected connecté +switzerland suisse +expatriate expatrié +expatriate expatriés +armed armés +armed armées +armed armé +weekly hebdo +weekly hebdomadaire +weekly hebdomadaires +rating notation +rating cotation +rating cote +programme programme +squad escouade +squad équipe +squad escadron +squad brigade +multi multi +dynasty dynastie +cold rhume +cold froide +cold froid +cold froids +granted accordées +granted accordé +granted octroyé +granted accordée +socorro socorro +alliance alliance +alliance alliances +methods méthodes +sam sam +alabama alabama +albert albert +tropical tropiques +tropical tropicale +tropical tropical +tropical tropicaux +tropical tropicales +vietnam vietnam +vietnam viêtnam +dvd dvd +heat chaleur +heat thermique +heat chauffer +fans fans +fans ventilateurs +fans adeptes +surrounding entourant +credit crédit +commons commons +boat bateau +boat canot +boxes boîtes +boxes cartons +boxes boites +boxes coffrets +ethnic ethnique +ethnic ethniques +speaking parlant +fell tombé +fell tombée +fell tomba +arena arena +arena aréna +arena arène +roads routes +roads chemins +core core +core cœur +core coeur +core noyau +dog chiens +dog chien +dog chienne +kill kill +kill tuez +kill tuer +kill tue +athletic athlétique +athletic athlétisme +oldest aîné +negative négative +negative négatif +negative négatives +negative négatifs +confirmed confirmé +confirmed confirmées +confirmed confirmés +confirmed confirmée +sixth sixth +sixth sixième +edge bord +edge bordure +edge arête +edge edge +jesus jésus +jesus jesus +tools outillage +tools outils +colonel colonel +weak faiblesse +weak faible +weak faibles +chosen choisi +chosen choisis +chosen choisie +brand marque +resulting résultante +resulting résultant +nfl nfl +rise rise +supply approvisionnement +tradition tradition +tradition traditions +elementary primaire +elementary élémentaire +elementary élémentaires +household ménages +household ménage +spirit esprit +spirit spirit +task tâche +slightly légèrement +howard howard +incident incident +incident incidents +develop développez +develop développer +sunday sunday +sunday dimanches +sunday dimanche +discuss discuter +discuss discutez +stats stats +stats statistiques +climate climat +topics sujets +topics thèmes +purchased achetée +purchased acheté +purchased achetées +purchased achetés +communications communications +chapter chapitre +broken brisé +broken broken +broken cassé +broken brisée +broken cassée +singapore singapour +situated située +situated situé +license permis +license licences +license licence +haven haven +deaths morts +deaths décès +passing passer +passing passant +citizens citoyens +guns fusils +guns armes +guns pistolets +guns guns +guns canons +trees arbres +gone partis +gone parti +gone gone +improved améliorés +improved améliorées +improved améliorée +improved amélioré +visual visuelle +visual visuels +visual visuel +visual visuelles +pope pape +pope papes +officials fonctionnaires +officials officiels +sat assise +sat assis +sat sat +glass vitre +glass verre +glass verres +miller miller +miller meunier +posted publiée +posted affiché +posted posté +posted publié +estimated estimées +estimated estimée +estimated estimations +estimated estimé +estimated estimation +contain contiennent +contain contenir +brazilian brésilien +brazilian brésilienne +brazilian brésiliens +brazilian brésiliennes +sexual sexuel +sexual sexuelles +sexual sexuelle +defence défense +respectively respectivement +concerning concernant +rich riches +rich rich +rich riche +fast rapide +fast rapidement +fast vite +fast rapidité +fast rapides +properties propriétés +taught enseignée +taught enseigné +taught appris +extensive extensive +exhibition expositions +exhibition exposition +speech discours +speech allocution +proposal proposition +straight hétéro +internal internes +internal interne +effective efficace +effective efficaces +solution solution +fashion mode +foot foot +foot pied +foot pieds +orange orange +orange orangé +orange oranges +argentina argentine +brief bref +brief brèves +brief brève +performances performances +performances spectacles +performances représentations +adult adulte +adult adultes +newly nouvellement +identity identité +singers chanteurs +singers chanteuses +inspired inspiré +inspired inspirées +inspired inspirés +inspired inspirée +discussed discuté +require requiert +require exige +require exigent +require nécessite +require exiger +require requièrent +facility facilité +transfer virement +transfer transfer +transfer transférer +transfer transfert +egypt égypte +egypt egypte +cells cellules +patrick patrick +quebec québec +quebec québécois +quebec quebec +connecticut connecticut +scoring marquer +scoring pointage +scoring notation +anthony anthony +anthony antoine +permanent permanente +permanent permanentes +permanent permanent +permanent permanents +phase phase +audience audience +audience auditoires +audience auditoire +motion motion +motion mouvement +blues blues +blues cafard +blues bleus +blues bleues +hungarian hongroise +hungarian hongroises +hungarian hongrois +arab arabe +arab arabes +trains trains +sets ensembles +ranked classés +ranked classées +ranked classé +unlike contrairement +begin commencez +begin commencer +setting paramètre +setting réglage +eyes yeux +studios studios +gmina gmina +criminal criminels +criminal pénale +criminal criminel +criminal criminelle +commonwealth commonwealth +finish finis +finish finir +finish terminer +finish termine +communication communication +scope portée +accused accusés +accused inculpé +accused accusé +accused accusée +divisions divisions +accept accepte +accept accepter +accept acceptent +accept acceptez +warning alerte +warning avertissement +warning avertissements +alan alain +alan alan +objects objets +diego diego +contest concours +fighter chasseur +fighter fighter +fighter combattant +fighter boxeur +finds trouve +finds trouvailles +coaches autocars +coaches entraîneurs +coaches coachs +beat beat +beat battez +beat battu +beat battre +beat battement +extremely extrêmement +ford gué +ford ford +swiss suisses +swiss suisse +sorry désolé +sorry désolée +sorry désolés +sorry pardon +houston houston +worldwide mondiale +worldwide mondial +showed montré +holds détient +holds tient +holds cales +cathedral cathédrale +cathedral cathédrales +losing perdant +losing perdre +advance advance +advance avancée +advance avance +reality réalité +reality réalités +broadcasting radiodiffusion +broadcasting diffusion +adam adam +vandalism vandalisme +enemy ennemies +enemy ennemis +enemy ennemie +enemy ennemi +youtube youtube +assessed évaluées +assessed évalué +assessed évaluée +assessed évalués +billion billion +billion milliard +billion milliards +buried enfoui +buried inhumé +buried enterré +buried enterrés +buried enterrée +belgium belgique +respect respect +respect respecter +respect respecte +rare rareté +rare rare +rare saignant +rare rares +detroit détroit +detroit detroit +graduate diplômés +graduate diplômée +graduate diplômé +colleges collèges +explain expliquez +explain expliquer +explain explique +authorities autorités +killing tuerie +killing tuer +maximum maximale +maximum maximal +maximum maximales +maximum maximum +neither ni +fan ventilateur +fan fan +fan éventail +fan ventilateurs +fan adepte +notify aviser +notify informer +notify avertir +notify notifier +painter peintre +hamilton hamilton +returning retournant +returning revenant +attempted essayé +attempted tentatives +attempted tentée +attempted tenté +attempted tentative +universe universe +universe univers +passes passe +passes passes +obvious évident +obvious évidence +obvious évidente +suffered subie +suffered souffert +pieces morceaux +apply postuler +apply appliquer +apply appliquez +actresses actrices +competitions concours +competitions compétitions +aid aides +aid aide +driver pilote +driver conducteur +folk folk +dan dan +khan khan +baby bébé +baby baby +denmark danemark +tokyo tokyo +billboard panneau +calling appeler +calling appelant +anne anne +danish danoises +danish danois +danish danoise +wants veut +formula formule +formula formules +interior interieur +interior intérieur +interior intérieurs +kevin kévin +kevin kevin +weather temps +weather météorologie +weather météo +weather climat +weather intempéries +powerful puissant +powerful puissants +powerful puissante +powerful puissantes +muslim musulmans +muslim musulmane +muslim musulman +registered enregistrée +registered inscrits +registered enregistrés +registered enregistré +registered inscrit +publisher éditeur +publisher editeur +preceding précédant +sounds sons +sounds bruits +eric éric +eric eric +approved approuvé +approved approuvée +approved approuvés +approved agréée +approved approuvées +approved agréé +achieved atteint +douglas douglas +provincial provincial +provincial provinciales +provincial provinciaux +provincial provinciale +fund fonds +portugal portugal +athletes athlètes +athletes sportifs +bird oiseau +bird oiseaux +bird bird +bands bandes +bands groupes +audio acoustique +audio audio +cat chats +cat félin +cat chatte +cat chat +cat cat +centuries siècles +valid valables +valid valide +valid valable +valid valides +chemical chimique +chemical chimiques +lane lane +holding holding +counties comtés +update actualisation +update actualiser +ncaa ncaa +speak parlez +speak parler +speak parle +finding trouver +domestic domestiques +domestic domestique +ali ali +false faux +false fausse +false false +false fausses +equivalent équivalentes +equivalent équivalente +equivalent équivalents +equivalent équivalent +caught attrapée +caught pris +caught attrapé +caught capturé +caught capturés +christ christ +ending finissant +puerto puerto +perform effectuer +partner associé +partner partenaire +partner associée +partner partenaires +romania roumanie +aviation aviation +aviation aéronautique +failure échec +failure défaillance +ward ward +ward pupille +strength résistance +strength solidité +strength force +knight knight +knight chevalier +knight chevaliers +nominations nominations +nominations candidatures +hungary hongrie +concern préoccupation +concern préoccupations +concern inquiétudes +concern inquiétude +recordings enregistrements +juan juan +functions fonctions +mississippi mississippi +calls appels +criticism critique +criticism critiques +involving impliquant +magic magie +magic magic +magic magique +gordon gordon +treaty traité +antonio antonio +selection choix +selection sélections +selection sélection +rear arrière +rear arriere +rear arrières +colonial colonial +colonial coloniales +colonial coloniaux +colonial coloniale +motor moteur +obtained obtenues +obtained obtenue +obtained obtenus +obtained obtenu +circuit circuit +wish souhait +wish voeu +wish souhaite +wish souhaiter +compilation compilation +compilation recueil +harvard harvard +islamic islamiste +islamic musulman +islamic islamique +determined déterminées +determined déterminée +determined déterminés +determined déterminé +geography géographie +arkansas arkansas +fuel combustible +fuel carburant +artillery artillerie +medieval médiévale +medieval médiévales +medieval médiéval +medieval médiévaux +locations localisations +locations lieux +inclusion inclusion +recognition reconnaissance +moment moment +moment instant +grounds motifs +succeeded réussi +historian historien +condition état +condition condition +physics physique +newspapers journaux +newspapers quotidiens +represent représenter +represent représentent +allen allen +watch regardez +watch montre +watch montres +watch regarder +watch regarde +kitt kitt +protect protège +protect protégez +protect protéger +protect protègent +grey gris +grey grise +launch lancement +launch lancements +launch lancer +launch lancez +dave dave +philip philippe +philip philip +iraq irak +iraq iraq +changing changeant +changing changer +ukraine ukraine +municipalities communes +municipalities municipalités +mix mix +mix mélanger +mix mélange +mix mixage +tamil tamoul +tamil tamil +tamil tamouls +shift maj +shared partagées +shared partagée +shared partagé +austrian autrichiennes +austrian autrichien +austrian autrichienne +door porte +investigation enquête +institution institution +princess princesse +princess princess +princess princesses +trail sentier +trail piste +parks parcs +applications applications +applications demandes +hundred hundred +hundred centaine +hundred cent +requirements exigences +requirements prescriptions +talking parler +talking parlant +kim kim +ltd ltée +ltd ltd +metres mètres +gray gray +gray gris +gray grise +sector secteur +sector sectoriel +dean doyen +dean dean +dean doyenne +agricultural agricole +agricultural agricoles +incorporated incorporés +incorporated incorporé +incorporated incorporées +incorporated incorporée +escape échapper +escape fuite +escape évasion +escape escape +orders ordonnances +orders commandes +orders ordres +corner corner +corner coin +commissioned commandé +commissioned commandée +commissioned commandées +founding fondatrice +mill moulin +mill mill +mill laminoir +mrs mme +mrs mrs +subjects sujets +temperature température +temperature températures +settled réglés +settled réglé +spacewatch spacewatch +remember mémoriser +remember souviens +miami miami +promote promouvoir +values valeurs +spot spot +progress progrès +progress progression +progress progresser +progress avancement +learn apprenez +learn apprendre +learn apprends +planet planete +planet planète +occupied occupé +occupied occupés +occupied occupées +occupied occupée +usage utilisation +usage usage +refused refusées +refused refusés +refused refusé +refused refusée +borough arrondissement +borough borough +truth verite +truth vérité +clark clark +sufficient suffisantes +sufficient suffisants +sufficient suffisamment +sufficient suffisant +sufficient suffisante +equal égales +equal égaux +equal égal +equal égale +administrator administratrice +administrator administrateur +persons personnes +factory fabrique +factory usine +fought combattu +derived dérivé +derived dérivée +derived dérivées +outstanding remarquables +outstanding remarquable +magazines revues +magazines magazines +flow flux +flow débit +flow flow +flow écoulement +peer pair +peer peer +peer pairs +attacked attaqués +attacked agressé +attacked agressée +attacked attaqué +attacked attaquée +generate génère +generate générer +shape shape +shape forme +creator créatrice +creator créateur +requires requiert +requires exige +requires nécessite +option option +lincoln lincoln +starts débute +starts démarre +starts commence +stands stands +stands gradins +establishment etablissement +establishment établissement +selling vendre +causes cause +causes causes +budget budgétaire +budget budget +battles batailles +sky sky +sky ciels +sky ciel +legend légendes +legend légende +arrested arrêtés +arrested arrêté +arrested arrêtée +forum forum +metro métro +metro metro +broke brisé +broke fauché +broke cassé +broke rompu +broke cassée +strike strike +strike frappe +strike grève +strike frapper +injury préjudice +injury blessure +injury lésion +injury lésions +injury blessures +ryan ryan +zero zero +zero zéro +converted convertis +converted convertie +converted converti +violence violences +violence violence +significantly significativement +significantly sensiblement +statements déclarations +controlled contrôlées +controlled contrôlés +controlled contrôlée +controlled contrôlé +welsh galloise +welsh gallois +welsh welsh +dropped chuté +roger reçu +roger roger +pdf pdf +distinguished distinguées +distinguished distingués +distinguished distinguée +distinguished distingué +samuel samuel +translated traduites +translated traduits +translated traduite +translated traduit +papers papiers +detail détails +detail détail +chapel chapelle +chapel chapel +frederick frédéric +frederick frederick +thousands milliers +banks banques +offensive offensif +offensive offensive +offensive offensant +kings rois +kings kings +factor facteur +factor factor +rename renommer +replace remplacez +replace remplacer +replace remplacement +replace remplace +museums musées +resistance résistance +resistance résistant +resistance resistance +resistance résistants +resistance résistances +junction junction +junction jonction +tim tim +engines moteurs +contributed contribué +medium moyen +medium moyennes +medium médium +medium moyenne +medium milieu +device appareil +device dispositif +device périphérique +profit profit +profit bénéfice +profit profits +profit bénéfices +dream reve +dream rêves +dream dream +dream rêver +dream rêve +enter entrer +enter entrez +enter saisir +enter saisissez +twelve twelve +twelve douze +universal universal +universal universels +universal universelle +universal universel +typical typiques +typical typique +skills aptitudes +skills compétences +bought achetées +bought achetée +bought achetés +bought acheté +passenger passager +passenger passagère +passenger passagers +passenger voyageur +cleveland cleveland +funding financement +agriculture agriculture +parent parents +parent parent +decades décennies +receiving recevant +receiving recevoir +signal signaux +signal clignotant +signal signal +reform reforme +reform réformer +reform réforme +reform réformes +organisation organisation +column colonne +column chronique +column colonnes +defunct défunte +defunct défunt +utah utah +managers directeurs +managers gestionnaires +managers dirigeants +qualified qualifiés +qualified qualifiées +qualified qualifiée +qualified qualifié +indicate indiquez +indicate indiquer +ukrainian ukrainiennes +ukrainian ukrainien +ukrainian ukrainienne +ukrainian ukrainiens +gay homosexualité +gay gay +gay homosexuel +amateur amateurs +amateur amateur +obviously manifestement +obviously evidemment +obviously visiblement +obviously évidemment +flora flora +flora flore +gene gènes +gene gène +gene gene +soul âmes +soul ame +soul soul +soul âme +alt alt +alt alat +discussions discussions +montreal montréal +montreal montreal +turns virages +walker walker +walker rôdeur +entrance entrée +path sentier +path chemin +path sillon +nice sympa +nice gentil +nice joli +nice jolie +nice nice +string chaîne +string ficelle +string string +string cordes +influenced influencé +influenced influencées +influenced influencée +influenced influencés +occur survenir +developing développer +abandoned abandonnés +abandoned abandonné +abandoned abandonnées +abandoned abandonnée +humans humains +pair pair +pair paire +pair paires +flat plats +flat plat +sample échantillon +sample échantillons +contained contenues +contained contenaient +banned interdits +banned interdite +banned interdit +banned bannis +banned bannie +moore moore +strongly fortement +visited visités +visited visitée +visited visité +increasing croissante +attorney avocat +attorney avocate +arm bras +arm arm +mathematics mathématique +mathematics mathématiques +canal canal +charts graphiques +charts diagrammes +thinking réfléchir +thinking pensant +thinking pensée +thinking penser +dublin dublin +suggests suggère +surname nom +surname patronyme +brain cerveaux +brain cérébrale +brain cerveau +brain cervelle +pittsburgh pittsburgh +blog blog +blog blogue +economics économie +economics economie +seventh septième +seventh seventh +alex alex +heavily fortement +heavily lourdement +authors auteurs +paintings peintures +paintings toiles +paintings tableaux +concerned préoccupé +concerned préoccupée +concerned concerné +concerned concernés +recipients bénéficiaires +recipients lauréats +recipients destinataires +recipients récipiendaires +controversial controverse +controversial controversée +controversial polémique +controversial controversé +controversy controverse +controversy polémique +controversy controverses +expressed exprimée +expressed exprimées +expressed exprimé +expressed exprimés +josé jose +josé josé +bodies organes +bodies carrosseries +conservation préservation +conservation conservation +maps cartes +marie marie +arguments argumentation +arguments arguments +chain enchaîner +chain chaîne +chain chaine +focused concentré +focused concentrée +readers lecteurs +carl carl +violation violation +violation infraction +offices bureaux +wave vague +wave onde +circle cercle +invasion envahir +invasion invasion +invasion invasions +jimmy jimmy +opportunity opportunités +opportunity opportunité +determine déterminer +determine détermine +colspan colspan +orthodox orthodoxe +orthodox orthodoxie +orthodox orthodoxes +voted votés +voted votées +voted votée +voted voté +formal formels +formal formel +formal formelle +describes décrit +seconds secondes +seconds seconds +cycle cycle +doubt doute +doubt doutes +doubt douter +doubt doutez +golf golf +walls murs +productions productions +constituency circonscription +closely étroitement +occurs survient +huge énormes +huge immense +huge énorme +huge enorme +andy andy +representing représenter +representing représentant +indonesia indonésie +sell vends +sell vendre +mon mon +mon lun +drawn dessiné +diocese diocèse +tank réservoir +tank tank +tank citerne +tank cuve +advice conseil +advice conseils +senator sénateur +senator sénatrice +generated générés +generated générées +generated générée +generated généré +malaysia malaisien +malaysia malaisie +asking demandant +finland finlande +causing causant +leads prospects +lawyer avocat +lawyer juriste +lawyer avocate +seattle seattle +gain gain +index index +index indice +saints saintes +saints saints +runner runner +runner coureur +crisis crise +cinema cinémas +cinema cinéma +cinema ciné +matt matt +matt matthieu +matt mat +hollywood hollywood +reaction réaction +medals médailles +documents documents +reader lecteur +lawrence laurent +lawrence lawrence +pattern motif +pattern schéma +archives archives +atlanta atlanta +voting vote +voting voter +voting votants +reviewed revu +reviewed examiné +bear ours +bear bear +perfect parfaits +perfect parfait +perfect parfaites +perfect parfaite +restored restaurée +restored restaurés +restored rétabli +restored restauré +bruce bruce +baltimore baltimore +baron baron +pan pan +pan casserole +commune commune +fantasy imaginaire +fantasy fantasy +fantasy fantasme +fantasy fantaisie +duty devoir +chair chaise +chair président +chair présidence +chair fauteuil +scenes scènes +broad large +opposite opposé +opposite opposée +opposite contraire +opposite opposés +stuff trucs +aged vieilli +streets rues +nick nick +anna anna +billy billy +extension prolongement +extension prolongation +extension extension +extension vulgarisation +kent kent +parliamentary parlementaire +kelly kelly +shooting fusillade +shooting tirs +shooting tournage +shooting tir +shooting tirer +ready prête +ready pret +ready prêtes +ready prêt +ready prêts +pick pick +songwriter compositeur +songwriter compositrice +aware consciente +aware conscient +aware conscients +jordan jordanie +jordan jourdain +jordan jordanienne +jordan jordan +dictionary dictionnaire +dictionary dictionnaires +composition composition +salt salé +salt sel +bangladesh bangladesh +bot bot +benefit bénéfice +benefit avantage +benefit prestation +lands terres +interests intérêts +scheduled prévu +scheduled planifiée +scheduled programmée +scheduled planifié +scheduled programmé +teachers professeurs +teachers enseignants +teachers enseignant +closing fermer +closing clôture +closing fermeture +advertising publicitaire +advertising publicité +advertising publicités +contribution contribution +contribution cotisation +maine maine +retirement retraite +scientists scientifiques +dam dam +dam barrage +dam digue +blocks blocages +blocks blocs +las las +print imprimé +print impression +print imprimer +techniques techniques +participate participez +participate participer +anniversary anniversaire +requested demandée +requested demandé +requested sollicité +requested demandés +discovery découverte +discovery découvertes +discovery discovery +explained expliqués +explained expliqué +explained expliquée +expedition expédition +expedition expedition +citation citation +und und +meanwhile entretemps +hampshire hampshire +creative créatifs +creative créative +creative créatif +maintain maintenir +pierre pierre +detailed détaillées +detailed détaillée +detailed détaillé +facts faits +frame ossature +frame cadre +finance financement +finance finances +finance finance +socialist socialistes +socialist socialiste +script scénario +script script +camera appareil +camera caméra +returns retours +returns retourne +engaged fiancé +engaged fiancée +engaged engagés +engaged fiancés +engaged engagée +engaged engagé +assistance assistance +experienced expérimentées +experienced expérimentée +experienced expérimenté +experienced expérimentés +underground underground +underground souterraine +underground souterrain +underground souterrains +sale soldes +sale vente +beautiful beau +beautiful superbe +beautiful magnifiques +beautiful magnifique +beautiful belle +jane jane +jane jeanne +abc abc +supposed supposés +supposed supposée +supposed supposé +successor successeur +successor successeurs +classification classement +classification classification +tool outil +mining minier +mining mines +mining minière +cabinet armoire +cabinet cabinet +bytes bytes +bytes octets +ross ross +russell russel +russell russell +citations citations +maintained maintenu +maintained entretenu +maintained entretenue +maintained maintenus +maintained maintenue +evening soirée +evening soir +singing chant +singing chanter +fifa fifa +gender sexe +gender sexes +gender genre +venues lieux +lakes lacs +lakes laques +mail courrier +mail mail +jeff jeff +electoral électorale +emergency urgence +emergency urgences +mode mode +christopher christopher +christopher christophe +heads tête +heads têtes +proved prouvé +proved prouvée +proved prouvées +proved prouvés +priest priest +priest prêtre +priest curé +funds fonds +investment investissement +investment investissements +romanian roumains +romanian roumaine +romanian roumain +session session +session séance +capture capturer +capture capture +capture capter +aspects aspects +reduce réduire +trophy trophée +trophy trophy +trophy trophées +abuse sévices +abuse abus +abuse abuser +abuse maltraitance +prefecture préfecture +walk marche +walk promenade +walk balade +walk marcher +normally normalement +snow neige +snow snow +shop boutique +shop magasin +dakota dakota +bush brousse +bush bush +bush buissons +bush buisson +coal houille +coal charbon +inhabitants habitants +gary gary +employees employés +employees collaborateurs +employees salariés +error error +error erreur +error erreurs +invited invité +invited invitée +invited invitées +cable câbles +cable cable +cable câble +protein protéines +protein protéique +protein protéine +accident accident +decade décennie +measure mesurer +measure mesure +watched surveillés +watched regardée +watched regardé +watched regardées +patients patients +patients patientes +downtown downtown +animated animées +animated animé +animated animés +animated animée +satellite satellite +johnny johnny +combination combinaison +courts tribunaux +courts juridictions +sequence séquences +sequence séquence +hook hook +hook hameçon +hook crochet +clean propre +clean nettoient +clean nettoyer +owners propriétaires +twin jumelle +twin jumeau +twin jumeaux +twin jumelles +distributed distribué +distributed distribués +distributed distribuée +distributed distribuées +describe décrivez +describe décrire +defensive défensives +defensive défensive +defensive défensif +islam islam +photos photos +photos photographies +ottoman ottoman +ottoman ottomane +trained formés +trained entraîné +trained formé +affected affectée +affected affectés +affected touchés +affected touchée +affected affecté +affected touché +routes routes +routes itinéraires +ministers ministres +wine vins +wine vin +elsewhere ailleurs +lanka lanka +carlos carlos +landing atterrissage +landing débarquement +landing landing +landing atterrir +collected recueillis +collected collecté +collected collectés +collected collectées +collected recueilli +revival renouveau +rio rio +rio río +communes communes +saturday samedi +saturday saturday +mps parlementaires +mps députés +guess suppose +guess deviner +guess devinez +guess devine +drop goutte +drop drop +sarah sarah +laid pondu +swimming nager +swimming natation +swimming baignade +membership membres +membership adhésion +edinburgh edimbourg +edinburgh édimbourg +fit fit +fit ajuster +harris harris +dallas dallas +degrees degrés +degrees diplômes +degrees degré +bachelor célibataire +bachelor bachelor +bachelor baccalauréat +personally personnellement +briefly brièvement +files fichiers +files dossiers +extreme extrême +extreme extrêmes +extreme extreme +courses cours +reaching atteignant +reaching atteindre +sought recherchée +sought recherché +vision vision +demand exiger +vertical verticales +vertical verticalement +vertical verticaux +vertical vertical +vertical verticale +updated actualisé +marketing marketing +marketing commercialisation +jason jason +consisted consistait +appeal pourvoi +appeal appel +plane avion +quick rapide +quick rapidement +quick vite +quick rapides +victor viktor +victor victor +dyk dyk +solar solaires +solar solaire +ages âges +neighborhood voisinage +neighborhood quartier +fairly équitablement +wings wings +wings ailes +acid acid +acid acide +acid acidité +acid acides +rfc rfc +constant constante +constant constantes +constant constant +constant constants +hip hip +hip hanches +hip branché +hip hanche +admins administrateurs +nova nova +ceremony cérémonie +chile chilien +chile chili +composers compositeurs +nazi nazie +nazi nazi +nazi nazis +scholar érudit +liverpool liverpool +hero héro +hero héros +hero hero +designer designer +designer styliste +designer dessinateur +designer concepteur +designer créateur +learned appris +learned apprise +learned apprises +instruments instruments +welcome bienvenues +welcome bienvenue +welcome bienvenus +welcome bienvenu +hair cheveu +hair cheveux +hair coiffure +consecutive consécutifs +consecutive consécutif +consecutive consécutives +consecutive consécutive +movies films +movies cinéma +movies ciné +adjacent adjacents +adjacent contiguës +adjacent adjacentes +adjacent adjacente +adjacent adjacent +pool piscine +pool pool +tue mar +tue aut +norman norman +norman normand +norman normands +norman normande +collections collections +belgian belge +belgian belges +austin austin +ensure assurez +driving conduire +driving conduite +phone téléphone +fly vole +fly voler +fly mouches +fly mouche +ian ian +window hublot +window vitre +window fenetre +window fenêtre +window fenêtres +document document +adams adams +collaboration collaboration +collaboration collaboratif +margaret margaret +margaret marguerite +kennedy kennedy +leg patte +leg jambes +leg cuisse +leg jambe +videos vidéos +assume présumer +assume supposer +assume supposez +attached attachée +attached attaché +attached attachées +attached attachés +dry sèche +dry sèches +dry sec +dry secs +dry sécher +expand étendre +expand agrandir +expand développez +expand élargir +bible biblique +bible bible +matthew matthew +matthew mathieu +matthew matthieu +serbian serbe +serbian serbes +instrument instrument +covering couvrant +random random +random hasard +random aléatoire +random aléatoires +represents représente +participants participants +thorough minutieux +thorough minutieuse +mentions mentionne +mentions mentions +portrait portrait +drivers chauffeurs +drivers conducteurs +drivers pilotes +drivers conducteur +airlines airlines +franklin franklin +viewers téléspectateurs +viewers spectateurs +finnish finnoise +finnish finlandais +finnish finnois +finnish finlandaise +differences différences +venue lieu +vocal vocaux +vocal chant +vocal vocale +vocal vocal +element element +element élément +regularly régulièrement +rejected rejetées +rejected refusées +rejected refusé +rejected rejetés +rejected rejetée +rejected rejeté +relative relatif +relative relative +relative parent +illegal illégaux +illegal illégales +illegal illégale +illegal illégal +illegal illicite +stewart stewart +roof toit +roof toiture +leagues ligues +leagues lieues +colour couleur +colour coloris +colour couleurs +morgan morgane +morgan morgan +prisoners prisonnières +prisoners prisonniers +prisoners détenus +facebook facebook +attend assister +nelson nelson +survived survécu +insurance assurances +insurance assurance +expert expert +steam vapeur +steam vapeurs +cards cartes +manufacturing fabrication +testing essai +testing test +testing essais +testing tests +testing tester +coastal côtières +coastal littoral +coastal côtier +coastal côtière +yorkshire yorkshire +rescue secours +rescue sauvetage +rescue sauveteurs +territories territoires +thu thu +thailand thaïlande +thailand thailande +struck frappé +choose choisissez +choose choisir +choose choisis +vienna vienne +journey voyage +journey journey +journey parcours +storage stockage +storage entreposage +storage rangement +costs coûts +singh singh +distinct distinctes +distinct distinct +distinct distincte +distinct distincts +notably notamment +soldier soldat +colony colonie +evolution evolution +evolution évolution +taiwan taiwan +taiwan taïwan +hurricane ouragans +hurricane ouragan +judges magistrats +judges juges +gardens jardins +poems poèmes +driven conduit +responsibility responsabilités +responsibility responsabilité +sentences phrases +birmingham birmingham +engineers ingénieur +engineers ingénieurs +visible visible +visible visibles +substantial substantielle +substantial substantiel +gulf golfe +gulf gulf +installed installées +installed installé +installed installés +installed installée +revolutionary révolutionnaires +revolutionary révolutionnaire +trip voyage +trip trip +restaurant restaurant +restaurant gastronomie +graham graham +stores magasins +rice riz +prove prouvez +prove prouver +prove prouve +reasonable raisonnable +reasonable raisonnablement +reasonable raisonnables +skin peau +committed engagée +committed engagés +committed commis +committed engagé +volleyball volley +volleyball volleyball +chose choisit +chose choisi +factors facteurs +hundreds centaines +hundreds centaine +injured blessé +injured blessée +injured blessées +injured blessés +injured lésée +devices dispositifs +devices appareils +devices périphériques +phrase phrase +stanley yves +stanley stanley +lemmon lemmon +thompson thompson +suicide suicide +suicide suicides +advantage avantage +automatically automatiquement +disc disque +minimum minimales +minimum minimum +minimum minimal +minimum minimale +minimum minimums +goods marchandises +goods marchandise +goods biens +charges charges +alfred alfred +operator exploitant +operator opérateur +finishing finition +finishing parachèvement +finishing finitions +finishing terminer +fred fred +identify identifier +producers producteurs +ann ann +ann anne +campbell campbell +portland portland +latest dernier +latest dernières +latest derniers +latest dernière +releases communiqués +releases rejets +victims victimes +explanation explication +explanation explications +operate opérer +threat menaces +threat menace +crossing croisement +crossing franchissement +crossing traverser +crossing traversée +slow ralentir +slow lentement +slow lenteur +slow lent +slow lente +poets poètes +stopped stoppé +strategy stratégie +wayne wayne +ranking classement +disney disney +wright wright +residential résidentiel +residential résidentielle +residential résidentiels +associate associé +associate associés +associate associée +associate associer +significance signification +significance importance +ruled gouverné +ruled statué +excellent excellents +excellent excellente +excellent excellent +observed observés +observed observée +observed observées +observed observé +threatened menacés +threatened menacée +threatened menacé +threatened menacées +friendly amicale +friendly sympathique +friendly convivial +friendly amical +redirects redirections +temporary provisoire +temporary temporaires +temporary temporaire +masters masters +masters capitaines +masters maîtres +peninsula péninsule +networks réseaux +passengers voyageurs +passengers passagers +assumed supposé +assumed présumé +artistic artistiques +artistic artistique +safe sécuritaire +safe sûr +safe coffre +festivals festivals +festivals fêtes +compete rivaliser +compete concourir +png png +hunter chasseur +hunter hunter +alaska alaska +partnership partenariats +partnership partenariat +maintenance entretien +maintenance maintenance +monitoring surveillance +monitoring suivi +evil diaboliques +evil mal +evil evil +evil diabolique +relief soulagé +relief relief +relief soulagement +relief secours +charlie charlie +poverty pauvreté +hop houblon +hop hop +fri ven +fri fri +suspected présumés +suspected soupçonnée +suspected suspecté +suspected soupçonné +filled remplies +filled remplis +filled remplie +filled rempli +nba nba +decide décider +decide décide +decide décident +decide décidez +breaking brisant +breaking cassant +breaking rompre +breaking rupture +breaking briser +argentine argentins +argentine argentin +argentine argentine +resigned démissionné +resigned démission +oblast oblast +drew drew +hawaii hawaï +hawaii hawaii +brooklyn brooklyn +historians historiens +speaker orateur +speaker intervenant +speaker enceintes +speaker conférencier +moth papillon +permission autorisation +permission permission +wounded blessé +wounded blessée +wounded blessées +wounded blessés +racial raciale +marshall marshall +gate gate +gate porte +springs ressorts +springs springs +roy roy +photography photographie +photography photographique +helping aidant +helping aider +knights knights +knights chevaliers +roll rouler +roll roll +roll rouleau +progressive progressiste +progressive progressifs +progressive progressif +progressive graduel +progressive progressive +contrast contrastes +contrast contraste +continuing continuer +continuing continue +processes processus +processes procédés +terminal terminal +terminal terminaux +executed exécuté +executed exécutés +executed exécutée +svg svg +spouse conjoint +spouse époux +spouse conjoints +spouse epouse +spouse épouse +infrastructure infrastructures +infrastructure infrastructure +principle principe +painters peintres +painted peintes +painted peinte +painted peint +painted peints +properly correctement +frequency répétition +frequency périodicité +frequency fréquence +frequency fréquences +shaped façonné +shaped façonnés +shaped façonnée +joining rejoindre +robinson robinson +waters eaux +waters waters +ridge dorsale +ridge ridge +ridge arête +ridge crête +bridges passerelles +bridges ponts +ceo pdg +monument monument +mental mentale +mental mental +carter carter +karl karl +rowspan rowspan +mac mac +orleans orleans +orleans orléans +portal portal +portal portail +parallel parallèlement +parallel parallèles +parallel parallèle +thirty trente +thirty thirty +giant géants +giant géant +giant giant +giant géante +qualifying qualifications +qualifying qualifiée +qualifying qualification +qualifying qualifier +murray murray +afghanistan afghanistan +assessment évaluation +assessment appréciation +counter compteur +counter comptoir +bears bears +bears ours +bears oursons +purchase achats +purchase acheter +purchase achat +purchase achetez +expression expression +uefa uefa +improvement amélioration +improvement améliorations +madrid madrid +closure bouclage +closure clôture +closure fermeture +wheel roue +wheel roues +ambassador ambassadeur +ambassador ambassadrice +desert désert +desert désertique +bringing apportant +iranian iraniennes +iranian iranienne +iranian iranien +reign règne +reign régner +uncle tonton +uncle oncle +severe sévères +severe graves +severe grave +severe sévère +rain pluies +rain rain +rain pluie +admiral amiral +fishing peche +fishing pêcher +fishing pêche +existed existait +existed existé +existed existaient +raise élever +broadway broadway +principles principes +grow grandir +grow croître +grow pousser +tests essais +tests tests +tests épreuves +roughly grossièrement +tech tech +trouble trouble +trouble perturbation +rico rico +paragraph paragraphe +paragraph alinéa +bat bat +bat batte +prepared préparés +prepared préparées +prepared préparée +prepared préparé +measures mesures +robin robin +hired engagée +hired engagés +hired embauché +hired embauchés +hired engagé +fear peur +fear fear +fear crainte +fear craintes +merit mérites +merit mérite +participation participation +massive massifs +massive massif +massive massive +massive massives +designs dessins +agencies organismes +agencies agences +technique technique +alberta alberta +egyptian égyptiens +egyptian égyptienne +egyptian égyptien +clerk clerc +clerk greffier +clerk commis +knew saviez +knew savait +knew savais +knew savaient +narrow étroite +narrow étroits +narrow étroites +narrow étroit +adapted adaptée +adapted adaptés +adapted adaptées +adapted adapté +commissioner commissaire +rapid rapide +rapid rapid +rapid rapides +credited crédités +credited crédité +dating rencontres +businesses entreprises +bomb bombe +bomb bombes +capable capables +capable capable +poem poème +stages étapes +honorary honoraire +honorary honorifique +honorary honorifiques +dragon dragons +dragon dragon +charged débité +charged inculpé +charged facturés +charged chargé +propose proposer +modified modifié +modified modifiée +modified modifiées +modified modifiés +fired virée +fired viré +fired virés +mlb mlb +send envoie +send envoyez +send envoi +send envoyer +proof justificatif +proof preuve +proof preuves +practices pratiques +arabic arabe +arabic arabes +attractions attraits +attractions attractions +mouth bouche +mouth embouchure +fix fix +fix correctif +fix réparer +licensed licencié +licensed agréé +symbol symboles +symbol symbole +organ orgue +organ organe +damaged endommagé +damaged endommagées +damaged endommagés +damaged abîmés +damaged abîmé +damaged endommagée +warren warren +exception exception +costa costa +unfortunately hélas +unfortunately malheureusement +jerusalem jerusalem +jerusalem jérusalem +replacement remplacements +replacement remplacement +replacement remplaçant +indians indiens +soundtrack soundtrack +virgin virgin +virgin vierges +virgin vierge +virgin puceau +thousand millier +thousand mille +thousand milliers +vancouver vancouver +legislation législation +legislation législations +beauty beauté +credits générique +credits crédits +buy acheter +buy achat +buy achetez +organisations organisations +serbia serbie +christianity chrétienté +christianity christianisme +opinions opinions +cavalry cavalerie +tribe tribu +richmond richmond +chess échecs +chess echec +channels chaînes +channels canaux +claiming revendication +claiming réclamer +claiming affirmant +claiming prétendant +claiming revendiquer +exact exacte +exact exactement +exact exact +exact exactes +baker boulanger +baker baker +allied alliés +allied allié +allied allied +allied alliées +allied alliée +involvement implication +anime animé +anime anime +donald donald +sisters soeurs +sisters sœurs +requests demandes +requests requêtes +unusual inhabituelle +unusual inhabituel +unusual insolites +unusual insolite +impossible impossible +impossible impossibles +colors coloris +colors couleurs +cook cuisiner +cook cuisinier +cook cuire +cook cook +cook cuisinière +drawing dessin +drawing tirage +drawing dessiner +wikimedia wikimedia +jonathan jonathan +removal déménagement +removal enlèvement +removal suppression +indicates indique +admitted admise +admitted avoué +admitted admis +admitted admises +ownership appropriation +ownership propriété +shore rive +shore rivages +shore shore +shore rivage +monitored surveillés +monitored surveillée +monitored surveillé +nebraska nebraska +regulations réglementation +regulations règlements +regulations règlementation +regulations réglementations +regulations règlement +crash plantage +crash accident +crash crash +crash krach +guitarist guitariste +supports supporte +supports soutient +supports soutiens +supports supports +abbey abbaye +deleting effacement +deleting supprimant +deleting suppression +nevada nevada +barry barry +tone tonalité +tone tonus +operates fonctionne +operates opère +indigenous indigènes +indigenous indigène +indigenous autochtone +personality personnalité +reception réception +transit transit +buffalo buffle +buffalo buffles +buffalo buffalo +buffalo bisons +buffalo bison +flowers fleurs +bond cautionnement +bond caution +bond bond +jay jay +adventure aventures +adventure aventure +definitely assurément +definitely certainement +definitely définitivement +guinea guinée +guinea guinéen +guinea guinéenne +horror horreur +rangers rangers +pointed pointé +pointed pointu +apple pommier +apple pommes +apple apple +apple pomme +popularity popularité +occasionally occasionnellement +occasionally parfois +coalition coalition +franchise franchise +franchise franchises +franchise franchisé +franchise franchisés +starred étoilé +critic critique +journals revues +rolling laminage +rolling rouler +rolling roulant +rolling roulement +percentage pourcentages +percentage pourcentage +silent silencieuse +silent muet +silent silencieux +silent silencieuses +laboratory laboratoire +laboratory laboratoires +microsoft microsoft +movements mouvements +charter affrètement +charter charter +charter charte +charter chartes +suitable approprié +suitable convenable +alternate suppléant +alternate alterner +offering offrir +offering offrant +offering offrande +missions missions +experimental expérimental +experimental expérimentale +rooms salles +rooms chambres +concluded conclu +concluded conclue +concluded conclus +reputation renommée +reputation notoriété +reputation réputation +accurate exacte +accurate précises +accurate précis +versus versus +websites sites +interpretation interprétation +tagged étiquetés +tagged identifié +tagged identifiées +tagged étiqueté +tagged marqué +tagged identifiés +endemic endémique +endemic endémiques +chemistry chimie +achieve réaliser +knows sait +knows connait +manga manga +manga mangas +journalists journalistes +forests forêts +forests forêt +cbs cbs +symphony symphonique +symphony symphonie +promotional promotionnel +promotional promotionnelles +promotional promotionnels +electrical électrique +electrical electrique +tags identifications +tags balises +tags étiquettes +tags tags +meters compteurs +meters mètres +jerry jerry +tigers tigers +tigers tigres +commerce commerce +remix remix +addressed adressé +addressed adressée +phil phil +automatic automatiques +automatic automatisé +automatic automatique +gang gang +gang bande +printed imprimé +printed imprimée +printed imprimées +printed imprimés +oak chênes +oak oak +oak chêne +warner avertisseur +warner warner +tend tendent +quote cotation +quote citation +quote devis +quote citer +quote cite +separated séparées +separated séparée +separated séparés +separated séparé +bishops évêques +glasgow glasgow +essentially essentiellement +essentially fondamentalement +wait attendre +wait attends +wait attendez +battery batterie +battery pile +battery accumulateur +favor faveur +benjamin benjamin +apparent apparent +apparent apparente +shopping achats +shopping shopping +patrol patrouilles +patrol patrouiller +patrol patrouille +eagle eagle +eagle aigle +angel ange +angel angélique +angel angel +angel anges +martial martial +martial martiaux +restoration restauration +delhi delhi +hans hans +indicated indiquée +indicated indiqués +indicated indiqué +morris morris +centers centres +mills fraises +mills mills +mills moulins +mills broyeurs +helpful serviable +helpful utile +helpful utiles +delivered livrés +delivered livrée +delivered délivré +delivered livré +components composants +components composantes +victorian victorien +victorian victorienne +legislature législatif +legislature législateur +legislature législature +tourism tourisme +treated traitée +treated soigné +treated traitées +extent étendue +kids enfants +barbara barbara +essay essai +circumstances circonstances +repeated répétés +repeated répétée +repeated répété +repeated répétées +plain plaine +superior supérieurs +superior supérieure +superior supérieur +superior superieure +superior superieur +strategic stratégique +strategic stratégiques +similarly pareillement +duties fonctions +duties devoirs +effectively efficacement +blp blp +considering considérant +arranged arrangée +arranged arrangé +arranged arrangés +ken ken +grammar grammaire +amendment amendement +amendment modification +alleged présumés +alleged prétendument +alleged prétendue +alleged présumé +alleged présumée +alleged prétendu +relation relation +habitat habitats +habitat habitat +spoken parlé +spoken parlés +spoken parlée +shell coquillage +shell coquille +shell shell +mounted montées +mounted montée +mounted montés +mounted monté +entries entrées +conflicts conflits +conflicts conflit +philippine philippin +philippine philippins +philippine philippine +philippine philippines +montana montana +appearing apparaître +appearing apparaissant +triple triples +triple triplé +triple tripler +triple triple +caribbean caraïbes +caribbean antilles +caribbean caraïbe +hosts hôtes +signs signes +signs panneaux +seriously sérieux +seriously sérieusement +seriously serieux +bristol bristol +warring belligérantes +mitchell mitchell +industries industries +colombia colombie +comparison comparatif +comparison comparaison +comparison comparaisons +basin bassine +basin bassin +eleven onze +eleven eleven +ill ill +ill malade +ill malades +pradesh pradesh +charity bienfaisance +charity aumône +charity charité +output sortie +dna adn +carbon carbone +boats bateaux +desc desc +architectural architecturaux +architectural architectural +representation représentation +commentary commentaire +rising hausse +rising rising +rising montante +visitors visiteur +visitors visiteurs +markets marchés +plate assiette +plate plaque +giants géants +giants giants +processing transformation +processing traitement +landscape paysager +landscape paysage +landscape paysages +dick bite +dick dick +hunt hunt +hunt pourchasser +hunt chasser +hunt chasse +summit sommet +psychology psychologie +ride chevaucher +ride balade +greatly grandement +guardian guardian +guardian tuteur +guardian gardienne +guardian gardien +terminus terminus +losses pertes +balance balance +balance solde +balance équilibre +democracy démocratie +nicholas nicolas +nicholas nicholas +usual habituel +usual habituelle +peru pérou +eighth eighth +eighth huitième +instrumental instrumental +instrumental instrumentale +hindu hindou +hindu hindous +hindu hindoue +defender défenseur +riding équitation +arrival arrivée +arrival arriver +arrival arrivées +evans evans +turning tournant +imply impliquer +imply impliquent +imply insinuer +prose prose +cargo cargaison +cargo fret +hidden masquée +hidden cachée +hidden masqué +hidden caché +hidden cachés +hidden masqués +volunteer volontaires +volunteer volontaire +volunteer bénévole +volunteer bénévolat +volunteer bénévoles +bio bio +bio biographie +holder titulaire +holder porteur +holder détenteur +sugar sucre +sugar sucres +daughters filles +wildlife faune +fun fun +fun plaisir +fun marrant +fun amusant +integrated intégrée +integrated intégrées +integrated intégré +integrated intégrés +partners partenaires +rates tarifs +rates taux +grace grâces +grace grâce +grace grace +feed nourrir +feed fil +childhood enfance +accompanied accompagné +accompanied accompagnée +accompanied accompagnées +accompanied accompagnés +milan milan +photographs photographies +honour honneur +soil terre +soil sols +soil sol +server server +server serveur +manual manuel +manual manual +manual manuels +manual manuelle +concrete concret +concrete concrètes +concrete béton +possibility possibilité +ghost ghost +ghost fantôme +ghost fantômes +confused perplexe +confused confus +confused confuse +confused troublé +tunnel tunnel +larry larry +styles styles +elevation altitude +elevation élévation +muhammad muhammad +muhammad mahomet +considerable considérable +considerable considérables +inter inter +lose perdez +lose perdre +lose perd +phoenix phénix +phoenix phoenix +sweet doux +sweet sucré +sweet douce +sweet sweet +waste déchets +waste gaspillages +waste gaspillage +waste déchet +operational opérationnelles +operational opérationnel +operational opérationnels +operational opérationnelle +tall tall +qualify qualifier +constitutional constitutionnelle +constitutional constitutionnel +constitutional constitutionnels +peoples peuples +acceptable acceptables +acceptable acceptable +fruit fruitières +fruit fruits +decisions décisions +depression dépressions +depression dépression +perspective perspective +midfielder milieu +crystal cristal +crystal cristalline +crystal cristaux +crystal crystal +monastery monastère +monastery monastères +resident résidente +resident résidant +resident résident +resident résidents +cincinnati cincinnati +tied liées +surgery chirurgie +steps marches +steps étapes +carrier porteur +carrier transporteur +stream flux +stream ruisseau +alice alice +kick kick +kick botter +strange étrange +strange bizarre +strange strange +strange etrange +predecessor prédécesseur +bernard bernard +nigeria nigeria +nigeria nigéria +pain souffrance +pain douleur +pain peine +pain douleurs +influential influente +influential influentes +influential influents +influential influent +punk punk +punk voyou +suggestion suggestion +interaction interaction +interaction interactions +retained conservés +retained conservées +retained conservé +retained retenue +retained retenu +achievement accomplissement +mechanical mécanique +mechanical mécaniques +drugs drogues +drugs drogue +missed loupé +missed manqué +missed manquée +missed raté +missed manqués +trinity trinity +trinity trinité +classified classées +classified classifié +classified classés +classified classé +minority minoritaires +minority minorité +minority minoritaire +coat manteau +powered alimenté +powered motorisé +powered propulsé +alive vivante +alive vivants +alive vivant +alive vivantes +alive alive +nbc nbc +nhl lnh +keith keith +bobby bobby +harbor harbor +behaviour comportements +behaviour comportement +croatian croates +croatian croate +maritime maritimes +maritime maritime +terry terry +virtual virtuel +virtual virtuels +virtual virtuelle +virtual virtual +virtual virtuelles +indoor intérieure +indoor intérieur +periods périodes +spiritual spirituelle +spiritual spirituel +spiritual spirituelles +croatia croatie +lions lions +archbishop archevêque +luis luis +merchant commerçant +merchant marchand +merchant négociant +azerbaijan azerbaïdjan +lots lots +contested contesté +contested contestées +contested contestée +editorial éditorial +editorial rédaction +initiative initiative +charlotte charlotte +pure pures +pure purs +pure pur +pure pure +borders bordures +borders bordure +borders frontières +persian persique +persian perse +persian perses +persian persan +marks marks +marks marques +armenian arménienne +armenian arménien +armenian arméniens +romantic romantisme +romantic romantiques +romantic romantique +replacing remplacer +replacing remplaçant +talent talents +talent talent +unlikely improbable +unlikely invraisemblable +unlikely improbables +panel panneau +panel panel +jump sauter +jump saute +jump jump +jump saut +animation animation +animation animations +agents agents +agents mandataires +employment emploi +employment emplois +trading négoce +trading trading +trading négociation +parker parker +statue statue +dated datés +dated datée +dated daté +wonder émerveillement +wonder merveille +wonder wonder +filed déposé +filed déposées +filed classé +provinces provinces +friday vendredi +jobs emploi +jobs emplois +cuba cuba +são são +são sao +scientist scientifique +schedule horaires +schedule horaire +schedule calendrier +waiting attente +waiting attendre +waiting attendant +familiar familières +familiar familière +familiar familier +familiar familiers +suspect suspecte +suspect suspects +suspect suspect +suspect suspectes +disagree désaccord +suggestions suggestions +turner turner +forming formant +forming formage +formally officiellement +formally formellement +locomotives locomotives +barcelona barcelone +barcelona barcelona +consistent cohérents +consistent cohérentes +consistent cohérente +consistent cohérent +recommended recommandés +recommended conseillé +recommended recommandée +recommended recommandé +recommended recommandées +desire désir +desire désirs +desire désirer +patient patiente +patient patients +patient patient +bulgaria bulgarie +vincent vincent +hear entendez +hear entendre +texts textes +belief croire +belief croyance +visitor visiteur +vessels navires +vessels vaisseaux +basically essentiellement +basically fondamentalement +continental continentale +continental continental +continental continentaux +hole hole +hole trou +fail échec +fail échouer +passage passage +sees voit +wedding mariage +wedding noces +wedding mariages +archaeological archéologique +archaeological archéologiques +layer couche +layer calque +designation désignation +designation dénomination +designation appellation +clan clan +revenue revenus +revenue revenu +revenue recettes +couples couples +suit costard +suit costume +soft douce +soft doux +soft douceur +soft douces +soft tendre +soft soft +weekend weekend +approval approbation +approval agrément +approval homologation +democrats démocrates +democrats démocrate +crimes crimes +collins collins +expatriates expatriés +horses chevaux +horses cheval +wear usure +supporters partisans +supporters supporters +supporters soutiens +cash argent +cash comptant +cash liquidités +dennis dennis +dennis denis +resource ressource +sculpture sculpture +sculpture sculptures +practical pratique +harrison harrison +pink rose +pink rosé +oliver oliver +oliver olivier +limits limite +limits limites +cooper cooper +illustrated illustrée +illustrated illustrées +illustrated illustré +illustrated illustrés +hell hell +hell enfer +statistical statistique +referenced référencés +referenced référencé +arbcom arbcom +wolf loup +wolf loups +wolf wolf +wolf louve +warriors warriors +warriors guerriers +incidents incidents +fresh frais +fresh fraiche +fresh fraîche +fresh fraîcheur +editions éditions +roots racines +roots racine +signature signature +clinical clinique +clinical cliniques +volumes volumes +worst pire +worst pires +adults adultes +adults adulte +contribute cotiser +contribute contribuer +necessarily forcément +necessarily nécessairement +immediate immédiates +immediate immédiat +immediate immédiats +immediate immédiate +immediate immédiatement +feeling feeling +feeling sensation +feeling sentiment +theories théories +essential essentiel +essential indispensable +essential essentielles +essential essentielle +essential essentiels +completion achèvement +conclusion conclusion +technologies technologies +strip strip +bound lié +praised loué +stayed resté +stayed séjourné +hull hull +hull coque +hull coques +diamond losange +diamond diamond +diamond diamant +diamond diamants +origins origine +origins origines +empty vides +empty vider +empty vide +eliminated éliminée +eliminated éliminés +eliminated éliminées +eliminated éliminé +valuable précieux +valuable précieuse +cite citer +cite cite +doubles doubles +branches branches +branches succursales +honors honneurs +brick brick +brick briques +brick brique +experiences expériences +beijing pékin +beijing beijing +tie cravate +tie nouer +tie cravates +lgbt lgbt +lgbt homosexualité +liberty liberty +liberty liberté +siege siege +siege siège +baptist baptiste +ron ron +hebrew hébreu +hebrew hébreux +hebrew hébraïque +affect affecter +affect affectent +decline refuser +decline déclin +decline décliner +decline baisse +coaching accompagnement +coaching coaching +coaching entraîneurs +alpha alpha +equipped équipée +equipped équipés +equipped équipées +equipped équipé +identical identique +identical identiques +submitted soumise +submitted soumises +submitted présenté +submitted soumis +enterprise enterprise +enterprise entreprise +touch toucher +touch touchez +touch touch +touch touche +transmission transmission +transmission transmissions +platforms plateformes +cave caverne +cave grotte +cave cave +filmed filmés +filmed filmé +filmed tourné +filmed filmées +filmed filmée +inch inch +inch pouce +inch centimètre +cool cool +bulgarian bulgare +bulgarian bulgares +liga liga +manhattan manhattan +destruction destructions +destruction anéantissement +destruction destruction +activist militant +activist militante +activist activiste +weapon arme +clay argileux +clay argile +clay clay +keyboards claviers +dangerous dangereux +dangerous dangereuse +dangerous dangereuses +viewed visionné +email email +email courriel +biology biologie +bold audacieuse +bold téméraire +bold audacieux +bold gras +bowling quilles +bowling bowling +compare comparez +compare compare +compare comparons +compare comparer +compare comparaison +treaties traités +affiliated affiliées +affiliated affilié +affiliated affiliée +affiliated affiliés +sock chaussette +assault agression +assault assaut +assault agressions +monthly mensuel +monthly mensuellement +monthly mensuels +monthly mensuelle +foster foster +cousin cousin +cousin cousine +urls url +hispanic hispaniques +hispanic hispanique +logic logique +logic logiques +craig craig +trivial insignifiant +trivial trivial +pioneer pionnier +pioneer pioneer +pioneer pionniers +pioneer pionnière +muslims musulmans +muslims musulman +lay lay +rated évalué +rated classé +rated notée +rated nominale +rated évalués +rated noté +absence absence +amsterdam amsterdam +publishers éditeurs +tribes tribus +percussion percussions +percussion percussion +runners coureurs +themes thèmes +#the #le +#the #the +#the #la +#the #les +benefits avantages +benefits bénéfices +benefits prestations +guards gardes +guards gardiens +flows flux +attributed attribuées +attributed attribué +attributed attribués +attributed attribuée +athens athènes +herbert herbert +celebrated célébré +celebrated célébrée +celebrated fêté +sponsored parrainé +sponsored sponsorisé +sponsored commandité +sponsored sponsorisée +raf raf +delaware delaware +neil neil +pole pôle +pole poteau +pole pole +pole polonais +ref réf +ref ref +ref arbitre +historically historiquement +tail queue +tail filature +tail tail +tours circuits +tours tours +tours tournées +tours visites +stable stabilité +stable écurie +stable stables +stable stable +decides décide +vessel récipient +vessel navire +vessel vaisseau +identification identification +delta delta +writes écrit +mediterranean méditerranéen +mediterranean méditerranéenne +mediterranean méditerranée +volunteers volontaires +volunteers bénévole +volunteers bénévoles +reply réponse +reply réplique +reply répondez +reply répondre +reply reponse +stuart stuart +marvel émerveillement +marvel merveille +marvel marvel +luke luke +luke luc +grave tombe +grave grave +odd etrange +odd impair +odd étrange +odd bizarre +odd odd +hearing audition +hearing audience +hearing ouïe +hearing entendre +uss uss +mall mall +penalty pénalités +penalty peine +penalty pénalité +penalty sanction +solutions solutions +secure sécurisée +secure sécurisés +secure sécurisé +hugh hugues +hugh hugh +steven stéphane +steven steven +sole sole +sole semelle +architects architecte +architects architectes +characteristics caractéristiques +falling tomber +falling chute +falling tombant +spin vrille +spin spin +spin tourner +spin tourne +clinton clinton +villa villa +select choisissez +select choisir +select sélection +select sélectionnez +select sélectionner +metric métrique +metric métriques +criticized critiquée +criticized critiqué +criticized critiqués +surviving survivant +surviving survivre +roberts roberts +standings classements +biological biologiques +biological biologique +lloyd lloyd +munich munich +belongs appartient +adelaide adélaïde +adelaide adelaide +belong appartiennent +belong appartenir +harold harold +norfolk norfolk +butler butler +butler majordome +coi coi +rival rival +rival rivale +rival rivaux +acoustic acoustiques +acoustic acoustique +posts postes +posts poteaux +posts publications +adaptation adaptation +greg greg +reporter journaliste +reporter reporter +url url +absolutely absolument +nobody personne +scholarship bourse +vast vastes +vast vaste +exit quitter +exit sortir +exit sortie +inquiry enquête +dual double +dual dual +belt courroie +belt ceinture +belt belt +noticed remarquée +noticed remarqua +noticed remarqué +patent brevets +patent brevet +mathematical mathématique +mathematical mathématiques +rarely rarement +submission soumission +demographics démographiques +demographics démographie +crowd foule +rick rick +governments gouvernements +bonus bonus +bonus prime +bonus bonification +tourist touriste +mystery mystérieux +mystery mystère +mystery mystérieuse +mystery mystères +click cliquer +click cliquez +click cliquant +walking marche +walking marcher +nevertheless néanmoins +voters électeurs +voters votants +rifle fusil +rifle carabine +component composante +component composant +civilian civil +civilian civils +civilian civile +civilian civiles +partial partiel +partial partielles +partial partiellement +partial partiels +partial partielle +encouraged encouragées +encouraged encouragée +encouraged encouragés +encouraged encouragé +birthday anniversaire +birthday anniversaires +eddie eddie +eddie eddy +christians chrétiens +denver denver +petersburg pétersbourg +petersburg petersbourg +researchers chercheurs +partly partiellement +photographer photographe +runtime runtime +runtime exécutable +jon jon +obama obama +seemed sembla +seemed semblé +seemed semblaient +seemed semblait +clock horloge +clock horloges +violin violon +highways routes +highways autoroutes +holiday vacances +distinction distinction +distinction distinguer +distinction distinctions +artwork oeuvres +artwork artwork +makeup maquillage +makeup makeup +makeup maquiller +catherine catherine +font polices +font font +font police +font fontes +farmers fermiers +farmers agriculteurs +occasions occasions +photograph photographie +photograph photographier +struggle lutte +timestamp timestamp +yale yale +options options +pen stylo +pen pen +pen plume +pen stylos +procedure procédure +jacob jacob +convicted condamnée +convicted condamné +convicted condamnés +touring tournées +touring tournée +transition transition +anglo anglo +legacy héritage +legacy legacy +legacy legs +denied refusées +denied refusé +denied refusée +relationships relations +ottawa ottawa +derby derby +surrounded entourés +surrounded encerclé +surrounded encerclés +surrounded entourée +surrounded entouré +libraries bibliothèques +competing concurrentes +competing rivaliser +speakers enceintes +speakers orateurs +speakers conférenciers +speakers intervenants +grades grades +hudson hudson +administrators administrateurs +sacred sacrées +sacred sacrée +sacred sacré +sacred sacrés +signing signer +signing signant +signing signature +rob rob +rob cambrioler +rob braquer +citizen citoyenne +citizen citoyen +dogs chiens +dogs chien +argue argumenter +believes croit +annually annuellement +cardinal cardinal +nepal népal +intersection croisement +intersection intersection +intersection carrefour +reveals révèle +disputes contentieux +disputes litiges +disputes conflits +disputes différends +beam poutre +beam rayon +beam faisceau +overseas outremer +perry perry +nickname surnom +nickname pseudo +nickname pseudonyme +syria syrienne +syria syrie +wells puits +wells wells +contributing contribuant +contributing contribuer +ultimate ultimes +ultimate ultimate +ultimate ultime +ranks grades +ranks rangs +danny danny +danny dany +retail détail +favorite préféré +favorite préférée +favorite favori +favorite favoris +favorite préférés +vermont vermont +begun commencé +begun commencée +download télécharge +download téléchargements +download télécharger +download téléchargement +trusted confiance +appointment nomination +ballet ballet +jefferson jefferson +anywhere partout +sand sables +sand sable +angle angle +sessions séances +sessions sessions +recreation loisirs +recreation récréation +wearing portant +kenya kenya +accessible accessible +accessible accessibles +ralph ralph +thread filetage +thread thread +thread fil +disruptive perturbateur +disruptive perturbant +disruptive perturbateurs +spend dépenser +ninth ninth +ninth neuvième +arrest arrestation +arrest arrestations +choir chœur +choir chœurs +choir chorale +choir choeur +mines mines +injuries blessures +injuries blessés +injuries lésions +rounds rondes +rounds ronds +competitive compétitif +competitive concurrentiel +competitive compétition +competitive concurrentielle +competitive compétitifs +opportunities possibilités +opportunities occasions +opportunities opportunités +meetings rencontres +meetings réunions +commented commentées +commented commenté +commented commentés +wang wang +woods woods +exercise exercices +exercise exercice +jacques jacques +objective objectif +demolished démolis +demolished démoli +demolished démolie +preferred préféré +preferred préférée +preferred privilégiées +preferred préférence +preferred préférés +pedro pedro +robot robots +robot robot +robot robotique +venezuela venezuela +segment segment +studying étudier +edwards edwards +aim aim +aim viser +dancing danse +dancing danses +dancing danser +dancing dansant +eagles eagles +eagles aigles +demonstrated démontré +demonstrated démontrée +demonstrated montré +tribute hommage +tribute tribut +tribute hommages +continuous continue +continuous ininterrompu +continuous continu +continuous continus +encourage encourager +spider spider +spider araignée +acted agi +convinced persuadé +convinced convaincue +convinced convaincu +convinced convaincus +heroes héros +heroes heroes +describing décrivant +rocks roches +rocks rochers +rocks cailloux +rocks pierres +bed lit +gap fossé +gap écart +gap gap +reflect reflètent +reflect refléter +mars mars +participating participer +participating participantes +participating participant +cooperation coopération +cooperation coopérations +obtain obtenir +gothic gothique +gothic gothiques +protest protestation +protest protestations +protest contestation +protest protester +protest manifestation +hunting chasser +hunting chasse +rfa rfa +frequent fréquentes +frequent fréquent +frequent fréquents +frequent fréquente +conversion conversion +conversion reconversion +stress contrainte +stress stress +stress stressé +manufacturers constructeurs +manufacturers fabricants +checkuser checkuser +voiced exprimé +traditionally traditionnellement +jose jose +jose josé +adventures aventures +tiger tiger +tiger tigresse +tiger tigres +tiger tigre +totally carrément +totally complètement +totally totalement +concentration concentration +sing chantons +sing chanter +sing chante +rocket roquettes +rocket fusée +rocket fusées +rocket rocket +rocket roquette +electricity electricité +electricity électricité +shadow shadow +shadow ombre +shadow ombres +boxing boxe +senators sénateurs +doc doc +doc toubib +stanford stanford +machines machines +vegas vegas +saved enregistré +saved enregistrée +saved sauvés +saved sauvé +saved sauvegardé +saved enregistrés +jury juré +jury jury +jury jurés +jury jurys +calendar calendriers +calendar agenda +calendar calendrier +noble noble +noble nobles +noble noblesse +tommy tommy +guilty coupable +guilty coupables +leo léon +leo léo +leo leo +handle manipuler +handle poignée +extinct éteinte +extinct éteint +extinct éteints +responded répondu +shares partage +shares parts +shares actions +shares partages +scotia scotia +manufacturer constructeur +manufacturer manufacturier +manufacturer fabricant +tales contes +tales récits +implementation implémentation +truck camionnette +truck fourgon +truck camion +spelling orthographe +item élément +load charger +load chargement +load charge +customers clients +customers clientèle +adds ajouts +adds ajoute +spaces espaces +cap casquette +cap pac +cap cap +cap capuchon +orphaned orphelin +orphaned orpheline +orphaned orphelines +orphaned orphelins +ferry ferry +ferry traversier +ferry traversiers +prefer préfère +prefer préférer +prefer préférez +prefer préfèrent +push push +push poussez +push pousser +push pousse +lie mentir +lie mensonge +lie mensonges +berkeley berkeley +lebanon liban +madison madison +throne trône +attracted attiré +attracted attirés +attracted attirée +attracted attirées +lion lion +lion lionne +retrieved récupérés +retrieved récupéré +retrieved récupérées +retrieved récupérée +manor manor +promoting promouvoir +saudi saoudien +serial serial +serial série +abroad etranger +rogers rogers +lights lumières +lights lumière +lights luminaires +gauge gabarit +gauge jauge +gauge écartement +concerts concerts +elder ancien +elder aîné +renaissance renaissance +uniform uniforme +uniform uniformes +chase pourchasser +chase chase +aka alias +aka aka +computers informatique +computers ordinateurs +brisbane brisbane +susan susan +susan sylvie +raymond raymond +flower fleurs +flower fleur +col col +thai thaï +thai thaïlandaise +thai thaïlandais +disaster sinistre +disaster désastre +disaster catastrophe +disaster catastrophes +survive survivent +survive survivre +clothing habillement +clothing vêtements +clothing vêtement +murphy murphy +sharp tranchant +sharp pointu +sharp sharp +explains explique +yugoslavia yougoslave +yugoslavia yougoslavie +buddhist bouddhisme +buddhist bouddhiste +buddhist bouddhistes +publicly publiquement +meat viande +meat viandes +literally littéralement +spam spam +spam indésirable +spam spams +telephone telephone +telephone téléphone +moral morale +moral moral +moral moraux +moral moralité +sung chanté +sung sung +sung chantée +partially partiellement +lawyers avocats +lawyers juristes +citing citant +interviews entretiens +interviews entrevues +interviews interviews +brunswick brunswick +radar radar +radar radars +spending dépenser +spending dépenses +spending dépense +grove grove +grove bosquet +tea thés +tea tea +tea thé +elite élite +elite élitiste +elite élites +elite elite +bright brillant +bright bright +bright lumineux +improving améliorer +sierra sierra +heaven paradis +heaven heaven +heaven cieux +heaven ciel +athlete athlètes +athlete athlète +aspect aspect +answers réponses +ted ted +consumer consommateurs +consumer consommateur +funded financé +funded financées +funded financée +funded financés +exclusive exclusives +exclusive exclusive +exclusive exclusivité +exclusive exclusifs +exclusive exclusif +ibn ibn +manuel manuel +allies alliés +reviewer réviseur +reviewer examinateur +missile missiles +missile missile +mechanism mécanisme +helen hélène +helen helen +withdrawn retirée +withdrawn retirées +withdrawn retiré +intention intention +mini mini +casualties pertes +casualties victimes +diseases maladies +rhythm rythmique +rhythm rythme +pat pat +catch attrape +catch captures +catch attraper +poll sondages +poll sondage +poll scrutin +deck pont +newcastle newcastle +antarctic antarctique +leeds leeds +lasted duré +ranges gammes +ordinary ordinaire +ordinary ordinaires +insects insectes +insects insecte +suffering souffrance +suffering souffrir +suffering souffrant +suffering souffrances +flash instantané +flash flash +flash éclair +flash flashs +worship adoration +worship culte +boundaries frontières +boundaries limites +blind aveugle +blind blind +blind aveugles +pakistani pakistanaises +pakistani pakistanaise +pakistani pakistanais +assuming supposer +assuming supposant +interstate interstate +arrangement arrangement +globe globe +honours distinctions +honours honneurs +gross dégoûtant +gross gross +gross brut +gross brutes +gross brute +gilbert gilbert +applies applique +gradually progressivement +gradually graduellement +managing gérer +experiment expérimenter +experiment expérience +experiment expérimentation +radical radical +radical radicaux +radical radicale +gov gov +legs cuisses +legs jambes +legs pattes +opponent opposant +opponent adversaire +diameter diamètre +diameter diamètres +supplies approvisionnement +supplies fournitures +pitch lancer +pitch pitch +utility utilitaire +utility utilité +cleanup nettoyage +opponents adversaires +opponents opposants +regime régime +revised révisée +revised révisées +revised révisé +genera genres +diplomatic diplomates +diplomatic diplomatique +diplomatic diplomate +diplomatic diplomatiques +germans allemands +seal phoque +seal sceau +seal phoques +gregory gregory +gregory grégoire +gregory grégory +corresponding correspondante +corresponding correspondant +concepts notions +concepts concepts +sword épée +sword glaive +sword sabre +purple violette +purple pourpre +purple violet +virus virus +populations populations +bull bull +bull taureau +bull taureaux +drummer batteur +presents présente +holland hollande +bias biais +bias préjugé +merger fusion +remote distants +remote reculées +remote lointain +remote distante +sean sean +messages messages +rebellion révolte +rebellion rébellion +premiere première +premiere premiere +physician médecin +physician physicien +victim victime +con con +cloud nuage +cloud cloud +cloud nuages +angels anges +angels angels +noise bruits +noise bruit +heading rubrique +duo duo +beer bières +beer biere +beer bière +palestinian palestinienne +palestinian palestinien +palestinian palestiniens +us$ usd +us$ us$ +us$ $us +copper cuivre +jurisdiction compétence +jurisdiction juridiction +improvements amélioration +improvements améliorations +ski ski +ski skier +peaked culminé +hms hms +loop boucles +loop boucle +renaming renommer +drum batterie +drum tambour +drum fût +dramatic spectaculaire +dramatic dramatique +dramatic dramatiques +saskatchewan saskatchewan +talks pourparlers +earthquake tremblement +earthquake séismes +earthquake séisme +rhode rhode +hat casquette +hat hat +hat chapeau +requirement exigence +den tanière +den den +tanks réservoirs +tanks chars +tanks citernes +tanks cuves +presidents présidents +min mn +min min +defending défendre +alcohol alcools +alcohol alcool +dominated dominée +dominated dominés +dominated dominé +dominated dominées +sang sang +sang chanté +sang chantait +eat manger +eat mangez +eat mange +graphics graphiques +graphics graphique +graphics graphismes +graphics infographie +graphics graphisme +constituencies circonscriptions +asp asp +coffee café +chancellor chancelier +chancellor chancelière +destroy détruisez +destroy anéantir +destroy détruire +tons tonnes +cruz cruz +warsaw varsovie +exclusively exclusivement +connections raccordements +connections connexions +rush ruée +rush rush +heights hauteurs +playstation playstation +outcome aboutissement +apartment appartement +cardinals cardinaux +fill remplissage +fill remplissez +fill remplir +recipient destinataire +recipient receveur +recipient bénéficiaire +correctly correctement +traditions traditions +fundamental fondamentale +fundamental fondamental +fundamental fondamentaux +thin maigre +thin mince +thin minces +chan chan +resolved résolus +resolved résolues +resolved résolu +resolved résolue +mario mario +departments départements +dame dame +shield bouclier +shield shield +fighters boxeurs +fighters combattants +ivan ivan +writings écritures +writings écrits +bosnia bosnie +sentenced condamnée +sentenced condamné +sentenced condamnés +violent violentes +violent violent +violent violents +violent violente +caption légende +harbour port +harbour harbour +margin marge +margin marges +auckland auckland +postal postaux +postal postal +postal postale +pirates pirates +collective collective +collective collectifs +collective collectif +diesel gazole +diesel diesel +liberation liberation +liberation libération +confederate confédérés +confederate confédéré +devil démon +devil devil +devil diable +activists militants +activists activistes +sultan sultan +rider rider +rider motard +rider cavalier +amazon amazones +amazon amazonie +amazon amazon +amazon amazone +florence florence +marc marc +arnold arnold +shah shah +blogspot blogspot +reduction réduction +contents sommaire +contents contenus +contents contenu +genetic génétique +genetic génétiques +somerset somerset +locally localement +milk lait +romance romantisme +romance idylle +romance romance +romance romantique +intellectual intellectuelle +intellectual intellectuel +intellectual intellectuels +latino latino +latino latinos +failing échouer +mason maçon +mason mason +pete pete +advisory consultatif +arbitration arbitrage +arbitration arbitrages +interface interface +hitler hitler +default défaut +accessed accédé +accessed consulté +sheffield sheffield +departure départ +departure depart +departure départs +hindi hindi +anglican anglicane +suggesting suggérer +suggesting suggérant +mistake erreur +residing résidant +embassy ambassade +embassy ambassades +murdered assassiné +murdered assassinés +murdered tué +murdered assassinée +sox sox +sleep sommeil +sleep dormir +sleep dors +suspended suspendu +suspended suspendues +suspended suspendue +suspended suspendus +sum somme +sum sum +mythology mythologie +bengal bengale +confusion confusion +confusion désarroi +oscar oscar +therapy thérapie +therapy thérapeutiques +therapy thérapies +occasion occasion +exposed exposées +exposed exposés +exposed exposé +assisted aidé +assisted assistée +assisted assisté +possession possession +defend défendons +defend défendre +defend défendez +devoted dévouée +devoted dévoués +devoted dévoué +devoted consacré +graphic graphiques +graphic graphique +milwaukee milwaukee +informed informée +informed informé +informed informés +anonymous anonyme +reverse inverse +reverse inverser +reverse inversé +soap savon +soap soap +soap savons +territorial territoriale +territorial territoriales +territorial territorial +lisa lisa +paulo paulo +northwestern northwestern +playoffs playoffs +playoffs éliminatoires +boss boss +boss patron +boss patronne +nasa nasa +quoted cité +quoted citée +quoted cotés +byzantine byzantin +byzantine byzantine +idaho idaho +poster poster +poster affiches +poster affiche +geographic géographique +geographic géographiques +rebounds rebonds +congo congolais +congo congo +venture venture +worse pire +hoax canular +restricted limité +restricted restreint +doors portes +naming nommer +situations situations +instructions consignes +instructions instructions +sullivan sullivan +tables tables +tables tableaux +leaf feuille +leaf leaf +leaf feuilles +shoot shoot +shoot tirer +shoot tire +shoot tirez +substitute remplaçant +substitute suppléant +substitute substituer +substitute remplaçants +restaurants restaurants +restaurants gastronomie +contributor collaborateur +contributor contributeur +contributor contributeurs +errors fautes +errors erreurs +enjoyed apprécié +framework cadre +rocky rocheux +rocky rocky +kerala kerala +shakespeare shakespeare +quantum quantum +quantum quantique +immigration immigration +mirror miroir +mirror miroirs +certified certifiées +certified certifiée +certified certifié +certified certifiés +assets actif +assets actifs +npov npov +potentially potentiellement +presentation présentation +cotton coton +sitting assise +sitting assis +tournaments tournois +syndrome syndrome +checked vérifiés +checked cochée +checked vérifiées +checked vérifié +checked vérifiée +checked coché +forty forty +forty quarante +sourcing approvisionnement +journalism journalisme +journalism journalistique +unsuccessful infructueuses +towers tours +conductor conducteur +hospitals hôpital +hospitals hôpitaux +bone osseuse +bone osseux +bone os +bone bone +essex essex +rebuilt reconstruits +rebuilt reconstruite +rebuilt reconstruit +wellington wellington +ideal idéale +ideal ideal +ideal idéal +raw cru +raw premières +raw brut +raw crue +raw raw +raw crus +sharing partage +sharing partager +labels labels +labels étiquettes +labels libellés +leonard léonard +leonard leonard +watson watson +governors gouverneurs +posting poster +harvey harvey +bases bases +bases fondements +hello bonjour +hello coucou +hello hello +hello salut +hello bjr +rabbi rabbi +rabbi rabbin +rabbi rabin +hardware quincaillerie +hardware matériel +hardware matériels +ensemble ensemble +monster monstrueuse +monster monstrueux +monster monster +monster monstre +pitcher carafe +pitcher lanceur +pitcher cruche +pitcher pichet +emphasis emphase +recovery rétablissement +recovery recouvrement +recovery récupération +recovery guérison +respond répondez +aaron aaron +lesser moindre +qualification qualifications +qualification qualification +organic bio +organic biologiques +organic biologique +organic organiques +organic organique +exposure exposition +palestine palestine +palestine palestinienne +palestine palestinien +thoughts réflexions +thoughts pensées +drafted rédigée +drafted rédigé +maurice maurice +immigrants immigrants +immigrants immigrés +variant variant +variant variante +lap lap +lap giron +legitimate légitimes +legitimate légitime +autonomous autonomes +autonomous autonomie +autonomous autonome +wallace wallace +succession successions +succession succession +throw jeter +monday lundi +reserves réserve +reserves réserves +donated donné +donated donnés +increases hausses +increases augmentations +increases augmente +kid gamin +delivery livraison +delivery livraisons +delivery accouchement +joan joan +fifty cinquante +fifty fifty +slave slave +slave esclave +slave esclaves +feedback commentaires +feedback rétroaction +columbus colomb +columbus columbus +stones pierres +manage gérer +cgi cgi +initiated initiée +initiated initiées +initiated initiés +initiated initié +favour faveur +printing impression +printing imprimer +printing imprimeries +printing imprimerie +variable variable +variable variables +theology théologique +theology théologie +todd todd +parameters paramètres +traveled voyageait +traveled voyagé +canton canton +han han +reed roseaux +reed reed +celtic celtique +celtic celtic +characteristic caractéristique +commanded commandé +commanded commandée +searching recherchant +inappropriate inapproprié +inappropriate inappropriée +inappropriate inconvenant +inappropriate inappropriés +inappropriate inadéquat +switch interrupteur +switch basculer +switch commutateur +ties cravates +tube tube +otto otto +debt endettement +debt dette +debt dettes +outdoor extérieurs +outdoor extérieur +outdoor extérieure +navigation navigation +eligible admissible +eligible éligible +eligible éligibles +eligible admissibles +experts experts +expensive coûteux +expensive chères +tier tier +gospel évangile +gospel évangélique +gospel evangile +newton newton +essays essais +shanghai shanghai +conventional conventionnelle +conventional conventionnel +conventional conventionnels +campaigns campagnes +feelings sentiments +bath bains +bath baignoire +bath bain +bath bath +venice venise +#aaa #aaa +cats chats +variations variations +variations variantes +emerged émergé +socks chaussettes +socks chaussette +connecting connecter +connecting raccordement +connecting reliant +connecting connexion +flood inonder +flood déluge +flood inondation +flood inondations +flood crue +documented documenté +documented documentés +documented documentées +documented documentée +custom personnalisé +custom personnalisée +custom personnalisés +custom coutume +touchdown touchdown +touchdown touché +profession métier +profession profession +layout disposition +layout agencement +academics universitaires +settlers colons +merging fusionner +sony sony +competitors concurrents +competitors compétiteurs +phillips philips +phillips phillips +grass pelouse +grass graminées +grass gazon +grass herbe +reservoir réservoir +artificial artificiels +artificial artificiel +artificial artificielle +artificial artificielles +novelist romancier +tip pourboire +tip pointe +tip astuce +prague prague +abu abu +abu abou +faces faces +faces visages +guitars guitares +aspx aspx +laura laura +laura laure +fellows boursiers +internationally internationalement +attacking attaquant +attacking attaquer +johann johann +dreams reves +dreams rêve +dreams dreams +dreams rêves +hughes hughes +hughes hugues +suburb faubourg +suburb banlieue +understood compris +specialized spécialisé +specialized spécialisée +specialized spécialisées +specialized spécialisés +warned prévenu +warned prévenus +warned averti +pearl perle +pearl nacre +pearl pearl +pearl perles +chorus chœurs +chorus refrain +chorus choeur +chorus chœur +dependent dépendant +dependent dépendantes +dependent dépendante +dependent dépendants +restrictions restrictions +restrictions restriction +killer tueur +killer killer +killer meurtrier +oakland oakland +trio trio +influences influences +blocking bloquer +blocking bloquant +blocking blocage +mtv mtv +cattle bovins +cattle bétail +gear engrenage +gear engins +gabriel gabriel +traded échangés +traded négociés +traded négociées +traded échangé +skating patinage +fifteen fifteen +fifteen quinze +fifteen quinzaine +palm palme +palm palm +palm paume +palm palmier +wikis wikis +tale récit +tale conte +demonstrate démontrer +vary varient +vary varie +liquid liquide +liquid liquides +cycling vélo +cycling cyclisme +princeton princeton +respective respectifs +voices voix +friedrich friedrich +friedrich frédéric +jet jet +horn trompette +horn corne +horn cor +horn avertisseur +horn horn +erected érigée +erected érigés +erected érigées +erected érigé +burning brûlant +burning brûlure +burning gravure +burning brûler +worker travailleur +worker travailleuse +worker ouvrier +atmosphere atmosphère +atmosphere ambiance +characterized caractérisée +characterized caractérisé +characterized caractérisés +syrian syrien +syrian syrienne +syrian syriens +java java +monitor moniteurs +monitor surveiller +monitor moniteur +graduating diplômé +columns poteaux +columns colonnes +repair réparer +repair réparateur +repair réparation +repair réparations +bin bin +bin poubelle +stick stick +stick bâton +dollars dollars +organised organisé +organised organisés +organised organisée +organised organisées +parameter paramètre +truly vraiment +truly réellement +truly véritablement +resolve résoudre +resolve détermination +buenos buenos +parade défilé +parade parade +backed adossés +awareness conscience +awareness notoriété +depends dépend +depends dépendra +define définit +define définir +define définis +spencer spencer +republicans républicains +conspiracy complot +conspiracy complots +conspiracy conspiration +dies meurt +dies décède +dies meurent +clarke clarke +rough rude +rough bruts +engage engager +engage engagez +pine pine +pine pin +equation équation +feels ressent +democrat démocrates +democrat démocrate +cutting couper +cutting découpage +cutting coupage +cutting découpe +cutting coupe +button button +button boutons +button bouton +brands marques +queens reines +queens queens +abraham abraham +neck nuque +neck cou +neck encolure +forever forever +drink boisson +drink bois +drink boire +drink verre +drink boissons +sheriff shériff +sheriff sheriff +sheriff shérif +miguel miguel +aires aires +montgomery montgomery +vanity coiffeuse +vanity vaniteux +vanity vanité +gift cadeau +gift cadeaux +riders coureurs +riders cavaliers +functional fonctionnels +functional fonctionnelle +functional fonctionnel +crossed traversé +diverse varié +diverse diversifié +diverse diverses +numbered numéroté +numbered numérotées +numbered numérotés +quotes cotation +quotes citations +quotes devis +quotes cotes +quotes soumissions +slowly lentement +slowly doucement +attitude attitude +mouse souris +justin justin +protests protestations +gods dieux +amounts montants +variation variations +variation variante +variation variation +smart intelligente +smart malin +smart intelligent +smart smart +smart futé +prices tarifs +prices prix +prayer prières +prayer prière +prayer prier +terrorism terrorisme +beta beta +beta bêta +beta béta +durham durham +counts comtes +iraqi irakiens +iraqi irakien +iraqi irakienne +detective inspectrice +detective inspecteur +detective détective +josh josh +linking reliant +compositions compositions +oval ovale +filming tournages +filming tournage +filming filmer +perfectly parfaitement +indianapolis indianapolis +funeral funérailles +funeral obsèques +funeral funéraire +funeral enterrement +recovered récupérées +recovered récupéré +recovered retrouvé +recovered récupérée +recovered récupérés +farmer agriculteur +farmer paysan +farmer fermier +protestant protestants +protestant protestant +protestant protestante +cameron cameron +unclear imprécis +indonesian indonésiens +indonesian indonésien +indonesian indonésienne +mixing mélange +mixing mixage +mumbai bombay +mumbai mumbai +nashville nashville +danger danger +rally rally +rally rallyes +rally rassemblement +rally rallye +narrative récit +camps camps +camps campements +surprise surprise +surprise surprenant +surprise surpris +surprise surprendre +surprise surprises +manufactured fabriqués +manufactured fabriqué +deployed déployé +deployed déployées +deployed déployés +deployed déployée +kate kate +molecular moléculaire +molecular moléculaires +unnecessary inutile +unnecessary superflu +unnecessary inutiles +isle isle +theorem théorème +colonies colonies +cyprus chypre +wake veillée +wake wake +wake réveiller +wake sillage +brings apporte +winds vents +magnetic magnétiques +magnetic magnétique +magnetic magnétisme +conversation conversation +sussex sussex +gates portails +gates vannes +gates gates +gates portes +ram ram +ram bélier +plastic plastique +plastic plastiques +electronics electronique +electronics électronique +restore restaurer +restore restaure +restore rétablir +stockholm stockholm +inn inn +buses bus +buses autobus +buses autocars +connect connecter +connect connexion +connect connectez +wmflabs wmflabs +guests invités +guests hôtes +radiation rayonnement +radiation radiations +radiation rayonnements +receives reçoit +lancashire lancashire +playoff playoff +playoff playoffs +playoff éliminatoires +cork bouchon +cork liège +cork cork +generals généraux +intermediate intermédiaire +intermediate intermédiaires +verifiable vérifiable +verifiable vérifiables +cheers tchin +cheers santé +cheers acclamations +filipino philippin +filipino philippins +filipino philippine +oriented orienté +oriented orientée +hamburg hambourg +hamburg hamburg +creates crée +orbit orbite +orbit orbites +massacre massacrer +massacre massacre +massacre massacres +dialogue dialogue +dialogue dialogues +dialogue dialoguer +illness maladie +dress robe +codes codes +dawn aube +dawn dawn +dawn aurore +isolated isolées +isolated isolés +isolated isolée +isolated isolé +nancy nancy +violations violation +violations infractions +violations violations +perth perth +tenure titularisation +ladies mesdemoiselles +ladies mesdames +ladies dames +autumn automne +ratings cotes +ratings appréciations +ratings évaluations +incorrect incorrect +incorrect inexacte +incorrect incorrecte +incorrect erroné +scout scout +scout éclaireur +difficulty difficulté +difficulty difficultés +pupils élèves +wealth richesses +wealth richesse +hart hart +allegations allégations +regulation réglementation +regulation règlement +regulation régulation +regulation règlementation +watching regardant +watching regarder +lodge lodge +eggs œufs +eggs oeufs +disputed contesté +disputed disputées +disputed contestées +disputed contestée +citizenship nationalité +citizenship citoyenneté +specialist spécialiste +tasks tâches +intent intention +intent intentions +instruction instruction +ceased cessé +pride pride +pride orgueil +pride fierté +banner bannières +banner banderole +banner banner +banner bannière +friendship amitié +friendship amitiés +panama panama +panama panamá +corruption corruption +sunk coulés +sunk coulé +harm harm +ernest ernest +pilots pilotes +pursue poursuivre +tape ruban +tape cassette +tape bande +emigrants émigrants +emigrants émigrés +cancelled annulée +cancelled annulé +cancelled annulés +revenge revanche +revenge vengeance +revenge venger +revision révisions +revision révision +dominant dominante +dominant dominant +fee honoraires +fee redevance +computing informatique +examination examen +chen chen +matrix matrice +matrix matrix +das das +biographical biographiques +biographical biographique +kiss baiser +kiss kiss +kiss bisou +valign valign +nationalist nationaliste +nationalist nationalistes +luck chance +crosses croix +heavyweight heavyweight +heavyweight lourd +bid bid +bid enchère +appreciate apprécier +appreciate apprécie +enemies ennemies +enemies ennemis +mercury mercury +mercury mercure +interactive interactivité +interactive interactif +interactive interactives +interactive interactive +interactive interactifs +math maths +math mathématique +math mathématiques +preserve conserver +preserve préserver +nobel nobel +grande grande +structural structurelle +structural structurel +structural structurels +marry marier +marry épouser +airports aéroports +veterans vétérans +axis axes +axis axe +execution exécution +cult secte +cult culte +cult cultes +reducing réduire +reducing réducteur +reducing réducteurs +colin colin +chester chester +ticket billet +ticket ticket +belonging appartenance +belonging appartenant +entity entité +judicial judiciaire +explicitly explicitement +explicitly expressément +bombing bombardement +bombing bombardements +bombing attentat +recognised reconnu +recognised reconnues +recognised reconnue +recognised reconnus +applicable applicable +applicable applicables +founders fondateurs +fitted équipée +fitted équipé +wilhelm wilhelm +suddenly subitement +suddenly soudainement +suddenly soudain +parking stationnement +parking parking +absolute absolue +absolute absolu +françois françois +locomotive locomotive +locomotive locomotives +preparation préparation +nintendo nintendo +declaration déclaration +presumably vraisemblablement +burial enfouissement +burial inhumation +burial enterrement +governing régissant +governing gouverner +jamaica jamaïque +knowing sachant +knowing connaissant +vladimir vladimir +beating battant +beating battre +avg avg +methodist méthodiste +utf utf +challenges défis +kenneth kenneth +evolved évolué +celebration célébrations +celebration célébration +discipline discipline +discipline discipliné +bearing portant +bearing roulements +belonged appartenait +belonged appartenaient +belonged appartenu +fauna faune +manuscript manuscrit +manuscript manuscrits +experiments expériences +experiments expérimentations +chiefs chefs +compound composé +tampa tampa +arabia arabie +arabia saoudite +associations associations +targets cibles +alien étranger +alien alien +alien extraterrestre +depicted dépeint +depicted représenté +sergeant sergent +sergeant adjudant +diffs diffs +subsidiary filiale +subsidiary subsidiaires +thirteen treize +thirteen thirteen +thick épaisse +thick épais +thick épaisses +extend étendre +extend prolonger +dismissed congédié +dismissed licencié +dismissed rejeté +neo neo +neo néo +wire fils +wire fil +phd doctorat +phd doctorats +phd doctorants +measured mesurés +measured mesuré +measured mesurée +measured mesurées +fat grasse +fat gros +fat gras +fat graisses +fat graisse +visits visites +linux linux +teach enseigner +flights vols +verse verset +verse couplet +bennett bennett +bennett bennet +warm chaud +warm chaleureux +warm chaleureuses +warm chaude +dynamic dynamisme +dynamic dynamic +dynamic dynamiques +dynamic dynamique +shaw shaw +breaks ruptures +breaks casse +breaks pauses +monuments monuments +lying mentir +lying mensonge +lying menteur +lords lords +lords seigneurs +michel michel +treat traitez +treat traiter +raid raid +raid raids +congregation congrégation +temperatures températures +temperatures température +testament testament +drinking boire +drinking boisson +drinking potable +companion compagnon +companion compagne +manila manille +km² km² +punjab pendjab +imagine imaginez +imagine imagines +imagine imaginons +imagine imaginer +imagine imagine +consideration considération +veteran vétéran +doctors docteurs +doctors médecins +eldest aîné +ruler règle +ruler dirigeant +ruler souverain +wise sage +wise wise +shipping livraison +shipping expédition +shipping envoi +afc afc +worthy dignes +worthy digne +registration inscription +registration enregistrement +registration immatriculation +directory annuaire +directory annuaires +directory répertoire +wyoming wyoming +manitoba manitoba +vietnamese vietnamiens +vietnamese vietnamien +vietnamese vietnamienne +vietnamese vietnamiennes +ronald ronald +cuban cubain +cuban cubaine +cuban cubains +cuban cubaines +burns brûlure +burns burns +burns brûlures +burns brûlés +justify justifier +justify justifie +justify justifient +divine divine +divine divin +divine divins +suppose suppose +suppose supposer +suppose supposez +suppose supposons +fate fatalité +fate destin +rovers rovers +cole cole +oral orale +oral buccale +oral oral +oral oraux +trans trans +boards planches +bryan bryan +santiago santiago +episcopal épiscopale +terrorist terroriste +terrorist terroristes +okay okay +okay ok +waves ondes +waves vagues +invented inventés +invented inventée +invented inventé +landed atterri +landed débarqué +landed débarqués +sandy sable +sandy sandy +acres hectares +acres acres +paint peinture +paint peindre +actively activement +indication indication +stops arrêts +excellence excellence +integration intégration +bibliography bibliographie +nonsense bêtises +nonsense absurde +nonsense absurdité +nonsense sottises +marathon marathon +beliefs croyances +beliefs croyance +redundant redondant +redundant superflu +freestyle freestyle +freestyle acrobatique +aerial antenne +aerial aérien +aerial aérienne +preservation préservation +preservation conservation +altitude altitude +freely librement +simultaneously simultanément +simultaneously simultané +psychological psychologique +fernando fernando +cultures cultures +taxes impôt +taxes impôts +taxes taxes +taxes fiscalité +marcus marcus +stakes pieux +stakes enjeu +stakes enjeux +stakes piquets +dominican dominicaine +dominican dominicain +franz franz +coins pièces +coins monnaies +oxygen oxygène +civic civisme +civic citoyenne +civic civique +civic civiques +isaac isaac +spell sort +spell sortilège +spell orthographe +inspiration inspiration +pairs paires +vector vecteur +arc arc +professionals professionnels +vii vii +contrary contrairement +contrary contraires +contrary contraire +accusations accusations +approaches approches +slaves esclave +slaves esclaves +mad furieux +mad fou +mad mad +mad furieuse +mad folle +spectrum spectre +client client +dozen douzaines +dozen dizaine +dozen dizaines +dozen douzaine +travels voyages +symbols symboles +plaza plaza +banking banques +banking banque +banking bancaire +inherited hérité +inherited héritée +inherited héréditaire +inherited héritées +legion légions +legion légion +symptoms symptômes +symptoms symptôme +mosque mosquée +guys mecs +guys gars +lab laboratoire +lab labo +lab lab +sailing voile +orientation orientation +virtually virtuellement +virtually quasiment +virtually pratiquement +generic génériques +generic générique +reasoning raisonnement +reasoning raisonnements +stroke attaque +stroke caresse +stroke avc +unions syndicats +efficient efficace +efficient efficaces +opens ouvre +impression impression +discover découvrez +discover découverte +discover découvrir +relocated réinstallés +roosevelt roosevelt +dancer danseuse +dancer danseur +dancer dancer +phenomenon phénomène +preliminary préliminaires +preliminary préliminaire +recognize reconnaître +recognize reconnaissent +recognize reconnais +anchor ancrage +anchor ancres +anchor ancre +anchor ancrer +arguing argumenter +abilities aptitudes +procedures procédures +emotional émotif +emotional émotionnelle +emotional émotions +emotional affectif +emotional émotionnel +timber bois +fisher fisher +fisher pêcheur +prod prod +cartoon cartoon +disorder désordre +disorder trouble +fled enfui +fled fuit +fled fui +demands exigences +lithuania lituanie +continent continent +fellowship camaraderie +lock écluse +lock serrure +lock verrouiller +lock verrou +relegated relégué +relegated relégués +warrant mandat +pictured imaginais +recurring récurrents +recurring récurrente +recurring récurrent +overview aperçu +wealthy riches +wealthy riche +acquisition acquisition +eve ève +eve eve +filter filtres +filter filtrer +filter filtre +filter filtrage +filter filtrant +addresses adresses +addresses allocutions +independently indépendamment +slovenia slovénie +observation observation +challenged contesté +challenged défié +challenged contestées +challenged contestée +threats menaces +threats menace +fallen tombés +fallen tombée +fallen déchu +fallen déchus +fallen tombé +protocol protocole +protocol protocol +judgment jugement +grammy mamie +grammy grammy +colours colorants +colours coloris +colours couleurs +colours teintes +distinctive distinctif +opposing opposé +opposing opposée +opposing opposés +landmark repère +package paquetage +package forfait +package paquet +package colis +controls contrôles +controls commandes +completing achèvement +sabha sabha +prisoner prisonnière +prisoner prisonnier +prisoner détenu +signals signaux +owen owen +owen fabien +inaugural inaugurale +intervention intervention +arriving arriver +arriving arrivant +cylinder cylindre +cylinder bouteille +cylinder cylindres +cylinder vérin +tenth dixième +tenth tenth +liu liu +tested testé +tested testés +tested testée +tested testées +renowned renommée +renowned renommés +renowned renommé +shops commerces +shops magasins +shops boutiques +dome dôme +dome coupole +dome dome +philosopher philosophes +philosopher philosophe +epic épique +epic epic +epic épopée +stem tige +stem souches +stem potence +specified précisé +specified spécifiés +specified spécifiée +specified spécifié +davies davies +collapse effondrement +allan allan +albanian albanaise +albanian albanais +canyon canyon +samples échantillons +perceived perçu +perceived perçus +perceived perçue +perceived perçues +celebrity célébrités +celebrity célébrité +priests prêtres +louise louise +workshop atelier +workshop ateliers +claude claude +fortune fortune +bars bars +bars barres +cornwall cornouailles +cornwall cornwall +palmer palmer +presidency présidence +tiny minuscule +tiny minuscules +tiny tiny +appeals pourvois +appeals appels +istanbul istanbul +rookie recrue +rookie rookie +expanding expansion +calgary calgary +shock chocs +shock choc +shock choquer +stevens stevens +employee salarié +employee travailleur +employee employé +yang yang +housed logés +tomb tombes +tomb tombe +tomb tombeau +tomb caveau +earning gagner +innovation innovation +streams ruisseaux +unity unité +unity unity +lucas lucas +grows pousse +grows grandit +grows croît +armenia arménienne +armenia arménie +interchange échangeur +proteins protéines +proposals propositions +swimmers nageurs +mainland continentale +seminary séminaire +hamlet hameau +hamlet hamlet +timeline chronologie +timeline journal +realize réalise +newport newport +negotiations négociations +exhibitions expositions +malta malte +hate déteste +hate détester +hate haine +hate haineux +hate haïr +westminster westminster +installation montage +installation installation +enters pénètre +goalkeeper gardien +julian julian +julian julien +morocco maroc +efficiency efficacité +efficiency efficience +efficiency rendement +chapters chapitres +helicopter hélico +helicopter hélicoptère +helicopter hélicoptères +fortress forteresses +fortress forteresse +ani ani +burned brulé +burned brûlés +burned brûlées +burned brûlée +burned brûlé +displays présentoirs +displays affichages +compiled compilés +compiled compilé +compiled compilées +ips ips +contributors collaborateurs +contributors contributeurs diff --git a/NLP/requirements.txt b/NLP/requirements.txt new file mode 100644 index 0000000..3689259 Binary files /dev/null and b/NLP/requirements.txt differ diff --git a/NLP/translator.ipynb b/NLP/translator.ipynb new file mode 100644 index 0000000..0f138c7 --- /dev/null +++ b/NLP/translator.ipynb @@ -0,0 +1,923 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### IMPORT LIBRARIES" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import gensim\n", + "import nltk\n", + "import numpy as np\n", + "import scipy\n", + "import sklearn\n", + "from gensim.models import KeyedVectors\n", + "from nltk.corpus import stopwords, twitter_samples\n", + "from nltk.tokenize import TweetTokenizer\n", + "from torch.utils.data import Dataset\n", + "from os import getcwd\n", + "import torch\n", + "from torch import nn\n", + "from torch.utils.data import Dataset,DataLoader\n", + "from matplotlib import pyplot as plt\n", + "from numpy.linalg import norm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Natural Language Toolkit, or NLTK, is a library in Python that provides tools for working with human language data (text).\n", + "It provides easy-to-use interfaces to over 50 corpora and lexical resources." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[nltk_data] Downloading package stopwords to\n", + "[nltk_data] C:\\Users\\HP\\AppData\\Roaming\\nltk_data...\n", + "[nltk_data] Package stopwords is already up-to-date!\n", + "[nltk_data] Downloading package twitter_samples to\n", + "[nltk_data] C:\\Users\\HP\\AppData\\Roaming\\nltk_data...\n", + "[nltk_data] Package twitter_samples is already up-to-date!\n" + ] + }, + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# The 'stopwords' corpus is a list of common words that are often considered irrelevant when processing natural language data.\n", + "# These include words like 'is', 'at', 'which', and 'on'. By default, these words are filtered out during the preprocessing step.\n", + "\n", + "nltk.download('stopwords')\n", + "\n", + "# The 'twitter_samples' corpus contains a set of tweet texts that are often used for training and testing in sentiment analysis.\n", + "# This dataset is useful for building and evaluating sentiment analysis models.\n", + "\n", + "nltk.download('twitter_samples')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Loading Embeddings for the English and French Language" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The data\n", + "\n", + "Download\n", + "* English embeddings from Google code archive word2vec\n", + "[look for GoogleNews-vectors-negative300.bin.gz](https://code.google.com/archive/p/word2vec/)\n", + " * You'll need to unzip the file first.\n", + "* and the French embeddings from\n", + "[cross_lingual_text_classification](https://github.com/vjstark/crosslingual_text_classification).\n", + " * in the terminal, type (in one line)\n", + " `curl -o ./wiki.multi.fr.vec https://dl.fbaipublicfiles.com/arrival/vectors/wiki.multi.fr.vec`\n", + "\n", + "The two files will be named as \n", + "* `GoogleNews-vectors-negative300.bin`\n", + "* `wiki.multi.fr.vec`\n", + "\n", + "These files have been used in the code below." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from gensim.models import KeyedVectors\n", + "\n", + "def load_embeddings():\n", + " \"\"\"\n", + " Loads English and French word embeddings from pre-trained models.\n", + " \n", + " Returns:\n", + " en_embeddings (gensim.models.keyedvectors.Word2VecKeyedVectors): English word embeddings.\n", + " fr_embeddings (gensim.models.keyedvectors.Word2VecKeyedVectors): French word embeddings.\n", + " \"\"\"\n", + " en_embeddings = KeyedVectors.load_word2vec_format('./GoogleNews-vectors-negative300.bin', binary=True)\n", + " fr_embeddings = KeyedVectors.load_word2vec_format('./wiki.multi.fr.vec')\n", + " \n", + " return en_embeddings, fr_embeddings\n", + "\n", + "en_embeddings, fr_embeddings = load_embeddings()\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Loading English to French Dictionary" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def get_dict(file_name:str):\n", + " \"\"\"\n", + " This function returns the english to french dictionary given a file where the each column corresponds to a word.\n", + " Check out the files this function takes in your workspace.\n", + " \"\"\"\n", + " my_file = pd.read_csv(file_name, delimiter=' ')\n", + " etof = {} # the english to french dictionary to be returned\n", + " for i in range(len(my_file)):\n", + " # indexing into the rows.\n", + " en = my_file.loc[i][0]\n", + " fr = my_file.loc[i][1]\n", + " etof[en] = fr\n", + "\n", + " return etof" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\HP\\AppData\\Local\\Temp\\ipykernel_18620\\3152999968.py:10: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + " en = my_file.loc[i][0]\n", + "C:\\Users\\HP\\AppData\\Local\\Temp\\ipykernel_18620\\3152999968.py:11: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + " fr = my_file.loc[i][1]\n", + "C:\\Users\\HP\\AppData\\Local\\Temp\\ipykernel_18620\\3152999968.py:10: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + " en = my_file.loc[i][0]\n", + "C:\\Users\\HP\\AppData\\Local\\Temp\\ipykernel_18620\\3152999968.py:11: FutureWarning: Series.__getitem__ treating keys as positions is deprecated. In a future version, integer keys will always be treated as labels (consistent with DataFrame behavior). To access a value by position, use `ser.iloc[pos]`\n", + " fr = my_file.loc[i][1]\n" + ] + } + ], + "source": [ + "train_dict = get_dict('./en-fr.train.txt')\n", + "test_dict = get_dict('./en-fr.test.txt')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def get_matrices(en_fr:dict,en_embeddings,fr_embeddings):\n", + " \"\"\"\n", + " Get matrices X and Y for training data from English to French translations.\n", + "\n", + " Parameters:\n", + " en_fr (dict): A dictionary containing English-French translation pairs.\n", + " en_embeddings: The embeddings object for English words.\n", + " fr_embeddings: The embeddings object for French words.\n", + "\n", + " Returns:\n", + " X (numpy.ndarray): The matrix containing English word vectors.\n", + " Y (numpy.ndarray): The matrix containing French word vectors.\n", + " \"\"\"\n", + " X = []\n", + " Y = []\n", + " for en,fr in en_fr.items():\n", + " if en_embeddings.has_index_for(en) and fr_embeddings.has_index_for(fr):\n", + " X.append(en_embeddings.get_vector(en))\n", + " Y.append(fr_embeddings.get_vector(fr))\n", + " return np.vstack(X),np.vstack(Y)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "X_train,Y_train = get_matrices(train_dict,en_embeddings,fr_embeddings)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "class language_dataset(Dataset):\n", + " def __init__(self, X: np.array, Y: np.array):\n", + " \"\"\"\n", + " A dataset class for language data.\n", + "\n", + " Args:\n", + " X (np.array): The input data.\n", + " Y (np.array): The target labels.\n", + " \"\"\"\n", + " self.X = torch.tensor(X)\n", + " self.Y = torch.tensor(Y)\n", + " \n", + " def __len__(self):\n", + " return self.X.shape[0]\n", + "\n", + " def __getitem__(self, index) -> torch.Tensor:\n", + " return self.X[index], self.Y[index]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "class TranslatorModel(nn.Module):\n", + " \"\"\"\n", + " A class representing a translator model.\n", + " \"\"\"\n", + "\n", + " def __init__(self):\n", + " super().__init__()\n", + " self.hidden_layer = nn.Sequential(\n", + " nn.Linear(300, 300, bias=False),\n", + " )\n", + "\n", + " def forward(self, x):\n", + " \"\"\"\n", + " Performs a forward pass through the translator model.\n", + "\n", + " Args:\n", + " x (torch.Tensor): The input tensor.\n", + "\n", + " Returns:\n", + " torch.Tensor: The output tensor.\n", + "\n", + " \"\"\"\n", + " return self.hidden_layer(x)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "torch.manual_seed(42)\n", + "translator = TranslatorModel()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hyperparameters" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "learning_rate = 0.8\n", + "epochs = 100" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "optimizer = torch.optim.SGD(params=translator.parameters(),lr=learning_rate)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "loss_function = nn.MSELoss()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "train_dataset = language_dataset(X_train,Y_train)\n", + "train_dataloader = DataLoader(train_dataset,shuffle=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Train Loop" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "def train_loop(dataloader, model, loss_function, optimizer):\n", + " \"\"\"\n", + " Trains the model using the given dataloader, loss function, and optimizer.\n", + "\n", + " Args:\n", + " dataloader (torch.utils.data.DataLoader): The dataloader containing the training data.\n", + " model (torch.nn.Module): The model to be trained.\n", + " loss_function (torch.nn.Module): The loss function used to compute the training loss.\n", + " optimizer (torch.optim.Optimizer): The optimizer used to update the model's parameters.\n", + "\n", + " Returns:\n", + " None\n", + " \"\"\"\n", + " size = len(dataloader.dataset)\n", + " num_batches = len(train_dataloader)\n", + " model.train()\n", + " train_loss = 0\n", + " for batch, (X, y) in enumerate(dataloader):\n", + " pred = model(X)\n", + " loss = loss_function(pred, y)\n", + " loss.backward()\n", + " optimizer.step()\n", + " optimizer.zero_grad()\n", + " train_loss += loss.item() \n", + " train_loss /= num_batches\n", + " print(f\"Train loss: {loss.item():>7f}\")\n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "\n", + "def k_nearest_neighbours(v,candidates:list,k=1):\n", + " \"\"\"\n", + " This function returns the k closest neighbours to a vector v from a list of candidates.\n", + " Args:\n", + " v (numpy.ndarray): The input vector.\n", + " candidates (list): A list of vectors.\n", + " k (int): The number of closest neighbours to return.\n", + " Returns:\n", + " list: The indices of the k closest neighbours in the candidates list.\n", + " \"\"\"\n", + " similarity_score = []\n", + " for c in candidates:\n", + " similarity_score.append(np.dot(v,c)/(norm(v)*norm(c)))\n", + " sorted_ids = np.argsort(similarity_score)\n", + " return sorted_ids[-k:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test Data" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "X_test,y_test = get_matrices(test_dict,en_embeddings,fr_embeddings)\n", + "test_dataset = language_dataset(X_test,y_test)\n", + "test_dataloader = DataLoader(test_dataset)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Test Loop" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def test_loop(test_dataloader, model, loss_fn):\n", + " \"\"\"\n", + " Function to evaluate the performance of a model on a test dataset.\n", + "\n", + " Parameters:\n", + " - test_dataloader (torch.utils.data.DataLoader): DataLoader for the test dataset.\n", + " - model: The trained model to be evaluated.\n", + " - loss_fn: The loss function used for evaluation.\n", + "\n", + " Returns:\n", + " - None\n", + " \"\"\"\n", + " model.eval()\n", + " size = len(test_dataloader.dataset)\n", + " num_batches = len(test_dataloader)\n", + " test_loss, correct = 0, 0\n", + " with torch.no_grad():\n", + " for index, (X, y) in enumerate(test_dataloader):\n", + " pred = model(X)\n", + " loss = loss_fn(pred, y).item()\n", + " test_loss += loss \n", + " X_num = pred.numpy()\n", + " for w in X_num:\n", + " if index == k_nearest_neighbours(w, y_test)[0]:\n", + " correct += 1\n", + " test_loss /= num_batches\n", + " correct /= size\n", + " print(f\"Test Error: \\n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \\n\")" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1\n", + "-------------------------------\n", + "\n", + "Train loss: 0.004742\n", + "Epoch 2\n", + "-------------------------------\n", + "\n", + "Train loss: 0.003021\n", + "Epoch 3\n", + "-------------------------------\n", + "\n", + "Train loss: 0.002431\n", + "Epoch 4\n", + "-------------------------------\n", + "\n", + "Train loss: 0.002175\n", + "Epoch 5\n", + "-------------------------------\n", + "\n", + "Train loss: 0.002048\n", + "Epoch 6\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001980\n", + "Epoch 7\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001940\n", + "Epoch 8\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001916\n", + "Epoch 9\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001900\n", + "Epoch 10\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001889\n", + "Epoch 11\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001881\n", + "Epoch 12\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001876\n", + "Epoch 13\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001872\n", + "Epoch 14\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001868\n", + "Epoch 15\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001866\n", + "Epoch 16\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001864\n", + "Epoch 17\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001862\n", + "Epoch 18\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001861\n", + "Epoch 19\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001860\n", + "Epoch 20\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001859\n", + "Epoch 21\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001858\n", + "Epoch 22\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001857\n", + "Epoch 23\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001857\n", + "Epoch 24\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001856\n", + "Epoch 25\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001856\n", + "Epoch 26\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001856\n", + "Epoch 27\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001855\n", + "Epoch 28\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001855\n", + "Epoch 29\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001855\n", + "Epoch 30\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001855\n", + "Epoch 31\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001855\n", + "Epoch 32\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001855\n", + "Epoch 33\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 34\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 35\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 36\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 37\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 38\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 39\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 40\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 41\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 42\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 43\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 44\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 45\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 46\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 47\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 48\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 49\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 50\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 51\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 52\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 53\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 54\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 55\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 56\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 57\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 58\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 59\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 60\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 61\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 62\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 63\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 64\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 65\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 66\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 67\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 68\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 69\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 70\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 71\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 72\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 73\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 74\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 75\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 76\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 77\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 78\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 79\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 80\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 81\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 82\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 83\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 84\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 85\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 86\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 87\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 88\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 89\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 90\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 91\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 92\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 93\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 94\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 95\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 96\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 97\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 98\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 99\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n", + "Epoch 100\n", + "-------------------------------\n", + "\n", + "Train loss: 0.001854\n" + ] + } + ], + "source": [ + "for epoch in range(epochs):\n", + " print(f\"Epoch {epoch+1}\\n-------------------------------\\n\")\n", + " train_loop(train_dataloader,translator,loss_function,optimizer)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test Error: \n", + " Accuracy: 55.8%, Avg loss: 0.002189 \n", + "\n" + ] + } + ], + "source": [ + "test_loop(test_dataloader,translator,loss_function)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "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.9.5" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/OwnTransformer.ipynb b/OwnTransformer.ipynb new file mode 100644 index 0000000..09ad481 --- /dev/null +++ b/OwnTransformer.ipynb @@ -0,0 +1,245 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [], + "authorship_tag": "ABX9TyMrag2Jb9n5EorqXLhe6jRL", + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "Bpv-vUQqTIIJ" + }, + "outputs": [], + "source": [ + "import torch\n", + "import torch.nn as nn\n", + "import torch.optim as optim\n", + "import torch.utils.data as data\n", + "import math\n", + "import copy" + ] + }, + { + "cell_type": "code", + "source": [ + "class MultiHeadAttention(nn.Module):\n", + " def __init__(self,d_model,num_heads):\n", + " super(MultiHeadAttention,self).__init__()\n", + " ## Ensure that the model dimension is divisible by the number of heads\n", + " assert d_model%num_heads == 0 , \"d_model must be divisible by num_heads\"\n", + " ## Initialize dimensions\n", + " self.d_model = d_model ## Model dimension\n", + " self.num_heads = num_heads ## number of attention heads\n", + " self.d_k = d_model//num_heads ## Dimension of each head's key,query,value\n", + " ## Linear model for transforming input\n", + " self.W_q = nn.Linear(d_model,d_model) ## Query transformation\n", + " self.W_k = nn.Linear(d_model,d_model) ## Key transformation\n", + " self.W_v = nn.Linear(d_model,d_model) ## Value transformation\n", + " self.W_o = nn.Linear(d_model,d_model) ## Output transformation\n", + "\n", + " def split_heads(self,x):\n", + " ## Reshape the input for num_heads to have multi-head attention\n", + " batch_size,seq_length,d_model = x.size()\n", + " return x.view(batch_size,seq_length,self.num_heads,self.d_k).transpose(1,2)\n", + "\n", + " def combine_heads(self,x):\n", + " ## combine the multiple heads back to original shape\n", + " batch_size,_,seq_len,d_k = x.size()\n", + " return x.transpose(1,2).contigous().view(batch_size,seq_len,self.d_model)\n", + "\n", + " def scaled_dot_product_attention(self,Q,K,V,mask=None):\n", + " ## calculate attention scores\n", + " attn_scores = torch.matmul(Q,K.transpose(-2,-1))/math.sqrt(self.d_k)\n", + " ## apply mask if provided. Useful to prevent attention to certain parts like padding\n", + " if mask is not None:\n", + " attn_scores = attn_scores.masked_fill(mask==0,-1e9)\n", + " ## finding probabilities using softmax\n", + " attn_probs = torch.softmax(attn_scores,dim=-1)\n", + " ## multiplying by values to obtain the final output\n", + " return torch.matmul(attn_probs,V)\n", + "\n", + " def forward(self,Q,K,V,mask=None):\n", + " ## Apply linear transformation and split heads\n", + " Q = self.split_heads(self.W_q(Q))\n", + " K = self.split_heads(self.W_k(K))\n", + " V = self.split_heads(self.W_v(V))\n", + "\n", + " ## performed scaled dot product\n", + " attn_output = self.scaled_dot_product_attention(Q,K,V,mask)\n", + "\n", + " output = self.W_o(self.combine_heads(attn_output))\n", + " return output\n", + "\n", + "\n" + ], + "metadata": { + "id": "LLETYeT5Tg3W" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "class PositionWiseFeedForward(nn.Module):\n", + " def __init__(self,d_model,d_ff):\n", + " super().__init__()\n", + " self.fc1 = nn.Linear(d_model,d_ff)\n", + " self.fc2 = nn.Linear(d_ff,d_model)\n", + " self.relu = nn.ReLU()\n", + "\n", + " def forward(self,x):\n", + " self.fc2(self.relu(self.fc1))" + ], + "metadata": { + "id": "ScSOyKRSjjNN" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "class PositionalEncoding(nn.Module):\n", + " def __init__(self,d_model,max_seq_length):\n", + " super().__init__()\n", + "\n", + " pe = torch.zeros(max_seq_length,d_model)\n", + " position = torch.arange(0,max_seq_length,dtype=torch.float).unsqueeze(1)\n", + " div_term = torch.exp(torch.arange(0,d_model,2).float()* -(math.log(10000.0)/d_model))\n", + " pe[:,0::2] = torch.sin(position*div_term)\n", + " pe[:,1::2] = torch.cos(position*div_term)\n", + "\n", + " self.register_buffer('pe',pe.unsqueeze(0))" + ], + "metadata": { + "id": "L3ueUQIM_WvV" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "class EncoderLayer(nn.Module):\n", + " def __init__(self,d_model,num_heads,d_ff,dropout):\n", + " super().__init__()\n", + " self.self_attn = MultiHeadAttention(d_model,num_heads)\n", + " self.feed_forward = PositionWiseFeedForward(d_model,d_ff)\n", + " self.norm1 = nn.LayerNorm(d_model)\n", + " self.norm2 = nn.LayerNorm(d_model)\n", + " self.dropout = nn.Dropout(dropout)\n", + "\n", + " def forward(self,x,mask):\n", + " attn_output = self.self_attn(x,x,x,mask)\n", + " x = self.norm1(x + self.dropout(attn_output))\n", + " ff_output = self.feed_forward(x)\n", + " x = self.norm2(x + self.dropout(ff_output))\n", + " return x\n" + ], + "metadata": { + "id": "vGcRvLq798SC" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "class DecoderLayer(nn.Module):\n", + " def __init__(self,d_model,num_heads,d_ff,dropout):\n", + " super().__init__()\n", + " self.self_attn = MultiHeadAttention(d_model,num_heads)\n", + " self.cross_attn = MultiHeadAttention(d_model,num_heads)\n", + " self.feed_forward = PositionWiseFeedForward(d_model,d_ff)\n", + " self.norm1 = nn.LayerNorm(d_model)\n", + " self.norm2 = nn.LayerNorm(d_model)\n", + " self.norm3 = nn.LayerNorm(d_model)\n", + " self.dropout = nn.Dropout(dropout)\n", + "\n", + " def forward(self,x,enc_output,src_mask,tgt_mask):\n", + " attn_output = self.self_attn(x,x,x,tgt_mask)\n", + " x = self.norm1(x + self.dropout(attn_output))\n", + " attn_output = self.cross_attn(x,enc_output,enc_output,src_mask)\n", + " x = self.norm2(x + self.dropout(attn_output))\n", + " ff_output = self.feed_forward(x)\n", + " x = self.norm3(x + self.dropout(ff_output))\n", + " return x" + ], + "metadata": { + "id": "XZcfO-uXhCiq" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "class Transformer(nn.Module):\n", + " def __init__(self,src_vocab_size,tgt_vocab_size,d_model,num_heads,num_layers,d_ff,max_seq_length,dropout):\n", + " super().__init__()\n", + " self.encoder_embedding = nn.Embedding(src_vocab_size,d_model)\n", + " self.decoder_embedding = nn.Embedding(tgt_vocab_size,d_model)\n", + " self.positional_encoding = PositionalEncoding(d_model,max_seq_length)\n", + "\n", + " self.encoder_layers = nn.ModuleList([EncoderLayer(d_model,num_heads,d_ff,dropout) for _ in range(num_layers)])\n", + " self.decoder_layers = nn.ModuleList([DecoderLayer(d_model,num_heads,d_ff,dropout) for _ in range(num_layers)])\n", + "\n", + " self.fc = nn.Linear(d_model,tgt_vocab_size)\n", + " self.dropout = nn.Dropout(dropout)\n", + "\n", + " def generate_mask(self,src,tgt):\n", + " src_mask = (src != 0).unsqueeze(1).unsqueeze(2)\n", + " tgt_mask = (tgt != 0).unsqueeze(1).unsqueeze(3)\n", + " seq_length = tgt.size(1)\n", + " nopeak_mask = (1 - torch.triu(torch.ones(1,seq_length,seq_length),diagonal=1)).bool()\n", + " tgt_mask = tgt_mask & nopeak_mask\n", + " return src_mask,tgt_mask\n", + "\n", + " def forward(self, src, tgt):\n", + " src_mask, tgt_mask = self.generate_mask(src, tgt)\n", + " src_embedded = self.dropout(self.positional_encoding(self.encoder_embedding(src)))\n", + " tgt_embedded = self.dropout(self.positional_encoding(self.decoder_embedding(tgt)))\n", + "\n", + " enc_output = src_embedded\n", + " for enc_layer in self.encoder_layers:\n", + " enc_output = enc_layer(enc_output, src_mask)\n", + "\n", + " dec_output = tgt_embedded\n", + " for dec_layer in self.decoder_layers:\n", + " dec_output = dec_layer(dec_output, enc_output, src_mask, tgt_mask)\n", + "\n", + " output = self.fc(dec_output)\n", + " return output\n" + ], + "metadata": { + "id": "8e7sGa8ujxfi" + }, + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md index 21ffeff..5c264f3 100755 --- a/README.md +++ b/README.md @@ -1 +1 @@ -Some good algorithms about machine learning. \ No newline at end of file +Implemented algorithms for practice diff --git a/Regression/linearRegression/linearRegression.ipynb b/Regression/linearRegression/linearRegression.ipynb old mode 100755 new mode 100644 index 5a77860..cdf38b9 --- a/Regression/linearRegression/linearRegression.ipynb +++ b/Regression/linearRegression/linearRegression.ipynb @@ -1,298 +1,1396 @@ { - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Implementing linear regression algorithm" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Quadratic linear regression" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Importing the libraries" - ] - }, - { - "cell_type": "code", - "execution_count": 297, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Reading the data" - ] - }, - { - "cell_type": "code", - "execution_count": 298, - "metadata": {}, - "outputs": [ + "cells": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - " x y\n", - "0 24.0 21.549452\n", - "1 50.0 47.464463\n", - "2 15.0 17.218656\n", - "3 38.0 36.586398\n", - "4 87.0 87.288984\n", - ".. ... ...\n", - "695 58.0 58.595006\n", - "696 93.0 94.625094\n", - "697 82.0 88.603770\n", - "698 66.0 63.648685\n", - "699 97.0 94.975266\n", - "\n", - "[699 rows x 2 columns]\n" - ] - } - ], - "source": [ - "trainData = pd.read_csv('./train.csv')\n", - "trainData.drop(trainData[trainData['x'] > 100].index,inplace = True)\n", - "print(trainData)\n", - "trainData = trainData.values\n", - "testData = pd.read_csv('./test.csv')\n", - "testData = testData.values" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plotting the data using matplotlib" - ] - }, - { - "cell_type": "code", - "execution_count": 299, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "Vlwi7KraWV5F" + }, + "source": [ + "# Implementing linear regression algorithm" + ] + }, { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHVCAYAAAB8NLYkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB+U0lEQVR4nO3deXhU1cE/8O+dTDJJIDuSBbKBCCjKnhChgBDEpajAawuiAkVBjchiXXBDbC0ub62AKVCqRCWARUGLrbwlrA0mIYRNZM1CIISASUgmQNaZ+/6BueTOPYk3ZJnJ5Pt5njw/75lz75yZ+b367VklWZZlEBEREVGbZ7B3A4iIiIioeTDYERERETkJBjsiIiIiJ8FgR0REROQkGOyIiIiInASDHREREZGTYLAjIiIichIMdkREREROgsGOiIiIyEkw2BERERE5CQY7Imp2kiTp+tu5cydOnz6tKjMYDPD398e9996LlJSUet/j2LFjkCQJ7u7uKCkpEdYZOXIk+vTpoyqLiIiAJEmYPXu2pv7OnTshSRK+/PLLBj+fbZtdXV3RqVMn3HnnnXjllVdw5syZBu9/8cUXIUkSfvvb36rKG/O91frrX/8KSZIQHR1d7/tdvnwZCxcuRJ8+fdChQwcEBASgX79+mDNnDvLz85V6b775ZoPvW1BQgJEjR+pq45tvvtngd0BELcNo7wYQkfP5/PPPVdefffYZtm7dqinv3bs3ysvLAQCTJ0/GfffdB4vFgpMnT+Kvf/0r7rrrLqSnp+P222/XvMeaNWsQFBSES5cu4csvv8QTTzzRqDauWrUKCxYsQEhISCM/3XW1bbZarbh06RLS09Px4YcfYsmSJfj4448xadIkzT2yLGPdunWIiIjA5s2bUVZWBi8vLwCN+95qJSYmIiIiAnv37kVmZiZuvvlmVd3q6moMHz4cx48fx9SpUzF79mxcvnwZP/74I9auXYvx48drvoPly5ejY8eOmrb7+vri1VdfVX3X6enpWLp0KV555RVVu+64445f+vqIqCXIREQtLC4uTq7vXzc5OTkyAPn9999XlX/33XcyAPnpp5/W3GO1WuWIiAh5/vz58vjx4+WRI0cKnz1ixAj5tttuU5WFh4fLt912m2w0GuXZs2erXtuxY4cMQN6wYUODn6e+NsuyLJ8+fVq+5ZZbZDc3N/ngwYOa17dv3y4DkLdv3y67urrKCQkJ9b5PQ9+bLMtydna2DEDeuHGjfNNNN8lvvvmmps4//vEPGYCcmJioea28vFwuLS1VrhcuXCgDkH/66ad639PWhg0bZADyjh07dN9DRC2HQ7FE5JB+9atfAQCysrI0r+3ZswenT5/GpEmTMGnSJOzevRt5eXm6nx0REYHHH38cq1atUg1FNofw8HAkJCSgqqoK7733nub1xMRE3HrrrbjrrrsQGxuLxMTEG36vxMRE+Pn54f7778f//M//CJ9V+/0NHTpU85q7uzu8vb1v+P2JyPEw2BGRQzp9+jQAwM/PT/NaYmIiunfvjsGDB2PcuHHw9PTEunXrGvX8V199FTU1NXjnnXeao7kqMTEx6N69O7Zu3aoqr6ysxFdffYXJkycDuDaUu337dhQUFNzQ+yQmJmLChAlwc3PD5MmTcerUKaSnp6vqhIeHA7g2rCvLsq7nFhcXo7CwUPVX3zxGInIsDHZE5BCuXr2KwsJCXLhwAcnJyZg+fToA4H/+539U9aqrq7FhwwZl/pqHhwceeOCBRvd8devWDY899hhWrVqF8+fPN8+HqKNPnz746aefYDablbJvv/0WJSUlStsfeughuLq6Yv369Y1+fkZGBo4fP648a9iwYejatavme3jooYfQs2dPvPHGG4iMjMT06dPxySef4OLFi/U+u2fPnrjppptUf0OGDGl0G4mo9THYEZFDWLhwIW666SYEBQXhV7/6FY4dO4Y///nPmmD33XffoaioSOn1Aq71fB06dAg//vhjo97ztddea7Feu9rFB2VlZUpZYmIiBg0apCxw8PLywv33339Dw7GJiYkIDAzEXXfdBQDKKtv169fDYrEo9Tw8PJCWloYXXngBAJCQkIAZM2YgODgYs2fPRmVlpebZX331FbZu3ar6W716daPbSEStj8GOiBzCzJkzsXXrVmzevBnz5s1DeXm5KqDUWrNmDSIjI2EymZCZmYnMzEx0794dnp6eN9xr97e//a3Ze+0uX74MAMqK15KSEvz73//GiBEjlHZnZmZi6NCh2LdvH06ePKn72RaLBevXr8ddd92FnJwc5VnR0dG4cOECtm3bpqrv4+OD9957D6dPn8bp06fx8ccfo2fPnvjoo4/whz/8QfP84cOHIzY2VvUXExPThG+DiFoLgx0ROYQePXogNjYWv/71r/HBBx9g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NWoUXFxc8MMPP2D27Nl47bXX7N0sImpHGOyIiJrR8ePH0bt3b9x+++3Yv38/jEajvZtERO0IF08QETWjTz75BJ6ensjJyUFeXp69m0NE7Qx77IiImsn333+PESNG4D//+Q/++Mc/AgCSkpIgSZKdW0ZE7QV77IiImsHVq1cxbdo0PP3007jrrrvw8ccfY+/evVixYoW9m0ZE7Qh77IiImsGcOXPw73//G4cOHYKnpycAYOXKlfj973+PH374AREREfZtIBG1Cwx2RERNtGvXLowePRo7d+7EsGHDVK+NHTsWNTU1HJIlolbBYEdERETkJDjHjoiIiMhJMNgREREROQkGOyIiIiInwWBHRERE5CQY7IiIiIicBIMdERERkZNgsCMiIiJyEgx2RERERE6CwY6IiIjISTDYERERETkJBjsiIiIiJ8FgR0REROQkGOyIiIiInASDHREREZGTYLAjIiIichIMdkREREROgsGOiIiIyEkw2BERERE5CQY7ImpxkiTp+tu5cydOnz7dYJ133nlHea7VasVnn32G6Oho+Pv7w8vLC7fccgsef/xxpKamAgAiIiJ0vXdCQkK97R85cqRSz2AwwNvbGz179sRjjz2GrVu3NvjZjx07BkmS4O7ujpKSEqV82rRputo1bdo05Z6SkhK4u7tDkiQcO3as3vfcvHkzRowYgc6dO8PT0xPdunXDb37zG2zZskWpo+d7TkhI0NXGiIiIBr8DImo9Rns3gIic3+eff666/uyzz7B161ZNee/evVFeXg4AmDx5Mu677z7Ns/r376/883PPPYf4+Hg8+OCDmDJlCoxGI06cOIHvvvsO3bp1w5AhQ/Dhhx/i8uXLyj3//ve/sW7dOvzlL39Bp06dlPI777yzwc/QtWtXLF68GABw5coVZGZmYuPGjVizZg1+85vfYM2aNXB1ddXct2bNGgQFBeHSpUv48ssv8cQTTwAAZs2ahdjYWKVeTk4O3njjDcycORO/+tWvlPLu3bsr/7xhwwZIkoSgoCAkJibij3/8o+b9/vd//xcvvPACRowYgQULFsDT0xOZmZlISkrC+vXrcc8996jqN/Q9e3h4aH6jJ554AlFRUZg5c6ZS1rFjxwa/OyJqRTIRUSuLi4uT6/vXT05OjgxAfv/99xt8RkFBgSxJkvzkk09qXrNarfKFCxeE973//vsyADkn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9evXyyaTSU5ISJCPHj0qz5w5U/b19ZULCgrs3bR24emnn5Z9fHzknTt3yufPn1f+rl69qtR56qmn5LCwMHn79u3yvn375JiYGDkmJsaOrW5f6q6KlWX+Hq1t7969stFolN9++2351KlTcmJiouzp6SmvWbNGqfPOO+/Ivr6+8jfffCMfPnxYfvDBB+XIyEi5vLzcji13XlOnTpW7dOkif/vtt3JOTo68ceNGuVOnTvKLL76o1OFv0rLKysrkAwcOyAcOHJAByB988IF84MABOTc3V5Zlfd//PffcI/fv319OS0uTk5OT5R49esiTJ09u8bYz2LWCZcuWyWFhYbKbm5scFRUlp6am2rtJ7QYA4d/q1auVOuXl5fIzzzwj+/n5yZ6envL48ePl8+fP26/R7YxtsOPv0fo2b94s9+nTRzaZTHKvXr3kv/3tb6rXrVar/Prrr8uBgYGyyWSSR48eLZ84ccJOrXV+ZrNZnjNnjhwWFia7u7vL3bp1k1999VW5srJSqcPfpGXt2LFD+N+OqVOnyrKs7/svKiqSJ0+eLHfs2FH29vaWp0+fLpeVlbV42yVZrrOVNRERERG1WZxjR0REROQkGOyIiIiInASDHREREZGTYLAjIiIichIMdkREREROgsGOiIiIyEkw2BERERE5CQY7IiIiIifBYEdERETkJBjsiIiayGKx4M4778SECRNU5aWlpQgNDcWrr75qp5YRUXvDI8WIiJrByZMn0a9fP6xatQpTpkwBADz++OM4dOgQ0tPT4ebmZucWElF7wGBHRNRMli5dijfffBM//vgj9u7di4cffhjp6eno27evvZtGRO0Egx0RUTORZRmjRo2Ci4sLfvjhB8yePRuvvfaavZtFRO0Igx0RUTM6fvw4evfujdtvvx379++H0Wi0d5OIqB3h4gkiomb0ySefwNPTEzk5OcjLy7N3c4ionWGPHRFRM/n+++8xYsQI/Oc//8Ef//hHAEBSUhIkSbJzy4iovWCPHRFRM7h69SqmTZuGp59+GnfddRc+/vhj7N27FytWrLB304ioHWGPHRFRM5gzZw7+/e9/49ChQ/D09AQArFy5Er///e/xww8/ICIiwr4NJKJ2gcGOiKiJdu3ahdGjR2Pnzp0YNmyY6rWxY8eipqaGQ7JE1CoY7IiIiIicBOfYERERETkJBjsiIiIiJ8FgR0REROQkGOyIiIiInASDHREREZGTYLAjIiIichIMdkREREROgsGOiIiIyEkw2BERERE5CQY7IiIiIifBYEdERETkJP4fhKWc0YHz/lQAAAAASUVORK5CYII=", - "text/plain": [ - "
" + "cell_type": "markdown", + "metadata": { + "id": "Jbf08VFSWV5K" + }, + "source": [ + "## Quadratic linear regression" ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "figure,axis = plt.subplots(2,1)\n", - "trainX = trainData[::,0]\n", - "trainY = trainData[::,1]\n", - "axis[0].set_title(\"TRAIN DATASET\")\n", - "axis[0].scatter(trainX,trainY,s = 5)\n", - "axis[0].set_xlabel('X')\n", - "axis[0].set_ylabel('Y')\n", - "testX = testData[::,0]\n", - "testY = testData[::,1]\n", - "axis[1].set_title('TEST DATASET')\n", - "axis[1].scatter(testX,testY,s = 5)\n", - "axis[1].set_xlabel('X')\n", - "axis[1].set_ylabel('Y')\n", - "figure.tight_layout()\n", - "plt.show()\n", - "trainX = trainX.reshape(-1,1)\n", - "testX = testX.reshape(-1,1)\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Implementing linear regression using inbuilt function" - ] - }, - { - "cell_type": "code", - "execution_count": 300, - "metadata": {}, - "outputs": [ + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.9888014444327563\n" - ] - } - ], - "source": [ - "from sklearn.linear_model import LinearRegression\n", - "from sklearn.metrics import r2_score\n", - "\n", - "clf = LinearRegression()\n", - "clf.fit(trainX,trainY)\n", - "y_pred = clf.predict(testX)\n", - "print(r2_score(testY,y_pred))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Implementing my own gradient descent" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Batch Gradient Descent" - ] - }, - { - "cell_type": "code", - "execution_count": 301, - "metadata": {}, - "outputs": [], - "source": [ - "def batchGradientDescent(alpha,it,N):\n", - " A = np.array([0,0]).reshape((1,2))\n", - " X = np.concatenate((np.ones((N,1)),trainX),axis = 1)\n", - " Y = trainY.reshape((N,1))\n", - " Xt = np.transpose(X)\n", - " Yt = np.transpose(Y)\n", - " while (it > 0):\n", - " A = A - (alpha/N)*(np.matmul(A,np.matmul(Xt,X))-np.matmul(Yt,X))\n", - " Ypred = np.matmul(A,Xt)\n", - " it = it - 1\n", - " return A\n", - "thetaBatch = batchGradientDescent(0.0001,1000,699)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Incremental Gradient Descent" - ] - }, - { - "cell_type": "code", - "execution_count": 302, - "metadata": {}, - "outputs": [], - "source": [ - "def incrementalGradientDescent(alpha,it,N):\n", - " theta = np.zeros((2,1))\n", - " while it > 0:\n", - " for i in range(N):\n", - " y = trainY[i]\n", - " y = np.reshape(y,(1,1))\n", - " x = trainX[i,::]\n", - " x = np.reshape(x,(1,1))\n", - " C = y - np.matmul(theta,np.transpose(x))\n", - " x = np.concatenate((np.ones((1,1)),x),axis = 0)\n", - " theta = theta + (alpha/N)*C*x\n", - " it = it - 1\n", - " if it == 0: break \n", - " if it == 0: break\n", - " return np.transpose(theta)\n", - "thetaIncrement = incrementalGradientDescent(0.0001,100000,699)\n", - "\n" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Plotting the curve obtained by performing gradient descent above." - ] - }, - { - "cell_type": "code", - "execution_count": 303, - "metadata": {}, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "kMFKlEkxWV5L" + }, + "source": [ + "### Importing the libraries" + ] + }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "R2 Score of Batch Gradient Descent: 0.9887734053310671\n", - "R2 Score of Incremential Gradient Descent: 0.9888517297994651\n" - ] + "cell_type": "code", + "execution_count": 53, + "metadata": { + "id": "Sic7GjAbWV5M" + }, + "outputs": [], + "source": [ + "## general\n", + "import io\n", + "## data\n", + "import pandas as pd\n", + "import numpy as np\n", + "## machine learning\n", + "import keras\n", + "## data visualization\n", + "import plotly.express as px\n", + "from plotly.subplots import make_subplots\n", + "import plotly.graph_objects as go\n", + "import seaborn as sns" + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Utils Functions" + ], + "metadata": { + "id": "KTd2DBDWbGgq" + } }, { - "data": { - "image/png": "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QlxcHLp06YLq1avjzp07+O6771C1alW0atUKANC3b1/8/PPPGD16NPbt24fAwEA8fvwYmzdvxkcffYTXX38dwcHBGDJkCKKionDkyBG0b98e1tbWOH/+PFasWIFvvvkGb731VoG+oyZNmsDS0hLTp09HYmIilEol2rZtm+s8PiKzY6p0XCIqHnLLndja2oomTZqI+fPn6y2pIYQQP/zwg6hdu7ZQKpWibt26YvHixUKlUomc/zycOXNGBAUFCTs7OwFAb+mTq1evir59+wp3d3ehVCpFzZo1RVhYmG6ZEG2bci6JEhsbW6ClKQ4fPiz69u0rqlWrJmxsbIS9vb1o1KiR+OSTT8SFCxf06gYHB4v69evLXmfnzp3ilVdeEXZ2dsLb21uMHTtWbNq0SbYt3333nfD19RVKpVI0bdpUxMXFieDg4HyXOxFCiIsXL4q+ffsKLy8vYW1tLapUqSJeffVVsXLlSl2dgnw38fHxokuXLsLR0dFgyRU52f8OWFhYCBcXF/Hiiy+KESNGiJMnT8qek56eLqZPny7q168vlEqlqFixovD39xeRkZEiMTFRCCFETEyMeP3114W3t7ewsbER3t7eolevXuLcuXN613ry5In4/PPPha+vr7C2thZeXl7irbfeEhcvXtSrt3DhQuHv7y/s7OyEo6OjaNiwoRg7dqy4efOmrk716tVFly5dDNqb81kIIcSiRYtEzZo1haWlJZc+oXJHIQRnnRIRERGZA86xIyIiIjITDOyIiIiIzAQDOyIiIiIzwcCOiIiIyEwwsCMiIiIyE1zHDtK2Njdv3oSjoyNXLSciIqJSRQiB5ORkeHt76/Zjzg0DOwA3b97U7YFIREREVBpdv34dVatWzbMOAztAt0/i9evXdSvyExEREZUGSUlJ8PHx0cUreWFgh6xNo52cnBjYERERUalkzHQxJk8QERERmQkGdkRERERmgoEdERER0fNITQXatgXc3KTX1FRTt4iBHREREdFz6dwZiI0FHjyQXjt3NnWLGNgRERERPZejR/M+NgEGdkRERETPo2HDvI9NgIEdERER0fMICsr72AQY2BERERE9jz178j42AZMGdnFxcejatSu8vb2hUCiwevVqvfeFEIiIiEDlypVhZ2eHkJAQnD9/Xq/OgwcP0Lt3bzg5OcHFxQUDBw7Eo0ePSvBTEBERUZmVkQFMmgS0by+9ZmQYf26rVoB20WCFQjo2MZMGdo8fP0bjxo0xb9482fdnzJiBb7/9FgsWLMDevXthb2+PDh06IDVbOnHv3r1x8uRJREdHY926dYiLi8PgwYNL6iMQERFRWTZtGqBWA9HR0uu0afL15ALACROkc0JDpdcJE0qu3bkw6ZZinTp1QqdOnWTfE0Jg9uzZmDhxIl5//XUAwM8//wxPT0+sXr0a77zzDk6fPo2NGzdi//79aNq0KQBgzpw56Ny5M2bNmgVvb2/Za6elpSEtLU13nJSUVMSfjIiIiIpFRoYUfO3YIfWQTZgAWBUinNmxAxBC+rMQ0rEcbQAoBLB5My4/fIipiYnY888/WFCtGkzfVycptXPsLl++jPj4eISEhOjKnJ2dERAQgN27dwMAdu/eDRcXF11QBwAhISGwsLDA3r17c712VFQUnJ2ddT8+Pj7F90GIiIio6Bjbw2YsI4dTr0RHY7AQUABQCIGas2fjh8WLcfLOHUw8cKBo2lIESm1gFx8fDwDw9PTUK/f09NS9Fx8fDw8PD733rays4OrqqqsjZ/z48UhMTNT9XL9+vYhbT0RERLIKM6cNML6Hzdj7jB0LtG4NuLpKr2PHAgCuXbuGDz/8EAqFAgqFAr47dmBRLk2am19bSpBJh2JNRalUQqlUmroZRERE5U+OIU0AQESE8ee3aiWdJ0RWD5vc8OzkyVJAB0i9e5mZQHi4Yb1p04DYWFwHEBUbi/l2dvk2oSsA1Usvwf/117M+SylJnii1gZ2XlxcA4Pbt26hcubKu/Pbt22jSpImuzp07d/TOy8jIwIMHD3TnExERUSlibI9bbrQJCtmDsylTgMhIqTw6GtBogGXL9M/THj8L9v6LjsYX69Zh3v79+d7y1VdfhSouDk2zz8m/ckW+LSZWaodifX194eXlhZiYGF1ZUlIS9u7di+bNmwMAmjdvjoSEBBw8eFBXZ8uWLdBoNAgICCjxNhMREVE+nv0Oz/VYqyBDtkuXGh5rg8dnbj59io9nz5bmyAHwAXIN6jp36oS9gwZBhIZCREZi7V9/oam/v36lxo2lpI2ICODff6XXwiRxFBGTtuDRo0e4cOGC7vjy5cs4cuQIXF1dUa1aNYwcORJTpkxB7dq14evri/DwcHh7e+ONN94AANSrVw8dO3bEoEGDsGDBAjx9+hTDhg3DO++8k2tGLBEREZmQNlEh+7HcUGpuQ7Zy5Q8f6l/z4UPcqlsX0y9fxjfasjzm03cEoALwCgAEBwOvvGJ4j/Xrgc6dpf1gGzeWjksjYUKxsbECgMFPv379hBBCaDQaER4eLjw9PYVSqRTt2rUTZ8+e1bvG/fv3Ra9evYSDg4NwcnISAwYMEMnJyQVqR2JiogAgEhMTi+qjERERkZzQUCGkkEn6CQ0VIjJSCIVCOlYopGO5ermd7+srbgFilExMIffTHhC7ACFcXIRISRGiTRshXF2l15SU3O9tIgWJU0zaY9e6dWuIHF2l2SkUCkyaNAmTtJMfZbi6umL58uXF0TwiIiIqas2bS/Pgsh/LzbuTS5IAgBYtgOho3AYwE8CX2a+VixAA6oED0TI2Frh0KesNV1fA1hbYskX/hNzuXQaYfjCYiIiIzFNqquHwpdxQrFwglSMx4c4HH2DW2LGYOXNmvrdt26YN1BERCIyLyz3JAgDee0/+AqUwKcJYCpFXl1k5kZSUBGdnZyQmJsLJycnUzSEiIjIPrVsD27ZlHQcHAzY2+j12oaHAqlVAw4bAf/8BVasCx4/jbnIyZvXogRk7d+Z7m+DgYKjVarRu3TrvikW9a0UJKUicUvo/DREREZUuxgZI+/YZHo8bZ9g799pruHflCr4E8MWVK4CjY563DwQQCaCNQiElOcitg5dbGwuyZl4ZxMCOiIiICsbYRYZtbYGUFP3jsWOBrVvx4PBhfOnsjGkqVb63awUg8qWX0ObAASgyMw0DtsK00cwwsCMiIqKCiYvTT3aIi5Ov17Ch7r2HAL5ydMSU7Ds7JCTIntZCqURk3bpod/QodDPynJ2lHj5je90KuxByGVVqFygmIiKi51DYvViNodHkfQwgISEBquvXdQsCuwKYcu2a7OVeUSqxCYAG0nokO729EVKpEvTSLCwKGLK0apWVqFHGMlsLgz12RERE5qQkhiAtLQ2OE2/fxuxXXoH6ypV8T28GaY5cBwCKyEjgp5/0lyFRKICgIGkZEu1cvKCggrWxDGe2FgYDOyIiInNSEkOQgYFI2rwZ30DasUFs3gzksUd7U0iBXKeICCjCww3nyGVm6vZwBQD06VP4wKwcJErIYWBHRERkToppcd2kpCTMmTMHKpUKmZmZedZ9CUCkgwO6vPIKFNpeQwDYvVs+4AoPl3oBy1kGa3FgYEdERGROnmWd6hYFHjtWvl4+S5YkJydj7ty5UKlUePr0aZ63bNKkCSIzM9H1+PGseXEvvwwEBgIxMfkHmQziigwDOyIiInMyY4YU2Akhvc6YIR805ZiL9ygtDXMdHaFWq5GWlpbnLRo1bIjI+vXx2r17sAgMlILCjAzDXSa0gWI5m+dmSgzsiIiIzImRc+web92KeUJADSBFCCnQy0XDhg2hVqvxxhtvwMLCQpoPpw0KY2KkShERhnuuasupxHC5EyIiInOSyzIfjx8/xqxZs+Dg4ACFQgGH2Fh8BiBF5hL169fHihUrkJmZCfH0KY699Ra6LVgAiylTpJ65crpGXFnAHjsiIiJz8my488m2bVhgbQ31rFlIzmd3h3oA1A0a4K2jR6UeueymTDFcPqWYEjSo8BjYERERlRS5hAWgSDamT0lJwffffw+1Wo3ExMQ869apUwfqhg3RY+VKWAJScNajh/wiwHK9c+vXZ73HuXOlCgM7IiKikiK3eDDwXAsKp6amYuHChVCr1Xj48GGedWvXrg21Wo23334bltrFhTMypC2/8gvO5HrnmMVaajGwIyIiKg5yvXPbt+v3fm3fLgVLRsxXS330CP97+22oo6NxP5/lR/wAqAG8A8AqNBT491/DSsYGZ+V0B4eyioEdERFRcZDrncsZkD19CrRtKztfLS0tDT/88APUajXu3r2b56187eyg7tgR7y5fDqsZM7LuWxTz39g7V6YwsCMiIgLyXbC3wOR6565d069z7ZpuQeH0I0fwo7s71N99h9v5JDtUB6B2d0fvoUNhPXkykJICrF4trVnHHrZyjYEdERGZj8IEZ3I9bIXpqcq57VZmZtYyJADSASxJTobawwO3kpOlwlzmyvkolVA7OuK9e/dgrS10dJS26Mo5jMsetnKt1K9jV6NGDSgUCoOfsLAwAEDr1q0N3vvwww9N3GoiIjIJbXAWHS295rHoroGiXpstR4ZpqhD4yNUVCgAKAEoAQ+7dywrqsqmiUGARgDQAAsA1e3u8/9FHWUEdAPTpk+uadVR+lfoeu/379+ttNnzixAmEhoaiR48eurJBgwZh0qRJuuMKFSqUaBuJiKiUKExwJpf9WYjlSdICAjAmJgZztQVbt+Z668qQkh36A7CJjJTqxsZmVWjcGAgPBywt5YdYOexKz5T6wM7d3V3v+IsvvoCfnx+Cg4N1ZRUqVICXl1dJN42IiEqbwiyc+2yum26v07Fj5YdnMzOlLbUAqWcwMxOIjER6ejrGjh2Lb775xqjbffnllwgLC4PS0tIwUBw7Vn7fVbkhVg67UjalPrDLLj09HcuWLcPo0aOhyDZP4ZdffsGyZcvg5eWFrl27Ijw8PM9eu7S0NL0NjpOSkoq13UREVELkgjNjzZghnSuE9DpjhnwP4MWLAICnAMYB+GrSpKxALw8DvL0x59w52Nvb67+RkWFY2dZWft/VnIo64YPKvDL19FevXo2EhAT0799fV/buu++ievXq8Pb2xrFjx/DZZ5/h7NmzWLVqVa7XiYqKQmRkZAm0mIiISpRccGZsj5ZcEJetB/ApgM+fPMHMS5eMulzfxo0x7+hROABS7+GQIUDOoA4oXNJGUSd8UJlXpgK7H374AZ06dYK3t7eubPDgwbo/N2zYEJUrV0a7du1w8eJF+Pn5yV5n/PjxGD16tO44KSkJPj4+xddwIiIqGUU4xy6jeXOEJyfjC+31AGDnzlxP7w1gASAFcjVrAgcOyM/PK8o2F3XCB5V5ZSawu3r1KjZv3pxnTxwABAQEAAAuXLiQa2CnVCqhVCqLvI1ERGRihZhjlzF2LNQxMZgaFyedn8/w6jsAFgJwVKmApUuBnD15xi47Uph5gYU5l8xSmQnsFi9eDA8PD3Tp0iXPekeOHAEAVK5cuQRaRUREpUoB5thlZmZi0qRJeqsq5KUHgEXBwXC2sZGSJrR27QLeew/IPsXnvfeMb3NhFhTmYsSUQ5kI7DQaDRYvXox+/frBKtuk0IsXL2L58uXo3Lkz3NzccOzYMYwaNQpBQUFo1KiRCVtMRETFTi5xII85dpmZmZg6dSpU+ezqoNWtWzf8cPs2XLIPv2p7xXL2kk2YIK1b9zwBVmEWFOZixJRDmQjsNm/ejGvXruH999/XK7exscHmzZsxe/ZsPH78GD4+PujevTsmTpxoopYSEVGhFCTLUy5xINs2XhohEPXzz5hoZCD3xuuv48d69VDx4MGse9epo1/p2jX5XjIGWFRKlInArn379hDZJ68+4+Pjg23btpmgRUREVGhyQZxcsKYtzxlI5Ugc0GzfjhmXLmF89ns8W5pETlcASwC4AkC7dsBLLxneWw6DOCrFykRgR0REZZyxQZxclmcuS3poWrTAl9HR0M2iyysYA9C5c2f8/PPPcHNzA9q00d8JIjMT2LZN/97btknbdmWfg9enT+G+B6JixsCOiIiK35QpWckF0dGARiMtHZI9kNq+HWjeXD8x4ZVXdMOrAsDXQuATlQowYni1A4ClY8fCferUrKBy3jwpqLx2Tb/ytWtSm7K7dAnYtCn3bbyISiEGdkREVPyWLjU8zrl+6NOnQFyc7lAA+Hb5cozMYzg1u5CaNfHL9u3w+N//8u8ZlJOYaHjMYVcqYxjYERGRaeToNRNXr2LenTsYnr0wj6CuTcWK+PXhQ3hqC/z8AG9vw0BMbnhXboh1+3YgNjarrEmTAn4gItOzMHUDiIioHHj3XYNjIQTmA1A8+7G4cgXDnzzJ9RJBAG4CEJGREEJgy8cfZwV1ANCihfyJrVpJy5IAWcuThIdLQ8OhodJreDiwfr00987VVXpdv/55Py2RybDHjoiIip+lJQSknRo+BKQ5d/lo6eyMPw4dkraR7NzZcNHhnKslyKyeAMD45UmsrIAtWwrwoYhKHwZ2RERkyNj15OTqAcC0aRDbt+OHChUwaM0ao27Z3NkZf5w4gapVq+q/MWmS/KLDu3fr18t5rMV5clSOMLAjIirvjF2KRC44ylFvyeHDGLB6tVG3bValClbeuAEfQBoiHT0ayBnUAblvdM99UokMMLAjIirvjF1PTsbSP/5A3+z18gjq/AH8CaA6APj6AufOyff25ZRbAMd9UokMMLAjIjIHBdmKK6e4OP0gLi5Oukb29eSeJSYsX74cvXv3NuqyTQCsAuDbpg1w9aq0LpyWQmH8EGluARyHWIkMMLAjIiot8pivlm/AZuzQqZzMTMPjp08BAL8DeAeQMke1CwznoiGAv5o3h5+9vf56cZaWhdvBgQEckdEY2BERlRZywZlGY7hjg1pteK6RQ6eyrl7V/XElgB5bt+pvt5WLFypVwt+9eqHWnDlZhe3bAxYWQExM1tBpYKAUkHIHB6Jix8COiKi0kAvOci7Qu3SpfGD3nIkEq1atQvfLl42qW8fCAms0GvyftiAzE6hYUb+SENJyJFu36i9Pwl43ohLBBYqJiEoLuYV0jTVhghTwhYZKr7n0iP29ahUUCoXup3v37rleshaA05C29hKtW+OMUpkV1AFAaqr8kiMzZkiB3YMHWcuTEFGJYGBHRFTcMjKk+WXt20uvGRny9eSCs5xz0QoyNw3A2rVr9QK5N/II5HwBnAQgwsMhUlJwvk0b1NXuwrBhA9Csmf4JzZrJB6OFGRYmokLhUCwRUXEzNrFBbrgyPNxwblpqqv5ODOvXA1FRwKRJWA+gS3Q0oFLl26xqAP6pWhUN3n9fP7FBoQBsbQ13Ydi40fC+2kSOnGvgcX05IpNgYEdEVNwK04MlF+y1b6/brH5jbCw62dkZdakqTk5Y7+iIRjduZBVaWxu/g4NcsAcYto/ryxGZDAM7IqLiJpfY8Jzrzv3777/o8Cyoy4+XjQ02pKejibYgIABITweyB3bVqhX9Dg5MlCAyGQZ2RETFTa4HS254VluerV7Mli0I6dDBqNu4A9gI4CUACA4G2rbNuoc2YNu2Tf8kS0v2sBGZEYUQ2vGBvN28eRPe3t7F3R6TSEpKgrOzMxITE+Hk5GTq5hBRedC+vf7ODqGhQKtWiFWp0NbIS7gC2ASgadu2UuAWE5P1Zrt2wLp1hnPiOnfWDeMCkBIj5IZXiajUKEicYnRWbP369bF8+fJCN46IqFSRy1hNTZV6u9zcpNfUVOPPNVbz5gCAOEhDJ4roaCjyCeqcAex9+WUpaxXAfQBNAaBlSyAoSD87NShIftkRS0v9i+Y8JqIyzejAburUqRgyZAh69OiBBw8eFGebdNRqtV6avkKhQN26dXXvp6amIiwsDG5ubnBwcED37t1x+/btEmkbEZkJ7ZBodLT0Om1aVq/WgwfSa+fOxp+bT1C4Y8cOKJVKKCZNggJAMIBMmUsDgIONDXa/9JK0jhyABADNHBwMh1O3bZNfKkVuD9jAQP0AMDCwYN8XEZVqRs+x++ijj9CpUycMHDgQL7zwAhYtWoSuXbsWZ9sASD2Fm7PtOWiVbXLxqFGj8M8//2DFihVwdnbGsGHD0K1bN+zcubPY20VEZkIuY/XoUf06OY/zOnfr1qyhzthY7GrZEiGnTyMlJSXfptjZ2SG6bl20vHo1a+j01Vf1K1lYAHv26Jft3y+fsKDRGB5zPh2RWStQ8oSvry+2bNmCuXPnolu3bqhXr55eoAUAhw4dKtoGWlnBy8vLoDwxMRE//PADli9fjrZtpcGLxYsXo169etizZw9eeeWVIm0HEZmpFi3057q1aCENqWafh9a4sXwWq0w26Z4vv0QogEfac/P4N9EGwGYAgQpF1jZh2mQH7dBpUJA0B057j6Ag6ZrZA0VbW/n2yQ27MmOVyKwVOCv26tWrWLVqFSpWrIjXX3/dILAraufPn4e3tzdsbW3RvHlzREVFoVq1ajh48CCePn2KkJAQXd26deuiWrVq2L17d56BXVpaGtLS0nTHSUlJxfoZiKiYPefSIQCyetyyH2uTDLInHeSSxbr/xg2E/vgjEjMy8l0U2MrKCps3b0ZwcLB8mzt3NuwBXL9eOs5eLyMDmDw568LDhsm3LzBQSqjQBoUcdiUyewWKyhYtWoRPPvkEISEhOHnyJNzd3YurXQCAgIAALFmyBHXq1MGtW7cQGRmJwMBAnDhxAvHx8bCxsYGLi4veOZ6enoiPj8/zulFRUYiMjCzGlhNRgRQmMAOM39lBTs6pGzt3yi/E+2zY9SCA9kLggUqVbyCnABCzcSPayC1XItdzJreenFy9iAip/HmCQiIya0b/y9mxY0fs27cPc+fORd++fYuzTTqdOnXS/blRo0YICAhA9erV8ccff8DOyJXW5YwfPx6jR4/WHSclJcHHx6dQbSUiI8kFcYUJzIDC7eyQM5M1x/Hhw4fRoUMH3L1716jLRUdH640kFIix898KExQSkVkzOrDLzMzEsWPHULVq1eJsT55cXFzwf//3f7hw4QJCQ0ORnp6OhIQEvV6727dvy87Jy06pVEKpVBZza4lIllwQV9hN4wuzc8K1a3qHVy5eRM+XX8b+AweMOn3Tpk1o37593pWM7ZEsTCDGpAgiQgECu+jsk4tN5NGjR7h48SLee+89+Pv7w9raGjExMejevTsA4OzZs7h27RqaP1sfiohKIbkgrrBbbskFNUaef+3+fUwD8L224L//pJ9crAfQCZCWFfn3X+M+c2F7JI3B3jkiQinfUmzMmDHo2rUrqlevjps3b0KlUsHS0hK9evWCs7MzBg4ciNGjR8PV1RVOTk4YPnw4mjdvzoxYotJMLogzdsut3AIXuaBm0iTZZIfrn32GqD/+wPw8grfs1gHo8mxXCIPtuYxV2B5JIiIjlerA7r///kOvXr1w//59uLu7o1WrVtizZ48uaePrr7+GhYUFunfvjrS0NHTo0AHfffediVtNRHmSC+LkArOCBENyvXPPzv8PwBdCYJ4RyQ6vAlB5e6PpkCGGQVxhhjoLM1RMRFQARu8Va864VyxRKZS9x027zltuPXbZ6t4E8EVAAObs3ZvvLTpXqgTVG2+g2f/+l1WoUgETJxYuSzenwmb9ElG5VpA4hYEdGNgRlUpGBkO3bt3C9IAAfHP9er6X7FS7NlTnzyMAyAoWtcO+DLqIqJRiYFdADOyICsiEPVDxFy9ixksv4WsjFhbv0KEDVCpVVkJVaqrhwsO2tsXcYiKiwilInGJRQm0iInOiTWyIjpZep00r3PUyMqTh1Pbtpddsa8ndvn0bY8aMgUKhgEKhQOVatXIN6kIB7AAgQkIghMDGjRv1s+RnzJC26nrwIGvLLiIiM8LAjogKLi5OP7EhLk7qDWvbFnBzk15TU42/XrZA8Y5KhbGtW+sCOS8vL3z55Zeyp7UDEGdpCREZCaFQ4F8ALfPaOovZqURk5jiRhIgKTqMxPO7cGYiNlY5jY6XjnNtyybh37x5mLV6M6dlnheTc5uuZ1q1bQ33mDIKzbxvo42N8xiqzU4nIzDGwI6KCUygMj48c0S87elR2Lt79xER8+eWXiIqKyvc2QQAiAbQGgNatpYAxIQHw9ZVeXVyAw4eNX5yXuzMQkZljYEdUHhR1skPOnCshpGQEbY8dIB1Pm4YHKhW+AjA1OjrfdeQCraygbtAAbXbtgsLNDUhJyXpTu3zJt98CiYnSnxMTpWNjd1zg7gxEZOYY2BGVB0W9pZWlpeHx2rVA5854ePgwvnZ2xuTYWP1AT0ZLAOo+fdCuVi0oIiOlAPToUWDmTClbNXtgp81eNXaeHNeOI6JyiMkTROWBXLJDHpmo+QoM1A3HJgBQZ2RAYWcHRWwsXBMSMPnqVdnTmjs5YZOXFzQABKQM1pBdu6DYudMwWAsL0z9Ze9yqVdZQcF7z5Io6c5eIqAzg/74SlQdyyQ5TpgCRkdJxdLRUplbne6nExER8o9FAlX04dutW2boBTk5QJyWhAwAFADRrBly6ZFgxt/1jra0N58MZO0+OGbBEVA4xsCMqD+SGTpcu1S9bulR2K62kBw/w7SuvQHX5MnKEhwZeBqAG0AmAIjRUukb2bcECA4GWLbMCSgB47z3j948FjJ8nxwxYIiqHGNgRlQeBgUBMjH6AJddzNm0aklUqzAGgio5GRj7JDv7+/lCr1ejSpQsUarU0pKvVvHnuvWsWFsYFcYXBDFgiKocY2BGVRkU98X/sWGm4VLuV1tixQGYmMGkSkgHMBaC6cgVP8wnkXgSgdnBA16QkKOSWPMl5LBewFWQuX2EwA5aIyiEGdkSlUVFnsWq30hICj2JjMa9rV6i2b0da9jo55+EBaOzlBXWlSnjtxImsTKuXXzYM4gBg1668j7WK+rMREZEOs2KJSiO5LFZj5dja6/H9+5i5bBkqCAEFAEcA4zZvRlpamsGpDRs0wJ9vv43MkBCIyEgcuX4db+zfD4s2bQBXV6BNG2D9evn7GputyqQGIqJiwx47ouJi7HCqXD25LFYjPenQAfPj4qAC8Dg2FqhUKde69T08oPbyQrc334TFxIny7bOyMmprMG7rRURkegzsiIqLsUOOcvXkslhzkZKSggULFkClUiE5OTnPJtWzt4e6c2e8tWwZLL74QrrvnTvA8eNSQkNhhkS5rRcRkckxsCMqLsYOOcrVa9EiK8gDpONnUlJSsHDhQqhUKiRqt9bKRR0A6hdeQI9Dh2A5fbp07QYNsrJSTTEkyqQGIqJiw8COqLgYO+QoVy9b5mgqgEV790Ll6oqHDx/mecvatWtDPWEC3v7pJ1geOyZlwK5fD0yfbtgryCFRIiKzw8COqLgYO+SYo17aJ5/gf9WrQwXgvrbOpk2yp/r5+UGtVqNXr16wzD5c27+/fkW53jltEgSHRImIzAYDO6LiYuSQY1paGn7ctw+qrVtxNzoayGMtOd+KFaH29sa73bvDKjxcKpw2DejUKe8EDbneOQ6JEhGZnVId2EVFRWHVqlU4c+YM7Ozs0KJFC0yfPh116tTR1WndujW2bdumd96QIUOwYMGCkm4ulRdyWayA0Rmw6ZMmYfHKlVBdv47bjx7leavqkLbo6lOjBqwGDJCGUx8+BE6dykqoMCZBgwkLRETlQqkO7LZt24awsDC8/PLLyMjIwIQJE9C+fXucOnUK9vb2unqDBg3CpGxbGVWoUMEUzSVzJBfEyWWxArkGWOnp6ViyZAnUajVu3bqV5+18AES+8AL6vPkmrKdOzXqjb9/ckx2MSYBg7xwRUblQqgO7jRs36h0vWbIEHh4eOHjwIIKCgnTlFSpUgJeXl9HXTUtL01ucNSkpqfCNJfMkF8Rt364fTG3fLg1vPit7KgR++u03qBcuxI0bN/K8fBWlEpEdOqDvmjWwBqTrvP22FEDa2BgGlHLJDnKJF0W5HVlRX4+IiIpNmfrXWbu0g6urq175L7/8gmXLlsHLywtdu3ZFeHh4nr12UVFRiIyMLNa2kpmQ6yV7+lSvytO0NCx1dYUawHVt4enTsper7OiIyORk9ANgo1BIQdLYsUDnzvr7uMr1sOU1nJpfj2Jheuu4BRgRUZmhEEL7W6t002g0eO2115CQkIAd2YabFi5ciOrVq8Pb2xvHjh3DZ599hmbNmmHVqlW5Xkuux87HxweJiYlwcnIq1s9BpVh+w64KBaBWI2PxYiy7cgVqAFfzuaSnpyciIyMxYMAA2NjYGH2PQgVO7dsD0dFZx6GhwL//lp7rERFRgSQlJcHZ2dmoOKXM9NiFhYXhxIkTekEdAAwePFj354YNG6Jy5cpo164dLl68CD8/P9lrKZVKKJXKYm0vlUFyPVMTJiAjMxPL//wT6ps3cTmPjFUAcHd3R2RkJN5//335v2NyPXFyQ7uFUdTr03G9OyKiMqNMBHbDhg3DunXrEBcXh6pVq+ZZNyAgAABw4cKFXAM7KmMKO8fL2CzWZ8OumQB+FQLqL77AxXwCOTcAkZ06YeCqVbC1tX2+dmdm5n1cUEWdAcuMWiKiMqNUB3ZCCAwfPhx//fUXtm7dCl9f33zPOXLkCACgcuXKxdw6KjGFneOVTxZrZnQ0fj92DOpDh3A++3kpKQaXqlixIiIjIjDo/n3Y7t2bd8BmbLstLPI+LqiizoBlRi0RUZlRqgO7sLAwLF++HH///TccHR0RHx8PAHB2doadnR0uXryI5cuXo3PnznBzc8OxY8cwatQoBAUFoVGjRiZuPRWZwu5pmmOoMzMuDivi46EWAme1df78U/ZUZ2dnREZGYvDgwbCzsyuedgcFAVu2ZA11Zsv4JiIiKohCdg0Ur/nz5yMxMRGtW7dG5cqVdT+///47AMDGxgabN29G+/btUbduXXzyySfo3r071q5da+KWU5Fq1UoKeIDnmuOlycjAHwBeAKAAYBUTg14nT2YFddk4AfgawGMAIjwcCffuYURiIuxefx2YNElvD9cia/eECVLPXmio9MqhTiIiek6luscuv4RdHx8fg10nyAwVZI5XRgY0U6Zg1V9/QR0fj5N37uR5aQcAkQA+DApChePHpV0dtObOlYYhZRIqjJo7Z2y7OdRJRERFpFQHdmRGCpMAkU/go9FosHr1aqjVahw/fjzPS1UAEBkSgqHnzsH+2rWsN65dM5xTl5IiP5xq7Nw5BmxERFTCSvVQLJkRbTAUHS29TpsmBXuTJknrpOU1zPnoEeDrC1hbA76+EMnJWL16NZo0aQKFQgFLS0t0795dNqiztbDAdF9fJAMQkIZYxzx9CvvkZP2KiYmAp6d+maen/HBqYef8ERERFRP22FHJkAuGJk+WAjpACvgyMwGZHUFEgwZYe/Uq1AAOX7kC5LE4o42lJSIzMxEGwFGhAFQq4Jtv9CsdPw40aQLExmaVNWkCXLmiX8/CQn44NbetvYiIiEyMgR2VDLlFbn/6Sb/OsmVAeDjE1Kn4Z/VqqO/cwcGbN/O8rJWFBSJr1sSwHj3gpA0Scw75btkCZJ+L2bAhsH69/jZe69cD9evrX1yhKPjWXkRERCbEwI5KxtixwNat+vuhPgvsBIANANQ3bmC/tXWel7EEoHZxwfArV+D8zTfSsO6FC8AXXwC2tlIQljMQCwrSD+yCgqS6W7bo1+vTJ6sHUXssh3PniIiolGJgRyUjKko39CliY7Fp4ECo797F3ux1su3fq6UAoP78c3z8889wuXULqFpVGkp1cDB+K649e/I+1goPBywt2RNHRERlFgM7Kno5MmDF+PGIXrgQagC7tXWWL8/1dBWAEQAqAkCbNsCUKdJPTsZuxWXsXqfsiSMiojKOgZ05K+weq89JqNWImToVagA7o6OlBIY8hAMYCcC1TRupxyz7tl+WlrmfaOxWXJwTR0RE5QQDO3NWmD1WCxAUCiEQGxsLtVqN7bkNh2bzOYBRn34Kt8OHDYO4wEAgJiardy0wMPe2GLsVF3viiIionGBgZ87klhgxNmDLJyjcunUr1Gq1UTt/jLeywujLl1Gpb9+s5IlJk4AZMwyDuNyWF5FrC3viiIiI9DCwM2dyc8vk1o4LDzcM9nIEhXFr10K9dStis6/9lovPfHzwyfXrcNcWtGgBLFqUtW5cbKyUTBEeLh3nF5jltiAwe+KIiIj0MLAri+R63QDDMrkerTp19K+1bJk0BJqjR2yHjw/UAGK09Q4cyLU5n7ZsiTFWVvBo21a6x6RJUgCpFRws3SfnfSMjDQOzSZMMe+eMTX4gIiIq5xjYlUVyvW4ywZnsmm5yduzALiGgBhAtRL7JDp988gk+/fRTeHp66gdicXFShd279U/IeZxPWwx659avz3qPQ65ERES54l6xZZFc75ex+5e+9x4AYA+AjgAUly5BER2NlgCic7ndqFGjcOvWLQghIITArFmzpKAOkL+v3DIkz+6bsx0G5PZm1Q65/vuv9FoCmb1ERERlEX9Dmot8hiv37dsHtVqNDRs25HupEcOH47Px41G5cuXnu6+2507LwgKYOFF6za/XjQkRREREz42BnakUZo05Hx/g0iX94xxbdu1v2xaRr76Kf/75J9/LDQ8Lw2e2tqhy7FjB25JbIJZzGRJjEx2YEEFERPTcGNiZSmHWmLt2zeD44MiRiIyNxVpAyjoNDMz19LCwMIwbNw5Vq1aVCuQSFoxti1wgxl43IiIik2BgZyrGzomTo1DgMAA1gDUAcPky8P33uVYfOnQoxo8fDx8fn6Jvixz2uhEREZkEkydMRS5JIA9HjhzBm2++CYVCAcWlS3gJz4I6GUMAXBk1Spfs8N133+Ue1D1HW4iIiKh0Yo+dqeQzXHns2DFERkZi1apV+V5q0EsvYcLvv6PG8uX61zN2Hh+HTomIiMyCQgjtGFzZNm/ePMycORPx8fFo3Lgx5syZg2bNmhl1blJSEpydnZGYmAgnJ6dibqm8EydOIDIyEitXrsy37gdVqmDCjRvw1RaEhkpLgeSUfe6cQiH9mUOkREREZUpB4hSzGIr9/fffMXr0aKhUKhw6dAiNGzdGhw4dcOfOHVM3LVcnT57E22+/LQ2tKhRo2LBhrkHd+++/j4sXL+qGVhcNHgzfnEOnGRlSINe+vfSakVH0c+eIiIioVDOLodivvvoKgwYNwoABAwAACxYswD///IMff/wR48aNM3HrJJcuXcLnn3+O3377Ld+6/fv3x+eff45atWrJV5AbOpXLsuVWXEREROVKmQ/s0tPTcfDgQYwfP15XZmFhgZCQEOzOZSurtLQ0pKWl6Y6TkpKKtY3XL1+Gn59fru/3BTDx449R+5tvjLugXNYpt+IiIiIq98r8UOy9e/eQmZmZtcXVM56enoiPj5c9JyoqCs7OzrqfPDNGi4By/ny94z6NGuFMixYQAASAnwDUPn1afjjVWNyKi4iIqNwrl7/px48fj9GjR+uOk5KSijW48zh0CHoZKu7uQMuWwK5dWWXNmwOTJ0sBHQBER0t7rEZGGncTZrYSERGVe2U+sKtUqRIsLS1x+/ZtvfLbt2/Dy8tL9hylUgmlUlkSzZPk7HnLyMjqXdNSKIClS/XLli0zPrDjosBERETlXpkfirWxsYG/vz9iYmJ0ZRqNBjExMWjevLkJW5bN9euGx9l76wDDYyIiIqICKvOBHQCMHj0aixYtwk8//YTTp09j6NChePz4sS5LtlSSmxP33nv6dXIeExEREeWhzA/FAsDbb7+Nu3fvIiIiAvHx8WjSpAk2btxokFBhMu+9pz+k+t57uc+Js7DgPDkiIiJ6Lmaz80RhFPvOE8Zu7UVERESUQ0HiFEYXJYGJDURERFQCzGKOHRERERExsCMiIiIyGxyKBaCdZljcW4sRERERFZQ2PjEmLYKBHYDk5GQAKPatxYiIiIieV3JyMpydnfOsw6xYSAsa37x5E46OjlDk3BGiiGi3Lbt+/XrxZN5SgfGZlC58HqUPn0npw2dS+pTEMxFCIDk5Gd7e3rCwyHsWHXvsAFhYWKBq1aolci8nJyf+x1jK8JmULnwepQ+fSenDZ1L6FPczya+nTovJE0RERERmgoEdERERkZlgYFdClEolVCoVlEqlqZtCz/CZlC58HqUPn0npw2dS+pS2Z8LkCSIiIiIzwR47IiIiIjPBwI6IiIjITDCwIyIiIjITDOyIiIiIzAQDOyIiIiIzwcCuBMybNw81atSAra0tAgICsG/fPlM3qdyIiorCyy+/DEdHR3h4eOCNN97A2bNn9eqkpqYiLCwMbm5ucHBwQPfu3XH79m0Ttbh8+eKLL6BQKDBy5EhdGZ9Hybtx4wb69OkDNzc32NnZoWHDhjhw4IDufSEEIiIiULlyZdjZ2SEkJATnz583YYvNW2ZmJsLDw+Hr6ws7Ozv4+flh8uTJehvA85kUr7i4OHTt2hXe3t5QKBRYvXq13vvGfP8PHjxA79694eTkBBcXFwwcOBCPHj0q9rYzsCtmv//+O0aPHg2VSoVDhw6hcePG6NChA+7cuWPqppUL27ZtQ1hYGPbs2YPo6Gg8ffoU7du3x+PHj3V1Ro0ahbVr12LFihXYtm0bbt68iW7dupmw1eXD/v378f3336NRo0Z65XweJevhw4do2bIlrK2tsWHDBpw6dQpffvklKlasqKszY8YMfPvtt1iwYAH27t0Le3t7dOjQAampqSZsufmaPn065s+fj7lz5+L06dOYPn06ZsyYgTlz5ujq8JkUr8ePH6Nx48aYN2+e7PvGfP+9e/fGyZMnER0djXXr1iEuLg6DBw8u/sYLKlbNmjUTYWFhuuPMzEzh7e0toqKiTNiq8uvOnTsCgNi2bZsQQoiEhARhbW0tVqxYoatz+vRpAUDs3r3bVM00e8nJyaJ27doiOjpaBAcHixEjRggh+DxM4bPPPhOtWrXK9X2NRiO8vLzEzJkzdWUJCQlCqVSKX3/9tSSaWO506dJFvP/++3pl3bp1E7179xZC8JmUNADir7/+0h0b8/2fOnVKABD79+/X1dmwYYNQKBTixo0bxdpe9tgVo/T0dBw8eBAhISG6MgsLC4SEhGD37t0mbFn5lZiYCABwdXUFABw8eBBPnz7Ve0Z169ZFtWrV+IyKUVhYGLp06aL3vQN8HqawZs0aNG3aFD169ICHhwdefPFFLFq0SPf+5cuXER8fr/dMnJ2dERAQwGdSTFq0aIGYmBicO3cOAHD06FHs2LEDnTp1AsBnYmrGfP+7d++Gi4sLmjZtqqsTEhICCwsL7N27t1jbZ1WsVy/n7t27h8zMTHh6euqVe3p64syZMyZqVfml0WgwcuRItGzZEg0aNAAAxMfHw8bGBi4uLnp1PT09ER8fb4JWmr/ffvsNhw4dwv79+w3e4/MoeZcuXcL8+fMxevRoTJgwAfv378fHH38MGxsb9OvXT/e9y/07xmdSPMaNG4ekpCTUrVsXlpaWyMzMxNSpU9G7d28A4DMxMWO+//j4eHh4eOi9b2VlBVdX12J/RgzsqNwICwvDiRMnsGPHDlM3pdy6fv06RowYgejoaNja2pq6OQTpf3iaNm2KadOmAQBefPFFnDhxAgsWLEC/fv1M3Lry6Y8//sAvv/yC5cuXo379+jhy5AhGjhwJb29vPhPKF4dii1GlSpVgaWlpkNF3+/ZteHl5mahV5dOwYcOwbt06xMbGomrVqrpyLy8vpKenIyEhQa8+n1HxOHjwIO7cuYOXXnoJVlZWsLKywrZt2/Dtt9/CysoKnp6efB4lrHLlynjhhRf0yurVq4dr164BgO57579jJefTTz/FuHHj8M4776Bhw4Z47733MGrUKERFRQHgMzE1Y75/Ly8vgyTJjIwMPHjwoNifEQO7YmRjYwN/f3/ExMToyjQaDWJiYtC8eXMTtqz8EEJg2LBh+Ouvv7Blyxb4+vrqve/v7w9ra2u9Z3T27Flcu3aNz6gYtGvXDsePH8eRI0d0P02bNkXv3r11f+bzKFktW7Y0WALo3LlzqF69OgDA19cXXl5ees8kKSkJe/fu5TMpJk+ePIGFhf6vZ0tLS2g0GgB8JqZmzPffvHlzJCQk4ODBg7o6W7ZsgUajQUBAQPE2sFhTM0j89ttvQqlUiiVLlohTp06JwYMHCxcXFxEfH2/qppULQ4cOFc7OzmLr1q3i1q1bup8nT57o6nz44YeiWrVqYsuWLeLAgQOiefPmonnz5iZsdfmSPStWCD6PkrZv3z5hZWUlpk6dKs6fPy9++eUXUaFCBbFs2TJdnS+++EK4uLiIv//+Wxw7dky8/vrrwtfXV6SkpJiw5earX79+okqVKmLdunXi8uXLYtWqVaJSpUpi7Nixujp8JsUrOTlZHD58WBw+fFgAEF999ZU4fPiwuHr1qhDCuO+/Y8eO4sUXXxR79+4VO3bsELVr1xa9evUq9rYzsCsBc+bMEdWqVRM2NjaiWbNmYs+ePaZuUrkBQPZn8eLFujopKSnio48+EhUrVhQVKlQQb775prh165bpGl3O5Azs+DxK3tq1a0WDBg2EUqkUdevWFQsXLtR7X6PRiPDwcOHp6SmUSqVo166dOHv2rIlaa/6SkpLEiBEjRLVq1YStra2oWbOm+Pzzz0VaWpquDp9J8YqNjZX93dGvXz8hhHHf//3790WvXr2Eg4ODcHJyEgMGDBDJycnF3naFENmWsiYiIiKiMotz7IiIiIjMBAM7IiIiIjPBwI6IiIjITDCwIyIiIjITDOyIiIiIzAQDOyIiIiIzwcCOiIiIyEwwsCMiIiIyEwzsiIgKKTMzEy1atEC3bt30yhMTE+Hj44PPP//cRC0jovKGO08QERWBc+fOoUmTJli0aBF69+4NAOjbty+OHj2K/fv3w8bGxsQtJKLygIEdEVER+fbbb6FWq3Hy5Ens27cPPXr0wP79+9G4cWNTN42IygkGdkRERUQIgbZt28LS0hLHjx/H8OHDMXHiRFM3i4jKEQZ2RERF6MyZM6hXrx4aNmyIQ4cOwcrKytRNIqJyhMkTRERF6Mcff0SFChVw+fJl/Pfff6ZuDhGVM+yxIyIqIrt27UJwcDD+/fdfTJkyBQCwefNmKBQKE7eMiMoL9tgRERWBJ0+eoH///hg6dCjatGmDH374Afv27cOCBQtM3TQiKkfYY0dEVARGjBiB9evX4+jRo6hQoQIA4Pvvv8eYMWNw/Phx1KhRw7QNJKJygYEdEVEhbdu2De3atcPWrVvRqlUrvfc6dOiAjIwMDskSUYlgYEdERERkJjjHjoiIiMhMMLAjIiIiMhMM7IiIiIjMBAM7IiIiIjPBwI6IiIjITDCwIyIiIjITDOyIiIiIzAQDOyIiIiIzwcCOiIiIyEwwsCMiIiIyEwzsiIiIiMwEAzsiIiIiM8HAjoiIiMhMMLAjIiIiMhMM7IiIiIjMBAM7IiIiIjPBwI6IiIjITDCwIyKzp1aroVAoTN2MAqtRowb69++vO966dSsUCgW2bt1qsjYRUenGwI6ohCxZsgQKhQIHDhwwdVPKlJs3b0KtVuPIkSMlds/t27ejZ8+eqFKlCmxsbODs7IyAgABMmjQJt2/fLrF2mMq0adOwevVqo+peuXIFCoVC92NtbY1KlSqhRYsWmDBhAq5du1a8jTWRXbt2Qa1WIyEhwdRNIdLDwI6ISrWbN28iMjKyxAK7iIgIBAUF4eDBg+jfvz/mz5+PadOmoX79+vjyyy/RokWLEmmHnKCgIKSkpCAoKKhY71OQwE6rV69eWLp0KX744QeEh4ejZs2amD17NurVq4fffvuteBpqQrt27UJkZCQDOyp1rEzdACIqPhqNBunp6bC1tTV1U8qE33//HZMnT0bPnj2xdOlS2NjY6L3/9ddf4+uvv87zGkIIpKamws7OrsjbZ2FhUWqf5UsvvYQ+ffrolV29ehXt27dHv379UK9ePTRu3NhErSMqP9hjR2RC/fv3h4ODA27cuIE33ngDDg4OcHd3x5gxY5CZmalXV6PR4JtvvkHDhg1ha2sLd3d3dOzYUW9oV6FQYNiwYfjll19Qv359KJVKbNy4EQBw48YNvP/++/D09IRSqUT9+vXx448/6t1DO4frjz/+QGRkJKpUqQJHR0e89dZbSExMRFpaGkaOHAkPDw84ODhgwIABSEtLM/hcy5Ytg7+/P+zs7ODq6op33nkH169f16vTunVrNGjQAKdOnUKbNm1QoUIFVKlSBTNmzNBrz8svvwwAGDBggG64b8mSJQCkIdMePXqgWrVqUCqV8PHxwahRo5CSkvJczyMiIgKVKlXCDz/8YBDUAYCzszPUarVeWY0aNfDqq69i06ZNaNq0Kezs7PD9998DABYvXoy2bdvCw8MDSqUSL7zwAubPn29wXSEEpkyZgqpVq6JChQpo06YNTp48aVAvtzl2e/fuRceOHeHs7IwKFSogODgYO3fu1KujnWd44cIF9O/fHy4uLnB2dsaAAQPw5MkTXT2FQoHHjx/jp59+0n3f2ef5FUT16tWxZMkSpKen6z1XAEhISMDIkSPh4+MDpVKJWrVqYfr06dBoNHr1fvvtN/j7+8PR0RFOTk5o2LAhvvnmG4NrjRo1CjVq1IBSqUTVqlXRt29f3Lt3T1cnLS0NKpUKtWrV0v1dGTt2rMHfX+1/Q6tXr0aDBg10/61o/zvSfpeffvopAMDX11f3PV25cuW5vieiosQeOyITy8zMRIcOHRAQEIBZs2Zh8+bN+PLLL+Hn54ehQ4fq6g0cOBBLlixBp06d8MEHHyAjIwPbt2/Hnj170LRpU129LVu24I8//sCwYcNQqVIl1KhRA7dv38Yrr7yi+6Xl7u6ODRs2YODAgUhKSsLIkSP12hQVFQU7OzuMGzcOFy5cwJw5c2BtbQ0LCws8fPgQarUae/bswZIlS+Dr64uIiAjduVOnTkV4eDh69uyJDz74AHfv3sWcOXMQFBSEw4cPw8XFRVf34cOH6NixI7p164aePXti5cqV+Oyzz9CwYUN06tQJ9erVw6RJkxAREYHBgwcjMDAQAHTDoStWrMCTJ08wdOhQuLm5Yd++fZgzZw7+++8/rFixokDP4dy5czh37hw++OADODg4FOjcs2fPolevXhgyZAgGDRqEOnXqAADmz5+P+vXr47XXXoOVlRXWrl2Ljz76CBqNBmFhYbrzIyIiMGXKFHTu3BmdO3fGoUOH0L59e6Snp+d77y1btqBTp07w9/eHSqWChYWFLqDcvn07mjVrple/Z8+e8PX1RVRUFA4dOoT//e9/8PDwwPTp0wEAS5cuxQcffIBmzZph8ODBAAA/P78CfR/ZNW/eHH5+foiOjtaVPXnyBMHBwbhx4waGDBmCatWqYdeuXRg/fjxu3bqF2bNnAwCio6PRq1cvtGvXTte+06dPY+fOnRgxYgQA4NGjRwgMDMTp06fx/vvv46WXXsK9e/ewZs0a/Pfff6hUqRI0Gg1ee+017NixA4MHD0a9evVw/PhxfP311zh37pzBsPOOHTuwatUqfPTRR3B0dMS3336L7t2749q1a3Bzc0O3bt1w7tw5/Prrr/j6669RqVIlAIC7u/tzf09ERUYQUYlYvHixACD279+vK+vXr58AICZNmqRX98UXXxT+/v664y1btggA4uOPPza4rkaj0f0ZgLCwsBAnT57UqzNw4EBRuXJlce/ePb3yd955Rzg7O4snT54IIYSIjY0VAESDBg1Eenq6rl6vXr2EQqEQnTp10ju/efPmonr16rrjK1euCEtLSzF16lS9esePHxdWVlZ65cHBwQKA+Pnnn3VlaWlpwsvLS3Tv3l1Xtn//fgFALF682OCza9udXVRUlFAoFOLq1au6MpVKJfL75+7vv/8WAMTs2bP1yjUajbh7967ez9OnT3XvV69eXQAQGzduNKp9HTp0EDVr1tQd37lzR9jY2IguXbroPcsJEyYIAKJfv366Mu3ziY2N1bWtdu3aokOHDnrnPnnyRPj6+orQ0FCD7+D999/Xa8+bb74p3Nzc9Mrs7e317puXy5cvCwBi5syZudZ5/fXXBQCRmJgohBBi8uTJwt7eXpw7d06v3rhx44SlpaW4du2aEEKIESNGCCcnJ5GRkZHrtSMiIgQAsWrVKoP3tN/J0qVLhYWFhdi+fbve+wsWLBAAxM6dO3VlAISNjY24cOGCruzo0aMCgJgzZ46ubObMmQKAuHz5cq5tIzIFDsUSlQIffvih3nFgYCAuXbqkO/7zzz+hUCigUqkMzs25jEdwcDBeeOEF3bEQAn/++Se6du0KIQTu3bun++nQoQMSExNx6NAhvWv07dsX1tbWuuOAgAAIIfD+++/r1QsICMD169eRkZEBAFi1ahU0Gg169uypdx8vLy/Url0bsbGxeuc7ODjozcuysbFBs2bN9D57XrLPY3v8+DHu3buHFi1aQAiBw4cPG3UNraSkJF2bsktMTIS7u7veT85EDl9fX3To0CHP9iUmJuLevXsIDg7GpUuXkJiYCADYvHkz0tPTMXz4cL1nmbMXVc6RI0dw/vx5vPvuu7h//77u+378+DHatWuHuLg4g6FNub9r9+/f133+4qD9TpOTkwFIPa2BgYGoWLGi3t+TkJAQZGZmIi4uDgDg4uKCx48f6/X25fTnn3+icePGePPNNw3e036fK1asQL169VC3bl29+7Vt2xYADP5ehoSE6PVSNmrUCE5OTkb/vSQyJQ7FEpmYdr5cdhUrVsTDhw91xxcvXoS3tzdcXV3zvZ6vr6/e8d27d5GQkICFCxdi4cKFsufcuXNH77hatWp6x87OzgAAHx8fg3KNRoPExES4ubnh/PnzEEKgdu3asvfJHiwCQNWqVQ0C04oVK+LYsWO5fDp9165dQ0REBNasWaP3fQHQBU7GcnR0BCAN7WXn4OCgCyz+/fdfzJw50+DcnN+51s6dO6FSqbB79269eWza9jk7O+Pq1asAYPCdubu7o2LFinm2+fz58wCAfv365VonMTFR7zo5n632vYcPH8LJySnP+z0v7Xeq/Y7Pnz+PY8eO5Tp0qf37+NFHH+GPP/5Ap06dUKVKFbRv3x49e/ZEx44ddXUvXryI7t2753n/8+fP4/Tp0/neTyvndwQY/jdJVFoxsCMyMUtLyyK9Xs5sTG2PTZ8+fXINABo1amRUm3IrF0Lo7qVQKLBhwwbZujl7w/K7Xl4yMzMRGhqKBw8e4LPPPkPdunVhb2+PGzduoH///gY9VfmpW7cuAODEiRN65VZWVggJCQEA/Pfff7LnymXAXrx4Ee3atUPdunXx1VdfwcfHBzY2Nli/fj2+/vrrArdPjvYaM2fORJMmTWTrFOV3/rxOnDgBDw8PXeCo0WgQGhqKsWPHytb/v//7PwCAh4cHjhw5gk2bNmHDhg3YsGEDFi9ejL59++Knn34y+v4ajQYNGzbEV199Jft+zv9hMcV3RFRUGNgRlQF+fn7YtGkTHjx4YFSvXXbu7u5wdHREZmamLkApLn5+fhBCwNfXV/fLubBy2zHi+PHjOHfuHH766Sf07dtXV57XsF1e6tSpg9q1a2P16tWYPXs27O3tn+s6WmvXrkVaWhrWrFmj1wOUc9ivevXqAKRepZo1a+rK7969m28PkXa40MnJqUifbVHu0rF7925cvHhRb8jdz88Pjx49MqrNNjY26Nq1K7p27QqNRoOPPvoI33//PcLDw1GrVi34+fkZBOM5+fn54ejRo2jXrl2RfbayuJMJlQ+cY0dUBnTv3h1CCERGRhq8l18vgqWlJbp3744///xT9hfg3bt3i6yd3bp1g6WlJSIjIw3aJYTA/fv3C3xNbYCVcyFYba9K9vsIIQyWwigItVqNe/fuYdCgQXj69KnB+wXpsZFrX2JiIhYvXqxXLyQkBNbW1pgzZ45eXW1maF78/f3h5+eHWbNmGQwhA8//bO3t7Ytk4d2rV6+if//+sLGx0S0PAkiZubt378amTZsMzklISNDN2cz598XCwkLXu6xdpqR79+44evQo/vrrL4Nrab/Pnj174saNG1i0aJFBnZSUFDx+/LjAny23v5dEpsYeO6IyoE2bNnjvvffw7bff4vz58+jYsSM0Gg22b9+ONm3aYNiwYXme/8UXXyA2NhYBAQEYNGgQXnjhBTx48ACHDh3C5s2b8eDBgyJpp5+fH6ZMmYLx48fjypUreOONN+Do6IjLly/jr7/+wuDBgzFmzJgCX9PFxQULFiyAo6Mj7O3tERAQgLp168LPzw9jxozBjRs34OTkhD///LNQ86DeffddnDhxAlFRUdi3bx/eeecd+Pr64vHjxzhx4gR+/fVXODo65jv3DQDat2+v620aMmQIHj16hEWLFsHDwwO3bt3S1dOuWxgVFYVXX30VnTt3xuHDh7FhwwbdMhq5sbCwwP/+9z906tQJ9evXx4ABA1ClShXcuHEDsbGxcHJywtq1awv8Pfj7+2Pz5s346quv4O3tDV9fXwQEBOR5zqFDh7Bs2TJoNBokJCRg//79uqSfpUuX6g33f/rpp1izZg1effVV9O/fH/7+/nj8+DGOHz+OlStX4sqVK6hUqRI++OADPHjwAG3btkXVqlVx9epVzJkzB02aNEG9evV011q5ciV69OiB999/H/7+/njw4AHWrFmDBQsWoHHjxnjvvffwxx9/4MMPP0RsbCxatmyJzMxMnDlzBn/88YduDcKCfkcA8Pnnn+Odd96BtbU1unbtWuieXqJCK9kkXKLyK7flTuzt7Q3qyi3PkZGRIWbOnCnq1q0rbGxshLu7u+jUqZM4ePCgrg4AERYWJnv/27dvi7CwMOHj4yOsra2Fl5eXaNeunVi4cKGujnY5jRUrVuTb9uztvHv3rl75n3/+KVq1aiXs7e2Fvb29qFu3rggLCxNnz57V1QkODhb169c3aGe/fv30llARQlqK5IUXXhBWVlZ6S5+cOnVKhISECAcHB1GpUiUxaNAg3dIU2ZdHMWa5k+y2bt0q3nrrLVG5cmVhbW0tnJycRNOmTYVKpRK3bt3Sq1u9enXRpUsX2eusWbNGNGrUSNja2ooaNWqI6dOnix9//NFgmYzMzEwRGRkpKleuLOzs7ETr1q3FiRMnRPXq1fNc7kTr8OHDolu3bsLNzU0olUpRvXp10bNnTxETE2PwHeR8Vtpnm709Z86cEUFBQcLOzs5gyZWctMudaH+srKyEq6urCAgIEOPHj9dbdia75ORkMX78eFGrVi1hY2MjKlWqJFq0aCFmzZqlW2pn5cqVon379sLDw0PY2NiIatWqiSFDhhg8g/v374thw4aJKlWqCBsbG1G1alXRr18/veV90tPTxfTp00X9+vWFUqkUFStWFP7+/iIyMlK3DIsQuf83lPNZCCEt21KlShVhYWHBpU+o1FAIwdmgREREROaAc+yIiIiIzAQDOyIiIiIzwcCOiIiIyEwwsCMiIiIyEwzsiIiIiMwEAzsiIiIiM8EFiiHtI3jz5k04OjpymxgiIiIqVYQQSE5Ohre3Nyws8u6TY2AH4ObNmwabQBMRERGVJtevX0fVqlXzrMPADoCjoyMA6QtzcnIycWuIiIiIsiQlJcHHx0cXr+SFgR2gG351cnJiYEdERESlkjHTxZg8QURERGQmGNgRERERmQkGdkRERETPIzUVaNsWcHOTXlNTTd0izrEzlkajQXp6uqmbUSbZ2Njkm55NRERU5nTuDMTGSn+OjZWOt2wxaZMY2BkhPT0dly9fhkajMXVTyiQLCwv4+vrCxsbG1E0hIiIqOkeO5H1sAgzs8iGEwK1bt2BpaQkfHx/2PBWQdvHnW7duoVq1alwAmoiIzIezM/Dwof6xiTGwy0dGRgaePHkCb29vVKhQwdTNKZPc3d1x8+ZNZGRkwNra2tTNISIiKho1awJXrugfm5hJu5/i4uLQtWtXeHt7Q6FQYPXq1XrvCyEQERGBypUrw87ODiEhITh//rxenQcPHqB3795wcnKCi4sLBg4ciEePHhVZGzMzMwGAw4iFoP3utN8lERFRqZGRAUyaBLRvL71mZBh/bnAwoB2JUiikYxMzaWD3+PFjNG7cGPPmzZN9f8aMGfj222+xYMEC7N27F/b29ujQoQNSs2Wd9O7dGydPnkR0dDTWrVuHuLg4DB48uMjbyiHE58fvjoiISq1p0wC1GoiOll6nTTP+3AkTpHNCQ6XXCROKp40FYNKh2E6dOqFTp06y7wkhMHv2bEycOBGvv/46AODnn3+Gp6cnVq9ejXfeeQenT5/Gxo0bsX//fjRt2hQAMGfOHHTu3BmzZs2Ct7d3iX0WIiIiKoN27ACEkP4shHQsJyNDCvp27EBKQAC+d3GBevJkJCYmonOlSvinVauSa3MeSm0mwOXLlxEfH4+QkBBdmbOzMwICArB7924AwO7du+Hi4qIL6gAgJCQEFhYW2Lt3b67XTktLQ1JSkt4PERERlQGFGTqV06qV/nCqTICWmpqKb197Da4qFRTR0agwZQpGjRmDxMREAMD6e/cK3ttXTEptYBcfHw8A8PT01Cv39PTUvRcfHw8PDw+9962srODq6qqrIycqKgrOzs66Hx8fnyJufekRHx+PESNGoFatWrC1tYWnpydatmyJ+fPno1mzZlAoFLn+tG7d2tTNJyIic1PYwKwwQ6dyZIZTU1NTMXfuXFSqVAkKhQJ2dnYYsWEDHsqc7gfgLJB3b18JKpdZsePHj8fo0aN1x0lJSWYZ3F26dAktW7aEi4sLpk2bhoYNG0KpVOL48eNYuHAhhg0bhvbt2wMArl+/jmbNmmHz5s2oX78+ACaMEBFRMdAGZkIAmzdLZRERxp9v7NBpaqq0YPDRo0DjxsD69YCVlW44Fa1aSUFdairSfvwRP1y/DnVMDO6qVHne3heAGsC7QUGwatcu67Pk0ttX0kptYOfl5QUAuH37NipXrqwrv337Npo0aaKrc+fOHb3zMjIy8ODBA935cpRKJZRKZdE3upT56KOPYGVlhQMHDsDe3l5XXrNmTbz++usQQugSG7QJKW5ubnl+d0RERIVibGCWm1atpIAwezAlF8TJ7QrRujWgViNNCCyOjoZ65kzczmcljerVq0OtVqN3ZCSssy9tcv16VrJE9kDRxEptYOfr6wsvLy/ExMToArmkpCTs3bsXQ4cOBQA0b94cCQkJOHjwIPz9/QEAW7ZsgUajQUBAgKmaXircv38f//77L6ZNm6YX1GXHbFUiIipxcoFZQcgFU+3bGwZx2XaBSAewZO9eqHfuxC1tUAkAMkGdDwD1woV477//YL17t3SPPn2AyZP1KyoUUg9gQXobS4BJ59g9evQIR44cwZFnX/7ly5dx5MgRXLt2DQqFAiNHjsSUKVOwZs0aHD9+HH379oW3tzfeeOMNAEC9evXQsWNHDBo0CPv27cPOnTsxbNgwvPPOO6UvI7aoJ3vm48KFCxBCoE6dOnrllSpVgoODAxwcHPDZZ58VaxuIiIgMjB0r9Zy5ukqvY8fK/44syO/No0f1Dp8eOYL/WVigKgAFACWAIU+e4JbMnu9VLC2xCEAaAAHgWo0aeP/WLVhPnqw/j69PH/0Tcx6XEibtsTtw4ADatGmjO9bOe+vXrx+WLFmCsWPH4vHjxxg8eDASEhLQqlUrbNy4Eba2trpzfvnlFwwbNgzt2rWDhYUFunfvjm+//bbEP0u+CjunoIjs27cPGo0GvXv3RlpaWonfn4iIyrkZM4CtW6Xfh1u3SseA4e9IubKICNnfp08dHbH0wQOoAVwH9Lf5yqEypDly/QHYVKwIXLsGNGwI/PcfULUqcPw40K2b4XDx+vWApWWpGnaVY9LArnXr1hDZu0RzUCgUmDRpEiZNmpRrHVdXVyxfvrw4mle0CjunoIBq1aoFhUKBs2fP6pXXfLbdiZ2dXbHen4iISFZuvw+NLduxAxlCYBkAtRC4mk+ygyekQG5AeDiUs2YBKSlZb6amAg4OwOXL+ifJDReXwmFXOaV2uROzY8Q6OUXJzc0NoaGhmDt3Lh4/flys9yIiIpIlN5zavLl+nebN5X9HZivLAPCzgwNq1qwJRXQ0rAEMAHBV5pbuAOZ16YLUR48gIiMRHxqKDyMjoYyIAJo106+c81irFO4oYaxSmzxhdkyQOfPdd9+hZcuWaNq0KdRqNRo1agQLCwvs378fZ86c0SWcEBERFYtJk7KSDqKjpcDOIkefkkIhzbPbulWX1Zr5ySf4deVKqCtWxMUHD6R6f/0lews3Ozuoo6Lwwb17sN27N+t3rFwP28aNhtmzcspI75wcBnYlxQR/Sfz8/HD48GFMmzYN48ePx3///QelUokXXngBY8aMwUcffVSi7SEionJm7lzD42y7RQEAdu1C5tSp+D02FmoA52NjpeHRXLhYWSEyIwODANgBUiA3YoRx7bG1BbZsMb79ZRCHYs1c5cqVMWfOHFy6dAnp6elITk7G3r17MWbMGFSoUEFXr0aNGhBC6JaWISIiypWxGavP1kjVO27VChoAvwGoC0ARHQ2rKVPQG8B5mUs4AfgawOPPP4cQAg/Dw/GxQiEFdXlNbSrh1ShKC/bYERERUcEYu9LDyy8DcXHQAFgJQK1Q4HQ+yQ4OACJdXfFh48aooF2bDgC0e8AbO7WplKxGUdIY2BEREZmTjAzDbbOsivjXfVycfsZqXJze2xqNBn/99RdUp0/jZPY3njwxuFQFa2tE+vhg6KVL0C2n37Ch4T0zM6VXY6c2lfBqFKUFAzsiIiJzUhI9VRqN3qHIzMTqlSuhGjYMx2/fzvNUWwsLRGo0+AhS7xxatwYuXtSvdP064OurX5Yz6SI/hd3hooxiYEdERGROSqCnSlhYYA0AFYCjgJTRunWrbF0bAJEAwgA4RkRIi/xqA09twJUzsAOAoCAp0UFbLyioYI0shfu4lgQGdkREROakGHqqhBBYt24dVCoVDh8+nGddS0iB3PAaNeDUrx8QGZn1pkIhH3BlZkoJDlp9+hQ+MCvDS5YUBgM7IiIic5JjTTiMHVvgSwghsH79eqhUKhw8eDDPugqFApEqFT5esgTOV65kvWFhAezapV951y75gCs83HC7rnIamBUWAzsiIiJzIrcXq1yAlC3JQrRsiY3+/lBNmoT9+/fnewu1Wo0RI0bAxcUlq1AI/d65996Tgjtjeg8ZxBUZBnZERETmxIg5dkIIRA8YANWyZdgDSLtC5CEiIgIjR45ExYoVpQK5zNuJE6VATm7otJzNczMlBnZERETmRGaOnRACMTExUKlU2JVzeFTGxIkTMWrUKLi6uspXyC3zVq7XjT1xJYqBHRVajRo1MHLkSIwcOdLUTSEiogkTIIRA7Nq1UN29ix0qFZDPosATAIyuXh1u2efIacn1zpXTNeLKAgZ2REREplRECwpv3boVarUa27Zty7fuuHHj8ElGBirNmpVV2K+ffGW53rlyukZcWcDAjgAA6enpsLGxMXUziIjMm1wQ95wLCsfFxUGtViM2+7Zbufj0008xZswYeHh46LfF0TH/+W9yvXPr12e9x7lzpQoDuwISQuCJzJYoJaFChQpQKBRG1W3dujUaNGgAAFi6dCmsra0xdOhQTJo0CQqFAjVq1MDAgQNx/vx5rF69Gt26dcOSJUuwY8cOjB8/HgcOHEClSpXw5ptvIioqCvb20kYvd+7cwcCBA7F582Z4eXlhypQpxfZ5iYjMzpQpWZmj0dHSDg67dhk1rLljxw6o1WrExMTke5tPAHwKwBMAQkOlzNicjM1EleudYxZrqcXAroCePHkCBwcHk9z70aNHugDLGD/99BMGDhyIffv24cCBAxg8eDCqVauGQYMGAQBmzZqFiIgIqJ7Nvbh48SI6duyIKVOm4Mcff8Tdu3cxbNgwDBs2DIsXLwYA9O/fHzdv3kRsbCysra3x8ccf486dO0X/YYmIyjq53rmff9av8/PPQP/+ssOau3btglqtRnQ+GasAMGrUKIwdOxZeXl7SQr85d3YojHK6g0OZJUgkJiYKACIxMdHgvZSUFHHq1CmRkpIihBDi0aNHAoBJfh49emT0ZwoODhb16tUTGo1GV/bZZ5+JevXqCSGEqF69unjjjTf0zhk4cKAYPHiwXtn27duFhYWFSElJEWfPnhUAxL59+3Tvnz59WgAQX3/9da5tyfkdEhGVC5GRQigUQgDSa2SkEBUrSsfan4oVhUhJEaJNG7HbyUl0cHU16vfBCEDcHD1aiKdPpeuGhkqvT5/Kl1GZlleckhN77AqoQoUKePTokcnuXRCvvPKK3tBt8+bN8eWXXyIzMxMA0LRpU736R48exbFjx/DLL7/oyoQQ0Gg0uHz5Ms6dOwcrKyv4+/vr3q9bt67+ApVERGVVESUx6Gzfrj/Eun07ULEi8PAhAGAfAHVqKjbY2eV7qeHNmmFcfDy8r13LKly9GnB2Nn7ZESoXGNgVkEKhKNBwaGmW83M8evQIQ4YMwccff2xQt1q1ajh37lxJNY2I6PkUJjh7ziSGXD37n2itNbdv4/VLl/TrpKTInhrm5IRxSUmoqi24d0/+c3DZEcrBwtQNyE+NGjWgUCgMfsLCwgBISQI53/vwww9N3OrSYe/evXrHe/bsQe3atWFpaSlb/6WXXsKpU6dQq1Ytgx8bGxvUrVsXGRkZevsGnj17FgkJCcX5MYiIjKcNzqKjpddp04w/t4iDpH8ePIAC0P28fvx4rnWHArgGQCgUEJGRmFupUlZQp9Wnj+Fxq1bSPDqAy44QgDLQY7d//37d0CEAnDhxAqGhoejRo4eubNCgQZg0aZLuuKBDlubq2rVrGD16NIYMGYJDhw5hzpw5+PLLL3Ot/9lnn+GVV17BsGHD8MEHH8De3h6nTp1CdHQ05s6dizp16qBjx44YMmQI5s+fDysrK4wcORJ2RgwjEBGViMIEZ3LZn3I9gBkZQOfOwNGjQOPG0tIftrbYuHEjOnXqZNStqlSpgq1bt6JWrVry99BoDPddnTgRsLTkll2Up1If2Lm7u+sdf/HFF/Dz80NwcLCurEKFClImkJHS0tKQlpamO05KSip8Q0uhvn37IiUlBc2aNYOlpSVGjBiBwYMH51q/UaNG2LZtGz7//HMEBgZCCAE/Pz+8/fbbujqLFy/GBx98gODgYHh6emLKlCkIDw8viY9DRJS/5s319z1t3tz4c8eOBbZuzQrYxo6VH57duhWIjUU0gPaxsYAR/3PrBWDDkCFosmCBcW2R23c1tyVGOJ+Osiv2VI4ilJaWJtzc3MTUqVN1ZcHBwaJSpUrCzc1N1K9fX4wbN048fvw4z+uoVCrZLCNjsmLLiuDgYDFixAhTN0MIUXa/QyIqg1Qq/axTlcr4c+WyWENDddfaXIBVDNzt7cXBgAD9toSGGn9fYzEDtlww26zY1atXIyEhAf3799eVvfvuu6hevTq8vb1x7NgxfPbZZzh79ixWrVqV63XGjx+P0aNH646TkpLg4+NTnE0nIqKSkHODeyM2vNfJMYy7dc0atD14EMKIU12trLApIwO6tQZeeQUICgL27ct/PbnCDB8XdcIHlXllKrD74Ycf0KlTJ3h7e+vKsg8tNmzYEJUrV0a7du1w8eJF+Pn5yV5HqVRCqVQWe3uJiKiEFWIP07iqVdEOQIa2IFuiWE7OADYBCACA8HApGMu+tZdGY/zCvoXZd5VZsZRDmQnsrl69is2bN+fZEwcAAQEBAIALFy7kGtiVB1u3bjV1E4iISl4BdknYuXMn2rVrpzfnOjcOAP4F0Dw0VCrIPo9vzx4pqSE7S0vjt90qzM4OhQkKySyVmcBu8eLF8PDwQJcuXfKsd+TIEQBA5cqVS6BVRERkMnLZpHnYvXs3QkJCjNrv287ODtHR0Wi5aRMweXLWG6+8IgVscsFUTExWWWCg8Z+jMPuucrsvyqFMBHYajQaLFy9Gv379YJVtgcaLFy9i+fLl6Ny5M9zc3HDs2DGMGjUKQUFBaNSoUZG2QQhjZlmQHH53RGS0giwwLDe/LNsyIfuioxE6bRqSjOiRs7G0RPSWLQgKCtJ/4/PP9Y/j4rLuVRqWHSlMUEhmqUwEdps3b8a1a9fw/vvv65Xb2Nhg8+bNmD17Nh4/fgwfHx90794dEydOLLJ7axfzTU9P53ptzyk9PR0Acl0YmYjKKbkgriDJADnmlx345x+0P3AAD7PXySWos1QosFkItNYWtG0LtGgBTJqk356ciwofP85lR6hUKxOBXfv27WV7fXx8fLBt27ZivbeVlRUqVKiAu3fvwtraGhYWpX6zjlJFo9Hg7t27qFChgl5vKxGRbBAnlwyQSy/eoZo10QHAPe319u3L83abN29Gu3btpIOICMMh1kmTssqio6X7Nm6snxTRuHEhPzRR8VIIjpMhKSkJzs7OSExMhJOTk8H76enpuHz5MjQajQlaV/ZZWFjA19cXNjY2pm4KEZlKaqrhbg2vvaafhBAaKvWaZd9xQaWSFupVq3FUCHQAcNvIW/4LIDQiQspazRkYhoQA2TsGgoOBY8eAh9n6+ypWBG7elN1lgqgk5RenZMcuFCPY2Nigdu3auiFFKhgbGxv2dBKVd507Z/V8xcZKx61a6Qd2r7wizZF75jiAjl99hZvJyUbdYkOfPui4eLFxw7tyQ6ypqfplqalSELdlS8E+K5EJMbAzkoWFBWz5f2lERM/n6FHD4xyjICc3bECnw4dxPXthHkHdP02aoPOzlRAAALdvy89/kxvelRti1Wj0e/GaNcv3YxGVNuxGISKi4pdzblrjxjh9+DB8ASie/TQ4cADXMzNzvcQaPNuvq107CCHQ+fXX9Su0aCF/YqtW0hIkQNbyJOvXA23aAK6u0uv69cDGjfplGzc+32clMiH22BERUfFbswZn69ZFlxs3cBHQ7y3LxV8A3oiIkBb71Q6lKhTSVl1AVi+cVm5TxuXWerOykh9i5bArlXEM7IiIyJCx68nltkjwtGk4v2kTXj17Fufu3zfqlisbNED3w4cNr5eRAWzdmpXAMHasdMLu3foXyHmsxbXeqBxhYEdERIaMXU8uW70L0dF4be5cnL5716hb/N6jB3quXJnVE9ejh3wQNm2aFNgJIb3OmCHV4XZaRAYY2BERlXdyvW5GbC5/6dIlvDFzJo5nHwLNI6hbDqCX9qBGDWD5cqBBg/x3a8itLdxOi8gAAzsiInNQkK24cpo8WVqcF5CWH8nMlBIRsi9F0qIFrly5gjfffFO3J3d+lgHoDUiJCEeO6K8Rl5ho/BBpbj1zHGIlMsDAjoiotChMcFaQrbhyWrbM8Pjdd3ENQDcABwFp0eDsCwfLWAKgX0QEsGtXVhsAKfmhSRP9hIkmTYxrG8CeOaICYGBHRFRayAVn2gV28wv2jBg6zc91AG8B2HfpEjBlSr71f3ztNfR/8gSK7EHc7t1AYCAQE5PVwxYYKCU85NzBwVjsmSMyGtexIyIqLeSCsylTpG21oqOl19wCLrm12vJx48YNtGjRAopLl6AAUA1AXrutLqpUCRo8W0sOwIDjx6Fo2VK/UosWUhDXurW0Hlzr1tKxdgeH+/elVy74TlQsGNgREZUWcsHZ0qX6dXIea02YIPX2hYZKrzLDlbdu3UJgYCAUCgUUCgWqVq2K3bktEQJgPpAVyNWsiQ8yM6HIXiEhQX4tuRkzpOzVBw+ysliJqEQwsCMiKi2MCM4KIj4+Hq1bt9YFct7e3tiRxxDtXDwL5GrWhIiIwIdAViDXpw9QsaL+CRUryq8lVwTDwkT0fDjHjoiouBmbFCE3l6xPn6yMVe2xnGnTcEelQi8AW7TDtvn4BsDw1q2l4G3r1qw3qlUDwsOlpIfsbVYo9BMo3nsPsLCQz1jl+nJEJsHAjoiouBUmY1UuwEpNBTp3xr3Dh9FbocC/2ZcRycNXHTpg5N69UCQkZBUePQq89JJ+RUtL+SBz4kQpkJPLTjW2jIiKFQM7IqLiVpihyWwB1v379/Hea69hw4YNRp06s3ZtjD5/PmvOjUYDuLhIc+O0nJ2lvVe3bDHcizWPtugxtoyIih3n2BERFTe5pIiMDGmItX176TUjw+C0Bw8eoGvXrro5cpUqVcozqPsCQCaykh3G9OkDi5z3rVlT/6SaNYt8bh8RmQ577IiIipvcArsyw7MJH32E/oGB+PvMGaMuOwXAeAAWNWpIQ6SXLulXGDtWmjunXTtu7FhpV4ktW7LqtGrFdeKIzIjRPXY3b94sznYQEZUeRvSmFaieNnD691/p1coK2LEDiUKgOwCFEFCoVKjo7p5nUBcJICM8HKJtWwgAn+PZP+I1axomVfTpI7/siEKhXy/nMRGVaUb32NWvXx/z5s3Du+++W5ztISIqWXIZq1OmZGV/RkdLc9PUasNzC5gUkZSUhA8++AArVqwwqmkRNWsiQghYXr6cVfjLL0Dv3vq9bi1byidZdOyoP7cvLk7q2ctu1y6j2kJEZYPRPXZTp07FkCFD0KNHDzx48KA426SjVqt1c0u0P3Xr1tW9n5qairCwMLi5ucHBwQHdu3fH7du3S6RtRGQmtMFZdLT0Om2a8YsCyyVFpKYCbdsCbm5IDgpCr549df9+OTs75xnUfR4UhKd4NkdOoUBkv36wlOtR27bN8FiuV1Cj0a+n0TzXDhVEVHYYHdh99NFHOHbsGO7fv48XXngBa9euLc526dSvXx+3bt3S/WRfXHPUqFFYu3YtVqxYgW3btuHmzZvo1q1bibSLiMzE9u36wdn27fL15IZdcwRJj15+GX1q1IAiNhaKBw/gtH07fssjkBsHZAVyoaGYsmkTrNq00d+KS26Idf9+/bL9++XbZ2mpX8/SkokSRGauQMkTvr6+2LJlC+bOnYtu3bqhXr16sMqxyOahQ4eKtoFWVvDy8jIoT0xMxA8//IDly5ejbdu2AIDFixejXr162LNnD1555ZVcr5mWloa0tDTdcVJSUpG2mYjKkMxMw2O5RYFlhl0fjxiBsL/+wk9Hjkjl06bleatPP/0UU6dOhbW1tXR97fW0PWfaOXFCZM2JkxtinTMHSEnJurCtrfywcGAgEBOTdY/AQCZKEJm5AmfFXr16FatWrULFihXx+uuvGwR2Re38+fPw9vaGra0tmjdvjqioKFSrVg0HDx7E06dPERISoqtbt25dVKtWDbt3784zsIuKikJk9tXTiahsM3ZnB2PJBVOdO+OJEBgO4EchpJ0d8tndYTSAqOBg2GTf1UFLLlO2c2fDoV25QGzYMGDyZP1juWHh9esN70FEZq1A//ItWrQIn3zyCUJCQnDy5Em4u7sXV7sAAAEBAViyZAnq1KmDW7duITIyEoGBgThx4gTi4+NhY2MDFxcXvXM8PT0RHx+f53XHjx+P0aNH646TkpLg4+NTHB+BiHKSC8KAwgVmhdnZQW4e2rNgKiUlBSNGjMAia2ujLjVixAhMj4yE8s03s5YY0QZXOckFbK1aGbcVV7bMWr3lU3Key945onLH6H85O3bsiH379mHu3Lno27dvcbZJp1OnTro/N2rUCAEBAahevTr++OMP2NnZPfd1lUollEplUTSRiApKLggDnj8wAwq3s8O1a7o/PgWw5MQJDDZyCZBhw4Zh1qxZhv+eZM9YBYzvUZTrxZMjF7AZey4RmTWjA7vMzEwcO3YMVatWLc725MnFxQX/93//hwsXLiA0NBTp6elISEjQ67W7ffu27Jw8IiolcgvCnjcwA+R7uowIpp4+fYqf4+OhAnBDW3j/fq63GQrgKwC2gJR8MGeOce0ztkexMD1s7J0jIhQgKzY6OtqkQR0APHr0CBcvXkTlypXh7+8Pa2trxMTE6N4/e/Ysrl27hubNm5uwlUSUJ7nlNp5zyy0duUxPmWVMMjIysHjxYlSrVg0KhQI2Njb4ICUlK6jLYTCAJ5AyVkVkJL5TKKSgrqDLhBSmR5GIqABK9ZZiY8aMQdeuXVG9enXcvHkTKpUKlpaW6NWrF5ydnTFw4ECMHj0arq6ucHJywvDhw9G8efM8EyeIyMTyGjLMZ8utgg7PZgiBXwCohMDVfJIdPCDt7DCgRg0oBwwwzFgtzFCnsXPniIgKqVQHdv/99x969eqF+/fvw93dHa1atcKePXt0SRtff/01LCws0L17d6SlpaFDhw747rvvTNxqIspTbkOGOcsK0sv1LAjMFALLo6Ohmj0blx8+zLMZbgAiO3fGwBdfhO3UqVlv9OsnH8QVZqiT89+IqIQohND+y1l+JSUlwdnZGYmJiXBycjJ1c4gIMFznTa02CKwyMzPx22+/QT1oEC5kX9dNRsWKFRHp4YFBZ89Kw6mANHS7fn3RLpVCRFTEChKn8F8vIiq4ol43To5ML1dmZib+WLYM6qFDcS6fQM7Z2RmRkZEYPHhwVha9Wp21BywAtGjBpAMiMisM7Iio4Ao7/y2nXAJFzcSJWLlyJVQqFc7ksxiwI6Q5ckMAVAgJkZImcso5QMEBCyIyMwzsiKjg4uL057/FxRXues8CRY0QWBUdDdXcuTh1926ep9hDCuQ+tLWF/fjx+sO2gYHyJ+3enfcxEVEZZ/RyJ0REOnK7NaSmAm3bAm5u0mtqqhGX0WDVqlVoOHMmFELAEkAPQDaos7Ozw4wZM/DIxQUCwCMAnwCwt7MzfmN7uWVViIjMCHvsiKjgcu7MoFBI+5zGxkrHsbHScY4dGIQQ+Pvvv6FSqXDs2LE8b6FUKqG2s8Ow5GQ4+PgAx48DDg5AYiKQPYv1o4+MnyfH7FQiMnMM7Iio4OTmqh09ql929CjE06dY268fVOvW4Uhycp6XtFYooLa1xfCmTeH4779AvXrAlSvSm1euAA0bApcvA5aW+ifmPM4LEyWIyMxxKJaoPCjILg7GkAuuGjeGALAOgD8AxYMHsLCxweu//iob1FkCmAwgcfx4iMhIpAOYkJICxx07gBkzgP/+0z9Be2zsPLmi/sxERGUAe+yIygO5LFbt7g7Ps2RJYCAQEwMhBDYAUJ8+jf03ctuYS6IAoPb1xYhq1eC8bVvWG/v2ARYWhosRV62a1WMHSMeA8bs4FHXmLhFRGcDAjqg8yC2LtYCBjxACmzZtgvqff7A3+3BsLkGdqkYNjLxyBS7agho1DCtpNEBQkGGwtmqVNPz6339SUHf8uFTf2Hly3J+ViMohBnZE5YFcFuv27fqBz/btBqcJIRC9cSPUQ4Zg9/Xr+d4mHMAoABW1O0Vs367f6yY3H87SMvctvC5fNqxv7Dw57s9KROUQAzui8kBuTlxmpn5ZZibE06eI+eADqNeswc6EhHwv+/nnn2PUqFFwc3MDQkKAmBjpDW2vYFCQVJZzfbmcZcWR1MAMWCIqhxjYEZUHLVtmDbdqj3fsgAAQC0ANYHtsLGBjk+dlxgMYXb06KmXvhdOS6xWUC64yMoCtW6Us2saNgbFjn/dT5Y0ZsERUDjGwIyqNinov1mzz4bYCUC9Zgm1Xr+Z72mc1auATIeCevW5uy4vI9QrKBVfTpkmBnRDS64wZDMCIiIoIAzui0qgwGZ05gsK4wECo58xBbPY6uQR1n7ZsiTE7d8IDkIZJBwyQhmwnTcqq1KeP/H2fZcrmu60XkxqIiIoNAzui0qgQe7HuHDwYqsWLEQMA0dF51v3kk0/w6aefwtPTUyqQ6ykEpN63/OaqGTunjUkNRETFhoEdUXExdjhVrp7cfLVc7N69GyqVCtH5BHEAMKpaNYzt2RNeUVFSwbRpwHvv6bdPrmfQmN5CbutFRGRyDOyIiouxw6ly9eT2Yn1m7969UKlU2LRpU75NGAFgbLVq8L54MSt4dHQsWPuKGpMaiIiKDQM7ouJi7FwyuXrZkh32A1AdOYINOYM9GcOHD8dnlpaoMnt2VmH//vJBHOe6ERGZHQZ2RMXF2LlkOeod8PWF+s8/8U/2Og8eyJ4aFhaGcePGoap2uy1AGtqtWFF/qLNzZ8MgjnPdiIjMDgM7ouJi5FyyQx07Qr18OdaePSsFWQsX5nrJoUOHYty4cahWrVru95Ub6pQL4jjXjYjI7CiEyL7hY+kSFRWFVatW4cyZM7Czs0OLFi0wffp01KlTR1endevW2JZ9Q3EAQ4YMwYIFC4y+T1JSEpydnZGYmAgnJ6ciaz+RnCNHjkCtVuPvv//Ot+4QSIsCV69ZEzh7Vj5j9XkTNAqzLh4REZWYgsQppfpf9m3btiEsLAwvv/wyMjIyMGHCBLRv3x6nTp2Cvb29rt6gQYMwKds6WxUqVDBFc8kc5bb8RwECrGPHjkGtVuOvv/7K93aDAEwYORI11qwBLl3Sf1NunhxgXAIEExaIiMqFUh3Ybdy4Ue94yZIl8PDwwMGDBxEUFKQrr1ChAry8vEq6eVQeyAVTGg0QGSn9OTpaOraw0NU7ER2NyN9/x8pTp/K9/MCXXsIEOzvU3Lkzq/DkSWkR4JyLAueW7MAECCIiesbC1A0oiMTERACAq6urXvkvv/yCSpUqoUGDBhg/fjyePHmS53XS0tKQlJSk90MkSy6YWrpUr8qpH37A2999B4UQUABoCOQa1PX39sYFAOLZz//c3FCzffus5Uy089/Cw6XgMTRUeg0Pl8pz1pMry8iQgsL27aXXjIzCfQdFfT0iIio+oozIzMwUXbp0ES1bttQr//7778XGjRvFsWPHxLJly0SVKlXEm2++mee1VCqV9veq3k9iYmJxfgQq7Z4+FSIyUojQUOlVe6xQCAFIr5GR4lSVKuIdmb8/cj99+/YV586dy7qHzPVESooQbdoI4eoqvaakGN8+I9tcKEV9PSIiKpDExESj45QyE9h9+OGHonr16uL69et51ouJiREAxIULF3Ktk5qaKhITE3U/169fZ2BH8gHM06fizPDh4l0vL6MCuT6VK4uzw4dLAZackgjEQkOla2l/QkNL1/WIiKhAChLYleo5dlrDhg3DunXrEBcXp79el4yAgAAAwIULF+Dn5ydbR6lUQqlUFnk7qZQyNgHi2bDrOQCThcAylQpQqfK89LsAwps3R91du4y7r1wSw/bt+sO927cX7vMW9fp0XO+OiKjMKNWBnRACw4cPx19//YWtW7fC19c333OOHDkCAKhcuXIxt45KTGGX6sgnm/RCdDQmr1qFn48ezfdS77zzDsLd3PDCd99lBTodOxp/X7nM1MzMvI8LqqjXp+N6d0REZUapDuzCwsKwfPly/P3333B0dER8fDwAwNnZGXZ2drh48SKWL1+Ozp07w83NDceOHcOoUaMQFBSERo0ambj1VGQKu6dpjgSIi//+i6mXLmFx9iUccwnqevbsiYiICNSvXz+rMCMD8PDIP9AxdssuC4u8jwuqqJc24VIpRERlRqkO7ObPnw9AWoQ4u8WLF6N///6wsbHB5s2bMXv2bDx+/Bg+Pj7o3r07Jk6caILWUrEp5J6ml+vVw9ToaPygLci+tEgObwGIgJTZivBw/SVHtIwNdIwdwgwKArZsyaqXbSkfIiKigijVgZ3IZ1MMHx8fg10nyAwVcI7XlStXMG3aNCxatCjfS78JQAWgcdu2wOHDwMOHWW/OnSsFcM+724OxQ5gc6iQioiJSqgM7IgD5Bj7Xrl3DtGnT8P333+d7qdcBqJo1w4sVKgBbt2a9odEAqan6lVNTS2a3Bw51EhFRESlTCxRTGSa3yK2xC9+mpgKLFwOxscDixbh+4QI++ugjKBQKKBQKVK9ePdegrmudOjjg769bj2Q1IAV1V6/qV7x6FWjaVL+saVP5YeBCDg0TEREVF/bYUckoRM/Xf/Xq4Yv//sM8ALhyBahXL9fbdKlUCap79/CytqBaNeDCBf1KV69m7dagpVDIJzHkNgzM5T+IiKgUYmBHJUOul0uj0S+LiwMA3Lx5E1988QXmzJmT72U7deoElUqlW78QkyZlBYvaoCtnYAfI78U6d65+nePHswJOuWFgzokjIqJShoEdlQy5nq9nc9xuAZgO4JuYGMOetBw6AFB5eaH5rVtZ69tp91GdMEF+Pt6WLcDly1kXqVZNOsfSUr/e9u3ScK9W48a5z3/jnDgiIiqFGNhRyRg7Vgrkjh5FfN26mHHvHr7OHkTlItTPD6r589Fy8GDgv/+AqlWlnjQAmDIFiIyU/hwdLfUAqtWGQZe1teGxXMC2fj3QubO0pl3jxtIxERFRGcLAjopejp0ibg8ciJlvvYUv9+yR3t+1S/qR0a5iRagePkSgtqBGDSA0VL/HTWvpUsNjtdqwXmAgEBOT1VsYGGhYBwBsbaXePSIiojKKgZ05K+xWXM/p7tixmPn115gJSD1peey32gbSOnLBANCmjVSYvSdPoyl8g7hOHBERlRMM7MxZYbfiMtK9e/cwa9YsTJ8+Pd+6wQDUAFrXrAlUr64fxAHSvLecx7kFqHIJEHK4ThwREZUTDOzMmVwmqrG9eHnUu3//Pr788ktERUXl24RAAGobG7QZOxaKKVOy3ujdG9i9W7+ypaX8sGluAapcAgQREVE5xsDOnMllohrbi5et3oPoaHwVE4Opz5YjyUvLli2hTk5Gu2PHoMtvbdHCsKIQ8kFctiQLNG4sHb/2mvyCwOyJIyIi0sPAriyS600DDMvk5pZ17Gi4dlyO6z0cOhRfL1mCydn36s0lqGv+yitQ166N0Fu3oAgMlO6Rmgo0bJiVxbp2rRSkZbd8OXD2rGH7pk2TAjshpNcZMwq8VywREVF5xcCuLCrILg45e7RyJiNoNEgID8fsL75AJJBvskNAQADUajU6dOgAhUKhvyBwTExWxatXpbKrV4GvvpK/mFyPm9zwsXbZEQ65EhER5YmBXVkUF2fY62ZhYdz+pZaWSATwDaQkBhEba5jAkE1TJydEdu2KTosXQ5FzPThAPhATQr9s+3bgvfey1pwDpGM5cr1zHHIlIiIyCgO7skim1w1BQbkOVyYlJeHbb7+FWq1GZmZmnpd+CUDku++iy7JlUo9cfvLYUUInMxOYOFEKPvPrdePSJERERM+NgZ25yJZ0kFy/PuZAykZ9+vRpnqc1adwYkSoVuh47BsXOnVnBlDFBHSAfiOWcj2dhYXyvG3vniIiInhsDO1MpzOLBOXZheHTxIuZ17QpVbCzSAGnoc/t22VMbNWqEyMhIvPbaa7CwsMhqi3abroKSC8SCgqQdHLS9eEFBz3dtIiIiKhAGdqZSiMWDHyck4DtIOzakAMC1a9KPjAYNGiAyMhJvvPFGViBXhG2RxeFUIiIik2BgZypySQe5ePLkCebPnw+VSoXHjx/nedkXAEQC6KZSwUJu39RCtsUoHE4lIiIyiVy6cKjYtWqVNY8tR7JDSkoKvv76azg5OUGhUMDe3h5jxoyRDerqWlvj959+QmZaGkRkJE6GhuKtyEhYTJwoDbFOmgS0by+9ZmQUuC1ERERUdrDHzlSyDVemBARgoYMDVC4uSExMzPO02rVrI7JxY/RcuRKWgBSsXbkC2NgY9pJlX2MuryFWDp0SERGZBbMJ7ObNm4eZM2ciPj4ejRs3xpw5c9CsWTNTN0tWamoqFi1aBNXs2Xj48KG0KHAu/Pz8EBkZiXfeeQeWlpZSYfv2WRXyGjo1doiVQ6dERERmwSyGYn///XeMHj0aKpUKhw4dQuPGjdGhQwfcuXPH1E3T2bJlC9zd3aFQKGBnZ4ePP/5YCupy8PX1xc8//4ynT59CCIELFy6gd+/eWUEdID90KjfsyiFWIiKickUhRPYNQcumgIAAvPzyy5g7dy4AQKPRwMfHB8OHD8e4ceMM6qelpSEtLU13nJSUBB8fHyQmJsLJyanI23fv3j24u7vLvlcdUrJD74gIWGXfmSEvckulZM9sVSikP2vLn2dJFSIiIioVkpKS4OzsbFScUuZ/y6enp+PgwYMYP368rszCwgIhISHYvXu37DlRUVGINDaIKgJOFSqgZ/36+OPkSfg4OyNy1iz0+e03WGffW3X3buPXtjN2j1UOsRIREZUrZX4o9t69e8jMzISnp6deuaenJ+Lj42XPGT9+PBITE3U/169fL9Y22kyfjt9PnoQAcC0xEQOuX4d1UJDhMKm21y06WnqdNs34m3DYlYiIqNwr8z12z0OpVEKpVJbcDZctMzw+eVK3BRgaN5a2BHv1Vf1et5xbc+WFma1ERETlXpkP7CpVqgRLS0vcvn1br/z27dvw8vIyUatyyDmNUQhgxgwpsBNCep0xA9Bo9OvlPM4Lh12JiIjKvTI/FGtjYwN/f3/EZJuvptFoEBMTg+bNm5uwZdlUr254LDcnLnvmK2B4TERERJSHMh/YAcDo0aOxaNEi/PTTTzh9+jSGDh2Kx48fY8CAAaZumiRnAoSVlfycuMBA/bLAwJJtJxEREZVpZX4oFgDefvtt3L17FxEREYiPj0eTJk2wceNGg4QKkwkMBGJispYiCQzMe04c58kRERHRczCLdewKqyDrwzwXY5cxISIiIsqhXK1jVyYwsYGIiIhKgFnMsSMiIiIiBnZEREREZoNDsQC00wyTkpJM3BIiIiIifdr4xJi0CAZ2AJKTkwEAPj4+Jm4JERERkbzk5GQ4OzvnWYdZsZAWNL558yYcHR2h0K4jV8SSkpLg4+OD69evF0/mLRUYn0npwudR+vCZlD58JqVPSTwTIQSSk5Ph7e0NC4u8Z9Gxxw6AhYUFqlatWiL3cnJy4n+MpQyfSenC51H68JmUPnwmpU9xP5P8euq0mDxBREREZCYY2BERERGZCQZ2JUSpVEKlUkGpVJq6KfQMn0npwudR+vCZlD58JqVPaXsmTJ4gIiIiMhPssSMiIiIyEwzsiIiIiMwEAzsiIiIiM8HAjoiIiMhMMLArAfPmzUONGjVga2uLgIAA7Nu3z9RNKjeioqLw8ssvw9HRER4eHnjjjTdw9uxZvTqpqakICwuDm5sbHBwc0L17d9y+fdtELS5fvvjiCygUCowcOVJXxudR8m7cuIE+ffrAzc0NdnZ2aNiwIQ4cOKB7XwiBiIgIVK5cGXZ2dggJCcH58+dN2GLzlpmZifDwcPj6+sLOzg5+fn6YPHmy3j6hfCbFKy4uDl27doW3tzcUCgVWr16t974x3/+DBw/Qu3dvODk5wcXFBQMHDsSjR4+Kve0M7IrZ77//jtGjR0OlUuHQoUNo3LgxOnTogDt37pi6aeXCtm3bEBYWhj179iA6OhpPnz5F+/bt8fjxY12dUaNGYe3atVixYgW2bduGmzdvolu3biZsdfmwf/9+fP/992jUqJFeOZ9HyXr48CFatmwJa2trbNiwAadOncKXX36JihUr6urMmDED3377LRYsWIC9e/fC3t4eHTp0QGpqqglbbr6mT5+O+fPnY+7cuTh9+jSmT5+OGTNmYM6cObo6fCbF6/Hjx2jcuDHmzZsn+74x33/v3r1x8uRJREdHY926dYiLi8PgwYOLv/GCilWzZs1EWFiY7jgzM1N4e3uLqKgoE7aq/Lpz544AILZt2yaEECIhIUFYW1uLFStW6OqcPn1aABC7d+82VTPNXnJysqhdu7aIjo4WwcHBYsSIEUIIPg9T+Oyzz0SrVq1yfV+j0QgvLy8xc+ZMXVlCQoJQKpXi119/LYkmljtdunQR77//vl5Zt27dRO/evYUQfCYlDYD466+/dMfGfP+nTp0SAMT+/ft1dTZs2CAUCoW4ceNGsbaXPXbFKD09HQcPHkRISIiuzMLCAiEhIdi9e7cJW1Z+JSYmAgBcXV0BAAcPHsTTp0/1nlHdunVRrVo1PqNiFBYWhi5duuh97wCfhymsWbMGTZs2RY8ePeDh4YEXX3wRixYt0r1/+fJlxMfH6z0TZ2dnBAQE8JkUkxYtWiAmJgbnzp0DABw9ehQ7duxAp06dAPCZmJox3//u3bvh4uKCpk2b6uqEhITAwsICe/fuLdb2WRXr1cu5e/fuITMzE56ennrlnp6eOHPmjIlaVX5pNBqMHDkSLVu2RIMGDQAA8fHxsLGxgYuLi15dT09PxMfHm6CV5u+3337DoUOHsH//foP3+DxK3qVLlzB//nyMHj0aEyZMwP79+/Hxxx/DxsYG/fr1033vcv+O8ZkUj3HjxiEpKQl169aFpaUlMjP/v737CYlqD8M4/nRncmSIspCc/k0ZBFlJmVJMBVEuahcFQSI1tYksw4KKwIIWWa1a2MaK/iwyokURSYvKUUEiNRttLNIWkgVaUJiCUti8d3FhaG4XrnAdD/fM9wMH5Jzf4uH3gvN4Zs74U1VVVSotLZUkZuKw8ez/wMCAZs+enXTd6/Vq1qxZKZ8RxQ5p49ChQ+rq6lJzc7PTUdLWhw8fVFFRoSdPnigzM9PpONBff/AUFRXp3LlzkqSCggJ1dXWppqZG4XDY4XTp6e7du6qtrdXt27e1fPlydXR06MiRI5o7dy4zwb/irdgUys7Olsfj+e2Jvk+fPikQCDiUKj2Vl5errq5ODQ0Nmj9/fuJ8IBDQjx8/NDg4mLSeGaVGe3u7Pn/+rNWrV8vr9crr9aqpqUnV1dXyer3KyclhHpNszpw5WrZsWdK5vLw89fX1SVJi3/k9NnmOHz+ukydPateuXcrPz9fu3bt19OhRnT9/XhIzcdp49j8QCPz2kOTY2Ji+fv2a8hlR7FIoIyNDhYWFqq+vT5yLx+Oqr69XKBRyMFn6MDOVl5fr/v37ikQiys3NTbpeWFioqVOnJs2ou7tbfX19zCgFiouLFYvF1NHRkTiKiopUWlqa+Jl5TK7169f/9hVAPT09WrhwoSQpNzdXgUAgaSZDQ0NqaWlhJikyMjKiP/5Ifnn2eDyKx+OSmInTxrP/oVBIg4ODam9vT6yJRCKKx+Nau3ZtagOm9NEM2J07d8zn89nNmzftzZs3tn//fsvKyrKBgQGno6WFsrIymzFjhjU2Nlp/f3/iGBkZSaw5cOCABYNBi0Qi9uLFCwuFQhYKhRxMnV5+fSrWjHlMttbWVvN6vVZVVWXv3r2z2tpa8/v9duvWrcSaCxcuWFZWlj148MBevXpl27Zts9zcXBsdHXUwuXuFw2GbN2+e1dXVWW9vr927d8+ys7PtxIkTiTXMJLWGh4ctGo1aNBo1SXbx4kWLRqP2/v17Mxvf/m/dutUKCgqspaXFmpubbcmSJVZSUpLy7BS7SXDp0iULBoOWkZFha9assefPnzsdKW1I+sfjxo0biTWjo6N28OBBmzlzpvn9ftu+fbv19/c7FzrN/L3YMY/J9/DhQ1uxYoX5fD5bunSpXblyJel6PB6306dPW05Ojvl8PisuLrbu7m6H0rrf0NCQVVRUWDAYtMzMTFu8eLFVVlba9+/fE2uYSWo1NDT842tHOBw2s/Ht/5cvX6ykpMSmTZtm06dPt3379tnw8HDKs08x++WrrAEAAPC/xWfsAAAAXIJiBwAA4BIUOwAAAJeg2AEAALgExQ4AAMAlKHYAAAAuQbEDAABwCYodAACAS1DsAAAAXIJiBwD/0c+fP7Vu3Trt2LEj6fy3b9+0YMECVVZWOpQMQLrhX4oBwATo6enRqlWrdPXqVZWWlkqS9uzZo87OTrW1tSkjI8PhhADSAcUOACZIdXW1zpw5o9evX6u1tVU7d+5UW1ubVq5c6XQ0AGmCYgcAE8TMtHnzZnk8HsViMR0+fFinTp1yOhaANEKxA4AJ9PbtW+Xl5Sk/P18vX76U1+t1OhKANMLDEwAwga5fvy6/36/e3l59/PjR6TgA0gx37ABggjx79kwbN27U48ePdfbsWUnS06dPNWXKFIeTAUgX3LEDgAkwMjKivXv3qqysTJs2bdK1a9fU2tqqmpoap6MBSCPcsQOACVBRUaFHjx6ps7NTfr9fknT58mUdO3ZMsVhMixYtcjYggLRAsQOA/6ipqUnFxcVqbGzUhg0bkq5t2bJFY2NjvCULYFJQ7AAAAFyCz9gBAAC4BMUOAADAJSh2AAAALkGxAwAAcAmKHQAAgEtQ7AAAAFyCYgcAAOASFDsAAACXoNgBAAC4BMUOAADAJSh2AAAALvEnG8Cgvj755E4AAAAASUVORK5CYII=", - "text/plain": [ - "
" + "cell_type": "code", + "source": [ + "#@title Define plotting functions\n", + "\n", + "def make_plots(df, feature_names, label_name, model_output, sample_size=200):\n", + "\n", + " random_sample = df.sample(n=sample_size).copy()\n", + " random_sample.reset_index()\n", + " weights, bias, epochs, rmse = model_output\n", + "\n", + " is_2d_plot = len(feature_names) == 1\n", + " model_plot_type = \"scatter\" if is_2d_plot else \"surface\"\n", + " fig = make_subplots(rows=1, cols=2,\n", + " subplot_titles=(\"Loss Curve\", \"Model Plot\"),\n", + " specs=[[{\"type\": \"scatter\"}, {\"type\": model_plot_type}]])\n", + "\n", + " plot_data(random_sample, feature_names, label_name, fig)\n", + " plot_model(random_sample, feature_names, weights, bias, fig)\n", + " plot_loss_curve(epochs, rmse, fig)\n", + "\n", + " fig.show()\n", + " return\n", + "\n", + "def plot_loss_curve(epochs, rmse, fig):\n", + " curve = px.line(x=epochs, y=rmse)\n", + " curve.update_traces(line_color='#ff0000', line_width=3)\n", + "\n", + " fig.append_trace(curve.data[0], row=1, col=1)\n", + " fig.update_xaxes(title_text=\"Epoch\", row=1, col=1)\n", + " fig.update_yaxes(title_text=\"Root Mean Squared Error\", row=1, col=1, range=[rmse.min()*0.8, rmse.max()])\n", + "\n", + " return\n", + "\n", + "def plot_data(df, features, label, fig):\n", + " if len(features) == 1:\n", + " scatter = px.scatter(df, x=features[0], y=label)\n", + " else:\n", + " scatter = px.scatter_3d(df, x=features[0], y=features[1], z=label)\n", + "\n", + " fig.append_trace(scatter.data[0], row=1, col=2)\n", + " if len(features) == 1:\n", + " fig.update_xaxes(title_text=features[0], row=1, col=2)\n", + " fig.update_yaxes(title_text=label, row=1, col=2)\n", + " else:\n", + " fig.update_layout(scene1=dict(xaxis_title=features[0], yaxis_title=features[1], zaxis_title=label))\n", + "\n", + " return\n", + "\n", + "def plot_model(df, features, weights, bias, fig):\n", + " df['FARE_PREDICTED'] = bias[0]\n", + "\n", + " for index, feature in enumerate(features):\n", + " df['FARE_PREDICTED'] = df['FARE_PREDICTED'] + weights[index][0] * df[feature]\n", + "\n", + " if len(features) == 1:\n", + " model = px.line(df, x=features[0], y='FARE_PREDICTED')\n", + " model.update_traces(line_color='#ff0000', line_width=3)\n", + " else:\n", + " z_name, y_name = \"FARE_PREDICTED\", features[1]\n", + " z = [df[z_name].min(), (df[z_name].max() - df[z_name].min()) / 2, df[z_name].max()]\n", + " y = [df[y_name].min(), (df[y_name].max() - df[y_name].min()) / 2, df[y_name].max()]\n", + " x = []\n", + " for i in range(len(y)):\n", + " x.append((z[i] - weights[1][0] * y[i] - bias[0]) / weights[0][0])\n", + "\n", + " plane=pd.DataFrame({'x':x, 'y':y, 'z':[z] * 3})\n", + "\n", + " light_yellow = [[0, '#89CFF0'], [1, '#FFDB58']]\n", + " model = go.Figure(data=go.Surface(x=plane['x'], y=plane['y'], z=plane['z'],\n", + " colorscale=light_yellow))\n", + "\n", + " fig.add_trace(model.data[0], row=1, col=2)\n", + "\n", + " return\n", + "\n", + "def model_info(feature_names, label_name, model_output):\n", + " weights = model_output[0]\n", + " bias = model_output[1]\n", + "\n", + " nl = \"\\n\"\n", + " header = \"-\" * 80\n", + " banner = header + nl + \"|\" + \"MODEL INFO\".center(78) + \"|\" + nl + header\n", + "\n", + " info = \"\"\n", + " equation = label_name + \" = \"\n", + "\n", + " for index, feature in enumerate(feature_names):\n", + " info = info + \"Weight for feature[{}]: {:.3f}\\n\".format(feature, weights[index][0])\n", + " equation = equation + \"{:.3f} * {} + \".format(weights[index][0], feature)\n", + "\n", + " info = info + \"Bias: {:.3f}\\n\".format(bias[0])\n", + " equation = equation + \"{:.3f}\\n\".format(bias[0])\n", + "\n", + " return banner + nl + info + nl + equation\n", + "\n", + "print(\"SUCCESS: defining plotting functions complete.\")" + ], + "metadata": { + "id": "0m8PN7AmbIyb", + "outputId": "78e8d23b-5a77-4974-e7a4-d192a63de2c5", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "execution_count": 54, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "SUCCESS: defining plotting functions complete.\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Define ML Functions" + ], + "metadata": { + "id": "UcFBcHQQb5Fp" + } + }, + { + "cell_type": "code", + "source": [ + "def build_model(my_learning_rate,num_features):\n", + " model = keras.models.Sequential()\n", + " model.add(keras.layers.Input(shape=(num_features,)))\n", + " model.add(keras.layers.Dense(units=1))\n", + " model.compile(optimizer=keras.optimizers.RMSprop(learning_rate=my_learning_rate),loss=\"mean_squared_error\",metrics=[keras.metrics.RootMeanSquaredError()])\n", + " return model\n", + "\n", + "def train_model(model,df,features,label,epochs,batch_size):\n", + " history = model.fit(x=features,y=label,batch_size=batch_size,epochs=epochs)\n", + " trained_weights = model.get_weights()[0]\n", + " trained_biases = model.get_weights()[1]\n", + " epochs = history.epoch\n", + " hist = pd.DataFrame(history.history)\n", + " rmse = hist[\"root_mean_squared_error\"]\n", + " return trained_weights,trained_biases,epochs,rmse\n", + "\n", + "def run_experiment(df,feature_names,label_name,learning_rate,epochs,batch_size):\n", + " print('INFO: starting training experiment with features={} and label={}\\n'.format(feature_names, label_name))\n", + " num_features = len(feature_names)\n", + " features = df.loc[:,feature_names].values\n", + " label = df[label_name].values\n", + " model= build_model(learning_rate,num_features)\n", + " model_output = train_model(model,df,features,label,epochs,batch_size)\n", + " print('\\nSUCCESS: training experiment complete\\n')\n", + " print('{}'.format(model_info(feature_names, label_name, model_output)))\n", + " make_plots(df,feature_names,label_name,model_output)\n", + " return model\n" + ], + "metadata": { + "id": "IoOfBFpcbz2k" + }, + "execution_count": 55, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "#@title Code - Define functions to make predictions\n", + "def format_currency(x):\n", + " return \"${:.2f}\".format(x)\n", + "\n", + "def build_batch(df, batch_size):\n", + " batch = df.sample(n=batch_size).copy()\n", + " batch.set_index(np.arange(batch_size), inplace=True)\n", + " return batch\n", + "\n", + "def predict_fare(model, df, features, label, batch_size=50):\n", + " batch = build_batch(df, batch_size)\n", + " predicted_values = model.predict_on_batch(x=batch.loc[:, features].values)\n", + "\n", + " data = {\"PREDICTED_FARE\": [], \"OBSERVED_FARE\": [], \"L1_LOSS\": [],\n", + " features[0]: [], features[1]: []}\n", + " for i in range(batch_size):\n", + " predicted = predicted_values[i][0]\n", + " observed = batch.at[i, label]\n", + " data[\"PREDICTED_FARE\"].append(format_currency(predicted))\n", + " data[\"OBSERVED_FARE\"].append(format_currency(observed))\n", + " data[\"L1_LOSS\"].append(format_currency(abs(observed - predicted)))\n", + " data[features[0]].append(batch.at[i, features[0]])\n", + " data[features[1]].append(\"{:.2f}\".format(batch.at[i, features[1]]))\n", + "\n", + " output_df = pd.DataFrame(data)\n", + " return output_df\n", + "\n", + "def show_predictions(output):\n", + " header = \"-\" * 80\n", + " banner = header + \"\\n\" + \"|\" + \"PREDICTIONS\".center(78) + \"|\" + \"\\n\" + header\n", + " print(banner)\n", + " print(output)\n", + " return" + ], + "metadata": { + "id": "vTSLAyAxXG7h" + }, + "execution_count": 56, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Loading the data" + ], + "metadata": { + "id": "xPqhKJjoXa9b" + } + }, + { + "cell_type": "code", + "source": [ + "chicago_taxi_dataset = pd.read_csv(\"https://download.mlcc.google.com/mledu-datasets/chicago_taxi_train.csv\")" + ], + "metadata": { + "id": "LRqcng6yXc-u" + }, + "execution_count": 57, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "### Initial Processing" + ], + "metadata": { + "id": "GQfEjvMmY3WR" + } + }, + { + "cell_type": "code", + "source": [ + "training_df = chicago_taxi_dataset[['TRIP_MILES', 'TRIP_SECONDS', 'FARE', 'COMPANY', 'PAYMENT_TYPE', 'TIP_RATE']]" + ], + "metadata": { + "id": "MI3RW-CUY1EC" + }, + "execution_count": 58, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "c9s5TwrhWV5P" + }, + "source": [ + "### Analyzing the data" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "id": "ARMzStPXWV5Q", + "outputId": "af821f24-f9bb-43f6-a096-64f7c96ce2eb", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 300 + } + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " TRIP_MILES TRIP_SECONDS FARE TIP_RATE\n", + "count 31694.000000 31694.000000 31694.000000 31694.000000\n", + "mean 8.289463 1319.796397 23.905210 12.965785\n", + "std 7.265672 928.932873 16.970022 15.517765\n", + "min 0.500000 60.000000 3.250000 0.000000\n", + "25% 1.720000 548.000000 9.000000 0.000000\n", + "50% 5.920000 1081.000000 18.750000 12.200000\n", + "75% 14.500000 1888.000000 38.750000 20.800000\n", + "max 68.120000 7140.000000 159.250000 648.600000" + ], + "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", + "
TRIP_MILESTRIP_SECONDSFARETIP_RATE
count31694.00000031694.00000031694.00000031694.000000
mean8.2894631319.79639723.90521012.965785
std7.265672928.93287316.97002215.517765
min0.50000060.0000003.2500000.000000
25%1.720000548.0000009.0000000.000000
50%5.9200001081.00000018.75000012.200000
75%14.5000001888.00000038.75000020.800000
max68.1200007140.000000159.250000648.600000
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"training_df\",\n \"rows\": 8,\n \"fields\": [\n {\n \"column\": \"TRIP_MILES\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 11200.173091853763,\n \"min\": 0.5,\n \"max\": 31694.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 8.289462674323214,\n 5.92,\n 31694.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"TRIP_SECONDS\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 10782.390382388372,\n \"min\": 60.0,\n \"max\": 31694.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 1319.796396794346,\n 1081.0,\n 31694.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"FARE\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 11192.00375085826,\n \"min\": 3.25,\n \"max\": 31694.0,\n \"num_unique_values\": 8,\n \"samples\": [\n 23.905209818893166,\n 18.75,\n 31694.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"TIP_RATE\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 11171.892214139558,\n \"min\": 0.0,\n \"max\": 31694.0,\n \"num_unique_values\": 7,\n \"samples\": [\n 31694.0,\n 12.965785322142994,\n 20.8\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 59 + } + ], + "source": [ + "## basic statistics\n", + "training_df.describe()" + ] + }, + { + "cell_type": "code", + "source": [ + "## correlation\n", + "training_df.corr(numeric_only=True)" + ], + "metadata": { + "id": "YlGzyn41Z6Zf", + "outputId": "6ddf2336-5830-4efa-9822-35bedf5b6c2c", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 175 + } + }, + "execution_count": 60, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " TRIP_MILES TRIP_SECONDS FARE TIP_RATE\n", + "TRIP_MILES 1.000000 0.800855 0.975344 -0.049594\n", + "TRIP_SECONDS 0.800855 1.000000 0.830292 -0.084294\n", + "FARE 0.975344 0.830292 1.000000 -0.070979\n", + "TIP_RATE -0.049594 -0.084294 -0.070979 1.000000" + ], + "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", + "
TRIP_MILESTRIP_SECONDSFARETIP_RATE
TRIP_MILES1.0000000.8008550.975344-0.049594
TRIP_SECONDS0.8008551.0000000.830292-0.084294
FARE0.9753440.8302921.000000-0.070979
TIP_RATE-0.049594-0.084294-0.0709791.000000
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"training_df\",\n \"rows\": 4,\n \"fields\": [\n {\n \"column\": \"TRIP_MILES\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.49548981581872015,\n \"min\": -0.049593721261970654,\n \"max\": 1.0,\n \"num_unique_values\": 4,\n \"samples\": [\n 0.800855332439961,\n -0.049593721261970654,\n 1.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"TRIP_SECONDS\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.48861841006503237,\n \"min\": -0.08429387257082786,\n \"max\": 1.0,\n \"num_unique_values\": 4,\n \"samples\": [\n 1.0,\n -0.08429387257082786,\n 0.800855332439961\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"FARE\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.5086361016350425,\n \"min\": -0.07097918108162268,\n \"max\": 1.0,\n \"num_unique_values\": 4,\n \"samples\": [\n 0.8302919038136868,\n -0.07097918108162268,\n 0.9753444995779911\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"TIP_RATE\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.5343356706789801,\n \"min\": -0.08429387257082786,\n \"max\": 1.0,\n \"num_unique_values\": 4,\n \"samples\": [\n -0.08429387257082786,\n 1.0,\n -0.049593721261970654\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 60 + } + ] + }, + { + "cell_type": "code", + "source": [ + "## pairplot\n", + "sns.pairplot(training_df, x_vars=[\"FARE\", \"TRIP_MILES\", \"TRIP_SECONDS\"],y_vars=[\"FARE\", \"TRIP_MILES\", \"TRIP_SECONDS\"])" + ], + "metadata": { + "id": "TzdK_HGoaLgD", + "outputId": "a20301cd-42fc-4dfe-fc55-94b3a5ad1f20", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 775 + } + }, + "execution_count": 61, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": {}, + "execution_count": 61 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAuUAAALlCAYAAABjOpj+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOy9eXxU5dn//559MtkmmSGQIIHARAIJYAAFTIKKG6tArf0JtALBpUWwrY+KqLiAVWvtU6toNwHtU8F+u4iKW1WsEAQUibJrwhaQQMhOMvvy+2Myh9knhKxwv18vX5qZOcuM5z7nuq/7c30umcfj8SAQCAQCgUAgEAi6DHlXn4BAIBAIBAKBQHCxI4JygUAgEAgEAoGgixFBuUAgEAgEAoFA0MWIoFwgEAgEAoFAIOhiRFAuEAgEAoFAIBB0MSIoFwgEAoFAIBAIuhgRlAsEAoFAIBAIBF2MCMoFAoFAIBAIBIIuRgTlrcDj8dDY2IjosyQQdC5i7AkEXYMYewJB5yOC8lZw5swZkpOTOXPmTFefikBwUSHGnkDQNYixJxB0PiIoFwgEAoFAIBAIuhgRlAsEAoFAIBAIBF2MCMoFAoFAIBAIBIIuRgTlAoFAIBAIBAJBFyOCcoFAIBAIBAKBoItRdvUJCAQCgUAgaBsNZjvVTXYarQ6S4lQY49Uk69RdfVqCHo64rroGEZQLBAKBQNADOVFvYcm/drG5rFp6bXy2kWduHk6GPq4Lz0zQkxHXVdch5CsCgUAgEPQwGsz2kMAJYFNZNQ/+axcNZnsXnZmgJyOuq65FBOUCgUAgEPQwqpvsIYGTj01l1VQ3ieBJcO6I66prEUG5QCAQCAQ9jEarI+r7Z2K8LxCEQ1xXXYsIygUCgUAg6GEkaVVR30+M8b5AEA5xXXUtIigXCAQCgaCHYUxQMz7bGPa98dlGjAnCKUNw7ojrqmsRQblAIBAIBD2MZJ2aZ24eHhJAjc828uubhwv7OkGbENdV1yLzeDyerj6J7k5jYyPJyck0NDSQlJTU1acjEFw0iLEnEETH5yd9xuogUavCmNA+ftJi7F3cdNR1JYiO8CkXCAQCQbdBNC05N5J14vfp6XTHa15cV12DCMoFAoFA0C0QTUsEFxvimhf40+015Zs2bWLatGlkZGQgk8lYv359wPvz5s1DJpMF/DNx4sSAz9TW1jJnzhySkpLQ6/UsWLCApqamTvwWAoFAIIiGaFoiuNgQ17wgmG4flDc3NzNixAheeumliJ+ZOHEilZWV0j/r1q0LeH/OnDns3buXjz76iA0bNrBp0ybuvPPOjj51gUAgELQS0bREcLEhrnlBMN1evjJp0iQmTZoU9TMajYY+ffqEfW///v188MEHfPnll4wePRqAF198kcmTJ/Pcc8+RkZHR7ucsEAgEgnNDNC0RXGyIa14QTLfPlLeG//73v6SlpTF48GB+9rOfUVNTI723detW9Hq9FJADXHfddcjlcrZv394VpysQCASCIETTEsHFhrjmBcF0+0x5LCZOnMgPfvADsrKyOHjwIA899BCTJk1i69atKBQKTp48SVpaWsA2SqWS1NRUTp48GXafNpsNm80m/d3Y2Nih30EgEHgRY+/ixde0ZFOY5fyLoWlJVztwiLHX+XS3a76rr0HBBRCU33rrrdJ/Dxs2jOHDhzNo0CD++9//cu2117Zpn08//TRPPPFEe52iQCBoJWLsXbz4mpY8+K9dAUHKhdy0pMFsp6bZjgd4/K09bC4/u8rb2Q4cYux1Pt3pmu8sFxgR+EenRzUPkslkvPnmm8yYMSPq53r16sWTTz7JXXfdxerVq/mf//kf6urqpPedTidarZZ//OMfzJw5M2T7cBmDfv36iSYKAkEHI8ae4GJpWnKi3sKjb+1h1hWZvLrlcEBA7mN8tpEXZ+V3yvcXY6/r6OprvsFsZ9G60rBFp225BiMF3sL+MTY9PlMezPHjx6mpqSE9PR2AcePGUV9fz1dffcWoUaMA2LhxI263mzFjxoTdh0ajQaPRdNo5CwQCL2LsCS6GpiUNZjuPvrWHW6/IRKtShA3I4awDR2f8HmLsdR1dfc23xgWmtecXKfB+auYwHn9nb0T7x86afHZ3un2hZ1NTE19//TVff/01AIcPH+brr7+moqKCpqYm7r//frZt28aRI0f45JNPmD59OiaTiRtvvBGAIUOGMHHiRO644w6++OILtmzZwqJFi7j11luF84pAIBAIOp3qJjs56Ums2XKYBotw4BB0Le3lAhPNd33pm7vJSQ+/4iLsH8/S7YPyHTt2kJ+fT35+PgD33nsv+fn5PProoygUCnbt2sVNN93EpZdeyoIFCxg1ahSbN28OmPG//vrr5OTkcO211zJ58mQKCwv585//3FVfSSAQCAQXMY1WB/n99Gwpr0GjjP4YFg4cgo6mvVxgomXcN5dVk99PH3FbMfn00u3lK1dffTXRZO8ffvhhzH2kpqaydu3a9jwtgUAgEAjaRJJWRWWDFYDSY/UUmAxsiaApv9BdZwRdT3u5wMTKuNuc7ojvicmnl26fKRcIBAKBoCfTYLZztLqZfSca+PJILS6PhyyDDp1aweqSw8wvyKLAZAjYpugCdp0RdC98LjDjs40Br/tcYAAOVjVRWlHHwdNNNJjDS01iZdwz9HHo1IqQ18Xk8yw9yn2lq2hsbCQ5OVlUoQsEnYwYe4KeTmW9haO1Zl7cWBaQDS/KNrLw6kEseG0HAMWFWeT302NzutHHqRiUlkDvJG1XnbYYexch4VxgzHYXD7TSMaXBbGfxutKwGfcCk4GpwzPIMsZT/OqXmO0uaV+/vnk46cJ9BRBBeasQNyeBoGsQY0/Qk2kw23lvz0k27DoRVp5SlG1k8rB0lv57t/RadwlSxNgTtMUq8US9JcR3vcBkYH5BFvesK2V0/xRWTM+jzmy/oC1P20q315QLBAKBQNCT8GUcbU4XaYmasAE5eIvfHp06lE/uveqC92UX9DzaYpWYoY9jxfQ8yk83YXO60SjllB6r5551pZjtLjaVVeN0e7gsMyVkn6KxkAjKBQKBQCBoN/x9ml+eMzLm55ttzrABikDQ1bTVKrHWbJdkWa3dTjQW8iIKPQUCgUDQITSY7a0qELtQCPZp1ijlwvLwIuRCue7bapV4rttF8zd/8F+7euzv1xZEplwgEAgE7c7FmPkKXu4vPVZPRrJWWB5eRFxI131brRLPdbv27Cja0xGZcoFAIBC0Kxdr5it4uX91yWHSk+NYdI1JWB5eBFxo130sq8RI1+65btdeHUUvBESmXCAQCATtysWa+QpetjfbXdy9did3XTWQJRNzUMhlWOwukuNUpCVqLsjf4GLmQrzuM/RxvDgrP8QqMdb3OJft2quj6IWACMoFAoFA0K5crJmvcMv2ZruL331UxldH6sJayAkuHC7U6z5Z1zYXlNZu114dRS8EhHxFIBAIBO3KxZr5autyv+DC4GK97s8XMW7OIjLlAoFAIGhXLubMV1uX+wU9n4v5uj9fxLjxIjLlAoFAIGhXLvbMV7JOzaC0BC7LTGFQWsIF/30FXi726/58EeMGZB6Px9PVJ9HdEe2GBYKuQYy9no2vQ9/FnPnqqYix13bEdS9oK0K+IhAIBIIOoa0FYgJBT0Zc94K2IoJygUAgEAii4Mt8NlodJMWpMMaLoEtw8SLGQ8chgnKBQCAQCCJwIXVoFAjOFzEeOhZR6CkQCAQCQRgutA6NAsH5IMZDxyOCcoFAIBAIwtCaDo0CwcWCGA8dj5CvCAQCwUVIJF2o0Iue5ULt0CgQtIWuGg++e1KTzYFep8budNNkc16Q9ycRlAsEAsFFRjhd6PVD0lg2dSgPr98j9KItiA6NAsFZumI8+O5VXx2t44VZ+Tz74bdsKa+R3r/Q7k/dXr6yadMmpk2bRkZGBjKZjPXr10vvORwOlixZwrBhw4iPjycjI4PbbruNEydOBOxjwIAByGSygH+eeeaZTv4mAoFA0PVE0oUOTk9i6Zu7hV7UD1+HxnCIDo2Ci43OHg/+96riwizWbDkcEJDDhXd/6vZBeXNzMyNGjOCll14Kec9sNrNz506WLVvGzp07+fe//823337LTTfdFPLZ5cuXU1lZKf2zePHizjh9gUAg6FZE0oXm99OHPPB8XKx6UdGhUSA4S2ePB/971cVyf+r28pVJkyYxadKksO8lJyfz0UcfBby2cuVKrrjiCioqKsjMzJReT0xMpE+fPh16rgKBQNDdiaQLtTndUbfz6UUvNs15hj6OF2fliw6NglZzIY+RzhwP/veq1t6fejrdPig/VxoaGpDJZOj1+oDXn3nmGVasWEFmZiazZ8/ml7/8JUpl+K9vs9mw2WzS342NjR15ygKBoAUx9jqeSLpQjTL6wmlSnOqi9Si+GDo0irHXPlwMY6SzxoP/vSrW/elCqe/o9vKVc8FqtbJkyRJmzZpFUlKS9Po999zDG2+8waeffspdd93FU089xQMPPBBxP08//TTJycnSP/369euM0xcILnrE2Ot4IulCS4/VU2gyhN1mfLaReI1SeBRfwIixd/4IH+/2xf9eVXqsnoIo96cLpb5D5vF4PF19Eq1FJpPx5ptvMmPGjJD3HA4HN998M8ePH+e///1vQFAezOrVq7nrrrtoampCo9GEvB8uY9CvXz8aGhqi7lcgEJwfYux1DifqLTz4r11sCuO+8sj6PQGv+/SiZruLa//3s4j7/OTeqxiUltCh5y3oOMTYO38OVjWJMdLO+O5VO1rcV4KLPX33p/QLZBXigpCvOBwOfvSjH3H06FE2btwY8wYyZswYnE4nR44cYfDgwSHvazSasMG6QCDoWMTY6xyi6UIjvV5aURd1nz1J0xlO8wtcsDrg1iDG3vnTWh/vC1lz3t7436uabQ6enjEMNx7MdhfNdhf6OBU6taKrT7Pd6PFBuS8gLysr49NPP8VgCL+84c/XX3+NXC4nLS2tE85QIBAIuhb/ICA5TkW8RkmT1Rk2KIikF71QPLuDNb86tYLV8y7npY3lbC6/cHXAgo4n1hi5mOsyotHaRmb9DfE0210X9O/X7YPypqYmysvLpb8PHz7M119/TWpqKunp6fzwhz9k586dbNiwAZfLxcmTJwFITU1FrVazdetWtm/fzjXXXENiYiJbt27ll7/8JT/+8Y9JSUnpqq8lEAgEnYJ/EKBTKyIuAcd6qPn0nZvC2Cn2FE1nOM1vcWEWL24si+h//OKsfJHFFLSKWGMkXqPkvn98E1FzfjFea5EmKU/OyGP5hn18vL9Kev3pHwzjvV2VAZNnuLB+v26vKf/vf//LNddcE/L63Llzefzxx8nKygq73aeffsrVV1/Nzp07WbhwIQcOHMBms5GVlcVPfvIT7r333lYv1TU2NpKcnCy0dQJBJyPG3vnRYLazaF2p9MBbNMFEaUVdWL/f8dnGmA+1cFr0nqTpPFrdTPnpJmxON1qVgp0VdYzMTKH41S8jbnOx6oDF2Gsb0cZIT6nL6Cx5TfD9yZ9Ck4HLMlNYufFsUnbV3NEseG1HxP11l9/vfOj2mfKrr76aaPOGWHOKkSNHsm3btvY+LYFAIOj2BDcKyu+nD3jI+eNrwBHt4dtTPbsbzHbqzA6Wrd/NZr8JSYHJQOGg8B0KffQkrbyg64k2RnpCXUZnymuqm+x8dbSORRNM5PfTB0yWV5ccZn5BYNL1YvAq7/ZBuUAgEAjaRnDhWXs81NrqUdxVxW0n6i189t1pNuw6EbJCsKW8hoVXm6Ju31O08oLug/913Wh1gMz73929LiOWpWN7y0OabA5JTuefLCgwGXhhVj5Od2DS9WLwKhdBuUAgEFygBAcBXfVQ64zsWyRHlSX/2sW8KwdQWlEfNiP35ZFaikzGEJ2q7xx7glZe0L2IdL0//YNh7VaX0RGT3OCVNX9as5J2rujj1Dz74bdhJ8sASybmBLzu8yqPJL9r7e/Xnd1vRFAuEAgEFyjBhWft9VA7Fzoj+xYpCHp4yhA2l1Xz47H9I2bkbi8cyORh6azYsC9k+1/fPLzbPKwFPYNo1/vjb+/lqZnDeOjN3WE156291jpqkttaS8f2wu5yh70XgTcwtwet7K0uOczqeZejkMna/Pt1d/cbEZQLBALBBUqyTs0zNw+XCs9WlxzmhVn5yICSMA04OiIA7ejsW4PZzmffnWbelQOYdUUm8WolTrcbmUxGXbOD1fMup19qHI+/vTdiRu6pGXms7IFaeUH3I9r1/tH+KpZOHnJedRnnO8mNliXubHlNk80Z9f3gScLo/ikMSNW1+fc71WjlSHUzs67IZH5BlqRd707uLSIoFwgEgguY4MKzpDgVv/3RZTRZnZ0SgHZ09q3O7JD04j7Lx7XbjzKin55rBqeh0yioa3awoHAg+ZkprC45jNnukrbfUl6D3eVps1ZeIPAn1vXeaHEwsFdCq661cAF0TfO5TXL99xGvVvJVRR0rNuyTxoB/lrizbU9jTQL6pej45N6rwt6nznWsnqi3sOSf34QUer8wK5971pV2iDynLYigXCAQCC5wwgWcvTvJ5a4js28NZjvL1u+WMt7FhVms3X6Un4wdgFYl59cfHAjIjvs/hP0D8+YYGTuBoLW01/UeSWbx2E256NSKgOvXH/9Jbrh9BI+B4Cyx/8qa/3E7YiUt1iQgLVHTLseUVhcirJQVF2axcmN5t3BvEUG5QCAQCDqMjsy+VTfZAx60+f30AFQ2WHh3d2VEuYrvIezjQnBtEHQP2uN6j6VLD75+/dGqFJRW1JGgUbLjaB1fHQ20YQw3BvyzxJ1pe9pZk4BokqIt5TUUt1gvdof7gAjKOwC3201lZaX0d3p6OnJ5dNcDgUAguBDpyAdvk83BL6/P5prBaQBY7C5uzO3D6TO2qAVkxX7+x8JhRdCetMf1Hi2I3FxWzc+uGhQ2KC80Gdiwu1J6L9LKUPAYgMAMe0dIuSJp2TtjEhBLUmRzurvNfUAE5R1AZWUl81/6EG2yEWtDNWvuvpG+fft29WkJBIIupjtbcXUkHfXg1cepuWJAaoBM5eU5I0nQRH+0+fzahcOKoCM43+s9VhCpUclDsvGFJgPzCrK4Z12p9FqklSEI7VkQLUt8vvetWI4nHV3PEUtSpI9TdZv7gAjKOwhtshFdSq+uPg2BQNBN6O5WXB1Nez94G8x2Pj9Yw4bdZ4s8iwuz6Jcah8XuZvW8yyV3hWD9bX+Dt4BMOKwIOoq2XO++4Nfp9kS9fvVx6oCgX6tSsGF3ZUhGHMJnxSGwZ0G0LPH53rc6uyFROKJJioqyjQxKS6B3krZDz6G1CE2FQCAQdDCxHkwNZnsXnVnPpbrJTlqSJsB1pbSijmkvbuFHf9pK8atfUlpRxwuz8tGpFdJ2BSYDaoWcQWmtc8AQCDqDE/UWFq0r5dr//Yxb/hj5+vUF0Mk6NYPSErgsMwWLw8XKjeURiz+Ds+IFJgOlx+ql/UXKErfHfas1lqgdjU9SND7bGPD6+Gwjz948vNsE5CAy5QKBQNDhdHanvIuBRqtDCjaKC7NYs+VwzMLOApOB+QVZKOSyTj9fgSASkYLf4Os3UgAdS57hnxUvyjayYnoejRY7My/rG3W1qD3uW53dkCgSnVnAej6IoFwgEAg6mPZ+MDWY7dSbHTTbnTTbXejjVO1mH9ZTSI5ToZTLWTV3NL0SNRHdKLaU17BkYg75/fSUHqvn719U8NwtIzr5bAU9DX8ddYJGiVohp95iJ0Hb/rUgsdxBHp48hOkjMlAr5FSdsWJ2uALOIao8w2SgV6KGl+eMRKOUY+qVQH9jPBAf87za477V2Q2JotETehGIoFwgEAg6mPZ8MFXWWzhaa+bFjWUBmeGilizaxaBPB1Aq5Dz7wR42l9fw8pyRUT97vM7Cwtd3isJOQauI5O89vyCLWX/Zzuj+Ke1aCxIr+LU4XDz9/oGA8/FlvFN0qoiOLwUmA3MLsrj1z9sw212Mzzby4qz8Vp9Xe9y3OrshUU9HBOUCgUDQwbTXg6nBbOe/352WOlj6s7kbtYruaI7Xmln6713Sb+C/PB+OAaKwU9BKWislac+xFiv4tTncIeezuayah9fvZurwDK66tBcZ+jh+c8sIDp1uQiaT4XJ72HqoRir+LDQZeGrmsHM6X999a8fROooLs8jvp8fmdKNVKTjVaG3VfauzGxL1dERQLhAIBB1Mez2YqpvspCVqInpwdzd9elus1GJtc7zOzPE6M/mZKRQXZGFzutHr1Dw1M48n390fUuw2PttI3xbbNYEgFq1tNNPasdaaMRDLHeTzQ9E995f8axfLp+dic7qxOz2UHqtFJvM203rulhFolHJKj9Vjd7nD7icSyTo1v755uLQy5y8RK8o2ctWlvUjWxd5Pe+m5u8pStjOPK4LyTsK/oZBoJiQQXHy0x4PJv7gxEt2hVTS0zUot1jZHa5qprLeQEq+mtKIuMEgwGVk1dzQLXtshBeYiGyc4V1rTaMZHrLHW2jEQbdL+2E25THuxJOr5bC6rpsnm5HcffcfsMf3Zdbye2WP6szjIIvG6nLSo5xsOnVrBSxvLz3tl7nz13F1lKdvZxxVBeSfhaygEiGZCAsFFyvk+mJK0Kmqbo1uIdYdW0Q1mO4++tYcR/fTMu3KAtOS9s6KOx97aIxVa+mefEjRKHn1rT0T7tWduHs4jb+7m3hsG8+SGfaFBQnk14OGNO8dibil+TU/WioBccE6ci5NJrIY70ewEf3PLCJqszoDsa7hJe02zPaLVof/5VDXaGJqRzJoth8nPTGHNlsMhTYPacm+obrK3jK1QOmtlrqu8zrviuCIo70S0ycbYHxIIBIIIGBPUfHGklgKTIayEpbsUTtU027n1ikzWbDkcEBQUmAzcXjiQOrODZUEBeFG2kblXDuDzgzVSEOJrCJTfT0+DxcHm8hoemCRjcwT5zubyGn5mdXK01szkvD4iIBecM9GkJMH+3tHGWiw7wYNVTcx+Zbv0mi/7OigtIeCzTTYnhSYDJWGuef/zAa9cZeXGcooLsqR/+++/LfeG7mBp2FWWsl1xXKGhEAgEgh5Csk7N1Zf2YvGEbApMhoD3irqRVMPp9kT0Da9ssLBs/e6whWtrthzmzvEDWTTBxKvzLufNhVfyTUUdC17bQb3Z+/Cva44eBKgUcq65tFe3+B0EPY9IjWZ87iurSw63ShYVK5ittwS+H64hT4PZzmNv72VeQRZFQePd/3x8wblPWhP87/ORcbWHA0uD2c7BqiZKK+o4eLrpnJulddXEoCuOKzLlAoFA0INI18ehUyt4asYwmu1OzHYXyd3Mp9zt9kQsRu2dpI2Y6d5SXsODk3J45v0DKOUyXimplTKECVpvV0On2xP12Hqdij4XiS2koGMIrv+Ib/Epb7DYeWdRYatqQc5FBuMjOPta3WTn4/1VfH6whjvHD+ThKUP5vt4CQOmxeu5ZV0p+pp75BVncs65Usjv07fuSlDjW3j6GfilxYf3NW8P5Oke1hya7q7zOu+K43T5TvmnTJqZNm0ZGRgYymYz169cHvO/xeHj00UdJT08nLi6O6667jrKysoDP1NbWMmfOHJKSktDr9SxYsICmpqZO/BYCgUDQfiTr1PQ3xjM0I5nRA1LJ7p3YbQJyALPdGfG9WIWqZpuLH4/tz425fdhZUc+iCSZWzR1Ns9XFujvG4PF4QlYJfIzPNpKWqDmvcxcIgIA29tm9E+lvjGd4vxQGpSW0aqz5gtlw+Df0WT3vchZNMKFTeyed/tlXX6bWbHfx/MdlfLjvJKcarQAMTU/ixVn55GemSMF56bF6KWteYDLwn32nmP3Kdr6ramL6S59z7W8/Y/G6Uk60BPat/R0itaiPlX2PpclubcY82m/ZkZK9rjhutw/Km5ubGTFiBC+99FLY95999lleeOEF/vjHP7J9+3bi4+O58cYbsVqt0mfmzJnD3r17+eijj9iwYQObNm3izjvv7KyvIBAIBJ3C+S4TtxfJcZEfVrE8xZvtLr47dQYZsH5hgSRfufUv25j1l+2s3X6UR6fmdmv5jqDn0l5jKFIwW5RtZOE12dz6520sfH0nxa9+SWlFHS/MykenVgRkX/0ztb6gfXT/VF7dcpiFr+9kwWs7WLmxXMqW7zvREPDv1SWHgcCJ8LkGxHB25eCTe69i/cIr+eTeq3hxVj7pMTLdrdFkt4bzmRicD11x3G4vX5k0aRKTJk0K+57H4+H555/nkUceYfr06QD89a9/pXfv3qxfv55bb72V/fv388EHH/Dll18yevRoAF588UUmT57Mc889R0ZGRqd9F4FAIOgousoyLBzRlryrztiiFtL1StAwNiuVeoudlzaWh0hdPjlwGplMxpPT87A63TTbnN1OviPombT3GAong9lxpI4Fr30Z4KiypbwGOTJWz7s8IPvq37znhVn5rNlymD99dojiwizmFw5Eq5STEq9GLgOn283iCdk0mB0MzUiWmgZB6ES4LUWKbXGOak9Ndnt5nZ8rnX3cbh+UR+Pw4cOcPHmS6667TnotOTmZMWPGsHXrVm699Va2bt2KXq+XAnKA6667Drlczvbt25k5c2bIfm02GzabTfq7sbGxY7+IQCAAxNhrK11lGRaJaL7L11zai6su7RW2JfgDN+ZQdqqRdH0cbg8Rtecf769iycQchqQndfh3uVi42MdeR40h/2D2YFUTS9/cHfZzm8ur+dnVg2i2u6SGPL5x9Nl3pwMKpwP9+Q3cPcHEi2G8xH3v+zu0+OgM15T21mSfr6VsW+nM4/booPzkyZMA9O7dO+D13r17S++dPHmStLRAw3ylUklqaqr0mWCefvppnnjiiQ44Y4FAEA0x9tpGV1mGRSNWhsn/PbVSznt7TlLXbMfUO5Fff3CAOWP6R91/sy2ybl1w7lzsY68zxlBrHFmCJwAZ+jhG909h6b8jBfM1zC8cyPwW+0P/wLzAZGDZtFxmvLQlZLvO6GdwvkWiFyPdXlPeFSxdupSGhgbpn2PHjnX1KQkEFwVi7LWN7uAl7I9Pl3uouhlkkGWMj1gg5wGUShn5/fSkJWlRyGRsKa+JqT3vDk2SLiQu9rHXGWOoNY4sm8qq+b7eEqBnb4oxAdWpFbjcHh6cOIR//nQcf/jxSFbNHU1+ZgqHq5tDmg+da0DcVp39uWiyu0s9TFfTozPlffr0AeDUqVOkp6dLr586dYrLLrtM+kxVVVXAdk6nk9raWmn7YDQaDRqNqOAXCDobMfbaRldZhoH3YerrzJkcp0KtkLP0zd1Rdbn+2l1jgpq/3zWO1S3L8y/PGQkgOUh05yZJFxIX+9jrjDHU2sZER2rMLHx9pzRukuOiH7vZ5uSu//tK2s/8giwWt2jK194+JuCz51qkeL46+9Zostt6DP97j68rak+vK+nRQXlWVhZ9+vThk08+kYLwxsZGtm/fzs9+9jMAxo0bR319PV999RWjRo0CYOPGjbjdbsaMGRNp1wKBQNBjaK9l4nN9yAU/TBdNMFFaURcSSPvrcgGW/GsXXx2tY9EEEzfm9uZIdTMLCgeSn5mCTuV1mVhdcpgXWj7vvz/hsiLoCNpbahFpLD1z8/CQANQXSN+zrhQ4W5jpGze/uWVEq4J5ODtWiguz2HWsnkFpCXxy71VtKlJsL519NE12W49xPpOF7hzMd/ugvKmpifLys0UNhw8f5uuvvyY1NZXMzEx+8Ytf8OSTT5KdnU1WVhbLli0jIyODGTNmADBkyBAmTpzIHXfcwR//+EccDgeLFi3i1ltvFc4rAoHggiBaYWVrA9hzfciFe5j62nyDd0m9uDCL/H56bE43WpWCerMDl8fDV35uEv5FawUmA9cN6c2EnF5sPHCae9aVUlyYRXFBFjanG32cikFpCfRO0rbpdxIIItEeY8hHrLH03C0jOFjVRL3FgUYplxoBme2ukCB7U1k1TVZn2HMLDuZ9bCmv4e6rTcy5IpPeSVp6t9RD+4LRQ9XNrQpGO0Nn35ZjnM9koTu5VIWj2wflO3bs4JprrpH+vvfeewGYO3cur776Kg888ADNzc3ceeed1NfXU1hYyAcffIBWe/am/frrr7No0SKuvfZa5HI5N998My+88EKnfxeBQCDoKM7HuqstD7lwD1OfH7JOrQgIun0Berxajl6nZsPiQh57a09IRt379wGWTMzB5nSzpbxGCtp9wZEIyAUdRXvY38UaS7+5ZQTNNie9k7X84bODUTPmPs5YHQxKSwhbHO1vfeiPVqUgXR8nBeJ1ZjsOlwez3YlCJqOywcppnZpLUuOwO900WEKzxp2hs2/LMdo6WehuLlXh6PZB+dVXX43HE7mtskwmY/ny5SxfvjziZ1JTU1m7dm1HnJ5AIBB0G9pq3dWWh1y4h6lv2b24MEuycPMF6Gu3H+Wyfnpe2LiP4oIsvmrp1umfSd9ZUcfqksNUN9nJz0yhuCCLJK2K1Hh1p3gSCwTnY3/XYLZT2WBl1hWZzC/Ikq5nX9C8qayag1VNzH5luzRR/dlVg1Ar5TRaneysqAsbZPv07MH2iv6rTCHfI04VNitcaDIwryCL+/7xDWa7S/rbd1z/rHFn6Ozbcoy2Tha6o0tVMMJ9RSAQCC5y2vKQC/cw9RVn5vfTB2hb12w5zNCMZClQd7o9vDArn9KWbp3BnQ0dLjcrN5azZsthMg26Vrc2Fwi6ihP1FhatK2Xi7zeH7dTpo97iHUtmu4uVG8uZ/cp2XvikjFONVlZuLA8JyIsi6NljtYBP0CrDZoVLymtYs+UwxYVZYf/27/jZGW3m23KMtk4WuptLVThEUC4QCAQXOW15yIV7mK4uOSz5JfvI76fn25NnmHFZXx6clMO6O8aSnZYQ0AzFx5aWACE9WUuhycBTM4cJuYqg2xNJFrElKOCF0O6a4A2Eh/dNpsBkCHi9wGRg4dUmSRbmTyy7wWabM2JWeEt5Dfn99BH/9s8ad3Sb+bYco62Tha50qWot3V6+IhAIBBcK3anq3/9cEjRKnv7BMFZs2NdqT+NwhXFmu4u/f1HBfTcOlj7nAV6/fSyPvX1WQ/7Pn44La3UI3gBBrZTz2x9dJgJyQQgdNYbOZ7/RZBFbymsobpmoFmUbOXAyfKfUijqzJNmyOd1SAeiC177k3z+7krQwYyGaBr60oi7qOQcH+sF/+7LGndFm/lyP0dai3J7QzKjdg/KFCxfy7LPPkpCQAMC6deu46aabiI+PB6C+vp7Zs2fz3nvvtfehBQKBIIQGs516s4Nmu5Nmuwt9nIq0RE1I44rzfdDH2kd3qvoPdy5F2UZWz7uc4le/lALzWA8538O0ptmOy+3B7fEgA1QKOdcNSSMnPQlTr3geXh9Y1Hm6yRZ2fz6sdhe9+4iA/GIh2tjxjV+zw4lKoeCJt/ew2e9aao8xdKLewpJ/7mJzedvGZixZhM3pPpv1doQWZQKoFfKIGvFGa+TmQZE08K1pVBTtb61Kwc6jteg0SuQyGUq5jCxjfIclEc5Vy9+WyUJ7Oux0FO0elP/pT3/i8ccfl4Lyu+66izFjxjBw4EAAbDYbH374YXsfViAQXKREe6BX1ls4WmvmxY1lYb2uM/Rx7RIsx9pHd6r6j3Qum8uqkQHv31NEndne6oxYsk5Ns93Fo2/t4dYrMlm7/Sij+qdw3w2DqWm2Y3G4Q7LiaoXo1nmh09qJbrSxIweOtIzf/MyUmB74bRlDDWZ7SEDu2++Sf+1iZSv2GysA7pcaR35mCgte+5K/3zU25P2iFimGTq0I66SSpD33UK21jYrC/V1oMrBhd6U0SfC5wjz93n6emJ7XbXzA21KU2xmZ//Oh3YPyYKeUaM4pAoFAcD5Ee6DHqxX897vTbNh1IuRBvtnPnux8g+XWBNzdqeo/1rnYXW4uy0xp9f5ONVo5Ut3MbeMGoFbKuOfaS3nuwwP85sPv0KkVrJl3ecg2olvnhU1rJ7qxxs7Ca0zShLq4ICtiJvl8xlDVGVtIQO5jc1k1VWdsMfcbKwD+cO8p6dybba6Q95dNHcqv39/PC7PyQ9xXCk0Gkvw6ekYKeMO9/uuWRkX+5+XvttKav+FsQ6L8zJSA+2K4YzbbXd1mRTAS5+Ow09EITblAIOiRxHqgL5s6lLREDaVRrPfqms8/WG5NwN2dqv5jnUtFrZl4jTJiwyDf90mOU6FWyFn6712SnOD+Gy9l28EaSvysEBM0oY8Z0a3zwiXcuNSpFQzvp+dIdTMnGywk69QY49XUxBh/908cLF0f4Yod/WnrGPK5oUSiIcb7EFkWEc53PFGrZNXc0ZJu/FSjlff3VPLJgdPYnG6KC89OPgpNBh6dlitJXsJNdq4fksayqUN5eP2ekEB4+fQ8lk0bisvtwWxzkRynIkGrpNnmZO3tY0jUBv6tVSnYsLsyrC2j/8SouskeNvh++gfDeG9XZdhVh1hJju5Ub9OViKBcIBD0SGIFw/UWh2S9F65z5Auz8mmyRdZqQuse9I1WR9julb7A/4zV0eaq/7Y8qIID53iNkiarU9pHik4Vskzuf/6JWiUNZjs2hwuby43Z5iRZp0arlPPY23v5eH8VAIsmmPi6oo6SlqDJmKBmQk5vfvPhd8BZK8TigiwKTQbpc+AtCL1nXSnLpgzhoUlDsDi8AUOw1l/Q8wgel8GNpHyMzzby2E25ESUbAE3Ws6+Hcy3xJz7M5C+YsOMpTskvrsum0GTE6fIQr1EAMjZ+e4o/fXYowM4wGhn6OH41I49Gq5OTjVaAgE6d4A2yTzZYWfDaDuBs0P7ku/sBrz3hw1OGUjDISIJWQVWjjdl/2cYrt42OmIQYnJ7E0jd3h5X1LFu/m1EDUnn+4zIpWx2teLq0oi6q97lvYtRgcfD4O3tDziUtURNx1SFakqM71dt0NR0SlD/66KPodDoA7HY7v/rVr0hOTgbAbDZ3xCEFAsFFRqyMb7xagUap5dcfHIjQORKenJ4XdR+t0TYnx6miBv5JcSoM8ede9d+aB1XYzPWbu9lcVh0QDAVko00GVs0dzYLXdmC2u8J23wy3nW9Z+/ODNZjtLkZmprByYznGBDXP/XAEA43xHKu3SAH+jbm9GZqehFIuY8X0PJ58dx+fHDgt7W9kpp5xg4yk6FQiEL+ACB6X/o2k/NlUVs3jb+8NyAwHk6A9GxBHkzwVmAzsOFoXcYUHwo+n64ak8fDkIXx1pJbnPy4L2N+ia0yMzUolQaOMOTn2vV/bbMdsdzLQGB9yvReaDDw5YxjHasy8PGck/VLj+HDvqZCsdL3Zway/bAs4d41KQaPFwf7KUOeW/H76iL/f5vIaHpiUw583HQrIVgNhv09ri0N1akXYhEhbVjM6s96mJ2Tj2z0oHz9+PN9++63095VXXsmhQ4dCPiMQCATnQ6wHSLxaSZ3FEdV6z+HynLdFVrxGGdFzWwb89keXnXPVf2seVMHLx4smmAIK4SIFQ16piYxHpgzhoTf3hHwu0nYl5TV4Wt5fXXIYnUqBMUHN2jvGUtdsw+ZyI5cRcYLy2NRc7r3hUhotLhK0CjRKBR6Pp9s9FAXnR/C4jBo0llXzs6sGhX1/fLaRZptLCsR9kic5BLiv+EtE3u+fEjaIizSectKTeOStPREn7VOHZdBXr2PRutKIk+NwwX64672q0UZ1k5WfrPkCgJfnjAz7vZODVrKKTEbe3V3J1xV1vH77WOa8so3qJrv0+ViBcFWjTZr4bCqr5mSjlSff3R/2+7SmOLQo24hCLgt7rFirGeGSHJ1Vb9NTsvHtHpT/97//be9dCgQCQQixPGf1OhXVMaz3zHbneVtkNVmdEQP/kvIamqxOeiedW9V/OAmAvzymttnOo2/tDVgqDg5+omfQqvn5ddmsmjuaXomaVm/n05UWF2bh8nj49c3D2XGkFoCVG8uZVxA+oN9SXsMTG/aS35JdB1h7+xhyM5LCHkfQcwkel7GCRo1KHjKOfeNPBiyekA14r6F71pXyxp1jmXfGFuDl7cs2RwriIgV+rbnWK2rNESfHv7llRFjnlnDXO3j9+aXvHSaALTIZabTYpSC6wGTgkalDmPny55jtLlZs2Muvbx4uyV8i7Sfc9/RxvM4S9vss+dcunpyRx1Mzh/HQm7vDauPXbj/K3deY0ERwT2pLAXdn1Nt0J/erWHSJpnzHjh2MHj26Kw4tEAguEFqTfdbHuNHq1EqcTjePT8vF4nRhbvExT4pT0WxzUlpRF3OZ81weKq2t+vffZzh5yRt3jmVewQBmjcmU9OtOd6DTVcwM2hkbC1/fyctzRp7Tdjanm5GZKWw9VMOk3D4oZDJ6JWoYdkkycpks6sqE1ETFZKC/QddtHoSC9iN4XMYKGvVx6qiT1Ti1gqdmDKPZ7sRsd2FzugOC0uAJq93posEcGJhHGqOtudYjfWZTWTW1zfaIGmr/6x28AXdJy2eLso2catGd+yg0GVgxM48f/uFzXpt/Bfn99JQeq6ey3iplzUvKa1gyKSdgu9Jj9SE1Gz582e2h6bEnv5vLqimvauKNLyp4ckYeh6qbkctlpOhUOF0eGswOhmYkU/zql7x1d0HYhMjqksOsnnc5Cpms1UmOzuiy2Z3cr2LRYUF5U1MTCoWCuLizywJff/01y5Yt47333sPlCl/YIRAIBK0lVvY5Wja9yGTE5XazdP3eEAeQRdeYmB/URCfSMmc4dxF/2vJQ8X9Q+ctJfAH6bz44ELCEX2Qy8oP8vgHL3rGCId/7sZqIBNPfoKPZ5mLKsD4oFTIGGuPZcrCatCQtOnX038LmdFOUbeTpmcPom6KL+llBz8V/XLo9HoqyjWGDIl/2NNpkNfi9g1VN0n9HKyL1H6+RAr/WjpFIhdyxnFl8AX1RtpEFhVksfH2nZIH4/p5KyYVFH6eiT5KW/+yrbNE8O1nw2g4KTIaQfQZbKu470cCyqbks3xB4H/OX9fh05EXZxgA/8nDn+9H+KqxONyOirCLUmR08MmUoX1XUBXQBHt0/hQGpunPyAe+oLpv++nGNUs6iCSZWlxwOW1Tcme5XsYi97nGOHDt2jHHjxpGcnExycjL33nsvZrOZ2267jTFjxhAfH8/nn3/e3ocVCAQXKck6NYPSErgsM4VBaQkBN39f1m58S3MOH0UmA0sn5/Cb/3wb1sN85cYyigvPZrl8y5wNZnvAZ0/UW9hxtC7swxPa/lDxPajAu/QcrPfeHKITr+axt/bwyJQh0mu+peRwFJmMDDDEs2ruaA6cbKTQ73PRtis0GXh/z0me3LCXJLWSeIWCZruTTEM8NqebRK2SRRNMER0rBhrjWTkrn0tSRUB+oeMbl9m9E/l1mDHY1i6K/mMjWhGp/3j138YfX5Y5HAUmA/EaJenJWl6dfwWT8vrQO1Er6akzkrXo42I3DVq/sIC7rzGRolPx4qx88jNTsDlc5GUkSxKcIzXNHK018/xH3iA4QauQgurVJYcD9qmPU/HxveNZNXc0q+aOZmhGMnNe2UZ+Zor02j9/Oo78zBTuWVdKfqY34z4+28iK6Xkh+/PHNwnZXFbN1Zf2ijiOz1gd3PD8Jt7fXcl79xTx9t1X8sm9V/HirHz66OOi3pODiXSPPp8umyfqLSxaV8q1//sZM1/+nMkvlFBaUccLs/LDfqdYiZMGs52DVU2UVtRx8HRTyHOgPWn3TPn999+P1Wrl97//Pf/+97/5/e9/z+bNmxkzZgwHDx7kkksuae9DCgQCQUQy9HGsmJ5H+ekm6SHYK1FDVaONjX7uCP5sLq9hnt/SM4Quc/p0il8drQvruX0+DxV/CYD/8nlrnBaCC+NkELC0XWAyMLdgANNWljAyU88T03O5MTedx97eE3U7n/vKCx9/x0uzR+LGg8sj46n39gdMEgpbXGeCXSXGZxtJT9Z2m2ViQefRnl0U/cdGtPHgP14jSd0OnGjk8ZvyeOLtwPqMApOBJ27K5Zn39vOx3z2iyGRkQVEWe080UGjq5X0twipAoclAVePZmpZmGyx4bQdFJgPTR2SgkMnQKOUkx6koPVbPk+/ux2x3UWgyEK9S8vhNucz687aQRkKNVgeXpOgYmp4U0Bho5cZyaYzetvoLzHYXRSYjj0/PRQbMurwfnx+sIT9TH9HBxj+L3mBxhB3H/p/bVFbNo2/tYcX0PGrNdpCd/X90Lk4n/tdHg8VrMSuXy7A4QqVIsYikH/dPbASvqiRolRysagp7rp1dINruQfmmTZv497//zdixY/nRj35Enz59mDNnDr/4xS/a+1ACgUDQKmrN9gAdarCOOhzhtKTNNof0sLE5XdKN+p51pRQXZlFckCUF/qZeCaRHuWnHemj5HlSVDWe1p7E0sMfrLORnplBckEWCRonF7mJ+QRYPThoiaVj9C+NKymt47K29PDE9jynD0nlwUg51ZgeGeBWPTsvF7nRjdbiIUyn4aP8pvjvVyB9mj8Tp8XqNP/ne/rAuLRD48DufCYrgwqA9uyj6xsZ3flKWcPjLEnzbfF9v4UiNGY1Szu7vG/jPvkqWTMxhqRyabC7iNQrilAp+9V6gpSF4V6SQweS8Pkx/aYskn/F4PCET33kFWShkMsyOswFtUbaRZVOH8vT7+xmakczKjeWsmjs6pFnQj/68ld/fms+tV2QGvPf4TXn8Z18lKzeW8+SMPFbMyKPJ6uRorRmtyutmpJDJeO6WEVIRrAwwxKtZtK40YgKhyGRgblCTI4BXtxwOGMfhmiFtKqum/HSTdH8dn23kyRl5LN+wT+pp4Hs9UiDruxfWme04XG42flslSU0ibddgtlN1xka9xUG8WkG8Rok+ThVVPx6s8/ed68Nv7g57rvFqRacXiLZ7UH7q1CmysrxfOi0tDZ1Ox6RJk9r7MAKBQNBqgjWl4bSkwbrRAQYdq+aORiaTSYGpXqfmf/7xDR/vrwoI7M12V0jGbv3CK+lPfNjzaW32xXfD92kuY2lg1Qq5dB4vzxnJwtd3AvDO4oKASYk/JeVe3/ETDVbyM1O4bdUX0nur5o5m9ZbD3DZuAKMyU8hIUePGqylVKIjqOrNkUg5FJiNJcSoyRIZc0M5Yne5zrudI1qmpbrJL48LHs3wn/fc7iws4XNMcEpD72FxWzc+vzZbqN3wT8p9dbQK8Vqw1zTYWryuVgmOAtCQNj04byuHqZjYeOM2cMf2lc1x3x9iAZkG+jPHkYelSI6Fmm5P/7KtkcO8knv3gO6rO2Pjdx98xZ0z/kO/jz4TBaXg8RE0g9ErUcKtfVt6XDS8pr+GRKUMZn92LM1ZHSDMkH/7Jgk1l1Tz05m4uy0wJCHQjBbKRLCV9Wfpw252ot4S43hSZDDw2LdebsY9CcpyK9QuvlLqZBgfk/ue6YnpepxeIdkihp1wuD/hvtVrcjAUCQdcRXExUeqyejGStJPVoSwOdtnjywrnbcyXr1Dw1cxgP/ntXzAYq/svP/ufn3xkxHE1Wp7SN//7TkjRsKa/hkSlD0CrlyOVyHnpzN5vLa2KuNhyrtZCRHEdqN2zQIejZVNQ0s/TN3eRnppyzBV/04m8DjRZnzBWpYGnHyo3lUtbb2pIZN9u9XWqP1jQjQ9aiXzeS2jIWfMdosjkpfvXLkGNolHKOVDcHBNy+wlAAp9tDaUU9v7zu0qjnqlMrAtxnwiUQXp4zMiAg98+GWx0uDPFqfvSnrRGPEXwvLCmvYX6Q/A8iSwBjSU1824HXNaqi1sz8wixGZOqljPrm8hoee2dvzN8jpUXvDt6i4eCA3P9cm+3n3/H5XGn3Qk+Px8Oll15KamoqqampNDU1kZ+fL/3t+0cgEAg6i+BiotUlh0lPjmPRNSYKTIZzaqCzZsth7rpqIACv3z6Gl+eMZPW8ywMKHCMFBA1mO5UNVmZdkRmyDRDw8PHH7nJzWWYKl/dP5Ymb8igyBRZFBReFFZnOuizo1AqSddELmZJ1Kkor6iiramJBYZa0/yarC2OCmkS1Eg8yHmkJyCG2c4U+ToUhXhW1rbdAcK6carTy+DteD/DRmSk8OnVoyHiIJpeKVFhYYDIwvzALvU7VKu/vNS3SDn98Foo2p5tCk4FUnZpBvRIYOzCV1SWH0aoUqP1cjwpNBjweT8i+fRPs4PPwZbbB27H4hVn5fHfqTNSCbrkMUnXqiEWb4C1IfXnOSFbNHS0ViPqCdJ/+P1yhrP+5BhNpYuMfyMaSmvj7q9db7CxaV8r1v9vEgtd2UPzqlyHFm1vKa1C3JBbCEXxfjmVnG86pxZ/2sGsMpt0z5WvWrGnvXQoEAsF5E1xslhSnIkGj5KkZwzA7XDEb6PjkLaMzU7gkVccTb+8J6Sz4wqx8/v5FBcun54UEBLGWaX0PgLCtqC0OKeCWk8qyaUNxuT002Zw4nG4+P1Qj7aMo28h9Nwzm9594l+SLC7NosjoiehkXmgxoFHIWFA7EmKBmc9lppo1I56HJOcSpFPz7p1ficHs41WgN+L7RsvZF2Ub6pcTRzxBeviMQtJV6s53ZY/oHrGp55SODUCnlJGiUJKgVUYPQcIWFCrkMhVxGvEbJruMNMVekgvXJcHaiGqdS8OSMYZjtDipqmrHYXYzKTMGgU7HvpDeIrjpj4/4bc7A6ArOxPn33G9srQo6dHKdi66EaikxGVAo5OrWC0002FrRMDoKtXRdebcLucvPku/tZPe9yiv1sXv0/t+d4A0vf3BNyvKJsI0qFt3ozXKFsOI158G8RjH8gGyso9g/sbQ53q4o3KxusUpY+VuF9LI/05DhVh9g1RqPdg/K5c+fG/Ex7epQPGDCAo0ePhry+cOFCXnrpJa6++mo+++yzgPfuuusu/vjHP7bbOQgEgp5BpGKz0oq6gL+Dszz+chaAv5QcCtu1Ut5SZBWcHT4XR4Bw2ZfkOBUrZ+ezuiTQj/m6IWksmZTD1OHpXJeTRqJWhVwOFTUW7iwaxB1FA1Ep5HxxpIbHb8ptcZkILPB67KY8PjlwkkariysHGhg30EBqvBqH24VKLsPu9vDoW3u4Y/yggHPyubT4fw/wBvlPzsgTAbmgQ/B4CFjF8pePFJgM5GemUFpRx+IJ2fRP1UUsto5WeHr1pb3IMsYjh5CJt38Q6n+fKDAZONVoRSaTkZao4Uh1M6+UHGLFjGE89+EBls/IpdFqJ1Gj5LFpuby/p5JP9p3kwclDef/nhZxusuN0eTAmqHn+4+94ZMpQpr5YIu2/0GQgUatk/4kG5hYM4Ad/8Hb5LDAZGN5Xz+UDUgN04pekxDHz5c/5vwVXsKmsGg+wbOpQlv57t7TPomwj8wsGIEMWMgnx+alP+v1mRvdP4dc3Dw9IasRrlOw4WhdWY14YIXseHMjGCop9gX1RtpHPD8VuSgaglMtY7KebT9SqMMSrw7r9xPJIT0vURG1QB0R0bWkrndrR87vvvmPVqlX89a9/pbKysl32+eWXXwYE+Xv27OH666/nlltukV674447WL58ufS3Ttd5Hrket/vsd/UgWQYJBILuQ6xCUH85S3FBVmRbwrJqmqxOeicFuqvEqRWM6Kfnq6N1IQ8w/4dKpOxLvEbJmpLDIZnuj/dXYXO4efoHw8jpk9RSAPVNQCCxau5ohvZJ5vs6C5OHpTPP78Fd1Wjl+zozBSYjT713gDe+qOCNO8dic7rQKhVsP1LLZZkpzCvIwhAfeF7+RW7FBVnEa5S43R6RIRd0KB4iFxiXVtSzZGIO+f30NNucVJ2xIZfLzllCla6PQ6dWsHy6t7Olb7wEFzr67hMFJgOLrslGLoO0RA2/enc/SycP4eEpQ/F43PxkXH+O1VhQK2X0StIwfeUWaR82517unziY21Z9QZHJwP0Tc7huSG/MLR1MwRuULr8pl6ozVoZkJAecg++3yM9MCSjm/sOPvTpx3+c2l1Xz6NShfHLvVZItpcvjYcZLWwBCij9Lj9VzuLoZs93FprJqlrTUu/j02OC9L73fPyUkYH1yRh4rNuwL+E3DZaqjBcW+FYnx2UYeuymXaX4TlGB8kyPfNv66+U/uvSrgnP1pTVfoZB1h7TzNdheL1pW2u1VihwflZrOZv//976xevZqtW7cyevRo7r333nbbf69evQL+fuaZZxg0aBBXXXWV9JpOp6NPnz7tdsxzwXqmjvv+fgq3tQldWn9R9CoQdEPCFYIWmYxSdb+/nCVWEVizzdFqqYoPm9MdVQfbaHEEBNrBTjFnbE5O1Ft49K09IY2FwKsZfy5MoyTfeS2ZmENFjZl//XQcbg9oVEqqm6xc1i8Fi92FTq1Eq1IE/CZwNkvpCxo8HnC5QzWyAkF7YY5QfBfc7dY3Rq4caOBYrZmUeHWbMpmvbjkScM37KMo20lcfx7v3FKJWyrE5XHxyoIpxAw0sKBpITbMNvU5NRY2FHRV17D/RwH035PDe7sqA8b+5vJr7GdzSPyCL5z/+jjuLBqGQy/jHXePQquXsP9EIgMXuZmh6Eitnj2RnRZ1U5BhOSqNWeCcMer96kmabk8syU6S/D1Y1SecSLtHwzuJCqRNmOLeRaP7zz90yIqYvfaSguCjbyBM35QJwR2EWNc32qPpuX4F6sJSmNRKT1njoB6+qNJjtPNBBVokdFpRv27aNV155hX/84x9kZmayf/9+Pv30U4qKijrqkNjtdv72t79x7733IpOdTUm//vrr/O1vf6NPnz5MmzaNZcuWdWq2XJtkwKUSwbhA0FmcS+MK8N50n/7BMI7WmFt8b5XMzO/Lo295G+r4B+KxisCS49Tn1LwCvK3rH54yBIVcFvbc/bWX4VqL69QKlk0dyn03DGbulQNwujx81fLQ3nOiganDMiguyGLOmP5Si3D/B7pcJuP/iq+g6oy32UmvRA1xGhWHa5qRyWTsrKjjjS8qvO26ZYRMNuZeOYAzVge3/mU7a28fE/X3EVy8nOu4DLddfAQbxOLCLNZuP8qIzBTmFw5Ep1LgxsPnB2uka72opatlSkugGu5cGsx2TjZaOV5nQS6Tcf/Ewag+lgU0GisyGZjfIiHJz9STn5kijcUbft4HrVLO6SYr7++p5HcflVGUbWTppBxOn7Hxp88OhZy7zeHmvhsG02B2cN2Q3lgcLor/8CVv3DmWZ94/QH5mCm9/s4fL/I4TPMkPltL4aj6crrOT5GBpXKxM9Yd7T0rFlPesKw1b7xJJBtRaX/rWNpaK6JiTbWSgMZ6pwzMCEh7n0hvhXD30oxWonq9VYrsH5b/97W9ZvXo1DQ0NzJo1i02bNjFixAhUKhUGQ/iK2PZi/fr11NfXM2/ePOm12bNn079/fzIyMti1axdLlizh22+/5d///nfE/dhsNmy2s524GhsbO/K0BQJBC+0x9trSge1EvYUH/707YJvrhqSxZGIO1U32gGxLtALH8dlG7K7QgiQf4TJaBS2t61eXHGbV3NG8/Gl5QLZ7fEvWyOeLHOwM4x+k++tFC0wGVs7ORyGT8XiEolTfQ8zqcGF3OslI1OKWwbE6C/UWhxTA7zvRwDM3D2fxulL+5/pLeWDiYJptLpptTkqP1XuDoX56iguz0KoUlFbUtZvGEtoezAlaT0c/99raGTF4u0UTTGGLlkdnpnBZP33AZBUCr/XNZdUs37CX+24YzNPvHZAy4Dq1giduymX4Jckcr7Mgk3ktDFeXHGZUZgr3TxzM/HFZJMerUMrlkqb6zvED+fOmQ9KYLjQZcLjcNFkdaFVKbhjah3EDDSTHqahssHLfP74Jm/FNjFPyfZ0FvU7FiQqr1N3TPwu+cmN5gM1g8CTfX0ozv8A7QZlfkEWD2RtIF5kMyGUEjE2z3cXCa0y4PJ4QPbkv6+w73+LCrA5xG4HYQXEsmUm63mu9esWA1PPuGNsaYhWono9VYrsH5UuWLGHJkiUsX74chSJy9XNHsGrVKiZNmkRGRob02p133in997Bhw0hPT+faa6/l4MGDDBo0KNxuePrpp3niiSc6/HwFAkEg5zv2ztUD3LfNo2/tYUQ/PfOuHIDN6ZaC0d9//B1DMpIBQtrXQ6jbwVMzh3G6yUY0gjNatxcO5Jvj9bxx51hp6T343B99ey+PTBnCQ2/uCXGGiWTfuKW8Bjkylk7OYURmCl9V1IfoUH0P9CSdErVMhksG2w7VMCgtAaNCQ6JWydRh6Uwdns7e7xv4ybj+LH1zD+8sLqC22duEpchkoLhwIB48rAoqRG0PjWVnt7m+WOnI515rxiWEZq6BkO38x59/YJ6aoObXHxyIMA7gzYVXUtfsIClOyTfH6vmqpbjbmKBm9bzLMdtc1DU7vNeUB6YM68P0yzIoXvMlL3xSxj3XZofsv6gl4He6PS0FzsP4vtZMRkpciJSsyGTgmZuHh8jXirKNxKnkLHhtBxsWF0pZffAWLcLZe0awdM4XsBeZjPRJ1vLO4gKcLg9qpYyhGcms3X6UoRnJkhPLlBdLpH0//YNhvLerkq8q6iguzOLBSTkcq7WE1c5vKa/h7qtNKBWydp9wt5ZYGfX27Bgbi1gFquczeWn3oHzFihWsWbOG//u//2PWrFn85Cc/IS8vr70PE8LRo0f5+OOPo2bAAcaM8S6tlpeXRwzKly5dGqB7b2xspF+/fu13sgKBICznO/Zas6wIXls1pxusThdWu4sHJuaw/J29IRm2+QVZJKgVFL+2IyAQ9xU4LrzahEIuw2x3sbOijife2ct9Nw6Oeo4De8Xz4S+KUMhlWB1uzHYX1wxOw+FyhwTk/tpxX+e/4FrxcPaNPjaXVzOvwRqwBO3/oC0uyKIo24jHDXKlnMoGK+98cyKs48T7e07ywMQc/vTZIZqsLvobdLz/8yJvW+wDVXx5pDYkIDpfjWVbJlmCttGRz71o43LH0TrqzA6Wrd8ToN0en21k+fQ8vjoa6IzkX2D8yNShNFmd2J1uFHJZxALQzeU1HK+zSIWQvuz5g//axStzL+fZDw4EBPi+a37d9qO8WnwFH+yp5DdhAv7N5TW4gRXT85hfkIXZ7iBRpwpb27G5vAYPgfK1IpNXTlPVaAW8tSO+94uyjZS0/B4aP2/zcNx342Bu+eNWaWy/PGck31TU88jUIVTWW5k6LJ07/rojYDKQlqiRfu+VG8sZmp4UtTOoQi5j/dff87uPyoCumRh3ZuAdjViuLedjldjuQfnSpUtZunQpn332GatXr2bMmDGYTCY8Hg91dXWxd9BG1qxZQ1paGlOmTIn6ua+//hqA9PT0iJ/RaDRoNJr2PD2BQNAKznfsxVpWrLfYqWmy4fJ4WPlpOVvKa1g0wURpRV3YDBvAw5OH8NbdBVjsTp6aMQy7y80ZqxOrw8Xnh2oCMlsAE4b0jnrDTtQoOVZr5sWW4/tYNXd0wGfDacfB27DIn1iFpzanO6qefcVNuXgAp8fDixvLQmQB/u4OKzbso7gwiyStkjiVgq+O1nFZPz0Tc/vw/MdlYY9/PhrLjtRuCgLpyOdetHF55/iBLFu/O+wK0bK39nDn+IEh15avwPiawb1Ys+UwP73KFLPRi/848V3Tv755OL/98EDUa/6xt/awZFIOv/nwu7D73VJeQ22zndVbDrNkYg4qhTxssTV4M/tLJw3hqkt7kahVEq9SsOC1Hfz2/xsBeGUs+f30FJgMPHFTLlNfLAnQh4ezGeydpKH6TGAhZL/UOEZk6pn5stc28fXbx/DK3MuZ88o2KTERfN+IVSvTbHeR17JqCBf3xLg1ri1tpd07eh46dAiPx8NVV13Fa6+9xsmTJ1m4cCGjRo3iqquu4sorr+R///d/2/WYbrebNWvWMHfuXJTKs/OMgwcPsmLFCr766iuOHDnC22+/zW233cb48eMZPnx4u56DQCDoemItKypkcspPN0kBOXgzzZEybFvKa7yOIh4P/Q3x9DfGk907keQ4FbNf2c7KjeUhwcCKDftYPj0vpANeUYu1V22znUPVzZRW1KNTK1g0wcSquaPplRgYEEWSpWw9VEOhX8e6WA9T3/vBHfIA+qbEoZLLkMtlWByusM2F/LfdXFbNuIEGErRKnG43RSYj2b0TsTiiB0Rt1Vh2pHZT0HlEG5eFJmPEIHZzWTWFft06/cfLy3NGolUq+MHIS/jdx99yxhq9JXrwONlSXkNakibisX3XfEl5DRZ79Ilvo9XBomuy+fbkGeqaQzvy+tNgceDxuFEr5Lyz+wRpSRqqGm1SUWa8xisZq6gxk5+pZ35BFgdONAZ07PVRYDLg9oDZb/x5CzRPSfemApOBrYdqWLFhr+StHe738AX+4SgwGdhZURcSyEfqQBz1+5vtHKxqorSijoOnm2gwn9v23QWfnOaTe69i/cIr+eTeq3hxVn5EX/zW0u6Z8uzsbCorK0lLSwPg9ttv54UXXuCuu+5i9+7drFq1imeeeaZdbRE//vhjKioqKC4uDnhdrVbz8ccf8/zzz9Pc3Ey/fv24+eabeeSRR9rt2AKBoPsQbVmxKNuIXA69k7QBgW6sTPPRWjMLX98ZsFwbLVg02100WuyS/rHeYsfm8HbdnNai6SwwGfjDnJGkxmtotDposDiQIaPIZJCChEiyFJ+mVoaMzeXVLfaNhrDBRXB2zf+7FpmMxCvlUnOgu6/Jjvo7+LbVKOUoAX2iVsoIdZTGsiO1m4LOI9q4jGWh6Xs/0spRkcnI3IIB7DoeuQA7Upa5ydq67Hp8lO6gAKk6DTani5H99Thc0b9PcpyKJpsTs93JzqP1LJ+ex9cVddxeOJAGswOVUs64QUYsDgf33TAYm8PFksk5PP3e/oAEgE9iU9lglQLsQpOBeX62gMEFm0smDWHRBBP5/fSoFHLW3jFGcqeJVCvjvw+f9t+fc5kY9/T6kHAF55E80NtKuwflHk/gBfnee+/x9NNPA95Cy+eff57f/OY37XrMG264IeS4AP369Qvp5ikQCC5coi0rPnZTLuVVTSFBQGszzf7LtbGCxXiNSgpYH39nb4gEo7SiHo1SzrMf7JeCaWOCmr8WXwHvH2BzWXXEyYJPU/uPn47jp2YHTTYnP8jvy7IW+0Yf4Xx7/R0aVszIxenxFnbOK8giQRv9ceDbNkmrpG9Qc6CO0lh2pHZT0HlEG5exrrsErZLx2UaGtzirhOq6q3Hj4Yqs1LDt1SO1gtepFQEe3uHwXfNxagVF2cawUqqibCMpOhVfHDlDr0QNjRZ7xElyUbaRZruTXokavq+1cM+12Ux9sYRRmXoWTcimotZMTp9EfvjHz6luslNoMrBieh63/Gkrt16RyZwx/UMaGb1y22hS49V8+Isi1Ao5R2vMPHfLiLAFm2abk9KKuoBJTaGfO80960pZNmUID07K4XidBbXi7D7yM/VhJzatnRh3t/qQc3V06qwJRad29PShUonshkAg6BgiVenXNNtRymWSo4GPaBaHBSYDu79vkLJLNqebykYrKTo11w9J46P9VQGf9/mFuz0eSivqInbyLC7MCtCU69QKnrl5OM/951vJBSZYzuKP2e7C7fEw55XtAPzy+mymDEvnl9ddSoPFIX0v/wdykclIaryaVXNHU3qsHrkHXMCG3ZWStj5WprHIZOCrinp6J2kDHmAdpbHsSO2moHOJNC7rzY6o112CWsmLs/KpbLCycmN5SOMsn1PSiL56Fq7dGeAkkpaooezUmRDHE51aweq5o/m6oi7mNV9oMqCWy3hocg5PvXsgoBi1yORtU3+kppmUeDVPvruPpZOHML8wC2SygADOF2C/9c33/OmzQ5K/udnuagngZTx+01CO1VpYPj2PfqlxfLj3FFanm5w+iWFXzQpNBhK1So7WmvnbtqP8akYeC9fujKivT9AoQ75rSXkNMpmMt+4uQC6ToVXJefztvQH3tuAMvI9zmRjXNNvDOlz5GhNVNlg5VN3cKc4u5xpgd+aEot2DcplMFtC4x/eaQCAQdBaRqvS3H67F4/EEPIijLdsuKMxChoxXSg6FWP09OcPrKuV7eOnUClbPu5yXNpaH+IUHO59EszX0NSmJFSQ7XR4pQBnWV49OpcDh8tArUcPzH38X0OzE2y1wAHNe2Y7Z7uK6IWkw6hIefXN31N9Bp1bwyJQhDLskmdONNibm9uHj/aeoaQ4tsGxtE5BzpaP2K+h8Io3LxRO80qng8bd4QjZxakVLRtMZUcJSYDIwM78vL83Ox4OMumYHep2KkvJq8vvpGZWZEhBMPzJlCC99Ws5XFfW8NHskU4al0ztJKwWLpxos9EmO42/bjvDkjGG43R4+/baKUQNSWDplCEeqm8lM1fHx/lMsWlvKP386jqpGG9cN6c17uyv502eH+NdPx+GZJKOi1kySVkmvJA3lp5v43UdlYbP3m8urOVprofjVLwGvg8rKjeWMzNRz3405yPg2cEKQbeS+GwYz/9Uv+fXNw9lcVs339RZWzR3Ngtd2hATmhSYDJ1tcXoLZXFaNXCaTpBi+bpwNFgc2p4t4jZLnP/4uYJ+FJgNPzRwWcRyearRS1+z9/5Ycp0SrVLDvRENED/lD1c2S+0tHSlraEmB3ZsF5h8hX5s2bJ1VxW61WfvrTnxIfH7jcGcu6UCAQCM4X/yXKBI2SsVmp1JttXDkoj0fW76GkvEaSgyybMoRlU4Zyxuak0eKg9Fg9u79v4IvD4a3+Hlm/h9/cMoIHJzk5Y3WQolPzSJCtG4Tv5BksTQmnH480WfBlrZoszoga28en5/LARK9LjNPlZsvBGikAeHpmHvmZKVQ2WJlfOJARmSmSg4zPaq64IAt9nIrUeDWPvrWHh97cI+2/wGRg2oizvSD86SjLsu5ihSY4d2LJBJJ1avqn6pg63Nt11ifPqDpjIyNZy0P/3sXHB06zau7oiMXPpRX1nG60sbrkcIBspNBkYPglyYwdlMrPr8vG4/GQGq/B7nKj16m5vWgQ+ngVq0oOBRQ5+9q8PzY1l1qzjXqzk2c/+I4Ck4GrLu3Fwtd3smruaJ7/2Btgv7fH2/lyfkEWT767n1H9U1Aq5TSYHSRqlSRolcz68zZem3+FtFIVnL0HsPoVbPqkMx4P1DfbufeGS5lXMED6fVLj1cz6y7YAWYnD7eEvmw6xbMoQlvqNWZ+H+g//+HnE/091ZnuAB/mgtAQOVjVx7f9+Lk3+g+Uzdld4iV1FTTNL/Sb8vnOYV5DFtkO1Yfsl+MsIO1LS0pYAuzMLzts9KJ87d27A3z/+8Y/b+xACgUAQk3BLlAUmA/ffmMOzHxzgsswU5vsFAaXH6vnowwPcOX4Qr31+hE1l1ayaO1ry5Q1mU1k1TVanlF06WNUUEpD78HmC+x5u/Q1xAZKYcK3D/YPkByfl0GzzdvjTqeUkx6nRKuU8GqQjB2/G7fG397L8plzcajn/2VfNpNw+XJfTC71Ow7L1uwMe2MGZfF+A//aigrB+y1vKa3j87b2svAit0ATnRmtlAun6OCbn9QlYDRncJ5FH39ojrfiUHqtn3EBDWBmHVw5WFlGacd8Ng1HIIU6lDOhuG8kOdXNZNY++tYcV0/PYV3mGEw1WqaC0weygyCfnyjbyyJQh+KpU7llXyqhMPffdMJjpK7fw6vwr2NpimzoqMwV1S5OgSPjXfPjbIA5NT8LV7AnYdtXc0ZI7i2/CnaJTsbmsmgcmDuadxQU021wkx6k4Y3VgdTqjOqXo1Ep++EevhaLv/1GTzRts+t8X/Lnq0l443WdQymUYWiZbpxqtIQG57/9FsE87eO8nC682sfVQaOKjIyxP2xJgB9cQhUio1AoazO1zru0elK9Zs6a9dykQCATnRIPZzpJ/7gqbtZbzLSMyIzfcuW3sAJZPz+PRt/bEdGbxv4HHutk73R5emJXP2u1HuWFobzKStdJ74YJyOPswzO+nJy1Jw61/3gbAq/Mux5Cojmold6LBikIGN+b2Jl6lxOyQhfWDjuRhHs1vebPwCBfE4FxlAv6rIQ1mO3tPNAZIsFaXHKZwUKDNqI+oDbRagtRdxxt4t6V+ojXblZTXYHW6uTwrlTMWB9fmpPHSxnKuHdqbR6bm4sHDtTlpzHz5c16bfwX5/fT8465xJGiV3PwHb3Arl3kb8xSZjDwydQg2hytywahf3cbcgize2F4hBdyv3Daaz/2C1iKTgV6JGvIzU6TJtE/SBnC8zsLP/raz5bNGRmTqufrSXhSaDGFtTwtMBr45Vi/dA3z/j564KTeihn91yWEaLQ6e//g75hdk8fR7+3lieh6NVkdUi9nilmJcf1QKeYjdI3SM5WlbHJ38C84jSajaS3LTJYWeAoFA0JGcbLRGzFp/VVHH/RMHh33ImO0uzI6zloaVDeE1mD78MySxbvamXgk8/vYeRmel0mxzBgQIiyaYAh6Y/g9CAL1OjVImR6dWYLa7SNapqGq0RT1eg8XB69uPsmJ6Lk6PB7eHqJ7M/g/Lomwjzbbovs/CI1wQjVgygZoWP+9w0havlWjg9eUbm+GINXmuarTRJzkuJFiMtV2zzcltq7/gxVn5aFUKlk4ewgd7K5n58hZem38FjVaHd/VKoyA1XsWG3ZVcP6Q31U12irKNxKkVklxl5ste6ci7iwtDVqCKTEaemJ6Lw+3m+iG9qWu2c/cEE3Ne2c7ITD2JWqUUtBZlG7n7ahO3/nmbJAPxadQbzN7fLM2vSHxzeTXzCgZwusnGvIIsyUr17LG9k4Bgy8NNZdXUmu2smjualZ+Wh2jBV80dzRd+XXzzM1N48F+7WHxt66xV/fHd14LpCMvTtjg6+RecR3IBai/JjQjKBQLBBUWD2c7xOkvY93xZjt98cCCklbxPwpGWqCFBe9bSMNINvMBkYMOuSnYdq+eZm4dHtU0rMBmoM9vZXF7D/RNz+HVQy25//fjOivrwWvFsIytn5/PAP3ehUUb3TQbvUnhFjRm5TM6y9buZNaZ/1M/7HpZe/Wke9hgBi/AIF0SjwRJNKqHA44FF60rDSluabI6wVqU7I7ilxLI1lclk6FShYybWdvEapRQsWh0uGix2qbNnYpySz8pOU2AyoJTLOFJjZsfhWqYMS6fIZOCxaUO59c/bAiQjhSYDbuD+iTk8pJDTbHPSZHOSlqihosYMwLyWQs9Vc0czqn8Ky6fncrzGwup5l9Nsc5Khj2P38Xr+WnwFVWdskvRu7fajDM1I9jrWBK28+SR6i9eV8vrtYwK06b0SNVKAHxwwm+0u/vzZwbDdjuXIGDUgRfq7uMCbZV86eUjU3zT4Ny8wGXCE0aZ3lOVpWx2dfAXnPhegcLSH5KbdO3oKBAJBVxJNN+krFAsn4Viz5TCPTBlC2akzqBXeW6PvBh7cndOXmfLZeS351y62lJ1m7pUDKDKF/+zpJlvA8fzx6ccvy0zh7UWFvBbOj7msmjUlR/jbgiuobLDE7MBXeqyeP/x4JJ8frGZeQRapOjWr513OogkmdGGaoVySEsfa28fw9Mxh9DfEk5aoCfnePoRHuCAWOnXknF9xYZZX2x1B2qKPU4e9vleXHGZ+QVZAR1vwOn0URej8uWruaNISNSTFKUOu+1hjyCcWT0vSsO6LCimIK8o2olHKOXCigcUTstn7fQNVjVYeuykXl9vD3RNMKGWykID8yRnDOFFr4T/7TnGqwYpGJeeVzYdwuj38ddsRdlTUefffIk9ZOimHt785wU/WfEFts50Fr+2g2ebkgX/tpsHiYOHrO1nw2g5KK+qYPaY/+040eDPmQasM+jgVpcfqMdtd0n582x6vs0gTj+CAWa9TRZawlVczrG+y9LcvoFfIZCH/f/x/A3+vc9+90Rq0AtLRlqdt7caZrFN3WPdiHyJTLhAIejQNZju1zXaQgdXhlpxTwmXUomlIt5TX8OCkHP6/P21jdP+T0lKuxe7iF9dl89DkIVgcLhrMDnZU1AW4J2wuq2belQPCZqJ8Tgsvzx7JogkmrI7ITYFWbixnUm6fqA9CkJGeHMfidaW8MCsfedBytO9B98Tbe7k5v2+IjjacRWNRS3YtJU5Fv5bGQMIjXHCuNJjtVJ2xUW9xkKhRRrT0jFSwCd7A3O5y821lo9QMqLSiXpJzyYCHpwzF6fJwosGCUi5jz4kG5hcOwIMn8kpTi+TC3y7wbHdcQtxX5l45ADduirKNHKg8w5KJOUx/aQtF2UYWT8hGBtyY24fkOBW9E1MorajD6nBRfcbOvFe/5P2fF/HO4gKarC70OhUn6i2Y7Q5+suYLCkwG+iZr0aoV3H9jDn/670Fmj+nPPetKW+xLs7j1z9tYPe9y/vTZIcAbMBeZjJS0jPV4jZK/LriCFJ0Kp8tDg9nB0Ixk7llXyht3jpW+S6HJQLpey+qSw2E7m/oC8aJsY0jA7IzRndQ/s+7bj1Ih46mZw3jozd0Bv2lhS5F9XbOdl+eMDMjwzxnTn1VzRwOQmaojLVHT4fcXXw2Dzx3I65Fuj+mR3tFdhkVQLhAIeiwn6i089+EBFk/I5kS9lQaLg8xUHUq5jNsLBwKhWelo+GQvowakUNtsl7SfPo33lQMNxGuVTMztw41D+3CiwYJKIWdnRR1OtycgE+WPTq1AH69m34kGbhjam1VzR4fVswMRG3/4+L7emyXPz9RLOtCfXT2Ieot3yX/39w18e7KRNfMvD+vOElzYWWAycPc12agVci5J1QV8VniEC6Lhb3cYr1by1dE6Vry7D7PdxavzLo/YYVMRo3dJs83J8ul5lJRXc98NlxKnVuJyeahptuNye3h3dyUHTjQwe2x/Fq31Oo/cddVAHpiYQ7za67AS6krkbdDzyJQhksWn2e5i7fajrJiex+EaM1aH160kQ6/lyQ37uGP8QJZPz6W0oh6z3ckrt40mJV5Nk9Xr3z06KxWb08Vz//mW/7lhML/58ACD0hIBOGNx8KM/b6OwZZL86pYj3D9xsNd//Zps0vVaGi12b+Z7Yg6nGq28OCs/wC7R90+ByUBVo5X5hQOk7+tye7ht1Rchv51/5r/IZGTp5Bze31PJyEw999+Yw6y/bAv4rLe41GsBOfXFEmk7n9NMNILdYoqyjcRrlPRO0vLbH10m+ZQnxSlJUCt54p3ApkS+BMJivwTBR78c32n3l7Z06ezoLsMiKBcIBD2SBrM3aH7gxhweCQo+ff7EV2SlBngfG+Ijd8kE0Ci9mvOqRqu0z2gNS+YXZLFo7U7yM/XcNDwDnVpx1srML7uXGq9m5SffMXtMf5794EBABqnAZGDtHWOpb7bj8nhith0Hfw36YRavK2Xl7HzWba/gSE0za+ZfTlWjza9TYChbymtYMjGHG3N7s+d4I3312pCA3IfwCBeEI5LlqG8VZkdFHftONJCfmRIwBkuP1eMmegY2KU6FB/hwz0lSxmSy5j/fhQT28wuyWLutgruvGcTgPkms2XKY331Uxqq5o6OuNP38umxpUuw7n6M1Zopf/dLbdXPGMKoaLTwyNZfSo3XodSpGXKLnqff28ei0XJxuN70SNTTZnMx8uYR//exKJuSkseNILTeP6ifZEybGqaT9/eaD/SydnINGJefJ6XnIZFBW1cRrWw6zbFouB055bQX9J/MFJgM7K+ooyjaybOpQ3t9TyYp392O2u7zdeXUqikyGkNqYxdd4/dhXzR1NVaMNpULG0D7JmO1u6prtZ1fHWuwcK+utXJuTRl2zndXzLsdsd2FMUHPrn7dRXJjVqi6/cwuyWLv9KHOvHMAjb+7miel5ZOjj6J2kDdjmuVtGcLzewtEac8Aqon8iIlh601G0tUtnR68giqBcIBD0SKqb7OSkJ7Fiw96wnrgAl2WmSA+6ApOBJRNzpIdMsNWXXqcioaVz3Zwx/aXP+JwX5ozpz4LCgVJmOzjjvGLDXooLvTrzl2aPRKuS85fNh1ApZFw/pA85Gclhq/a3lNcgw+ubvnJjeYgTiz++B2Gwh/nJBhtPz8zFhYyHWjyCX54zMurvd/qMjYHGeCYMSQt5eAoE0YgU0PiPCd/E0X8y6+sQq49Ts2ruaGQyGbu/r8fjgWF9k7E53aToVGhVCh59aw85GUkRxwx4HT/GX9qLZ94/Wzgd04nljE3qHAne4HRKXrrk611aUYcpLYHnPjjAA5Ny+HBfJUWmXjw8eShfH6tnWN9knB4PFbUWRvVPYc/xBkYOSGHDrhM8/o53laDQZCBBrWDRhGzweFg84VI0Khlu4Ln/fEt270SuHZLG/RNzOFzdTIJGGeDTXZRt5NGpQ/m+zkJffRzv76mU+iUUmgxSgH/TiAzmBTVcMiSqOXS6GaVcxvcNFla8tE8Ket+4c6xXY5+k4ZP9Vcx82Wvd6HvtJ3/yFny+s7iA/Ex9xAZmPovHynor0y/L4PtaiySd8RaMRg5q3R5PwO8fjE6t4GBVU8RmU+3F+XTp7MgVRBGUCwSCHkmj1RHTZ3jJpBwKBhkx252UHqun+NUvvU4pKgW3XpEpBQz+8pQ7iwYRr1Xyi+uyGXGJntUlhyI6tfhbCW4ur2FeQRZmu4tvjtfz3clGfnndYOQyaLQ4uDG3T9Rz9S31+x6EGqWcIRnJ0qQhRaciXqOU2nADKOUyZMAlyUo8yHjEr2lHLGeJvilxpHbQA09wYRMtoPGNCf+J49JJObjc3mvy+3oLJxutlB6r540vKnhxVj4vf1rO8x+fbdLl03TLZbKoNSDFBVlY7O6ASXa/1OjFev7joijbyMKrTfxn/0m+OFzLY9Ny6Z2o4WSjlQcn5XCs1sxn31ZzfU4fqpu8HUZVchmVjTaS41SsmJ6HxeHEYncGBM2/mjmMb47Xc2mfJFx42HOigZw+ibz833LuvX4wT7+/n7REDScarIwbaCAtUcPozBRenjMSfZyKXkkaZvk5t7z38yKy0xLRx6lI12t5f08lq0uOsHre5chk0GxzkahRYuqVwKQXNkeUwCXFqSgprw6QyxWYDFSdsbH7+wZJKvPJ/ipphcPp9rBkYg5KuYyjtWbUCrlk8ZifqSe/JZngj39Q6y9xilMrUCvkUbPvANf+72fSa631/47VOTaY8+3S2VEriCIoFwgEPZIkrSqmj/ixWgsaZWAXvXvWlfLhz4ukjHIkeUqRycCYrFS+qqgP2Gdwhtw/M+f778su0XP14DSe/WC/FNDHylz7tjXbXTz4r128MvdyfvvhgRDJjG/p9NkfDmdNyWE27j/FytkjOWNzMq8gi1lj+qNVKfB4PBEffkXZRpI1ShGQC9pErIDG/1peXXKYm4ZnsPz9vSGyrVfmXs4Ln3wXIjfZXFaN2+PhrvGDYh6nj1oRMIbBm8kN16fA52ryxp1jJXvBm//wOX+/aywOlwer3cU3p85w+YBUjteaQSZj8TXZkuVhXt8kXG4PaqUCY7ySnRV1HKpuZlJeH16eM5L+qToStErUwMHqZrJ7J+JyeVcBTjZYGZSWSE2zjTuKBmF1uNi4v4rpIzKY9RdvAF5gMvD4tNyAgByg2epEo5TzeUt3UF9A7auB0SjlJGqUnDpjYVRmStjv7i3cdIfc4+6ekI3D6WbFhn2SLChYUgKw9vYxUkMi37Y+f/NwnLE6+L7OzNEaM/UWB1qVgk8OVDHQoGPxBK+XebAkadE12Xy0/1TAflrj/x1LGx42YI/r2ILNtiKCckEAbrebyspKANLT05HLhWumoHtiTFBzqjH6jTM5ThXSvnl0/xSsTrcUCPhsEsMVhrkJ7XQJgc12/DNvWcZ4/t9d40jSKnnuwwOMyExhfuFAlHIZvRJj6dnP7ufWKzL5zYeBXuY6tYL8zBTiVApenj2SBK2SByYORh+nxuZ08/R7+wOCmwk5vXh0ai7Lg+Q9vkxeekp4DblAEItYDhT+1/KyKUNYsWFviBzLv7uuf+dO//cfnJQT9Th6nYoErZK/Fl9Bg8XB7YUDUcpk/HDkJTyyPtT9Y9m0XGb/ZRvLp+ex8PWdvL2oALPdxbFaC99U1HPzyL7k99dzpLqZygYrY7JSUchlWJwuHC43Z6xOPGpI0ioBDyP66Xlk/R7GZ/di4es7WXv7GJK0Sg6cbmbHkTqG903m7rWlPHfLCBa+vpOibCPTL8vgvd2VfHOsnkemDOX7WgvLp+dJGuvv6ywhtq46tYJb/rQ17O+sVSnYeqiGQpORRWt9DYA8Ic2J5hYMwOlyB+jps4zxWO0uLHIX//rZlZQGuUr5GJ9tJF2vDdjW3988HBqVgnqzA6fbQ5xKwVctNQajMlNQyGDqsPSAWoOqRhtWh0tym/Enmpwkmjb8sbf28Ni0XJa+uTskYH9q5jCuH5IWUHjq/35XWb6KoFwQQGVlJfNf+hCANXffSN++fbv4jASC8CTr1PQ36CLqrwtNBlLj1QHtm33FOCcbz2bYY9kkhmsLDd4sXZHJ6D3GvMupa7bhcruJU8vxeDzcOqZ/QPY9llYckB56mS1Fl17XB1dAJlDS6n5+mF9cN5iS8mo2BNkeAlKgU1yQRXFBFgkaJclxKhK1Svp2ckB+rkvLgu5NNAcKf9u9ApOB4ZfoWdridhKMr9tkJJyuyKs9hSYD/fRxHKuzSJnYryrqyDLoeG3rYS7LTGF+UIHpM+/v59YrMtEo5QEuJfo4Fctn5HLLH7eycvZI+ui16DQKzA4naqUct8fbgCgtQYPd4+brinpS49XodUqKC7NI1CpZNXc0hgQ1R+ua0arkLJs6lBkvbcFsd7XYGRpYNnUotU128jKSSUvQ8s6uE5Lsxfd7BVNkMqBRhSbHvI4sNnL7JrG65DAjM1OobvI6P71x51jmnbFhc7pJjlNhdbhYt72CnIwk6X5UZDIyakAKz39cxht3jsXt8ZCWpCU/Ux/we/sC2Ga7M8AxSimXhXz27DkbKa2ok1xufOc7vyCL/9t2hBH99FwzOI3TZ7y9G7QqBSP6JfPDP26NGORHkpNEk1INTk9i6b93hazEbCqr5qE3d/P0D4Zhc7q7leWrCMoFIWiTwzcMEQi6G31TdDzzg+EhmZCibCO/mjmMZK2SdxYVhhTj+N/4YxWGRXo/OU7F8hl53LZqO8fqLC361EEseG0Hr98+JiT77l80FZzBe3RaLs+8vz8gY+ivXffP5i+aYOJfXx3j3hsGs/ztvcwryIpo+7jxwGnmtEwOHp48tEsC8rbYjgm6N9EcKJZPz6O22cbkvD7Eq5VUN9ui7Cn6+LM6XGFtFX2rPY+9szdkzEzOS+d//rGLj8Nk3wFuLxzIkZpmFl2TzaffVlFkMtInSYvL46G6yY5WpUCrlFNp83azvPOqQfRJ0nLlQANfHK5hQK948i5J5vcffcedVw2itKIuYFJfaDLw+E25VNZbJaeUXokaRmSmMOOlLbw4K5/VWw6zYnqeZEEI3nvW3VebKH7tbM1IkcnIogkmbx8GP3xSD2Oimll/3kZ+pp6dLY2HzHYXx+ssLHx9pxQIv/FFBYuvzZbsEIuyjcwvOGuvGK9RIEOGSi6nuCCLBYUDsTq8k4mBxngef3svHx+o8jsvA7cXDWT4Jckh/2+KTAYWXmNigd/38P9MfmYKeRnJ0jn6eP/nRVHtYCPJSaJJqaIlXDaVVWN1uLud5asIygUCQY/mklQdK6PcWMPdYP0zfbEKIsO9X2QyYnW4eHLDXh6/KZcFr+3wBp0eD3+/cxxyeeSuncWFWSyZlMPxOgtZxnh0KgXLg4ILOLv9i7PySUvSMDQ9iQWFA+mTqEaX3xeXB+YVZEXtnOjjoclDSNAouiRD3hbbMUH3J5oDxQBjvPQ5pzu6/WEkbW+ByUB8S7v4+24YzIOTZNSZHThdHjweDyvCjJnSinqabc6ox1Mr5SjlMqwOF98cq+exm4aiVMhotDolq8GjNWb+tu0Iy6bm4vZ4sLpcOJ1uHntnH+vuGMs3x+r56dWD+PUHB0LGeUl5DU+8vY9lU4dQZDKybNrZjLlP0z51eAbHa828cttolAo5TTYnl+i9E4M37hyL2e5CKZdx6HQTqQlqPj1wivULC7C7XGhVCpRyGW6Ph1l/3saQ9CTmXjkgQNudmarjncUFUlOhhycP4XitheduGSFlzhetLZWcYqoabaiUcua2NDaaX5DFff/4RnJm8Q/I4azn+9hBqUwdnsGyqUM5Y3Uil0GCRim5ugTjW3n0rV74Y3O6otbARJKTRJNSxUq4nLE6GJSW0K3uQUIwLBAIejzJOjWD0hK4LDOlVTdZX6ZvfEsXu0ittotMRqoaAzN93o573u6dnxw4TVrSWa345vIaqs5YqY/QdMPXtfNEvRWVQs6vNuyjrKopYlZvS3kNWpWCaS9uYeHrO1m0dicJGhVmh4vH397T0p0wehDSNyWOZI0Si9Me9XMdQWtsxwQ9l9aMO98EOBwFLRKzoqD3fYFhbZOdWX/ZzsyXP2fai1u4bdUXkvtQ8JjRqRW8PGckDlf0QCxOrSC7dyIy4PohfVDIZHjcHvZXnuHJmXk43W4yUrQ8PHkoNpeT47UW3G64bfWXmO0u7C43+f31KBXysFI08MpyHG4Pd08YxPt7KqWM+dyCLJ7/+DuuGJDKq1uP0CtRw8LXv6L41S+xuzxUNljx9VXSaZSM6p/KrD9vY/N31STFKTHbXKiVcjRKBU1WJ6/Ov4L7bhgcoAMvMBn4YO9Jpr24hZkvf868V7/k21NN/GTNF6zdfhSLwyU16/Gt0i351y6pe+eW8hrWbDlMcaF3hSI5ToVOrQj7Ha/N6U1On0RONdj4/GA1TpeH43WWqBlvm9ONPk5Ff4OOdxYV8svrs9GpFdQ3O5hfkBVyLy4wGXjiptyI9/Ro15e+mxZzRkNkygUCwUWJL9NX02xnZn5fHn97b0gjlPmFAzDEq0Oajfg/BJusgQ8gm9ONTCYL8UH3796ZnqyVsmyzxvSPep4NFgc6tYL7bszmhpw+nLE5+dV7+6WMkm9SESnDlKBSUFbdTLxGycHTTZ2q5z5f2zFBzyeS1KUo28iK6Xmk6FTSSldNszfr7htjz90yImBfvjEVH2Z16M7xA1m1+RAjMlOiWu5plQpOtrg2jeyvRy4HJTLGZqXy/r5KLu2VhEopJ0Ov5YNvTrH7WD15l+ilCaROpeBYjYUETfTwyWxz0TtRS+EgI1cMSMWQoOFEndfP2+F2MzQjWSrqLDIZ2H28gfxMvdSxd3XJYVbNvZw18y/nw72nONVoJdOgo6yqCaVcJn3mxVn5AQH5/DCOKJekxPHGHWNJS9JgcThZNfdyErQKqhptzP7LNgb3SZTkL+ANzBcUDqTAZOC7U2ckGV1wsF1vcXDrn72SmKdm5rFyYxnzItTg+EiO8xbn3rRyC/mZehZdY2LcQANfHqnlpU8PUlyYFdJsKur+okip+ht0Hdp9syMQQblAILgoaDDbqTc7aLY7aba70MepSEvUMLBXAg1mO09Oz/O+Z3PR2BIYPPDPXayed7m0D1mY9uAJ2sAskkYp58DJBv7503E8/d7+EEvD1XNHo1LIW+0nrlUp+Ou8UfRJ1tHsdKFSenWfc1qsD3d/X8+CwlDdbVG2kSdn5PH4O3sDsoqdqeeO5dLRHTNVgvYnnNQlQauk2ebkSE0zep0at8dDolbBprLT5PfT89wtI8hM1bFogonVJYfRqRWSTWh+P33A/o0JaqYNz/A29nF7uGlEBive2RviQHL3NSYsDmeARWpRtpHlN+VidTrZ/G01jRYXV1/ai1v+uJXBfRIDgtyibCNVZ6z8bdtRfnH9pVG/c6JWiQd4peQQN4/qxwJJwmJk4tA+lLYEwQUtrjAzXtrCP396ZcC5uT0ePtx7im8q6pl+WQY/+tPWgNWlIpOBjGQt7/+8CLfbQ02zHZfbIzVvMttdFGUb0SjluDUKXG4PT713IMSKMFwgr1HKpdfzM/VhXaj8M+i9k7RsLq+JOikqMhkxxKs51WiVznHlp+VMHZbB5QNSMdu/CziGTq1g2ZQhOF0eSivqIhaJR5NSdWT3zY6gxwfljz/+OE888UTAa4MHD+bAgQMAWK1W/ud//oc33ngDm83GjTfeyMsvv0zv3r274nQFAkEn4O/2kRynQqOQc6zewosbywIeFtcNSePRqUNZvmEfOelJ5PfTo1LIiVMriFPJWT3vcn7zwYGIzYNGZuoD5C0FJgN7TjQwYXBaQDbbh9cGTsadVw2UXouW6S4wGdAqZPRK1vH4O3u5dUx/XttyOOR8hvfVc/mAVIoLsojXKNHHqYhXK0IK4aBz9dzRXDq6a6ZK0DH4rjWlQobF4WLP9w3IZTIMCWqeeGcv2w7VsvaOsWELJ1+aPRJjgppnWlaXRmSmSC3mjQlq1t0xlsff3iONC1/n0AdaajfUCq+Fn1Yl50RdYG+DzWXVPPrWXh6aMoT5hVksWlvK1OHp/P7WfLYeqpEyxL6GRn/bdpQlk4bw0b6TFGUbw8qzikzGFu27i0FpiQH7WHSNif2VjTw2LRcPHpRyGYermzHbXQErR0UmI4laJQcqG1k+I5fnPvg2MCBv2VecWsHD6/eEBNovzMrnje0VPDh5CPVmGw6Xh0+/PdsUKF6jJF6j4JP9VWGz4Hqdijv+uAOz3RXWhSpYZuLTb0frAjq3YAA/+MPnUpMiqZC9IIsErSrgPqhTK1g1dzQvf1oe4N7jKyZusNhJ0J4N0iM18+nI7psdQY8PygFyc3P5+OOPpb+VyrNf65e//CXvvvsu//jHP0hOTmbRokX84Ac/YMuWLV1xqgKBoIMJdvv45fXZjMlK5aWN5SGBb056Eo+/s5fZQfaF4H3ojcxMidg8aNmUIYwakMrsFkeDApOB2wsH4sHDGaszoiPK5vJqHpx81n/5jS8qWD3vcs5YnTS0WLvtrKjjwIlGZo/NJDNVx9I3dzMiMyVmy/EFr+3gw18U4fF4OFjdHNb/GWK3kW4vemKmStAxVNZbOFprZuXGshD3oXkFWYzopw/x5gdv4eSUYemolXJKK+pZNMHEyMwUrsruxc+ucZOkVfH0+4Ee/Wa7i4fe3EOBySB1nHzvnkJqmuzs8JNp+PA121m0tpRRmXo0CjmGeDWTcvtw9aW9SNAo0ajkWO0ufnHdpcz+yzYu66fnvhsGe7f3l+WYDCyfkcdzHxzg/omDpax/cpwKRUu/gm2Ha3jspb2MykxhRKYepdy7ApegVUq/yfIZeRyvMXP3NSYqaizcPn4gC68xUWO243C66auP42SDlWVBATm0TP5lMpZNHYrN6UStVOB0ez3AfcH3qrmjWbmxjMsyU0IC8gKTAbvTHdGlyuf+8um3ZwtAfSt+/gXt/jKUYF9z/yZsNqebBrNDmjDYnG4uSYnj2Q8OhOj2N5VV8/D63dL/19as/HVU982O4IIIypVKJX369Al5vaGhgVWrVrF27VomTJgAwJo1axgyZAjbtm1j7NixnX2qAoGgAwl2+9CpFUzKTed0ky3EqxaQlsHDNg9q6SoYqXnQsqlDAQ+/vnk4AHtONODBg0apoN4SXSutkMsoMhn5qqKOZ24eHuLiUJRt5Imbcmmy2nC4Pcwr8OpoR2amkJ+ZEtDVz3c+xQVZFGUb0akU3Pj7zS1NRCLTWXrunpapErQ/DWY7//3uNBt2nQgbdHuAJRNzAjy7/UlL0tJkcwZ03vXpy68caODOokH8ZOwAvmqp2fAP/Ir9igfjNcqAvgX+nG6yMap/Ck9Oz8PqcrH7+wbGZKVyuKaZ3IwkTjda6ZWoZcqLJYzqn8LDk4fw/t5KHps21OtyYvF68KsVcqoaLdw3cTDv7ank2Q++o8hkZPn0XDwQIEHZXF7NT68e1NL8x4BaIefdxYXeZkF//JzqJjtrbx/Dl0drye+nJylOxU//7yvMdhfvLC7A5fGEva+B9/7lcLo5Y3OiUysx210B2vPSY/WUlNfws6tNIRK7+QVZNAQVq/c36Hh5zkg0SjmnGq0hjX78V/x8Be3++8wPE/z7Z+ATtIqAbVbNHR2xkNZ/uwvNyemCcF8pKysjIyODgQMHMmfOHCoqKgD46quvcDgcXHfdddJnc3JyyMzMZOvW0O5YAoGgZxPs9lFcmMWKDXtp8AuSjQnews13FheQoPEGupGy2lvKa0L0qz4aLU4WvLqD9GQta7YcxuHysKrkMA0WR0ydeH2znf+5cTDLpgyJOCH47X++Ra/TUtlgxeZ0Y3a42NnSFe+FWflhHRGenJHHsVqz9wHVjZwHztUdJxINZjsHq5oorajj4OkmGszCvaUnUN1kJy1RE3WcycPUa/iwOd3SONvSIll5486xjBtooN7iwOxwSR0jw42NRddkk6hRUvzqlxGdQdISNDw9I49XNh9Eq1AwNiuV2mYrvRM1WO0u0pK02F1uXrltNE9M8wbYl12SAoDH452Mx6nk/O9/vsWDDIfLzbB0PZ/+z1X84vpsqpvs2F1ubr0iM+D8FHIZ+0808Oi0XJ7/6DviNQqO1pilAtBLUuI4cKKR0mP1yGUE2BjGwuJwoZDJ+LayUSrkLGoJun2TE5fHwzuLC1g1dzT//Ok48jNTWLv9aMCKQoHJgEYpR6OUk5akQQbcvXZnwG+5uuQwi64xhTjpFJmMAccLR1WjNcTK8lz6R0Rzcupp94wenykfM2YMr776KoMHD6ayspInnniCoqIi9uzZw8mTJ1Gr1ej1+oBtevfuzcmTJyPu02azYbOdveAbGxs76vQFAoEf5zv2gt0+fM0jfI4AxgQ1r98+Vmo9/+q8y9GpQoPbgHOK8HBwuty8NGckdU125hdkka6PY+XGcooLsmI6opQcrOGNLyr424IxYbsd6tQK7hg/iKVv7g5blLV2+9GQDP4lKXE0NpmZveoLwNtBtC2+v+1Je3byFE2IOpaOfO41Wh0xg6xo/uIapRy7082W8hqp4DN4dSnS2OirjyNOpeDUGStD0pPCa8CzjTTZHJRVneGO8YMwO1ycsTpJ0KjQ6+TYXW7wgAdI12uxOdyolXJUSjm7jtUz7BI9aqWMqkYrP7lyADaHC4dTQT+DjmXrd0esSTHbXSTHqZg9pj+///g7fjJuABaHix0VdRRlG1k6KQeL08Xia7N5cWMZypYVtuUz8vjNB/tZfG30YlO1Qo7F4WL0gFR6JZp5Z3FBiIZcIZOx+3gDowekMuOlLYzM1DPPv7i1RQt+vNbrOFPX5CBdH8eozBRJ9gMwKjMFvU7FgxNzmF9gk5oPBctWgumTpCXToKOyzhpwvzrX/hHhVv564j2jxwflkyZNkv57+PDhjBkzhv79+/P//t//Iy6ubT/6008/HVI8KhAIOp7zHXvBbh++QMAXJBcXZEkBOXizRC5P9OYmkZoHfX6ohoJBBjJS4njkrT3MabE2LD1Wz74TDRE7ES6fnictTTdEkLkUF2bx2zD6Wn/9uH8GvyjbiFzmYc8pi/RapIKrQpOBp2cOa7el3kiBd3s+EEUToo6nI597SVpVSFfKYBK1KopMxoBAz8epRiu+PPq5jI1Ck4E4tQK320OCVsnSSTnAgZDuv8un56JARopOw8Nv7g5xbVkxI4/aZivxGhUqmQyPUobT7SZJq2REph6r3c0Zq4O++jia7E5+u/kQj04dGrIv//MsLszim2P1uFweMpK13HfDYKxON802J5Pz+jA+20iiRokceOHjMh6YmENtk40bc3tjczp5cNIQwBO52DTbSJxGwbcnz5Acp2RHkLTH9/tckhLHiXoLHo+HlbNH4vF46JOs4blbRqBRykmNVzPnle38465xVJ2x8X/bjjCin55RA1L4nxsG43C50akV+HpE3fKnrQHHWDTBFBLA+5+jB/ho30ly+iSz8GoTy6YMRSGXoVbKIxaJ++Q3/gSv/PXUe8YFIV/xR6/Xc+mll1JeXk6fPn2w2+3U19cHfObUqVNhNeg+li5dSkNDg/TPsWPHOvisBQIBnP/YC24k4QuoV5ccZn5BFn2StAEPc5lMxtZDNTGaBwW6NRSaDNx342BWlxzG4fbw6FveQiv/Y80e05+124+Sn5nidRCYM5LXbx/Dg5NyKD1ay5r5l/PHH48iKYLEJL+fPqJW1Cep8U04irKNLJ2YQ7xaxdWX9pK+v6/gasqwdN5ZXMAffjyStbeP4dc3D+eS1Pbp7Hmi3sKidaVc+7+fMfPlz7n2t5+xeF0p39eZoz4Qz3UJWTQh6ng68rlnTFBTdcZGkSl8k5dCk4H/7DvJ3IIBYZvHpCfH0aulSVdrx4a33X0eSsDhdtNkdRKvVvDMjDw++EUR/++usXz4iyJ+fq0JlUzGN9/XBzi4+NhcXs2yt/bQK0FLnFJBrdmK3elhz/eNaJRyPMBLn5aRoY9DDqz8pIxlU4ZSb3ZEPc9xAw3cfbUJpdLbKOjRt/Yw6feb+eEftzL5hRJe3FiOGzC7nWT3TuSZ9/cDMuJUCuKUCsqqmjhRb+XJ6XkRJCMDePq9/RgS1WiUCr6pqA8IlotMRh6/KZevjtQyqn8KR2rMFL/6JQte28HRGgsLX9/Jgtd2UNtsJz9Tj8vj4ZWSQwzNSOa6nN5MyElDLofPD1Vzy5+2Mm1lCU63JyQjvrrkMI9NGxpyjuOzjTw9cxiJGiVby2sofvVL5ryynYm/38yKDftQK+RSg7fg6yFYDhPOyamn3jN6fKY8mKamJg4ePMhPfvITRo0ahUql4pNPPuHmm28G4Ntvv6WiooJx48ZF3IdGo0Gj0UR8XyAQdAznO/Z8bh++gNBfRnLPulLW+HmOA1gdLimjLIeQZeb5hQPY/X0Dr98+BpfHg0ImI1F7VpuaolNJ2wQf68VZ+WhVCkljvuNoLcP6JvOv0u+licHH944Pm+lqjZ6yf6rO67Ti9hCvVZGR4g20/Ysq4zVK1Ao5DRY7l6YlSgWWsWQlrZGdRMtEHa0xx3wgnkuWSjQh6ng68rmXrFNz9aW9GJWZwooNgf7hPvcVn1zC59oB3kYz//3uNHev3cnjLYFda8bGAGM8iyaYUMnA5fagkssxxmuQy2SUHm8gLUmNIUGLx+Omd4IWAFNaYtSiyWaHC4vNgVatpNnmYMQlydhcbl74qIwlk4agBCrPWFh07aXgCQ1Og3F5PNzx1x0smzqU93adCJ0MlFXz0Ju7WX5THhNy0rhhaG/i1QpkwOkmOxn6OLRKOVankxH99My7coDkdFJ1xsYAQzxDM5JZu72CG3P7MCJTz7wC72eS41Sk6tQoZTJcbg8VNWbJAQbOJjMKWrTr8wuyqGywSgWWR2vNLHx9Z8D5FpgMUldQf0b1TyEpTsVzt4ygzmznjMWJTqPw6uo9Hh5ZH7qasKmsmiUt2Wz/+1mcWsHOisDmbZGcnHrqPaPHB+X33Xcf06ZNo3///pw4cYLHHnsMhULBrFmzSE5OZsGCBdx7772kpqaSlJTE4sWLGTdunHBeEQguUDL0cSybOpTjdRYSNApmjMjgiZZGIjpNaKMfX0b5jTvHMu+MLaCT3KK1Z2/+7ywu4MO9p4KacngfLma7K6xcZM4r26VjLZpgYlVJYFHn6TPeTNezHx7gByMvIS1JQ5PVhV6nkpqmACGdQfskaUjSKPG4rXxX5yRLpQgJpLOM8X4PqnjpmP6yEn8HC3XLUrVaIefxd/ZKvu2VDVaqdCoyU3X0TTmbYfdlosJ1LnW6o0uC6sx2GsytD8xFE6KeT7o+juaqM9w/MUcaZ/1S4/hw76mAIMu/TuLdxYUMTU/ixVn5fHuqsUV+IuPlOSOJUylwt0yUzQ6XZCWaqlOhVcppBOweNzVn7PTVx2FxuvC4PQy/JBmLw0Vds50krRKPAp54Zy8/GNUv6vmfsTrpFa8BGVSfsbN6y3csusbE0kk5eIBGhwurExK00GBzkqiNHl6l6NQUF2aR3tJ0JxxbymtwuNzctNJr4VyUbWTxBBPlVU0MNCagTtLwyYGqEHcogPd/XsTXFXU8OWMYzTYH2WmJ2F1u0tRyEtRK3ttTycjMFEYNSOU3Hx5gUFoicFYaUpRt5LFpQzlea2Hh2p2Sm5MvqPfHl722OQInIoUmA7+akYfH7eFonZnyqiZ6J2k53WST7mPBlrM+fJP34MLwPklarhiQGtPJqafeM3p8UH78+HFmzZpFTU0NvXr1orCwkG3bttGrVy8Afve73yGXy7n55psDmgcJBIILg3BZXaVcRvGrX6JTK/h/d43l/ok5PKSQo5DLKDQZJKst/+z28TpLSPbHn2O1Funh51sefvb9A1LRFsDeEw0smej1ILf4Zcp0agU3DO1Nfj+91ImzvKqRvnodFruNByfmcKzOwrFaC1qVgi27q9l/ooGVs/ORIeOVkkMhHuorpufiQs3idV/yfwuu4LG398bUb/tnt3VqRYDFHHgnDvtONIT1bS80GXjmB2elL41WR8g+fAH6pNzI8kCABouDxetKW60vF02IujetLejtlaDhvT0nJWvEl+eMDBtQ+rA4XKz7ooL9lY28Nv8K6s0O6lu8/L+qqGP/iQZmjenPff/4RnIluWXUJdQ22Sgpr6FwkIE+yVpcHg9NVgdJcaGacV+mPpr7C0C8WsmJBisalYJjdWbuv3EwSpmMM3YnT727P2SfK2bkRW0K9uHek5RW1DFteLo0sQ9HRa1Z+u/NZdU8PGUIp5tsPPnufkZlpjBqQErY7ZptTh6ePBSVzOvwolLKUblg17EGLh+YyrZDtRRl9+L0GSs3j+rHPetKWwLxXI7Xmpk+IoNjtRbuXruT/Ey9pOFOjlNhdbhYNXd0QAJj3fajzB7TP+T1FRv2ccf4gbjcHt7dXRnUUCiw6DWYcNnscJ7j4a6/nnrP6PFB+RtvvBH1fa1Wy0svvcRLL73USWckEAg6i0jFhE/NHMb1Q9L4aH8VH+w9RWlFHZcPSKWiupkVM/JYtn4PJeU1UnZbRuxq/wHGeN64cyxKuYyS8mopi251urjrqoHkZiSzZsthyWt51dzRAFLg6t8Z1Jig5t8/HYcCD1q1hgcjuaxsO8qEIb3DWiY+sn4PT80cBoDN4W5VQZO/zrK4MCvEjjGab3tJeQ1L39zNium5pOjUJMepKC7MkrTzdxQOJF2v5ckN+6TvECkgKT1Wf04FV6IJUfflXAp6fTKWLKN35SbWmGu0Ohk7MJXl03N5JEzXymC3lZLyGh5Zv4fHp+XydUUdPxx5Ce/tOcHWg7U8NSOPh8IUXpaU1yADHr0pV+oSGkyhycB7eyoDJuXjBhlwA7/98Nuw+1yxYR/33+gtLI3U1t5sd/Hku/vD9kLwoZAHThbOWJ3SPWZzeTXzCgaE3U6tlBOv8a5a2V0env9wP9cP7cPlWQZ2Havn/hsHc+uft/HX4itQyd38/a6xKGUy3t19gh1H6nh82lApIPedb6HJQIZey4oN+wIak/m6nS6OEFw/OGkIj78d2uRoc3kNboj4/VuTzY52/f26RcrYk+4ZPT4oF3QMHrebyspKANLT05HLL7iaYEEPJ5qm+aE3d/P0D4Zhc7qlwHvt9qP88rpLefaDA8wvyGLJpByarC6S4hQ8MDEHlVwe0f2hKNvIe7srwz44SsprePymXJ54e2/AQ6f0WD1FJkNIJ06dWsHfFlyB3e1BjozH3t4d1Umid5I27PcvKa/hjNXJsqlD+fxQ+OXvYP22v87SZxfpj83pDvu6j81l1Rw83cyrn+/l6ZnDGG8ycFk/PWu2eGU2pSV1bCmvYf/JM7wy93LkfBvwe/oHJOHOLxqiCVH3oy0OF+n6OHRqBU/NGIbLHdk9pMBkYGdFHUq5jEcjdK2EUCeizWXVONxu7r8xB5vLxcqNBzHbXTTZXZE14+U1fF9rYX5hlvS3jyKTgfmFWSxaW+r3ee+keOrwDG4d05/PD9WGBKMbD5zmtrEDyM9M4ZEpQzlc3Sxlj/0zw5vLqvnpVYPCjrlwLiOKoIx+OI19UbaRlDgVuD14ZPCnzw6ybOpQappsqOQwJD2Rn6z6ArPdRaJWSUl5NbuP1/Pz6y5l97EGHp06FIvDxYuz8qXzHZWZwrJpQ7lt1RdMz+/LnDH9sTndZBnjUchlzHhpS8Rsf7PdGVWi46sh8Kc12ezWXH897Z4hgnJBWKxn6rjv76dQq1SsuftG+vbt29WnJBAEEKu63upwSzfkZpuDx6bmYnW6JO2kJBU5WC1pt9cvLAgpRCswGXhkyhBmvvy59Fqwjtrh8jAiM4Wv/BwOVpccZv3CAqqbbAEP3CU3DkarVHDyjJVEjSrmwypaYVuj1Ul+pp4VLdnpcPgvAfvrLMPtV6OUt6qQzleE9sRNufx+4x7pXH0SlmduHs4Ln3wXUFymj1ORoA1t4HIuBVc9qV32xUBrHC7C/f/y/X9sMNtZMT2PZW/tCejC+8iUIQy7JJnjdRYGGOJ5/uPwnT4jjZEmq5M//LecX1x3qXStBXeoDMbmcqNWyJk0LJ15fu3hvXaModIW37FXbzkcMdNrdrgorahjTFZqVGmcQi4LWVkKnsCCN0O/qex0wLb6IH13UbaRJ2fkYXY6kclkyDzw8+suxeZ0I5PJOFZr4c6/fSXVxZSUVfPV0TqeuCkXm9NJ3iXJ2F0uPjlQRV5GMvn99Ky9Yyz6OCU//KO3G6n/d/3nT8eRqFVGLWw126IXvQbT2mx2a66/82lW1hWIoFwQEW2SAbW651zMgouL1lTX+9+QG8x2aps9fFNRF9IC2qdrPFLrlbdYHG5O1Hs9v0uP1VNZb5UeOuG02L79rL1jLPXNdqnwzOb0NhnxbbfkxsFcm5OG1enmpY3lzGrxNo+ELzCIRIJWQZPVGfWB6L8E7K+zDLff0mP1jBsY3h7Sh2+7TWXVWFsauvjOFQJlMf5L3OD9jW69IjPgd+uuBVeC2JyPw4VPdvDV0TqKC7OYd+UAFDIZ/Y06lq3fw0Nv7kGnVvBa8RVRjxFujMRrlCybmstPVp0ttI7XRm8Slp6sDWlI5KPAZAgbeNtarv9wmV6AFJ2KJRNzQrLbwZjtLvIzUyguyCIpTkWcSsHu44EZ9aIWNyj/jH1Bi8/4h78oosnqRCaXkaBWsPNILQ+/tZe/Fl+B1e7i1a1HmJzXB1PvRH7yty+kgPyJm3Kx2J1cnpXKO7tO8KfPDjEqUw/A8x+XUWQy8sR0r8b8VKM1rI1gklbFVxV1kRuVmQwoFdG/f1qSRpL7ZabqSEvUtCqQ7qkOK9EQQblAIOiRxKquT4pTSQVAdWY7CRoFvwoqyIKzy+AvzsonQx/HqUYbyToVcpl3H4WDjBgT1dIyezgttm8/Mg5wWWbKWe1ptpGHJg9Bp1bwl9tGYUzQ4PR4qDpjY9aY/mSm6iSXlXCBtT5OxZGa5rDfz+uhbiMzVdfqgiZ/bXa4rqOrSw5zw9DeAcWw/gQvpzf6NT/yBUbR5C/BAUx3LrgSxOZcHS5849Hl8bDinbMrUv6Fxn8pOURpRT2LJpi4+tJeuNweVs+7nJ1hmt+At/Bw66HADLNcBodON3OsziK9VtVoi1rnYPebYAYTKfD2XfORJCR99XEsf2cvs8b0jyiN88l0fL/B/7trLGqljCsHGXhz4ZU0WZ0kaJXsPFoX4Ably6SfbrLxzbE6nvtPGWa7i7W3j+GX/9gFgFIu49WtR3ho8hDUchln7A7++JNRKOUyMpK1LA/WhpsMLJuWy4k6C//86Th0agVHa8zc7ee+EvwdNSo5KzbsC9uorKBlf+/trowStBv5ZH8VO4/W8eubh5Ouj6PBbOdgVVPMwuFY159aKefg6abz6iTc2YigXCAQ9EiiVddfPyQNtULOonWlktPI3+8aG1UqsvBqE5N+vxmdWsHK2fmsKTksfV6nVngzOZ7oQWdJeQ3zC7LQqRXcddVArhmchkYp53f/3wiMCRrUCjnL1u8JcWoI50BQaDKQqFWSnhwXdmn7iem5/O9/vuVXM4edUxGkT5td02xnZn5fHvdzbTHbXfz5s4P8auYwHlm/J2BpONxyuk5z9hHiC/JbI3+Jdn6CnsO5OFz4F+Stmjs67FjM76eXakDCrUQFjxPfGPHJz3zXaFWjDQ8e6TPzCrJY8q9dPHPzcOTIwtY5nG6yRf2uwde1/wQ1nITkVzPy+PX7+7l1TH9e336UuQUDcOOJKVFJjlOhk8uRyWRY7A7cHq+16r3XX8rf7xrL8ToLasVZbfrfbh/D8g0HpP356kuKso0kx6l4cFIOFruLH635guomOwUmA4uuyebd3ZVcP7QP90y4lBMNFknv/sz7+5k9pj9//O9BlkzO4e61OxmVmULVGVvId3z25uFUnbFKtrI+j3l/95XD1c38edOhsEG7L1sPMP/KAefcCTja9VdgMvDenpOs3Fje5k7CXYEIygUCQY8kmiPH4zfl8uC/dwc4jVQ1Rn/o+lreFxd6u8X5Z4rNdhcLXtvBI1OGSNm/cP7cOyvqvB3+Zo9Eq5Lz6w8O4HC6+M0PL6Oy0cJLG8vDOjX4juvv7vDkzDyefX8/n35XHfKwq2q08vWxeh6eMrRFn8s5FTT5a7NXRtjuuVtGUNlgpaYlWAkuUPNmH62SY4UvmIpTRZcJDDDo+OTeq7p9wZUgNq11xQkuyPMFuMFjKC1Rw0uz80P8/CGwPf3KjeUUmYwsn5HH8Rqz1BK+9Fg9b3xR8f+zd+bxUVXn/3/PvmSdzLAkQEJgIltAwyJIEhW0LiwCtbYCbdlcEbS1VkTFBXDr8q0VpC4Fpa2ov9Z9r0qrgIoCqexIEEiQkJCQzCSZ/c78/pjMMJNZEkLIet6vly/JzJ2Zcyc59zz3OZ/n83DZkF6MzEzlw18V8u7OsuDf7YatR5mb359bLx2IWiknSasMNqOJlgkOJVQiExpMF+aYyDLo+PevCrHY/ZndZJWCWo9Eds+k4K7aV9+fCpvHqToVdrcU5lhSmGMiSaXA4nCQqNViSNBwqs7Fqpl5bDlUxcr39kV05fz8u5NRx7RsylDKax0YEzXUOt2snjUSm0vihMWOwy2x/Wg1N188EKUCtCp/v4VAweyGrUe5sXAg7+8q87uvFPSnqtbJO4vzKT1lJ8uoJ1GtJD1VFxyPzSVFTVa8s7iA+QXZ3PPaTq6/MJPbLjWjVSlI0UVeo860cDjW31+0gvLmOj21NyIob2NCXU1AOJsIBGdDRqqOx68dgdXh9rfR1ij9jUMcnrALe6g7A0QPqE2J6uDCFLVoyyVx7xu7ee/2gri68mtH9mHb4VO8+e1xDpyo5c1bx1NaY8frI2amfnNxFUuuHszQ9GSy0vTo1AocHje/HJ+N1RG+2BXmmFg+bRhpjYoeW1oEGet1vZK1eL0+HG6JpzcejHCkWDZ1GCWnbDw8LZcH3/Jn/wPBTayt+osbtvQ7+sIoaD6xXHEAjlbVYXd7kby+sPmoUcoxJar565wx/PGj/cG/b71awT9vviiqdAr8gfmSqwaT18/vm33CYucXL3wdfL4wx8TdVw7CoFOhAX78161BCUuh2cQ9Vw8BfCQpFSh9IMkgf0Aao7IMUeVcwfc1GxlgSgjqnoOOJFkGHpmeixqQFKBP1mJzS/xQ6wz2Jghk8aMFrWvnjA4LyJdPG8ZXR6sZnWUAnw+5TEbPRA0eH3xbWhMekDccf6rexdW5vVEp5NTYXLy+cDwKGbgl/3Wt1u5Gr1ZSZnHQN1VHtlFPvcvDry4/j/8cqAjqyH971WBO1bvI65dKn1QdxkQV5/dJxS35grKZdxbn89LWo9w3aQhatf/mu6lsdcCP/fFrR/Dq1yXMvjCT9BgZ65YUDof+/VXbXFjs7ogEQrzXdzREUN7GBFxNkk3pOCyVwtlEIDgLjlXVU+/yADIsDU1Fvvy+CkNC+IXX6fGyt8zq33IuqYkaUBc2FGo6GnWla4zPC8smD4mpK3/grT389spBnNx0mHdvHY8b8PlALpPF1caWnrLz8tclPDI9FxU+3F45piQl908ZgkfyUWVz4ZF87Cip5pH39rF8Wi4pes4p6ak6FHIZD0/Lpc7pwe6SSNKq+F9pddACLeCWcffVgzlWbUchk/GbKwdFbNULuUrXJFrjFrtLoqTazqpPv2NTQ5OgUHYft/D3+Rey8v19YX8jN18yAMnnCzagCew+hc6XQJOvwhwTPxvVl49+VcipejdpCSoSVHIUyIKBze9+MgKlQk6iRoFWqUAnlxHcx5GBAtDJZDwxPZdaj8Q1IzJY8e7esBvKQrOJRRPNfLCnDINew8jMVFJ1Kq4ZkU6iyt/2vsYjIZfJeaiRD3pTzXESNErWzhlNX4MOuQxckpcLsww4vBIquQIFUOv2cKLGyYppw3B4vMHkQ4JaQWWtg55JWupdHkqqbPRO0eLyeJn/4jdRizLXzB5Jqk7FrJBOw4Vmf3Dv8Ej0SNQgk8GuHyxMf/qLiDHXOyXm5WdT5/Qgk0Gd04Mp4XS2eltD0W4gCdIrWcsn+8opKqlBLjvCH647P6bFK7S8cDOQWCgqqWbB+m1n/PqOhAjK2wFtshG9oUd7D0Mg6NRUWB1YnR4ee39fhIXhPVcPDjtWo5QH5RWThzuiBtSbiqvwsZ9fXX5ezM/UqxVoVHJG9E1l6Ru7ox6z6WAl91w1mBd/ORqHD5a9uStifNEW6lSdioemDkPu87HyowP89spB1Ng8VNU7kclkEcGJy3Put2Mb6zsXTTRTVFId9t0FdhDyzUbyGopcAzsR8/OzSdGpMOjVQq7SBYml/73n6sE899lpqVZjdxSfD6pt7rC/I71awdW56WEFoBA5X7Qqhd8V5JphnLA68AF9UrQoZSADfPjwIuPGDTtI0av53fRcAGrdEqfqPSRplSSoFKgBH+ABvMDKd/ayvaTG7wTTYOMZkIolaBTsOFrDA5OHopRBikqB5PXiBu5/YxfnZxoi5gU03RzH6/Vh7pEYHHutR8Lt9aFCzs9Ds/wNGnUZkKBVopDJOGGxo9eomPGXLxjSO5kHrxmGSgY//ktkMB1Ao5Qjl8t46YaxKOQyEjVKvD4fk1dtZtyANO6bNJQjVfWc1yuJ1bNGRlxzkhosTVfPGkllnYuFL+3g4gZt+R+uO596p4cH3todsxagzuGhV3Ksv6YzLxxu7dd3BERQLhAIOiX1UQJy8Gerdx2zhHXnKyqtIS8zlXte28kL88Zwb4yAenNxFXdfJQ97bajUpUeShic+2McNFw+MOzaHW0LSKrnvjdiNgcI05Dkm+hl0OD0e/u/T71ly1WB+qLFTbXMHs4V7j1vCgpNzvR0bTd/ZXGeVwFb9xTmmTqHjFJw58fS/Pt9+zs9M5ZMGZ4/G0pDhfVKosYdnLecXZEcE5BA+X74tqaFfmo7zM1NxS15MiRrkMlDI/EG3xe4mVaeiss5Jz2QtD0wZggciOnkGgtz95bUM7pWE3S1FOMGE8uEdhSy5ejCV9U4SNUr0KgXI5dzf8L5z82N35Izl3BKY83h9bDtWw4g+qajkck7WOVn40o5gpjvgO+71+nB5vNhcEql6FYkaFRW1Tv46ZwwGnQoZPj7ce4JRmYaYLi9FpTVcNaw3H+45wd7jFoZmpDA03R8lzxqbxUNv7455QzQyM5UTFgd5mansKKkOZsO3Ha3myCkbh0/W8/6u41F/f3L8NwIuj4TFFvuadSaFw+fi9R0BEZQLBIJOic0du0Pfyvf28ebCfB5+199lc93mw8Hiy0DBpylRzRPXjqBnsoY6h7+zXbnVQVWdq6Gzn4ztJdVhUpe1c0YzOCMFr88Xd2xJOiV1LqlZFmuBRVfhdXKs2sPiy3K4941dYbraaC3F4dxux0bTdzbXWQWEXKWrE0//G2j/HrihHZlpoGCgiUUTzGw5VIXH60PbqCB4ZIiVaGMC7kg/zutDSZWNopJq+qTqGD/QiAy4J0I24i+UVgJLGj0H/t2s+97czWPTc5F7fdQ6PHHP1WJ387Pnvjr9/jkm7ps8JPi+Tc2LxhTmmHhw6jDqnG5W/+cQPxuTyeRVm7loQBoPTR3G3xeMpd7pt0KUAR/tKePR9w9QmGNixbRcfrF2K5lGPYsn5pCqU+LDR73LwwX9DPxoaG+Wvbk75vUDoKikOlgIuWpmXlybV/DL9Ub1T+NPHx8Iex/w3yyt2niQ+fnZcTqm+v8eFqzfFtcJpbmFw7E429d3BERQLhAIOiXxusTZXBKHq+q5MDuNJVf5pSwapZwdR6vJ7ZuCKVHNSzeMY3lD0B6gwGxkxfRcfrn2a5ZPG8ZDacN46O3TLb6dHi9js9LomaSN2R788iE9kctknLJFajpD0auVbLhhLJkGHcdO2bA16MXXbv4+otAtVkvxc7kdG03fGa+REcAAUwJvLhzfKdpZC86OpvS/Hq8veu1GjolrR/ahziEF/fD1aoU/+9wEtQ43ks/H7RNzMCaqcUoSK97eGxl0F1dy/5u7WX7NsNiB4sFK6t0SOpWCRE38UEinDh/bpoOV/NAgLYGm54UxQcN7iwuotrmQy2T0SdXhkCQq69zkm00UlVYzMjOVB6YOY0dpDQkaJa98XcKNhQPomaShvymRtXNGU1HrxOGReHr2SJRyGQlqBX/+9CCLJppxefzXp2NVdh6cOoyKWicWu/u0K83WEpZcNZiyGgcAt79cRF6mv2C2qR2wZZOHUl7jYGDPJDZsPcqssVlBZ5PAa2c3oxEaNO2EEqtwuLnXkrN9fXsjgnKBQNApSdHFD0j1SgWXnNeT33+4n+0lNby5MJ93d5Xxg8XB6ll5EQE5+OUry97czbq5Y5DLZLgkb9iirlcp6JOm49H39jJnfH+8vtPFjKZENatnjSRFp6Ky1kWKXhW3MZDP56OPQYfNIzH/79v5w3Xnc9EAY5Pb4KE+3y3djo1WnNd40Yqmz4znUHFxjon0FG2nWfwEZ0dT+t1+Bh2PNCrkBH9A+8Cbe5h6vr+dvVop5xfjskjWqVgze2TU4k6AZJ2SqloX6Sk6KqwOKmudpOjUcYNuW6Oi7cauS5LXh+T1caDcGiZZCyXfHL/DLcSfF4VmE8laJaXVNv7+1VF+Pi6Lq5/axOpZI5n/4jcAfHBHIdMv6IMSOL9PCi6vl/snD+G9XWU8/Z9D2FxSMNv94zVfMCrLwG+vHMTvPjrAdaP78eh7+7jzikEk+BRU29y4JAmnRyIrTU+t08NVw3qTkaJlxpovwixNA9nyP1x3ftzzq7G70YZYJobWwwSuR03dmIQ+35T0rqVOUq31+vZEBOUCgaBT0itZEzNbPXFwD3qnannoHX/gvWiimRUNQXhRSQ2ThqfHlJZsLq7C7fXxyHt7IrI/PnxB+78vGnyHFxQMIEkjp0eSLqKos9BsZPWsvLBOfP7H/XpSl1di1vNbsbkkUnSqJttxB4rPzmY7trnNOaLpMwPFsjIIy+Z3pu1hQesQT79bmGNCJpPFnGMBOcOS13by8o3jWN5IS9543hSajew7bkXyQlqiGrVSTs8kLTX2+LtRoXMulo1pgdnIyunDyUjR4SWyI+WiCTn850BFxHsXldYErz+BeUGU19820YxcBj2SNORlprLwpR3YXFKYy1Od04NWKafC5sSYqMXtdOP1Kbn0vJ5c2N/o91TXKDlutbN61kgyUrTI5LDwUjPIfFyZm45SIcNq9VBUWsO6l/03NP+8+aJg4D+/IDvoxW5M0PDJ/vJgcN1UgqPe6aGvQceTn34X8TsNBNvxbkwadwKGzuGE0h6IoFwgEHRKUvR+TXjjALMwx8RDU4dxrNp+WvYRsj1rc0lYbPEXBKvdHbVAK1mnCgYPNpfEW0U/8LORfZDJZJRU25k5Not5BQOCmT7/sTJuungAT35yEGgIAmbkgtfD1FVfNgQdJtweL4ZkTVw7uDS9ij6pOpZNGcoJqwObWzqjFtJn0pwjmj7T5pJ49esSnrh2BA63t1NuDwtah6b0u2UWe5xX+28w5+X3Z9uRU8zNz2bm2Kywv3k2H+Gmiwew/cgpbpuQg1wOhgQ17+8qo9BsQqOQoVMrw7Lrr3xdwvUXZgYz4UkaJY/9eDgr3t0bUze9ubiKZW/t5pHpuUwZkdGoSZcTh1vi2c++jxj/us2Hee/2Ah54y98RN9DRcuGlZhRyGTaXRLnVgSlRzU+e/TLCojA0c5zUoB03JmrYduQUo7LS2F5STU7PRNZt+Z5rR/Vj5vNfBa8DH9xRiM/rQ/L50Cjk/FBj58G390TsyCVolMHHVm8spsBsZH5BNp8drCCvX2qw6ZJCLouZ4AgE1FkNGnYIv/EotzooNJvi3pg07lrqP+eO74TSHoigXCAQdFoyUnURHSl1agUWuzvM3aFxIVaiNr5+NUHjf76otIaJg3swNCOFvH6pSCFvY0pU88qCC/HIZEEXhgChrgWbiiu5b8oQxmYbSdQqSNaoOGm1IZMr/AF5jokHpw4F4OG3Y9vBTTivB31SdZRW2/3bySoFn+6v4ECZlYen5TarhfSZNufo7PpMwbkl3t9HLFu+AHqVgqty03ngrd0RQVzgb37ppCFMGZGOTAYeyYfX6+PvXx7lmvMzohR3Gvl/N19ESZUNL7C3zMpd//yWUVkGXpg7hvoYHSfBL3WxuyXyB6Zhc3upqnORpPWHR3//6kjQjz9U+mLQq1DLZCyfNgynx/8arUqOTqXA4ZZIStaQkaLl+ue+igjIQzPHhWYTu45ZyMs04HZKjOmfhsMrcV7PJCrrnAzsmRQmFykwG9Eq5RytsrGtpJoxWYbgDX8ohWYjCWo56+aOwefzYUrUkKJTsvK9fXyyryLsuAeuGcZdVw4Kk+MFnpuTn82rX5fQoyCbBLUy4sblVL2LR2bkcv+bu4M3JvPzs4Odfb/4virC/rWzOKG0ByIoFwgEnZpQ/eDxGjtL/vUtM8dmhWWiGusdK6zOYJFZYwrNRtQKOWtmjyRJo2RGXp+g9+7bi/IB/1b4qzdfiFcm495m2B5a7R5mPv8VhTkmrhmRztFqO5fk9ODdxQV8sq+cj/ac4KtDVTHt4B6aOpTR/dO4p9FnBbJQD761mz9cd36TwXJLmnN0Zn2m4NwT6+8jrrzFbESvUfBQo4AcwueO1eGm3umXZEwens4Ji53fXDGIB97cHaW405/xDnjlhwb3q/9THMzyxqLW4UGv0vDIu3vYVHyKtXNGs/jlomD2d9bYrKhFq8smD+XG9dsorbYH5S4ZKRoAnJKPIb2TwywKQzPHga6cdQ4PlbUOeqVoeWfXcdZtPsKGG8bx10ZF34VmE3ddOYjrQjLvH95RGCEbKTSbeHjaMH6+9uug1/naOaOprncxcXBPbrlkIF6ff74XldYwbfWW4HceCLizTQl8tOcEr35d0tCoTE2KHibl9g67CRudZSBFr2bVzDyq6l1Bnb7D7SFVr2FnlE6kD14zjKp6//jFtSUcEZS3Iz6vl7KyMgDS09ORy+MXSggEgtgEpRkNvsGhGsfGesclr+3kpRvGseLdPRGL3m0TzMGCqEUTzfzv89NNQRQyGZcP6cnNhf1RyZWUhEhkGhMqf0lQKygwG7lv0hDKrQ4efGcvVw/rzXXP+uUra+eM5vcffRfzfe65ejAPxglg8jINzfIs7wrNNQSdg1jylgKzkXkF2SRpVTGLNANzR69WkKpX8fLWEn42qi//2n6MxZflsPT1XXFfF/g3nL4xvnfSkLjjTdIq+c0//8fXR2qA070NAraBL0ZrOHawkhXv7uWpmXmcqndRUeskI0WLz+fjZJ0TvUbR0C3TL/VKbqgbsdrdvL5wPBqFnKOVNhK1SjYfqgpK1fLNRr4treaRGcMpq3GgVMioc3rYdrQ6TMZSmGNCrZDx4JRhuCW/h3mCRkm51c5PG0lmAruF976xm7VzRqNSyCO6X4becPzzlouYOiKDeeP7h11XYt2EpejV1LukMHmcXq1g2ZSh3Dd5CHVOD063ly++r2Lqqs3YXFJce8TuigjK2xFHbTV3vVqOWqXihduupE+fPu09JIGg0xIqzSgqrWHvcQvzGhboxnrHyjoXs//6Fatn5XHf5KH+BVOroqikmvnrvwkueqHeyXq1glStkuVThiIBpdV2LPb4mWenx0u+2YhereDRGcP5cE8ZT35STF5mKlqVIsLBIBb1ztie7IFApDmFU12huYag8xAqb6m2uXBLXhI0Sp785DtuucTc5OuVchlqhZz7pwzF4ZW464pBHKtpWqseIDRIl0Fsh5QcE/89cDIYkIP/mrF2zmjW/PcQQFwP7ruvGoROpSDblIDV4WbNf4u5dlQ/5rzwDWvnjCYjVYdWKcPl9SF5vWhUcp765Dt+OT4bjUrBL9d9HRZoL582DMnn488ff8eiy3KQA3/65LuIXbI54/szZfUWRmUaWD49lzkvfB0hlQkQulvo9HgjbB4bk6ZXM7BnYtxjQolWr2JzSSx9fRcX55i4enh6xM1UU/aI3RERlLcz2mQjarX4YxQIzpZQaUYgCN+w9Sh5mQbm52fj8fq4f9IQZHJZ0GN4c3EVr3xdwprZI6mxufjB4mDVzDz/oqVS0DtFi17tD55XXjMEJT5cyLA6PNQ0eADHI0WnYvHEHKrqnVTVu/0NQMwmFk4wo1PJ+fCOQqwOT1C/Ggt9Ewuo0+NtVpa7KzTXEHQuwuRl1TYsdjd3XTGI+O23oHeylqQG//BvjlaTl5mKSibDLcV/ZeM5GQjSPV4viyfmIJfJohaGV9Y5wixMR2UZ6JOq4+GpQ6isj99cqKLWyYAeCVjtbqrqXEEdeOA9fF4fKrkch8fNe7vK2XfcwrIpw9h9vIbhGSm8etM4bC6JRI2SZK0Su0dC8vqYckEGv/9oP7dNMJOXaeC2S814fD6UMhk9k7UcOlnHqpl5ZBsTOFZl4/y+KXza0EU1lHyzkXKrg+MWv0d5ik5FokYZ1970TG/Qm6pXmTO+f8znzmVn4s6GCMq7EN4QOQwISYygexEqzbC5pGDRUaAwK9uUgFvy8kQj7+RfXZ7DK1uPsvjy8/i2pDpCM/rUzDze//YYhdkmHIDV4cHq8ASbcsTzJ1bIZfRK0jB51Wb+efNFvHTDWBRyyEjR8sj7+3hv1wkAFk00x9S4N8cnOVWnavYiKoo3Be2GTMaj7+9nU3Eln955SZy5YyRZq0QBeIH+Rj0qmYyN35VTUetu0ikkFI1STr7ZiFwmIyNFy+PTc6lzS9Q6PLg8DXKK1ZuDLkjvLCrA7fWiVyk4Ve8gSacJFn7Hoq9Bx58/+Y43/3d6/S00+zv1OiUJjVzBYx/sZ/FlOUwens61eX2w2J0UV9Rz9792hbmqvLPrOL/78Lvg+czLz+aHGgf/K6nmR0N6BeUra+eM5ua/byffbCQv08C3JTUsnzYMmSy8kDOgc3e4JVa+t49CswmHW+KOV4pYPWtkxE1KvBv0eP0NmqpXibcbKOwRT9Ppg/LHHnuM119/nf3796PT6Rg/fjxPPPEEgwYNCh5z6aWX8tlnn4W97uabb+aZZ55p6+GeU8rKypj39EdoU0w4LJVCEiPoVjSWZthcEus2H2Z+QTYXDTBystaJIUEdFgTo1QquHNYTrTKD+9+M1GxvOlgJPh9/mDEcB1BSbUcuk5GoVbDlUGWYRKZxodXy6cNQyWTM/OtWRmamUuv0kJGqRatUsPK9vfznwEkWTTST1y8Vj9fHNednsOKdSPeVefnZ/OdARcwApsBsJMuoP6OgWhRvCtqa0zUf/vnpk/lYNMEvYWk8d5ZOGozX68MnA6VMhilRgwJ4/IPvGD8gjd9cMQifzxe1lXyo9V4gQ7x4Yg4pDVl3JZCkUrDy3eidQB98ezcrpuXi9flI1Kn5tqSa0f3T4t4IyGUy+qYlsHbOaAD6pOr8QarXh0wmo7zWzoxRfSmptiF5/Zn+W/+xI+K9ah0ehvZOYc3skcGb/ttfLuKfN1/E3VcNZv6L34RJ3kLP2eaSeOCtPSwozOauKwdRa/egVcvx+eA/Byp49rPvGZVlYNmUoRyvtvPSDWPpnayNcK+KdYPeVH+DpupV4u0qilqW03T6oPyzzz7jtttuY8yYMXg8Hu69916uuOIK9u7dS0JCQvC4G2+8keXLlwd/1uv17THcc442xYTe0KO9hyEQtDmNpRmBZiEbth4F/F7ldY7wbej5BdkoFQqOWxwxCzb3najFBdS5JOQyGSl6FWU1dvYdtzBrbFaYRMbp8ZKiU5Fp0GHzuLnu+W8Y3DuJR2YMJ1WnIkWv5lBFHf85cDKikYlereD+yUO4b8pQHC4JnVrBjpKaYJARrWlPYY6Jx2YMp4+ha17PBF2HUHmDXq3A6/WhkMHk4elhFnvlVgd1Dg9KhV9PbvNK6GUK5vxtG6MyDcwal8Xznx3i0RnDqXd5OFJlI9OgZ+cPljDrvUKzkWVTh/FtSTUZKdrgOGSAxeWJqRHfXFyFU/JScsqGQibDKfmQAw9MGRrR5CgQFB+uqmf1xmK/FOaaYbg8Enq1kjd3HmdXqYWZYzODBaMKRewGYXVOT7DZT4BCs4kTVgeLG9kK9kvTkZdpCDvnTcWV3HrpQFRyGfVOD4YEHRa7m/N6JfHXX47G4ZH43Qf7WTZ1KFnG0/FRUzfozelv0FS9SkWtM+p7i1qWcDp9UP7hhx+G/fziiy/Ss2dPtm/fzsUXXxx8XK/X07t377YenkAgaCMsNhd2l8SvLs/h3slD0CrlrHx3b5iVWSCTFSCvXypuyRezYLPQnMbKGSO4N8QTee2c0by2vZS7rxrC7z7cF/Qwd3q8pOpU9DPoUOPjh3qJvy8YS7JWGRY0Wx3uqI1MbC6Je9/YTWGOidUNhU+9k7Vc2D+NWoebRK2Sx2YMp9bpCXbh65mkERlvQYfHYnNxyuYvQNSrFTzz81F8W1JDf1MCMsKDVBkyknRKvD4fu3+wMLJvKpU2J6tm+W9Kq20ufnvVIJ78+DsyTQlsP1rNY9NzuXigkbVzRuP2+jDoVXgkH8er7RyttvPRu3tZPmVo8JNszvge6ocr67n1HzsozDGxYlouJ+udaJQKFhQOYF7BABxuKTyTfctFfHBHIRqFnJIqG3f961sq61zBoH3xy0XkZaZSbnUgA35o0HaHUphjotwa/niB2cic/P4RAXm+2chHe8qj+q6rlXIkn489ZRYWbtgR7IXw0NRheHxelk9vXk+DUJrT32Bgz8S49SqBf4talvh0+qC8MRaLBYC0tLSwx1966SX+8Y9/0Lt3b6ZOncqyZctiZsudTidO5+m7OqvVeu4GLBAIgrR07kXbWt1ww1gGZ6TwwpbDFJXU8Osf5ZBp1LPhhrHB5jsGvYraGAWbF/ZP5dEZIyK8wQN2in/+5ACzxmbRM1lDnUOid7KSJK0Suc/HUauDjBQdKQ3Z8VCStaqwDqON2RRS+CRkJoK24lyte4G5Obeh0O+Oy3J4/vNDbC+p4S+zR6KUy0jRqfB4fejVCtJTtMiQUWt3M7xvKrUeD0a9X75S55WoqnPy/KbDLJ00BK/Xy8/y+qAETrklZj6/NeY4fnvlIBJVCmT40Kjia8Qz0/S8fut4UvUqFDJwuCT++O/vovc1yDFxqs7Jzf/YwfyCbMYPMPL0rJHUuyR2lFRze0NAvmhCDgo59EzSsPLdfWHv4dd9m0nQKFg3dwwOt4RWpWCAKYGV7+2N8PmeM75/RIfMADqVgk/2lTO4dzKrZubR16Cjd7L2rK4jze1v0FS9iqhlaZouFZR7vV5+9atfkZ+fT25ubvDxWbNmkZWVRUZGBjt37mTJkiUcOHCA119/Per7PPbYYzz88MNtNWyBQNBAS+ZerK3VGrubvH6prNt8mKdnjUSrkvPQ23soKqkJFoCeqneRkapjU3FlmGZbr1bwh+suiOpDHrBTfKJBS2m1u0nRq0hUK9Dg46jVSR+DPqakxJSo5khVfdxzEoVPgrbmXKx7oXNzVJaBy4f05JLzevDYB/sBuPWlHdx08QCye5yWUmiVCpyS5NcZ+3zolEocXgm9XIEcyDImcveVg0iWy0CuIDBTGkvTGlPn8OD1uklQa0jRKmNqxAvNJj7eW872I6d4ZMZwJK8PU7KG+yYP8Rephjq3mI2smJaLw+3h2V+MQi6ToVTISFArSNaquCSnB1fn9vafk0fi433l/P3Lo9z5o/P49Y/Oo87pCQbv8178hrzM1GDzI4DXb72IwenJzLwwE4A+Bh1quZxH3w8P1ANcnGMiUaNk/ABTqwa9Z9LfIF4iQSQZmqZLBeW33XYbu3fvZvPmzWGP33TTTcF/Dx8+nPT0dC677DIOHTrEwIEDI95n6dKl3HnnncGfrVYr/fr1O3cDP0sCritlZWU06TMlEHRgWjL3Ym2tapRynB4vN18yAJ1aztMbiykqqQnTmY/MNCAD9h+3Bgs2S6psrJvnb8utlMt4d3EB5VYHS17bGfQArqxzsWD9Nl6+cRxen48ktQItUC15GdQ7Ke7Ck6JX09cQf/tYFD4J2ppzse4F5qZerWBUZipX5fbGavfwzqJ8QMbGA+U8+9n3YW3iX7lpHIdP1jGgRyJJai12r4S2ISAvq3Zy4z+28+bC8fggGJBLPh+JTdiKJmqVVNY6OXTSwoi+Kayclsv9b+2OCLLnFfRnw9YSVs4Yjs/rQymXsfuHOs7vk8JDU4fiknzBTG+ZxU6dw83JOhd//+oINxYOpN4pMfeFbxiVZeC3Vw7ilr9vZ1peHyYPT+eiAUYmDOqJUi6jwuoMyksChPqqF5r9Uo/QHbV8s5Ex/dO4fmwWdo83vEC2QQqSnqoji9M3Oa2B6G/QdnSZoHzRokW8++67fP755/Tt2zfusWPHjgWguLg4alCu0WjQaDTnZJzngoDriqO2Gn3PLM605CvUSlEE9oL2pCVzL9bWalFpDQVmI1cPS+dknZNNxVUsmmhmw9ajYTpzU6Kal24Yx+8/3MdPR/Xlgn4G7n9zV1hBV6HZyIYbxzHr+a/CmnOkNmTItcAf/1vM0quHNCsT1DtZKxY5QYfiXKx7VocbvVrBmtkjee7z7xvNKb/LSl5fA7e8tD0YnKboVJzfL5VEjRKZD7RyBQrA4ZW48R/bGZVlIFGlwOMDmQxUgFcmQ60gdvY7x8T+Miu9UnQMy0ih2uYiTa/h0em51Lsk6pwe/+fJABncN3kINpcHi91D7yQNF/RJ4UiVDafkpcLqJLdPMr9Yu5XKOhf/vOUieiarWXr1EFRyGSXVdl69eRyf7qvg+uf89oWrNxYzND2ZhS/toNBsZE6IY0pjnB5v8OZg0YZwicqW4iqWXDWY6no38/OzuW2CGYVMRqpeddYSlXiI/gZtR6cPyn0+H4sXL+aNN97gv//9L9nZ2U2+5n//+x/g9/HuKmhTTPiIXdUdj1ArxZpjB9H3zGrl0QkE545oW6t6tQKdSk6fFB33vrGLmWP9f9N5/VIBwoosr78wk3f+d4zlU4fhBZa+sSuKVVoVK97Zy+9/MoJ5L/pbUxfmmEhUK1ABj33yHb+9cnCzFyexyAm6A8laFfMLslm76fuo9oO+9/dx36Qh3HzJAP708UHyzUbUCjlqhb/804MPFTL+teMYwzMNjMoy8Oj0XL9/ucwfwDi8Xhb8fQerZ+fxyLRc7n1zV4RD0fJpw5Dht1eUfL6gLSE+H3q1nES1Bhng9nqRy+VU1jnRa5T0TtaglMmwSxJ1LgmVQsYPFjsrQnTeCWoFCrnMn/2uc+CWvPzs2a8iAu6sND1vL8onQa0M+qJHI9uUwPmZBhZtiB60H6u2+4P7hiLUBLWCHsnaKO/Uuoj+Bm1Dpw/Kb7vtNjZs2MBbb71FUlISJ074m3GkpKSg0+k4dOgQGzZsYNKkSRiNRnbu3Mmvf/1rLr74YkaMGNHOo/fjC8lUt1fDn4CVot0S3SZKIOiomBLVYRmygBVihdVBaY2dTcVVzG3YEnZ6vMEiS71awfyCbCYP702CWsmSN3Zx35ShcdtpL500BPC7IqxsCA5KLHaWXD2EXme4MIpFTtDVMSWqGT/AGLOoeXNxFadsbiYM6snXh0+xeEIOcplfjrLsrT08Nj2X33/yHXdcfh5uSeLx6bmo8W/m+oCTdhuTVn9NYY4JvVJBmdXOYzOGU++WKKmy0S9NT5JaQa3TgU6lweHzcv2z/t2uQrORR2cMx+fz4cXHtqPVnJ9pQO7zcaSynpFZaTz16XfccqmZP338HR/sLo8Yf6HZSJJGyQd7yvj6cDULCgZEOKUEjvtgzwlWbyxm0UQzo7IMMTP6GoU85vcFp/2+Nx2s5IG3drNqZl6zfx9ni9CEn3s6fbvHv/zlL1gsFi699FLS09OD/7366qsAqNVqPvnkE6644goGDx7Mb37zG6699lreeeeddh75aRy11dz16nbmPf1RWEfOsyEQ6P/www94vbE7aQkEXYHbJpiZOLgHiyaa+dv8C1HKZIwbYESl8F/iAp03AzrzQOB+qKKWRLWc5e/s4fxMA1Z7/GKxeqeHl24Yy2MzhqMFnvzPQXqn6KhzeCgqqebQyTosNlfc9wglRa9mYM9ELsg0MLBnoljwBF0Gi81FVb0LVZymMQAWuxuFTMaU4emkp2hRyGRU1jqCN72/ufw8lIDXC2W1TqrdEh5A8nr55Yv/a8gYD+OFLYcxJPhvjH+85gv+/tVRktUKTtY50Gu0/FBjDwbk4N/9srkltpfUYPdIjO6fxr4yC14fjOmfhscnMS8/m3KLg19fPojCHFPYuAtzTKycMZxjp2xcfF5P7ps0BFOimlGZhvDjzCbmFWSzbvNhANZtPsyDU4dR0KhTb4HZyJzx/Xln1/GYXXwbdywN2BEKug6dPlPu88UXQPfr1y+im2dHRJtsRKVUtlrG3B/ol6NWqURnT0GXprLOxaINO1g7Zwx/+Gh/0G3lZK0zuE29bvNhnpqZR7nVQZYxgfkF2by2vZSlVw/C7vFxfYPG/Oph8XsZ6DUKems0qAGrV2LW2P7c10juEtrlTiDojhyvsfPAW7uZPTaLnknxdeoapRybSyLfbELug//79Dt+ffl5yH3gk4EEEXMs4Lu9ZtZIDIlqXJKXK4enI5P5+K6inlFZhmBQn6xXc+P6bXxXURfx2ceq7eRlprJxXwVfHqripksGUFHnpHeyFkny4fR46ZGsQa+S8+j0XL6vqscj+eiTqqPMYud3H+7nlxf1J1GloN7tl7c8eM1QbC4Jm0siWavk33vLw6QoNpeE0+PhgkwD900eSp3Dg1vy8sX3VWGNwiC802m0jqUgnJq6Gp0+U96VaO2MuTbZiDbF1PSBcRAZd0FHx+pw8/NxWfzho/1sKq5ifkE2ZRY7qzYe5Ivvq8g3G7G5/J3sxmYbSU/RUmg2csflOZywOFHJ5axv0JgrFbK4WSq9yl90VuuVOFZl5/cNnxlKoMvdmWTMBYKuQsAGcXB6MmUWO98eq4nIMgcIZH61ajkPvbMHq8vjl6p4vfhk/u6bjQNy8Es3Hnx7N2mJGp78+DtUcjn1Tg8/e/Yr+qTqWD5tGDeu38Zv39zN4Uobx2rsUT+/r0HHiWo7+WYTSycNoWeihl5JGuweiTqHhx6Jaj7ac4KH3tlLvUvCmKChR5KGo6dseH1wyyUD6ZWsZeZft7L83b18X2njmtVbuGb1Fq5/7ivKLA6e/ORguM+42cgJi5PVG4txuiVS9Spm/XUrqzcWB4N5v7e5gbVzRvPPmy9i7ZzREd07Awinpq5Fp8+UdzW0yUbU6tbbwj5bvbrIuAs6OslaFQVmU9BWLVDMubm4ih0lNTw9ayQ/HdWX8/sZeOLDfczL70/vZC1Oj5dkvZqTdS7mFQzg/EwDn31XweIJOUBklmrxxBzUchl1kge5TI4PWYSHeYDPQxoACQTdiYAN4oL8bIyJGqrqnA0t6veyqfi0jjqQ+X1lawmZBh03FQ4kWaNEAUhyOXLA6pZi1nhsLq7iZK2DOy4/j+ue/dKvE88xse3IKe5/aw8A31XU4fP5mF+QHaHTDjiyDOiRyKqNB/nNFYOQy2Q4vRJer4+eSVoWrN9Gz2QNK6f7ZSo3/WN7WFD84R2F/GLtVkqr7ZRW+wP/wGcVmiM7dBaaTSybOpRZz38F+APqaO5RAccWgI9/fTGrNh4UTk3dBBGUtyId0S+8NYLq1r5REAhaE1Oimsq6050IPV4fupCOfXIZjOibypOfHODuqwbz0hdH+EV+Nive3Ru24OebjSwoyMYteZkyPJ35+dk4PV40SjkVVicZKVrqPB6UcjnHTzmalM6JbWVBd8TqcGNKVNPHoGP5O3vYVFwVLKq+5dKBKOQybA0Nc175uoQlVw/mf6U1pKdoUeKXq3gBn6/phkBur4/j1fZgQL6gIJuFL+0IO2ZzcRULLzWHBeUBR5Y6h4eqOhe3X5aDHH9m3q948wfnT16fR5JGwQd7y3jy4+KIVvcuyRsMxuG0z3i+2chvrxqEViXnvcUF2FwSCRol5VZ70Fa1uQG1Qi4TTk3dCBGUtyJn6xd+rmisV4f2c3kRCFqbFL0aU6KGtXNG45K8ZBn1eBtadt98yQDUSjkur5c7fzSIv35+iBsvHkhptZ2ZY7OYVzCAHSXVrNt82iJxTP80PF4fPRvcVDJSdZzXM5GP953gD/8+yB9/ej49EjX01sV3WxHbyoKujsXmorLOhdXhJlmnwpSgxpig5u8LxlJyyhbcgVq32d8TYPXGYgpzTPzmivPI65fKtXl9qLa58Eg+ZDJ/MF7nkdArFchkkNREQyC3x0uSVsn7txdQUetk4Us7otoIyuUyPrijkPoGP/Ifauxc98yXwSLJD+4oRPLBL9Ztpb8pgYeuGUa904NBp+JIlY3PDlRGBOTz8rMpszgiPitBoyQv08D1z31FXmYqD04dxl8+PsDG/SeDxzQOqOP1LDAm+B1PhFNT90AE5a3M2fiFR8PbSnaJgYx5sikdh6VSSFEEXYbjNXYeent3RLOfdXNGk6hV8vR/illy1WAcHg8LCgdybyONar7ZyFMz87j95aJgpmvB+tNe5FcO7cX9b+2h0Gxk9aw85Mgw6NWiy52gW3O8xs6S13aGWZGumzuGpzcWR8hUAvPL5pLYdLCSOy7LYd2Wwyy/JhedWskFmanYPR62HKxk+bv7Kcwx8cj0XBJVipgNgQJ69KuG9eYnz3zJqpl5Mb2/653+YsoXtxxm1tis4PwGv6QkSa3guNXBn352AZuLK3G6JRLUSr6vtHHrS9uZX5AdtnNWVFrD7S8XRbUjTNAoGJqezKqZeRSV1jDr+a+4/sJM7rpiEC6PNyKgbm7PAmFH2D0QQXkHJ5B9B846kNYmG9EbegR/7ohyG4HgTAgUlUVr9gMyVk7P5bYJOVhtDtISdFEbAwUy5AEtaMAycdmUoQzvk0JptY11c8ewo6SaDVtLuOWSAcFFVWwrC7ojwXkX8nc/vyCbVRsPRtRZNJ5f4JemLJ6Qg9MjIZfJsDpc2F1e/vBvf13IpoOV3Pfmbn43PZcHpgzloXf2hLeUN5uYV9Cff3x1lCuG9ooZjMPp4D2vXyqf7j/J7HH9Q97HyIrpucz869agDCXfbKRXkobyWicer4+RmalRfcMb2xMGHvtoT3nE8as3FjPjgj4MzUiJOkbRs0AQQATlHRBfo7b32mQT0ZLvZxtUd1S5jUDQXAJFZdHYVFzJDzV2Hnp7D2vnjKYuTtFYIEMO0M+g493FBTz41m6Wvr4reExgyzpZpyJFr8Zic2F3Sfzq8hzunTwEpVyGSiHH5fFywurA5pYwJYiFVdD1iDbvAk25ohE6v8CvOw/djVo2ZSh2lz9TnZGiw+mROFnnpMYlUWF1cGF2GkuuGsyxajsapZxyq4PKWic3Fg7kPwcqAOhj0FFgNoZ18wzM2Q1bjwYf06sVrJ0zmj4GHfgIFmoGjl80IQeHW2LFe/sYNyCNFdNzeeCtPWHnW2g2sXCCmQXrvzn9WI6JhZeGPxagOTtnIhMuABGUd0hCpSaBtveBQktvo4D93td3BoPqltDachuBoC2J5lwQisXh5rlfjqLW6aHOGTubBv5un4VmE/UuD7/7MNLqMJCpW3rVEI6dsvmz7k1s3QvPckFXJNq8c3riW+YGnm+cYd50sJLl7+xhTHYawzJSePzDfY2y4kbm5Gdzqs4VVsT55sJ8qm0unv3sewpzTHy6r5wLMg0svXoIR0/ZgjKTDVuPMmtsVtDfW/L6SNAoSVIpcHl9/HlmHm6Pl0SNEp1agc3lwepwB+UnFVYHj0zP5WBFXVC+susHC18fqWLVzDycHi/ZpgTUCjklp2zkZaaGjV/snAnOBBGUd1ACUpPGbe8D2W1tiikYsGvOMKgOzcQL2YqgM5OoiX8JyzYlYHd7qXV4SGyiaCxVp2LppMEoFLK4GXW5XMbS18MlM7G27gOe5atm5olFWdBlSI5SxKxponOnRikPBtiNG+BsLq7i7qsG88SH+yPm0KbiKnzAvJBMO4DV6ea2DTsYlWUIuq7YXBIX5/QgVa+ixuYO2qMG9OyFZhMKuYyMFC1Wl5tah18+8+X3Vew8VsPQjJSwbH+B2cjPRvXF5ZV48YsjUXflCnNMTL8ggwE9Erltww7mF2Rz26VmNCo5qTq1kKEIzggRlHcSQgNpbbIpasDeXAKZeK+jrsUZdoGgI6BVyiO2rAMU5pjYcbSae9/YDcDGOy8h32yM6i1eaDbR16BDCRyujt5oJECd0x0RtMfbuhee5YKuRrQi56LSGgrNprCdogCFZiM9kjT89qrBXP/cVzE14LF8/zcXVzG/YEDYYwa9in/dMp7/HCgPc12RvF5sLomXth4Nz7jnmHj4mmHYXRKPf7CPH4/qdzpYzzFx26Vm5ofKUcwmVkzP5YO9ZXx16JTfa/3dvY1kLEYWTTBjc0no1Qo23DBW6MEFZ4UIyjsJjQPps9V/a5ONSCpx0RB0XsqtDtZvOcwj04dz/1u7wxfLKPrOY9W2qI2BAg09HB4JtUKOsQntZ4I68rLZ1Na98CwXdCVS9GoenTGce17fGbwhXrf5MP+65SJ87+8Lu0kuNBtZNnUY35bUcNxqjxmQ25qUl4V0xcwxUWF1srhRh8vCHBN9UnU4PBLLpgzF5/M7ryRplWhUcqpqXSRolSy9egg2j8T6+ReiVynweH0o5PC3+Rdyss6JWiGnotaJzenhyY+LeWpmHkUl1Uwdkc4dl+XgabBcBfjPgQp2H7Pwh+vOF4G44KwRQXknQgTSAsFpbE4XvxifTUWtg0m5vZk7vj8AA0wJOCUvhyvrWT1rZNCH/M5/fsvLN41jyvB0FhQMQK9WIHl9fPl9FdOf3oLNJZFvNnLfpCFcPqQnn+yriPjMfLMRWRS1mEYpDzZIyeuXitPjRatSBD9beJYLuhpeycujM4bzQ40dg16N2+ul2uZi+TW5OCUvxxta2xeV1jD96S2MyjKwaIIZvfr7iMA832xEqZDFnUN9DTr0agWjsgysmJbL8nf3RHiHzxnfn6v+vIlRman85srBPPXpd8wam0W908OcF74JO3ZefjZv7DjGzZcM5HcfhctmCsxG7p00hI/3lQfb3j98zTBG9zdEFH0KzbigNRFBuUAg6JQo5Qo2FVfy/q4yNjd0DXz/9gKWvbk7pg/5zOe+4olrR9DfqOfBt3ZHLeZ85P19PDI9F7tbCluoAwv5x/vKI7bpdx+3sHbOaFb/pzhMxpJvNrJu7pgmnReiNWERi7ygIyOTy3jwnT38fFwWa9473R130UQzRSXVkdrwhkD2/slDgpIy8AfAc/Oz2Xq4KuYcWjtnNPuP1/LGwvHIZTJ+sXYr0/L6cFPhAFL1atxeH9X1LiSvj/kF2azbfJg/fnSAufn9WRzFT3xLcRUy4NEZw7G5PNw/aSg+GVjtbvBBil5FikbJ1BEZXJLTI0ySslpYFwrOISIoFwgEnZI6l0SvZG0wIH/25yMjAnKI9ElesH4bH9xRGLeYs9bhIS/TELVhCMAbC8ez/N29wff2+WDNf4qjejTLZTJWR2kyEqBxExYQri2Cjk+dS2JUloEXNh8Om0vx6isCjYPWzhkdzISbEtU8+cl3jOibGnsOIWNUfwNpiWqSdSpWTM8lPVWLRqHgvjd3Rbi1vLkwn8NV9fRK1nL/5CHsPm6JGMvm4ipsLgmnx4dSAfUOiQS1Ah+QoFKQkRZdJCqsCwXnEhGUCwSCTonV7sbp8XJh/1T+eN0F1LkkZo7NYl7BgOCWd2B7O9QnucBsxGKLr/Gud0kxAwuAshoHeZkG7rl6MKWn7PRL0/HkJwejHrspTqFntCYsIFxbBB0fj8fNpNx0BvdOZubYrKDUxCXFr6+oqHWGWRsGJCuXDekZew4VVzI3vz/OButCn8+HHFjWKCD3H1vFw+/uIS/TwM1/3x5sNKRXKyJkM0eqbNzyj+1hj12cY4raqVMgaAtEUC4QCDolyToVyRofv7/uAu55Y1eE1CS0tTdAgkYZbBrSVFGZUi6L2957W0k1qzcWk9cvlYUv7WDN7JFx3y9WoWe85kfCtUXQkUnWa7m/UYfcfLORK4f1ivu6FF14fYWt4QY4YF8YC6fHS6pOxe4fLIzub8Dmal4zsE3FlXjxhXUUDZ5DI5tUoQ8XtDciKBcIBJ0Sk1qBA11EQA7RW3vXOz3BLoKPzsiNad+WbzZyuLKex2YM5943doXZvgV05be/XBTWBKUpj+ZYhZ5NNT8Sri2CjsgP1TbujTHvdh2zUGg2Rg2Y881G0vSqiOfzzUZ6J2vjfmaKTkVGqpa0RDVyX3PcWk5n7Bt3FAW/zMXhkdhww1jhKS7oMIigXCAQdEqc+HWtsbyNQxfixl0EV763j7VzRgO+iOBg8cQc+qfp6Z2qY9XMPE5YHRyrPu0kcfvLRYzKMjBnfP+gxryotCa2B3qOCcnn49DJOkwJ/gU/UNSpa7BVi4VwbRF0RKwOT8x5t/K9fby5MJ/l7+6JsEZcOCEHlUrO1PMzmBtSr1FhdaBRxe45UGA20tegY/uRU4zqn8axUzbc3vid7xrfKIcG6QHPcgBjKxZVl1sdVNe7sDo8JOuUGPRqejVxs9FcunIxeFc+tzNFBOUCgaBTUuuS/G4JcXB6vGHZ7QA2l8SC9dt4e1EBTrdEvcuDVqVAKZeRqlPRu6HAMlDU1TtZS2WdC2OCmhkX9EEpl3H1U5uC0ph1mw/zVIMOtbG12pzx/Zn+9Bb/cXPH8PTG4mCG/rdXnhdTJlOYY2rStUUgaA/izTubS+J4jZ27rxrM/DoXDreERikny6jnvV1l/P3Lo/zmR+eRkaqj3ulB8voYMNDI8VN27rpyMD72RzT9WT5tGA6PxIX903B4JdRKBb0T1HElZqE34eDv7vuvWy4iRaeiZ5Km1YO+kqp6ljbaPSgwG3l0xnAyjQln9d5duRi8K59bSxBBueCM8YZ0F01PT0cuj791LxCcC6x2f1YlHtmmBPIyDWHa8gA2l8TRqnp8EPZ8oNArdNFu7LhgsbkYnWUISlsCXsahLbadbi9ffF8VfO9FE82s2ngwbNEelp7CyEwDXp8vQhO/8FJzk02JBIL2oKl5l6hVRnTuXDN7JH/6+CCFZiNjstPQKOTIZT58PlAAbp+PcquDJVcNxusFj9dLklaJXqXg4Xf3hvUNuDjHxO+uHcFjjRoYAVFvwi/OMZGRoj1n2ddyqyMiIAe/w8u9b+zijz+9oMUZ865cDN6Vz62liKBccMaUlZUx7+mPAHjhtivp06dPO49I0B1J1qlIUCvibnlrlfK4LiopOhW/XPd1WPDQnALLFL2ax68dwT2v7QwLzHeW1jD7wkzsbomJf/ws7DXRrOKMSWp+9uxXzC/IjrBfXLD+G16/dTw9W2n7WyBoLRLjzLt8s5H/fncy4ia4X5qOf91yEQcr6tAo5NTYnKhUCj7dX4HH62NMVhqJGiUqhZwEnYIUnSo4B/943flRvcG/P1nHBZkG5uVn45K89DXo2HXMEnGTfa6LN6vrXTHlPJuLq6iud7U4KO/KxeBd+dxaSrcKyp9++ml+//vfc+LECc4//3xWrVrFhRde2N7D6hT4QrLjZWVlaJNNEKWzoUDQViSqFXx7rIaV04dz/5u7wgKEArORR2YM54caW0ytd6zgAZpXYJnRoDmPFiwUlVRHHB8t613nkILuE9GwOjxNjkMgaGuUEHPezW2UpQ48nqxR4VRKFA40osSHUa+h3iNxYbaRBLWCJI0SfJCsV0UEYrG8wS12d9jcCdgrrpqZh9Pjpb9RT59U3TkP7Jqap2czj7tyMXhXPreW0m2C8ldffZU777yTZ555hrFjx/Lkk09y5ZVXcuDAAXr27Nnew+vwOGqruevVcpJN6dQcO4i+ZxZqdfe6gxV0LFRyGcP7pHKq3s7yabk4PV5q7W6SdCqUChk3rt/GsRo76+aOQS6ThWVkCnNMYYWajWlugWWsYCE5yuujObQkauMXeja2bBMIOgJKuQxJ8kXMO71awcPv7Am70S3MMfHI9Fx8XolEpQL/zJDhBZxuiTR9y11PGs+zxje4n955SZtkWpuap2czj6NdS0LpzMXgXfncWkq3ueL/3//9HzfeeCPz5s0D4JlnnuG9995j3bp13HPPPe08us6BNtmI3tADuyX6Np1A0Jb0Nug5VlVPgta/6Hp9PhRyGVqlHJfk5fFrR5Ci82evG7fGTtQquf+NXVGz5Be3QoGlKVHNxTmmMDvFaA4tFVZnXPmNIUHc+Ao6Hj0Mesqq6lHJZDgBucx/0+n0SCy5ajC/vXIwNqeHJK2SRFVDIC6XIwHqEFlKBmdXABltngVojXncXAwJ6nM2jzvKOZ4LuvK5tZRuUaHncrnYvn07l19+efAxuVzO5ZdfzpdffhlxvNPpxGq1hv0nEAjOPWc69/oaE9CrlTg9XuqdHvQaJSqlnEG9kxmZZWBgz8RgNntgz0QuyPQ/1itZy8PTcrk4xxT2fq2lPw1ozkPff93mwyyemENhyGNLXtvJQ9fkUmA2hr0+4NrQWnZqAkFTnOncSzcmIJf7NYxe/PIsnVJBikbJkPRkRvVP47zeyWQYE+hhTKCHMZHexoRWzVxHm2fQ9k2AeiVreXTG8HMyjzvKOZ4LuvK5tZRukSmvrKxEkiR69QrvNNarVy/2798fcfxjjz3Gww8/3FbD67QEdOZer18rG3BhEY4sgpbSkrnX16Bv0WfF04S3BrHev3HW3pSo5o8/veC0v7FWiSGh9fyNBYLm0JK518egp73L/M/1PG4umcaEczaPO8o5ngu68rm1hG4RlJ8pS5cu5c477wz+bLVa6devXzuOqGMS0Jl7HXXItYkkm9JxWCqFI4ugxbT13IulCT/X7x9RyAYiCBe0K5153TvX87i59ErWnrN53FHO8VzQlc/tTOkWQbnJZEKhUFBeXh72eHl5Ob179444XqPRoNFo2mp4nRptshFJpUahS0Jv6BGRPQ8gl8vDMuoimy6Ihph7AkH7IOaeQND+dIugXK1WM2rUKD799FOmT58O+BvgfPrppyxatKh9B9fFaJw9D82i1xw7iFybiEqp4LFrLwjKiaLJXkIbFIlgXiAQCAQCQVenWwTlAHfeeSdz5sxh9OjRXHjhhTz55JPU19cH3VgErUdo9jw0i263VPkfs9dy16vbwwJ2e01FWKBeXl7Ova/vRJtiihnMBwjNwjdGZOgFAoFAIBB0BrpNUP6zn/2MkydP8sADD3DixAkuuOACPvzww4gALxo+nw+gyWr02tpa6k9V4KytRu6wo1QosNdUInfY8Trqw/4f77nmHNPWz7X6e2sT8EpekCS8koTdUs1tz36E5KhHoU1ActSj79EXdaIUPM5eb404RqFNINHQA0vZkbDHoj2nVCp59PpxzfqdC1pGRkZGs45LSkpCJmu6+1Rz555AIGgeYu4JBO1Dc+aezBeYeYKYHDt2rNMUvAgEnQGLxUJycnKTx4m5JxC0LmLuCQTtQ3PmngjKm4HX6+X48eMRdzmB6vTS0tJmXeS6At3xnKF7nve5POfmZutizb22GGNHQZxj16CjnKOYe/ER59X56Czn1py5123kK2eDXC6nb9++MZ9PTk7u0H8I54LueM7QPc+7Pc+5qbkXoDv8XsQ5dg06yzl297knzqvz0RXOTVS8CQQCgUAgEAgE7YwIygUCgUAgEAgEgnZGBOVngUaj4cEHH+xWDRe64zlD9zzvznDOnWGMZ4s4x65BVzvHrnY+AcR5dT660rmJQk+BQCAQCAQCgaCdEZlygUAgEAgEAoGgnRFBuUAgEAgEAoFA0M6IoFwgEAgEAoFAIGhnRFAuEAgEAoFAIBC0MyIobwY+nw+r1YqoiRUI2hYx9wSC9kHMPYGg7RFBeTOora0lJSWF2tra9h6KQNCtEHNPIGgfxNwTCNoeEZQLBAKBQCAQCATtjAjKBQKBQCAQCASCdkYE5QKBQCAQCAQCQTsjgnKBQCAQCAQCgaCdEUG5QCAQCAQCgUDQzijbewACgaDzY7G5qKxzYXW4SdapMCWoSdGr23tYAoFAIGgB4prePoigXCAQnBXHa+wseW0nmw5WBh+7OMfE49eOICNV144jEwgEAsGZIq7p7YeQrwgEghZjsbkiLt4Anx+s5J7XdmKxudppZAKBQCA4U8Q1vX0RQblAIGgxlXWuiIt3gM8PVlJZ1zYXcK/Xyw8//MAPP/yA1+ttk88UCASCrkZHuaZ3V0RQLhAIWozV4Y77fG0Tz7cWZWVlzHv6I+Y9/RFlZWVt8pkCgUDQ1ego1/TuitCUCwSCFpOsVcV9PqmJ51sTbYqpzT5LIBAIuiId6ZreHRGZcoFA0GJMiWouzokeDF+cY8KUKKr1BQKBoLMgruntiwjKBQJBi0nRq3n82hERF/GLc0w8ce0IYaElEAgEnQhxTW9fhHxFIBCcFRmpOlbNzKOyzkWtw02SVoUpUXjaCgQCQWdEXNPbDxGUCwSCsyZFLy7YAoFA0FUQ1/T2QchXBAKBQCAQCASCdkYE5QKBQCAQCAQCQTsjgnKBQCAQCAQCgaCdEZpygUAA+NsrV9a5sDrcJOtUmBKEplAgEAi6C2INaH9EUC4QCDheY2fJazvD2itfnGPi8WtHkJGqa8eRCQQCgeBcI9aAjoGQrwgE3RyLzRVxMQb4/GAl97y2E4vN1U4jEwgEAsG5RqwBHQeRKRcIujmVda6Ii3GAzw9WUlnnEluYAoFA0EVp7TVAyGBajgjKBYJuTnUTWZBah7uNRiIQCASCtsbaxDX+TNaApmQwImCPjwjKBYJujMXmwuXxxj0mSatqo9EIBAKBoK1JbuIa39w1oCkZzGM/Hs49r+8SuvU4CE25QNCNqah18sX3VeSbjVGfL8wxYUoUWQyBQCDoqpgS1VycY4r63MVnsAY0JYM5WmUTuvUmEEG5QNCNqbG7Wbf5MPPysyMC83yzkYemDhNbiwKBQNCFSdGrefzaERGB+cU5Jp64dkSz14CmZDA19ujPB3TrAiFfEQi6NQlqBTaXxO0vFzG/IJv5+dk4PV40SjlFpTW4JKm9hygQCASCc0xGqo5VM/OorHNR63CTpFVhSjwzvXdTMhiNMnYeWNQu+RFBuUDQjWhcZJOkUTJxcA827j/J6o3FYcfmm41cN7JvO41UIBAIBG1Jij56EN7c4syADObzKBKWwhwTRaU1MT9b1C756RLylR9++IGf//znGI1GdDodw4cPZ9u2bcHnfT4fDzzwAOnp6eh0Oi6//HIOHjzYjiMWCNqe4zV2Fm0o4rL/+4wZa77gsj9+xr1v7ubeSUOZOLhH2LH5ZiOLJ+aQqhcXSoFAIOiuHK+xs+jl8HVj8ctFHK+xRxwbSwZTmGNixbRcstL06NWKiNediW69q9PpM+XV1dXk5+czYcIEPvjgA3r06MHBgwcxGAzBY373u9/x1FNPsX79erKzs1m2bBlXXnkle/fuRavVtuPoBYK2wWJzseRfO9lUHJ7B2HSwkoff2cPiiWZmj80KSlcqap30T9MLPblAIBB0U5pyU1k1My9ijQjIYE5YHRyr9gfuRaU1THpqE6OyDKybO4b5L36DzeWXRp6pbr2r0+mD8ieeeIJ+/frxwgsvBB/Lzs4O/tvn8/Hkk09y//33M23aNAD+9re/0atXL958802uv/76Nh+zQNDWVNQ6IwLyAJsOVrJs8lCMCZqglnB0lkFcJAUCgaAbczZNhVa+ty/itZsOViIDPri9kGqbq0W69a5Op5evvP3224wePZrrrruOnj17kpeXx/PPPx98/vDhw5w4cYLLL788+FhKSgpjx47lyy+/jPqeTqcTq9Ua9p9A0JmJVfUewOpwM7BnIhdkGhjYM7HdLpJi7gkE7YOYe4LGtLSpUFPBvMfra/e1pqPS6YPy77//nr/85S/k5OTw0Ucfceutt3L77bezfv16AE6cOAFAr169wl7Xq1ev4HONeeyxx0hJSQn+169fv3N7EgLBOSYhio4vlGg6v/ZAzD2BoH0Qc0/QmJY2FWppMG+xuThUUUdRSTWHTtZ1S+/yTh+Ue71eRo4cyaOPPkpeXh433XQTN954I88880yL33Pp0qVYLJbgf6Wlpa04YoGgbQkU5MRqEJRvNpKg7hhKNjH3BIL2Qcw9QWNa2lSoJcH8mRSUdmU6fVCenp7O0KFDwx4bMmQIJSUlAPTu3RuA8vLysGPKy8uDzzVGo9GQnJwc9p9A0BkJFOp8vK+cRRPMURsEdSSXFTH3BIL2Qcw9QWNa2lToTIP5pgpKu1PGvGOkx86C/Px8Dhw4EPbYd999R1ZWFuAv+uzduzeffvopF1xwAQBWq5WtW7dy6623tvVwBYI2JaDt2360mhF9Upk8PD2sQZBwWREIBAJBLFrSVCgQzN/z2s4wz/JYwfzZFJR2NTp9UP7rX/+a8ePH8+ijj/LTn/6Ur7/+mueee47nnnsOAJlMxq9+9StWrlxJTk5O0BIxIyOD6dOnt+/gBYJzTEDbZ3NJ3LZhB/MLsumVfNoGdHSWgd6puvYankAgEAg6OLGaCsXjTIL5lmrQuyKdPigfM2YMb7zxBkuXLmX58uVkZ2fz5JNPMnv27OAxd999N/X19dx0003U1NRQUFDAhx9+KDzKBV2eUG2fzSVFdO389M5L2npIAoFAIOgGNDeYb2lBaVek0wflAFOmTGHKlCkxn5fJZCxfvpzly5e34agEgvYnXttj0UVNIBAIBO2NWKdO0+kLPQUCQWxaWqgjEAgEAkFbINap03SJTLlAIIhNSwp1BAKBQCBoK8Q65UcE5QJBN6AlhToCgUAgELQVYp0S8hWBQCAQCAQCgaDdEUG5QCAQCAQCgUDQzgj5ikDQCbHYXFTWubA63CTrVJgSxLafQCAQCM49Yv05d4igXCDoZByvsUe0JL44x8Tj144gQzQCEggEAsE5Qqw/5xYhXxEIOhEWmyviggj+VsT3vLYTi83VTiMTCAQCQVdGrD/nHhGUCwSdiMo6V8QFMcDnByuprBMXRYFAIBC0PmL9OfeIoFwg6ERYHe64z9c28bxAIBAIBC1BrD/nHhGUCwSdiGStKu7zSU08LxAIBAJBSxDrz7lHBOUCQSfClKiOaEUc4OIcE6ZEUQEvEAgEgtZHrD/nHhGUCwSdiBS9msevHRFxYbw4x8QT144QtlQCgUAgOCeI9efcIywRBYIOwJn4vmak6lg1M4/KOhe1DjdJWhWmROETKxAIBJ2BzuzzLdafc4sIygWCdqYlvq8penERFAgEgs5GV/D5FuvPuUPIVwSCdkT4vgoEAkH3QFzvBU0hgnKBoB0Rvq8CgUDQPRDXe0FTiKBcIGhHhO+rQCAQdA/E9V7QFEJTLhC0I8L3VSAQCLoH4nrfOnTmQtmmEEG5QNCOmBLVFOaYom5pFgrfV4FAIOgyBHy+P49yvRc+382jKxTKxkPIVwSCNsRic3Gooo6ikmoOltdSY3OxbMpQCs3hvq/5ZiO3TTC30ygFAoFA0Nq0ps936Fpy6GRdqxaJnsv3Phu6Q6GsyJQLBG1EtDv8fLORGwoGMKq/gVsuHYhCLsPmkthRUs38F7/hnUUFXWZbTiAQCLo7reHzfS6zxR05E92cQtnOvl6KoFwgaANi3eFvKa4CIC/TwOy/biXfbCQv08DqjcWAKPw5U3xeL2VlZQCkp6cjl4vNQIFA0LE4G5/vprLFq2bmdcj3bupzm6MR7w6FsiIoFwjagHh3+FuKq5ifnx3xbxCFP2eKo7aau14tR61S8cJtV9KnT5/2HpJAIBC0GucyW9wemegzycx3h0JZEZQLBOeIwN1/ndONRqVg7ZzROD1etCoFO0qqWbf5MDaXBIDT4w2+LvBvUfjTMrTJRtRq8b0JBILOTbQMcp0zfja42uaiqKS6Ra4kbZ2JPtPMfHcolBVBuUBwDgjc/W8/Ws1TM/NYv+UwmxqkKuDXkj81M4/bXy7C5pLQKE/LLDRKeYsKfwQCgUDQNYiVQV4+LRe9WhFM6DTGYnezYP224PGPzhiOS/JisTdtH9jWmegzzcwHCmXveW1nWGDeldZLEZQLBK1M6N3/oolmXthyOKgdDxD4eX5BNkUl1RSV1gB+G0Rzj8Rzpt0TCAQCQccmXgb5gbd2s2zKUJa+vividflmY3AtCRx/z+s7uSCkTikQ2FvsLhK14UF6W2eiW5KZb41C2Y6MqIISCFqZ0Lv/vH6pEQF5gC3FVYwfYGRefjbrNh8m32xkxbRcskwJXeYCIxAIBIIzo6kM8sjM1AhbxXzz6bUklM3FVeT1Sw17/X1v7uLjfRVc9sfPWPxyEcdr7EDrWjY2h5Zm5lP0agb2TOSCTAMDeyZ2qfVSZMoFglZG8vmC+vGeSRoWTTSH6cdDUSvl1Do9rJqZR0WtE4O+8xeqCAQCgeDMCWjIq+pdrJs7JqL2KIDdJYVli9VKOe/vPhGUQzYmtGYJwg0FGuu32zIT3R004meKCMoFglbkeI2dFe/siasfD0WnUnDz37d3KU2cQCAQCM6MWH0soq0dSVpVmK3ioYq6oDwlGqE1SwFCA/XG+u2zsWw8E9pLI95cC8b2QATlAkErEdQBxtGPh144881GtCoFH/2qkN7J2g5zURAIBAJB29FUH4vQtSNaBjlexrmxzjxA40C9vTy+2zIzb7G5OGF1cKzajkwmC+5EjM4ydIjmSNAOmvIvv/ySd999N+yxv/3tb2RnZ9OzZ09uuukmnE5nWw9LIDhrmvIiD9X15ZuNLJqQAzIff/joQBuNUCAQCAQdjeauHbEyyLG04AUxdObRAvX29PhuC4348Ro7izYUceWTm1iwfhvzX/yGohK/O9q2o9Xc89pOLDZXq3/umdLmmfLly5dz6aWXMmXKFAB27drFggULmDt3LkOGDOH3v/89GRkZPPTQQ209NIGgxZRbHZyqjz+hk7RK/vLzkagVcsqtDuQy2H6kmkHpyV2iPbBAIBAIzpymXEiStCo+/vXFqBVyKmod2NxShOQikHGuqHVScsqGTCbDlKjmyU++C5O+FJqNzMnP5vaXi4KPtYV+uz0lI6d3sePvRHSEdbjNg/L//e9/rFixIvjzK6+8wtixY3n++ecB6NevHw8++KAIygUdnsBFptrmwiV5SdQo4/rH6tQKfHXQM1lDudWBzSXx0Dt7WTUzr0u0BxYIBAJBOM0JRptyIUnRKVn+7t4mu16m6NWcsDqCPuV6tYL5BdnMHpuF0+NFo5STnqLlJ898GVyn2qKe6Uy6dp4LmttRuyOsw20elFdXV9OrV6/gz5999hlXX3118OcxY8ZQWlra1sMSCM6IaBeZQrORtXNGs2D9tojAPN9s5KM95azeWMz/u3kcxy0OVr63D5tLwunxdon2wAKBQCA4TXOD0aZcSHaU1ET1LF/y2k7+cN359ErWAv4bgGPV9uAxNpcUUQD6+q3jeWdRQZt5fJ9p185zQVM7EYGi146wDre5prxXr14cPuzXN7lcLnbs2MG4ceOCz9fW1qJStf8XIxDEItZFZlNxFWv+c4j7Jw8Je7yxf6xOrWD1xuJg4J6qU3VL6yeBQCDoqjQVjIbql+P5gy+flsuKd/dG/YxNBys5VFHH4co6vquwUmZ1kJ6iZdFEM3q1IuprUnSqFum3LTYXhyrqKCqp5tDJumbrr5vTtfNc09RORKCLdkdYh9s8Uz5p0iTuuecennjiCd588030ej2FhYXB53fu3MnAgQPbelgCQbOJd5HZVFzJHZfnBH3K+xp0/HtvedDSKt9sxCP5gscXmI1kGfXtrmMTCAQCQetxpi3kY7mQHKmqjymJBKixu1nz32LuvmowT37yHbPGZrHvuCWqlWJhCwPPs5GftKRrZ2vTlDtNRa2zw1gSt3mmfMWKFSiVSi655BKef/55nn/+edTq01/EunXruOKKK9p6WIImaOldclekuolzr6h1smD9Nha+tIOTtc5gVjyQMbfY/BehwhwTj/94BH0M+rYYtkAgEAjaiJYEo9FcSBI1TWd5NxdXUevwMDQjhRe2HGZIRgovbjnM/ILs4HGBjtFnGnieScY/Gi3t2tmaxNqJKMwx8cj04UzK7U16B7BDhHbIlJtMJj7//HMsFguJiYkoFOFbLP/85z9JTExs62EJ4tDeRRodjQRN/GkT8H8tNJvoa9CxZvZINEo5RaU1vPJ1CUuuGsynd15yzrV8AoFAIGgfWisYba4HucXuJq9fKqs3FjM/3+8msuTqwQxNT0ajlLe4Y/SZZvzPZPxtKRlpSz/0s6HNM+UBUlJSIgJygLS0NGpqatp+QIKonO1d8tl+dkfMzsvwXwyjEbhI5puNLJ82jNl/3crCl3awYP02dpbWsGJaLjm9ks6ZF6tAIBAI2h+dWkGh2RT1uQKzkURt83KigSxvYaMsb+NaJY1SHixYDPy/9JSdhS/tYP0XR7j0vB4tWnPOVn4STy/f1pKRtvBDP1vaPFOu1+s5evQoPXr0AGDy5Mn89a9/JT09HYDy8nIyMjKQpNgaKkHbcbZ3yS2lI2XnQy2tEjVKNEo5CwqykUNY985Cs4n7pwyhrMZBn1QdCRolr950UYe+KxcIBAJB63K8xs4Db+5iTn5/vPiCftjgD6bn5mdTY3NxvMbeLM/ujFQdf7jufA5V1FFjdwd3XkNrlYpKa4JNhgK7tf2N+rPelW2NjH9nyVJ3BNo8KHc4HPh8pwvdPv/8c+x2e9gxoc8L2pf2KNLoCBZKAY6dsrH09Z3hwXeOiUUTBjJuoJG7rx5MhdXfgbaotIYZa75gVJaBx2YMp2eylp7JbTJMgUAgEHQAQtevL74/xfyCbObnZ+P0eEnRqXC4JRa/XMQfrjufhS/tAJqXcOqVrMXp8bLm9Z1sbhTkz8vPZsPWo8GfA7u13x6zUGg2UVXv4vvK+hY17Wkt+UmKXgThzaHNg/LmIJPJ2nsIggbao0ijvbLzjTlWHRmQA8GxTcrtzc+e/Yr5Bdnk9Uslr18qry8cT7JGSYYo3hQIBIJuR+j6Fc0nfO2c0dhcUjCbDdE9xxtzvMbOEx/s4+6rBnOrw4MlJGO+YetRZo3NYsPWo8EAfV5D186RmalckGkIjuNMd5wD8pN7XtsZFpi3h/ykO9Ahg3JBx6E9ijQ6goXSsVM2jp6yRQTkATYdrGTp1UP4163jqbX7O7UlqhUk61TiIiUQCATdlOY0qgkt0AwQ8ByXvL6IgDk0+/6fAyeZX5DNyEwDSoWMq4f1ZuqIdDxeL4sn5mCxuRmakRKUtmwurmJe/mkXlpbsOJ+t/KQ5XU0Ffto8KJfJZGGZ8MY/CzoW7XGX3N4WShabi6Wv72Tm2Ky4xx2pqg9uP/7rlovISNF2yQuNuKAKBAJB82hq/UrRqYJZ7MbU2N1RM+ZNZd/fu72AyU9tifmZgcLPAC3ZcW6p/KQ168O6w1rU5kG5z+fjvPPOCwbidXV15OXlIZfLg88LOhZtXaTR3hZKFbVONhVXMTckuxCN0O1Hi93N4peLupxNZEcquBUIBIKOTrz1qzDHhMMtRTT1CaBRyqNmzJvKvtuc8Y0xQteqAG2x49ya9WHdZS1q86D8hRdeaOuPFLQCbVmk0Z4ath+qbZyq91svBopltkSRsBSaTcHtx8C/26MQ9VzSkQpuBQKBoDMQb/16dMZwHn5nT9SAPFTS0jhj3lT2XSajWWtVKG3RtKe16sO601rU5kH5nDlz4j7v8XioqKhoo9EIOirtYaF07JSNJa/vZH5Dhnzd5sM8NTMPIOxiV2g2cdeVg5j5/FcUmo3cP2UIM9Z8AbRtIeq5pqMU3AoEAkFnIt769fC0XBye8AAz4KASkLQ0zpg31UBoc3FlUDfe2H4xdH0K0FZNe1qrPqw7rUUdrtBzz549jBw5ssU+5Y8//jhLly7ljjvu4MknnwT8Noy/+c1veOWVV3A6nVx55ZWsWbOGXr16teLIBa1NW2bnAzryLcVV5GUaglmH218uirC06mfQUVHr4F+3juffe05QVuMIy3y0xbZgW9ARCm4FAoGgMxJr/Wqu5zj4M+aBTHC07HvjYD50reqXpuOjPeVU17vC1qe2dE1prfqw7rQWdbig/Gz45ptvePbZZxkxYkTY47/+9a957733+Oc//0lKSgqLFi3ixz/+MVu2xC6MEHQPAoUj1TYXS64ewp2Sl1q7hyuG9uLJT75j4/6TwaKawhwTd10xiMc+2MfAnkkMy0jmmyOn8HjD6yDaYluwLWjvgluBQCDoTDRuNKdWyKmxu0jUhhcl9krWInl9EZKMaBnzQCZ4YM/EsOy7Winn/d0nwvTpoQWga2aP5NvSGn4xLotP77ykXZr2tFZ9WHdai7pMUF5XV8fs2bN5/vnnWblyZfBxi8XC2rVr2bBhAxMnTgT8uvYhQ4bw1VdfMW7cuPYasqCdOV5jZ8m/drKpOPKi+OQn33H7Zefxy3H9sbkl+hr8hSR/+W8xt15qprLORYJawdKrh/DJvnL0agU2l9Rm24JtQXsX3AoEAkFnIVohYmA9mfn8VkZnGcKKEhPUCh6dnktptb3JjHkgExyafT9UURfhwhJKik7Fimm59ErW0ussm9i11PWkterDutNa1GWC8ttuu43Jkydz+eWXhwXl27dvx+12c/nllwcfGzx4MJmZmXz55ZdRg3Kn04nT6Qz+bLVaz+3gBW2OxeaKCMjhtB4vL9PA7z/aT15D04UNN4wlWafk5kvMPPHh/gjd3lMz83j16xKWT8vtMtq29ii4FXNPIGgfxNxrObEKEQPrxPyCbFZvLA5KUepdEkte28n2o9U8NTOPl7YejVhTQjPm0TLBcV1ezCYUchkGfeTrzjTAPlvXk9aoD+tODYzaPCjfuXNn3OcPHDhwxu/5yiuvsGPHDr755puI506cOIFarSY1NTXs8V69enHixImo7/fYY4/x8MMPn/E4BJ2HE1ZHREAeYEtxFfPz/RfR+fnZFJiNJGqVfLKvgm+OnIqocN9SXIVcJovbja2z0tYFt2LuCQTtg5h7LSdeIWJgPQF/UWK51UllnZOZF2YyLz+bncdquDA7LXhMik7Ff787GcyYB9afxgQC1WjZ+dsmmumfpo+4TscKsJdPy8USRWbTWq4nrVEf1h7mD+1BmwflF1xwATKZLKofeeDxM2kmVFpayh133MHHH3+MVts6AdHSpUu58847gz9brVb69evXKu8taH8sNhdWuyfuMaHNFh6YOgzwNejMD0Y9ftPBSuocnrPeJuyItGXBrZh7AkH7IOZey2lOF88ApdU2FqzfFvw5kBVf3BCEr50zOihLyTcbmZufTa3DHTXhk5GqY/XMPCpqnVjsbvRqBQlqJan6yM7S8QLs+97cFdwVDs2CdzTXk7Zci9qLNg/KDx8+3Krvt337dioqKhg5cmTwMUmS+Pzzz1m9ejUfffQRLpeLmpqasGx5eXk5vXv3jvqeGo0GjUbTquPsLHSHjlk1Nv/FKx6BZgspOhXTn97ChhvG0lRbq65UAd5edOe5JxC0J2LutZymChGjNe8J0FjikqBRsmb2yDCN+d/mXxjz9U0FqoE1/ZTNxbz8bM7vl8q6zYfDHFkaZ/MDWfDu5HrSUWjzoDwrK37r8jPlsssuY9euXWGPzZs3j8GDB7NkyRL69euHSqXi008/5dprrwX8EpmSkhIuuuiiVh1LZ+dstGOdJZi32FycsDr4/mRdzGYLgQKbQrOR/353EptLalZ1d3MrwDvLdyUQCASC+FhsLpRyGYU5pqhZ5dCCzUKziV0/WCKOCQ2K650eFr60I+z5ppJIsYhVfPrUzLyIrqKh2fxAFrw7uZ50FDqcpjxAY1vDWCQlJZGbmxv2WEJCAkajMfj4ggULuPPOO0lLSyM5OZnFixdz0UUXCeeVEM5GO9YZ2t8GAmGZDFZvPMj2kpqojYECW4mvbC1h2dRhTH96S1h199lWgHeG70ogEAgETRO4ngcKNr0+X8yCzYDWe+ex6qjv5fR4wwL40PdIUJ95qNbc4tMAjbP5tQ432aaEbuN60lHoUJryADKZrMXNg6Lxpz/9CblczrXXXhvWPEhwmpZqxzpD+9uyGjv//e4kPZM0ZKTq2NRwUQo0BlpQMAClwl+prpLLOWFxsHTSEN7ddZzRWYaw6u6zqQDvDN+VQCAQCJqm8fU8tNEcQM9kDT4flFkcrJqZR1FpDfNf/IZXbx4HRBpapOhUPHzNMK5/7qvgY/lmI4sn5pAaxUWlKZpbfBr4nMY3A0laVbdyPekodHpNeTT++9//hv2s1Wp5+umnefrpp8/5Z3dGLDYXTo/Emtkj0aoU7CipZt1m/+9pfkE2ef1Sqap3wcm6CKlFRysEaYzF5m8M9P7O42wqruKVG0/vjthcUoTP6ys3jeP5zd/zwJShXDMig7kX9Q8bf0aqjt9fdz7V9X75SZJWhVYlx+GWsNjin2t7fFdCKiMQCATNp9zqaLi+e0jWKTHo1VGLLBtfzxuvJ2vnjA4r6Axgd3kjHivMMeFwSzz+/j7WzR3DsWo7GqWcilon/dP0gN+XPN51vPG1XvL5gv0zohGQqzS2X4TwLHh3cT2JR1uuo51eUy44O2Jpzp6eNRIfPtZuPhx2oWkstejohSAWu5tH3t8X3LLTa+Jr8xI0CublZ2OxuemVEnkhjtcg4tH39/HwtNyYMpS2/q6EVEYgEAiaT0lVPUvf2BUmQSkwG3l0xnAyjQlhx56J40ooCY304QVmIw9fM4wpqzZjc0n86keDwp53S17u/+duPtlXEXys8XU82rW+MMcUVTseoK9BxzuL89l9zBJ2TLQs+Jm6nrQkiO2oCaS2XkfbPCgvKSlp1nGZmZnneCSCeJqzKcMzeH/X8YhCyMZSi45cCFJudVDr8DB7bBYLCgawo6QauYy4BZ5qhZwNW48yNCOFvH6prP/iSHDyNaXRy8s0xJWhtOV3JaQyAoFA0HzKrY6IgBxgc3EV976xi8dmDKey3nU6YNTFv15rVZEJoHyzEa1Kwdo5o3F6vKToVKTp1Xy4pywYFJ+yucIKPQvMRi7INIQF5aHXcSDqtX7TwUp8Pl+Edjwwjn/vLWfd5sPML8jm9VvH43BLwSw4NJ2Zj0VLgtiOmkBqj3U0tk/POSI7Ozv4X//+/enfv3/EY9nZ2U2/keCsiSen6JmsCWqvGxOQWsDprmLRONtCEIvNxaGKOopKqjl0sg6LzdXs1x6vsXPX//sfk1dtZuFLO5j/4jcUlVQj+eD2iWbyzcaw4/PNRhZNyOHb0hpmjc1i3ebDOD3e4OQL3MXH0+jl9UsN+24acy6/q8Y0RyojEAgEAj/V9a6oyRrwB+Y1Djcz1nzBZX/8jEUvFyGTwe9/MiKqM0qB2Uh6sibsucAa45P5cHq89EvTcbSqnhNWB6s3Hgoe17gL5+aGtaUxget4vGv95uIqxg+IXOvm5WcHbRFXbyzG4Za4INPAwJ6J1LskFr1cxGX/91nwfBe/XMTxGnvM7y5AU0FstDW8Ja9pK9pjHW3zTLlMJqNv377MnTuXqVOnolS2+RAEDVjssf+gYm29BQhILc5VIcjZ2jMu+de3ETcVW4qr+N2H+7nnqiFMHp7O/PxsnB6vX7tndWBKUvP1kSoeemcvNpcUrEYPTL7mblfGkqG0ZdFMR5cVCQQCQUfC6ojfUK7OcVoCsulgJfe/uZspIzKC2vFApjvQ8OeP/z7AKzeNO60PtzrISNFy7TNfUFnn4pWbxnHc4mDle/uCry00G/FIkSYYsdZji92NFMc0A/yuKh/+qpDvT9aHeZ+HSloCu7RnmxluSd1UR65La491tM0j4mPHjrF+/XpeeOEFnnnmGX7+85+zYMEChgwZ0tZD6dYcr7HjcMcOvOM1O4BwqUVrF4K09MLg79Tpps4lxczybymu4mSdk+MWB1nGBFRKOcYENUWlNaxYvSXswhpajV7rcDe7QUQ8GUpbFc10ZFmRQCAQdDSSo7SyDyVRG54RDziYrPlPcVjwHRr03nnlYAx6NYlaBQkaBR6fN5hd9Xp9YbKSfLORZVOHUVbjiPjsWOuxwy1hd8d3qnN6vPTVq3nl631NWhs2FSBX1DrjrlUtCWI7cgKpPdbRNpev9O7dmyVLlrB//37+9a9/UV1dzdixYxk3bhzPP/88Xm/8DK3g7AkEvV98XxUh4whQbnVQGOO5aFKLFL2agT0Tg1tgZxNktmTLqKzahtXupqrejdUefxI73BJFJdXY3RK3/H07+GD1xuKwgDywvRcgEDzHkp8EgvjmyFBa87uKRVtKZQQCgaCzY0hQUxBjzSswG6mwOiMed3q8bCquorLOrwNfsH5b2FpypLKemc9/xeMf7Mfnk2EPZsRNyOXwr1suYs3skaydM5rJw9P5tqQGQ4IqTPZSaDZF2BUGHg8EhbHW8XyzkS++r6La5uLRGcMj1oTGu7RNBcglp2xxZSwtCWI7cgKpPdbRNg/KQykoKGDt2rUcPHgQvV7PLbfcQk1NTXsOqVsQCHrXbT7Mb68cTKE5/I8u32wkPUXHvILsiMneFv6kZ3rnXFpVj1PyUlpt57jFToJGyaKJ5phd0Pql6cjLNHD7y0WMyjJQWefkwzsKWTtnNGvnjA4+F1qNHshmP37tiIhJGgjiD5RZO4x3a6yxCn9ZgUAgiKRXspZHZwyPCMwLzEYemDqMJa9FNj4MZLCVClnU9+xr0AUDboUMPt1fQb7ZyP1ThjD/xW1Y7G4WvrSDdVsOk21K5IKsVJ785DvmF/jr6vLNRh6eNoy9x8O7gOabjczJ78/PnvuSl7Ye5YEpw6LWSQWSS9+frOfhd/bw2I+H8+mdl/DmwvF8euclrJqZh16tCNZu6ZrROXRJHJ13S4LYswl8z6burDm0xzraroLuL774gnXr1vHPf/6TQYMG8fTTT5OamtqeQ+oWBIJem0uipt7F3Pz+3HLpQCx2d3D77bYN/urvZZOH8tsrBmN1ulHKZGQZ9aSf42roM7lzPml14PH6eOCt3WGSlYIYrYTzzUY+2lPO6o3FFOaYWFCQzfovj7Bs8lASNEpWbTwYVuxT2GjyhcpPLHY3erUChVyGQi7jD9ed36GCXeEvKxAIBM0n05jAH396QbAPRaJGhdXhYtbzX0Xs0IZKHBsXZ4I/k61WyEnRqaiwOumRpOH8Pqm4JR9lNQ5sLolEjZK3F+UDsL/MytdHqti4/yS/+dEg8vqlUmF18sm+EwzNSGH22CycHi9ZRj0f7D4RXNs27j8JwPz87GCdVF+Djn/vLQ8eo1HK+XhfBU6Pl1Uz8zAlqqmsc3Gwog635GXLoaqgE0uB2cjmGO5kRaU1bIojY2lJ3VRLa63ayrGlrdfRNg/Ky8rK+Nvf/sYLL7xAdXU1s2fPZsuWLeTm5rb1ULotoUGvzS1x1z+/5amZeby09WhEi+CRWanMWPMFq2bm8cv127g4x3TO7fQCd86xZnACOwABAABJREFU9G9KuYxvS6sx6tX4gPvf2h3VxgrCWwkXmo08eM0wrHY3Vw3rjU4l55H39zFrbBZHq2ws3LAj2JEtWABa64zIuJ+pZ2t70pnGKhAIBO1Nr2QtWqV/bdh+tJqnZuYxqHcSlaHJGrOROQ0Nd/LNRhrXWgYy2ZLPi0YlZ3B6Et9V1HHz37eHyULrnB5+9txXwaz2Q+/sBfxFpy9uOczCCTl8fcQRXMPyzUYemDI06JwSYOP+k37r34ZmRWvnjA57TeDm4fODlZyw+otLG/faeGpmHve8tpPHrx0BEBaYN24wVGNzcyhKM0FoWRB7pq9pa6vCtlxH2zwoz8zMpE+fPsyZM4drrrkGlUqF1+tl587wraERI0a09dC6BRabC6/Px9o5o5HJZCRrldhcUliL4EBAWlRaE7yjD1R/t0U1dKw758IcEwsnmLn2mS/4888uwKBXU+vwxLWxWnL1YPIHmkjWKdlZasHukkjQKpnx9Be8MHcMQzNSuP3lIlbNzIva4RPgwv5pbR7YdtRGCgKBQNDVCa1rirY29kjScP1zX5GXmcq8/Gw8kpeXbhiLSiHH4/Vid0ksfrmItXPGUG1zoVHKUcplFJpNLJs6lOlPb6Ewx0SPJA3v317Iv/eeCNvVTdGr+O1Vg7n+ua+CXuSBwPiExRF1Fzi0Q2cgCI/WrfNYtT1mr43rL8wMnu/Sq4dQ6/Rgc0nsKKkO+zyNSs5lf/yMi3NMPDpjOC7Ji8Uevlady2ZDHdmx5Wxp86BckiRKSkpYsWIFK1euBMDX6DZTJpMhSfErigVnTrTtnkdn5FJoNrGpuDJqg4EAodXfbVEN3fjOOUGjZNvRahZt2MEfrzuf9FQd972xi5lj43eILT3lr4g36FX8YLHzyb4T3DNpCDaXhF6jCMpYohXSBGjr6u+O2khBIBAIugOhdU3RkjUv3ziOVTPzKCqtCTabW72xmJduGMuX3/t9xW0uiUStAq9PRckpG8MyknngmqGUWx3kZaZy/+QhzFjzBc//cjQery8Y8BaYjVjtLjYXV/nXKbWStXNGB11d/jb/Qv7UoDsPHZdGKafQbOThabkcrKgLe020jp6NCbjJBM53aHoyL209Sl6mIcIlJsDnByu55/WdXBByzJmuVbG6kT42Yzh90/RRX9ORHVvOljYPyg8fPtz0QYJWJ9Z2z8r39rFu7hiQEbV1fGB7LjRobatq6NC77UMVdax4dy+rZ+VxvMbOc5u+Z0txFXPz4zeaStH5L4j7T1j5X0k1D12Ty7/3lgWr6S/OMbF8Wi6TntoU8z3asvpbdOIUCASC9qWpuiaby8OC9dvCZCzg9w3P65eK0+OlwGyk3ukhTa8mI0XLivf28qvLzyMtQUNepiG4Cx14DfgD8oeuyeV4tT3o/hX4LGjQqSvlwQA6QKHZn3U/P9PAOzuP8/XhU1F3kAsbreWNCfVD10T5nEADpP8cON1ddHNxFfNCjjmTtSrWerepIdh/4toR9DFEBuYd2bHlbGnzoDwrK35mszELFy5k+fLlmEzRq3MFzSPWdo/NJbFoww5eveki/xaUzU2iVkm51cGS13YGt+cCF532stOrc7p5elYe6zYfZm5+dvCCU1RaQ77ZGP0ClGMiLUFNP4OOWqebUVkGjlfb2X6kmhXTh+P1eYNbg6OzDE16uLYFXXlbTiAQCDoijeUTiVolPxrSk49DWtsHKDT715W1c0YHZSxBWYdSjtPjJUWn4qFrclHJwCF5KSqp5sbCgRw4UYu5ZyJFJdXB99Mo5SRplLx/eyFapZwfqu3c8tJ2bC4pzA4x4NpypMoGnA6gC3NMzBnfPzgOvVrBUw3rWuMasWVThzH96S0xv4fAjnhoIi5Bo2TN7JFolHLKrQ4cbolnP/s+7HWNmxs1d61qqhvp0SobiRplxPs0VXdmSlR3Wgloh2+n+Y9//IO77rpLBOVnSaztHr1awePXjuCht8PdSwpzTLxy4zje210W3P5qbRugM5k0Rr0ajUrBpuKqMMnKus2Ho16ACsxGVkzLRSkDp1dCJpOTolWD1scdl5/Hdc98was3XRT8vLbqtNkUXXlbTiAQCDoax2vsLPnXTjYVh1/7V07PxQd8EhKYBwo4Z/91KzaXxJrZIyMazo0fYCQjVYvX5+PrI9WM7p+G5PUhl/nrk8os9ohd6Lx+qTy18SBzGx63uSQKGuwQQ6UoZTUOlHK//WJ/o56PflWI0+MNuzFoXCOWpFWSrFXx4Z4TfLC7jLzM1KhJrMBYGuvQU3UqlHIZFrs7ogNpgGjNjSx2N4cq6uKu702tdzV2d9TgvinHFptL4u5OKgHt8EF5Y725oGUkaqL/qucXZPPClsMRk3TTwUoefncvK6flcklOj1a3AToT3XTZKRturw98BLMTAaIVqWal6ZHLZahkUOtyI/lg8lNbwi42NpcUFuB2FPvArrwtJxAIBB0Ji80VEZCDP9N735u7eXR6LjMvzAwzPwgreAzJLM/Lz+blrUf5yci+rHx3D7dffh7D+qRQ7/IwMisNt+TF6/ORlqhh/tNbGJVpYE5+f175uoSpI9KZl5+NQiZj7ZwxeH0++hp0XPuXL4JWjPlmI31SdPxgsXNxjgljooa7/t+3zM3vHxEkh+rg31lcwCPv72PO+P5h7iqNrX/vnzwk2E00NBGXnqIFYPHLRVEz043lrQEcbokf/+WL4M/R1vfmdMmOlYiKtWYDLHq5qNNKQDt8UC44e47X2Nl2tDqqzCOvX2pUxxHwB+YOj8QFmYZWHU883fSS13aybMpQFHIZpgT/xPH4fDg8fmlNr2R/BiL0XEIvQIVmE7dNNNMnRUud28PP137Dmtmjoha9NA5wO4J9YHO25QQCgUBw9lTUOiMC8gCbDlZic0u8+MWRqBKLUBlLUWkNr2wt4fbLzsPudnP92Cz+/Ml33HH5eTz1yUFuuDgbGTKMSWpcHolVM/NIS1Dz9MaD/PaqwZTVOIK68XcW57PrmIVEjSIsIF80IQdjoopPPyzn4WnDqLG7uKFwAB6vN6aEM99sRN5QL+bz+cLcVQJJrFSdikyjnoff3hMm12m8UxwtM11gNgaz+6EUNHQSDSVaUGxKVFOYY4r6/QaC/RkX9In6+4Hoa/ahirpOLQEVQXkXJxAAB/xWgZgWguCXs8wvyA4Wq7glH+VWB72Sta02png6sk0HKyk9ZWPxy0Wsuv4C+qbpqbH5m/QkaJR8ur+cA2VWVk7P5f43d0fc7T98zTDUchml1TYWv/I/rr8wE51aQWWdk5GZBijwS15GZxk6ZIDb0kYKAoFAIGiaUNmkRiln0URzhO93AKvdw5KrBqFSyIJNesBfMHnXlYOorvcHzZee1wOAP3/6HUuuGswrX/sD9Gc/O8TdVw/m25JqxmQbefKTA/RNS2D1xmLeWZzP7Zef5y/4dJ+WwOw6ZqFnsha1UsH/u3kcWpW/T8Z/DlRw+ZCeDE5PZvJTm4P1Xq9tL+WBKcNY/u6e8PXQbGJOfv/gz5uLq1h4qZnVG4vDnFKeuHYEerWC+ycP5dc/Og+bSyJFp6JnkiZsvYmWmdaq5Dz09p6w7y6gcW8cqENkUJyiV/PYjOHc8/rOqL7or35dgqkgvplDxO+sk0tARVDexWnKbzU95fRWUqBA5IUth8Oy503ZE50pTU0al+Rl3ZzRPP2f4nCdu9nIook5jOiTyu8/3M+SqwZzstZJokZJokZJgkaBXCbD5fWy+JX/8fi1IyLOJd9sZN3cMfRP03fYALejSGkEAoGgKxFNNhlonBPNOlCrllPvlPjV5efxy3H9kXw+jAkaHB4Pp+pd3LZhBzaX5M+Wl1SzeGIOSoWMu64YhA9YPDEHSfIyboCRP358gCnn9wlqyXcds/jHZHGQ1y+VwoZCzA92l/HJvnKGZqSQ1y+Vnz77FeAPsn0+gutZIADPyzTwxIf7wjp6apRyMo16Hnt/H7+5YtDp81Ep+PTOS4LrSqJWicXuYm+ZFZlMxo6S6mDS6vFrR5DSaMmPlpn+w3Xnh61Vks/H9Ke3xLRhbBwU903T88S1IzhaZaMmpKv4K1+XcP/koc38zZ6mJRLQjlQUGqnOF3QpovmtLli/jYUv7WDB+m04PVLQdzSevvye13fyQ7WtVcbU1KTpnazlcGU9c/OzWTN7JOvmjmHRRDPbS2pYvbGYk7UOBvRMQiaDBeu3IXl9JGj82XCv18ecdd9w/YWZvBjlXLYUV7HmP8XoGnXp7Gik6NUM7JnIBZkGBvZMBPzbckUl1Rw6WYfF5mriHQQCgUAQIJZscktxFS9s8beYDyXfbEStkLN6YzH7y6xsK6lmwfptVNU7qXdK/HXz98HXJGiUTB6eTo8kDcUV9XjxFzq6vV6KSmuwuSX6piVw+8tF5GWmsmhCDuYeiaSn6NhfZqW/MYHzMw1Mf3oL2w6fYtbYLNZtPnzaYcVsZOEEMzIZEWPP65cazOIH1vZ1Ww7j9niZNTYLOF2Xl6JTBdcVnVrBXf/vW6740yYWrN/G/Be/oajEv6O+7Wg197y2s1nrTOO1SiGTxfVFjxYU9zHoGZaRzMAeCYBfVjs4PZlJT21i8ctFHK+xB4+12Fxx18KABDQa0SSgx2vsLHq5iMv+7zNmrPmCy/74WcRntiUdPlP+85//nOTk5PYeRqelqQBYr1aw/JpcHnp7T1x9eTx7ojMlnm4632zEmKDm3V1lEXZOgWzGr36UgzFRQ53DP/HTEtW4vF5MSRpKq+wsnTSErDR9zHOJpivrSHfKjRHNhAQCgeDsiCebjOXHLZPBpuJK7rg8h54NEs5AoBz6mgSNguMWB3aXh0SNEpkPtEpFUIri9fm4JKcHV+f2Rq2U42yQqzz3+ffcM2kILo/E0PRkXrlpHBqlnBlrvsDmkshK04dZLwYsfEMJjCe0o+fiCTlUWJ1s2HqUxRNzgPCANHiDUhx5gwIEGxOVWf2Fn2eyFp5NXdTK9/bFLdCsd0lNroXNkYAG1nuL3YXT4+X8fqlsP1odvJloz6LQNs+U19fXc+utt9KnTx969OjB9ddfz8mTJ2Me/5e//EXYIZ4FTd019k7WYkpUM2lEOgnq+PdoAXuisyUwaRqPK99s5NEZw1n+zp6oGe5ANkPy+nB6vCRqFRTmmPwtjGVyJv15M79Y9zUbth7F7o7fwcxiP72D0NHulENpqpmQyJgLBAJB0zQlmwz4ca+dM5rJw9NxuCWsdg8AHq8vqO3WKOVB1xWnx19k+dGecopKqpHLZCRplYCPtAQVJ+v8gbFKIedknZMTFgc/+r/PeeKDA8hlMmaOzcTtkXB7fSx8aQd1Dg9OjzfoUS75fCxYv41j1XZsLinCDzwwHoC+Bl1w7Ha3xN++OsKssVlYbO6ImqSmblACzYy+P1l/xmthrPW9qbqopnp0VNQ6/U45zVgLAxLQT++8hDcXjufTOy9h1cw89GoFB05Y2Xa0mqOnbGw8cJIF67cFdwj0ITvogeRdW9PmmfJly5bx97//ndmzZ6PT6diwYQM33XQTb7zxRlsPpVvQ3MLBS87rwZHK+rjvFc+e6EwJ1U3X2FxIPh/pyVrq3RKf7I9+kxbITCSolbh1PuqdEndcloNaJkOSwdo5Y0jUKqiwOoMX0FjoNf7nO3oHTdFMSCAQCM6epnaNEzQKTjUsgQE/7n/dMh7w7ygrFXLyzUYqrA5+sDRkkHUq7r5yMH/+9DsWTcghUaPk8Q/2seSqIdQ53Xx9+BSLJuRQ7/QEGwsVmo08eM1QZDIZG7Ye5b5JQ/n3ruMUmI30MejYf6KW/AaP8nd2HgdOB96N/cADDiWFOSYUchk9kzWkJahRKWQMzUjhla1Huf3y81gxLZf0kF3Vpm5QAsG/Rilv0VrYkrqo5niWx3LKibYWNta/R/OjD92Bh8PBHYIA7VEU2uZB+RtvvMELL7zAddddB8AvfvELxo0bh8fjQans8GqaTklzJkhGqg6FXHZW9kRnSuDzD5ywMqBnIt9V1JEQw089FI1KTqZWx+7jFoZlpODwSpyodjJ73dfBY/7964spMBvDKroDFJiNaBT+i1tHD3o7eyW5QCAQdASakk1+tKc8whRAJvP/XymXIQMWTcihV7KGKas2U5hjwuGWSNUr+dHQ3iRqFJRZ7Nx91RCq6h2olQqmNGTcZfgoKq1h8vB0lk4awrFTdnola1g2ZRjHTtnYdczCvZOGYLW7yEjVMnl4OjLg2c++D669BY38wAMOJa9sLWHZlKFhxZWBwtN5+dlc/9xXbLhhLFn49doWmwtdE0krjVIe5j8eyFQ3lngCMWWfZ2ox3NRNk1YVX9gRby1srlwnVMIE7dMXpM3lK8eOHSM/Pz/486hRo1CpVBw/fryth9KtaFyMEW2yeL0+ll49mIKGws8Agcl/oMza6jaC1TY3L39dwlVP+otN6p2euMf3TtailMk4VW8nNyMFh8eDw+XjaLWNQvPp7TK3JDE3PztYxBp6LnPzs3G4JY7X2KlzduygVzQTEggEgrMnlqyi0Gxi0YQc1m0+HHwssOa5PV4WT8zB6/Mhk0HpqXpsLg95maksmzKUxS8XUeuQuKBvKn/+9CDJOjWVdXZS9RpkMhjWJ4WXvjpKr2Qte49bkOGXwvz9qyNoVApkPh+GRBV3/ug8yq3+AtJdxywMMCVid0lB28P9x6389srBjMlK428LLuSdxfncdcUglDIZ90wazOHK+mBAXphjokeShrxMQ9BRJrBOBKSa7+4qi1gbQ8+93OpgXn522HdSWm0Lk3guermIfSdqmbp6c6vIPuNJbQtz/M4z8Yi3FjZXrhMqD2qswW8ro4U2T017vV5UqvAvT6lUIknxNcCCc4vF5uLu13ayr8zKurljuNXhwRJiT/Tq1yUsn5bbqlnjcquDZW/uCrM9DLT5jealXmg2opDLUMplJOm01Ls9KOVyHG431TYX8wr648XHluIqqurcUS0gAw2EXpg7hhq7m76pOvRqRcxq8fYOekUzoe6B1+ulrKwMgPT0dORyYYwlELQ2gV3jcquT0mobqXoV31fU8/WRKlbNzAtbJ175uoSbLh5A72QNv/twP3ddMZi0RA0Ot0RepiEYCNc7PSRplNxQMAC1UoZOpeUnz3zJ8mm5aJRy7r56MCdrHcwam4VMBs/8t5ilk4Zy7JSdnikadpZa6ZmsYcPWozw4dRglp2zI5aBRy7nrikE43RIzx2Yy8/mvoq5TL984DqXcb8tSYDZy1xWDuP65r8KC9EStMkyqGatvSagt48r39oV9Xo8kTdhauelgJV6fL0zycTayz3hS2wevGca7O4/Hjg2aWAvPRK4T+MyAvLetjRbaPCj3+XxcdtllYVIVm83G1KlTUatPf6k7duxo66F1Kc7UTST0TvL6574KayCU1y+Vn4zsE6ZJO1vKauycsrnCAnLwN/aJfrEwsXTSYPQqBXJg9caD/Pry85j11608ce0ICnN6UGZxsGJaLk6PF4/XG9bpszF1Tg8L1m+jMMfEurljmP/iNxEXvLYMemP9vlL0alZOz+XeN3aFSXEKzEZWTm/dmyRB+1FWVsa8pz8C4IXbrqRPn9aTiQkEgnAkn98soM4hcV7vJN7+9gf+9PHB4POFOSYenDoUpUyG3e3hzisG80O1ndtfLuLVm8exemMxa+eMDmrMc3om4sPH9iPVlFkdVNa5gn1A/vzJd/zqR+fx3Kb93DdpCL++YhD/3lvGjiM13Dd5CL1TtLy09SgPTB3GD6dsSF4fOpWCqau2kJeZysrpuUx+anPMxFGyVolWJWfDDWMxJKj5xdqtwWPzzUbmjO/P/W/s4r7JQ9l+tBrw2yM3TlplGfV8W1oT1WM832xk9zErN108gCc/Of09NXatgZbJPgPrX53TzYrpubg8Xv/NTkODotJTNp797PuosUG+2ciKJhKGTe04a5RyCnNMZKbp+fTOS4Ly3vaoOWvzoPzBBx+MeGzatGltPYwuTUvu7KL5mYeyds5o1EpFq9wZWmwuXA13pmtmj0SrUgSbFoReLJZePYQ6p4ckrRKdSoFaLsPj9fHNMQu3X3YeC9ZvI9Oo54vv/dtPf/vyCHmZBgAyUrRxWw8HtHKB72jZlKEsfX1X8Ji27KAZ7/eVoFaw/N29XJBpYF6jjP+Kd/fyh+vOF4F5F0GbIlymBIJzSbRiv8sH9+DuqwYzr86Fwy2hUcrpk6rjvV1ljO2fRo8kLV683PzSdvIyU/FIPgrNJsqtDhZNyKF3soYf/+ULBvVOYl5+Ng+9szcYrFfVObltgpn/Ha3m3klDOFplY+6L31BoNrJyxnCckkTvZA0PTRnKwZP1aJRyxg00cuhkPa/ePI6P9pRTVediZGZqzPqoJK2SeqeHnkkaVAo5T12fF9aEJyBhcXi8YUF143X+Lz8fSc9kLXmZqRFB77z8bG5/uYi/zb8wLCgHojrCnInss6n1b9HLRZzfL5W8zNSou98VtU4M+vhBd1P1BBW1Tn537YiIxGN71Jx1iKBc0Hq09M6uqTtJoNXuDGvsbu59c1dMH/LAxSKvXyovbjnCyum5yGRQWe/AoNdwXs9EfvLM6Yvgw2/vYdoFGdw3eSgWm9sfxKsVXJidxkNv74navje0BfCmg5U8MGVoWKeztuqg2dTva8W0XD7ZV8En+yqivr69C1EFAoGgM2CxuSICcoBP9p/E6fExqr8hGHC+szifbw6fYtr5fYKuZKMyDczJ74/DLbFiei5enw+VXEbxyXr+tmAs7+8q4/aXixiVaeC2CWZ6JKtxe3wolTJ8gNMj0StZyzuL86l3enhv13HGD+iBQa/ihNWB1+fji++rgsmpNbNHsnpjMQVmEyum57Lszd0Ru6XLp+Uy+69bWfPzkdzz+i4emZ7LDX/bFjWrvulgJXdclhMRVAdQK+QsDgl6EzT+YD80sPd4I4XdjR1hoPmyz+asf+Fym8hu479rRvIsljSmMMfEimm5GPSqqO/RHkYLwu6ki9HSO7um7iSLSmta5c6wtKqee9/YFdWHHE5XQfszDU6WTx+GUgY2r0SyToPd46XWKfGPBWP9L5R5+fuCsdzXKMgvaLCUumigPwjXq5XYXOEXmFDqnR4uaMiytyVN/b7qXfELX9u7EFUgEAg6AxW1zpiWeoEGQU9+cpACs5F6p8Tyabk4JIl/fHWUeyYN5s4rzuPpjcU8MHUoRytt9EjW8M7eE/zp44P88+aLGJqezF9/OZoeyRqUMhn1Lg9atYJH39vHjYUDkbw+fvrsl+RlpvLg1GHsOFrDpNx0bG43iToVt7y0I8wXW6OUU2A2olcr+PMn33H3VYNZIoM6h0SiVoFGqeCnz37JoN5JeCQfmw5WcqzaHpbcaowUJaiG02t8aPZ8zeyRLHwpXEasb9QJO3TXOcCZyD6bu/5Fk9tolHIy0/TNltW2xKaxPYwW2jwoz8vLQ9a4V2wUhKa8ZbT0zi5wJ9n4rrVxZvlsgsAfqm3UuaSokhI4rU/z+7gO41S9E5VMhsXpweaScEtethw6nUnINxt5aOow7n8zMsjfXFzFg2/tYV5+NgvWb2PtnNEsWL8t5tjaq6Czqd9XvHbF0P6FqAKBQNAZqLHHv9Z6vD4KzEZWTB9O0dFTlFbVk2VK4O6rB3PoZD2JGiX3TR7Cj//yBZV1Lj64o5DcjBTAH6y+1FCo+cQH+xmcnkxRSTUPXzOMHw3tTe9kDYcq61k1M48Kq5P/lVSzoGAA3xw+RT+jnmStiieuHRFcowLyl7n52Tz5yXcMzUjhZK0zbA1bO2d0cLfYYvOfm8Xh5h9fHY3w2w6QqFVSaDZFeHU33j2G6J7ooRTmmLhtgpn5L34TfOxMZZ9NrX/1IetfNFntp3de0qzPCXCmNo1NGS0kapUcqqhr1U7gbR6UT58+va0/sltxNnd2Gak6Vk7LpfhkXYRbSSA4DLz+TAtJS6vqKa22I5PJWDd3TJiGPJQEjZKrh6dTVeciPUXHYx/s473d5cHnQ2UuW4qrOFnrjKq1A39gvuTqwUB8V5f2dDFp6veVolMJ9xWBQCA4QxqvUWl6dRNOW0rm5Wfzuw/38cuLsklP0eL1eXlnZxljstKQy2UcrbJRWecKZrADHT11agWTh6fzv5Jq7ps0hBXv7WXxhBzkMhk/1NiZvMpfqOkv0B/O14erkMtgZP80fjhlp9RuJyNVC/hNDZZNHYrLI/HTZ/0uKrPHZoVptwvNxqDt4YatRxnacHPQI1ETtfgS/GunVqlgVH8Dc/P7B73Kv/i+KiKzHs0T3X8+/gx6ik6FMUFNWoKadxYVRM08NydGaGr9UzU0bIq1bivlMopKqlstIG5MPEeYldNzue+NXWHS0tZwZRGa8i7G2VropepVrP/iSNzXHztlY+nrO8OcU+L9MR6NIllprCEPkKJTMTbbiN3t4bEP9vFBSEAOkTKXeNkPvVqBUiZn7ZzRuCQvVw3rzc5jNWFWT21Z0BmNRK0ybpOjZJ2qWR1ZBQKBQOAnWvFgYY4puGMazV1Eq1TQO1nLb64YhEou4/EP93H3lYPZWVrDFUN6o1PL+ckzX1JgNvLQNbng9ZGqU7FoQg6VdQ7GDTCy/cgpfMDlQ3ohl0FJlY28fqn+gnydioxULS6vxOisNGQyUMjglpe2s2pmHjanxNo5o8ky6rlm9Rb+cN35wXEGkmTgD8jnNDQFCviY3/5yEflmI+oo+u7A+S2ekMP2o6fweH0sWL8NvVrBujlj+LakOuz7CDidVVidrJk9Eo1STrnVgTFJzbTVW8KcXR6dPpyBPROb9f1HixHixSsFZiP/PVDBvIYbjDA3thwTCyeYufqpTWFr+bmwKYwme0nUKiMCcmgdV5YOpyl3OBysXr2au+66q72H0imJd2fXnCCuqdfXOT0seX1nxJ1rrD/G0qp67m+Ghhz8k9Bid3H9c1tZO2d0REAe+tpAJiBakQn4A/KnZubx6Pt7w24eCs1G3r4tv8HVpe0KOmNR7/QwNz8bH5E2T3Pzs6l3ehjQI/GMtXACgUDQHYlVPLjpYCX44P7JQ7j3jd3BxwMBa+kpvzNKvtnIfZOGMOeibOwuifunDKXoaDV5mQZemDeGeqcEMh92r4+MVC0ymYztR05xtNJOXtbpuqSeyRrqXR6sdomMVBXHa+z84cMDZPdMDEpbjlbZyctMpai0hiuH9WLVxoPMy8/G5pLC1rZUnQqDXs3aOaPJNiVQUmVj1cy84E52IDgvszgAf5O9tXNGn3YosTpJS1Qxf/1eVjXYCtpcEvPXf8MbC8dzrNqO0+Olr0HHxv0VfLyvnNFZaSQqZLg9Xo5bHHx/sj4seN9SXEWdy4PFFl5ndiZmE/EKMOeM7x+U1DTWkvc3JvCz574MG8+5tClsLHs5VFEX03zhbGvv2iUoP3nyJFu3bkWtVnPZZZehUChwu92sWbOGxx57DI/HI4Lys6AlBQ3NeT3AnuPWmJrwxn+MpVX11LmkCC/yAKHBdYHZyCMzhnPtX75Ar1aQlqAOXlQaWybCaRumotKaCI0c+CfxC1sOR4x1U3EVD7+7l9XnYOK2BIs9fpOjDTf4C1rPVAsnEAgE3ZF4xYObiiv5zRWDwgLWcqsDU5KaY6fs/gB9Yg5qlRy7VUKtlCGTQYZBj9Xhpt4p0deg4/EP9nHP1UPweH2cqnMwol8qp+qdeCQfKuX/Z+/N46Oq7/3/51lmTzJJJiQkQEJgAiQsGkBAk1i1KiK41WtvwfsVBKutou217hX3Lnb1urXWvbei/m5btWq1dakLuKBClV2QJUACIXsy+1l+f5w5JzPJJAEFFDyvx4MHyczZZjJnPq/P+/N6v17Q0GF4lf/H798F4KmLZ/DI8q3ccdYEtreEGeZ3I4sCT39Yz4U15Tz5/nZLz37e799Ja6CsTUpVdrVFeGT5Vq6eOZaGjghjirKpKs5JI+f3zK025DSOnoZMj0OiMMdFQ1uUcFxNk8GE4ypt4YSlVX94/tQ0d5bUXqyH50/t8352RRUuf3JVWoV6f80mMvENVdfT/NIzWTR/Z1ppn8ff2tTMrvYIzaH4QZGzmDiYriyHnJQvW7aMOXPm0NnZiSAITJ06lUcffZSzzz4bWZa55ZZbmD9//qG+rCMOX5TEZdr/s6buQZtl2sJxVu9sI8ft5MZnVzN3etmA23udMi/9oA6fU2JHa5hwXOXuudX85p8b08h8b7mLWUVY19DBrWeN56bn0u2ijh0V6Dc46O2D5C/6eZDjdgwYcmQ3ctqwYcPGvmMwwtQZS3++oSNKTFFxJ3XhQ7NdtIbj/O972zilcijHjQ7gckjc8eI6Lq4bze7OCFeeOg5dMywRvU6J1lCcwmw3zV0xlm9p4d7XNzNrwlDrHDluB3MmFtMZTfDwsq3cfvYEdrWGGV2YzZPvb2fJnPHEVIWX1jRYzZtXPLnKsOw7ewJ3vbKRaeVGQ2Z7KMENz6zh4flT09xRaoIB9nRGubCmnL3dRlNobTDA1TPH8ciyrYwryQH6ri6bjip1wYI+Tiomgc/ksgIgi0KfCvVg739rOE7rtlZ8TgmfSybX48hYiR7M5KB6RG7Gx7e1hLn0iZUHNXXzYLqyHHJSfuONN3L66adzww038Pjjj/PrX/+ac845h5/+9Kf8x3/8x6G+HBv7gc5oArdDGnCb7phCQZaX219Yy1GleYzIH/iG0HWdhvYIQ7JdFGS7+q1wp8pdVtW3WY2b86aXcfdrn3LbmROIqRrt4QRZbslYYhwA+zqT3d+G1v3FF+0BsGHDhg0bPRiMMCUULc3FpCYY4JvjCvG5jLFNAzbs7uLiutEM9buobwlTkOPk5MoihvpdGJRWQNV1/rGukbpgISU5Dj6qbyfX6+CBN7dYGnUwpBhrdrUzZWQ+CVXl9InFxBQVURKZOb6I2mCA5u4oOR4HJ44tpDZopFM/dMFU8nwOVm5r5dITK3hpTSOvr2+yyHXvxs8lZ4znpTWN3PHiev78veN44qLpZLtlfv/GZi7/ZgVzH3yvD/E2HVXqKgq45czxnHHPsrT3yrRlXJDBnaUuWMCy5Ap1agV8sPe/M5JIc5m5/KQKynpZGxZkOamrKMhYcTcnCFXFORmPb046Dqac5WCO25kFuQcRq1ev5sYbb2TChAncdtttCILAL37xC5uQf0XQEY7zWVM3q+rb+GxvNx3hHt9Uv8eQsdT2skYyURsMMLrAR0zV+M70MlbVt/GPtXv6WCmlbp/llnlyRT35HgfvfdZCzeieTmuvU2LxSUEenj+V+8+fzKLaUZw+YSi3njme2ROHsmR2FcNy3SyqHc3zqxs493fvMPfB9zjjnuXI4sC2mz7X4PPRhvYIi59cxTd/8ybn3P8O3/z1m1z+5Coa2iOD7ruvMDV1x1ekpznajZw2bNiwsf/IcsvUVWROx+3tKlJXUWAkJSdUVu/sYFRBFk5RYNJwP36vjCwIPPruVlyyhAA0d8dAEGjqjpLQNFZ81obPKRFSVLa2hPj+EyupLs21nErqggFuO2s8AP+ub+OTHZ1UleSgAaIAum5MInJ9Ts6+7x22Noc5897l/PHdbYiCgCyJ7GiPcPZ9y1mxtZWrTxvLI8u2AlCW7+X+8yfz8PypHFWax9n3Lee3r2xicmkuXqeI1ykRiil874Qgix7/gOrSXG6cU2ntb2rp3Q6Ra2eOo6U71qfhszDbzbWnjeOp97f3ei7AhbUj+cNbW6zHzEKXSVgzoXfFffnmFu55fRNvfLo3nWt4ndx+1oQ+3MG0b3xk2daM/WS9j29OFg40Dua4fcgr5W1tbRQUGC/E4/Hg9XqZMGHCob4MGxkwWMe0zyVzx4vrMjYm1gUL+Mk5E3h3SwsTh+ciAItqR7F6VzuLajN0TwcLuGrmWB548zN+PLuSf+9sp2ZMAW0h48Y2GzUfXd4rwStYwIW1I1m81JCx1AULOKo0t4/8wyn3b6VUEwzglAaej37eZNTPgy/aA2CjL3RNo7Gx0fq9uLgYUTzkNQgbNmwcQjS0R7jpuTXMP24kmq73GnMCXH3aOEIxhWnl+SQUjRK/h1/9cwNL5oxnR2uYYr+bv69r5K2NzfzsnIk0dUX4bt1oJAFmjArQGoohALk+J3s7Y9w4xwgSKshxMaYom6cunsHaXZ34vTKiAKdPLGFvV5TSfB9DcpzowG//+SkX1Y2iO6Zw7+ubWXJGFZ81GU2UZfle/ra4Bq9TIqFq7GqNUFFoHPef6/bQ2B5NjnsBVF3nyffr0/qpTF36Z3u78Xsc+FwyjR1R7jx3Eqt2tKNoGr8676hk82eUSELl7Ps+4FfnHcXwvJ5KdU0wwJIzqjj7vuWAsUI9N2nLOCLfwz/W7rHGYBOmZKO/5s3+/NDN3rLGjihbmkPWinSe18GcSSUZe62mlOXR1BVLO05/xz9YAXsHa9z+Uho9161bx+7duwFDvrBx40ZCoVDaNpMmTfoyLu1ri30hod1Rhdc37OW9La0srC1nUe0ovE4JTdMp9rvpjik8/3ED1/xltbV/TTDApGG5HDMy37q5ygt8CMCezhjlQ7KYffcyqktzWXxiEL/HuLH7b9RsRkO3XFve3tzM908Y3YeUN3ZEM1opmTduRyQO+Pp9Pz5vMurnhd3IeWAR7Wrjqqf3kFNQTLSjmUcvm8mwYcO+7MuyYcPGQULqGPbOZy1pzfN+jwNJhJbuOJctXck9c6tZ9PiHvHh5LVd8cwzRhMK0UQF2tIRZsaWNO86eyN6uCNleFwFJJKGprN3ZxVHD/eiaTjyhMSzXw4fb29jSHKIuWMClT6zkxctrmV6ejyTCR9vbmDE6n0hcYW1DFz6XxO/e2MxVM8fR1Bml2O/mspOCvLSmkQklfuqCBby0djcf17dxVGke1SNy05osV9W3ASZhHs+8B9/jT4umo+kG8czxOHDLIr94ua+VMBiTklOrinDJIoU5Llbv6uD2pD2w3+PA65S4//zJjMj3sGZnJy+taezTaFkbDHB0aV6f8ba3ZKM3YXXKIn9fs7vfpNGYorGlOWRp5M2K8zfGDOnXCc7rlJg2Mp+2cJyOSKLftO6D2Zd1MMbtL4WUf/Ob30TXe+Je58yZA4AgCOi6jiAIqOrAmmAbBxb7QkLNBg6zMXHxSUFW1bextzPGQ/On8pO/r+9XC15dmmd9wfz5e8fyvT99xHemlVoerm6HxNbmEFNG5lETDFA9om/1O/WYqeEIoihw0rghVJX4qR6Ra1g75Xo474F3+3U1eX5x7YDvx8HsrrZxaODOCeDNG/JlX4YNGzYOAVLHsEzN8w/Pn8ojy7eysNYYD2qDAXwuiTteXM+1s8YRSagoms6PTh3L7o4IXpeMoup0hCJke5wU+V0o6KiajtcpEVVUjh6Ry43PruH0CcXUBgNku2UkjHRQVYfuqEJXVGFKaR57uqJcftIY/l3fRmWxn85oAp9T4uMd7RRmubhq5lj+57VPWXLGeH7+0nrruuuCBTR1xbhpThUJ1dCRb20O0dwdJ65q7O2KEVM0NB0EAc6dMoLOqNLH1/vG2ZUkVI1VO9rTnMxqgwHyvU5eXN3Iiq2tzJlYzHHBAm5/YV3a+1cTDHBTr2szj33rWeNp6o7REooTSPZdpRLWDY2d/Y7n0Lf59K1NzVybLAYOVI32e510hONc/uSqI6Yv65CT8q1btx7qU9rYB+wLCe3dwDG1NI+h2S6OKc+nI5ro1yqxN4n2OiV+fu6kPtKUmmCAY0cFuKh2FFrKpC0T4mpPk0ssoXHFN8fw639ssI63+KQgkzPIWmDfbtT96a4+2M2gNmzYsGFjYLSFB9YOxxTNGovcDolbzpzAyu1t3HB6JfUtYYble1jw2Ac8e2kNJbke7nx5A7XBAqaOzEfVdYqy3fzqHxu5btY4fvvKRq44ZQw7miNMLs3FLYv85JyJNHdH8bpkPtnRQX6Wi9+++inzppcRURS2NocIFgpMKcsnoigU5bj45csbuOH0SmRBYEdrhJMri/h3fRvzppdxxZOrqA0GuO3s8Wi6zhn3LOeeudXc+/pmHp4/lZpgwEi03NFO9YhcstwSkiiy8LEPrGKUzyUTiikMyXZxzv3v8OAFU9PloBUFXD9rHHu7Yqze0c6tZ45HEgT+66H3Oat6GHOnlQKG5/pr65uY9+B7fGdaqZUw6pJF8n1Oa7X7wppyfvb39dx61oQ01xNRFKgLBjLaI9cEAzR1RtmV9Fg3YRYDRxdmDTieftFslq8aDjkpf/zxx7nqqqvwer2H+tQ2BsC+kNCCLCenVBYytjiH6WX5lAY8PLxsCzc+t5b7z5884P5mp3hdhTHr789h5aa/reWMScWMGtI3JSwVhdku63hlAQ9Lnl3DR/XtLD4pSPWIXCvBc/XOdmuJztx+X27Ufe2ubmiPcO2fP0nT9R1MKyYbNmzYsJGOPZ3RNG/uTEitxub7HCDoKJpOOK4wNNdNLGH0KAV8DlbWt/Pfp4zBKYn89pWN/PcpYwnFVa6ZNY41DR1cccpY7nplI9PLjXTPhK6SSAgEfG50XWfs0GycskhViZ+nVtRz7axxTBjm518bmzh1/FD+Xd/B9PJ8LjkhSDSh8u0H3mNKaR63nDmeSEJhV3uUBy+YSkmum/959VPmH1duhQyZ1oeLT6wgyyWzrqGDYX43PpeE3+20VglqggGqS/NYVW8EH00pzSWaUC2/8WG5HpyySDiuMCTHyZWnjkXRdL7z0Hs0d8f7FMyqS/P6PA7GCkQ4rqativfuuxIFuLC2HBDSxsqaYIDFJ1ZQlONiTi/nF9j3FekjqS/rkHc+3XrrrXR3dx/q09oYBAN1TJsk1O91smROlfElkOfkxmfXWDPf/pI1TbhkkbpggDvOnoCm029V/e1NzVSW5PDpnq4BXVvyvcYE4RfnTkLV4KP6du6eW82q+jYWPf4h3//TSubcs4y/r27khctreeD/TeHh+VM5fWKx5cs6EPalu7ojHO9DyKFn6a1jkMqNDRs2bNj4Ymhoj3DV//dvXlq7u98xI9UKcFiuh3+u28NPX1xPab6P9Y1deB0S6xu7uP3sCeiajqrruCWRVfVt/ODksUQUhWynhKTpTCjx09wZ4Qcnj6G6LJf2cAy3JNMVTRCKJzj9nmWcdd87aBp8XN/O1TPHcta9yznz3uV8sLWVjnCc6eX51LeE+eXLG5EEkT9/7zh+cs4E4opKV1SlJNdNNKHyi5c3MOeoYUQTKhfWlLOhoYObzxiPQxQpzHFajajTRgWIJ3Q0NOv1XlhTzrqGjuR+ndx61gQUzViB3tMZpbEjyk9fXI9DEgEBj0PiW/e/k9GtZPnmloy+4JncVKpH5PZxPXGIIn96bztTRubx5+8dy1MXz+Bvi2u49rRx7GgNEY4rGbXm+6MH93udjC7M4ujSvEGr619lHPJKuT6ILMHGF8PnlVL0XgLyOiUW1pZz3KgALlmkORQnpmi8v7WVm8+oIhzXmDu9jAtrR7Gyvo3Vuzr6dTupqyigxO/mp+dMJK5pg34GdrZF2Nsd47YzJ3DL39b2mVkvqCnnJ39fz01zqvA6JXZ3RgdM8Lz5uTUcldKcMm1k/j69J4PNvpu6Yn0IuXXeTc00dcUO2y8GGzZs2Piqw2ru3NxiFWagb3P/jXMqOef+d6gLBnDKIhNK/AzJchHIdlKS67aqk/UtIRyyyIRhfsKqSnGum7iq4pNluuIJ1uzsAmBEwINDENAlCYekcfuL67jmtHE0tEUIx1XDp9whceWpYyzHFNMZZdX2VvweBw0dEebXjGRPZxS3U6I7pvDWpr1Uj8ilLRzHJYuMLszmqRX1XD+rkqiicNlJFbR0x5gwzI9DEAn43DhEga3NYR5/dyvXzqpk6UXTKcpxE1UUfnjyGFyyyOkThxKJq3icEgGvk6F+N3s7Y4wryeHOlzfww5PH0BXNTIz7Q39uJ+aqeGqVuz0SZ970Mh5dvjUtMdQ8xq72dOkKHJ568AOBL6XRUxAG9pC28fmwqy3M9pYw7REj5Oe1DU1sbOzso+/qDyYJbQnF0YFbnltjEVmvU+KFy2uYUprLjc+s6ZO2eVHtKCYN9wPpX4i1wQC3nzWBSFyhsSNCW0ShJNc94HUYS4abOGpYLkeV5rKgZmSfRs1wXGXutFIee2cbP55dOWBj6NubW1iQomnfnybNgbqrB0s37RjkeRs2bNiw8fnRu7nziidXpTX3m/Z9je1RppTmctmJFcQVjcIcF6t2tKNpOpIEv37lUxZ/s4Kf/n09N8+p4ucvb+CEMYWMH5aDKAp0J1R++uJGrj99HF1RhaJsF9tbwuT6nMiiyLWzxrFlbwhV0y1JRiShEImr+L0OXvpBHbIk8KuXN/Bfx47E55TZ2x2zwoBOGDMEj1Pi4/q2Pprvq04da6RdJ1TKC3z4PQ7qW8I8/WE9Pzp1LIIOjyUJ+f+8+ik/OnUsLd0x3E6JvV0x/vzRDs6dMoLzHniXyaW5VhCQOXlYfGIF/9rYxMyqof29zQCU5nt57cpvDOp2Yq6a+1wynzV10xlN4HFKff42qeP5gxdMTTvGvurBj8R+ri+FlI8ZM2ZQYt7a2nqIrubIwM7WMNf+9ZOM9n83P7eGX5131D5/wDsiRlX8qNI8PqpvB+D+eZNxi3DtM2v7NGuY55xWnk91aZ7VYKJpOnleJ+g6v/7nRuZOL6Mk181r65v6bfpIXWYMJ/qPnwdjRv72pmZWbW+jMGdgop+afnagLJJ8g8hg9kUmY8OGDRs2Ph96GxT0dl25//zJfFzfzqlVRVx/eiWyJNDQFiWcUPl4Rzv/MXkYXYkEC2rLiSkq182qRACuOW0c4biCxyHxy39s5PKTKvjpORNIaBrJ/CD+tGI7V506jlBcYcveELIoUJLrZs6kEkQB1jd0MrY4h7tf3cRFx5fjdcpccsJoBGB7c5gPtrZy9cxx3PPaJkrzPFSX5XH1aeNYkHRT8XscDMl2cfZ9yy1v8tMnljCuOBtV1zm+YggOUUTXda6dVUlbKMa3Jg9nzj3LePqSGTR1xhie5+GameP4rDnE/11yLF2xBNF4j1f5ns4o0eR7cdr4of2udh9fUUBhtmtQtxNTzlJXUcCH29q4/hnDHnkg44WaYMDSuscUjVEFPor97kH5ymC5KocrvhRSfuutt+L3+7+MUx+R6AjHub4XIYd0O0LTV7u/mWVDe4SfvLiOb00eTmGOi5iiM2vCUL49ZTgJTSMHndaEnpFIm+daWFPOosc/pC5oRPbu7Y7SFUsQScC8GWUsXmrMlNc1dDC/phyNvlX1q2aOZe6D7wFYnuX9wZyR3/7iev566XH7tO2BXBLzOeUBA4p8zi/l9rJhw4aNrwWyBklm9nscLDmjil+8tIFrZo2jtTvGh/VtHDvK6G/6xcsbKB+SxZyJxXgdEoJgkCIB+Hd9O7IocM1p44gpKs3dMSIJjZJcN7s7o1xwbDkuSeA/H/uA//lONfUtYUYGfIweYuRfTB2Zzy//sYEfz65kR2uEhY+9xx8XTuP3b2zmylPHcs1p43jgjc189/hRAMQSKjvbIlz6xEqroJYqh7n5zPHowFn3LmdKaR63nWUEHimazsPLtzL/uJFc8eQqqktzWb2zg2NHBfhwWysjAl4E4LwH3uWpi2cQihmhO+Zqwavr9zBvehnN3bGM2R7HVxTw03Mm0hKKs6U5hN/j4KfnTOSGZ1ZnDAd6ekU9l50QZOHjH1jPPbJsqyUtWpahcHh5SuX+J2dPoLk7nhYk1Jug72+43+FUUf9SWMN3vvMdCgsLD8ixfvazn/HXv/6VDRs24PF4OO6447jzzjsZO3astU00GuVHP/oRTz31FLFYjJkzZ3L//fdTVFR0QK7hy4ahbR6YLHdFE/3OLO84ewJ3vbKRH506lpufS5em1CabM2OCiBJXuP/8ybgdEivr29K8TsGoRhtfHlU4JIGG9ihDslw43JKV/mXenEvf325V1c2qwPA8Dztbwjxx0XRkSUBEoC5YkFG3ndpgEo6ruJONpP1ZLq3a0X7ALZJyvQ4uP6nCep9Tz3f5SRXkeg9eaIENGzZsfJ3R0B7hw21t/fcyBQuIJlQa2iJ8Z3oprd0xivxuNjR28u0pw1nb0MHVM8dxxwtrOXfyMEQBJEAFQqrKjFEBREGgpTtKrseJxyWT7RH4YGsbIwIeSvxudrSGqSzOId/rJN/nQBKgIMtFc3eMqKJy/axKXlrXyF2vbKa6NJdNe7q4ZlYlsigQjhsa8e5YAhB4bUMTJ48r4s/fO5Y3Pt3LUyvquezEIM9fXsOanZ20huL4PQ7+8v3jkCWBl9Y2snJbG1eeOpabzqiyyPqSM6p4aU0jTV0x8rNc+FwyPpdMON5D+uuCBVx56hirefOKJ1fx9CUz+O4f37MkJjluB9kemSyXzM/+vp4XV++23tuTKwu5/ewJRBIqoZiCzykjiQKSKPDj2ZWcfveyNG6QKi368ewqOiIJVE3n3S0taVKaC2vK2dYcZsFjPYQ+U/V7f8L9DreK+iF3XznQevI333yTyy67jPfee49XXnmFRCLBqaeempYQ+t///d88//zz/N///R9vvvkmDQ0NfOtb3zqg1/FlYjBtc0zR8LnkfmeWu9ojfP/ECpb0IuRgzGqXPLeWzpjC9tawRcjXNXRw99zqNInGyICPOROLcSUT0Bo7Ilzyp4/oivW9OatK/Jw+sZgcj4MReR5y3A7qm8NIksiv/rmRM+5ZznkPvMv8mpHU9uqoN2/eR5ZtTTvu/JryPt33dcECbppTxZxJxdx+9oQDKinxe52U5XuZM6mEh+dP5f7zJ/Pw/KnMmVTCyHzvV3YmbsOGDRuHMwznq4+5/cV1XJjxez/A/JqRXP7kKor8bp58fzsluR52tkQMiYoOY4fmIAlw0fGjcSWDC2OaTlzTkAURhyiArhPwufj3zg58DgmHKHBMeR4lOR5E4E/v13P7WRPwOETiitHwGVM0CrNdeBwSXbEEP31xI1PK8rj9rAk0dcf4xcsb+OuqXfz8pQ14nBLbm8MMyXLx8Y52vE6JCx5Zwcc72pk3vZR7Xt/Emp2dlBf4yPU6aA8bxbVTfvMWyze3cFHdaLpjCqqqc8/cam46s4qz71vOb1/ZhNclEVM0uqMq3VFjDHbJIjXJ9+b8h95n0eMfcu/rxoRBUXVL/rPo8Q+Jqxo72yLc/Nwazpk8PG3sfHV9Ezc8s5oXPmnkf17dRI7HQUVRNqOGZLG3O56xYdQ8dndUYeFjH/DulhYrPPDh+VOpLs3jiidXofYygjCr36luZvsa7jdYRf2r6JB22LuvvPzyy2m/P/bYYxQWFvLRRx9x/PHH09HRwcMPP8zSpUs56aSTAHj00UeprKzkvffeY8aMGQf0er4MDKZtzvU4kEWBudNKubCmvE+V2+0wGkIGsilccFzUisA1SfHS97dbcffGl6LOsaMLuO+NzVQUZvPLf3wKgCQI3D23muv+8omV4gmGd+mKrS3c96/PCMdVfnHuRJ7/uMG6jtTZ9aUnBAGIJNQ+DSZ1FQU0d8f7bSQ55/53+NV5R3HpEysP+Ay5ONfD6ROGpjm0TC3Lswm5DRs2bBwk7O6MWgWkTN/7ZQEvZ967nOrSXJySyI9OHUt3LEEg24Wma6i6iCQKaJpOid/oRwqrKg5RxCmKhBQFp2jQo+buGFPL8pIVTIFbX1zHktlVaLrOj2aOpbk7Qr7PTSimcuPsKuKaRnN3jK17w1SX5fLyD+uQRIH6ljAfbmvjtrMmsLsjwn9OGc7uzggThuWyqr6Ni+tGIwjw5Hdn4PfK3PH8Om44vRJJENjeEqahTWVItoscj4O/La5BFgW6Ywk8DpndHVEee2cbV88cazm9NHXGcMkiWW6DH9QFCygv8DF7YnHa+GmO5x3hdKKb45G5/43NVJfm8WgyCTVVE758cwuLakdx7+ubLclIKK7idgxc6/W6JKaU5fWrL0+1WDTRu/q9r+F++1NR/6rgkFfKNU07YNKVTOjo6AAgPz8fgI8++ohEIsHJJ59sbTNu3DhKS0t59913D9p1HEpku+Q+1WQTtcEAw/I8fNrU3W+V2yGJ+1RtN7F8cwuPLt9qxdqbco0sp4wkwFMf7GRkgaGrqwkGeHeLsf0jC46xfMQXPf4hp931Nu991sq984xrCWS5+lTqzdn1vIfeJ9sj80gyBTQ1IviqZOhB6iz/0idWWlWAcFy1NOUHY4Z8pPij2rBhw8ZXHR3hODvbItbvmb73W0MJqktzWXxiBZIAXofE2l1ddEbjeGQJWRSQAIcoIAJxTeeT+g4coogEeCTZ8CsHirLdmBRQ0XWWzKkioqjGMQTI97mIqxqiKCAA3ZEEAZ+LY8rzcEki2Q6Jf29vZ1ieh5+ePYHmrggluR4SmsbmpjAuh4iqQbHfzd2vbiLX4yAcU/hmZREJVUMUBP703nYaOyL4XBLn/u4dfvnyRjwOiXyfi9+/8RmNHRFuPqOKf21sSkpOJ/Lnj3bQ1BklFFMIxRSumjmWzXu7aeiIcs/cap66eIZVoV76/nY+rG+z3tOaYABF1S3f8f58ymXJUD68lbQAvvYvn6Dr9OsXXxMMoGkw/7i+K+B1FQV9VsBTkeqati+5KjB4Rb0tHGdVfRuf7e3+ylTNj6hONE3T+OEPf0hNTQ0TJkwAYPfu3TidTnJzc9O2LSoqYvfu3RmOArFYjFiyGQKgs7PzoF3zgUBM1VhQU45OurbZjNA993c9gQCZqtzdMWWfwn9SYWrVfS6ZOROLKc5xIwnwjw3Ge2rqyy9MsV/qjioZfMSbQYDnF9eytyvGQAjFVK48ZSzXnibQ2BEl2yWT73PyXw+/z3emlQ7YdJk6+/6qzpBtHH73ng0bRwoOl3svU7hNb/icErMnFiMJIIsCoYTKMeV5iBhkXASimo4sCkZBJ6EybVQAAdCA5lCUwiyDjIdVhSxJRqSHxCOJiBirwKogIKOT5Tf8zouy3ezuijI02w264dQyrTwfUTDOu7kpzNAcD1FN57jRAaKqyoxR+cQ0lR+eMgYJ6Igo1AQLQIdVO9q48tQxZLlk2kJRnr5kBhsau1DR+c0/N3L1zHGIgoCm65xaWcQ5Rw9jVX0b848tZ2iOC1EQ6I4nuOCRD7jz3ElpaZ/3vr6ZumAB82tGWn7jvSvnZkEutTBnIi+lb6o9kuDtTc1MHZnH4hONle3evVaLT6zg9Y17eODNLdYKuNsh4U+u5s+6++1+vdJTXdN656qY6N03NlhFvSOSYNHjH1r7fhV05kcUKb/ssstYs2YNy5b1jWvdH/zsZz/j1ltvPUBXdfDRFVW44slVXPKNUVx72jgAogkVlyzxz3V70j7kqY4s1SNy8TqNG2LZ5uZ9JrUmYorG0ByZmmABErCrPcyv/mEEA4zI91gaMfP8/VXj397UTDih4HMPLMMJxRTD3aWigNvPmmB9ITx98bGEYgn+Y/JwbnpuTcaO8N4BB/vjVW7j0OFwu/ds2DhScLjce53RhBU3n7nBM4DHKSFgOIwIgM8hIWIQ7rCm4BJkNAyXlZimkeOSkYDd3VGGZLkpyHIjAE3J3x0YJD6qa3glCUkUEHXQBIhqKk5BwhTmtoWjFGa7kQAleQ6HYJy7sSvCccEA9/5rEwtqyhFkDK90QEJEAPYkK+lNXVGG+FxMLs0z3GB2tuN2yjy1Ygs3nF7J3q4o182qBF0noWs0dcYo9nvQNZ2jhuciJyv3z61u4N7XP6O6NNewKwwWsOSMKrY2h3jioulku2UkEcOxxOMwmkzfr2dcSQ7QU5DrXZgzq+kmTNnKA29uYdKwXGZPLE6TFDUl7RcfeHOLtbpx7+ubeeW/j2d0YRYd4ThTy/IyWi1mck0bLNwPeirqA9k3mjCTuH913lEUDWKxfDBxxJDyxYsX88ILL/DWW28xfPhw6/GhQ4cSj8dpb29Pq5bv2bOHoUMzm+Vff/31XHnlldbvnZ2djBgx4qBd+xeFORscX+Lnzpc39Jmd3j23Oo0cm1XumKJx4+xKVFVnQ0MnF9WOYvbEYopy3MQUDbdDYndHhGK/h8uWruxz3lyPgxy3UUF4MdlhbnZR/2Ptnj6asYGq8TtaI6xr7NynicHbm5q56bk1lu1R6k1o3qSDBRwcKK9yGwcWh9u9Z8PGkYLD4d7rCMdxOyTGl+Rw2vihfLKznTteXJ+mj775zPHIokD5kCxEBFojcZwOiWxZShJgiZCi4nNICDq4JYMMKzrkeQ0SH1UVvJJMYZZR/VaA97a1Mj1ZTXfqEBdA0EFRweMwyLeRzeFG1KFTVfDJMqoOOsbzxdkeoprCd48PIgvw85fWc+2sSjRNxyEKRDUVr8tJJKEyJMuNLEBLOEqOx0VFUTY6cN2scezpjFKU7ebD7W1MGp6LoukU+40UT59D5uOdHYwtzmbuH96juTtOXUUBS+ZUkVAN2c3Z9xl6+wtrynl42RZOqSyiqsTP3AffY3JpLlfPHMfcB9+zxt3aXgS2dzW9JhjAbBcMx1UuW7qShbXlaeR2/DA/3/nDe33G4tZQnMb2CMW5nn2qfqdioHA/8/lMx+yvWPf2pmY+a+pG1fRBK+YHy2bxsCfluq5z+eWX88wzz/DGG29QXl6e9vyUKVNwOBy89tprnHvuuQBs3LiR+vp6jj322IzHdLlcuFyu/bqOPZ1R2kJxOqMKOR6ZfK/TiKc/BN6YBVlOlsypyhgzb/7eu0kjpmiUF/iIJTwg6Pzg5CAOScIpi3QkE0FX1rexoaGDeTPK+pyzNhhgeJ6HllCUi/64ku9MK+WepA9pUY6bV9fvweuU0poxM1XbTbhkMc3LNFMIUuoN1J8ExbxJBwo4+LrG9x4O+Dz3ng0bNr44vur3Xu/E6pfX7mZDQwfPXlrD1hYjvKepM4pbEtnbHWPZ5mbqggWoms4IjxNVNyrhhVluspKEXBNAQkDTDeMBMKrLLlFGwCDTiqahIjBjVCBZ0YYWRSXHIdGpqHgdxgqvpunEdXAB9R0RhuV6DItFwSDkAoCmW8cOqYZloqbpRNH5zUsbuH5WJXvDUfxeB42dEUpy3EQVEGMKq3d2Mm1UPvGESq7HiSiAqmo4JIGOcALd5cDnlIlqKiMDPna3Rbnz3EkMy/Wg6zpxRUUSBMYUZXPP3GpW7WjnqRX13Di7ClkU+LSpmwcvmEq2W2bhYx9YpP2p9+u5euY4JBGqinMsA4Wl72+nqsRvjc//2thkFdV6hziZcplM0hRF03nj072cPmHoPlW/9xe9j+mURf6+ZnfGYh0YK/qZvM5TcTBtFg97Un7ZZZexdOlSnnvuObKzsy2duN/vx+Px4Pf7WbRoEVdeeSX5+fnk5ORw+eWXc+yxxx4w55X6lhDXP7PaIpJep2RY5P1rc1rj4sHSLPm9TiaX5nL9X1dnfN6sjKft43HgkUUEAdwSCKLEDSmvAXrI8BPvbU8j9XXBAq6aOZY7X97AD08ew5PfncFtz6/tcxOaFfrq0lyuOnUsd7/2acbrM2fjvWOSs90yXVGl32r3QBKUfdWc2bBhw4aNrzYGSqz++cvrqSrx8/GOdpbMqSKUUHDKEve+vplZ44eS45aJqCpeyTATkMWkLXMyKEjVIaypZImGBEUH5KT+WwP2huIUZbt5e3MztcECfvLyBq45bRwCGOQeY9tl21qZNipAVFMZnushoim0dCkU+93oSf06ooCuw0c72ji6NI+V9W1Ulvi565WNXDOrkkWPf0hRjovTJ5ZwTHkeYUWlKNvN1uYQoOMUBXAYDjFhRWXkEB+KpvGbVzex+MQKdndEGZrrJpxQiWsaezqjtHbHmDIynzteXMf508usFetZ44fyn1OGs6crikMSGZbrwSWJNHRG+OPC6cQUlY5wgstOCjL3wfe4Z2615cBWFyzgxjmVNLZHAayC2d1zqxEhjffUBQNcemIFi1LChFL/hqY14u7OqFVU29/xuXfVOsslE4opdER6CqKjC7MA+Kype8CkcJcs9lv06wjHaQ8nuPHZ1X1MKfoLLtpfHPak/He/+x0AJ5xwQtrjjz76KAsWLADgt7/9LaIocu6556aFBx0I7OmMphFySFal/7W5T9X6QP3RMqG/5ggTqU0atcEAOW4HGvDGukbmHDW8z2uAdP357InFabPkuQ8ay1CdUYVZE4b2+YAu39yCCDx18Qz+uW4Pix7/gJ+fO4mYomVM9DJv6tQZ9t8W1/DtB97r9zUNJkE5GLNuGzZs2LBx6LAvidWzJgzlW0cPY869y3j8wmnk+hzJcU6mJRQl4HOT0HScotGgqWMQaRGo74oyLMeNlvKYACSAiKowJOm+clyyd+q608bhxggZInksgGNHBXAAjZEErWqC4hw3I/xGVTyePKYMxHSdyaV5SMDkUoN4X28Scr+bm8+owiUZxFnVdcJxhYeXb+XmM8ajaTouUWRrc5gnP9jOtbMqiakqd5w1gb990sDqHe1cdPxoQjGFx5Zv5eYzx6NoOv+ub+O6WZVsbTZXFGJWMml3TOVP733GdadXUt9qBPc8PH+q1QD58PypTCnLY0i2i/vPn0xZwMtLa3Zzzv3v9OEdVzy5iqcunsH1osi2lhAuWWT1rg6iCZUppbl9yPr85Nj/q/OOoqU7zqd7upBEYb9UBZmq1rXBAAtSTCZSC6L7qjPvXfQzz7PguJH9hjUeCBOJw56U74vvudvt5r777uO+++474OdvC8X7fFlUj8jtdyZ2IP5o5qywIxLH65IRBQHPIF7l5uy4rqKA284cD8AT725jUU05HQl10ETQ9nDCmiWnwvAwH5lx37c3t7CgK2a9F6mJXt1RhSy3zIurG/tdRvI6pX415qYEZTBd1+eZdduwYcOGja8Gmrvjg45PoZhKOKYSjqvkeGQUVeOOsyciYejE1aRm26xqm9CA4hw3cvJnHawGTQks1xUFgywJgBuDZDtT9jGlLirgcjjI90lIycdiySq5gNEsKokCcU1HFAVW1rdz1IhcoqrKPfOqcUqiZdfYpajIoogkwq1nGCnZAqBrOgU5Lm6YVUlLKEqez80Lqxv4cGsbN585HpckEFJUbjtrAh8mdfBTyvJpCcXI9TjIcsuMDPiIJlTe2dLCJzvaWTJnPHe/+ikl+d40YloTDNDUFePG2ZUWCf/7FXV8nFzZ7o3q0lzW7OpgwjB/Gl/wOiWeungGC5IOa36PA6csWhpzlyyS7ZHZ0RruY+Yw0PjdXzjQss0t6PTIdnsXRH9+7qQ++/UuEKYW/VLPM3daab/XA1/cROKwJ+VfNjqjSp/HMlkHpeKL/NEyzQprggGuPW0ctcFAWhXaRF2wgGF5Hp64aDrvbmlh9j3LeGzBFL5bU04M6Ir0fQ2piCkahTn9k/6BXm/qc2YVvHpELose/5DFJwVZVd+W8eauCQZYub2Nq2eOA9KbV+uCBdxxzkTCcZVrDqP4XBs2bNiwsX/oiAxsgRhTNIpdMjo6dRUFOGURWTAILBiEWRIFi3ibtoc6WP7jZhVbwyDW5uNxeqrqEj3k29lrOx2DrCeAXGeP04sIOJO2i6IoWNIZR5J4TynNNc4tSUiSQf7NSn6WnJTTaDpC0oIxkZxcZDkldE0n4HMj6HByZRFzJpYgAXu6I3gcThBh+ijDcnFHS4TH3tnGrWeO56NtbRwzMo+umMIplcYKw73/2sT8mnLueX2TRUzrggXcdtZ4drSGaWyPWiYOcVXlljPGc8vf1hqWxkmYloeiAP/a2JT2N6ouzeWf6/awqr6NC2vKuf+NzVSV+K1j7umMku9zWnzh7U3N/PjZ1cyZVMI3xgzpdzwfKByot2w3tSBakuvhV+cdxWdN3bRHEpYCILWyntp3lnqeweyjv6iJhE3KvyBy3H3fwoP1R+tvVrh8cwt3vfopVyUJ7LJeBPbmM6tYub2NQJaLquIcHrxgCuV+L1FgR1sESRB4ZMExfZI+TeR6HDR19u8h3t/r9Tolhud5eHj+VMvNZWV9G5JgfDHtS2Pn/fMmU12ax3WzxtEWTpBQNPJ9TiIJhR+/sL7f+NyDIRGyYcOGDRuHBuYqqKox4Pjk9zgQBXBIkrEKrBuyD2eS+OqC4WriECVSR97UNXaTqJvyFROZRhA9ua1ZpjL3M0m+WXITktskwAoWMkm9WUU3K/cyRhVdTF6zACjJLWRRSFo5qrhFyXreIQqoyeN7ZONxRdPxup34ZMm6Jq8kMSzXzU/OnsBdr37KD04ew+/e2MzFx4/GKQrs7ozw/ROC7OmMcvOcKnZ3Rvnz94+jO5pgR2uEP767jXElfsvPvD2UoKkrxjWnjeNHmk5UUa0gwo27uyjN9/LAm1us96suWMBNZ1SxKxn4tPT97cybXsYVT66yiHw0YejXU7mESaoHGs8HCwfqXTBMLYgW5bhRNX2f+s5SzzOQHeeBMJGwSfkXRJ7P2adCfbD+aAPNCl/fsJcLZozk6NI8fjzb8CB1ySIbdnciCQLPJePrC7KcPH/JdMKQsbGzt32i6bLy85fWZzxvXXKW2xtms+svXk6fJNQGA5xcWWQ5s6Q2dma5ZCRR4I1P91rXEE70VNcFQWDR4x/y5+8di6LqzJ1WyoU15X2+rO1wIBs2bNg4fNHfinCm8SnbLYMAkgBRRSXLaei40XU0QTCIuCilke1MZaR9jTfvvZ35u0nUHRhVdJN4pzpep8pgVNJJvyQa16oAgm6kDpkETdJ1fMlJhVmhT/VANwk+IuQkt0skt4toOl6HTFxT+dHJY4hpKotqy3GKAjFNJc/n4hcvb+Ca0ypBh5ykv6PPKfOHtz7l6tMqaQ3FqB6RyxNJx5XqEbn85x/eZWFtuZX06XNJTC7N44XVDdwzt5qYouH3OCjMdrG7PYqq68yeWMy3jh5GcyjGUxcbRhv/2tjExzvaOaWyiF0d6VwipmgDjueDhQP1Lhj2Lojua99Z6nn6KyYeKBMJm5R/QbhlkVvOnMAtf1tjkc9Hlm3l4flTEQWhj7Tii/zRBpsVmgT2+Iohlp5r8UlBbnpujUXI/3rJDFRR5MYBGjtNHVZdsIDrTx+HrutcO6uSrpjaV4NVW46A0GcSsmROFff/a3MfOY2h9dpgnSO1sfP+8yfjksU0Pb5LFi2N27TyfOqCBXy6p4sbnlmTdh29v6z7kwgdLG/RQ30OGzZs2DgS0RGOc+2fP0mTRkDm8enWs8bz639u5IpvViCLAj6njEyyQp0ktQqZK94mBu7G2ndIGX4WUh7TSSdcqdunSmFkQBOE9GsWjAq6Kb/RU/a3CDngpGc7s1Ju6tmdgoQGuBARZQFB19EFibBmNJqa20fiCfK9bqKCSnVpLne+vJ5508usCvfS97cDPXLUmmCA2ROLEYBjyvM5eVwRuzujuGSRd7e08MiyrVSX5rL4xArW7OxA0XSuf6bHKc6slhdkO7n93uVp76lJqjv6CR7cn3Cg/gqi+9J3lnqe3sVEgNJ8L4XZLtun/KuA5u443/nDu9x57iSunTWO7qhKlluipSvOjFH5/Pj0SqIJ9YA4f+zrrNCU1HidEieOHcK9r29ONlpMQxUEdrZFBmycufa0cZxaVcTaXR2EYgo+l4SiadxweiUA3VGFbI/Mqu1tLF5qNEWYH9CYopHrcRDIcu6XRaN5/anLTXXBAC3dMUvKMmv8UC49MdjHWimTF3smidDB9BY9lOewYcOGjSMVuzujfQi5CXN8qh5hpFPWt4SNmHlA03VcgmDpuU1y81UhOcIAz/WeGPS3be8qvVmRN3/OtJ0To2quAXHNEO1Ius7eUIwhWW68yfAkgJCiEvAZgUmt3TGOHzOEuoohKKpGVYmfJ1OkJ5CuI8/PcnLhox9w21kTjHCjHDdVxTncM7eaPZ1RJBFGFnhZsa3VWO3WdEv2sqGxkxXbWtKkSamk2tuPkUV/1sep7ivwxQuivc9jTkjM4xYfwLH9q/J5PWzRGU3Q3B237IN6o2Z0AUeX5h2Qc+3LrPD4igLyfE5OqSzk/BlltIcTeJ0SSy86BlGQuOnZNcyd3jcMKBU72yKMyPeAIOCSRTQNzrhnOeG4yu/+azLf/9NKCrKcPDT/GKaU5vH25maLDFtJX82hAc/RW+tlXr+5FFYTDHDZiRV4XZIVZCCJAose/yBjY2gq0c80I+5Pj38gNeiH4hw29h+6ptHY2AhAcXExorivC9U2bNg4lOgIx9mZ1B73h51tEWsl+OUf1iELkNA0XKJoVYhhYBL8VYaCQZoTSemN6Z2eKpNBU0mIEmbUk/m8So8LjCmnETQdNSlVUTXwyRIRzSDfWtIZpjkUQ5YlPA6Jrc0hrvy/j40k0GCAJWeMZ2tHlJrRAWZWFaFqOo9dOA2fS8ItS0gCOGSRn/19PTvaIlaa58iAjxyPA7csUux3s7crhqbDO5+18Mt/9GSW1FUUcNmJQW55fp31WGpfWU0wgCT2/9c0JShNXTE6IgbfyXbJxFSNpRdNP2BWyIfKYtkm5V8Qg1WvD2Sc+2CRsU+vqOeX505CAK4/vZJYQkUQBJ67/DhcokRXVGHu9DJK870sPimYsWkGjMbOLKdMYZYTQRDY2RqxthuS5aIgy8l3ppUSjSv8eI6RSNYaihPIcpFQNRo7ogzP8w74WlK1Xub1P/V+PbMnFPPw/Kms2tHOwscNMn7lKWMozHGjow/oxx5TtH5nxAPp8Q+UBv1QnMPG/iPa1cZVT+/B6XDw6GUzGTZs2Jd9SRa05IShsbExfR3aho2vIVpCcYZku/qYA6SOVe5kgmZdMIBLFlmxrZVpI/PTKsYHSpLyedH7GkwteW+YLjCmvjyW3E9NEvJEyn7mhCOu60iiZFXA5eQxQpqKKxmAZLq9AKiiQGsohkOW6Y4lcGeL7G6N8f72Vh5ZtpVfnXcUlz6xEq9TsjTid547icIcF/9Yu4ez71tOdWkut581gTn3LEsbg5deNJ3xJTn4vU5+cs5ELv9mhTWpeidFupJqNZjaQ9YdU1i9q4Mcl8zTl8ywDCVMJxRzX2GQ78VQXOW2F9Yd9BXqQ2GxbJPyL4iCLCd1FQUZyVjdQYhzT52tmbNCSRSQRIFfnXcUnZEEO1siPPj2Fkv/dd2sSq5/Ll1DXptBh20+PiLPg6KpbNjTxeVP/ZtfnXcUYJDn+pYQf/7ecSx5dnWa9rsuWMClJ45m0eMfEo6rLD4pOIBFY4Ah2S6e/O4MwnHFiuydN72MPZ3RtFWH5Ztb+O+Tx/DAm59x4+yqAd+bUQW+z92l/UW9RQ/VOWx8PrhzAjidX70JUWNjIxfe9w+iXW14C8u+ktdow8ahgq7TxxwgtWdoSmkeuq4bK6knVfDJznamjMxH0iEhGITWbLCMg1VJHggm2U2tsu/L9pkeN7ljqjOLSk8V27w2sxqumI2oycdcmk5cFIhrKqIoomvQpWl4ZaMqHtdBSu7TkXRjUTQdTRSQMVYKwgkFhyQhajohTcMtiig6RCIJQnGFbJfM/3t0hXXdfo9xBaYkozYY4LazJrCrNUJtsIBTq4r457o97O2K9SmKtUcSVrHJ/Dc0x01zd5xst8OSGaXyjNQeMnPFQ9F01jV0WE2kpuzF5AanVA3F65QzEuwjbYXaJuUHAJedGETT9T5OJpedGDwo5+tvttbUGWVXR4T7/7WZo0rz+MtHO/jvk8dw+/Nr+zR1LsugwzYN+2Vg3iMfsiM54zWbLRfVllOY7eLHz/ZtEn17czMaunW81A7l3l+w82vK+c4f3uPpS2bQFo5bkpWlyc7u3uiOKtxy5njCcZWH509FEIQ+1ZPjKwoo9rv7vfkOxYrGoVw1sXHkwO0vQLdL5Da+5ugIx9MME0yYY82NsyuZMSpAJKEwe2IxRdkuirJdliNJqmxFxSDk+7L41FvuklrVNo+rp/yT6XE2sYKDkmRaTtk+rKnIopTmj64kn9M0HUXEasrUMCYkcVEgoim4RZnH3tnG+ceW4RJFEppGWNPxyhKCDiFdxy1KiDpookBYVZEFkXhCxSVJxBRjlfyTHR2MK87m4be3cMk3gjz0tpHcaaIm6V7z/OU1hGIqOR4HuzsifPuBd2nujnP/+ZMJxQzzhZnji/q8dy5Z7FNssvhJUzfffuDdft/31NVyky88unxrr2JfT+rnS2V5GQn2kbZCbZPyL4jm7jgLH/sgrdHRNKJf+NgHPL+49pB9IGIJFb/HydzpZQQLvTil4TS099/UuWxzC9fOGkdVcQ5+jwNJBFmA+Y/3EHKzql1dmsfqXR1MLcvPaPUI6bru1A7lG2ZX0dgewe9xWHaHk0tz+cfaPX206OYSlwmvU6KswMt1f13drz3W1LK8QZs4BtLjHwhv0UN1Dhs2bNg4EmE0ePY/tlx96ji6ogkiCQ0BgQ+3tzGjPN8gy0JPuE9qRdok2iahBoM09ybVWso/M6nT9BA3/cVNsm4G/JiEPTXVU045vyNJ91MTP6Xk8wk0XEhomk4ieQJREJJe5DKqpnL+sWXGuQUIx1QcknE8VdeJqBo+UUIUIK6p/Ht7OyMDPra1hCgN+BiS7URRdYJFWXTHFL53QpAH3vyM7x4/mp2tPWP7kjPGs7U5REmum8JsVx95it/j4N0tLdQGA32ySsw+sHOO7pEDpjqP5fv23RkllS9ce9o4drZFcMkiQ7JdVupnfwT7SFuhtkn5F0RnNJFm69cbh+oDsb0lZPmOTxqWw33zJtMZVZDEgYOBdrRGeHJFPZeeEKTE7+bSpSv5tKkbSK9qm1Xq/qyJTGRK8JxWns+ixz/k4flTk1ZWAa6aOY62UJzf/ddkhud5kASBHW0R7p03Oe1al8yp4qZn12a0xxIFgZeuqCN3kChe6F+Pf6C8RQ/VOWzYsGHjSMOeziiKqnP/+ZMz6sjB8CCPxlWcssiUkXk4RcOgW0muM+mCYGmsw7qOnLQVjGEQbRHQUxoowSDL0eTzJhkyybc5kpkE3STWYso2JjEXRcP1xTxXVFORRMOCUEkJBQJjMiCIEiFNxSNKxDUVV9Ka0CMaTmdS0lddwKiqZ7sciIIOOkQ1Da+jJyyoviWKqkNhtosh2S7iqkZbd5xsrwOXw2je1IGTxhVS7HezvTnMn793LG98utfSi8+ZWMyUkfl9pKzZbpn1DR3cftYEzkupeqf2sRXUGoW43s5jXqfEIwuOQYe0glpdRQHzjxvZpwCXmvhtylruP39y2jVl4lNH2gq1Tcq/IAb6QHidEnleJ581dad5VgMH1Md6T2fUIuSzJxRyzawqbnhmdVrVIZOXN0BZvpefnj2BmKohAnf+x1FJG0SZF1c3pm1vrgIMhEzPK6pRo8hyybxweS2arvOdP7wHwN1zq/n5Sxsyhhg9vaKeyaW5/Vorvr2pGUXT9/m9OxTd04eqQ9uGDRs2jgQ0tEe49s8fp41XdcEA986rZvHSnvFH03UaO6NMKcsjGlfxeB3s7Y7iczlwyaKh0yZph5gSvGPKWADigmDpzM3tTcmJ+ZiMod1GMAh2qoTFrKabVXQFIEUbblbrBcHQd2u6jpCS5qklZS4ikJUk7V5RIq7peEQJQdeRxR6LQrMSH0koeByyQdQFiMQVspwye0MxinPdlA/xIiLQFUuwdlcn08oDhBMKTkkkFFMIx1Wmjsznvn9tYt70kcx98D0r4t70CN/d1hPcU1dRwG1njiemqFx/eiWf7OrgoQuOoaEjYikBnlpRz+1nTcDvdWbUdYfjKgsf+8AorM2pIhRTyHY7yHLL3PjM6oymDb0r6IOF/8CRt0Jtk/IviP4+EOYs8cZn16RVeU37n4WPfZCmh/4iXcKtobhFyK+bVcV1+xAMBD0z4bZwlEjCSOS68+WN3H72eF78pJF/17el3TjmzdhfWmldsCDthgLjJltZ3wYYy26f7GynoSNqNYM+unxrxmsVBaNxtaF9YHuswVYiUpfTslwyTkmkO5Yg+yCG+hyKDm0bNmzYONzRExTUu0epBRC4+PhR3PXqJmqDAfK8ToZku2juijEsOVb6vS6cSdKbqg3PVCpTSSc85s+pEhfzf1noIcSZfMDN40sYFXp3yvMKQLJK36FpuKQeH5aPGjuZWOInWeRH1Q03FTlJ1HVBsCryUVXBKclENA2vUzYCkTSNlq44w3I9hBWFPJ8LSYCEqtMZieNxykwuy6e+JUx+lpOWSJwcjwOvU2Z3R4RLT6wgHE/w+IXT8DolXA6Rna0R7nrlU75/QpA/LppGnteBrhsNo6+sa2L1znaunVXJS2samVDiJ6ZoVI/I5ayjSix/7v503eG4yvV/Xc1rV34jzRr61rMmEFMyu8ileqDva/jPkbRCbZPyL4j+PhBL5lRx3+ub+8gu3t7UjKbraeT4i3QJd4TjdEUSTBqWww2zquiIKSysKef86WV9lgFTNd91FQXcfMZ4ZGDD7hAjAz5e29DE25uaCcc0xhf7qQkOQaenir1qRzvrGzq4MHmM3m4u158+jv/4fd8lriueXGV8qXqcSEME7nhxPQDVI3L7lf28vamZ7qjyhZam+otqvrCmnLkPvs/Usjw71MeGDRs2viTs7Y5xVGkuC2pG9rFAfHtzMz84uYKPtrdx+1kTiKsqu1ojlOZ7LcLsSpJZMIhyFCPWvrcFoUI6UU/Vkospj2WSrZjbmFpxMWV/gZ7qfGozaExTUJBwCEbVW9N1wrrGUcP8hq5c19EEAT05FTAnBAARTcWBiFsyKuNeUSSqqDhEkaiqMzxJyL2yTFhRQBRxiAIBn5Ofv7yB0YXZfFzfzq1njcfrlGjujiGKAp/tDfHe1lY+2NrK0aV5PQYPwQBXnzYOQdBRVI1YQsMpi+xsizJtZD4njStkT3uU376yKe1v98p/H2/9vL+67pJcDz/71kTqW8MIgoCq6by7pcVamd/f8J8jaYXaJuUHAJk+EJqu71eipdnEAPsnbemIJMjxyjw0bzIhXednf18/oGwlyyWz9KLpFPvdJDSN9pjxdZCX5eSBN7cAxg224LEPLN/SG2ZVsr01jNchcXJlEXe/9inVpXlpCZ7Zbpllm/dm9BqdUpbHrWeO59X1u6kozKG6NJflm1v6BAj1Rlc0QXmBb5+Xpno3mdz4zJpBo5oPR8skGzZs2DgyILCqvi2tOJM6Zmk6XD1zLM99vItTq4Yy1O9GFgV03dCHC0kvbpNMu0kP0pHoIeS9vcNTA3lSfzb/VyGtAu+ih7CbDaUkj6+iI2Cmieq4RdmqwEc0Faco4RMki7RLZvKoICAIPWRe0nVkQUQSBFRdRzebP2XD+nB7S5gsl0y+z4mq6ZYv+Ufb21B1+OHJY2gNxZk9oRgNnVXb2ynMdvH4u9uYN72M19fvsRI3j68YQo5bZmV9myUnXVhbzrGjAiiajkMSyXLLfOcP71m2yKl/ow+3t+FzGTaF+1s86wjHLfOGVH/0X513FHleB2UBH9GEul/hP0fKCrVNyg8Qen8gVm5vHXD7TIS0PRLnlufX7rMB/q62MJ3hCEO8HmLATc+u6bMM2JuEZrlkGjujzE52WdcFC7j5zCr+uW63JVUxI23NxouZ44usxovUG8jUmGe5Zf4z2QzqdW5mYW05M8cXUVWcw1++fxwvrm60urrN/RfWlDMke2AXWbdDYltLiNvOmsBNz60ZcGmqd1X84flTB4xqNidFh6Nlkg0bNmwc7ugIx7n1b2sGlFq6HSJOWeSTHe2cffSwpIRDJ66pZMlyHxvEVGJtkmYzXCfVkUUFRB3igkG2e1fNEyk/m4+nOrbEUn42JgRJkq3pIPbo2feEouR4Xazc0Ub1iDzDTlHTkUTBmgiYvwsYoUHmSCQLAjHNIPu6Du3hBMNzPXidEnFVRRIFuuMJ7n39M66aOZaEqqFqOkU5buvno4b70YBrZo5D1TVOHT+UD7e1MiLfx7tbmjm10rA5vGdutTWev5sM/ZlSmstRpXmE42rGsL9Um8L91XWnyl0yGWW8duU3GF2Y1edYXwfYpPwgoKE9QjQxcBU4U0NkLKHtswF+RzhOeyhCbpKQ72jr3/rQJKF1wQJUXU9r3nx7czO3Pr+OH506hkcW+NndESE10bYmaYVk6sh730A1wQDHjMxPI+puh4Si6vz5ox3cOLsqbfvU/RefFOw3eKk2GOCF1Y3c+/pmvE6JJXOq+PHsSiJxFV9SG97UFSWcMKr/Nz23Ju04g1XhU58/3CyTbNiwYeNwx57O2IBj1qUnBJFFAacksuSM8cRUlVBEwe914pVky4LQbMBMtSM0SbiJ3l7lMqAmCXmq24o5KqeG/5A8XmrIj2YF9vRo1VVNRxeNRtJEcpuAz01UU5maJOSt0QhZbo91fB0sPbmWPIbp5GL6nAsaaDoUeJ2IokBEUfE6ZGLJgKGFteXouo5TEtnRHqEgxwW6jiAIdEYTDMl28/c1Dazc1sY1syr5d30b0YTKxzvamTOxhPICH/f+a3Pa5KguWMCFtSNZvHSVZYv88PypFPvd/H3NbotDmEWt0YVZ+6XrPtJsDA8kbFJ+gGF2IR81IrffhsjeDQxgaLxXbMtcXe9dze0Ix2kORfF73MRVnd2d0UGtCgFuPWs8337g3T5dz29vambBcSNZ9PiH1AULGD/Mj9cpMbk0l6tnjmPR4x/w83MnAfRxSVlUW46AwEPLtvRJ+Lz5zPE4BIGlF02nPZLoo3Hf0NDJHWdPYMmz6VXw3noys1nklMpCbj5jPNc/szqjxdI7n7VYr21/XGION8skGzZs2DjcMdiYJYsC2S6jGv5hfRtTSvPQXOBI2guaFoSme0qqPCWVhPf3uDkCmCQolYj3bvKEnuq5hGGBaFbXLemLaDiwJEjXl3uS9oadqkKW2wOajioK6EkCHtNU4oqOzylb+2i6jlM0fMxdssiq+naOHpGHqhlku7EjQlGOBw2VfK+TuKqhozPE7zIIumx4mHuyXbSFY3yjopBjRxXQ0Bahvi3Cy2t389260by8thFF0/nx6ZXoGEF9kiiwbHMzi5caMffza8q569VPmTe9jKbOWJ+qtvl33B9d9xfpFUuVqR4I97qvGmxSfoBhLst8tL3NSrTsPQO99MQgix7/wHrMTP98f2vmqgH0zBwb2iM88tYW5teMJKbqRBMq7ZHEoCR0eJ6H+Y+ssHTrvWFWjt/e3Awv6zx18Qz+uW4PbSHjBjCN/U0d+ciAj493tLF6VwcrtrZmTPi89fm1nDGpmGv+0qOtrwsGePbSGhraIxTmuPA4pLQb2e2QeKGXFaOJscU5XP/XDJ36GZpnB3KJSZ0UHY6WSTZs2LBxuMPrkgZ83u91EFFVHIJIdWkemqaT5ZDSPMOd9I22743+Hjf3M0l4qg85Kf9ryaZM81ipJF/RjeCiuGbo2xX0pLrcOKBlgwh4JRlJB1U0GhtNy8SEhkHINZ24riHrIp3hGH6vi5iqoaswuTSPcEKhI6KS7ZYZku1G0zXawwkKs1y4ZZH/engFpQEv1aV5rKpvo7o0j+oRuQzP97ByWxuFOW7LOaXE7yaaULnvX58xpSyP8SV+rvvLJ9x57iQ8TonJZXk8fckMFFWnI5ygqsTfb+K2KXc1/mb7RpA/r41hJvOGL+pe91WDTcoPMMxlmdSEKpPIjsj38Nr6JlZsa0nTcJnpn/ckSXwmZLsd7OmM8vt/beK7x4+mvi1CrsdBZ1QZ3KqwogCnLFopnZmQSurf3tzC1RhfBH6vA69TSpOd1AUD3HLWeKaPCtDYEeWBN7ew+KRgmnxlZX0bT62o5+qZY3l4/tS0x3/+8nqqSvzc+/pm64Yy9WO9m35SMZBbS+/mWTO213zORKoe7nC1TLJhw4aNwx0ehzSAvW4ApyRa0o6opuJORtanpnZCenJnJqTKUnoj9Tj9bScKAqliSFMeY8pLzJquBjgQLC27KxlmhGjoxJUkOZcASRSQkmRfEiCUUPE5JHTVkLDkel38z6ufct4xZQzLdbOzNUxY0RiW68EhCayqb2dyWS45bpnuuMKCRz9g7NBsLqwp56n367mwppyl72+nxO+mtTtOYY4bMDzO/R4HQ7JdNHZEuWduNWUBL2feu5xwXOXyJ1dZcfe93dUWZEjcrgkGkMSB3v3M+Dw2hpm80OGLudd9FWGT8gOM1GWZ3vrr+8+fzF2vbsq024CoqyjAIQlsb+7m4iQh74gkkt3REss/a2bdAFaFd5w9gQ2NHfslp9nZFuHSJ1ZSFyxIc2+pCxZw1cyxNLRGefzdbXz/xNHcO6+aR5ZtTXutJ48bwtLvzuD259f2cYO5sKYcOVl56H1DDbSsFVcH1omnPm9OipbMqeKWM8ZbgUhOSaQjEuf5xbWHrWWSjc8HXdNobGwEoLi4GFEceHXJhg0bBw+yILD4xCDQt3By6YkVOEQBTdcNz+8k+TVlKmaTZW86mOmxge7yVGKfup15nFS9OvQ0kwoYshQNiOlGo6YEdKgqHklC0nRiZsNn0otcT1bOxaTziiwIrNkbwimLlOZ56I4nEEURWRKIaRqXf3MMDlFgV1uYvCwXRZKIomvEFY1jRuaxtytCrtdNKBbn8YXTiCsa0YTK3OmlPPH+di6uG00koXLZ0pXcM7eaRY9/mPE9+OOiaZYjWu9iIkCu14FDErnr1U/TVq/Nsdwk5aaspCMSx+sy3jFd1/E6ZXI9fVO399fGsD8vdDiyDBtsUn6A0XtZJtWtpDBnYLeR4XmePks6NcEAV506lt+8spHrTh5LHGOmKwoC2W6ZhvYI6xs6mDe9jKXvb0+zKvR7HJTmefjHml385rUtg1aOU2FWzt/e3IxLFnn2shpiikpbKEE4rjI0182/d7aT53Fy1yufsqwX2R9X4ufW59f221l/1alj096bT5u6yfc5yXLLnFJZyCvrm/q8P8X+gZeninPSn59alscJY4ZYAQc98A14HBtHJqJdbVz19B6cDgePXjaTYcOGfdmXZMPG1xg6hTku5kwstsYslyzS1BmlMMdFNElwRbCq5c5ktRwyV8f3t2ZrepH33k8AFLOSnXwsTrovuZLcRkpu060peCQj5AdRAE03XFpEAVdKtV1JSl0aQjGKctxkuyQiqkqW04GmGcdri8QJZHnoiid4d1sba3Z18OPTK9FUHY9T4tevbOQ/jylDFyAUU/l/j6xgSlkeN58xnmhC4Ycnj0EUYOHjRkjhQMYHiqqnFfTMYqJZHf9/D68ADDec86eXAQYHeePTvTy9ot4K+esvE2Tp+9u5+PjRFOe4yfWmk/P9sTH8ujSH2qT8ACN1WebDpK780eVGFXnxScF+q9XHVxQwNMfNPXOraeqKUd8aBmDD7k6cssCPTx5DWIAbn1ltVZ5/eHIFm3Z3cc1plfwiKQkxJSS5Hgcj8jw8+NZm/vj+TgCjcjy7khtmVdIVU/oY9ptIrZx7nRLzZpRaFW+TSB83KsD9508hrmocVZrHR/XtaZaKp1YVUT0it98Qo+tniWnvTer7cMfZEwDSiPnxFQX43fKA1X6PU7SkMiMDXobleo6ImbONAwd3TgCn0/5M2LDxZaKhPcL7W9sYNcRL+ZAsfC6J7qhKllvC55JJqCrepOWhBMQ0HTnpyZ3aiHkg1rpSEz3Nn1VATlommg2d0ON7bgQEqVYzpiKAR5SRk9cqiAIRXbMmFWY4UHdSI9/cHSXP6yKetC78n1c2cdXMsexsi/DUB/VcPXMcqqYTjmucXFnEN8YMYU9nlGK/h4iicMVJY5BEw5XF7RS5d95kVta3cea9hvVwTTBAddLOEAwSnQl1wQJrbF5YW861p41jZ1sEt0OiIMuZVh2/9/XNFtG+4JEVTC3L486kAUQmWYk5TleX5nHP65uYPbEYQRD4xpghn0v//UWaQw8n2KT8IMBclmkPJ7jx2dWsqm9n8UlBppbmccakYu54YX2ah3ZdRQE/PWciYCzRtEcSyKKILMCZk0pwazpRQeCGZ1anEdI/vLWFe+dVc/erG5k3vYzCHBfdUZWhOTI5bpml79dbhBxgcmkux5QHaGiL8OQH2/nRqeP4uL4t45KUWTm/+PhRPLpsK29vbqEgy8lD84/h1//Y0G/YA8Ddc6v55csbBgwxCsfVPro1MJahbnx2Db887yium6WkLWtt2dudUaJjXvP21jAX//EjwPA5tQm5jcMNtsTGxpGOjnCca//8MR/Vt3PfvMns7YoyakiWEaKjQ45bxiX1NHQmwPLxNjXlcGAIeeoxejuzJJJuKqbloYQRBIQo4kAgW5ToTBJzEdjZGaE4x0McFScyruS9qyQlOOFkKidAYZYbVdPxOSTaIjEuOzFIa3ecPJ+TE8YUous6ogCKqqHpkOWS8TokErrG7vYYQ/1uHAhEEip/ePMzXt2w17r2THH12RkKWjXBADfOqeSc+9+xquPVI3L7ZJL89ylj2NkWYUiWC6cs0tod57nLaijMduH3OvmsqbtfWYnZ63Xv65stOcy1f/mEH8+uRBIE6xj7gs/bHHq4wSblBwl+r5Pm7jgf1benVYS9TolLvjGK608fh46x9JTlkuiOJQjFFV7bsIdxQ/1kOSUKc9xE42Fweqlvi/QhsOG4yuKlhv6r2O+hK5og3+fA55BwAfOml3Jm9TCL2HocEl3ROJquU1cxBEmAa0+r5BpBJxrX6IwmrBROk6jXBgu469VNeJ0Sjyw4hjtf3jBg2AOQkWz3DjHKdssZK95gEPO2cJziHLfVANoRjhNJaH2aZ80m1yueXMXTl8zA65SYWpZ3xNygNr5esCU2No50tIbiLKgpZ+50DVEQCGS56IwqRBMqoZhIeYGPvd0xirJdKBo4RcGqig/U1DlYw+dgSN1fwUjXVARDWR7HaNZ0J6v1YFTPvaIxeejSVEpyDLtDr2hU+FXBmEiENBWPJJMlSQZBFyGclOZs2hvCJYsMz3NZ55443I8oQFTVGJrjQdd1gyvEFXRVxOuSkGWBbc1hLn9yFU9dPIO508uIKRpl+V5eWtvjI27aBS987AO+M63UIsam/KSxPWqN9b17y8JxlX/XtwFYRbiaYIDLT6ogyyX3WDRHMju6mTClM5bD26ZmdrVFDAvmZGPnvlTOP09z6OEIm5QfRHRGEyysLe9DUseX+PnJ39f3mbUuPjHIiWMLOfd373Lx8aOYMjyLkUP8dMdVZFHgpR/UkVA1LntipeWkYs5wjchcB1kOCSfQpijMe9CwQPzdf03mrU3NaSmcDR1RtreEWfCYYc24+KQg/65v66MNV1TjK2hhbTldUaVfIp3qfjKYQ0ptMIBLGrjOsWVviJ++uN6yOmrujvPOlhamlGZ2YKkJBli9s4Mlc6o4dlSAbS0hskLxI87D1MaRD1tiY+NIREc4nszUUBjqd+OWJXa0hvnzRzs4d8oIrvq/jwnHVf7vkmNxOyT2dMUoznGj0BN3b/6c2phphv/0R8hTHVb6Q29CLwOCICTlMkn3FEBI6szNCYKOUT33iBISEEbDgfGzgOHQ4pZkFE1HFgXQQUTAK0k0dUWN98EhEk4oOGUJSYDlm5v5yUsbqC7NZfGJFRT7XTR1RslxO+mKGBaIK+vb2NISpro0l3+u28O9r2+mrqKABceNtOLq/R4HxTlu5iQlLb3lJ9WludbrrQsWcNmJQRb2smq+euY4ZAmqinPSnOKmlOVxx9kTyPU48DoHppFmf1qqw1sqQd8f55T9bQ49HGGT8oOIHLejj41fJpIOPZXkOZNKuPj4UfznUUXERZnreklWaoMB/rhoGhc8vCLN4jDLJeNzGYT8ne0tXP/sOmsG7JTEjET24flTrZ9TLQRNYu51ShRkO3l4/lR8TnnQMsRgKZomFtSUE9cGTzxNdWbpjCZ4ZNlWnr20hltfWNtvs+rS787g9Lvftl77keZhauOLI1UiArZMxIaNg42G9gjX/vnjPpLGxScG+e9TxvLbVzZaq6hep0RC0wlkuSwC7sAgxabQ0iQuvZM7M6G/582KtymTiWEkfJrPmU4rPZaHRhOmgCGz0ZI7e0TJagrVMhw7oqh4ZckI/hGNx3Z3RvG5HbhlkWhcxeWQcIpGAueYoTn83yXH4nEasphoQiU/y4WiahRkuWgJxcjzuVi3utEa92qDAZbMqeLs+5ZbmvLFJ1awoy3MX75/HA3tBlcwV5WnlOay5IzxbG0O8fD8qbR2x4kmVO6ZW43PJROKKaza0c7/vPapZV+circ3NbO5qZvH3tnGjbMrB3V2qwkG2NMZpaEjCqQT9P11Ttmf5tDDETYpP4goyHKyrSWU9ti+eG1PKctBFeU+GnIwCPOSZ9dw3/mTOfPe5YChSc92GZZR1z+/hlc3pKdj9rY7hMxLVaY05IbTq9jRFqaiMIubn1tjfZGmkvhMGJHvQdcH3AS/x8EFj6zgfxdN61cflnptb21qZld7BE/SK31rSyjNYSZVvhKOqzS0R9I08keah6mNLw5TIpJTUEy0o/mAyEQ0Wwtuw0ZGGBryvqFvViFqYjH/MWUEYPiTux0SWZLAii0tHDsqgACWv7dpiwg9FXLoW+keyH/c3NYk/AogaCqI6fRdpiex0/hdoFtTEDEItKrryBjVdFkQUHQdjyhZlXMRg7C3RGOoGrgdIk4EwppCIMvF2oYOJpT4Wd/YyfA8L7k+B39fu4f1DR1cO6uSl9c2cvTwPJyyiMcJbllCQ8ftkHA7JX548hgaO6I8eMFURuR52NES5lfnHYVLFtnTGSWatEO8f95k9nRGGVOUTVWxQfhfWrvbIvC1yYr43Affo7o0l+rSPKvyPv+4kX2c2UzEFI23NzXTGooP2Ou19P3tLD6xgmhC5Y4X12e0YD6YzimHWwKoTcoPIvxeJ8Pz0iu0g1WTNV3HKzvoSrqUZMKyzS3ckJR/mD7kMVVlw94Q72xps7arDQa47awJ3PHiurT964IFzK/pe7P1WCEVsHpXB396d1vaF+mahg5+es4EipLJYKmuKlNK8/jH2j04JKHfbapLc3nj072E4yo5bkdGfZh5I1/3l0+sQKKuqEK2W+Zvi2uQRIFL/vejft+/TMmmR5KHqY0DA3dOAG/ekC98HJOMNzY2csNfPwGwteA2bKSguTueZmyQCrMQVZjjoqkzxs1njkdMlqKnjsy3PMGhxy/cJNxmiI/ZiJmK3k2bJnoTdHNfPSk/MQm7COiajiIK6JqKIErImo5TlC2yLybTPAUgpBpNnCKGzjyiqUgYZg1+rxMRQ7qi6TpuUSaqqhw1PJdQQkHVYWiOm+buKLMnFnPe5OHUt4Q5bvQQogmFCx5ZYRWa6ioKuP2sCUQSKqF4ghH5Xpo6o3y4rZWqEj+yLBKKqzR0RLnjxfVUl+bS0BGhMMdtSVYW1pRz7KgAtcECNF0nyyUbkpRk9bw9HOe4UQFKct2cfveyPsnaJsyxdvlnLWxo6KS6NI9FtaNwSAL5PieSIKDqGj88eQz/2tjEA29uobo0N6MFs9sp0RE+8GP04ZgAapPyg4yhOe60inAm0piK0nwv3XGVzsjAM8fuSIInLppOaZ6HG575hLc3t1JXUcALl9fS0h2jK6aysr6NXa0Rqkr8nJ9sBCkv8OGWRWbf0//N5pAEjh0VSKvoe50SE4f5LScWEzXBAA/Pn0qWS+bCxz7gF/8xqd9togmNy5aupCaZ1mbqwxo7omxpDllV7+v+8gk/P3dSH7tEU+P2zXFDeC2l29xEXXIykQmhWOKwmzHb+GoitSpukvFoVxvewjJbC27DRi8M5i8dUzS6oyoBnwuXJKLrht2gRzI8yeMYJNnUdff2Kc9EYqxRNtmsaRLu3oQcegKCUpHA8BcXAClJ2BOiYFxXsgquoiEioWs6HkmiJRw1wnwUFU0Hp8PQnoc1FVkQkQQBXTNSNT2SRERREQWBGeX5KJpOrs9FS3eM1TvbKQ346IokaOyI8MeF0+iIJBiW52H5pmZOv/ttppTlsWROFQ1tEYbmuikv8PLRtjZufG5tD4EPFrDkjCpeWtPIHS+uZ0ppHrecNR5FNQKIEqqGLEk0dkS589xJrNrRzs9f6knbfuOqbzC5NLdPnxmkr2Y/smwrz1x6HHe8uD5tvD6lspBbzhxPOK5yTFk+Uy/Iz2jBXBcMsKstktZDdiBwuCaA2qT8IKN3x7Cpr8oYLVxRwMrtbVz/zBr+/oO6AY+b7XGQ5ZT40f/9mxXb2gFD53Xzc2tZWDuShY8Z6V1V509O65y+aU4Vf1/TyJTSvIzVi7pgAaqm4+jViLmwtpyHl2XWwouCwIxR+XxnWmn/2wBTRuZbM+W2cJwyfNZN8dO/r7cmLotPCg6gu9/AtaeNI6ZoaV8WRgpckFhCtbzKzSr9UyvqyfE4WfzkqsNqxmzjq4nGxkYuvO8fuP0FtO/chLewDNdgDRc2bHxN4XUOrPp2ySI5bsPGV9Th1699aoTf0FPJNkmzTF+pSia/ciuRM6kB10jXlifoka+oKfubFoyqrqOmBAeZIUNuwdhS1XUcyYq4U5SIaSr5XiPK3isbjizRZIXd1L9o6CAY1xHVVGRRxCH0vJJ/72hn8ohchmS5+Of63azY2sZ1sypRNI2ibBdhJcGk4bn85fvHIQBtyfCh/3rofcJxlYW15Tx4wVRkUcDtkGjujtHQFqGiMJuHLphKllvmN//cyPxjy+iOqxmLZ6lV7JZuwyVHZ+DAwXBcpbE9yk1zqhAFIWMDplMSaeiIsKqXBXNdsIALa0ciIhxwsny4JoDapPwAYaAqrCQK3DC7kssjCj6XxLenDOe2F9bxako4Tl1FAZed0NP9rKgatcFAxllqbTCASxb56793WYTcxNubm7lm1ljr9xH5Hu4/fzK5XgdZLpkdbRHu+9dn3DuvGtDTbsq6YIALa0eS43Ggquni8IG08G9vauZ73xhNNKH2v83mFq6dVYmi6Vzx5CoeumAqO1vDxFWNrmiC286awE3PrbFcYgbS3Td3xzm6NI9rZ41jR2vEqrAvevwDHrxgKgseet/aviYY4H8XTWfJs2v6TEK+6jNmG19duP0FePOGEOlIvz9tn3EbNgx0hOM0dcVo7o7z5Hens/yzFitAzkRNMEBTZ5SKwix++8qnXHT8KC7/ZgV6Uhoi0WOFaJLvTNPf3smcAgbZNn9PDf2xdOm6jp50UjGhYripuJPVcXMyEE8GAkV1FUk3NOVhTcWV3E4WJSPlU1ORkoFCkmDIWSQB5KTneZem0tRlkFaX0zj3nlAMt0PmmLI8JKApFKMmOITjKwpp6Y5SlOMhrKjoukiWS0DTdfZ2xmjqijKyAH7/X1No6orhkkXqW0JMLc9n1fY2Rg3JoiOSoCzfS1NXlIv+8CHhuEp7JMG08nyuPm0cC7piGXuzwJCUXPHICsOr/OQxdCRX73tvVxMM8GF9GyPyvZaFcW+0R+Ks2NbKtaeNAwwiL4sCyzY3s3jpKn513lHAgSXLh2sCqE3KDwD60y394txJxFWN6zM4qPzknIlcduJoNB3yvU6iisa2lpCVzHXV//cxD1wwhSXPrkkj5oaGfCI7W8M88OaWjNfTHVXxOiWWzK4kljC+VqIJjW3NHRwzMh/A8je/phexXbx0FffOq6a8wEddsMAisoNp4VVdHzRxqzumWNryFdta2d4SoqIom6auGO1hhUtPDPLj2ZXWzd8fTPJfVZxjBR2Y6L3v8s0ttIX61zR+lWfMNg4+DjSJtn3GbdjIPCbW9gqQMx1CSvxufvPKRi49sYLOSBy/y6AlqZ7hMHBYUGpqJhjk2pSriEBHUnbiTNnOclJJ2cdMENUwxjRZEOhK7qtrKqoqoAsacrIpNJJQccuGNEXVdCRRQtGSR0xOLGREwgkVlySiqjAk2wW6Tkc0wfqGLo4uyyWuqLy3tYPq0mQit9dFNKHg9zjZ3RkhFFN54v3tzJtexhVPrrLsEj0Oie6YQr7Pia7rzBgd4J5XN3HpScZ7uWpHO48s28o9c6stEm3q+P+5bg+r6tv6dU1xy5LVZ2a6s/VewTar5k+vqKcgmVOSCVkuB799ZRO/fWVTxudTZb0HiiwfrgmgNin/ghhIt7StNcw9r2/K6KDy42dWc/tZVYiixI3PrO6zjHTNrHFc8seP+NW3j+IGSaQ7kiDb48DrkBB0nYv/9FG/mvAcj8TD86dy/7828/Yza9KOO6ogi//vkhnUt0bI9Tpo6oxZ/rAmirLd7GiJcMuZ47npb2tYvrllUC18QtEo8A1MbFVN58bZlQz1uxEQeGjZFpb3ur4ffLOi30hgE5l8T3s/l4r2QUj+V3XGbOPgwyTRDlniZ+ceTVFREQCiKPYh6alNnej9HdH2Gbfx9UZ/Y+KyzS0ICDxz6XEoqo7LIaID4USC4fk+1KTlH/QQah2DpJjEPFW6ktqUCX2bO5WUx7yi4U5m7mNWzptCEfJ9HpzJfTSMqrcMkLQ4zBElNB00UcKLji5AVyyBJIn4HIZUpTtpexjVVERdJK6q+JwyTd1RPE5DaqprOl5ZJKxodEcVvE6JKSPzUDQNhyRSOTSH5q4YQ/0emroiuB0yD7yxmStOrsAlK1x72jg6IwnLLjGuGoWyPMlprCoIAk2dURbUltPYFiGuadaKc++iWkzR0myQMxHt7ljCKsylurP1DiB68v3t3HzG+AELWwOlcfZ2YzlQZPlwTQC1SfkXxEC6JZ9L6tdBZWV9OyCyqy3C3OllXFg7ynIpMfc5dcJQy/bwxctrk0ti8NGOdqpLczPr0oMBclwOfvb3DX2kL+b21542zqow1wUDPHtpDVtbQjgkkd0dEV7dsIffvrKJxy88xrIfzPc50yrnqTBvquCQ4dRVFGR8P2qCAd7d0sKsCUNpDcWRRIHq0jxW1bdbE4JV9e2oms7K7W375Hva21Yp02MweHPtV3XGbOPQwJ0TQI10cdXTH6FFuxHdWRkr3aaW3Gzq9H6J12zDxlcV7eEEC44bydxppWnuW+G4ytubm2npNqQMd726iaUXTeedLS18vKOdOROLcSSJsFnBNglK7+bO3j+nQ0dBSPEXN/ZP0OM5rgDdqkq+z4MMdKgJ3JIDOblNh1Ud19FFgZiuEk/ohOMqboeExyHjEI0rsCrjQDiq4HTIuBxScgIgoOs6CU23Jg9ZDolYXLHm9V5Zoqkrgs/tZKjbTVRRcDtk0KG8MItz7n8nbWUhyyXT3B3F6zLIfmc0QUs4QULRWLWjnQ0NHYwr8VNVnGNdV+8x0CWLfYh2qj/5FU+u4v55k7lxTiW3vbCO5ZtbrKp5XTBgeZxXj8gF4PYX1hmBRf0Q8/7SOHvr0w8kWT5cE0BtUv4FMZBuKRTNXMn2OiXunlvNTSke4GB8QM3lvdSEzLpggE92dVAzOsCutjBVw/wszjGaSpanacILuPnM8XTFlIxa9N7bg6H1vvWFtT3epMnGC69TIj/Lac20zWvW0Ptdvsr1Oozq+nNr+m0MSZWc1PRazlxYW869/9rMqvr2jDP4umCA+TXlPLWinstPqmDhYz3pYwN5qq7a0d7vZOGrPGO2cWjhzgmgOpxInuy0SndqhdydU4C+D02ddkCRja8jGtoj3Phs35Xf1O/59kiC2mABH25rpSTXw/qGDm4+YzwOsUcX7qTHHQX6NncODCGtKm6SfJOQm1V4V1LzHdZUXJJsVcoTgE80SLUuGo8pOvicMrIs4BIloqpKLJFs/pREnMl7W9F0siSB1lCchKJT7HcTURTrynQd4rqOJynRUVSNhAoF2R5auqM0tKv873vbuOT40RRmu5gzqZhvVAzB65LwOAzXl0hCIc/nIq6qNHVF6YwafuThuGqN34uXruKe5Bjau1iV+ntq0qfJAcxtPqxvYyp5VmEux+2gM5pg1Y52y+M8FYPJQFPTONsjcWIJjXdS3FgOBlk+HBNAbVL+BdGfbsnrlPB7Mz83WKqnmWwWUzTqggXcdvZ4HIJAXFN4e0srT62o5/8dW8ZtZ04gqqiEYyrZbhmv04gtdsgDd7v3vplSJwBvb25GQ2dhbTkeh2RVrPd1+aolFB8w3Cd1xt779aY2eKaeyzzOyIAPQYBfJ5tCnl9ca91oomjM1jNJetY1dHDbWeO5+bm1h9WM2caXB30A28N9wcEIKLJh46sMS7YyyLjmkkVUTefqmeOIqSo3nTGeqKLiEqQ0OYpJTlKDgDLBeF4njpBG5k2STXL/1OMoGA2YYBBwDd3SlIdUw44RTUcTQBQM4i1gEPlQXAFBwCOLSZKtgQ5xFfK8LnR0fE4JX5bMzrYw21ojzCjPZ2dHBFEQyPM48bkkWkMxnLKEK5n26XU7cDtlbji9ElkQiKkq3VGVrpjC5qZuJg7PSVoZ6mS5wSNL+LJlPE6FRxccg9cl8dr6JhYvNTTnq3a0UxsMsCClEl1XUcClJwRZ9HhPQav3NqmhPwD3vr6Z4ysKuHFOFec98G6/f4d9kYGmpnF2hOMU5bg5eVzhQSXLh1sCqE3KvyAy6ZbMqrIsChllGPuS6glQlu/lspOCCMDf1+yiM6Zb+/32lU2cNK4QRdXpjCZ4c9NeHlm2lYW15Zw8rmjAa5bFvjWHVM2ZeQ0t3elJXb2XrzrCcWv56rYX1vHr844i4HPyyY72jK8vk7wk9fWmXoN5rlT83yXHckx5vvV76o22uamLeUkvdvP99jolbpxdycThfpq74yyZU4VTEumIxPG5vvozZhtfHlJJ9ee1PewvoKi3z/lA+nQbNg4XDCTlNL/nzTHgtPFDueuVT7nh9EpD4510QdEwKtqpd1oqIc9UMTeeNwg5YFkp6im/x+hxbknoBgE37Qljmk5M1/BKxqRAMHJ+0NOuS7BCglyyhKprRBSNLIeEG4moptESTiSlLRJZTpm2SIxcn4sZfg+t4Th5Xiceh+Hc0h6Jomg6Fz3yEXeeO4nCHBehmIrf40AWBZq7ogzJ8dAVVSjKdlGW72FnW4T8LCdvbWrik53tfLfOcDx74r3tXHFyBf/5wHtWtfymM6poaI9SPSIXn1PikQXHoOk6sYTKim0tPHjBVBySiKbrBLKcNHfFrDTQVTvaWZrSVGoWryKJzCv/JvZXBnq4keVDBZuUf0Gk6pY+3N7GwtpyThgzhI5IgriqcvXMccCGfrXlmWBWyEVRQBYFdraEGVXoT5Nm1AQD6Dq0huIsevxD6/HqEbm88WlTv/rvumAByzI83ltzFlM0CnMkLnzsgz4Va3P56ulLZnDeA+9Z+zR1xagoyt4n7Vjvc2W6ht7wuvqvlzhEkaXvb7eq9IqmUx7wcdsLa7khpZm0rqKAW84cb7tK2xgUJqnubXv4RZHJ59yGjcMdg1nQAVxYU85T72/n9AlDWXJGFSIQ1zRcyVyMwShaf3aI5shh+ZNb/+toCJajig6IpuuKphPWjAZNp9ZDxL2IhJPV8qimIgkicnIfURCIqZrR4CmoJHSdkKqha+BzGTpwhyiwvSVMINuFQxIIxRWyXDJOSUQU4devbOTyb47h0z1tPHHRdHa1R4glNLxOifrWMNkumeF5HvZ2RXE5JBKahhbXGZHvpS0U55SqIs6cVEJc04gnJG46o4rWUIxff/soctwOCrNd7G6PomgahTkuXlvfxJqd7fx4dhWtoTgTSvy8u6WFp1bU8/NzJ/HgW59RWeKnekQucVXj5Moizq0eRlc0wfOLa63iVUc4flg2Th5usEn5AYCpW2oLJ1jy7Oq0Cu9J44Zw7WnjaA3FEUWBgqzB6225Hgd3nDOB1bvamVDip0nXufjRD9J8QRefWMG/NjZRUZidtm9M0fjDW1sG9CFfvDSdGGeqYLtkkabOGJNLM1f1a4MBmjpjaY+ZdoS9dVxuh8QLqxv7JHmlngugqTM6YDOp19E/KW+PxJk3vcxKAV18UpA/vrutr4Z+UzM3PbeG6tI8PtnRbocH2Tjo6G27CP37nNuwcbhiMAs6v8fB79/YzHWnV+IURSQM1xKfLFl+5CbBjtND0DNVx3seM5o6TdmKqUmXMEm5YAQEaTqiKJBI7ikCiAJZooSu68Q08IrGdirglqQeGY0gIOiwJ9TjpBLVFJyCRHMojs8p43aIxFQNhygSVVWKcz20heO4nRJep9EUqmo6UUXjspPGcM9rn3LFyWP5wZMr+cHJYyxrw5JcD6GYQjih0BVVCXfFcckiezqjDMv18O+d7Uwty6dLVIgmVNwOEVdCJKHCyIAPlyzSGooxxO/CIRo/f7OyiBmj8mnpjrGlOcQ1f1ltvY9Pr6jntrMmEE1og2quD9fGycMNNik/gFjSq3ET4PUNe4kpGrecOZ6mzhjbmkNUDs3uP9UzWMDwPA9xTWVojhtV1ynIcnHvvMlEE6p1g0YTKg+8uYWHLpiatn+ux0E4rlo+5AuSFW63Q6Igy8ndr27qE97Qu4JdV1HAqh3tfNbUxe1nT8jolX7TGeOZ9+B7aedOTW5LXZra0xnl4x3tGQl5XUUBw3I9vHB5LXu7olxUV07vyYQ5CfG5+v+4ZrkczH3wfauqPyTbNahE6N7XN3PtXz7hXjs8yMZBRG/bRcCWrNg44uByiAOs0AZwyiJXnjoWpySCDglNtxxMTIcU8+fUb+NMRSwh5Sdz1EkNCzKTOk3yLotCMh1UQNB1YhgVeo8kEVbj6JpsBRQJGORcEAXciISSdocBrwsh6UfuFmXCikJhlgtB09kbjuN2yDicAvV7ozhlkeF5HiKKSksoTpZLtlYDFE1j8UljaGgN88NTxjA0x4Oq6UTiKn6vg2yXjKLqZLlloopGwOdiVIGPLc0hTqkciksW2dsVpTDbjUMW6AjHyXI7EAXDN90lG64xIUWhNZxAjio0dUYpyfXQ2BnliYum45BEst0yJX73fo19h2Pj5OEGm5QfIAymp2vqjHF+Mmnyjxcew+UnVljPmagJBrjspCC6rtPWnaAw283/vPYp35lWiq73jOINHVHueHE91aW5DMlx8fD8qXidMjkeGV03vgDf3tzSh5SeNG4IFx8/iqtOG0tDe5Qh2U5W7+xIq2Ab4URGA+nKbW4ueHgFj1x4DNGE0VCa5ZLZ3Rll3oPv0dwdT7t2n7Pvx6mhPcJNz61h/nEj0fR055baYID5x43kW7/rsXxaVFvODbMraWiPElc1hmS58Dologmj4cUVztzhXZDlZGpZT/f4/edPHvDvZUpm3t7UTFNXzP5SsXFQ0dt20bZUtHEkoSMcpyuS4Eczx6KjpxVxapKuWXe/usnQkOuGbjuiaEbuBj3OKDBwSJCJ1KZNCcMxRaYn+TOV4Gvo6PQkd+qCQeR9kuFdLskuEprhqRTXVCRBQhSSVXtRIBJRUBQdWTKq7ibT9zlkNE1HA/I8TjSgsTNKkd9tBAoB0bhGXNEIofCPzc2U+N2MGpJFc3ecYXlufE6Z5u4YHqeEqutcsXQVt509nhyPk4SqMizPg98tc+dLG3hxzW68TolLvjGKUyqL0HWd9pCCKAr8Y+1u/vDWFiaX5rKwtpzVuzqYUOJHFgWK/R6Kst3s6ogwtSyfbLfM797YzHWnVX6ucc/Wgh9c2KT8ACGTns7rlFhYW071iFxEQeCRBcewsr6NHz+7hkcuPIY5E4vTtNpNnVFK/G50Tacwx8Vdr2zkByePZWtziEd6ubXUBQu49MQgf1/dyG9f2cTD86fSFo4zNMfFkjnjufWFtX3sBK+bVclLaxqZOX4omq7z21c+parEzz1zq4kpGn6Pg2y3TELVyPM4GTUki5EBH5v2dHPpEyutBtZHl29NI+R1wQCXnVRBbi+3mdQQiXc+a+GeudVcekIQVdeRBIF3U+yQwJigCMCd505CzBOQRJFb/5a++nB8RUFGyUnvpbXB9Ompzw+WIGrDxoGCabtow8aRhM5IAkXXaeqKcuuZE+iKKjR2RnBKPY2DN5xeSWsoRmGOG1XT8Tkkq6lzf3p8FNKJi4JB6mPoCEkpS4oJITHdcFqRkvtFdB0diGgamg4uSTTkJbqOV5at8UnEqOZ7XTIe2bBBVDXwOCVauqPoOngdErIAe7ujuGSZPJ8TRdWQRYGm7ihup0w8pPHdP35IdWkuF9aUc8EjK6wi1PWzxtEVVUioOjFF49pZ41i2ucXyda8JBphWnk/F0GyePX40cdXwSZdEw/88y20kiE4py+PJ784gz+sgFFfwOWUckkiOx8Heriht4QQuWeTdLS2sa+jg4uNH9xmvbXw1YJPyA4TeerpUAptasa4JBrj5zPEsfPQDbjlzPMW5HroiCbJcMmMKs9jbGSY/28vezghXnDyGXa1hLlu6Mq3Z0u9xIIkQiRsSFlMTfsKYISgabG0JZbQlNL1Fp48MWJaD1SNyrW3e3WJ8GSy9aDqiIBCOq5xxVDHlBT6APraI5n7Ffjd+t6PP7Dl19cAk3uc/9D4Pz5/KBSnNqalYtrmFaEJjaI6bxU+u6iMHemtTM9f95RPuySA5SV1a03R9wCCjVA19quzGhg0bNmzsOxraI9zQK5W6LhhgyZzxxliUdOgKx1QKslw0d0XJz0pWp0UBmX0n5WYVXANETUURjUq7ArgwJCoaPZryBIAOKjqCIBgVdcE4myCIiJJAXFNRBQlBENjbHcPjkslyGE2eMUXHIYk0dkYYmu1Bl3Qa26MgQCwcx53jRhQEPE4HXdEEoujA65AJJxQKstxEVZUsl8SDF0xNK0KZkszXNjTxwJtbuHtuNU+8v73ffI/JpblMGOa39k+1MTR///m3JjE831h/6wjHae6O0xmN4/c4cEgie7tjVI/IZViuh5H5Xrva/RWFTcoPEAqynGkkcDAv8rOqh7Ho8Q+5//zJjCzw4ZFFFj3+IffMqyahqYTiGo+9vJGaioI0e8C6YAFLzqjipTWNPPDmFmv2/dT79ZT43RTluJFFoV89NYDPLWW0HDSR7XbQEUlYk4HJZXlpcbup+9UFC1hQMxJ3hibMzmgibbXAm5S39I787Q3T77Q/OdBbm5r7DSpIXVq7cx9cYPqT3diwYcOGjYHREY5z7Z/7epP3CaWrKOA/Jg8DHYZku9E0HacosD+12lSXFVVTUUXJkrCI9CR2ahgBPWFNwy1JOEWIaiqaIFlNn7IoEEPDjYRHlOhKuq0EvE7iSamoUxBpi8XxugSKczxomk5E1XA7RaJxNdmUmWBDYxdjhmbTHVONccnjoCTXzbyH3qclFOfRBVOpbw1TPSLXsh1s6oohifDAm1usYteS2VXcMKuS7piCS5YQRWjsiHLvvMl4nYYG/N551RTluNnTGUVE4FfnHUWux0FZwMuwvB5BXG8/8ObuOLIokO12MLUszybkX2HYbOQA4rITRuOQBKpK/MwcX0RVcQ6LakelxQyDQcwX1Y5i8UlBypI2RxGHxIW15TR1xrjkTx9RXZrLoqQ27OH5U8lxO+iKKXidIrquM6Yom3vmVrNqRztPrajnorpRLHzcsC8s8bsHaCQ1XFP6ez7V2sgk4A5JYMmcqj6SGEMrOJLLn1zF0oum9zmW3+NIWy14eL7RlLovsfeD2WvtS1CBWTlv6orRGoqjaHqfasXlGWQ3NmzYsGFjcLSG4iyoGcnc6aW4HVLaWJfqTX7LGeO5/YV1/Pj0Kt79rIWa0YH9IuSQrjUXTUKu6ySSUhOTzIi6EfqTLUmWDaIsiGiajiQKJNAQkfCKEu3RGJIkG7HzCRUd8CVtCBO6Tn6WE0GHUEJBFkWau2JIgkBJrof6ljB5PidVJX4rMKgo28Xuzijn/f5dmrvj1AQDhOMaE0v87OmKUpjtIs9r9D8BPHPpcexsiwCwelcHr26IMn1kPh6nEUwU8Dktg4NoQjFkNQIU5biJxA3NeWG2a0CSbWvADy/YpPwAobk7zk3PreXB+VO58ZnVfSQrqTHDYEgmVtW3pVedKwq4cXYV98+bzIf1bSxeusoKA7j97PF0RhMs29zCN8cNMTrYgTMmFXPelOHM+p+3CcdVHlm2lfvmTWbxiUGgd0y9EcF7zZ8/4efnTurz/PEVBdx21gS2tYTwOmV+9q2J3P7COh54cwsnVxYOmNSZKTjAJYt4HBLnTy9jUe0odF3npHFDWLWjfZ8mBQNhX4MKzC+kxvYIb3y6t0+1wl7Gs2HDho39x/aWEDf1chzrPdb5XDJzJpbw8Y42lswZjyxA3egArgN1EUn/8Iim4hAlXEBCMCrwYU3FKRrWhnFdwy0akhRVBSFpf+h3u2gJx9B1IxG7LWTY/GY5JDY0dDJ2aLbhE64JtITjBHyG93gkofJRfRtrdnbwneml1sqruSp857mTrMTr/31vG1Ulfj7Z0d5Hdun3Ohma46a5O07A58zoZmJWumMJgeF5Xtvt5AiHTcoPENrDcX7z7aO5sZe2DvrGDIPxhZDJQ/v2F9ZydGleilwlwJIzqtjREmHR4x9SEwwAWM+b8bcm2Q/HVS5bupJLvjGKa08bB0A0oZHjkWlsjyAgcNtZE3CIIgtryllUO4qYolJe4GNVfTun3/22day6igIeWXAMCx/7gFfWNfFxr0mEiUxEuqE9wnW9IpdrggFumjOeu17dmJYUmnqcVL/TAxlUUJzr4aRxhbSF4nRGFXI8MhOG+SnKce/XcWzYsGHj645dbeF9Gus0TWfGqHz2dsdwCD168C+K3mJJryihotOtGeE9EuAQjMTKrrhClsvB3lAMt0MmyymR0FQSGjgRyfe6CCdUwnGVfJ+L5u4omg6VxdmEYgqRhGEp7HFKoOs4JYnOcJTTxg/llMoifv3KRmvMvPf1zZZE8oJHVljy0qdX1Pfr5T1YJduudH+98LUi5ffddx+//OUv2b17N0cddRT33HMP06ZNOyDHznIbdoS9v6RMpMbJ11UU8O6WzNst29zC9bMqOb5iCB6nEeAz78H3uO2sCRk9xd/a1IympZseh+Mqv31lE799ZRMAL11Ri1uWeGjZ1oyNJF2RBD95YV1fXeCmZgTgpSvq6IjEOfvoYdz03JpBgwMs15UMX9i3vbCWhTXlSILAktlV1vX6PekVggMdVNDQHrGcYFKPZYcH2bBhw8b+oSumDDrW1QULKMl1s7sjSnGuB5GklOQAX4tuSVgEnKJB+mNJ3XhcU8lyORCBIT6XkegJiIg4RcO/fG93DJcs4XUaTaM+l4POqIKATLbbQVyJIQiQ7ZSRRQFF0+mMqlz8p5WE4ypL5lRx7WnjiCRXBpySSFs4zl+/fxySKCCJhvbbJtY29gVfG1L+9NNPc+WVV/L73/+e6dOnc9dddzFz5kw2btxIYWHhFzr2zrYwTklkb4pNYCbEFI3apL7ujHuX9btdV0xh4WM9CZ4AI/I9VJfmZUzFDMfVfqvKdRUF+L1Orv3zxxmbTgXghtOr0lK+UvHWpmYUTWfSCEMDty/BAYN5ti+sKWfBYx/w8g/qGFec0+/7cKCCClKtGXu/tv6cXGzYsGHDRmZ0RpRBt7nsxCCRhMqwXA97uqIMzXbzRb9ldUDQdeJCT4qnKAiENRWXqTPXdFpCcXxuI7BHTXqJxzQNjywRUlVkQaQ9HMflkPB7nEhJ+5dQsqo+dmgOezqjtIXiJDTwCAJel0xRjpuOcBxNh4cumNrvmFSG7wu+UhtfV3xtSPlvfvMbvvvd73LhhRcC8Pvf/54XX3yRRx55hOuuu+4LHbsrqhCKKfhcA1vrjSzw8dNzJrK9JZwx3dJEOK6mPV9XUcA/1u7p1y3F73EMWFUOx9V+qxrLNrfsV1PlviylDXY8c3Li2wcrwgOxdDfQJGEgJxcbNr4s6JpGY2Oj9XtxcTGiuC+xKjZsHHwMNtYZq486XodEd1yhKNt9QHTkAj3hP7Fkio+c8pySJOCBLCft4Ti6QzbsFgVIKBro4JREZFFAEIx9NHS2NofxOqQ0F5OiHHdGeaMtJ7FxMPG1IOXxeJyPPvqI66+/3npMFEVOPvlk3n333T7bx2IxYrGY9XtnZ+eAx++MJMhyGx3c/TUw1gQDeGSRix7/kFMnDO13u9pggJX1bdbvdcECrjp1LP/z2qcZz23qq/1eZ79V5VUpx8uEwb5g97Wp0kRvz/be8Hsc3HTGeDoicUYcgorCgXBysXFosL/33pGKaFcbVz29h5yCYqIdzTx62UyKi4stom6TdBsHGvtz73kd0oBjnVsWiakqkiCQ45R7rAzpqwffXxhEGmSMCnmXouOWjaPG0VBU4/ryPE6imkHENV3H5zKuI6ZpuBwORhVkWeNlecBnN1Da+Erga0HKm5ubUVWVoqKitMeLiorYsGFDn+1/9rOfceutt+7z8XM8DtyyyMc727n8pAqAPtrty0+q4MNtrXza1M3OZVt5ZP4xiIKQVsGtqyjgjrMnEI4rfGPMEBySyBsbm1j0+Af8/NxJxBUtLb64t766vxn8YCQ5yyn3G7TzeZoqC7KcA8ppst0y8x58j6cvPna/jvt5Mdjr399Jh42Dh/29945kuHMCePOGWL83NjZy4X3/AODRy2YybNiwL+vSbByB2J97zykKXH5iP2PdiRU4RQFJlK1QIJNofB5CbhL5BFia8ETS3lDRwS1LxDUNSZRwiRIu0dhGAYZmuwdtorRh46uErwUp319cf/31XHnlldbvnZ2djBgxot/ts90yezsjlOR6EAWYM7EkzTqwqStGYbaThY99AMCU0lxKct1cdsIovv+N0bhkIxigKMfdp2Eye1IJJ4wZQo7Hwa+/fTTdUWW/9dUDkuRgAQ5RyBi083mbKvtr0qwJBph/3Ei+84f3mFqWt99k//NioNf/eSYdNg4e9vfe+7rB7S/4si/BxhGK/bn3JFGg2O9mzsTi9LGuM0qx351spuxJ1txfKBjkJKHraIKABoQ0FbcooWo6omgcNR5XkZzioOTbho3DBV8LUl5QUIAkSezZsyft8T179jB06NA+27tcLlyufVfADc/zoms6CU3no21tjB9mNC+G4ypuWWJMYRZRVeWxBceQ7XHgdUo0tod5aNk2lsypItfTN6IeMle+i/rvi+wX/ZHkuooCfnL2BIYHDAnJgWiqNGE2ae7ujFrhCKav+dSyvM9F9j8vDrSTi42Dh/29974OSNOXGzJaGzYOOPbn3hua52VnS4ijS/PQga5IgmyPg5JcD1LS+nB/P6pa8l88qQsXksfI92YeHwGG2w2VNo4wfC1IudPpZMqUKbz22mucffbZAGiaxmuvvcbixYsPyDlGBHw0tIWZNiqfcFylK5rA73GQ7TQCDbpVEATjKyqaUAlku/n1IbRJ2hcnkwPdwGIeLzUc4Zyjh30p2r0D5eRiw8ahhqkv16LdeAvLcDrtz6yNLx/DAz52toXpiipW02RWcryDfSPkOqBJIkNtW1obNoCvCSkHuPLKK5k/fz5Tp05l2rRp3HXXXYRCIcuN5UCgJNm1nQlD+n3m0OHL6hr/qnSrf1Wuw4aN/YU7J4DqMD67qZVzu+HTxpeJ4QOMeTZs2Nh/fG1I+X/+53+yd+9ebrrpJnbv3s3RRx/Nyy+/3Kf504YNGza+yjAr5w5Z4mfnHk1xcTGA9b9N2G3YsGHj8MTXhpQDLF68+IDJVWzYsGHjy4I7J4Aa6eKqpz8ip6CYSHsTPzv3aABu+Osn6LpmEXZNyxxsLopiv8Rds33SbdiwYeOQ42tFym3YsGHjSIJpmxjpaOGqpz+ydOephL195yZEdxZatDvt/9RKe2/ivmfPHm746ye4/QUW4e9vVVEURWt/k+gDNqm3YcOGjf2ETcr3AbquA1/fIBMbNg40srOzrcbngbCv915XVxeh1iZiXW2I0QhaNIQYjfD/s3fm8VGV1/9/37mzZ5lMEhICJCEQEAIIQVYTXBBFBa1W+63At4K4VQWr/uouLmjdu7jW1orYbxW7uICg1K1VoK6YCoRFAoGg7Nkmyewz9/fH5F5mTSaQhADP+/XyJZm5c+femefMc57znPM5elnG1XAw4rFknjsWXh9zjDmFYCCIs35/6DlzCsFAgGAgCHH+72pxcMMf/kmqvReNe3Ygm1MIuFu0/1t79cOYGsDVWM8Nf/hnxHPh/w9/vV6v5+HLJgBw1+ufY06z426q5+HLJohUwS6mT58+SR3X2bYnEAiSIxnbkxTV8gQJ+f7774VWskDQiTQ2NpKe3r6+p7A9gaBzEbYnEBwdkrE94ZQnQTAYZPfu3TGrHLW5wq5du5L6kTseOBHvGU7M++7Ke042WpfI9rrjGnsK4h6PD3rKPQrbaxtxX8cex8q9JWN7In0lCXQ6Hf369Uv4fHp6eo8eCF3BiXjPcGLe99G85/ZsT+VE+F7EPR4fHCv3eKLbnrivY4/j4d5E5Y1AIBAIBAKBQHCUEU65QCAQCAQCgUBwlBFO+RFgMpm47777MJlM7R98nHAi3jOcmPd9LNzzsXCNR4q4x+OD4+0ej7f7URH3dexxPN2bKPQUCAQCgUAgEAiOMiJSLhAIBAKBQCAQHGWEUy4QCAQCgUAgEBxlhFMuEAgEAoFAIBAcZYRTLhAIBAKBQCAQHGWEU54EiqLgcDgQNbECQfcibE8gODoI2xMIuh/hlCdBU1MTNpuNpqamo30pAsEJhbA9geDoIGxPIOh+hFMuEAgEAoFAIBAcZYRTLhAIBAKBQCAQHGWEUy4QCAQCgUAgEBxlhFMuEAgEAoFAIBAcZYRTLhAIBAKBQCAQHGX0R/sCBIJkaXR6OdjsxeH2kW4xkJ1ixGY1Hu3LEgh6PMJ2BAKBoOcjnHJBt3M4DsLuBhe3v7GOVVsPao+dNiibRy85mT4Zlq6+ZIGgy+kqx1nYjkAgEBwbCKdc0K0cjoPQ6PTGvAbg060HueONdTwzo1RE/QTHNF3lOAvbEQgEgmMHkVMu6DbacxB2HmyhoqaebQeaaXR6tecPNntjXhP+2oPN3rjPCQTHAvscbm7/x7cJ7SLcFjqKsB2BQCA4dhCRckG30Z6DUHWgmStf+RqIjBI63L42z9vUzvMCQU9ld4OLHQdbWFVVG/d51XE+3Gi2sB2BQCA4dhCRckG30Z6D4PEHtX+HRwnTzYY2X5duMdDo9LJtf3PcSLtA0BNRd44aXF3nOLdlO1ajjN1qFHYjEAgEPQQRKRd0G+051yZ95BpRjRJmpxo5bVA2n8aJsp89NAejrGPekopuL2QTihaCI0HdOZpzav82j0trx27aIpHtWI0yi+aM5Z63N7CqquvsRtiIQCAQJI+IlAu6DdVBiEdZcRYVuxpiHm9y+7BZjTx6yckxrz1tUDb3XziMO99a3yX5uG2xu8HFvCUVnPWbT7j4+f9w1q8/Yf6SCnY3uLrk/QTHH+rOUcWuBsqKs+Iec9qgbLJTD9+JTWQ7C6aX8NzHVREOOXSu3QgbEQgEgo4hIuWCbkN1EO54Y11E5K6sOIsryoq4cUlFzGvUKGGfDAvPzCjlYLOXJrePNLOB7FRjUoVsnR2ZE4oWgs5A3TlatLqap2eUArAmLLd80qBsHrvk5CMeS/FsJ6go3Pnm+rjHd4bdCBsRCASCjiOcckG3Eu0gpJj0fL2znhuXVOD0BiKOjY4S2qyxW9/bD7a0+X5dUch2NBYCguOP8NSSG5dUMLe8iLllRXj8QTIsBgbmpJKbbu6U94q2nYqa+jaPP1K7ETYiEAgEHUc45YJuJ9pBSDHpea/QHhE9Py3JKGF7eepHko+bCKFoIegMoneOnv24Cjg09jvLIY9HV9uNsBGBQCDoOMIpFxx1EqWmJBNJa6sI9EjzcRNxNBYCguOTIxn7R0JX242wEYFAIOg4otBT0COwWY0MzEllVIGdgTmpSTslbRWBdkY+bjzaKljtqoWA4PjlcMf+kb5nV9qNsBGBQCDoOJKiKMrRvoiejsPhwGaz0djYSHp6+tG+HEEcVOm17oo27m5wxRSsqg5NXhfKMJ5oCNvrWrrSboSNHNsI2xMIuh/hlCeB+HHq2RwtLeTuXgiciAjbOzp0lk0JGzl2EbYnEHQ/Iqdc0OV0pdO8u8EVI73WHY2DIL4ajEBwJPSEZjudaVPCRgQCgSB5hFMu6FK60mkWWsiC44mjucBUETYlEAgERw/hlAu6jI5M8IcTIRRayILjhXBbsRpl5pYXUZqfgccfZGdtC7JO6lKJRBVhUwKBQHD0EE65oMtIdoI/3AhhZ2ohd1faQE9ITxD0PFRbsRplnp5RystrqjXdcjjU3bOrI+YBReGl2WPw+IOYDTLf1NSzaHW11tirJ+uLC9sSCATHOsIpF3QZyTjNR7Jd3llayN2VNtAT0hMEPRPVVuaWF/HymmrWVNVGPL+qG9JHdje4ePCdSlaFvXdZcRZPzyjVOu72VH1xYVsCgeB4QDjlgi4jGaf5SLbL22qAcvbQHFLNerbtb24zctZdObSNTi+ffHeAOaf2Z8a4gogopMjVFai2UpqfEREhD6cr00e08VlWxIzxhRHjE6qZW17Eul0NPVJfXNiWQCA4XhBOuaDLSKZr4PaDLW2eo63t8ug25SpnD81hwfQSfvn3b9uNnHVXDm2908fydbsjIqDhUUiRq3tio9qKxx9s87iuSh9pb3zecEYxs8YV9MgxKmxLIBAcLwinXNCpROd1PvLjEdy/rJIPNu3XjgnvGphu9rZ5vva2y+O1KU8162Mccogf/e7MvPRENDq9LHh7fUxKgvr33PKiHp2rK+h61AXmjjiL1PDCT19QYduB5k7Nl05mfJoNco9s+CNsSyAQHE8Ip1yQFMkUUSXK63z44hHcef5QHK7YBiLJRNPbI1oLedv+5qSj352Vl94WB5u9EXm64aypqmVuWVGPzdU90TiaxYJ9MizIOolJg7K18Zuo8LMz86WTGZ82S88cn8K2BALB8YRwygXtkkwRVVu52Xe9tZ5nZpQyoFdqzLkTpaCER9M7Skei352xKDjS61GvQ3B06QnFgrnpZh4Ls4dEhZ+dWfNwLI/PY/naBQKBIBrhlAvaJNlCyCPJzY6XgnI47bjVKKc/qLBoztgYOTeV8MhZVywKomkvGt/PbhE5r0eZntQ0J9wePP5Alxd+Jjs+e6LkoLAtgUBwPCGc8hOYZCbZZJ3tI83NPtJ23PGinNFybhA/+t1Zi4JEtBeN790NTWEEbXO0m+bEs8WBOalU1NS3+brOyJdOZnz2hF2EeAjbEggExxPCKT9BSXaSTdbZ7o7c7EQkinKGF3s9+3FVm9HvI10UtEV3ROMFR0Z3FPwmoi1b7A67am98Aj1mFyEaYVsCgeB4QjjlJyAd2apP1inojtzsRLQV5VxTVcvd5w/l4lF9OzX63VG6OhovODKO1qKyPVt84icju8Wu2hqfHSmcPhoI2xIIBMcLwik/AenIVn2yzvbRjFi1F+X0+oOU9LF12fsnS1dG4wVHRlcuKttKE2vPFls8/m6zq0Tj82juIiSLsC2BQHA8IJzyE5B4k2y4FnJtixfCtJCTdQok4LwRecw+tT8efxCTXsf+Jk+X3Yfq7Jj0ujaPE5JogvboqkVle2lizR4f8yYXU5qfgccfjOhG6fQGcLh8DOiVeliR4M4qzDyaqWkCgUBwInHUnfIffviB22+/nffeew+n00lxcTEvv/wyY8aMAUBRFO677z5efPFFGhoaKCsr4/e//z2DBg3SzlFXV8f8+fN555130Ol0XHLJJTz11FOkph6S4Fu3bh033HADX331Fb169WL+/Pncdttt3X6/PYHoSTYZLeT2nIJGp5fb4mzDq+fp7LzTcGdn3uRiyoqzYmTj1PcWkmiCZOjsNIik0sQsRipq6iPsLrxAWXV4OxoJ7szCzKOZmiYQCAQnEm2HGLuY+vp6ysrKMBgMvPfee2zcuJFf//rX2O127ZjHH3+cp59+mhdeeIEvvviClJQUpk6ditvt1o6ZNWsWlZWVfPDBByxfvpxPP/2Ua665Rnve4XBwzjnnUFhYyNq1a3niiSe4//77+eMf/9it99tTUCdZlfa0kBudoXSWgTmpjCqwMzAn9bBUWjqLaGdn0epqrigroqw4K+K4jkY5G51etu1vpqKmnm0Hmml0dt41C44N2hvnHaE9m2hw+ljw9oa43ShfXlPNguklh+XwtrcY6Oi4VncRwn8zIGRfj7cWggq7EQgEgiPnqEbKH3vsMfLz83n55Ze1x4qKirR/K4rC7373O+655x5+9KMfAfDnP/+Z3Nxc3n77bS677DI2bdrEypUr+eqrr7To+jPPPMP555/Pk08+SZ8+fXj11Vfxer0sWrQIo9HIsGHD+O9//8tvfvObCOf9RCF6q740P+OItZC7M+9UdXbCU278QYU7zh2Kxx+SPrRbjR2KcvZUyTfBsUt7NtHi9bOqKnGB8r3TS2LG7+HImIbbiccfZI8jFNDoyIIj0S5CizfAvCUVwm4EAoGgEziqTvmyZcuYOnUqP/nJT/jkk0/o27cv119/PVdffTUA1dXV7N27lylTpmivsdlsjB8/ns8++4zLLruMzz77jIyMDM0hB5gyZQo6nY4vvviCiy++mM8++4zTTjsNo/HQJDR16lQee+wx6uvrIyLzAB6PB4/nUC60w+Hoqo/gqBE+yda2tB3ZSsah7s68U4fblzDlpqw4i4UXDmdgTmz30ET0pMYxJzrHk+21ZxMtUU2tonFFPX84MqbJpKYlS3QKjbCb44vjyfYEgmOVo5q+sn37di0//J///CfXXXcdN954I6+88goAe/fuBSA3Nzfidbm5udpze/fuJScnJ+J5vV5PZmZmxDHxzhH+HuE88sgj2Gw27b/8/PxOuNueh7pVn5XS9sSZjEMdnRITTmfnnaabDQlTbtZU1XL/skr2OdwJXh1Ld6beJKK91JkTJbXmeLK99mwiw5L8QrYjKSnhi4FkUtOiSXas9QS7OVxOFHvqCMeT7QkExypHNVIeDAYZM2YMDz/8MAClpaVs2LCBF154gdmzZx+167rzzju55ZZbtL8dDsdx/QPVkUKuRNvn3SmJmJ1q5NQBWQlTblZVHaS+xUtukt38jrbkW3sR0BMpteZYsb1k0kjaswmrUU7a7g5XxrSjqWkdGWtH224OlxPJnjrCsWJ7AsHxzFF1yvPy8igpKYl4bOjQobzxxhsA9O7dG4B9+/aRl5enHbNv3z5GjRqlHbN///6Ic/j9furq6rTX9+7dm3379kUco/6tHhOOyWTCZDIdwZ0dWyTrULc3mXVXEw+b1UhmqpGXZo+JKyMH4HD7kz7f4abedIbkXDLNY06kFIFjwfY64tS1ZxPJLmQ74gCH27PHH0z6dfscbm7/x7esShBVjx5rXZWy1llSjonOfSLZU0c4FmxPIDjeOapOeVlZGVu2bIl47LvvvqOwsBAIFX327t2bjz76SHPCHQ4HX3zxBddddx0AEydOpKGhgbVr13LKKacA8PHHHxMMBhk/frx2zN13343P58NgCE0UH3zwASeddFJMPvmJSnvOQ7KTWXc08djd4OJXyzdGOA/hMnJOb4B0c/JD+3Ak3zor2tZeBLS+JfkIqaDrORynri2bSHYh21EHWD3vnsa207jU1+1ucLHjYEuMQx5+f9FjrSukErs6it2RHQeBQCDobo6qU37zzTdz6qmn8vDDD/M///M/fPnll/zxj3/UpAolSeKmm27ioYceYtCgQRQVFbFgwQL69OnDRRddBIQi6+eeey5XX301L7zwAj6fj3nz5nHZZZfRp08fAGbOnMkDDzzAlVdeye23386GDRt46qmn+O1vf3u0br1H0pbzEE/xJDxKXdvSPZOZ5hTFySWHUA7tf2vqsbeTJx9OR1NvOjPa1l4EtL2If09NEThe6QqnLpmF7OE4wDarEbc/yGtXjafB5YvYUQJYML2EoKLw3b4mHnynkhnjC9u8huix1tkpa90RxT5WU24EAsGJwVF1yseOHctbb73FnXfeycKFCykqKuJ3v/sds2bN0o657bbbaGlp4ZprrqGhoYHy8nJWrlyJ2XwoX/jVV19l3rx5nHXWWVrzoKefflp73maz8f7773PDDTdwyimnkJ2dzb333ntCyiEeLu0pnlxc2rdbrqMtp2hNVS3Xn1HM/5zSL+l8cpWOpN50pmPWXgS0vYi/6KbYvRwtp+5wHGA16rx2Z722kC7Nz+AfP58IwCPvbubON9fz0uwxrKqqZU5ZUcw5wok31jozZa07otiiO6lAIOjJHPWOntOnT2f69OkJn5ckiYULF7Jw4cKEx2RmZvLaa6+1+T4nn3wyq1atOuzrPNFJRvHk2W7Ix2zPKTIbdBRkpRzWuZNNvelMxyw71cikQdlxnZFJg7JJtxgoL85idZy0gvLiLFI7kKYjOHKOplPXEQdYjTqv3Vkfs5CeN7mYipp6zY7VvPOKXQ2H1Rm3s1LWumPBI7qTCgSCnsxRlUQUHDuoiifxJmyAVd0kgdaeU5Rh6fpJtbMdsxvOLI7pRlpWnMUNZxbj8vmZE6dbaVlxFnPKimjxJF/QKjhyulP6Mx7JdhxVo87xFtKl+RkRf5v0oWkgUWfcSV2goBSP7ljwtNWdtDvuUSAQCNpChNlOUDqqcGCzGjHq217DhUeyukpBoSdEujrzGg42e5m7+Cvmlhcxt6wIjz+ISa+jYlcDcxd/xStzx3Hjkoq4z9+4pILXrhrfmbcmaIfDqT/oDDvo6HnUqHM8ScRoRZbwCHn0WMuwGBiYk9rhdLDDobtsu7tUogQCgaCjCKf8BORwFQ7s7UxaKSb9EZ0/GaKdIrXw9NQBWZj0Og62diftygm2MwvcHG4fTm8goZZ0ilFu83mRA9v9JOvUJbIDVaM8WSf7cOxJjTrHk0Q0RS2uF62u5ukZpUAoFW3R6uoIm2r2+DE7u76Quzt7HXSHSpRAIBB0FOGUn2AcicJBW5GssuIsalu86A80c+/SDUlrHR8OqlNU2+JFAe5fuqHNFuJdEbXvrGhbe1v2KUZ9p0QPu1L7+USkPacukZ19vbOenXVOnvu4irU1hwowdxxsId9uJTfd1Cmt7FVbjXbAITZ33OkNaBHy+WcW0yvNzP3LYm2qo4uJw+F4iWILexMIBIeDcMpPMI5E4SBRJKusOIv7LhjGo+9tYtb4wg5pHR8u6jne3bCXOWVFzBhfGCH5pjosLd5Ah6KMHZlMOyPa1t6WfYbVcMTRQ9HBsPtJZGdzy4t45uOtVNQ0xFUyiv5eDtdeVVv95LsDMcWbamRcAq2A2OkNsG5XAzPG5nPHm+tjbPhwFhOH65Qe61FsYW8CgeBwEU55J3GsREY6qnAQ774evGg4VfubtfxmgEff28THmw9w6Sltt2VO5vzJfm71Th/L1+2OcDjCmwg1OH3cs3RD0lHG7pxMw+/7nmkl1Dm9uL0BnL4AZoPMPoebMwf3anVQOOzooehgeHRQJUSjNf3TzXqe/biKeZOLee2LnZQW2LX8bXVRed/SDTz5k5HYrMYO2Ws8Wzp/eG8mDshiQZQd1Ld4WTC9BIfbT6pRxmrUk2E1dMpioic6pd31+yzsTSAQHAnCKe8EeuIklIiOKBwkuq/7LhzG/NbOmQAvzR7Dx5sPALH5qodz/mQ+t0anlwVvr48rzwghJ6LF6086ytidk2m8+y5vVVP55d+/xekNcNqgbE4f3Et7/nCjh6KD4dHBZjHEdV5fmj0GgDEFdkblZ8TV/L+irEhrxpWsvbZlS/2zU3i2dVHX4vGRbjGy4O0N3PqPdTHHJloEqAWj8yYXx5VFVe3kiZ+M7HFOaXf+Pgt7EwgER4KQRDxC2nPmGp1dLxPYEZKVdGvrvu5fVsnc8kONRsKLydR81XCsRjkUGbxqPI0uL9sONLPP4T6iz+1gszdhmsyaqlpK8zNoaV00JCI8ypjMZNoZJPpcV1fV8vKaau1z7azxIzoYdh+NTi/b9jdTUVOPQSfFdV5VbFZDQs3/l9dUEwgqQKy9qrb00uwxvDR7DEFFScqWVCnFwqyUUNS8Kv6xqab4cRrVxqPlFKPPUd/SPXaULN39+yzsTSAQHAnCKT9CusuZ6yyS0eltdHrZ0+hOeF+rth5k4oBDjnd4dDxa61jtArpxdyP/2V5LvdPHlr1NHGzyHNHn1t7kB5BhSX5XoLsm0/Y6kpbmZ2h/d8b4ER0Mkyfcqd52oLlDDtvuBhfzllRw1m8+4eLn/8PWAy2a8xruSGemGJlUnI1elhI6t2uqajWnPNxeVVuqqKnnyle+Zv6SCpZ+u7tDttTe75VR1sVdtKs2Hk/NJRyHu23d/O52Srv791nYm0AgOBJE+soRcixGRtpSOFC3emeMK2jzHCa9xOvXjCfFpMfpCbDixnL2NoYidqqSw5XlA+idbuI3729h5vjCiK3652eNbvP87X1u7U1+/ewWctJMSSuXdNdk2t54iXZ6jnT89ARd92OBI02lin6t2xfapVEdaXXsq387XH4t53xMgR2b1RDqA6CAAjS5/Ww70Ex2ilGz1wanj3taU7bCz1uSl97m9YWPofbGX6PLG7eweH+Th0kJ1FzCSW+nw2x3O6Xd/fss7E0gEBwJSTvlBw8epKWlhcLCQu2xyspKnnzySVpaWrjooouYOXNml1xkT6anREYOpxlQvEYnqnMx59T+CV+bnWokO9XEf7bVkptuxuMP0uINsN/h5u/XTqSmzoXT5yc33YTXrzCkjy1mq16d3FXHZHSBHb1OIjPFiC8QxGKStW33RNfQ1uTXO93cId3j7ppM2xsv0U7PkY6fZD+DY6VQuSsIb0k/b3JxRGHmJ98d4Pzhvdv8LOJFY9XvMbqjpio/+OpV43h6RimvfbGTUwrsbN3XRGmBna931JHTalNNHj9fVtdxxuBe5GVYIlK2ws87t+xQKpnVKHPt6QM486Qc7f0sxkO21K4Ep8mQcNF++uBecdVcVE4blI09pWc5pd39+3y0mksJBILjg6Sd8vnz59OnTx9+/etfA7B//34mTZpEnz59GDhwIHPmzCEQCPCzn/2syy62J9ITIiOdVchU2+LllEI7N00ZRDAIS64ez5ptoWYialGn1SjzlyvH0eIJkJtuRpIkNu5xsGh1NaUFGfTPTuG/39fz2w+2AqHCtuiuglajDITOn5li5KHlG+MWuz25cgsP/Gh43HtIdvJLVve4KxqXxJtw29N6r9jVEPHenTF+2vsMjqVC5a7gYLOXtTvrYwozs1ONPDuzlN2NbrbsaybdosduNcZ0t4wXjVVrK+J11HR6A9S1+Hh5TTXjijIxG3St1+Fh+fo9WiR8bnkREwdkUVPnpNnjj4jqluZnsGh1NfMmF2OzGFg8Zyy90kxYjDL7HW4eW7k5wnGe1DqOk/29irdot1lJqOai2kluurnbGgCptOXYHo3f5yNtLnWi2J1AIIhFUhRFSebAoqIiFi9ezOmnnw7Ak08+yQsvvMDmzZvR6/U8+eST/OMf/+Dzzz/v0gs+GjgcDmw2G42NjaSnx24V725wJZyE8rr4x7XR6WXekoq4eZOnDcrukNrB9gPN3BfV+EdVBblxSQUAi+aM5bmPt0YcozrRNy6poLQgg9vPHcKFz64BQk65xx/k+le/ASK380sL7FTU1MeNupUVZ1FaYGfdroY270GdkDur0Uhnna+tbo4KxIyX8M9ZVV851sZPV9Ce7XUGFTX1fLR5f8RYzE418upVE1i4vDJifJYXZ/HwxSMoyErRHtu2v5mzfvNJxDnVcS4BV77ydcx7LpozlrmLv2LZvDIeW7mZ288dojnS4TYS/t6vXTWemX/6AoA//OwU5NZiUlWmcL/DDcCKVsc+GvX7bPEGjvj3qj076Wy7TEQyju3R/H1ORE+3O+ge2xMIBJEkHSnfu3cv/fv31/7++OOP+fGPf4xeHzrFhRdeyCOPPNLpF3gscDS70HWWBFej0xvjkENIFURC4vVrJmAxyCx8Z2PMMeEyhNFRwYpdDRFFodHb7onax4c/315Do+5qv53sVnNbig+3t8rCRY+XVLOeFo+f164af0yOn2OZdLMhJqL92CUnxzjkELKHu95az6//Z5QWMY8XjVXTVF67ekLc91RzzuGQ/ayJk5oSzn+211JenMXqqlrybGbNiVdlCtU0lrbUUQ42exmYk3rEv1ft2d2R2mUytpasjGlP7BIq7E4gEMQjaac8PT2dhoYGLaf8yy+/5Morr9SelyQJj8fT+Vd4jHC0utC1V8jU4vElNcG1JTG4quogc5r6k5NuipFSU1GdaKtRxiDrtAh5ilFPTppJcybCnZ/2lBzU53tCsWxHtpqTmXAH5qT2iEn3WCxU7myyU43sqG2JeCwn3ZTQuV1dVUt9i1dzyhOlPo0ptNMrzGEPbybUK80EgNMT0P6vPj91WG7cxarWiVOS8PqD2vWpNjVrfGHMa6JRv8+e3DUzWVvriGPb0+5X2J1AIIhH0k75hAkTePrpp3nxxRd58803aWpqYvLkydrz3333Hfn5bXdzFHQ+bRUyWY0y6RZjzDZpvAkuGVWQZnfbut++gMLr10ygvsWrFcp9tbOO7ytaeOiiESx4e0OEI96ekoP6/NGWEetoY6GePOFGL9AyrUasRlmrGYjmaH/23YHNaqSfPXJhFT7W43XmjKataOyjl5zMfUs38NNxBVrO+rzJxZQVZ6GXJQCMekkr/BzXPzPudarR96U3lNHgOjSGVJtqz56g53+fHbG1nmxn0Qi7EwgEyZC0U/7ggw9y1lln8Ze//AW/389dd92F3W7Xnn/99de1fHNB99FWIdOC6SUseDtxo5DwCU4tvkyESa8j1Zz4GKtRZnBOKnscbhpdPq1l+MbdjcwcX8gTKzcxp6w/vVuji+r7vXrV+Ijj1aJStegxmWKsrlYw6OhWc09R5IkmUQRSzW+OdhBOJAm33unmCDtSx3q0pKGKWjgZvrBNFI3tk2HhoYtH8Mu//VeLbqtR75raFh65eAQ2i5Fn/1XFzPGFyDop5hzhqireQDDCXlVnvGJXA31s5gh1lPAFBUBQUdpUNUpEd6mEdMTWeqqdRSPsTiAQJEvSTvnJJ5/Mpk2bWLNmDb1792b8+PERz1922WWUlJR0+gUK2qYt1ZDRBRnc+eb6uK/7dOtBfmhwcbDFS6pJz7rvGxNKnU0qzmKfw02KSR93AWA1yiyaM5b7lm2IWwD62hc7Keljo2+GBXuKkbOH5vDTcQUsisqbLSvO0qKFM8cX8tcva9pVbOhIWsnhOhYdjcj1BEWeaNqKQBr1OhbNGUuLx69Fgvc53Jw5uFeP2vLvSqLtaL/DQ3lxFqMK7Fox5eHIJao0u/0RtuFsLbZ8ac5Y/vjvKob3S6ekVTq0tMAe41g/N3M0ZoMuIo9cPUZVelm0uprnZo5m3pnFAFoBaPSCoqMKH4ejEtIdttYT7SyatuxOAR64cBg765zauLJbDRRkWk8YuxMIBJEkrb5yInMsVKHvc7ipb/HicPs16bbdDS4ufv4/cbffv6mpZ0RfG9f+31omDcpmblkRCgovrY51lB+4cBh1LV762624AkHufms9q8Nk284f3ptH3t0UNyddVVEpzc8gK8XIqAI7P9Q7ue2NdfEXAIOyufeCEiSgV6qpzcmpIwoGRyI/Fk9dI5yPbjmdgTmpEY/1NMWHRPegRoJfWVMd8f31FGm27rY91Zl0eX2kmo380ODi6j9/zXMzR7On0aXp8psNMnsbXZQNzKYwO6Xd81bU1HPx8//R/rYaZZ6ZUcqba3dx45ST+L7eiSxJfF1Tz5gCO3kZZp5YuYUhfdI5pySXyh8aNblE9fWqwx3ufFfUNGgRdatR5oFllXHtMlmFj8NRCelOW+tpdhZNW/djNcqsuLGce9/eIGxPIBAAHezoGQwGWbx4MW+++SY7duxAkiSKioq49NJL+dnPfoYkxW67CrqeRJPg3dOGJtx+LyvO4sKT+2A1yqzaepCgojCuKJPSAjtXlg9AL0vYrQb8AQVfIEj/rBQUYE+tizvPG4pOAr2sY+E7lZTmZyQsEl1TVcuV5QNw+wLadrLbF0xYRLdq60Fqap30z0pp12FIdqu7oznh0RxORK6nKT4kikAmUvpI9rM53ohOQalt8XDt6QMwG3QxUoNlxVkM6JVKhtXQblOYVNOhn1rVJs0GmR+fks/C5ZX8fNJAemeYeXH1dp79uIrsVCN/mj2WX/9zM6X5GeSkmyPeW80vn1texNyyIuxWAw9fNAJvIEiLx0+KUU9QURLaZbIKHx1N3epuW+tpdhZNW5H/ueVFMQ45nLi2JxAIOuCUK4rChRdeyLvvvsvIkSMZMWIEiqKwadMm5syZw5tvvsnbb7/dhZcqiEdbk+B5NQ0smF4S1+laU1XLg8srmVte1Nr4x87kITnsbnDTz25h4TuVrA6LykXrk8+bXKzpOs9oR/VBL0tk6A3ahJpMUWkyRVrJbnUfqfzY4TYW6kmKD4nyb+M1t1ER0myQYTFy5kk5/O7D7ygtsDO3rChit+mPn27jvunDIj6jeIvkR348gkmDslm19aC2ELp8Yn/62S1U1DTQO8PMwncOSTBeNq6AJ/65uU37cnoD2nf39vWnxkTsK2rq27y3zrQxlaNhaz3JzqJpK+9d2J5AIIgmaad88eLFfPrpp3z00UeceeaZEc99/PHHXHTRRfz5z3/m8ssv7/SLFCSmrUnwweUbefP6UxPmla+qquWK8gGMmpERoQrx5892RDjxc8uLeObjrRGPhU8o7ak+ZFmNEdHEZFrNJ1OklWyhV2eoNPT0iFx7JIpAtidL2ZMULI4GZoMOtx9mji+Mu9t0RVkRTp9feyzRIvnB5RtZNGcsEoe6cd43PYW6Fi9zy4vY3+SJiJh2xL4gflFjZxRCdvQcwtYiaSvy3x4nuu0JBCci7f/at7JkyRLuuuuuGIccYPLkydxxxx28+uqrnXpxgvZpaxJ0egM4XP6Ez0Moih0eSS/Nz4iJqsd7LNyZUwvNorEaZR6+eDg6ncT+Jg/bDjTT6PRqE1U8yoqz2N/kSapIKzs1VDQ6b3IxL80ew/OzRrNozljmTS7m7KE52jk6S6XBZjUyMCeVUQX2HqMznixqBDL6c8+wHBsKFkeDRqeX+5ZVIku6hLtNL6+pRheWtpdokez0Bpi7+Cse/NFw0i0G5pYXsXB5JSlmmdL8DBpdkXYcbV/7HO6ENvbIj0cQVBQqauo1GwPatLNkCyHjncNqlJk3uZjXrhpPo8sb8Z7C1iJJZHenDcqOkeGM5kS2PYHgRCXpSPm6det4/PHHEz5/3nnn8fTTT3fKRQmSp/1JsO2v2G41RDgb8SKn8R4L12pW5d2AiEK0l2aP4fl/VXHXWxu0Y9Vt6EcvOTkmolhWnMX8yYPon6T6gM1qZMH0Eu58a31EBFNtha6e41hQaegO4kUgU83xFXXgxPps4nGw2cuHm/Zz89mDE9ZArKmqJbxUvr1Fcr3TS6bVqEXCr3CEGq6Z9LoI2UO97lC8JFpVZU1MWllVxG5YeKFgMqkgbSmlRKeTJKpRUd9T2FosiSL/gPisBAJBBEk75XV1deTm5iZ8Pjc3l/r6tnMYBZ1Pe5Og2aBLKHVYVpyFPxApvhNvqzz6MatRJjfNpOXIRhedAfSzW3hw+UYtL13l060HuXfpBn518Qge+tFwWrx+WrwB0kx6LEaZDEts0VwiGp1e7n57Q9xW6Pe8vUErlHJ6A1x/ZjEBRYk4dlI7OeHHI/Hybw8nX/5EQHWw61q8bR4XrjOdTKQ4vIPo7W+s4/+uHM/7G/fy8pwxAGz4oZHhfW1MKs5iVVUtTm+AG177hmtPH8Dt5w5BkkLF0r1SjTy0fBMjCzKYU9Y/Itf9vqUbePInI9tNBUlGKSX8HEFFich9VwkvThTjKZZEee/isxIIBOEk7ZQHAgH0+sSHy7KM3992qoSg82mvMMrtC3BFq6Mc4ZAWZ3PP9KFE62GqqSjh0TiA168ej8kgo5d16CVAguvPGEiw1dFVi84mFWczb3IxzR5/jEOunu+n4wr4f3/7b1wZsI5MRMkUlQHc9sY61u6s1xYNHn8Qk17H/iZPu02TTgSOpxzezkR1sH2BtlVjbWEpQMlEiqM7iAaCCtNH9OGbnXX0y7SyYv0eHlqxiadnlBIEzb5++8FW1u6o1+T+th9o5rLxBQlz3WtbvJozGO+77IhSinqObfub21V0GZiTKsZTkgjbEwgE4XRIfWXOnDmYTKa4z3s8nk67KEHHaOuHvdHp5eF3N0UoR5j0Oip2NfDkP7fw0MUjIpyI8FQUVf/41dZmPs/8q4o1VbW8M6+cx1duYm1NQ4yju8/h5vPqWk4dED+XtTMl+JItKlOdjnhKB+P6Zx6TE2Bnd1jsyQoWXUWiz1B9PKAoTBqUzTc19Ql3m6LTDJJVD+mdbmb6iN7MP2swj63cxPVnFHNSXrrWHAjgxiUVkdFxb5AMq0FbSPqDSsJcd4D7LxjW5v0fjlJKsjZ3vI2nruxoerx9VgKB4PBJ2imfPXt2u8cI5ZWjR6IfdjXv+u63NsRE0+ZPHoQSVCKcCDUVZcH0Eh760XDuXbqBka1dDde0NgzSSWjRsniO7uI5Y0mzxB9aqvJEdHfEb2rqWbS6ukMyYOGpAvEaJNmtRhpcbaceHIsKB0fSnEUQIt5nePbQnJCtvL2BVWH500u+2Bl3tylRmkEy0U+b1cgd5w/l3qUbmDm+kEaXj15pphgHe1gfW4Sjrr7vo5ecTDCoJMx1r6hpQK+T2La/OaEjeThKKarNJWpIlt5O4fCxiLA3gUDQXSTtlL/88stdeR2CwyCZ6E2j08sX1XWcN6K3lneqRsrnLv6KMYV2nplRqjkRLR4fNosRbyCIyxdgVVUtc8qKNOd7bnkRzZ6205RsVgMVO+NHF/1BJWEzo6dnlNLiSd5JVlMFvt5Zn7D4bOGPhmM1yhF5v+EcqcJBV0bQEr3fkTRnEST+DE/KS+fOt9ZTUdOgLRr9QYWbppyEgsJ904cRVBSc3gA2S6SjHW8chHeebHR6YxzkZrefkj42XvtiJ9efUYzTEzlG29tV+sWUQXHvT11M3Lu07U6Rh6OUoioe/XRcbNpMeXEWl43Jb/OcnUV32Z2wN4FA0J10qKOnoOeQbPTmYLOXzBQjV77yddzzhOeB2qzG0Hn/sY5VVQd5ftZoIFJ9ZUyBPWKyDleMgFDRm8UoU+f0cmX5oeiiGlkr7pXK/csiizOtRpnSAjsWg4w3oLD9QDMpJj3Nbn+bk66aKvDJdwcSOi/3Lt0QUmiJo9V+pAoHib6Dhy8OdVZsdHW+w3CkzVm6exHRE0n0Gaq7OIkWjb+6aAT9oxr0NDq91Dt9LHh7fUIHWB0nal1DaX4GOw62kGbSM6bAzqj8DL7b10RJni3i3GMK7ABcXT4Am9WAXtZR3+IlEFRYW1NPSlSXUPXcmSlGfvP+lojrsRplTm59372NLmxWI6lmPWcPzeGkvPSYiPeWPY64tmGzGrn/wmHc9sa6uAXWd721vssd1e6MXB+pvYUjbE8gELRH0k753Llz2z1GkiReeumlI7ogQft0JHrjcPtiJA3DJ3B/UEECtu5rAmDhO5XaZK6qroSrr9isBjb80MCk4mzW1tTz3MzRmA26mC32ScXZDO9jY2z/TK4uH0BehpknVm6mpSSXOWVFzBhfiNkgs+77Bkb2y+BPre3FwyXX4m3ZR0+6fTIsjCm0J2yQ9OnWg9w9bWhM8V2i1INkJ842v4M31zGqwK45dZ3pMBxJcxaxDR8i0WfoDyo8M6OUxWGpWuEpGnsaXViMMrnpZiD0eX7y3QGWr9sds8hUHeBmt48Hl29kbWt9Rriz/878Mgx6HU++v4WKmgb+es1EJhVns6oqlDqTl2Fm4+eNjMrP4Mn3t0S8R1lxFj85pV/cnaKXZo+JccifmzmaPY0uXL4ADS4fDS4/DU4v90wv4a52JEWjcfuCCdNmOuKoHo6T2t2R685ohgTC9gQCQXIk7ZS3JXcYCAT48MMP8Xg8winvBjoSvUk3GyIk3cKdXlX/+PPqWnLTzeSmmyMm84pdDUwe0guAV68aT6PLh9kgs8fh5spJRZzf0Js9jS5WrN8TM0mvqjoIKIwssPN1TT0bP29k5vhCnli5OeI9JhVnMb4ok4qaBuDwCkGj02minalgUOGJn4ykxePH4UqscNCRibOt72B1Va2Wg9zetXeUw23OIrbhDxHvM7QaZYqyUjjQHOqsmUiPW5XRTDHK3Lt0Az8/fWCMQx7PQZ43uThmXO93eOidbqaitWC6rsXLvReUsHD5RkbmZ/DQ8o0R9RzhrKmq5cHlG3n44hGsqjoYcUz0Ivza0wdgNuhi7PThi4dzz1vr25UUjSbaUY22N68/QKOzbcf8cJ3UzoxcJ0NnNEMSticQCJIl6Y6eb731Vtz/5syZw7Zt2zCZTPzqV7/qymsVtNKR6E12qpH9TR6tG+Dc8iJe+2InpQV2/nLlOPpmWHhv/R6ufOVrauqcEed5/csabj93KC+vqWbWn77g+le/4bynVvFldR2KAoN7p5Gbbk4YNVtVVUtpfgal+RmU9LHx8prqGDm1VVW1PPuvKua2prrE6x6qEi5zGE50wefTM0qpqKnnyle+Dl3z06u59e/fYjHIFLWmH2w/2BLRibC9iVM9TqW97yDaMUp07R3lcLs0JisfebioOdPRXSV7IvE+Q7XDptpZM9HicO3Oej757gB7HW4uG1cQ04kz+nXqOIg3rm9/Yx0ef0Abr7Nf/pIfPbeGkfkZnDest2Y/iezhw0378QaCjCm0Rxyj7mypnTenjcjj2VblpHCiF+HhtDUm4tnbxt2NVOxqwKTXUV3rZOMeBz/UO+O+vqO2Fk5nRa6TpTO6ogrbEwgEyXLYOeVr1qzhjjvu4JtvvmHevHnccccd2O32zrw2QQI6Er2xWY2cMbiX5oyqOawvr6kGoKKmXpusw9NUrEaZJy8dyTc767iirIiZrekmqkrK/32+g2smDYzb7TOccKcknlILhKJ+atMh9fh46g7rf2ggqCgxBXPh2tCJnKmvd9azq97Jtv0t5KSb8PiD1Dt9fFldxxmDe+H0BjoUgWvvO4jXhCnaYTic7ftkJfei6Upn5ljbmo/3GWodNsuKIv4OJzwKPqR3Gi+vqdbGrUr069RxEC+F7LJxBdgsRn79wXdU1DRw89mDtNoMdfenPftyuHxxew1MHtKLmeMLeXlNNeeU5MbYg9Uok51qZNm8MiBUC2KQdazaeoA/frodpzeQcExE29trrZKp6u6bareb9zbR7AnQO90UMS6PJNp9pJHrjtrc4dpbOML2BAJBsnTYKd+4cSO33347K1eu5PLLL2fJkiX069evK65NkICOtrLOy7BgNco8fNEIXL4AT330HXPLisjLsFA2MJs7zxvKPoebzXsdlBVnUVHTwO9njaZPhoUXV2+PyWV9buZodBKkW/SkmGWenzU6wmEPVzoZkJ1CUFHYURs/aqaiOh9qu/HwFJu55UWMLrAzoSiLg80e1myr1d5HnRzViTOR83/t6QMIBBWWr98dcz9F2SkYZanN64ueONv6DsqKs6jY1RDzeLjDcCST6eE0HOmMbfh4HKtb89GfoS8Ycm3V5lnxnOHwBd8d50msqaqltMCu2czc8qKI4svw81kNsuZ06yQwG/Q8sGwDZwzuRUVNQ0xtxkuzQ909rQY5oXyo0xuI+70tWl3N69dM0M4Vreqi5pi7vAGt94D6+IJpJfz12gl8X+/CbJTjpqGEO6ql+RkAvLymWutrEE8FKXxcH4mT2tHfvnAO1+aOtMGPsD2BQJAsSTvlu3bt4t577+Uvf/kL06dPZ926dQwdOrQrr02QgI5GbxqdXhqcPq2l/S/OGsw3NfXMX1KhOdBnDenFPdNLOPOkHEx6HV9W1/GnVdtj5OH62CzodSDrdDy4vDJi+1uVNbyx9bxnD83BnmLE4fKRn9m2o6lGFCt2NXDPtKFtTvLh7/Pp1oPc3joBPTOjlO/2N8c9/5kn5cQUo8Ih3ekF00vavL7oiTPRd1BenMWcsiJuXFIRcXy4w9AZk2lHG44k48wcTuS+u3N8OxP1M2x0etnT6AYONc+yGGI7vYYv+OpbfNrxqkP94qrtnDc8N8KJTjPp+XFpH/SSTnO6Swvs2g7VzAkerj19ABajjuc+rtIKTAGWXD2enHQzL7YWQauo4/+vX9aQnWrE7Q/y2lXjaWit+fimpp66Fq82tvWyFKPOsnmPg+VhOebhC+E73zpUNN1WgbVqb+rnEi9vHmLH9ZE4qYcbuT5SmzuSBj/JLiQ6an/Hsu0JBIL4JO2Un3TSSUiSxC233EJZWRlbt25l69atMcddeOGFnXqBgvgkG73Z0+BiZ52TZz7eGhMhVh1bgBnjC3lw+UZmji8kO8VErs0SoRihOiuPrtwU4VSEo/49t7yIzXscLJhewi///i2rth5k3uRiJhVnxc1hnVSczT7HIafor9dO4K63NiSc5MPf59mPqyJkHTPbmIQS5eauqarFqNN1OAIX7zswG3Tcv6wyYrcg2mE4GpNpW87M45ecTIs3cFhRxO7O8e1s1OjpyPwMTVf/xiUVPDOjVFNCgZDTapAPpST5WyPrTm+Ab79v4OsddYwtykRCoqKmXlMSemHWKegkic+ra/EHFeaWFdErzaQ9n2+3cFJuGvscbkYW2LmyValILfJMZGcSJPzeyoqzKB94KA/6i+paFs0eyzP/2qoVn+ZE1YIcToG1zWok02rkQFOom3NbKWrh4/pIot1weJHro+nAJrOQOJwo/rFuewKBIJaknXK3O+Q0PfHEEzzxxBNxj5EkiUAgfpMWQefTXvSm0ellZ52T56Iccoh0bA2yxH6Hm5umDOaJlZuZP3kQVoMcMVHfOnUwBxzuCKcinPBIXLrZwKWj+3L3Wxs0p2bR6mrevr6MB5ZXxiwOrijvz/ofGln5i0m4fQHcvo7loVuNspZr3ujysuTq8REpLkDMFn40DS7vYUXg4n0HT/5kZJsOw9GaTBM5MwDzllQcVhSxq7bmu4NGpzfUsTY/gzEFdi44OY+Hlm9iVdVB5i+p4OkZpSgofNO6OJV1hyLO2alGpgzpxZA+Ns4amsPvPtzKbecO4VfvboqwLbNRx95GN6Py7drYf37WaC0yvf77RlZvPcBNZ5/Ept2NjCu0883Oeua02llb3W99AYV7lq6P+d7WVNVywxnF2t++gMJz/zr0GxAvNSdZhzr68wsqClkpRhbNGYtel1wKWGfkaXc0cn20Hdi2FhKHG8U/lm1PIBDEJ2mnPBhsu+BI0PNodPlIM+kTKiysqarl6vIB9Mmw8MDySvrYLIwssJOdamKPw82YAjt6ncQvzxmMzWJkwdINEU6F6oR7A0Hy7VbWfd+gpcSEpOAOTTJOb4D3KvcwbUReWDMUifoWH4GgQk6amTybGZvVyLbWFBRvIP6YU9+7V5qJP/zsFIqyUzR9dfW5iQNC0UKXL8Damnosxth0hHDSzIYjzh1Vac9hOJqTabxr27a/+bCjiEca9Tya1LZ4uWxcAa99sROAMdi55ZzB3HHeEFq8AWxWPb/+n1G4vQHueXs9Y4oyeWn2GJ79VxWvf1nDq1dNYOHySkry0rVzqgWbZw3JwSDrUBRw+QI83rrDNLesiNx0k6aHfmX5AH5+xiB+98EW/t85g7EY9PxhVaiO4w8/O4WnZ5Rq11ean4HbF+DUgVmcU5KL0+tP+L39Z3stkwZls2rrQUb1C6WezSkrwuMPkp9ppbbJE+HsR+fCtydzuLvBxb1LNzAkrPFQYaa1zc87fFx3lq0lS09wYBP9LhxuFP9Ytj2BQBCfpCURBccGqjzW1zvq+L7BRW1L2/JYNquBB5dXUlHTEGpWsruRFp+fb7+vpyDLytoddXy0+QD3LT3UhdNqOCQ7OH9JBZW7HexzuMlNN/O3aydy05RBcR3qP3yynTybBZMh1DDlgmfWcPmiL7li8Ve8u34PLa1RbbWVdz977LZtuOThhc+uYf0PjTwQ5pCrz8360xdc9uLnXLH4K77d1UBWipFJUdJmqmTca1eNp8ntY9uB0GJgYE4qowrsWpfTzqYzZNY6kyOJIqpRz+j76UjU82jhCwQ15ZCKmnrmLP6KWX/6gvcq9+ILBGly+Wn2+PEGgqyqqkVR4PnWwsjLxhWwsDXyrdZDuL0Bnps5mglFmTS5/Xj8QX5ocGHUS1zW+h7zl1QQVCArxcSqqloyU43oJIVbpp6EWa/n3jA7y7OZI65v/pIKNu5x4PIGONDkobmN3Z9Fq6t54MJhPHHpyfTLtEZIhH68eR856aaIx1rCtP4TyYrOX1LB7gaXtsNw2biCiGPeq9xLeav0ajTRudPb9jez/WALSFCUndJltqbS02wunMO1v2PZ9gQCQXw6rL7y97//nSVLlvDdd98BMHjwYGbOnMmll17a6Rcn6Bjx8hJfvWp8m6/Ry5LW3OSJlZuZOb6QhmYf55T05r6lG1hVVcucsqKIbfQ+dgsPvFOZsBBzUnEWZw3NiXifQ9v+Jh5fuSkmnWZV1Fbt/RcO45PvDmh5virRua/h2+6J8mJXbT3IA+9U8sjFI7jrrfV8uvVgwuYw3SEn1hnb953JkUYRuzvq2Rk0Or34A4qmn7+mKrZhkDpmJxWHnJ4RfW387sNQHU34uFMVVmxWA1WtC7sV6/dwx3lDQm+mSNp73Hz2IFo8fpzeANmpRsxGHWZZpsXjJ6jA2rDCar1O4uR+GSxOUPSsKrSEo17z+MJMJAn8gSAPLNsQYROKAo+8G2mD6j2sqarl2tMHsL81VW1WlBTqHW+sY8H0EobkpcfYmlp3AqEGRCpHmjvdGfQ0mwvnSOzvWLQ9gUCQmA6lr8yYMYO///3vDB48mCFDQhNOZWUlP/3pT/nJT37CkiVLkKS28woFXUOivMSvdtRFFKyFU1acpalIqNJmr32xk3umlbDX4dYchDSTPsIhWDRnLGsSdCmEUEOg875v1Ao7w52d0QX2NhuW7HW4sVmNuH1BHlqxSZvk4znhEJkfG/5cPJ3zgKJoE1hQUVj4TmWHCts6k540mXbGNviRqFMcDQ42e6lt8SZc1IWP2TEFduZNLibFeOjnMnzcqc6o2xckN90MhMZrfYuPil0NnDestzbOJp+Uy6MrNzG3rIgnLj0ZGQmnzw8SOD3+CDv74+WnaPnq8Wwt3JGGQxHu177YybnDcvlsWy0j+tm4860NEfcevriIvgeTXsd5w/Li1n6oheENLh+l+Rlx893Xfd/A2KJM7plWgtsX6JTc6c6iJ9lcOEdqf8ea7QkEgsQk7ZQ/9dRTfPjhhyxbtozp06dHPLds2TKuuOIKnnrqKW666abOvkZBEiTKS5QkmDe5GFAi29sPymbhj4bh9gWYN7mYXmkmzinJBeDhFRv5+ekDef2aCbR4/GSnmiLUW9y+AFajzBmDeyUsDntoxSatsLO0wM5rX+xkbP9MctNMPD9rNClGPf5gEEmScPsCWjRuT4Ob3ulmHG4fTm+AG5dUMLe8iLmt+bDhjhFENukJbzzUVov0gTmpoTzqdroZdvVE11Mm054cRewqHG4f/qCScFGnOugVNQ1kpBjZuLuRMwb30hZ74RKf6jj9w89OiTifP6jw+pc1nHlSL+ZNLmZMgR2dDk3ffNqIPIIopOj1KIpCarqeP3wSsperywdQkGmlps7JvMnFTB2WG2Nr4ZHpNVW12jWPK8rE3CrpqCjE2Fs8uUf1Hp6ZUcqDy2MXq+HFqylGmboWb0K50ivKivD6A4wqiGwm1xMk/HqKzYVzItqfQCCIT9JO+csvv8wTTzwR45BDSAbx8ccfF075USRRXuLIvhk4vQEuGNmH284bwn5HSL6sYlcDP3nhM16/ZoIm4fb8rNGU5mdgkCWyUk08uGIjP5vQnxavnzFFmdx67hB0EliNet6+voxdUW20VYdldIEdgywRUBQWTCsBCUYXZPDy6mp+9+FWrEaZZ2eGCt1WhUX5FkwbSm+bme/2N5Nm1jNvcjGLVkdO+tFb9uHRQtVBbyuNRY3IqZ9XvIj6NzX1tHg6V43hcDTAu5OeGkXsKtLNBj7avJ+JA7K0MRC+4AvX3v7DJ1XceNZgtu51aIWeQESU2ukN4AsoEYvE9T808PtZpWRajXxbUw+gpcIsWl3NaYN60TfdBIAfCYfLx41TBlN9oJkBvVJw+QMUZFl5afV2SvLSsRplrj19gNb10+kNYNbruOPcIehlHUFF4dmPq7jzvCHUNnt5d/0e7nprQ4y9hdtQ9PjPSTe3WRg+tyz0OeXbLRFKM+HHADx80QggctyrMpLdYXM93d6iOdHsTyAQxCdpp3zr1q1MmTIl4fNTpkxh3rx5nXJRgo6TKC/RZjXw5PtbKC2ws/TbyG6W8yYXc9+ySm27PifNxP4mD2cPyeXrHXXccvZJuHwBjHod55Tksv77Rkbl21m7ow5fUGFEP5t2rvDo9Otf1vDYJSfjDwZpcQewpxh47fOdjCywM6cslFf+5D83RzjkhxqXHNpqL49qRgQhJ7y8OEvLWVWbt0wfkYfNYtA0mNuTd0s3GxJG1MuKs7hkdN/D/CZiOVZaYffEKGJXkZ1qZMseB+cOy9UcbTWFCw7tuowpsHNOSS6PrdzM2P6ZLGu1ITXHG9DsJzvVSOUPjSiExpBeJ5FmNvCrFSHN8anDcvG0yn06vQEyrDJBQtX2+xwuctPMuIMBRuZn8Mh7m7jjvKE88E4lIwvsFGZZYrp+quP3jbW7uPSUfGwWA/MmF2M16vndB98xqsDOFXHsTV3IxstTf37W6HY/uwyrAbc/0Kbuvy8YjBn3L80e06bNXTq6czpDHyv2Fs2JZH8CgSA+SauvWCwWGhoaEj7vcDgwm82HfSGPPvookiRFRNrdbjc33HADWVlZpKamcskll7Bv376I19XU1DBt2jSsVis5OTnceuut+P3+iGP+/e9/M3r0aEwmE8XFxSxevPiwr7Onkp0aqy4CoULONVW1lOZnaBP5zWcPYtm8Ms4fnhcxuW8/0Ey/DAsWo8yyb3cz/ZnV/OSFz1hZuZcGZyiKteGHBsYNyKIwK4X6Fh+vXT2eeZOLuea0Aby8ppote5t49aoJLFpTzQXPrOGyFz9HUYhQnzAbdMwpK+L5WaNZNGcsz7RO0tGT/OqqWhavqWZueZH22JY9Dh6+eESE4oCCwrvr93DpC59x5Stfs6suMoIfTZPbR3aqkQXTSxI2J7r37Q1aQ6Mjob082kZn2+o4gq7B6Q1w5aQBbNnbpCmqqM4qHEqLslkNNLn9rKmqZURfW0QUecMPjdw8ZTCvXz2BZfPK+MO/qxjeN4PS/Azumz6MM0/KwetXtLG/u8GNw+3jtavGh2RF9Xpcfj9eRWF3oxskMEgyC5dvZN6Zg2h0+pg5vpCNuxsJBGFvo4tnW68VQjtCb6zdxU1TTuLVL3aSbjZQUVOPxx/Q3vPKV75GUYLMKSvinfllLLl6AucP781904dpnXPDx394pD8e+ZkWWrwBvq93tXmcohAz7sO79ca1uaUbjtgehL0JBIJjmaQj5RMnTuT3v/89v//97+M+/9xzzzFx4sTDuoivvvqKP/zhD5x88skRj998882sWLGCv//979hsNubNm8ePf/xj1qxZA0AgEGDatGn07t2b//znP+zZs4fLL78cg8HAww8/DEB1dTXTpk3j5z//Oa+++iofffQRV111FXl5eUydOvWwrrencsOZxQQVJWLCc7hCCxSPP4jVKEdE2/53QiEQmtxf+2In/zuhEKfPzxNRUezzR+RxsMnDuP6Z+BWFu95aH/Ee5cVZ3H7eEH734VZemj1Gk4qzGmWuOW0ABlnHK2EKEg8t3xjh3Lx61fiEUbfVVbXcft4QSvLSybAYKMyy0tdujSnYXNUBxyLNbMBmNVJakMGdb66Pe8yqqlrqW7xa4d7h0hPyaAWRNDq93PbGOtburOf/rhynjZ3wHG3VQdfLkpbq5A8qWm642nVTLZhcPGcsl44pYP0PDeSmm/EHFfrZLRhknZabft/0FK2A0mqUefP6U0k16HH6A4zKzyCogNsfZEx/O1ajjNsXYEmrJGKT2x/ThbM0P7QAWNhat7FweSVb9jZh1su80ur4ZqcaybCaeOL97yJee9aQXtx67hDuiioCjS4eDee0QdnYLEZ++fdvmXNq/zY/40BQiRn34d1649EZ9iDsTSAQHMsk7ZTffffdnHHGGdTW1vLLX/6SIUOGoCgKmzZt4te//jVLly7lX//6V4cvoLm5mVmzZvHiiy/y0EMPaY83Njby0ksv8dprrzF58mQglNc+dOhQPv/8cyZMmMD777/Pxo0b+fDDD8nNzWXUqFE8+OCD3H777dx///0YjUZeeOEFioqK+PWvfw3A0KFDWb16Nb/97W+PK6f8YLOXuYu/4prTBnBHWO643RpKazHpdcwtL2JPo4sV6/dQUdOgSbapeeQHmzwM75uhOSnZqaFOfQuXVTJhYBaTT8rh4bA80vDc0BZ3KL0kJ92kOR3Pzizl5dXVWoQxkVpLo6vtXNJddS6uf/UbIOQYqCoNaqOh6BzY9hwLVc2g2e1P2C3R6Q3gcB/acTncHFWH25cwh3bR6mrRCrubaXR62etws6pVFtPnV7TnwguL1Q6fdS1e+tktWI0yRVkp/PmzHQBUrK6PGF/2FANOb4AV6/ewZW8Tj11yMk5PgBSTXlMqWhhWQDm3vAhFAZ+iYNVJBIAA4HD5mDosjwNNbtItRoa2SjZePrF/RIGm1SiTmWLEZJC1XG+1odGeRremerRozljufnt9jC18tPkAM8cXxnw+0cWjKmrRYbM71LBoZH5Gmzbm9EbuVqo2oBaeRtuaSrQ9dNTuurtWRCAQCDqTpJ3yU089lb/+9a9cc801vPHGGxHP2e12lixZQllZWYcv4IYbbmDatGlMmTIlwilfu3YtPp8vIo99yJAhFBQU8NlnnzFhwgQ+++wzRowYQW5urnbM1KlTue6666isrKS0tJTPPvssJhd+6tSpbRakejwePB6P9rfD4ejwfXU39a3bsiP62nC4/NpEZNDrmFSczYbdjUwZkktti0dzEtZ/30hZcRb+oKJFw/c0hralrUaZ/7tyHJt2O7jvR8OQkdjdOtmrz4fnhqrFY83ukDLLMzNCDvmqqlpmtE7+owvscXO924tshz8fHe2KV+DanmOhvjYrxagVuaqES7+lm0PmcSQ5qjaLIWEO7dMzSkm3iFbY4XSl7e1pcLGr3onS6ofPLS8ioChxHbiva+p5/R81/P3aiXy2vZZ7pg3lsdaunPGUUFJMeh7/5xYtfeuxlZu4/dwhONz+uEpFYwrs6PWgKEFknYzL7+elVdX8/PRigkDVgRZy0wOa9OB901M40Bz6XFTb+837W7j+zEFYjTIGWcdjl5zMwuWVzBpfqB0jS1LCXah4hC9MFsSRNaxoLVhNZGOqwlG4o91WHnl0zUi4Jvfh2F17tSKdlbd+PHIsznsCwfFGh5oHXXzxxUydOpV//vOfbN0a2rYdPHgw55xzDlZr2y2W4/H666/zzTff8NVXX8U8t3fvXoxGIxkZGRGP5+bmsnfvXu2YcIdcfV59rq1jHA4HLpcLiyX2x/2RRx7hgQce6PD9HC12N7jwB4I8PSNS0QRgypBePPijYexr8lDb4tHSWM4t6Y0nEGBQbhqZViNfVteyfP0ebp4yGIBfTh2E1SBzcn4GX22vY3g/W0RE+5rTBrA4LOqtRqfTLaEJ0WyQtetQnWq9LqRhH6P4kGbWNM2jKSvOomJXQ8Rj4dG0eAWu4Y7FvdNL0EkSgaCC0+vH6QtoeaX3Lk0s/bZg2lDsKUemrdzo9KKT0FIJot9HAn79P6PivvZEpatsr9Hp5d/fHUCWoJ899FtVmp/B1zvrtELPaAfu2Zmj8QcV9jd5mDq8NznpZl5eU01JXnrM+d2+IGtalU1+9+EWbjxrMA8t38gt5wzm2ZmluDwBXpo9ht42Ezp06PVg1ckohFI9dDqJ684YxJfVtZT0sWlpUx5/kGtOG8CDy0MFn2XFWZQW2LUdpzvOHxJyvnUS9hSTFjVXFYjmtTrt8aLG639ojNvDwOkNsG5XA1eXF8WMbdXewm3s6vIB2KwG9LKExxfE6QuQatZr2tuJ1JDCdw2e/bgqputnR+xOjag3ury88fOJCZVh7l26ocv10I9VjrV5TyA4HulwR0+r1crFF198xG+8a9cufvGLX/DBBx8cUYFoV3DnnXdyyy23aH87HA7y8/OP4hW1TZPHR4pJz3P/qoroCKhOwAdbPDz78VbmlBVhNYTSSn734RaG9LFRmp+BSa/T8lVvP1fHtBG9OXtIb/Y4XGzb38LJ+TZaPEHNubYaZa2pifq31ajjoR8NRydJvLxmsxatm1tepKmiZKeZ4kaxrEY5FGmXJDbtcfDYJSeTk26ixR3AZjWwp9FFdqqRg81erEYZm8XAtv3NONw+Uk16HvnxCB5cvjEiOuf0Btiyx8FlY/K58631MdG2u6cNjdtQCVon7+kl5KabQ+kxSeSohm+z2ywGjLKOO99az5xT+yeUmFtdVUuz209urI93wtJVtnewOVQfkG7Ws2bbQR6/ZARpZgN6naQVeoazpqqWDIuBW84+ia921HH64F6aYzm3rCjm/M2tbep720xcf8YgHl+5ibU1DRhkmeX/3cGNU07iiZWbuPaMYtb9UE95cTYBBQKKglEnYUbm1x9sYd5ZgznY7MUfVNDrJIqyrBRmWfAHFUYX2DmtOJusVBOl+RnMGl9IitHAy2s2U1pgp3xgNlZjKMXlvGG9efbjKu5qddqj7e3+C0o4pTCTs0tymef2o5d1rNp6gD9+up0xhfaIHaXwsR1tb4tWVzNqRgZPvr8l4jM8e2gOD100nHve3hDT8Cv6c55bVhSzi9WR3PDv65zc+eY6zc5emj0moqNoW68VHOJYm/cEguORpJ3yjz/+mHnz5vH555+Tnh7pRTQ2NnLqqafywgsvMGnSpKTOt3btWvbv38/o0YckuAKBAJ9++inPPvss//znP/F6vTQ0NEREy/ft20fv3r0B6N27N19++WXEeVV1lvBjohVb9u3bR3p6etwoOYDJZMJkMiV1Hz0BvaSj1u1l094mXr9mAk1uP40unxYRO3VgKAo9ssBOeXEWf/p0O5eNL9Qm6udnjUZtxFrb7OXOc4fQ4g+QnWrmqY+qGJKXjlHWUbGrgUnF2YwsyKC2ycu8ycWMLrCTapTJTDWyYOkGrpo0gDVVtfx80kBeu3oCv/7nZhatDimo5NnMvH7NBJ5YuZmKqMWD2xfkF2cVk51qjsmBLS/O4tWrJnDVK1/x+KUnc+/SDTGNkBbNGcvcxV9pjvlpg7K5/8Jh3PHm+rjRttntqEe4Ws+TSP9dpcXji9lmnze5mIqaUM7xjHEFbb5e5JRH0lW21+zxYTXIBIMKo/plYDHoSDPJnD44hyf++V3M8SFN8IE88u5GSgvsWu42xK9ZUHeBZEkHksLa1qLmYFDhusmDeGLlJm6ZehIeX5DVWw9QWmjHKuswAEFFwR0MMv+swdy7dAN3nD+EDEsKj67cxC1nD8Yoy1TU1PP6lzX8afZY7l92aPwvviLUXXfL3iYuKe3L29eX8eDySv53Yn/mTS7GFFb0qeqcnz88j9pmD/cu2xCTevLujZOwWw2a0xovhSTc3hJFwT/YtB+AJ34ykpp21JBsFkNM9Lo9u1Pt5od6J7e/uS7i/cMbOLX1WkEkx9q8JxAcjyTtlP/ud7/j6quvjnHIAWw2G9deey2/+c1vknbKzzrrLNavj1S+uOKKKxgyZAi33347+fn5GAwGPvroIy655BIAtmzZQk1NjabyMnHiRH71q1+xf/9+cnJCDTU++OAD0tPTKSkp0Y559913I97ngw8+OGylmJ5Go9PL/cs28LNT+/On2WM1DWOVsuIsygcealhy7rDeDGktHlOPM+l12K1GrEaZgdlWfEEFn0/hiQ9DDonFKHPA4aEw08olpX3x+AOY9DIHmtxkpxrRSRL1LV4WTB+GLxDkhf89hX6ZFn61YiNjijJZMH0YDy6v1HLP1cVD5Q+N2nUqhPJy4xWlfVPTwDc761h8xbgIh0Rl1daDSMB7N06i3unVcmBrW7yMzM9gzqn9Ywos20PNbU2k/65isxhjnJbwFuT5mZY2C9vS2jm/oHPIsBhp9rjISjNRVV0HQHFOCooixU3vkFBo8fi1xeu4/plAyFnX6yStmFqSJL6pqeeL6lomFWdj1OvYUduiOasLppXg8gS4/sxByJLEk+9v4ZazB+P2+rGmmNARGvsmSYcrGJIuTDMa+HpnHfdMK8HjC/Dg8koqahr4x88n4HD7ue28IVzvDpBm1tPcmrP+m5+Mwu0P8Ot/bmFMUSaDclL582c7KM0PFW6rRdtOr5+vd9SxfP2euM21frViIw9dPIKD+5sJKAoPRikbqcep9tbi9UdE4KM/R7c3QGY7UWl7HH3u9uwuzWyg0ellZ60z5j7Cd/Tipe2IOg6BQNBTSdop//bbb3nssccSPn/OOefw5JNPJv3GaWlpDB8+POKxlJQUsrKytMevvPJKbrnlFjIzM0lPT2f+/PlMnDiRCRMmaO9ZUlLCz372Mx5//HH27t3LPffcww033KCt+H/+85/z7LPPcttttzF37lw+/vhj/va3v7FixYqkr7Uns9cRKr68Z3oJDy3fGHcb/vozirW/mz3+mO3kDbsbuWhUXx64oAQkiSdXbuLmqYO5/fyhBAJBrAaZfpkWXvlPNVmpRmqbPBRkWemfbcXp9ZNm1mNPMfFAeARvzlguG1/Ifodbk4GDkKzc4ivG0uT2xzgGK+aXx1x/eLpLns3CyAI7V2o5rDoanF5SjHqMegm3P4DZKNPo8iJJIa3kilZHWJ2cS/Mz+Nu1E9nf5GbK0Bw+bI3ohROe25pq1vPaVeNpcPkiWpW7fQHsVgMefzAmEu8PKkkVtoW/j6Br8QaCfLa9lmkj8shNN7e2mzfQ7PHFTe/4+7UT8QaCmi74leUDIsaimroFobqN+y4Yxvkj8vD4AvS1W8hNN5FukUECo16HQdaxu8HNyPwMrEYZo87AD/VOiuxWfCjoJAmrLJOfZQYJSvqk8/WOOk7uF3Kqbzt3MClGfYQiENDa+XYgfexmDjR5NJu7d2koCq6mkf157lhAIhgkRlpRxWqU+em4An75t/+yqqqWxXPGavZmTzGQYjLg9QeQJImgonCg2YMS9tp4n+OC6SWMLsjgpdljtAVM+MI0kQ2odtfk8dPHZsHjD3Cg2YNJL7PP4dbS2RriKDdV7Gpg8pBezAzbDVQpL87isjEiJUMgEPRMknbK9+3bh8GQOMKg1+s5cOBAp1yUym9/+1t0Oh2XXHIJHo+HqVOn8vzzz2vPy7LM8uXLue6665g4cSIpKSnMnj2bhQsXascUFRWxYsUKbr75Zp566in69evHn/70p+NCDrHR6eX7ehdWo4yiEBPRUiNFZoMu1OkyzUxQUahriWygoSjw4DuV3DNtKE6vn19OPQmdTsfrn+/ksgmFfLG9lmXf7mZkgZ2/fL6TO88fissTwBsIktaq/PDou5Ha42on0bllRREOQJ7NjE6SIpqgqEQ7HIAWcayoaSAvw8zGzxsZlR+Zw6rmpD//r4xgk+MAAMptSURBVCrtGuZNLubbmvq4XQsBJhVn8eBFI5A4tNUOkQot4Vv34U6Hmgowt7yIqcNyYyLheTZzzI4FRBa2rdvVEJFDK+hamj1+Xv+yhjMG98IfVLCZ9YCC0xuISb+YW17EXoebnHSTlmaVnWrkgQtKIoqbITT2LhtfyB1vraeipoH35pejALJOYurQ3nzf4CYv3UyLz0+Dy8fZQ3Lx+oOgVyhoLTjVI6GTwAOYZT2fb6+ltMCOP6jwQ0PIvqcNy8OvKGw/0EJuuhmPP4jLFyDVpOP84Xnc/fYGfnnOSby4ajvXn1GsaYGb9DquPX0AVqOeu9/ewKw4Mojh9x0+vlV7O6XAjtMb4KmPtmqOrvoZqKpL0WksEV16w3oBhC9Mo3PXIfSbVu/0seDt9VoK0KMrI2VYF0wvYa/DTaPLT0GmlXmTiyMc/UWrq3n9mglxbXB1VS13vbVeFHsKBIIeSdJOed++fdmwYQPFxcVxn1+3bh15eXlHdDH//ve/I/42m80899xzPPfccwlfU1hYGJOeEs0ZZ5xBRUXFEV1bT+Rgc8i5vuHMgTERI7VR0IEmNwZZR680Ex5/gF5pJq0oTeXkfhn85fOdSJJEilFPiy+Az+lk5oRCfmhw079XKrefNxSzUcfoggwWLquMyemefWp//rO9TpsY1U6i0U5AyCHRxY3UpZrlmMfUqP68ycU8tDzUrvy1L3ZSWmBnblkR3kCQAdmpPLQ88prCXxcv53VVqxLDEz8ZyR3n+Wly+yKk36LVH6IdlrYi4b5AsM0W5AumlcRVthB0HelmA5eNK8BikMmzmWnx+HH7g+h1Om0sqSkOGRY9QQUanYei6EsrfuDF2WO49Y2Qg6kuys4pyeXpD79jXFEmt587BEkn8eX2WgqzrWSmtCqoBAL4/EEG5aYiSxJefwCTTiYAyITaKqvW2+zxM7rQzgPLKplTVoQsSbww6xR0OokDDW4+3LSPktYCbV8gSGaKBWer8std50vMHF8YoZJUsauB84f3ZneDO2GRqkr4Dtrc8iLN3g40hTrb3nn+UBYui1QsUvPro3ff2lJc0UkS7904iYyw3HUI5a9/8t0Blq/brcm2JuPol0ftQDm9AQ42exPaoCj2FAgEPZW2BaLDOP/881mwYAFud2zrcZfLxX333cf06dM79eIEbeNw+9iyz8HZJblkROVJhqJjOvIzrTy2cjOX/fFzGlw+nF4f/ewWylvbiVuNMmkmmVeuGIfbH+Sut9Zz29+/xZZq5a631nPZi5/zkxc+Y/ozq/mqul7THg9n1daDvLwmlCKiUt8ScgzCNcatRhmjPuT4L5tXxuvXTOCN607lpikh2bb9Do92XSpq0ZaaGzumwM7MsBbi1/3lG76vd8Zckyr9eMbgXm1Ozs1uPwNzUhlVYGdgTqrmkO9pdDNjXAGL5ozVClrDI92JHI6X10TmjMfD7QsIh6CbyU41cuqALLyBIBKhtI80s57eNpM2ln7592/ZvLeRdIuR7QeayW2VQKyoaeC5WaP5of6Qhv/TM0qpqKmnrtnLrAn9Gdc/k999+B1OX4CiXqlkp4bSub7eWYdJH2r081V1Hd5AACQJX1BBCSoEAT8h59yvKFT+0IgvEGRkgZ0Uox5ZkijIDHUIfeWzHdw0ZTB9bSFnPyfNxAPLKmlSnXBF4uU1kfUSr39Zg9kg0yvdxLJ5ZaSZDfSxhSRIowkvkAy3t9ICO/mZVvY7PDF2tmh1NVe0Lh7mTS4O7VjNGs3UYb0T2t2qrQdDuxVREfJPvjvA8L7pzBpfyKI5Y2NsN5Hdra6qZXHU74+iKLSFKPYUCAQ9kaQj5ffccw9vvvkmgwcPZt68eZx00kkAbN68meeee45AIMDdd9/dZRcqiCXTauT0QTk4XH4Mso6HLx7OQys24fQGOPOkHDb80MiK1rxtNep0z/klNLl8/HLqECS2MKbITlaqCUVRuL81Ar761jNCMoJRk19OmimhvJ8ahVMjiPYUI8/PGq1pkK+taeC5maNxegI8tjIy9WTBtBL+eu0Edje4uWdaCRU19TzYeh9Wg8xNUwaFlFuunkCG1cCDKyJz5+OpLVgNIcepvW6h0ZNzPLWJ8GJZiCzkjNelM8MaP83rUDpRSE2jI51BBUeGzWrEqNfR7PLTy2bC4fKRlSJz/7JDbe+fmzma3ukmnv/4O66bPAh/QKGipoFnZpTSHJZaFe4c3jb1JFy+AM99XMXIAjvNbj9BRcEbCCmwXFFexMFmN4oCZr0Okyyz/WALA7JTkHUSMhAk1M1TUuDUAVkEFfjJ6H64/AHSDKGIutPn4/apQ9jjcGu1GGrOd7ol1DBHam0UVNqqZ15R08ATl45kv8PNM/+qoqKmgbnlRYwusDNv8iCuP7OYNdtqtdSPjNbzXHv6AAqyrCybV4ZR1mmFofFSX5zeAHe8sY6/XjORF1dv16Llz88aHXNsONF2V+/0sXzd7ogIuJoao6JG4xMVcJ43PJeSvHQyLAay4uSph7/OF1TYdqBZ2J9AIOhRJO2U5+bm8p///IfrrruOO++8U4tESJLE1KlTee6552Ka9Ai6jt0NLu55e0OE1vakQdksmj2Gua98DUBuWEGX6kgqEjR7Atz6j29ZdMVYZEnC5Q0gyxJraxp44pIRNPsCcZ3v9qTGvK0NjKKLvRbPGQsSbNvfHFHcGZ5ioyihfPMGl4+SPjZW/mISdS0eMqwmXlq9XSuse2d+WUK1hXACihKK3rexXQ+R6ieJGpZEF8v6gwrPzRytdT9V6WMz89zM0ZhkndY4RSVRykuynUEFR47daqTR1YISVEg1G/D6FW2cX3PaAPY2urAadcw/azCfba+lj83C0zNKSTHqqXN62bjHEZGqYTXKpJkNNHsCrK1p4Napg0k1G3H5/LS4/Tw3czSZKUbSzDJuX5CCLHD7g8iShEkHCgoBpFAOOqBIEooSctAfWl7JrAn9sfRKYW+jizybhRavn111Tm4/dwg6CcwGPX/+fAfnD8/l3RvLafH6eev6UzHIOk4b1Is0k57/7qpn+fo9bAmTS232+LEaQ+lsowsymH79qZj1OqxGPYuvGEsgqGiLlXfml2mFoYls6bJxBdwXJa/YXpfeaLtbEEd1KRqPP6ipyETLvm5sLVYf0juNrJSQkx1ug8L+BALBsUCHmgep+dv19fVUVVWhKAqDBg3Cbrd31fUJ4tDo9HL7P9bFNL9Rncl//HwCLZ5ghBOtKoI0tHhJt+h5ZuZoXvx0G1eUDcDp9SPrJF7431N48dNt9M9Ojfu+7U20eekWnnh/c0Qh5OgCO0HAZjbEqD5Ep9hEaCYXZ/PIj0dw55uHIvZWo4wOiZdmj4npTBitG61GDcf2z0zYLTRa+aGthiWfba/Vuh/2zTDT5PazYv0eLfpYmp9BbrqZnHQTVoPMo5eczB1vrNOcgkRb78l0BhV0DqlmPSlGPQrgcPrQtQ5ntRnWfocHe4qJ3Y1uctPNZKYa+f2/q5hbNgCr4VCDrP1NoVbkc8uLuG/pBv53Yn9emHUKGVYTC9+p5J7pJVgM4A8GCQYDyDoDi/+zjevPGERds5v+WVZkQrrmOkLpK0Gg9SEWvLWeMUWZmA06WjwBMlNM7G5wkZdu1vLNRxbY2by7kZ9N6A9IPLZyMzecWYzHH0AvhzrYIoWUVipqGnjt6lDhY0Wc4kkI2cIjPx7Btv0tLF+/WytwlZCwGvUsmjMWRVFi7MxqlDmnJJfS/Axmji9s0ybD3yvG7uIcF60HbzXImuxruN2V5mdw7rDeVNTUc05JrmZH4TYo7E8gEBwLdLijJ4Ddbmfs2LERjymKwoEDBzS9cEHXEZJBjHUerUaZkfkZmPV6vH4/ZsOhwsm+NgvP/3sr888ajNUg89SHW7hxyklsO9DMgOwUAH77wQbW1jSQbok/LCp2NTBpUHZcx7WsOItUsxxRCPnaFzuBUJReUWIj7dEpNuGsramnye1jTll/ZowvIMWox2Y18Oh7myIm8LLiLK4qH8DJ/WzAIYUTty8Q+jz6ZTC+KJNg2HMQ2lWIVn6IblgSvt3tDQSZPiKPipp6DLKOZ1vTAeIquwzK5vFLTuaZGaUcbPbS5A5F9BJ1NRSFZ13PngYXPzQ4MRkkdDqJNIsMiqRFXmubvBhkHf6ggsPtQ1FCRcn/MyafQDBIdpqRM9JzuHfpBua0RoxHF9hZtLqae6Zbcbh97HW4uHHKYNy+kDTnD/UuxvTPZG+ji3lnDuKR9zZx13lDcfoCGHVyROqKDggo4A4EGFlgZ9qIPO5bVsmNkwdhsxhIM+tRJLhvaUiz/PbzhvCjUX34urqOf3xdwy+nhtIJ133fqKmzSFLI5uaWF/Hrf25OWDypjvEGl5dhfdPJs5nJyzDz0PKNEWN28pBe3Dt9GAuXV0bY+RMrNydlk0BM506I3ygonh58ZqpRazyWSFFpbP9M7dx9MiyaDXr8AWF/AoGgx5O0U261Wtm5cye9evUCYNq0afzpT3/SFFf2799Pnz59CATaLnITHBmqDGI04duzpfkZbDvQxKRBOZQXZ7F5bxMGvcT1ZxYDCnsdLm6YPJgFb6/nmkkDkSVw+oOsrWngpdmnYJJ1Ec63OnGPL8zkktF9uXdpZUyHv4U/Gs7Ogy1AKIL4xtpd3DRlsLbNnJOux+mNlTwMT7FR32dMgZ28DEuEokp4l8xw1L/HFWUybUQeN08ZzP6mUKOjueVF/Gn1di2qpipsmPQ69jd5tJbkKuENSxJtd08qzubk/IwIBye6O6nZIPPv7w5w/vDeDMwJ7TpU1NS3+b2KwrOuo9Hp5d/fHUBRFCYUZVHn9JJuNmCUJV6/ZiIHmtz0sVuobfbQ4vZRkGnB5Q1S5/RSYLeyt9GNzSLxxPtbGFlgp1eaiSlDepFqCo0Rnz9IusWAWZbZ63CFflUlidICO05fgOy00M7KT8cU4A0GkXQhR9xAyCnXBxX8OgmfoiDrdAzqlUJAUZhbVkRGigGn2092qolmr5+7zx+C1ahnv8ONTpI4Od/G0D42dEjsdUSqs1iNMi0eXYQySnjqzbWnD+C8YXk8uLySRaureev6U3n03ZDiSsXqWFv7eHNI8nZuWciWMlOM/Ob9LTFR7nCbLC2ws2BaCW5fIELdKJzoRkGJ9OBfu2o8q9qxu8+210Z0JLW1NiYS9icQCI4FknbK3W53REX7p59+issV6Ry2V/F+PNPo9HKw2YvD7evUAr7o8+olCbm1pXc44duzs8YXMrS3jQ3fN3DHeUPR6yQ8/iBGWeKPn2zjhsmD2dfadOiu84cSANxeP3//+URknYQnEOTuaUP5od6FTpLISjXyl893kJ9pRofEwh+V4PErmhoFwOMrN3HdGcUsnjOWXJsJbyA3IoI2b3IxfW3miO1opyegRc/DJ2KDLLGn0cWcsiL+d2J/+tgs6HRQkpfOleUDYhqQqDnfLl+Ayxd9SWlBBg9fPIJTB2Rpzki8KNm4sKgahBQ61DzURNvdq6oOMq+16E/N008kjzhxQJZ2/mQ6FAq6hoPNXnLSTEiShMsfwGY1cP+ySn510XAeXrGR/3fOSTz+3iZuOeekUBdKX4Dv9jVRmp/BDw0uctNDtQ6qRvei1dX87doJpBj1BBWFFFPoZ9Tl8/NDvYsJ/TPZ0+QmJc1MQJHwBoI4vX4Ks6z4CWCR9QRRUJBCaSut9uzyeOhlMYdSvhSFZrcPi5xKSqqMP6jQ4vaRmWLmy+o68jOtPPLuJm49dwgvflLFrVOHIOtgwbQSPt8eGrMNTh95NjN7Gg8pZqmqRE/PKI1o7HXbuYOpd3q57bwh6JDaLKiUJYk5i7/SnOR4rKmq5eryAexxuJF1obx5Yn+2gEi7g8SpXqrsa0fsTkXYn0AgOBY4rPSVREhSgl/d45x4ih2dUUAU77yTBmVz7/QSyouzWB3VxEZ1WnPTTFiNMi98uo1b31jP4jlj6Z1hQqeTmD9lMPe+vYEZ4wsZ1z8Ds1HGHwySYTXx4PJKZkQ1B4FQx8IFFwzD6fXjcHnIs1l4fGWlFpFLM+m5+eyQY3PZ+EICAXhy5WbWhkWy/EGFgTkpjC3K5P5llayuqkUvS5j0OqxGmWdmlGI2yFw+sT+DclJZsHRDwvzX6M6YAAZZR7PHzzMzSqnY1UAwqGBsJwc+Ojpmsxq1PNRo3eVw1EWRmhqQSB5xwdINPNuaqxrteIQjOnt2LY0uL/6ggt0SakufZjawpqoWtz/Izyb0R6+TuHxiEbIu1Knyyfe3MKa/HUknodfpkACzQebFVds1TXNV7eSV/+zg5rMHgwQ6WWJMoR2vAnarCacvlN8t66BPmpmAomDQ6XEFA6RLOoJS2A+wopBtMYfyyxWFfQ43I/tl4FOCBAPw35p6RvSz4QkEGFOYyYJlG9iytwmLScetU4cgSaEGRC5fgHfX74mow/j7tRO1z8Kk1zG3vIjXvtjJTVMGk5tu5oqyIop7pXJ3a7Hl87NGt6nFf9Govnx4y2k42lA2shpl+mRYeGl1pKZ4vN/FcLv7dOvBhLan1rR0xO5UhP0JBIJjAUlJMryt0+nYu3evljOelpbGt99+y4ABA4BQx8/jNX3F4XBgs9lobGwkPT094rlGp5d5Syri5lmfNij7sAuI2jrvlCE5zDtrEM9+9B2XxXGiH/nxCN5dt5u1NQ1cc9oApg7rTbPHT7pFTzAI5z21ilfnjqMgy8oDrYVp97y9gVEF9rgpImrqyD3TS9ARchpknY4H36nUtpMrauopbX39PdNKuOT3/4npgPnszFJSjDKpJgM6nUSzx0+aSabB6eO51m6caifO8PPGKxYrK86itMCuRfRev2YCB5o8ePxB7FYDA3ql0uLxM/nXnyT8jD+65XQtvST6s/9ufzM/eeGzuK+7acog1u6sZ86p/QG4slXtpr332N3giij+hEM5tnlC/SEubdlesmza48AXCGKQJUDiYLOHa/9vLW9dfyp1LV7sViMOtxdZ0mExyuxudFPX7GFgrxTsKSYONntJM+sIBEEnSa0dQQ08unITN599ErIkAQog4Q8GeXzlZm47fwgWWWa/w0VOmgWdBN5AqPgyRScRupIQgdZ/hxzykF75VzvqmDAgiz2NLmwWIwpBrAYDexpdpJj1XPDMGhbPGUtRrxT2OVwoCvRON7NmW62WU55i1OMPBrFbjdQ7vUiShKIoobQWb4BX1oR6Drw0ewyLorp0VuxqSGh7kwZl8+yMUhqcPqoONMdIgjq9gQg7jibR76K6K1jb4uV//hBre+rvgaoCk6zdqQj76xidYXsCgaBjJB0plyQpIhIe/feJSluKHUdSQBR93uitZL1O4p7pJSx4O1KKzGqUGZSTqrWoXhyWl3nTlEGM6pfBvMnFFGRZafYGGDcwE5cvyOqqWq4oK9Kc3GtOG8CkQdkEgqFGK2ML7VhlHUHg6x11LPt2tzbhqpGtuWVFLFpdTbPbH7cD5muf7+Sy8YU8/fEhzeSpJb01hzz8XNH/jiZcF33RnLE8vnIzq8M+h7OH5nDfBcNYcvV46p2+GKehreiYzWoks43v7I+fbuftG8pYu6OOnHRzm9+jGo1vdHpxeQPcNGUQd00bityahpQldJK7lEanF18giKKEHOp6pxejLPH0jFIMso4XV23n1qlDyEo1oSOU5vXymmpuP3cIqUY99y7dwD3Th2KWZQ40u5Ek6JVqxukL8D9j8nn8vU388twhQCh9T5Lgfyf0xyLLOL1+UkwG/IoCCnj8Id39ICEX3kDIEdcTcsyBVuc9SGlBqLhYkkAhSIrRwOqqg6xYv4f5Zw4CID/LQovHT3aqma931JGVYtKKpsMj3eFqSKcOzMJuNfLsvw5p/eekm2K6dE4MS/2KZu3OeuqdPhZESbJOHtKL16+ZwMFmL73SjB0urFTzv9nfHPd1asrK/iYPOWmmNr/3cLsLT/974icjafH4cbh8CXPcBQKB4GiRtFOuKAqDBw/WHPHm5mZKS0vRteqKnaj55PGUA8I53AKi8PMm2kqOzulUj2t0+WK2d61GmbNLcjDoZDZ+vgN/aV+cHh9Th+axr7WNtjcQ1CLaL6+OLLKaNCibX100nF+9U8kvzh7Mfe9sZN7kYsYU2LG25tSqsosWoxzTsvvlNdWUFtgPdUhUdb4lJeIewhVa2tNF9/iD3DNtKH/6dBujCuxc0VrImWLUk5Fi4M4310Wce1JxFs/OLGXJFzUs/NHwNifjtra7SwsyeG/DntZ/ty0Hmm4xtJneJByCruVgs5cmpw+TUUaSYN5rFbx53ak8/dZ67jp/KCf3y6DB6SU33cw+h5t0i5GKmoZQHUYgyOa9TVgNer7eUceoggyCCnxRXUf/rBR6p1sYkZ+BBDhcoaZBGVYDZoMupLCilznQ5CbPINPiD6DXSyjSIbUVOPQDLBNqHuSRwKCT0IW8cbJTzaDA9w0u8jOszC0rwmY18NdrJqBD4ttdDYwqsDMkL50H3qnUih/PKQnVdMRTQzp/RF6EE97sjtzdXLS6OqJZVjRzy4t4aHklIwsymFPWH39QoV+GBbNB5v5lG1jVmgLTFm39LiayPac3wF+/rOFXF4+gzult8/zt2d2AXvFlXwUCgeBokrRT/vLLL3fldRyzdFUBUfh52yt8UrnmtAEsXhNqex0dZZ5bXkQgCI+8W8mY/pk8+c/N3H7eUPY7XKRbjFiNMv3sFuaWh6Ldq6Pea9XWg+xucHHZ+EIcLT6WzivD6wuGum62qpj0tVn47YdbuGdaScRrwyPpz35cxW3nDqZ3uinUYdEdiNgF6BUWAVNzSBMVnBVmWehjMzG8ry2imUhQCfJklEwbEPpbknjyJyPJbSfCHZ3nqlJWnMUVZUVaPrui0KYOeopJzy///m3MborQR+4emj0+cjPMeHxBmjx+DjZ7qa5tYcveJtzeAOeU5KKXdSgK/HHVdq4/o5inZ5SikyQanD5+99ORfF/vYkR+BvubPLz46XZuP3coCkGa3X7OH56HLEmYjTr0Oh0GWcefP9vBL84ajMvnJ89mRia0q2iWZXbVu8jLMGOUQkWe4VUPfgk8AT9mWc9XO+oYlW/ni+paSgsysBp0ZNpM7Ha4WmtADOxr7e5psxrpZ7dou2OqAtPaMAf9D/+u4qYpg2nx+JEUIrT+oyVQnd5QAXa0ssn6HxpQFDi7JIcLR+axdkeo6LNfloVvdtZHNAbrSPOgaBLZ3mmtKk856WZM+tgGXeHHCbsTCATHIkk75bNnz+7K6zhm6aoCovDztlf4BIcaoPzx0+1cURYrdDCmwI5eJ7G6qpabzx5MaX4GOiAr1YxBJ7Fgegnrv29sc9vaZJB55bMd3HHuUL6orqWkTzoZKQb8AYX/u2IcKSaZX0wZzK9WbOQXZw/WXqdGvFXlh3OH5bFg6QatVfjvZ41md0NIySUQVLQmPRt2N/L4JSMoLbDz9Y66iGvpazOjKJBuMWrnUnn7+rIYJzncsa+pc9Ls8ZPd2vlP3d62WQykmELFgPG2u1NMer7eWR9RYPrHT7fz9IxSFIgovD11QBYmvY56p5eR+Rms3VmvvUZF6CN3PRkWIy1eP5W7GxnRLwMIOZ0hrezQ2H2sVXmlpI8Nq1Hm+X+H1Ewy02SCQQPbD7SQYTWSajIwol8Gi1Zv44YzB6GXddQ2eUi3hha1Rp0OV8DP7ecOwRMIkq7To0MKyR/KCi2+AE0ePzlKEBQdujAVJYWQg54q62kJBhhdmBlqGGSzYNbLpBn1+IIKu2qdDO2TjlEf0spX07icnkDE4v3yif01B31MgZ2rTy/m9/+u4rozivnvrvqItCudRETh+LWnDyA/08LuhkPHyJLE2UNzeeTdTUhSSLlo+fo9oTqS1aE87+gUmMlDemnF4OGL6S17HGSnGiNSS9qzvehUk3iOu9Uos2B6CaMLQjZ+RVkRI1uVWsJtT9idQCDoqRyR+orb7eavf/0rLS0tnH322QwaNKizruuYoa2oTnSTjGRpdIaKne67cBj3L6tMmMahdryrqGngmRml6CR46/pTefrD75h/1iGn2GqU6WM30+gMSfnJEvTPsuJX4N6lG7jvR6GJbNafvuCF/z0l5n2yU408dsnJmA0yPx1TwF6Hi8IsK01uP4+8t1nrGKg2Vvlw8wHGDcjkb9dOIDPFiMcX5G/XTiTNrOeZGaXc16qsMm9yMX3tZmqbvVqUTd1qN+olRvS1Udvk4WCzJyIKB6GI9aj8DO6Lcsgh1DgonHjpP9mpRv48dxyPvBtqRhSdg6sSvd2dYtLzXqFd+67VLfXHLjkZjz+IAty/dEOMYkW0WoyK0EfuWryBIP6gwu5GNxINTCrOJifNhFEvEwgqBIIKQ/vYcHoClOZn4PYFmDW+EJfXT06qiS21zZj0OprcPmSdxNRhOaQaDTg8fqwGGYWQw+rzB6n3eMhNs3Cw2Y3NakLWhRzyumYXWakWdtW2cFJOCrJOhxonDpWHgo9QCosPMOpkHntvEzedcxJ6SeKrHXVMHJCFyx8gP9PKxt0OTu6Xoe1mVexq4JyhuZxTksuYAju3TT2JDKuR7+tdzBpfSK7NzLMffcf/O+ckDjTF2tJ5w3N56KLhPLh8IzPGF1LX7NGi8Opx4UXXt547ROvAq+5+zRpfGPG5v/5lDa9eNYGFyysjbKG8OItHLx5Bk9uvpZcla3vRhDcHavH4Qgv0tzdEqL0ksj1hdwKBoCeStFN+yy234PP5eOaZZwDwer1MnDiRyspKrFYrt912Gx988AETJ05s50zHH+GTQ5P7yAqIwvMg1ahrYaY17rGLVlfz+1mjMRlknvt4a6jpR00944oyMco6Lfp17ekDqGvxkmYKXVdWiok9DjfPfLSVVVW1yJIOh8fLUz8dRZo5NCS0Rj6FdlJMeoyyDqOsoyjLSq3Tjd1q5vPtoUk58xwjz370HSML7KQY9eTbLZwztDdOX4AHllVGRK1fu2p8xDb7BSfn8Uxrd0x1u9wbCHLbuUN5aHllhAMQzpqqWuqcvrhpI1bToaZAqtzi4qj8+kVzxvKrdw9JLSbbhrut71pTzEnQTGVueVHMLoTQR+5anF4/Hr/CiL42bn9jHS/NGUuKUaa22YtilHF6AowusJNq1uPxB0gx6fEGgmSlmmj2BbBZDKzZdpBzSnpj0ofSXPxBJdQx1iCzs9bJD/UuSvraWgtA/WRYTVTU1DO+fybuYICsVAveoJ9BvVJQgGavH70xZGcSoQi52khIB/iCCredO5R9Dhdmg57R/TNQgBaPn//7bAe3njuEfQ4PEBrLFoOONLOeX63YyOUTizDIOu55a702DlfcWMa1ZxTj9Qe16LqK1SgzMCeNvY0ebjt3CA8t3xjX5qJ369Tn/EGFeZOLyc+08Pys0ZriS06amYdaNdDD+aamgSZvgIdWbOyw7cVDLQ49ZHuRO5aJbE/YnUAg6Ikk7ZS///77PPzww9rfr776Kjt37mTr1q0UFBQwd+5cHnroIVasWNElF9rT0ZQDjoBGpzeiMMnpPdQaWnWwVdTodX6mlfuWhoqr5rRGre44dyh//LSKhy4awUPLN3Le8Dwef28TN509mFevGkeLL0C6xcCqqlqyU434WmXTrEYfKQaZKUNzuGxcQVyN4ocvGkF2igVvMMiK9XtYXVXL/10xjhtbu3fqpJDj3ezx8/C7myKu2WqUsRhl/jx3HM1uP3ecO5SgApdP7M99F6Sw8J1DUbWXZo9hVVUtt4IWQb/mtAGUF2fjDyikmGQt73VMgR2b1YBe1lHfEmqX/vDFw/nNB9/xaGuEP9xRnlteRJPb36bTEU70dnei77otJR41qhjOsaKP3FWNsbqDDIuReqcPf1Dh0UtO5qkPv+P2c4eQbtbT5PGTZtGjl8Fi0JGZYtR2mfY2ushKNbP9QDMTB2TR5PahsxgIKmA1yKQYZdz+AMP7ZmA0SNQ2ecFqwKwPNR8qLbQTUMCkk/EFA+h1er7YUcewfjZMrQoseoiRRtQpIR38r3bUUdI3Hasso0gSvmCQnBQTt547lAVvr+fK8gHcfPYgzhuWx9qdddyzdAPjijLJSTfyqxWbIsa7DglJByBFLH79QYWi7EN2F21z6m9MTroJpyfAojlj+aamHrcvwM1nD+KsITlYjXr+8tkOTbVJXWzPLSuKu2CeW15EXYs3oe3Fqx9pcPraHW8dsb1jxe4EAsGJR9vVOGHU1NRQUnKogO/999/n0ksvpbCwEEmS+MUvfkFFRUWXXOSJQqKJZdHqauaUFTGpOKSIkJ1q5NWrJrBoTTXVB1u0yU9Nc5F1cPXpA/mqupYFFwzlwXcqGd3fjsWow6iX8fmDNLn8ZKca+es1EzDLMhAkzWjEG1S4b3pJwsYc9yzdwN4mNw+0NgDKTjXSL8vCEys3M+tPX/Bp1UG8AYU6py9mEfHa1RP4zftbuHzRl/gVhUdXbuK8p1ax/odGHninkm9aHYaXZo/B2hpJdHsD3DXtJN69sZy1O+q49IXPuOzFz7li8VdkpRjZvLsRv6LwzMdb+WflXnyBINUHWyjKTuFv10zk5TXVNEYVxJbmZ8Q81p7SSzLb3e0p8YS/x5GkN3UnuxtczFtSwVm/+YSLn/8PZ/36E+YvqdBqAHo63kCQf3+3n3y7hZfXVPPx5gMEFZB1Okx6GaNeR1aKiYeWb0RB4ednDAIUMqxGHn13I3k2C0ZZ5p63NqAo0Oj04VUCSDpJa3cvSxJGWcHQ+muaYpTxBYMEFQV/MIhRJ/PgO5WcUpBBqiwTUILIhH58VYfcDxgBnxQaa+P6Z6LX6WjxB/iyuhYF8Ctw99vr2bS3iT4ZFnJSTTywvJKcdDNrqmo586Qc3D5FSwmZNznUYddskHnk3U3sqnfy9IxSKmrqufKVr9m818HXO+q4oqyI52eNJs2s5+azB5Fq0vOv/3ca//j5qSxeU80Fz6zhp3/8nHmvfUOBPfS+4/tnsu77RhYs3aAVlL5+zQReaf3dSGRPbdme6tSr13f9q98wd/FX3LN0Q7vjLVnbO1bsTiAQnJgkHSnX6XQRsoeff/45CxYs0P7OyMigvr6+c6/uBCPRxOL0BrhxSQXL55ez1+Gmd7pZK24Mz+W0GmRuPnsQVqOMosDb3+6mqFcqO2qd/OqiEcgSOAMBTAYdBr2O/7tyLEEUPMEAaToZL+Bw+TDodXGbhkBIheXO84YwpiiT288ditUkc+/bGyJ0xt2+QMTEm51qZMk1E1i47FCzoXCnP17b7JBjLtMrzcQ5Q3tzd5geu5p+8uCKjcwaX4jVKHN7a7pLeM74366ZyB3nDcHlDfLKFePwB4NIkoTFIJOTHjn0o9UiYiJ2RplGZ9vFYe0p8QzITuHt6089ZvSRo3duVI4lBQuHy8cfP93OOSW9tR0XSYJHV27i/509GFDwBBRmTeiPTpKQZTAb9Lh8ASYOzMYgSzS5fDw7azSBoII9Vcask3F4fbiCCoVZVhQlSK9UCygKAUCPhEUnE0AhEAjSHFC4urwIi06HD7ARykWHQznlesALNLtcZFgsBICvqusYVWDnpLx0vtlRz+jCTOadPpB+mVbuems9c1qLK8N/A9y+kJqRKjmamWrk3tadtPC0FKtR5rxheTzQmmJiNcosvaGMCUWZHGhyk2428NC7hyQWxxTY6WM3U9fipcHlp8UbYGR+BgeaPdx/wTD+W1OP1Shz67lDuMEbIL3VwVcUGNHXpkW97VYD9c7I3znV9qJ7G4Tb387aFmSdlFA1qT3b659l5aNbTj8m7E4gEJy4JO2UDx06lHfeeYdbbrmFyspKampqOPPMM7Xnd+7cSW5ubpdc5IlCexOLooBR1nGw2cuV5QMoLbBjNoTyp61GmcxUIxOKsviqOtTcZ01VLTefpfB/V46jzukmy2rGqJMBBZ0koSAjBRV0Ogm3AgveXp+UxrDTG+DCk/tohZ3ROuMt3lC+rTqZ97VbOODwxG0QBKG81Oi87w27G1k0ZwxOb4Bmj1+730Wrq5lbXkSLx8/M8YUsXlPNKf0zWbujTju/upOwYNkGbRt+0Zyxmmxi6B78nDWkFx9tPgAcKpqNbrwSfp1q4VmKUY6bztGeEk+ezXxMOQRd1Riru2h0evH4Q7Kdu+qdQMjxCwahpI+Nyt0OJgzIwhkIYDboMOtlJElin8ON2SBx1pAcvtxRx/iiLNZsO8jAXin0tVlo8vixGvXodFDb7KZXqoUWv59UvZ7QnhNIrY2EUvR6vEGFNLsVD0BQwaeTNLUVPSHHXAGUoIKt1SH3BELpYQN6pZJukRlblMmGH0IKMt83uLT6DTjk1Do9AawmmXmTB5KbbmLR6u3kpps1u/D6g2zZ28RLs8dQmGXlgWWVETnXX++oQwH0OonhfW1cXT6AvAwzDy3fiEGWMBkyeb610ZfVKPPW9aeSl26mrsVDv0wr94Wdz2qUeWn2GJ7/VxV//HS75mDXtXjpk2Hh8UtGsLvRzYi+NgyyjteuHo9R1sWkwYTb36TWKHefON0327O9vhmWHj1WBQKBADrglN92221cdtllrFixgsrKSs4//3yKig7l6b377ruMGzeuSy7yRCHRxKJGhtXGHCplxVmcOyyXR348gkE5qTS5/UgSDOmTzq1vrA9FmtPNOD1+slPMBIIK7mAAkyzT1Co11i/DQpBDDjm0rzGcag51Oty0t4mCTCsrbiyn2e0n3WLAJOtw+f0Y9UYqakI7Jy+u3s7lE/truaxWo/5QIWmBnYIsK/scbkYW2JlTVoQ3EKTAbqXJ46Ou2UuqRY/VpGfigCzOG9Ybtz+ATpK0orVfTBkc0ejosUtOZuHyUJTv5rMHccHJfbS8e5VJxVksuGAYAB9tPqBF6iVgVGuTo0QRO0mSmLv4K03NQXXW+2RYDluJpyfmbXdVY6zu4mCzl/9sr2XykF70yQhFWMcU2Gnx+hldYEdRFFq8AUz6kLb4necNZXeDC5NBR7bVhDeoMLCXFacvQG66mew0M76gEmpXD7h8QXJSLTR5A6Qa9fiUkLIRgCJJGFsbBSmE/u/0BUjXOnoqGInSKtdJeIOhGPoDyyrZ7/DQzxa67mafn1H9MvjNB1u46eyTOH94b0Di+VmjyUkzM6k4C70soZPg/OF5LFy+kTFFmRRkWVk2rwynN4BeB3+9diL3Lt0Qk/Ndmp8BgFWvo2+mld0NLvpmWvi6uo45ZUUUZFm5P8qJV4tCN/zQGNFJdG55EecOy2X9941cWT6Ae1od+/C88UVzxvLOt7sj7Pal2WO0c3c0Yt4ZKlg90QYFAsGJRdJO+cUXX8y7777L8uXLOeecc5g/f37E81arleuvv77TL/BEItHEsmB6Cc99vDWmcKqipoEWT4B31+2OeO6v10zQVEf2NbrITDUTDCogSZhkmYXLN3LPtKFYjWZqW9yYjYaI14dHjaOZNCgbWZLYtLeJJddM4KvqOnLTzXj8Qdy+ICaDRG6amXvf3aAVWC1aXc1901P4c2tB2CtXjNM6DJbmZ7DP4aZXmplva+pj5NMWTB/GYys38XFrRBtCk3d4a3B/ILKbbE66iYpWhZe6Zk+MQw6hRkKPv7eZm6YM5v9NHUKj00e6Rc+jl5xMs8ffdsSuODtCZi08neNwlHja6jwYLyrYXXRVY6zuwuH2sWh1Na9fM4H13zdSVpyFzWrArNcRCCjUOb00uXxg0XPj5EE4fQFSTAZsFj1+YN33DYzKz8DlC9LPbkFHa7pJqxfd5PZjlnW4vT7Meh3PfPQdvzhrMJJOIqD4kSQ9/qCCDLj8AdIMOoIKSEoAWafTouUQiq67ggFSdTJN/gBnD8vhtEG57Gt2k51ixiDrcAUD3DhlMPscLgIKpJn1DMhOwajXccf5Q3F6AqQY9extdPOzCf0xG3SaI52damTpdaeyq9HFHecNwekJsHx+Ofscbm5/Yx0ef5BUo54+mVYWvlPJrAn9QUGTRVw2ryxuceatQG5rTnt459ALT+4ToWMeHkF/ZkYpgaDCjPGFXFE+gG9q6lm0ujrm3B2NmB+JClZPtUGBQHBiISnhieKdyPXXX8/ChQvJzk7crvlYweFwYLPZaGxsJD09vcvfT43YqBOLLxjk3N+tijkuXDs4nBXzy9jj8JBmksmzWdjT6EbWSViMMlZDqKvgwSY3AKML7Rxo8vKTP3ymRaVGF9ixGmSCKPxnW63WfGPSoGwW/mgYB5s8tHhCuelqtFqdQNWOole+8jUAz88azcY9DjbtbmRoayORoqwUHn53I7Mm9Gdvo4sRfTN4bOWmuGoNZw3pxS+mDEaSQkWfOelmXL4ADpcfiyFUKifr4PynV2uvWXL1BNZsO0hFTT03TxnMpS98FnFOtUHKecPyeHB5pGTjaYOyufGsQVz6wmcJP18I7VKUFtgjnIWPbjmdgTkda9+tSbkl2HY/mnnbjU4v85dUJEwJ6I5rOxLb27a/mbN+8wmL5oxl3mvf8PSMUvLSzRj1OvY3eXD7AvTJsKCTQmlhdS1u0qxGFAWCwVDB5j6HG50UWjDrJCnkREsSgaBCfYubXqlmdDqJFm9It1ySJNzBAFadjDeoIAEmXeh4RSchKWrqWKiwE4iIlnsBn6IgSxIPv7eJO88bijfgxyDJ6HQS+5pCqjAPLt/Izyb0J9WkI6DQ2ngnQIbVgNsXYOu+JvxBhT42C/YUA3aLkSCwcHml1tDHH1TIt1vQ6SScHh+9Us3c904ls8YXkmcz85v3tzAiP4OzhuSg1+n4ocGl5YYbZYnPq+s4b1hvHG4/Ll8ARVFYtKaa0gI739bUs6qqlpdmj+HKV74+ZHPD83jwncqYXasryotY/0MjX1bXMWt8Ide/+k2b9teZ468n2+DRpLvnPYFA0AH1lY7yl7/8BYfD0VWnP66xWY0MzEllVIGdgTmpOFzx0wRGF9hjJiyrUSbNbOC1L3aSnWbm7rfW89M/fs6lL3zGtKdX83l1HX/+TzXD+tkYUWBDAXyBYITywdzFX3HZi58z88Uv+LamgWXzylk8Zyznj8jD4w+QatLT22bG6Q1wZfkA5k0u5prTBvDymmpWV9XiC4tcm/Q6xhdm8ospg5k4IAt/UMEbCDIiPwOzQccHm/ahSEp8vXGjzIzxhTyxcjP/76/f0ivNxD1vrefc363if/7wGRc8u4bHV27GqJf527XjeWn2GBbNGdva5CVU2BcdRVfvs1erckX0+3669SDeVqWG0vyMhAWva6pqtS1/lcNJ50gmb/tooe7cnDYocmF9rChYqOlgbl9AK5Zu8fgJBBU+217LPocbk6zDIOvwBILkplkwSjp0koTb6yegKBxo8qAAj767CYC9TW52N7gIEKB3eij1q8Xrx2IIFVd7Wx1yf1DBTxCDLpSiIukkgsFQ2pUMBIOKVuyp/gj7CTnon22rxekPcNOUkyCoYJT1HGhxh84ZhAeXhwqc8zJM2FNM/PHT7Xy8eT8pJplgUMGs11Ha2sG3T4aFjbsd7Ha4WLi8kpnjC6moqWf+kgosehmH24eiBMlONfN9g4ufTejPfocbBYU5pxZx4cl9sBpDGujzl1SwcY8DHdDbZmHz7kbeq9yL0+vH7QvQuzViXpqfEaEIpdpcXro5xiGH0K7Vy6t3oNdJXFFWRIYltAPTlv11pm30ZBsUCAQnFkfU0bMtuigAf0KhRsxTTLFfk9UoYzXKMY9fc9oA9jvc3DRlMPfHSdvISTMxur8dsy7U5ntXvQt/UOEfP5/Iw2HNdFRWVR3kgWUbGNlaZLlo9lie+9fWqEhXNvdcMBR/UOHq8gH0tpm1qLvdaiDdEpKXG9LHxjklufzQ4OLsoTk43H7uPn8oO2qdMfc2t7yIc0pyefrD75hYnMUFI/pwV1hDlPDre/Tdjcw/azBPrTnUGEUtVg1vJASH8lWj24KH85/ttUwalN2uTGL084eTztHT87Y7szFWd6MuKnYcbNEitdlpJqoPtvD+hr28ePkpuANBAn4FfWs+twT8d2c9ZQOycAYDDOqdSlCBWRP64w0ESTHpaWzxYZVDqSk+JYjFoKfB6SbdYsKikwkqofPpw1RWZEKdOtVCUKNO0uQQVYKA0x9gVIENqz7Ukn50gZ29Dhe56RbufGs990wbwi+mDObJlZu570fD+GZHPXeeN5TaZo+mrPLOvFM1VZeFyyu5oqyIFJOekj423li7i6vLBzAg24pPUfhiex3jBmTS7PGTm25CQiIvw4xF1pGSaeDL6lqWfbubzXubeP2aCTS5/ViNMo++u5HLxhdqqSVWo8yrV43X5ExVTXOzQdZs7uYpg+MuviFkx7+YMojLF33JP38xKSn76yzb6Ok2KBAIThy6zCkXHBnhOY7zJhdH5HhbjTLPzxxNWhxn/YzB2disRvY1ejSVBLVQyhsIkmY2cO6wPJCkCCf3pdljInTFw1lb08Ct5w7hjMG9aHT5uKJ8gOakO70B1tbUIymSVtg5IMvKP34+kUdao4sbdzfyswn92dPoQpLAZtaTYjSw4QcHGRYjknTIPQnPIx1fmMlNZw/GatTT4gsknNBH5GewcXcjc8uKmDW+ELNBJjvViNUoo5Pg4YuHa3nv+ZnWuG3Bw1m0upp35pezr9Gd8BirUaaf3cJLs8fg8QexWw2kmjtuTsdC3nZnNMY6WvTJsKDXSSy+YiyBoILDFcoD/8Plp3DX2xs4a2gvRvWzk2IOySDqJImhfdIJEGr8EwgquANBmj0+mlwhrZSiLCsBRUHWSRgVHc1uN/YUM/6gH4IyUqu6iuoYq7no6t8KISc9HLVxkE0v40dGB4zMt+MKBMhLt9Do9lNT6yTVaOCut9aztqYBGQl/UKGipl5bEN829SRsFiP3v1PJ/ztnMDvrXaQYQ6ktE/tncmlpX3xBhYAC+x0ePty0jwkDsvjTp9u4ccpJPLS8kssnFtEv04LH62dkfgZ7HG4W/mg4D63YSEkfG1OH5XLD5EE89/FWSgvsESot4TY6eUgvfjSqD7lpJkry0gm2E6fxBxXGFNpJtxh4rHUxFU74b5k/qGCzGNi6r4lmj/+ICjOPBRsUCAQnBsIp74GE60NbjTIGWeK+C4bx4PKNrN1Zz9MzSslJN/HfXQ1MGZLDkD7pmtNtsxh5cPlGrju9OG6h1OI5Y9Gnm7g7KuqcKCqlnuOJlZtjlF/UYsdrTx/At7vqufPcoej1Ema9zN1vr2dNa5dRgyxhNerQ6yQ8viDZqSb2NIYi9D+0NgVRO5aqUbWKmgb6Zlo40OTG6fUjSfEzraL1llWmDOnFm9dNxCDLvLd+j3btagS9LYUZpzeABAzMSWXSoOyYrW1V7u3xlZsjFjKHUxjWnpSb6Dx45Jj0Orbtb2H5+t3874RCBuek8eDyjSH1oiG98QYVPIEgfn8AbxCyrAYcbj8mo4QeHbIMw/vacHsDpJv0+FplRP1BhSBBMixmnAE/Fjn0cxpQQo63XgnlkYfUVsCgQEAiJkIOISfdI4WO8wWDGHQ6vt1Vz5gCO15FweH0suSq8TT7AqytaeCZGaX8asVGbjlnMKkmAy1ePya9zBfba+mfncLPJhSi1+k4pyQ3VCTq9ZOVYWVN1UFWrN/DgxcO58VV25k1vjC0s3b2Sdz91nomFmfRN9PM59trGdI77f+zd97xUdXp/n+fMj2ZlBkSQkkIJBCqBqkmURdRQKzrvXdl2b0gllXBunZFxIa63bq7d217f5bdvbsWQHFVLIDYo9JEImgQQklIn3rO+f7+ODPDTBpBg7Tz9oWQOWfOnO9kvnM+5/k+z+fB67KTk+bgnqXr+WlSZPzJ2WMTkXKAypX1HXcLfWlvuspL88q6/D15HEoiLSrDbXY2jc+/5O+yuFPSrS+uTZnz37Uw05qDFhYWhwoHrNAzPT2dzz77jIEDBx6Iw/+g/NAFL/ECNX+ancdmj+XXy77g4+oG5pQXcvaxfVj40jqum1rCnCc/5B+XTOTWpMY6r1xZwdI1NZw+Ko8ln9ekFErFu2oGIzpnPbwq5TXjBVlt2Vex4/GDfEwbkcfu5jAPLd/EMflZlA3yseqrOkbnZ5HuUPCl2QGJBTEbxX/8YiK3vriWSyoGkZflImoY2BWZ219cx+yyAVzw1EdcfUoxEwf68NhVGoNRMlw2Xlm3IxGdj6cjnDYyj91NYZrDGn0yXIQ1nT2BCAN8Hj7+ek/CPSJ5nDf883Mz91ySaAppptuGIdjTGiEQ0cly2xjYK41cr5PtDcF2bjiLfjyyneNNnO9SGNbRa8TztvOOcueHnph7X+1q4eu6Vi546iMenz2WPplOvq0Pku1W6ZXmZGVVLRMG+rDJEs0RHUkymw718ZoWiHbZLN60SQpIoBsGEhKSLKECWqwwM2oIbLJEWNdpDUXI9rjMTpyGIKLrpNlUU6zTPlKuAVEEYV3HqagYhlkQKkkQNjRUWeXdqlpKeqfhcdjZ0xomGDXoneGgIRBl6x4zBey4AVkIIfHI8i+55KRi7l+2gZH9MxN9BS4oH8hH1fWceWweNlnmthfM1LRpw3sz/cGVvP7LE6hrDvPV7lZG9M3gV8u+YHZZIZVbG1i/vTFRJNo300VldT15GS5yvU4MBHZF5o7FexuEtf3u+b9LJtIa1mkKaaQ7VWqbw6yraaSkt/l77Zflorc31ct/e0OQBS+u5bxx+ThtCo3BKP2z3Ny3bEOHK3vftTDTmoPt6cnrnmEY1NTUAJCXl4csH7ByNguLwxorUn4I0hSK4rYrPDF7HPcnuZI8tLyKU4flsqKqjrkRnfPG5fPrZV8wp6yQG6eV0BLSaQlpjC/IxqHITBzoS/EGfmL2OO5cvI7LTx7c7jU7s0Fs2+gnmVVVddxy2jDe31zH0jU1rKyq44LygWR7TI/yx1du4YW5Zby/2RTHldUNPHfxBAJRjbIiH/197kRE/cnZY7nm1MGEo2ZhWEcuDeWx6PyN//ycX/3HMThtMve9vIFxg7KZOiyPPa1RNF0w0O9h4UvrEh0P3XaFi08YSHmRH1kS/N8lxydeNzkC11nUrW1OtSEEN/1rTYfvSXea6nTkh9z2NdKcKq1hjcrq+u+1NH+0ey83BiLsiTURctvNtCYELPlsG9ecMoSWiE6/TDdgup7YVGgOaGS4bWix3HAw88FrW0K4HTbciowhS0QNHS22LaDryBLYDBlFksnyuIgYBookETEMPDYVgUBFSuSVJ8sSgUAR4FJUWqIaHlVBIIgYOk5ZZWtjkNIBWbhVhZueX8O1pw5hc20rOxqDvLZhJzdNG0ptS5j3N+9h1abdXDulhDtj0e1dTSF2NIUSvuX/+Kgam9Q3cTM/u6yQppAGmN1IvU4bBT4PYBZhzhhfwJj8LI7tn8kz73+DyyYzyO9h3MBsFCR2NIfwpzlYGIuKu+0Kpw7LZUx+FtdPGUK604YsSSm9ENx2hcdnjeG9r+r41atfJt6HttHuPpkuFpwxnJv+9Xm3Uu2+a1Orw7l24nCgpqaG8x9+FYAn5k6hb9++B/mMLCwOTQ6YKP/Zz35m2SjtB8niyRXLndSNVFcSM5VF5rFZY0h3qIwvyOaMUX24I6lV9v9dMoE8r4NdLWGUpFztOeWFGELwdV0Aj6N9gWh8SRjotACyI1rDGsW56ax8fi1uu0KfLBd3LjbPZ96kIu5cbIrjyuoG/jTzODKdNnQhGJ2flRDGYHYwVGSJdJfCS/PKEhf4ZFZW1SEB9//HKOpbw+iG4MbThqJIUko6zmOzxiTEhNuu8NBPS3li5RZ+//omHps1ht+8tvd1kxuVJNO2lXzyxTmeO98ZXRWGdeWHHLdT3N4Q5Np/fPa9PZOPdu/l+PhnHz8Ahyozp7yQ37/+JddPLeHKkwfTGtZoDmn0znQiYaZwpdkU7B4FVYKwIczIOKbDSrbHgSwAWWJnY5C+GeZ7qBkCj2LOKbMzp0Fr1CDbphAUIMvCjKjHElc02qew2JCISuax0mMRdUkInLKKLgSZLhvpqkJIF8wpK8RpUxjRNwNFhhyvk49iq0Jzygr58XH92d4Y4pj+mexqCjG6IAOHqpKT5mB+rHHQ9sZQ4jsjJ91BmkNl2ZXlyLJEQzBKmkPBY1d5aV4ZoahBulPlV69+wfnHF+JPt7OjyXShGdU/kweXVyWaEcVvch94/UtmThhAIKIT1gwefCO1OHxOeSEPvlm1z3nXGIhwUzdT7eJ818LMw7l24nDAmXH42yNbWBxour2G1NrayqWXXkrfvn3p1asX5513Hrt37+50/0cfffSI8CjvLjubQnxR08QHW/bwxY4mdjZ1XiTYlu0NQeY9W8nJv32bcx55l1fX7WBySS6hqJ7Yx59m59mLJnDP0vVc8NRHvLJuB3lZzkTnyqsmF/OvyyaQZrehGQK3QyWQ9PzxBdl4nDJPXzgeWZIS9oHzJpm553HLuOkj81h2VQX/d8lEXr6iYp/iLd1pppfEL8a1zeGUaNnsskLSHCp/+tlx5GU5eW9LHR9+vYcMlz2lcLXQ5+EPr3/JrqYIUb1ji0QwI3e5XielBVlEDUFtS5hfv2ousb9yZRnLrzmRPpku/nbxBAr9Hp67eAKPr9ySOF5y06H4Oc4pK+SRmaNT3g/o3A7tuxaGJdcKJBMXIo2BSLf26Q49dZzDlcZAhNteXMuYAWbH2F3NYSYO9LH8i90k7lUlyEwzbxINQNcFOhDSNbPVvaajCWG6qSgSdkkCWaIpFKW312kWcBpmwaeM6TilGTo2WSbTphABGgJBMmWVKGYDIR0zdaWjvHIJ05VFAEFDQ46dqATYVPPm4JNv9pDrdeBQZR54/UtsikxehpMR/TKorG4g22OnT5YLn8fOGaP6sGrTbjw2Gx9u2cMx/bO4/EfF9Ml0JebsozNH0xrWuP/VL1AVmUBEo7fXiUNV2LongCJJZLhUJAluPm0o/jQ7a75tZHNtK8cVZPHJN/XcMLWEvplOlv/yRJZcXs5Tq7ZQ0ieDmsYgD71ZRZrD1m4+l/bPTOSgPzZrTMr8++ib+sS868iucF8dh63CTAsLi8OVbovy+fPn87//+7+cfvrpzJw5k+XLl3PxxRcfyHM7bKiua+Wav3/K1D+Y/tlTf7+CX/79U6rrWvf53LbiyW1XGNk3g7rWcMLOL96W+v5X9xZbvli5jaguEp0r13zbgCIr7AmEkGMFlb3THVTECpX6+1xEooKbnl/DtD+s4IKnPmLOkx9SWW0WjrrtCqX5mQzslUaaTeH3r3/JaQ+sYOmaGsqKfB2ee0WxPxE1nlNeyDPvf4PbofLk7LE8f9nx/GrZF1zw1EekO1T86XZ2N4cZMyCbxZ9tpyGwN5o1p7yQO5asY2jsQl4TK/7sjOaQxt1L1jOibwaZHjvXTi3h/z7eiiwpzH9pLdP+sIKf/Pk9pv1hBc0hLWWpuyWkJ97TeAHrBU99xGVPf9Lu/TBfq33ULV4Y1hFdFYZ1xw+5pzyTj3bv5brWCDPHFzBuQDaLXt5Ab68TuyJx9SnF2GSZQFTHqSqoyLEouY6smMWbHlUlZJg54JowkCVwKooZMY/qeJ1qQlXbZQlDCDTAJknYYx7lUcyody+PiwhQ0xjEqchIhnkD0JEo1zCFd9QwcMkqEWFaNEqAW1ZRBIk6iwUvrmX0gCw0XfDbf2/EMAQvXFbGw8s3sa0+SGV1PXctXc+lPypCMwSLP9vOaQ+s4Lz/eY+GQDSxcrC9IcifV2xm7o+KiOoGjUGN215cy48ffReBmUp337Iv+LY+iBDQEIwmPNCFgPxsN4++VYUkycx/cS1baltZEfMqj3f6bAlr7cdqiERfhI7mX2vYnHcd2RXGU+06wirMtLCwOJzpdvrK888/zxNPPMF//ud/AvDzn/+cCRMmoGkaqnr0pqbvbApx0/Nr2i3Drqyq4+bn1/Cb/zqWXK+z0+e3FU9zygt5bKXpow17O0c2h7SUCO9DM0fTHIwm0i9K87MwDIMst9kw6OPqBl66vIw7zxxOMKqz+qs6Xm5T9AhmqooMPHfxBDbuaKZvhpOtDUF+Or6AOeUDWbOtgQvKC5Eh1Zu82M+CM4axfONOJvby0TfTyY9L+3LP0vXMGF+QsEdz2xWcdoUFL67luAHZfPz1HlZU1XH9tJLEWKYO781Jg3thCEhzqASj7S/iyaQ7Va6fNpT7X9nAFZMHc+fi9VxUbjrAXD15MJf/SMRSdCQagqniM82pJN7njtJWktNaHlpe1WHULe5/3VlhWGdL4N3xQ95X1XV3l+aPdu9lzRDUNAZZGvvMf/5tI3//xUTKB2UTjDUTcqpmnnjvdCch3WBPa4Qsjw2brOKWFQzAIyloQqDHBLJNAQmJqC6QFTNdRZYkgroGMfeV2tYwGR4bLllBAlp1nVyvE1WS0KW91ohxe0QJU5CrQiAkCbsso2M2ETqhyI+EhCHAkGBbYxCvy85Vk4vJSXdyb2wOqLLEnUvWcUx+Fk+s2sJF5QP56fgCNmxv4qXPUouSvS6FcFTnx6V9MYRg7MBsNM2gKWQ2VpoxvoDrpw5l7bYGlqypYVxhNruaQvTNdJHltlPfGibf52b15jqWrKnhshMGYQiDW6YPozkY5ZUrK2gOadS2hAGzM2pb8jKcCV/1ZOI/33P2SPNcO5h/naXaHS5NrSwsLCw6o9tq+ttvv6WsbK+l1XHHHYfNZmP79u3k5+cfkJM7HKhvjXSag72yqo761kiXory+TRpBvLCyND+LgT43t542FENAdf3eBjsXnzCQXy/7gptOG8boWKv3iysG4bapCQ/jB2aUoukCu02mKaSR43V2mRJyiyozvjC7XYOesiIfx/bL5PYzhxOI6jQHNbI8dtZ82wCSYNKQXO5csp4rJw/m/lfNwjKnTUkc4xcnDuT9zXVcXDGIvtkuRvbNYMb4Alw2lZNLevHziQO475W9xayPzBzNkNyOrQjBbMntUBUWvbyen00YgMeuclH5QAp8bh5buTmlkOzW6UMpzc/ikZmjcdrMZix1zRHKi3z7LGCdU1bYZdTtuxSG9YQfcneX5o9272XDEIlIrdtuWu2t397IyL4Z7GqJkO5UCWk6vnSH6SuuQ2+vA1mSaY3qOFUZTRg4ZIWQbuCRZXRZwoUp0oVkoAsZgRkpd8oqQV3HIcvkehzIsoQNCAN2RaE1FMLudNKq6WSrpuCHvRFzFdAxU1cMYRaCrty0mxOK/ImdNEPw8PKqhINRS0Tjl1NKEnniK2JFmw8tr+L6KUP4alcLYwZkk53mYEZsXq7Z1oBdVXDZZXY1hXjwzSpumlaCQ1VS8r4fmzWGHK+TjTuaueusEWxvDLGltpUhvdMRmJ+vEf0y6J3hom+2O6U+xKxtmYjL7uKRmaNRZIl7zhnBXUs3EIiYK1URzeiyW25EN9+hjuwK46l2808fxoLThxOIaFZhpoWFxRFBt0W5YRjYbKkXclVV0XW9k2ccHcRdC77L9sZAJNHSPU68iOm5D6p55qIJ3Ll4HTPGF5CT7gDMC97JQ3P4/eubWGCT8MQ6e+Z4HbREzAY7V59SzK6mEP2zXLSENWyKhE3pOlNJgnbe5bA3kn7D1KGoikQvrwMFiVH9vThkha31QS6qKCTLZeP6KSU0hTTSHAqvXX0CUd1AVSUUZKKGQVQ36JvlojmoEdF0FpwxvN1rum0Kqiyx4IxhLFy8PkWYVxT5mH/GcJqCEUb1z8Rpk7k91m20rSCPO6rc/PzaxPPLinyMKcjitjOGJyzkumJfUbf9LQzrrh9yT3gmH+3ey4GIRkTf2+Ld41AYnJPGyqpaBvg9OBSZpmiEdIfKjsYgkizj8NgJRDRUVUISZvOggKbjlmWELBExNGRZRZEkZMkU1oGohltVUYVZ7KnFcswNIIo5r+qag+Slu5CBLFUhCtho78ASM3pBl+CTr/dwy7ShJH+7fvT1Hn556mD8Hgdh3aAxGOUv72ykrMjHoF4eXr6iguZQFH+anSy3nTH5WQQNneKcNDRDEIzo9BnWm4+27EFAYhXBYVO47+UNHJOfxeyyQjRD0DfLhV2ReP7S46lrjaJIEv2zXEiYNw2LXjZvpF+aV9ZOkD8wo5R7Xt5rWei2K8yfPox//GIi1fUBHKpCMNr1daM1lvLS2arUmIIsThrc66i1K7SwsDgy6bYoF0Jw8sknp6SqBAIBzjjjDOz2vRf4Tz75pGfP8BDHu48ujl1tr22J8O7muhQrwngR03nj8lkYczG5oGIgdlVmUkkvZo4voLY5jD/NjiRANwQXnzAQWRI0hfREM53fvb6R8iI/rRGNLLedYLTrwlMh6DKSfqsq4bEpRA3B06u/5mfHF7Jw8TqOL/Zx8pDe7SLsFcV+rjq5mF4OB9sagmR7HNy1JNVR5dmLxqcIgf5ZLtw2hQ+27OHY/CzOObYPt0wfyvaGIJkuO16XSlMwituucsrQ3tQ0BrmwYhC9MxyU9s9MRAOFEDzeRWrK8YN8nDQ4p8v3Iz/b3eMX/O6mvXyX1Jjv+lpHKpluO7ZY3vQz73/DDVNLaIno5Ga4MHSBTZLIcjtoDEbJSXcSEUZCKLpjTiohw2wiJckSAV0nXVExAANB2DAwDEhTFGwSGJIZGbfFCjUVzDnVInT6prtizzOJhzba3ibHu39KwIQB2YkUFwMzdH5MQQZOWaVV0zB0yHLbuGn6UBRJTrEWfXz2WPa0BvF7XDhQ2N4QTDidPDl7LMP7ZiBJ4EtzcPO0oaiSxPVTh3L/sg3YFInpI/PQDQNFUnhvcx1D8zLwulRawjoeB2ypbWV2WSE/mziANIea0km37dxLvkG+6fm9NqLPXDi+y99f8kqOZVdoYWFxtNBtUb5gwYJ2j5111lk9ejKHI1kee6IbZVvKi3xkeTq/cDSFoin5kZXVDQA8feF4FElidH4WpflZ+NPs1LdEuXHaUOpawmSn2Xn6wgnsaAqzenMdU4fl4lBVopqZY/6H1zdyzalD2NYQZOueAIs/22429enAhxxMAd3aQTFWMo2BKLgFEc1gVlkh2xqC3HBaCQ5F6TDCHo9wnzaiN9saQ3xaXc/KWCrBnPJCxhZkk+N10jfDiSJJ9PO5+XxrPf2y3UQNwe2L13FheSEPvv4lcycVAxCK6nhddha+tDaRr/7HmcdRH4iYKwUhnXSnikTnto6rquq4dfow0uxKl5Hk+MpET9MdgdFTIuRoFjMeh8p7m+uYONAsCHSqCjubwzhUif5ZbiKGYGdjiGyPnZBmIMsQ0XTSXHsb/NhlBSGZzYEcsTxvFTOn3C4p2FXQ2hQBxIs4dcx/uFESFogK7LNmIATsag7SJ91FWJhuK8cPyMaQIQ2zm6hdUbj/tS+4cepQAlGNPa1hZo4v4OKKQfTLdmKXJAzJxoqq2kREvLK6gZunD2GA38NdS9Yxsn8mp43Io64lzOffNvDahp38dHwBe1rCRDSDddsaGdTLzZgB2QQiOs0hjV7pDiTglTU1bNjRzJPnjyUU1emV7iAQ0bEpZtfe5LnXWe3Gu5vrOv3e7Gglx7IrtLCwOBr4XqLcAnK9Tu45ZyQ3P78m5QJTXuTjnnNGdplPnu2288hPR5PpsTH/9KE4FIXbXlzbLqf73NF98dhV5r+4lhunDcGtKtz4/Bp+NqGAx1du4dzSvtzywhpK87M4ocjPqcNy+WiL6Vt89eTBrKiqS+SZQ6pgrSj2c/fZI1LsFzsizaniUVUcqmDh4nXMnFCApkNU1zuPsG+q5cqTixnRL4OHllfhtis8/NPR1LeGGehzISSJAp8Hl13hriVml9L7Ys2QKqsbGODzcO2UEnY0hXjozSrGJhWKAsybNIg+WU4WvLSuXdfOrghHdYbmeQ9aJLk7AqOnRMjRKmZaQhp3Ld3A47PGUto/k0BUJ82p4rLZaQ5pyLJEmsN0UZFlcCkKTkVBinmFI0tmsyCniksxxbnALMgEqNxaz5j8LHRhEJVkZEwhHk9JiUfLJQkiCISQkKWkos5OztsB9IlF1t/9qpYfDfIlXlcGdAE7GkP8csoQAhGN+kCUxmAUj10ly2OLpYwpvFtVy4h+GQgBdy3dwF9+fhz52W4+rq5n/unDCUQ16lrDPPxmFbPLChnWJ4MnVm3hhqkl/PbfG1Mi8HGHp692tyQE/nMXT6A5pPFQG6/xtnOvs9qNeDBCkqR2PvpHw0qOhYWFRUccvbYpPUi+z8Nv/utY6lsjNIU0vE6VLI+9S0G+vSHInUvWM3NCAV/uaGZ0QVY7QQ6mgL576QZ+eeoQPqluIN1ppymkUVndwE3ThuLz2AnrBpXVDUwakkO6y0ZTMMrIfplsawyhG2ZsLl4cNae8kDllhYQ1A4cq0y/LhQtQbErnxZXFftIdZgTxk6/rmX/6MCK6GTXvyO4smcZglHCzuXD/ixMHkuaQKfBlogm4Nbbk/vjssayoquO62Hj/e+IAHphRynubzfci3g30ttOHJQpFnTaFQp+bW19cu1/NjmDv0vjRHEk+0qkPRAhEdAJRHc0QNAejeF0qUd0w88ZlyHA7iGg66XaVsGG6qwSjBml2haChk+1xoEhArJhTR4AADYPR+Vmmf7kso8dcUwBshkCTpYSzio4ZWdeEhi6pKHT9pWskPW94ngdJkogAn3/bQGm/TMBcnVMlmQUvmz0K5pQXcuqwXDbWNDGyfwZRXbBkTQ03Pb+WR2aO5qpTiuif7UYzBMW56Sxcso4bpw5FN/Z27IyLZ1mC88YXsLs5zIPLq6isbuDBGaU4bQoD/WlcUD4QIQTrtjWypAM3p7Z01ugn/n304twyZEmy5p+FhYUF+yHKS0vNqMa+ONpyyuPkep1divBk4t7kYwZk4bYrLP5sO740R4cRZ3+anStOLqY5FOXaU4sJRs2l5F+cOBC7aqa6NIejPH9ZGXctWcedSzcknltW5OP0kXmJnwMRvV3U6tWrKohgRvBunT6Ub+uDSJLEJ9X1PL5yC8cVZHHTtBIkYS7jD+3jpabRdG2orG7g/y45vsux9sl0EQhrvH7NCciSRG1LmF3NYf7yzmbGFWZz49ShyDL8/RcTCUcN/Gl2huSmEYzoFPo8BKIamR47N00byiff1HNnkoPDy1dWdCgK4j7GHW1ruzR+tEaSj2TiBdRuu5njXJDtQmAWO0d1A5/HgV2RaIlqeO0qOhAxdByyQlSLoqsyabJZkCkwu826FBkMgSyDikJQ03GrihkVlyR0Q6DKElqskZCZCx7LGxcCSTYFeTyiHt+nLSpmCkt9awifx4WG2czomH6ZBHWDe17ewH9PGMDu5hA3TSvBHfMsH5OfxTH9sxCSQdQw7QlbQ1H8aQ6G9/GyoqoWCXh5TQ0Ti3w0BMPkeZ0svbycQERHkuD6qYNJd9qQZdO7PR4hf3LVlpTvpqcvHE9OzNkGSKSkjcnPole6g6WXl1PXGkE3BL40e6I5WVsCER1ZkhKdbC0sLCyOdrotys8+++wDeBpHF3Fv8humlHDfsg2JaFVb/Gl2/v6LCchIuBwyk0t6E9J0Mtw2Tiz241BNC8Rj87OorK7vsLCxcmtD1xFwm5nzesfidZT0yaC0fyahqE7ZIB//dVw/DEMQ0jWEBC1hDbsik+mxc/XkwaQ7VZxdRdiLfBiGwOexE9R07IqCx6GiyHDVKYNRZIlPqxvI8ToJawaFfjdPXzghsYLwxMpUMVBR5OeZiyZw4VMfmhd0zOXysGYkLA8fX7klsTQu/0BL440Bs+lPUyiK12XD77GE/sGktiXCp9/W83+XTOTh5Zu4fkoJkizRGhOfhmQQNWQc8YZAEQ2PXcUwBL3cTnQj3tnT3D9NNksy5Zg9SsTQcatyojOnYQgcsoQGOGLO4zpm1BxZQpckFCFQJLMINO5N3hky4PM42d0SpFeaK1Fg6lRk7j5jOBqQ63WABJ9W13PbmcNRJIk/v13FpT8qZuHidYwZkMVpw/MwBOxsDHL8IB9hw2BikY+IbmCTZGoaQzTEUl/ys11MGd6bVVW15HqdeJ0qL80rZ2dTiBnjCzi/fCCfVNfz3AfVuO0K6U6VR2aOxmNXyXDbeOCNLzm2fya/eW0jw2LfI2HNoDWs8c9LJvLzxz9o17DqaHABsrCwsNgfrJzyg0BjrKGNLO91PHGockrEKdNjw6Eq7G6O0CvNgSrJtEQ0Fr28gY+rG1g8r5xbY3ns58e8iTviziXreXFuGbcvXtcul/yOs4ZjYAry88YX8MSqLSnHKS/ycdfZI3CpNhYuXsd/H1/I/7zzVYpQnjYilzvPGs78F9axoirZvtDPvElFCAQ7m0MYAh56cwOV1Q28fHk5IaFTH4gmUlPmlBcytHc6t764lrEDstsJciBWuCZ4YvY4dreEuHvp+nb59w/MKOWKZyu54tlKlsSigFvrA9gVmV3N4e/+S+uE7Q3Bdu3sTyj2c++5o+hj2bUdFFrCUU4ozmFRzOZPSOZn/LopJUiAR1ZojOhIMoQ1cKgKzWEdryNWlClLBA2ddEVpp6AVwCkriYLNKKDGxLpdQFiScAAIiMbSWFRAi60yGnT9pRtPXWkNR+mV5iJkaLgks829DYgAzWGNB5dv4sYpJRxXkM27X9VybH4G835UzOrNddw0bSiaYVDTFOL/rf6aKyYP4fevf8mVkwdz1+L1XDF5MB9tq0+s7GV77OxuCaEbe4tCH5hRygNJvuUAk0p68fSFE1JclOZNKqKyup7S/Cyeef8bftrJ98hf54zjP/64OhExt3LHLSwsLNrTYznloVCIhx56iGuvvbanDnnE4rabb3tLeO+S7trtjTw2awz/s2Izx/bP5FevbkyI6MdmjaHQ70l4A18/dTAR3UhcGDvL2wRziXhzbSul+VkpueS7msPYJYnmqE5JrMiro66k819cx2kjelNakMVf393ChEE+5p8xDFXea+j2q2VfcOO0En6pC8KxSP6arQ0EIzrVda0U+D24VIXLf1RML6/ddKiQJLLcNu49ZyQtEZ2mYJSwblCan8Upw3L5/eubOhzPyqo6rjUEj6/ckuKDPKe8kNL+mQD87wXj+XJHE3taw3y5s4XtjaGESDih2M+DM0p7RAzE05DarhK8s6mWG//5eY+9jsX+keWy0xzRWFFVx/nlAwlGDVZv3oMkg2GYoreuOYzf6yAU1VBUlVAkissuE9YMPDYFV1x4S3tTUeJ/pyZiCBQkM9UlJpzDmAWeQoBDMoW0DRIuLHFB31G0XAdcAlSHDQG4ZRUhzJsBDYgagt/+eyO/nGKuNAU1gw+3mC4zEUMggPpA2CwqleCaU0u4/aW13DRtKJXf1HPz9KHIksRHW+qYXT4QVZERhsCX5uD9zXuYU1ZI9ql2fvvvje1uiof1yeCOJak392PyswCYMjyXk0ty+O2/N3b4PbLolS945YoK6gMRK3fcwsLCohP2S5Tv3r2b999/H7vdzsknn4yiKESjUR555BEWLVqEpmmWKO8GsixRVuTDndR+Wgh45M2qRJvs5AubwLQDjNsAThuelxL1ddrat7FORpWlDiPpy66qoDWkddndcsWmWmYfP4Bj+2cyqm8mvdLtKLJEVNdxqiq3vrCGCYN8NIei/HnFZn4+YQBZHhvFvb2EIhrH5mdxx+J1fFzdwFWnFDE1M4/tDUH8XjP6f+PzZrGnP83OP34xkc+q6xmW5+1yPBFdTxHkcR/k5DFUFPu5KGsgfTJcKbn+72yqpbYl0iOCIJ6G1BE9+ToW+4sgENHpn+Uiy6USCGs8MKMUuyyzqzWEJNkp8LkIGWZ+uQCc6QqBqI4cE9OSlCrEYa+rio5ARkI2BPZY2ooae04I0A0dVZZRhBkht0MiPz3+hdtZ+ooKhCWQDEFUklAl83U1YucF3Dh9KDZJZkVVLe9s2s31U0rY0RxCBsYVZsdy2GXuXLyOKyYP5pITBpHuVDk2PxOExO6WEFdMHpLwNv/LrDEU9UrjlTU1rKiq47FZYxLfNfGb3bBm0D/bnTLH3HaFvEwnlSvreWh5VeJ5HbFiUy2aITg2JuItLCwsLNrTbVG+cuVKTj/9dJqampAkiTFjxvDEE09w9tlno6oqt99+O7NmzTqQ53rEoMoS55cVIkskChJH9cvk969vSrTJTmaA301DaxQwfX9rGkNkJok9IUSnnr9lRT4qtzZ0eB4tMaeYnftI67CpMqoi4U+3E9E00uxOZEliW0OQj6sbWHDmcH7z741cPXkwqiLTFNTMroCZZkfRm08rIc2mgixRH4iS63WaXTsXr6M0P4uLygcywOfm3c11XFA+kBxv1x7hHvvej21nPsgrNtWCgGunmH7tyTSHol0ev7s0haLthEtybntPvY7F/iKR7lD465xxgCmG/7JyM1dOHkyO18melggemwOHrKAJQTiq47KrRKJawpHFrppFoookocWKOHXMiLcazxmPde4EM0quAw5DIMkKYQQiaXu8sDMusDv64tXZK9yjssSuxiD9MlymbaM5LAwk3vuqjpWbdnPF5MGMG5hNKGrWV/TOcFHbEiQnzUXYMLj19OE8vuIrLjphEEFdxy4rzH9xDddNLeGOJebcu6RiEAV+N9saglxz6hCunyYTimgsvbwcl13h/c1751XbXgZzygu5a8n6xNzrasUOem7eWVhYWBypdN17PYlbb72V0047jc8//5xrrrmGDz/8kHPOOYd77rmH9evXc8kll+ByWTm03cHnsfPcB9Xsagpz+aRiyop8ibzU5Aub265w1eRiFCRcsaj66PwsmsNmK/vyonhjFJkbppVQUexPeZ2KIj/nlxXy+MotHZ6H16XitikM8Ll5bNYYHpk5msdnj2XepCLcdgW3XWHepCJ6pTloDGogINvtRABRw6BPhpOXLy9HluD6qSXcv+wLzn30Xd76cjdRzUAzBL/590YzuihJ3PvKBmTZ7EIa0HSumjyYiQN9qIopXt7YsBNNCDbUNLUby94x+RLtyMH0Qe7Mlm1FVS02RU50SY2T3C1wXzQGIny1q4XK6nq+2t1CY2BvsVqGy8YDM0qprK7ngqc+4rKnP2HOkx9SWV3PAzNK8bq6/zoWPYcWC3Xvag6ZjXyEwbVThoCAPS3mDW1LREc3BFHdiHWq1cl0O1AMgSSbRZ42ySziVGUJXQgcmF+YpjDf61uuxh6XhJmPDqZwlzF9x82GQ3sj7Z1FQhT2NhiSgT4ZLgQQEQLdMMwGRBKUDfRx47Sh1LdGUJBYs62RnHQnhmHQK81FS9SM1P/xrU1ceMIgPvx6j9nk6wWzyZdNlfn5hAHkZ7nok+XijsXraI3oPLh8E+98uYvsNDsuu0IwojOwVxqZbjtf7mwm1MZBpbR/ZkpkPHmeue0KV59SzEvzynhpXhnPXTwBl11JmT8WFhYWFql0W5SvWbOGW2+9lREjRnDHHXcgSRL3338///Ef//GdX3zRokWMHTuW9PR0cnJyOPvss9m4cWPKPqFQiLlz5+Lz+UhLS+Pcc89l586dKftUV1czffp03G43OTk5XHfddWhaalTnrbfeYvTo0TgcDoqKinjyySe/83n3BBdWDOSv732Nx6Fw9rF96RXrIBm/sLntCo/OHE2hz03EMMhwqEwuySHNrjAoxwNCcPc5Izm5pBcuu0Km08bCM4fzwmVl/O3iCTw2awyzywbwzPvfdGhHdnJJL5yqwrbGEIte3tBOVD7809E89FNTcE77wwr+44+rmfbASm56YS0RXeCUzO59AtjTGuG2F9YmGhSt395IptvO3UvXM2N8AR6HjbuWrOOiE4v4/NtGfvPaRhyKwv3LvuCiv35EWDOoaQwxb1Ixz73/DUN6p7PgjOFUFKUK87IiH3N/VIxmCE4u6QXsOzrXEtZSVgr2x/Fhe0OQec9WcvJv3+acR97l5N+8zeXPVrI9Fnn3ONQOo/Srqup4ctUWPA6rDcAPzc6mEOGojhCQ7XFgILBLMnZZRlYgJ91FRDeIahqKLOFSZNPdSFbQDANJlnDKCi5ZRkXCKUsohsAlSCnulDBzxUEQiT8mmX9rgCHML9cwZgQ83lio60+ruT0KNEc1QrrBO1W1rN3WiCrJ5vNjji4rq2pJc6rsaAqhGYKI0JElmW2NQQwDAmGNS04sYltDkLBm8G19kMrqBq4+pRiPqpCf7SLf52ZHU4i5sXn38wkDGDcgm11NYea/uJbpD67kJ39+j3MffZePv64ny2NnUmzeQfu5F7cijTcJGzcgm/uWfcGZD63ivD+/x5Tfr2Be0vyxsLCwsEil26qhvr4ev98USS6XC7fbzYgRI77Xi7/99tvMnTuXsWPHomkaN998M6eeeirr16/H4/EAcPXVV7N06VL+8Y9/kJGRwbx58/jxj3/MqlWrANB1nenTp9O7d2/effddampq+O///m9sNhv33HMPAFu2bGH69OlccsklPP3007zxxhtceOGF5OXlMWXKlO81hu9CbUuEOU9+yJzyQhRJYkSfdNx2M/Idv7CVFfnI8TpMsR7zCJ9/+lCihkDTBEFdw2FXuP2M4eZjhmBXU4jnPqzmkhOL+Mmf30vkW4c1s7nQL04cyI+G5CBJEI6admUPLt/ULu1lVVUd00fm8UoHzUFWbKrl9sXruPvsEaaHs6aT5rSxoqqOq08pZldTiMsnFeF1KCw4YzitUZ2wprPgjOFohqA0P5PjB/m5a8k6xgzI5oZpJexqCqPpArdd4YrJg9mwvQmXXWHhWcMJawbNwSjpLhuqIjH3/31CrtfBdVNLiOiiXRS8LR67klgpOGVoDrefOZzalgiba1u7tC/sThFnS0jrNEq/sqqOlpBGbtfp8RY9TH1rBCnWjCbNacMR68bZEtHx2BX2BKI0haIUZbsJxb3FhUCK/Re/fZUl898qIGJ54/EFGg2wA6oQaJKEDTAQ6LE9FMx0FgkzUh43cOlOBESOvWaWTSUClBX5cWIK9aghsMkSzVGN4lwPGU4biiQxOj+LNEUhGmsUJjBw21QUSSLX6yTbY36+X768nB1NIT76Zg/D+njxOm2JBkg3njaMym/2UNtsnu9N00pw2BQiUYPWiI4qS3y5o4lrThlMWDNYVVXXbu7FrUinjwxR0xhkaSffH1YRtIWFhUXH7Fcob/369ezYsQMw85g3btxIa2tryj6jRo3q9vGWLVuW8vOTTz5JTk4OH3/8MSeccAKNjY089thjPPPMM0yaNAmAJ554gqFDh/Lee+8xYcIE/v3vf7N+/Xpef/11cnNzOfbYY7nzzju54YYbuP3227Hb7fzxj3+ksLCQ3/zmNwAMHTqUlStX8rvf/e6giPKmpNxKSQKP3cYdi9cxu6yQZ97/hktOGES+z8W7VXW8sWEnt58xnICuY5dkFEnir+9tMTvrSbCtIUhuhpNgROep1V9zw9QSovreHPMrnq3kFycO5PYzhlPXEua+ZV+kuLp0lIcOZjOkroq2AhGd5lCUnU0heme4zALUEXnc98oG8rPcZLslVm+uY2Q/L3ZVZVtDkAffrOLEIX4ml/Tm+qlDuXPJOn7/+qZEZO2Tb+oZ0S+D4lwPmW5nohAtTnmRjz/993H892Om5/Etpw3FrspUFPk6PNeyIh9pDpXnLp5AWDPwOm288+XulAZEndkXdqeIs2kfObJWDu0PT1NII82p0ivNQW1rGIcqE9EMmkNaLHXKoHemDR0I6zoaEgoykhDIEkQNHRWZMAYuWSGMKaxhb4RcGDqKrBCRJKKxpkMyElEhUCXTBtFMmzHTTeLe5GBGzLsqy443FooIiAoDgYEiqxgClFhqjEdVSEtX0QyBy67yq2UbuGXaUAzgz+9sZvbEQtQMCYeqcM/S9Zw3voDWkNnlN8Nlo7fXSU1TiP9ZsZmfji/gmfe/4ZpTBnPcgGxkYFdziOaQxqJXvki1US3yc2x+FuMKs7n5tKHYFTmlR0G8S+df54yjMRjt9IbVKoI+ejAMg5qaGmpqakCAEObPAHl5echytxfrLSyOCvZLlJ988skIIRI/n3766YBpbyeEQJIkdL19qkR3aWxsBCA7OxuAjz/+mGg0yuTJkxP7lJSUkJ+fz+rVq5kwYQKrV69m5MiR5ObmJvaZMmUKl156KevWraO0tJTVq1enHCO+z1VXXdXheYTDYcLhvcWPTU1N33lMHeFz23nhsjLuX7aByUNz2dMa5PUvdvPu5j384kSz6HFPIEp+tpsbpg1Fjy3B724Jk+GxcdEJgxAI3q2qY1xhNre9sJbrppbwkzH5GIbgvlc2MLusEIEZ9Y7qgg+/3tMuctVV6sc+i7bCGjZZMLJvJi1hjYtPGMj9r2zgp+ML6JPloqYxyKvrdjCsjxcjdqj500tw2W18/PUe+mW7WHDmcMJRg2BUJ92pMtDvIRDRyPQ4WVFVy5yyQmaOL0gpnpz/wloenjmab+uDyJKEz2Nn7qRijNhY45QV+bjjrBF8sKWO7DSHGXEPaQjg4Z+OZu4znxCI6J3aF3ZHcHv3kZu+P7nrFibfd+55nSq7W8KkZ7vxeRwEIjqKbBZ+uhQZu8eOLVa86VQUZFkiGNVwKgqqJKFISiyibUrnkKEjxewRHZii2SkriSi6Td4rsW2x6HrcsUWJhdZF7GhxwZ3o9NkBcQFvCIEE2GXVjLRLZqTcrD0xzz+k6Xz+bSPXTSnBAFZvruO6KYNx28yv9daIzi+nDEGWwGVLY1VVLUN6p2OzyWS4bNx02lAeXb6JW6YPRZVlWsMa67Y1UuD34LEp3HraMLPIVAKbLBOI6uxpjXBySS4eu8IAfxr3nTuKG//5Oe8kCfPGYNQq+jwMORDXvZqaGs5/+FVCzfW4cwrQg81c+7ed2G02npg7hb59+yaEO1hC3cKi26J8y5aOiwV7CsMwuOqqqygrK0ukxezYsQO73U5mZmbKvrm5uYmI/Y4dO1IEeXx7fFtX+zQ1NREMBtsVqC5atIiFCxf22NiS2d4Q5P0te3jxs20cm5/Fb179ghnjCxIuHpOG5FIfiJLmlMl2u7n3lQ1cPWUwqiSjSAK3ohDQdWyyzOsbdjKqn1lsdY2uM9DvIajpCYE/p7yQOWWF9Ep3sLs53C5y1VXqx77SQtKdKh6bQn0gSoZL5dxj+/Dj0r58Wx9EF4KnVn/NNacMwWlTCOsaeZkuDENw/ysbuG5qCTWNIRa8tK5dJO62M4ZhCNrdQCQ3BlIVmUyXjVyvgwy3nYJsN6eP6pPiw57hUqltDvPCZ9vbHWfej4r4xYkD+d1rphd6R5G77ghuf5qdE4r9CUGSjNWt8LvxfedelsdOUyhK1BBEDZ2QppPmVMlUza6YgahOVAanooAQRAwdj6oixywQdUNHyArf7glQkO0mQzb3M4SBkJW9Ue4O2nImp6kkz564II/v3tnMMiCWCgOGLKEKU3zLskRA03ApinkMCXQhcNtVRhdkoUhmofTgHA9pdhutEQ0hTGGfblNRZIlvG4K8tmEnvTNcRDSDB9+s4rITBnHNKUMQmCsMgYjGmMJs7l5iRtefieWZO20yD71Z1a752H2xFaYHZ5RS2xKhORQlPZYSU70n0OXvybphPfQ4UNc9Z4YfkTRZnF4fdvve78a4cAcSQt3C4mil27ekTz31FL169aKgoKDLP9+VuXPnsnbtWp577rnvfIye4qabbqKxsTHxZ+vWrT1y3J1NIW57YQ1D+3hZWVXH6Pws0w/YZqZv9MlwIsuCNKeKXVaoa40yu6wAm6SgSBLZaU5aIho2WebXy77gmlOGgAR//vlxeBw2JGmvbVkgovPQ8ipuf2kdEc3oMHJVubWBipiDS0fn2tm28iIfHpvCtsYgToeEIkm0agZb64N4XTZUSUpE6HY1h1BlhVufX8M3dQEu/VERRsyTvV2+aVUtdyxex6qvajssnnxi1RbmlBfSHIxS4HMnRHRepotJJTm4kvzaM912Hli+qcPjPPRmFT8akpPyeNvIXVxwd0RccGe47dx77qh2+1ndCr8733fuSYagj9dJWNNxqyo+tx2vYnbq1IEdDSGckkzY0LFJZoFnUDezwXVDYJcVwobOgGx3wmEFSUKSlVQNHvsheVbFXVPiaEl/xyPknfmTk7RPGGgIBjEk081FNwQuRTXtGw2D2pYgqiSzqymILgx0BDWNQXK8LrPb5xubiBoCwwBDguaIxubaVub9qIj+Phdel42bppXQP9tN1BDc+Pwapj+4krc31TL/hbWJZmLD+mRQ0xhsJ8hhb254Y8C8mR2Uk8ax+VkMykkjJ93BruYwZZ18f1g3rIcmB+q61x2cGX6cGR1/31pYHE10O1K+cOFCLrnkEtxud4+fxLx581iyZAnvvPMO/fr1Szzeu3dvIpEIDQ0NKdHynTt30rt378Q+H3zwQcrx4u4syfu0dWzZuXMnXq+3QxtHh8OBw9G1V/b+sr0hyNe1rYzsn0kwoicsB+M4bTJL19SwvTFEeZGPTLcd3TDI87rZ1hhi8+4WVFliRN8MorrBRScWce8rG1JyqSuKfCw8awRuu5JonvK3C8bTrJlLym15fOUWXrisjIVtuvSVFfnIy3BxfnkhILGiam8kuKLYz91nj8AQsOSz7VxUMYibnl/Dx9UNzCkvZEx+Fl6fG1mWaNEEmS47972ygTGF2QzwuQlqOsGI3nm+elUds8sKO9y2qqqOOWWFeF02+malfg6dMS/1hkCEXK8zUYzW2XHa0jZyFxfcyUvz0F5wdxQptLoVfne+z9xrDETYvCeA16miKGaUGckUphFDEDUM8mOfTReKGTnXdSQ5lusdK+h0ywq6YfqMx6Pe8Si4hJlbDnuLMuPbktNSkgtDk60QO/Moj2MALsDmcqFh3tT28jjMFBJkwkLDn+ZiV0uQPl5zn4++3sOYAdnohmDTzmZunDaUppCGokhUflPPuAHZTBzoQwJ2NIV48M0qSvOzKC/y8eDyvYI73kTs/FivhDmxebi/ueEZbjsnDe5Fod/T7vkV1g3rIUtPXfeS01HiueQWFhbdo9uiPDmXvKcQQnD55Zfz/PPP89Zbb1FYmCrGjjvuOGw2G2+88QbnnnsuABs3bqS6upqJEycCMHHiRO6++2527dpFTo4Z/Xzttdfwer0MGzYssc/LL7+ccuzXXnstcYwDTdzJY8a4fCYNyaU5FGVOeSFOVUl0xbsj1oRjTlkhmW4bNkXG77ETNQQPLt/EpScOok+mC10IdEPwm1e/aCdsV1TVseDFtcw/fRh3LlnP03PGIkngsimJyFXyBTIQ0dlS10ppflZK6kfl1gbmPvMJAE9fOJ7ZZQMS2/pmuqhtCVG9J8glJ+wV5A/9tJTHV27B61Io7OXh1udNT+T/PX8cV0webBb5AJXVDSkdNjtiX/mo6c72H9u61ggtYY2X19SwsqqOv/+i699tsk1kRSeRu+4K7gy3JcIPBWpbIngcCroQOGN54BHNQFVkwlEdp03h1TXbmDKyb0IoO2QZVZKIGmahJ8J0W1FkCTUmzOM54XHsMbGvS6bsjgvy+KdST/p3spjvyqOcpO1xJ2/dEMgxRROIarhUBYesohuCHI/pYY6AUf0zue+VDdw4dSjH9M/ixufXUFndwEvzyhidn0VUCFbHmgDF08LmlBXicagd1pi0/bsrOssNz8s0i7/vOXskrRGNQEQnw2UjJ91hzZUjnHg6ijPDT8O3m3DntF9BFx0J966WkSwsjhL2q9BTknp21sydO5dnnnmGF198kfT09EQOeEZGBi6Xi4yMDC644AKuueYasrOz8Xq9XH755UycOJEJEyYAcOqppzJs2DB+/vOfc//997Njxw5uvfVW5s6dm7jrv+SSS3jooYe4/vrrmTNnDsuXL+fvf/87S5cu7dHxdEbcyWP28QOQJHh3c12saY7pgBLR90Z1BeCxqby3uY5xhT5awxqfVDfQN8vNJ9/soTR2ke0q0nzrGcN45sLxhHTBrtYwaQ6VskE+inPSkKVNKa4i6Q61XevsOeWFPBizUrQppkh/fOUWAhGdpZeX4/M4MYRpM3fxiYPISXfgVBXmnzEMj6rQFNa4YVoJtygyDkXmthfXckx+FhMH+sj1Ovf5Oeoqn71vlovf/nsjC84YnnJx1wzBYyv3eoan7cMjPN6sqbzIx6JzRnYqFCzBffjQGIwQ1QWqIqHKZha3JAGyhCxLaBicfkw/WqIaLptqNgaSYqI7Jr6lmFuKgZnLbf47VrgJiX3jP0NqIDDaweMJa0XaR9TbEo+kR2NHyE13ERXw5c4WRvbL5NPqesbkZ5GIkcQKQK+bUkKrZuaS337mcFPQSxK7WkJU7WplZL8MWkM6F1cM4qLygfTNdhGJGjx38QRsisyKTbtxxtK/HKqM267QL8uFJMEjM0enFFsn39B2lRtuzZ2jF2eGH3dWL4KNHV+nQs31XPu3nXj9eQnhnpxnbmFxtLJfonzw4MH7FFR79uzp9vEeffRRAE466aSUx5944glmz54NwO9+9ztkWebcc88lHA4zZcoUHnnkkcS+iqKwZMkSLr30UiZOnIjH42HWrFnccccdiX0KCwtZunQpV199NX/4wx/o168ff/nLX34wO8SGWBe7yq0NnFDci8dXbqG8yI9umLnVl59cDJh5zMW90mgOaxxXkM2dS9bxi5OKuPiEgdS1BBlbkI0Qol2762TcdgVFkvnNv9enprYU+7nzrBH8ZEw/bp0+lMZglAyXDY9NSdiaxX3Nn1i1JUWox4ssn33/GzKcKlFD8IfXN7VJnfFzVyytRY7ZPOqGoKYxxIzxBQzwuREChEvFY1cTlo1tqSjysbMp1OHYKor9vL1xN/+q3M7cHxWnXPANQ6RE/XY2Bako8qek3iQfx2VXeObC8RT43O1SYSwOT9x2FZsio0gQ0kwf/jSXSlDXEZDIH0+zqbREddJU2XQ5iX2ltUY0XKqMQ1aQksJ2aqxDaLLXeFtRHf853r0zSTOjsjf3vG3eeTJt9wUp4T1+TL9MAlGN0vwsgoaGS1bRgW/rg6Q7FSKSIM1mPlbTECQ7zcGuphC9vE6+qQ0gBKQ5FXrZHexuCnF7B0XWJ5fkUFHkY+32Rh6bNYb7l32RMkeTi60DEd3KDbf4Xji9vi6Fu4XF0ch+ifKFCxeSkZHRYy/enZQYp9PJww8/zMMPP9zpPgUFBe3SU9py0kknUVlZud/n+H1pDERQFPMy/PjKLUwfmYfbrpDpthHVDVZU1XHz9GG47Qp/nTOO7Y1BHnmzitllhYwekIXXpXLqsFzSHSq6EKh0nL4RZ055IQtfWts+tWVTLbe+sIZ7zhlJSNfo7XUSjGrYgLvPHsEtL6zlmP6ZnXaolIBF54xkd0uI3762qYPUmVpufXEtl08qIt1pI6wZ3LlknVnIGhP7T63awjH5Wazf3phi2RinvMjHdVNLqGuJtBPtZUU+Zh0/gCueNX+HbZfNA5HUG5XbXlzHXy8Yx/wX1qYcp7zIx11nj0AYgn59XFYk7whCliU0YWBTFGQFfB47kgwKEi16GAMZt6LECicBycwZV4CAoeO12dCTYg6JNJSYIO/s2yr+lHgkXJDqR25g+o4rgE3qPFIez0OPQsxtRWVPa5Asj4tPquspzc+iMvZ3Y1jj1//eyDH9MzlnVB/TjlYIAlGdHK+TBS+uZUxhNhMKs+mX7ea+ZV9Qmp9Fnwxnx019qmpxvC5x7ZQSvtzRzCNvVnXYVAzM75jPtjZYueEWFhYWPcx+ifLzzjsvkbdt0T3qWiOkOVSevnC82cBEgr9fPJHa1hC6AfMmFaFIMP90M/897nTws4kDOH1kHwIRnZaw6bVsV2RkWcJOatOOZI4f6EuJciezsqqOlrCO16Hywdd7GBdrFuIA7j97BA0xx5bOntsa1XE7bF02Fbr0xEEsXVPDV7uamV1WyPXTSlAlmXteXp8o4nxoeRXvJVk2Juey72mJ8PR733DPOSNpCWs0Bs1mMLuaQtzwz88TS+ftCjNdqeLgrNK+3LlkPcfmZ3F+m9e4a8l6fv2fx1iC4gjDJktEdIFhCFyKmVMe1nUcioLH7khEqVVZQqBQH9FxqjKSLOGUzcLPoBbFrtoSAjm564LAtCyEjoV1W3Eef74E2KW9+3e21hhPcbEDjpiFoz/NRUMgyNj8LAQwJj8LQ0CaXWX+9GFUVtcnHFp2NIXYXNvKB1vquG5qCTZFBgH3vLy3XgU6L9x8/Yvd/GzCAAb3TmfFPzsvkp4/fRgXlRda88fCwsKih+m2KO/pfPKjBQHtItflRT4WnDEcmyJRWV3Pj0v7UDbIR2tEZ1Ussjyol4dbYsWScSqKfNx1zkgU4K6zR3DrC2tThHlFsR/7PvzFv65r5dkPqrnrrBEEtBAO1YmMacNW0xDs8rktIQ3D6Hp1oyEYZXxBNmeM6sMdMVeXx2aNSYwjXjwW6OQG4B+/mMjNpw1l4eJ1vPHF7sTjZUU+7j13FFc8W8mYgqx2y+ZtPcPjThLLk46RjNVR8MjD41AJtUZiEXNBOGrgsskEtZi0FqDYTPEtAF3XEKqKEDKGgCgG6aopu4Whg6QgS7GId5tCtM5mWbzrZzwNRQFi2S8JpC6K2ozY/gC6ZO6W4XYRNgxskmk/akgQNjQcskppfhYrq2oRmEWcl50wiImDfNz6wtpO596+3kPN6Hq/UFS35o6FhYXFAeCguq8c6TQGItz+YvtUkpVVddyxZD2njehNdV0AWZK56fk1zBxvVqmbKSjrOnRXuXPxeu44w4yq33P2CBpDUcJRA49TJd2m0BLtuqOqQ5XNVJYX13Lf2SPQMfXGLc+v6dSKMI7LriRafXd1/NxMJ/e+siHh6uK2qynbuyLdpTL/pbUdptCAuaJwTL8MghGdjKRU8LYWhlZHwaOP1rBGIKwhSaAoENU0nKodlyzHijUNIoZAkUFCIsPl2GtXKIE9lnBiAHKsU2eiaFPqWEe31de2pMc1zKi3JO3NE9cxU1g6IlFQKpkOLK0RjTS7SmtUw2tTQZjHjAvy7Y1BdAOG981INAe7++wRvPtVXaIbrsfR/bkHkO3Zt9i2Gv9YWFhYHBi63TzIMAwrdWU/2dUc7jLVIzfDxVNzxvHuV2ZL+WyPnSdmj2Xq8N4dPs+fZuf6aYOJAn985yuEEGTYZfLSHWTZFFTAGyvc7IiyIh+VWxsSr98U1VGApqjOx9Xm4xVFHT+3othPOKqT1ub4brvCvElFPDl7LEsuL2OAz0NUN7j0pCKOH2S+nqYZzJtUxGOzxmBTZJ65aDzzJhWl+LTHz88my136ix/TL4Nf/3sjX+8J0BiIpGyPWxi+cc2JDPB1XbxpCYsji8ZAhEBUJ9tjJxDWcMkKPrfpviTLEgqQJisI9FgkWBDSNVp1HRmBmdBiinCZvdHuOJ3dinb1eLK8jYv/rj518deNp9l47CqaIXDEOnkKyezS6ZRVahqDbNndSlQzsMkyfTJdLL2inJBmJByO1tc0EY2mzj1/moN7zhnRbu7B3qY+3WmcZWFhYWHR8+xXTrnF/tHQQcOeZJw2s4CsbeHV47PHtNvXn2bnuV9MwCnL3L54HXecMZzPtjcyok/G3jxXAVEJ5p40CNrYJpYV+Ti/rDBRKAnQGtLIsCnUNIR4YEYpT7//DbPKBmAg2jgz+LjltKF47ApNoVAidWZDTROPzx5La1jDl2ZnT0uERa98kfLcSSW9OKe0L5+uqE9JVylv4+QQP7/6NkK7LU0hjeVf7CasGdxzdnsrw7gNW2MgkpLOkowlLI486lojhKJmUy6/x4FmCKTYqo5mCJyxxkBpMdeSqBCkKyqKEBhIiehEsjvK90nYi1sbxtet4oK/Kzvm+KqVJkBHUNscwuO0oaoSGgpRw+zM61IVvE4bA/wesj12frXsC84bX8CTq7akFGd2Nvcqivw8NmsMFzz1UaJGo21Tn+40zrKwsLCw6FksUX4A8XQQjYrjtiv0y3Rzy/NrEnnkc8oLKe2fSU56++Y69//HKJoDEQyXjWtOHUJTRCcn3UlrREOxq9gwc1BbwmZh5C3ThyGA2pYwUV3wSXV9QgDHSXeqNEd1/OkOFr2ygcrqBo7pn8kNU0sACEcN0p2qabMItGoaHoeTj7/ew+1nDsMuyzSHNTJcNkJRg4c7aMc9rE8Gt73YPh1lZVUdEhL/vPR4ahpDfFJdz3PvV3PlKcVdvqdxf/FVVXW0Rjq3huxuR06LIwPNEGS57YSiRiJNIxzRcdtkJElKtLyPEvMalyR0zAZANvamjsRtD+PJevGCzo4KO7sS2HFBHhfi8dfuLFIevxmIp68YBvT2utAMgT3mi26TZSKSgSxJrN3WyLEFWexuCjN3UjG//ffGdm4pnc29FVW1IMHieeXUByIdNvWxOtVaWFhY/PBYovwA0RgwC84emzUGSZJM0flBNeeNy6e0fya56U7qA9GEZeDDPx1NTaNZaLmnNcKzF41n1Vd1PL5yC2A2zclQZMJI3PlyagHo5KE53Hb6MLY3BHmwjTCuKPJzfvmAdk0/Kor9pNsUdrSEcTlUKqsbEh7lv3ttU8p+d501AkMCm6xQ1xJkdH4WkiTxbUMw4RaTXFCWTLzgsiNWVNWiGYJQVKdskI9zS/vy2oYdCX/x5BuVsGaQ5bbRFIritisEIjqtka7z5y1hcfQghCBqCFpCGpJLQZIkguEo6XYnLVEdr00xo9ZCEBQGLllBQdBqGCiyedMZ/zTFCzTjIr0zb/F9RdLjx1RIjZx3dKsuYRZbA7RqOi7F9FBXZIlmTccpy4QNHY/NzCXvl+3mjpfW8XF1A89dPIELygdyzalDUBWZ+tYIuiFId6qdz73YjeqYAdmdnr/V/MfCwsLih8US5QeA7Q1Bbvjn5ynOKGVFPp6+cAL3LdvA4yu38LdfTCAcNcu/fnHiQJw2uV0aSzzFY932RtyKjCZJifb1yZTkeXlvcx2aIRIFXskd+FgpmFNemLhAVxT7ufvsEahATpqD7c1h5pQXtvMod9sVxgzIIqob3PvKBm6ZPpScdBe6gEBUJxDRuaB8IKX5WUT0jgsr91VwuXVPgMue/sQ8r9gNxJBcLw5V4rzxBZ02Mrri2UpsiszOphC53vYrC3EsYXF0IAF2WSbNqeCM2SF6YitODmWv4DYdTBSiQqBIEm45Zp2IaQ2aXJAZ9ylPFuT72w08Lu7VpJ87In4D0KprpKlqwuv8lufXMLHIx/ThebhUlYBmrpDVNIb42cQBzD/Dw/2vbOC88QX8+t8bU+bvY7Pap8ElYxU7W1hYWBxaWKK8h2kMRNoJcjDTLe5cso5j87MY1ieDXU1h8jJcAPxoSA73Lfui4xQPSeLus0dgAxqieofR6DH5WfTJdLFwSWqXvmQBe/P0YfxocC/SYy4tioCgZF70rzi5mIkDs1PEb7zhz56WMJ9U13PDtKFEDFM63NpmSbysyMeU4bkdvh/7cnxI3r6iqhaBYMyAbGbEcmQ7dWGZPoy3Nu5i3IBsdEPQJ9N8LxsDEWpbIjSFonhdNvweS5QfDYjYH49qiuyoMBCG+ZhTVggZOg5ZRo/16nTEGgfFKxhkQwdZSRHgUqw7bTL7EuTxiDjsTXlJPmbcjrGtOI+nuLhkFT2WD7+qqpYLygdS6HdjAHcuXsd54wt47v1vKOmTwUmDe7F1T4ArJw/hvmUbOi2Q7gyr2NnCwsLi0MIS5T1EXAyGNT3Rsj459SIeuZ42ojeGAVFdR8IUtNB5Q4+Pv6lHNwSaLNEc7DiHOsNt4842gjz5mHPKC2kORcl02UizxZbqJbhj8TpOGZbDAK+Tb1vCzJtURGn/THQhKOqVZrpB5KTRGtb4tLqe4wqy2wny+Ous+baRiiJfu5uGyq0N7bpzxkl2g4mzsqqOS08qItTJDUj89W6cVsKdf1rPhIE+3v5yN6eN6E1rRG93Q3RCsZ97zx2VEO0WRyaKDBHDwKOaaSoOlIRXeNQQeGLNgTAEEQmckkSUvQWYRswCMS7uAQyp83zyjohHxJObB8WJ55MnF5TGU2MkYb6WgvlgvBXAMf0ykSWJnc1hHnxjE8fkZ/HM+9/w0zYrSI/NGtPh/Krc2kBZka/D7xar2NnCwsLi0KPblogWnbO9Ici8Zys5+bdv83VdIBFlrqyu54KnPuKypz9hzpMfUlldjypL/OGNL8n2ONCFwfllhQS7yI2+6pQiJAluX7yuQxszAFWRuhSwpf0zaQ5pnPr7FdzwwlpahaDV0Ll2yhCmDTEj3FkeOwN9bvpnu+mb6aKuJUJYNzBiOd9jC32EdYOZ4wt4fPbYdpaGdy3dwPzThyduMuJ8UdPEXWePbGe1GHdbiefMJ6MLkeKv3BHf1gfNvPKwxpLPt9MYjHa4QvHOplpu/Ofn7ewTLY4sVEnGrsi0RHUihk4gqiMAhzB9yQ2AWI62g5g9odgbsY4Xd8YLPWX2Riy6+yUZF/BS0t+wNw0m7l2uJ22TYv+LPye+fziWDhaMauR5nSw4czjThvfm+iklPNVmBamzFLHHV27h/LLCdhapVrGzhYWFxaGJFSn/nrRNV3Gocof52WAK5LuWbOCY/Ezmv7iWRWeP4NG3vuLySR07jvjT7Jw+LI/bFq9jxvgCXDGP8LbCs75137mhyf7kt76wlvvOGYkjdk2OArubw2YKzOLUiHtFsZ87zxrBjsYgewLRRMR//fbGFEvDQERnS10rpflZzD2pCLsqI0nw1a4WttYFOCY/k+unDWHrniD9s128um5nOzeYOFHNILqPXHS7Iici7auq6vi2PtjufYnzzqZaq4PnEY6QIGoYNAc1+nsdtKCbPuGShB1TMGuxlBVizittc1Hapqbsb/548jGS3VviglsDMAQOWTK3xzp9hgFFmKtXIV3HoSiEQzqhqEZOupOQZnDHYrOZWEcF1Z2liAUiOlc8W8krV1SgGcIqdrawsLA4xLEi5d+T2pZIihis3NrAxIEdLxmDmTdd2j+TDTVNCOCKk4uJ6qJdNMttV3j6gnE0R3VuPG0ou5pC1LcGuevsEe32tSlS4jnxRiGPzBydiGj3znCkRKRXVdXRGosk6kAUQdWulnbOLRAX8WtY+VVdSsT/p+MLeOb9b5hTvrcLqCpLfLa1gYhu8Me3vqI+EOX2xeuJCkFldT2vrtvJZU9/wqvrdvJZdUOHgryiyM+abY2JpfeOKCvysaspzG2nD2NsQTbzJhXRuI+itbrWCF/tbrEi5kcgjYEImmFgk2S8LrNI0iMrhNmbMx7FFMcRSNgjxj//Gnuj1LDXL7ytwG77746QYq+lJP2cKDIFHLKUOKf4C9iAiAQPv7kJh6KwtT7Itw1BfGlOVlTVcvvivd19O4qKdzVXxhRkkem2MSgnjWPzsxiUk2YJcotDGsMw2LZtW+KPYXQdoLGwOJKwIuXfk6Y2YvDxlVsoH9RxN7w4Ed3gL7PGcnPMScVtV3hk5miARD76E7PHctfSDYwpzGbcgGzWbW+krMiPYgjuOXsErVGd1pBGulPFY1OYPDSH88blt3MrKS/yccrQ9kWYLSGNNJtZ2BaOGuR4nZ3eSKysquP8sr3iO75faX4Wpf0zAVNMD/R7mDAwm8ue/oRARCeo6cwpL0QIkdK4aP32Rn45ZQgCkZILW1Hk56bTSnjry138eflmHphRmvJ68X0WnDmMpWtqOOeRdxONhzorNI3THIryX39abeWYH4E0BKPYZZmIMMiyKQmxrQqBLsyOnkZMZksIBFLKF188XSUuuNsmiUmd/Lsz4seOi38Z0AXYJfMxmb0pLQbmjUJY15n7o2Kq64M0BqP0z3Iz/4U1zC4rTPn8dxQVf3zllg7nipWmYnE4IQyDmpoaampquPlfn+PM8BNqrOWJuVPo27fvwT49C4sfBEuUf0+8bRwMAhEzn7UreqU5+M2rXySiX267QkG2m1umD6U5aHbHXPDiWlZU1XHDtBI27mjmv48fQFjTEEIiEtbIdTnw2fbKhwWnD+PGWCOiZFZW1SH4IsUSESDNqSbyZptDGmHN6LQ49fGVW9pF6FZV1TGnrJCIblBe5OPOs0fw88feZ2t9sN0+GS4b//34BwkB/dPxBVz+zCc8PHM0l4U0GoJRHKpM5dYGfvvvL7nxtKEMz8vk02/rGTsgmzllhUiS6Tv+yTf1nPnQqpQoe6LQtIPUHthbUOq2K4zqn8nXta3saAyS4bZb7ixHAFFDxykruCUlEYWWAEOSkKS4z7gUSyWREtFrBUCYOSSdFXPGH+8qlSV5W/y4Bm2KOWOCXLC3INRcpYK61hB+j5OoIch027ArMjZF4pj8LDQjNTbfUfFmPE1l/unDmH/6MAJhnQyXlaZicXgRaq7n2r/txAi14M4pwJ3V62CfkoXFD44lyr8n/jR7u3bun1TXd+p6UFbkw6EqCUHeP8vFX+eM473NdeRluMhw2whrBjPGF3BhxSDSHSqGIZAliYUvrWdnU5gnZo1BA7OZiKwQBLY1BDuNdMfFcZyKYj/emKDXMAV6IKzz3MUTaA5pNAbb546rUntJEtYMBvbysPCs4e0EeTLZHjtPzB6L12UjqhvMffoTzirt26ENJEBQ0ynNz6Kyup7zywp5+v1vuPiEQchI3Pz82g5f466lG1g8r9xc6m/jD39+WSE3/vPzRHOk5JsTK3J++OOKOasoQNDQsSMnumDKmMIXzDQRXQiEtDdSLsXzzGO0Fefxf+9LkMfFeLyDZ9uuoAIzWq4LgSpLRIQ5pw0h8HucaEJQ0xiiITb33t60m/XbGzlzVJ9EsyzoPCo+piCLkwb3Is/6HFscxji9PnSbdSNpcfRiifLvSUft3B9fuYXHZ49FlqR2AvGC8kJCUXNh221XeOL8sexsCvHahp38tE0DkKtPKcauSkQNwYKX1lFZ3cBrV5ajC/jTiq+4vGIQIUyv8ZkTBnR5nvFId0WxnzvOHEZEQFDTcKoqreEoeVkuFrzU3n/8/LJCno3ZsLUbu8tGZXUDO5tCnQryvpkuTn9wZUJUlBf5+MussexoDHXabTB+E/HQ8ipkJOZOKmJAtpuaplCn4wtEdL6qbWHhGcMRmDnkzaEolVsbuOLZyk6Lb+PuLA/OKLWiiocp8QJKWZZwxbzGk+PLNgQ6ZnGnknRz2VF0vCPLwggkHFuSxXlyl84Uz/PYY/En6EJALI1GF4LaphBZaQ7qmkKku2wIAXe/vKHDuXf/sg3cOn1o4mY0HhWfU17I3JOKcNoUKypuYWFhcYRgifIeoKN27i6bzF1nD2d7QwibIuO2q8gSCETCLWVOeSERzeDBN6sojXkQl+ZnJdJCCn0ePqmup0+Gi8rqBl647DhkJO5ZtoHbpg3FAEKaTnlxLwb43V2eY4HPzZu/PJGQZqDKMtsag8gSfLLLLEy9rRP/cTBzx6U2kfLyIh/pTpU7l6znL//dcefAyUNz0AzBgzNKU9Jh7l+2gWtOGdLl+cZvIlZU1TL/9GG0RvR9NiLy2FUUWaLA74FdLfzXn1YntpX2z+z0JsByZzm8CUR00u0KGnuj1sk+4TpSIqUE9orozoo2k8W3hCnII0DbT0dckMfFezI2ICpBSDdQJQlZkmiJmDfjHqeNiGaYEXQBi15u3/gnee6N7JeRsvIWiOh8trWBmePyrci4hYWFxRGEJcp7iOR27o2BCPOereTm04ay6OUN/P68UmyyKQyaozoffrOHRT8eyYi+XlrCZqv6nHQ7o/MzeWxl+7byC88czr9+cRwZNjfNhs6NU0oSokOVZRpawrhtSqdNeiqK/XgdKiurasnLcOH0uclw2XCqCn94o4pcr7NLn/M5ZYWEkvLkK4r8XDtlCHOe/JBAREeWpXbpOpNKenHjtKHc/tLalHOKRwAVpeuSuWQBvrU+wAVPfcS8SUWdpgWVF/nI9tjJdJs5/m3Tijrzco5jtRw/fAlHonhsMqokYaO9c0qyFznsTTHprOV920+mTntBnrxv28LNeNQ8ENVwqypIoBmCtd82ctyAbO5Zup7rpw7l4eVVzC4r3Ofc+7Y+mLhZB+iX5aK312ndRFpYWFgcYVii/AAQt0kMRTUenDGanU1BstMcKJJES0hj7IBsHn2zipv+tSbxnEXnjODlNTUdRswWLl7PvWePQAa8shkRrI/qqDI8teprLjphEPe+soHrppQgSRtTUmYqiv3ccdZwAprOqH6ZtIY1dAFrv21EMwRzygpx21Uenz02UdTZ1qowrBkM8Ht4ZOboREHmjP95L7FfIKInRIPHodIaNiOCbdNh4uMBmH/6sP3q9Amd59PGXVuyXbaEUGmbVrSvKLvVcvzwxZ/mNLvPsje3O15QKUgVy/G/O7slDGNGxpNTW5Kj7G3FfLL4j7+mDuiGwGMz7RlbIjo2RUYzBHctXc/M8QXUtoSZMb6AnHQH8yYVdTjvwJx7hX4PeV6n5TFuYWFhcYRjifIDQNwm0edx8N7mOgb18hDVBfWhKOlOlS+r6/m4uiHlOTldRKtXbKqlKaKTqUJUVrjl+TV8XRfgiTljuPSEQdSFovxkXAEPvvElEwZmc8PUEkJRnTSnSlMwiqYLfvXKF5T0yWDSkF6EohpjBmRzW8zhJU5ZkS+lIVCcTJeNpmCUy57+pN25lRX5+KS6noeWV1FR5OOY/CweWl7F47PHdll4KgTMLitEQIe5tHH7xGSBnpxPO6esEK/Thseh4LGrZLpt7cRKPK1oW0OQsGZQUeRnRVV7d5YKq+X4YY0eszl0kJp2kuyCEo9mdxYdj+OI/d1ZrjmkNgRS2JtbHo09ZhgCAUQNwd1L1zNjfAFuu0JpfhbjB/oSzkpxOpt3YM69bI+dXK+zG++EhYWFhcXhjCXKDwBxm8RA1Iwg35HU/AM6vgjvK71iT2uYjCx3QpD//cLxprOEEDhUmf955yu+rgtw2/RhSLJEhkOlNarhsas0BCLcMn0YH329hzSHjY+/2cOSTqLyQIp9YnmRj35ZLrbuCbSzHEwW0BVFfs4vH8C8Z0wxrcpdp6c0h7SEwL6gfCBuu4JuCFZvrku8LxXFfmYdPyAh0MEU5vFze+Gy4xnWJ6PL18lw26lpDDHzL+/zwIxSDES7m4A7zhpuRR8PYwwDopi2iCmPkyqm9yXI29K2kDM58h4FJGGmqcSb/xiYEXJJlgiENAIRLTHv+vfP2q95B+bc65/lsgS5hcV3wIj5nsfJy8tDlq1+iRaHNpYoPwD40+xUFPuRgI++3sPsskJmjC/AaVP4/NsGJAlcNoU//fw43HYVmyKxDw2LP81Bq65z8QmDKMp2oxITCJKEIWBnU5h/Xjh+b7QOWPNtI4W90vC6bISiOsW5XrbWBxjZL5NtjSEqO+iqmWyfWFHk565zRjDvmU84eVgu00b05oLyQlwxxwebItMQiPCPX0zkrS93Me+ZvTcZWZ6u00HiNm9xEZLskf7k+WPxeRyossS0B1Z0uKwP3U85kWWJ0vzMlCh7WDNwqDI7m0LoRmclfxaHOrubQoQ0nSy7+VWWnEaisldYQ8duK8kkb48/P96IKF7DkWx5qEtmrnl8uwwYssT9r2zgx8f1Z4Dfze7mEP19bna3hCn0p3FB+UBK87Papat0ZFt69zkj6Z/ddQG3hcXRTrL4ThbeNTU1nP/wq1YTIovDCkuUHwAy3HbuOHM4QLvIWEWRn8t+NIgLnvoocVEuK/Jx3ZQSJpX0YvkXu9sdr6LYj8emoAkIRjWzcIy9ObSqAk/NGkMYs6Bsd0sIISReXbeDkf0zOeuYPtzyQnu7w86WzD0OlWVXVRDRDL6tC+B12RjRJ4PLn63kgRmlPLB8U7sxzf1REfBV4jEh6NKrPaqnrgzEBbrbrrBkXnnM1jDMY7PGsOqrunYi5oT9SDlRZSnWkbR9Ee35ZYXIHXiwWxweBKM6blVKaWsfF8hAu86dnSGStsc7ccY/bfEoefyxeMqKQBCNWS0asQj5/a9s4IrJQ7hv2QZunj4UQ8DDb1Z1K13F41B5bNYY+me5yfU6rNUbC4s2dCTA4+IbaCe8nRl+qwmRxWGFJcoPEKoscXMHHTZXVNViIFKWqldV1SGzkTvPHk5UX9euUPOus0YA8MDrG7nulCEJ+zUNEIaItRgXRIWOU1bJ9NixSTLXTi0hohnMf6Hzgsu2S+YAHofCN3UBfvG/H+NPs/N/lxzPV7tbOvX6XlFVCxI8d/EEvq0P4lBlNN2ICeGOc8ZDHXQ9ddsVHps1hgUvreXj6oZE5Ly0fyZ//8VEXt+wkz+/s5kxBVn71T7c57Gz6OUNiWLUeJS8cmsDf/ugml//5zHdOo7FoUcgqpNtU/YZBY/T2X7xHPH4v5PFdzw6TuzfEUyP/zRVRQdChoZLVgnoOtdOKSGkGVx6UhGSkHjozap2xcydzT3DEAzL81o2hxYWMURMhBuGOTt37tzJzf/6HEgV4M4M/0E7RwuLnsQS5QeI1qi+T6uzZFZU1RLSDO4/ewTNUZ3mkEaaU8VhkxONS+KC3Ih5vsVbide2hPB5HNgklY+r6xmdn0VzWEMzBKGowVWnDOG4Abv58zubu1wyB6go8vHGhl2M7JuB265w3rh8QpqO12ljyvDenXp9r9hUy+zjB3DZ05/gtis8OKMUj13h2lOHcOM0mfpABE0XfFJdz98+qOaaU4e0i6TfOn0oj7xZxcfVDR1236wo9vPyFRVkdVDU2RUZbjt3nDWCt77cuwohSRJ9M138bFy+FZE8jHEoewsu2xLFzPdOZl/R8mTxLTDTU7SkHfTYvHMqirm/EDhklQ++3sNxBVnUNIXwOFQ0XRCJ3Zh+saOZ2pZIymt1lK4yKCfNyh+3sEgi1FzPtX/biRFqQXamYYRacOcUYLd/t+/szlJdLCwOFSxRfgCoqQ/QEtK63Kejws7tDUFcvdJItyk4bQqyIZCRzFSVmCAI6ToOWWFHY5AMl81sVhTrCigQjM7PoimksaMphCRJCZvD4/KzeOinpSl5323Po6LIx6yyQp55/xsAHphRypNJwviRmaP3OSa3XeGBGaU83iaiHo+Qb6xp4o6zRiABp4/qkxK59qU5uPn5tcybVNRxRH5TLbe9uJYHY7aI+4MAXv68JsV95YRiPycOtpY2D2dsstJpAaetXQ/OzonXYsQv0boAWYJom3kXiGi0hqL0SnPSami4FZXWqE5pQRbBqEFrWCcQMRLzbnR+Jk9fOIGZf3mvnTCPz70Tiv3cd+4oS5BbWHSA0+tDt9lRXOnoNlOMiyRxXVNT077dbid0lepiCXaLQwFLlPcwjYEIwaiBy9a110NHvtlep41bX1jLorNHENQ00lWVKFDXEqRXmosdTUF6e120hDU2727l2PxM0p2mIN/VHCLNaWPRyxs6zV9lpWi3ZN4/28Vjs8aQ43XwxoZdPPf+N1w1eTBvbtzFk6u2pCy978vr26HKnaa4rKqqQ5Yk7jl7ROJcJ5Xk0BrWaAqaXVAbg6Zo6enum42BCDf88/N2dojvbKrlxn9+zoMzSq1o+WFK1BDYZKmTCHjnV+nka3iyu0r833psH0MIdjaHEvPus60NDMrxmCJdVbh98TrOG1/AU6u2dDrv7lyyjvvOHcUFT32Ucg79s128elWF1QjIwmI/iUfQvf48Gr7dhDunAJuqtkt16ahtb2epLl0JdguLHwpLlPcwda0RwrqBwyZ3WejYtjlOWZEPuyqzYlMtQV3Ho5q/GllATpqLqGHQK81JVBdIkkShPw2HohDSzJbbAnhlTU27lJm2+auzk5fMi/y4bAp7WiP0Srczsm8GOekOvA6VKcN787vXNqUcq3JrQ5cdNSu3NnQpqFdsquXLXS0JcXJCsZ97zx3FwF5pAHy1qwXo+e6b8WZOHfFdRL7FoUNU6Mjf4WssLsjjq1BarOtmssD/8Os9lOZntpt3/jQHCJj/wlqOyc/q9CYU9s67G6aVpGyvKPaTk+60ouMWFt8Rp9eHO6sXwUZzrnWW6uImNbLeNqoej5DX1NTg9Pq7u7hmYXFAsER5D2MgaAlrGIYwO2zyRUq02XRfKeKCpz5MPBZP7ahpDDGqr5c0xSxc0wToQuCQJGRJpqYxyINvViUu+C/NKwPMxkNAt3LY44K3otjPtacO4bw/m8vq/3fJxIRYrij2c/Xk4nbH6ayjZtw9xq5KNIc6ti+Mkyy420aq/Wl2Tij293j3zaZ9iPj9FfkWhw5Zyv5/hcWvyXErQyGZ0XFVlggYOm5ZoaYpyPgB2RiYn9mFSb0GXppXhirLrKiqY3ZZ+0LpOMnzriVpXlQU+7nfSlexsOhxOkp1gVTBnhxVBzNCfvO/PifUXP+98tUtLHoCS5T3MA5ZJqoZeF02GlsjLDhzOJGowY6mUCJF5JPqPfx1zjg0Q+C2K0hILN+4k9H5WTzy09GEBYQ0DSGgORild4aLVV/VsrSNvWIg3L3GQ8n7FGS7WXx5GW9s2MWM/3kvkV+uJXl1r9hUyy2nDe3wOGu3NXL15MFceTJ47Aq6ELy50TzWi3PL8Hn2L20nOVKd4bZz77mjePvL3Z1G5PfHCjGOdx8ifn9FvsXhTVyQw96UFV0IPtyyhwkDfUSE4O8fVHP1KUOoa41S1xrm/PKBHBP3Fw/rSFL35l58e6bbxmOzxtAvy2Wlq1hYHATigh06Tn9xWCFyi0MAS5T3II2BCM1hjQ+/2cO5x/bFY1d4b3Ndwqt83qQi1m9v5KfjC/jd61+miM7yIh9nHdOXlqjG3Us2sPCsEXxaXc/QPl5aIzqDeqVx07Sh7GwKccM/P6e2JYKqmF8i+4osx/epKPazqznE3Gfae5O77aliWpGllA6e8QLOJ1Zt4fev701riUf5JwzMxq7IZLpt7Tp/xqko8rNmW2O7x5Mj1X0yXZw2ojcTB/qY/+LadvaQ95wzcr8FTTwC/04H5/RdRL7F4YvGXutDTZjWhgBNgSj9st2srKrl/S11XHPKEJpCGsGoTq7Xyc6mEF/tauaBGaXYVAlnrGakO3UW5UU+0uwKYwqyLDFuYXGI0Db9pS1WR1CLg4ElynuQ2pYIrREdVZaICsGu5jA5XmdCfD++cgvPXTyB+5Z90S4KvLKqjvkvruWW04ZyfvlAIprO6IIs3v2qjlyvk7Bm0BrR2dUU4pmLJvDT/3mPlVW19M1woRkCgegyh31Xc5jLJxUx+4kP2wnysiJfu+cossSCM4az4CXT47yrAk4JuH5qCY3BCJluGzefNpQ9rREag1GcNoVPqutZv72RiyoG8cHX7c+vbaQ6ETX/8Ui+qQvQEIwmfMUXLl7HwrNG0KebXs6NgQi1LRGuOLmYS08alNKIKO56YQmlw5Md9YFOnVfaEu9yG28sJACEwG1T0QzBN3WNRA1BaX4Gxw/ys7KqNjHvglFz3l19yhB+99pG/mtMf3RDUBGro+hy3jWFuOeckfT3eXpq2BYWFj8AVkdQi4OBJcp7kEAkSqZL5eSSHKK6jiJLKcvbgYhObUukwws4kIgK56Q7cKoKNY2hdikrZUU+Bvg9/Po/juGyZz7h0ZmjcdsVhBDM+1ERkJrvXVHs5/Yzh/PGhh20hp2Mzs9MyXEvK/Ix70fFvLlxV+KxE4r9+Dx2tjcGEw13eqU7Os2dXVlVx5yWCAN8buoDUe5aur5dx89fThnChU99yH3njkp5bmeR6sZAhBv/tabDiHtY655jyvaGoOm60ibavvjyciTMpkKWID98UYwOrBU6IdlRhdjfkiyxvSFIptvO2AHZrN5ch01V2N4Y7HTe/WRMPgDhqMGCM0dw78sbOmySVVHs546zhuOxq4maDwsLi8MLqyOoxQ+NJcp7kCyXHQnYEwiT6XagOyQcwdQiwo46WSazrSHIBU99xOvXnMBDSUWdceI/LzxzOIGIzqVPf8LCM4dzTP8MZFnijjNHENJ0AmEdt0NBGFC1q4WiHC+1zWFunT6M7Y0hQlEdhyqzq8n895/e3gyY4uOOs0aQ4bbTEIhSWV3PQ8ur9ulRLoTA41C59u+fdtrF9Lxx+am+6MV+Fp41nC21LaS77PiTRPL3dUxJ2CC2OcaKTbUsfGmdZYN4BKDR/gss3omz7WPxjp2aITAQGAIeWr6JuZOKUSSJHU0hlqypYWxh9j7n3Zc7W7j2H59x19kjWHDGMAJRnfnThyGA1rBGhstGTrrD+nxZHFUku5h0ZEVoYWGxbyxR3oM4gJChk+l2ENYMPq2uN3Ozi3wJ54bu5H+DGYnrLKK+qqqOcNQUt8cVZJHrdXL2w+8m0lKWXVWBIQSLXt6Q6vxS7GdIXjp5Xgdb6gJIkkSO14kE/Po/j0mkiDQFI4CHTLeNyycVd+u8+2a5aAlp+3SAyct08fjsMfRKd7Dm20amP7Aycd5xi8Q+ma7v7Zhi2SAe+XT05dVZZ08B7GgK0ivNiSrJBHSNqyYP4ZYX1nDD1JKEq1F35p1DlTmuIIuJA33kdTONysLiSCee7hF3MXEf7BP6jrSzT7Sw+AGxRHkP0RgwG99IssKKqlpeXlPDhh3NPHvxBEb2zWBPIEpjMEqm284954zgrqUbCER03HaFOeWFlPbPBCDX6+SqycW0RrqOqAciOsuurODtL3dzyf/7OEXY2mWZB5dvShHkYEaJDSFYeOZwLnv6k06Pfc6xZt5chttOQbab00f1oVe6I+XmIpmKIl/C73xffFpdz/bGEJXV9e3ET7JF4vd1TLFsEI9u4hHzEGZ0vK4lhNdlI6zp2BTzBjMY1bj9zOFENIMrTx7ML0+RUGQJt11pV3cRJxDRGej38JC10mJh0Q5nhh9xmLuYtLVPPFxvLiwOTyxR3kNEglGiQKumU5ybzorn13L1KcXUNofbLYdXFPt5YvZYPq7ew+SS3ty5ZF1KvnZFkZ+pw3t3+Xpel8qvXt3I6xtSc8HvO3cUTaFoO0EeZ1VVHZouOhXYbXO882JuKLtbwsw/fTh3Llmf0hmzrMjH3EnFZLpsaHrXYYW+mS4uf7aSB2eU7rNj5/d1TNmXqHfaFRoDVrT8SMJgb2dOMAV5TawLbprThmHA5t0tjOqbiSxJ7GwKpfj+gzk34504OxLmXpdKYazZlYWFxZFJsn0ipEbPLRcWiwOJJcp7kKCho0gyjbE88h8NyenQaWXFplocqswvTx3M7pYwM8YXcH75QD6prufxlVtYUVVLZXV959aCxX50Q1Can8mMcflkuGxkxZrvZLjt7KgOdXmeX9cFmFVWiEFqcVpnbiRxN5SahiCnjcpjdtkAwpq5jL+rOcyAbHfiOZ0J6YoiH2HNIBDRu9Wxc1BOGveeO4ob//l5yvG665jSlagvK/Kx5PMaPt/akEiXsTi80SDRiTN+a2gIMAxoCZu2h3955yuunDyE7U1BnKpKa0TngvKBlMb9xyM6KzbVIoRIdOJMpqLYT2+raNPC4qgjHj2322w8MXcKeXl5ll2ixQHBEuU9iCOWujKiXwaPzByNqsgd5qe67QrnjcvnnqUbUqLVZUW+RJTuzqUbeGFuGXcuTo1MVxT7uahiIP/xx9UJW7+2RYv7ihLbFInLn61kTnkhc8oKCWsGBT43/TJdXYrdeNS8tiVCcyhKutOW4r0cb/7TVkiXF/mYVVZIfSy9pbsdO/tkunhwRmnK68VvPPZFZ+cS91WPR0KTO4paHJ4YmF9kGnt9yAXw/pY6NENQmp+FBFxx8mBqGoM8/GZVp/MuENFZWVXHZScVpa5exbpwWp8TC4ujE6fXl+j2adklWhwoLFHeg0SFYOmaGm56fi1Ap44lXXl+x7c/tLyKLbWtnDYqj+unDSEUMYjqBu9urkvkkHcWNd5XlLhyawOBiJ4iOpZdVdFtsdvVfslCuiEYIaoJ3A4FRQYZs4FRV97ObVNT9vV6XRE/l5rGEJtrWxOFrMmpCVbR5+FP3O5QxxTkrRENBIwdkM2HX+9BkSTuXLKO65IKOpNpO+8ANCF45sLxOGwymS57t28GLSwsjg4su0SLA4ElynsIDbjthbUpudydRYRL+2d2mlMddykByM92U7Wrmd+99iULTh9OpttGrtfJ5JKcLqPGXUWsZ8eixMlUFPtxqnKi0U5TKIrXZUuxKNwf4kJ68+4WNte28uCbm1hVVZfoCvrs+9906O18IJr5ZLjtbK5t7bKw1Sr6PPyJAGFDxyEr1LdG8TgUGoNRNEOwcMk6VlXVcR106awSn3cAOWkO8jKclhC3sLBIYDmzWBxoLFHeQzRF9XaFk2u2NXZYULmvnOqwZlBR5OfVdTv48Os9XD6pmEy3bb+ixm1TP9x2FZtiFrf9+j+PSXTa/GJ7E5ecNBBZlpn3bGVKDnuyReF3QTNEyopAIKJzRSxtxmNXmH/6MBDm4xmu7qem7C/f18nF4tAmnr4iZIVFr2zgP47rT7bHTm1LhFH9MmNuPw0Ewl07GsXn5QnFfkuQW1hYtKMrZxbDKga16AEsUd5DNAW1lJ/ddoVj+mUyvjC7XUFlpqtrEZjpsnHr6cOoaQiS63WmFFLuD8kifntDkBv+77OUG4SKIj83nVaC16Fy0/Ptu2cmWxR+l9c3DNEuMhlPm3loeRXLrqygJM+738fdX76vk4vFoY3AFOYhTeeXp5aw8KW1HeaM29Surdocqple1dOrNRYWFkcOnTmz1NTUcPO/PgewcswtvjOWKO8BttcHcDvMtiVx3/GTBveiMRglognmlBVyQfnARBdNWaZLZ5X+WS7qAxH6Z7spzc/83gIh0d2yg06bvPIFt50+7IA02pEleGzWGMKakYjMx10ugE69oHuaztJ5DkS6jMUPh8DMI9cEbGsK4nXa+baxlfPLB3JMkqNK/MbwgvJCKor8KYXTcSqK/QzqZfmPW1hY7B9to+fxYtBkrCi6RXc5qkT5ww8/zK9+9St27NjBMcccw4MPPsi4ceO+93ENQ+C2KUwuyeG88fk8sWpLSs543PHj2n98lmgY9NK8cha+tC7VWaXIzxWTivG6bPT3eb73ecXpqrvlik21NAR7vtHO9oZgzNO8c5eLjH2sGPQk38fJxeLQRMMU5mHD4MHlqQWcbT9rq6rquKh8IOeXDwBE6opRzFnF6s5pYWHxXUiOnscj54ZhpsPJsmxF0S26zVEjyv/2t79xzTXX8Mc//pHx48fz+9//nilTprBx40ZycnK+17F1QAJuO2MYNz2/Zp/uDoGIzle7WzgmPzPF87tyawOznviAxfPKe1Qs7qu7pcfeUXPyvexvznVnkfnk9+HzrQ0/eNrI93FysTj0CBsCRZZY8NK6bjmqBKI61/7jM+aUF3LpSUWWs4qFhUWPkxw5l51peP15NHy7CXdOATZVbSfYwYqeW+zlqBHlv/3tb7nooos4//zzAfjjH//I0qVLefzxx7nxxhu/17EDEZ3WsIbHoXbb3UGVpU4dWHraDWRfhY4eu9qjOdddReZXVdUx96QiZo7Lt4SQxfciENWRJanbc65/trla0i/LRW+vVchpYWFxYIhHzhVXOu6sXgQbze+ojgS75XNukcxRcWsWiUT4+OOPmTx5cuIxWZaZPHkyq1evbrd/OBymqakp5U9XNAejuOwKTftIA4m7O8S9ujujp91A4oWOHXFCsZ9Mt417zx3Vbp/vmnO9r8i806ZYqQIWHbI/c681rHd/zhX5SXeojCnIYkhvryXILSzasL/XPYvvhtPrw5GejdPrw53VC2dGx9dmi6OToyJSXltbi67r5Obmpjyem5vLF1980W7/RYsWsXDhwm4fP91lw6nKyFL33B1umlbCb//9ZYf7HAg3kO4UOma46bGc631F5n/IXHKLw4v9mXtel4rYh1ewQ5UpL/Jx9zkjyO/BOg0LiyON/b3uWfQMok0RKNCuKNQqFD16OCpE+f5y0003cc011yR+bmpqon///p3un+2xs72+lUy3g/IiX0oDoTgVRX4G+j3cOLWEL3Y0M//0YUR04wdzA+lOoWNP5VxbFoQW35X9mXvpDpXWsLbPOfeb/zqWXK/zgJ2zhcWRwP5e9yx6hnhKi01VWHTusQDtikJramo4/+FXUx6zODI5KkS53+9HURR27tyZ8vjOnTvp3bt3u/0dDgcOh6Pbx8/1OolGdTRDcOdZI5j/Ympnz/IiH3edM4LWUASnzcbJJTlkuO0/uBvID1XoaFkQWnxX9mfu9c1y821dK3edPZJbX1jT4ZwrsKLjFhbdYn+vexY9h9PrQw82c+3fPk5YK8aLQsGMnDu9foRo7+wCVvT8SOKoEOV2u53jjjuON954g7PPPhswfUPfeOMN5s2b1yOv0c/nYXdTiHBU5+5zRhKI6DSHonidNrI89likLlUgHMluIJYFocUPQT+fhx31ARadM5KW2JxLd9rIcNm+cydaCwuL7mMkNc+xWs9/P5KtFeMR9GT3FlO4W4WiRzJHhSgHuOaaa5g1axZjxoxh3Lhx/P73v6e1tTXhxtIT9LKWyFM4km86LA4deme5972ThYXFASGeWhFqrsedU3CwT+eIIl4MGndviT+W7OzSNifdipgf3hw1ovwnP/kJu3fv5rbbbmPHjh0ce+yxLFu2rF3xp4WFhYWFhUX3cWb4EXRtdGBxYGibkx7XNLIsWyL9MOSoEeUA8+bN67F0FQsLCwsLCwuLg03bnHTZmZYQ6Xl5eYkc9DiWYD90OapEuYWFhYWFhYXFkUhyaktcpMdz0mVnWrcEe1viloxtH+tM1MdrDDoqRgX2uS3+89F6w2CJ8m4gYmbIVjMFC4ueIT09HWkfvv5gzT0Li56mp+dec3MzrXt2EW6uRw4FMUKtyKEgqqIQbKhNeazt313t832f/0O8xiH/fKcHQ9cxdAOS/g62NjH3T6+SltWLxpqvUZwe9FBrh393tI+qqtxz3oQO03937tzJzc+9R7ilMfH8UHM995w3AWCf24BOj32o0qdPn27t1525Jwmxr/YbFt9++63l12ph0YM0Njbi9Xr3uZ819ywsehZr7llYHBy6M/csUd4NDMNg+/bt7e5y4s0Vtm7d2q0vuSOBo3HMcHSO+0COubvRus7m3g9xjocK1hiPDA6VMVpzr2uscR1+HC5j687cs9JXuoEsy/Tr16/T7V6v95D+IBwIjsYxw9E57oM55n3NvThHw+/FGuORweEyxqN97lnjOvw4EsZ2dGbSW1hYWFhYWFhYWBxCWKLcwsLCwsLCwsLC4iBjifLvgcPhYMGCBTgcjoN9Kj8YR+OY4egc9+Ew5sPhHL8v1hiPDI60MR5p44ljjevw40gam1XoaWFhYWFhYWFhYXGQsSLlFhYWFhYWFhYWFgcZS5RbWFhYWFhYWFhYHGQsUW5hYWFhYWFhYWFxkLFEuYWFhYWFhYWFhcVBxhLl35GHH36YAQMG4HQ6GT9+PB988MHBPqUe5fbbb0eSpJQ/JSUlie2hUIi5c+fi8/lIS0vj3HPPZefOnQfxjPefd955hzPOOIM+ffogSRIvvPBCynYhBLfddht5eXm4XC4mT57Mpk2bUvbZs2cPM2fOxOv1kpmZyQUXXEBLS8sPOIr9Z1/jnj17drvf/dSpU1P2OVTGfaTMw0WLFjF27FjS09PJycnh7LPPZuPGjSn7HAlzLpl7770XSZK46qqrEo8dCWPctm0bP/vZz/D5fLhcLkaOHMlHH32U2N6d75XDgUN57vXUfKqurmb69Om43W5ycnK47rrr0DQtZZ+33nqL0aNH43A4KCoq4sknnzzQw0vwXefQoTiunpg33bkuff7551RUVOB0Ounfvz/333//AR3XfiMs9pvnnntO2O128fjjj4t169aJiy66SGRmZoqdO3ce7FPrMRYsWCCGDx8uampqEn92796d2H7JJZeI/v37izfeeEN89NFHYsKECeL4448/iGe8/7z88svilltuEf/6178EIJ5//vmU7ffee6/IyMgQL7zwgvjss8/EmWeeKQoLC0UwGEzsM3XqVHHMMceI9957T6xYsUIUFRWJGTNm/MAj2T/2Ne5Zs2aJqVOnpvzu9+zZk7LPoTDuI2keTpkyRTzxxBNi7dq14tNPPxWnnXaayM/PFy0tLYl9joQ5F+eDDz4QAwYMEKNGjRJXXnll4vHDfYx79uwRBQUFYvbs2eL9998XmzdvFq+++qqoqqpK7NOd75VDnUN97vXEfNI0TYwYMUJMnjxZVFZWipdffln4/X5x0003JfbZvHmzcLvd4pprrhHr168XDz74oFAURSxbtuyAj/G7zqFDcVw9NW/2dV1qbGwUubm5YubMmWLt2rXi2WefFS6XS/zpT386IOP6Llii/Dswbtw4MXfu3MTPuq6LPn36iEWLFh3Es+pZFixYII455pgOtzU0NAibzSb+8Y9/JB7bsGGDAMTq1at/oDPsWdqKU8MwRO/evcWvfvWrxGMNDQ3C4XCIZ599VgghxPr16wUgPvzww8Q+r7zyipAkSWzbtu0HO/fvQ2ei/Kyzzur0OYfKuI/kebhr1y4BiLffflsIcWTNuebmZlFcXCxee+01ceKJJyYExZEwxhtuuEGUl5d3ur073yuHA4fb3Psu8+nll18WsiyLHTt2JPZ59NFHhdfrFeFwWAghxPXXXy+GDx+e8lo/+clPxJQpUw7oeL7PHDoUx9UT86Y716VHHnlEZGVlJcYZf+0hQ4b09JC+M1b6yn4SiUT4+OOPmTx5cuIxWZaZPHkyq1evPohn1vNs2rSJPn36MHDgQGbOnEl1dTUAH3/8MdFoNOU9KCkpIT8//4h5D7Zs2cKOHTtSxpiRkcH48eMTY1y9ejWZmZmMGTMmsc/kyZORZZn333//Bz/nnuStt94iJyeHIUOGcOmll1JXV5fYdiiM+0ifh42NjQBkZ2cDR9acmzt3LtOnT08ZCxwZY3zppZcYM2YM//mf/0lOTg6lpaX8z//8T2J7d75XDnUOx7n3XebT6tWrGTlyJLm5uYl9pkyZQlNTE+vWrUvs0/ZzPGXKlAP+PnyfOXQojqsn5k13rkurV6/mhBNOwG63p4xr48aN1NfXH5Cx7S+WKN9Pamtr0XU95QMNkJuby44dOw7SWfU848eP58knn2TZsmU8+uijbNmyhYqKCpqbm9mxYwd2u53MzMyU5xxJ70F8HF39nnfs2EFOTk7KdlVVyc7OPqzfh6lTp/LXv/6VN954g/vuu4+3336badOmoes6cGiM+0ieh4ZhcNVVV1FWVsaIESMAjpg599xzz/HJJ5+waNGidtuOhDFu3ryZRx99lOLiYl599VUuvfRSrrjiCp566imge98rhzqH29z7rvNpx44dHY4xvq2rfZqamggGgwdiON97Dh2K4+qJedOd61J3xn6wUQ/2CVgcmkybNi3x71GjRjF+/HgKCgr4+9//jsvlOohnZnGgOe+88xL/HjlyJKNGjWLQoEG89dZbnHzyyQfxzI4O5s6dy9q1a1m5cuXBPpUeZevWrVx55ZW89tprOJ3Og306BwTDMBgzZgz33HMPAKWlpaxdu5Y//vGPzJo16yCf3dHJkTSfjtQ5ZM2bvViR8v3E7/ejKEq7auadO3fSu3fvg3RWB57MzEwGDx5MVVUVvXv3JhKJ0NDQkLLPkfQexMfR1e+5d+/e7Nq1K2W7pmns2bPniHkfAAYOHIjf76eqqgo4NMZ9pM7DefPmsWTJEt5880369euXePxImHMff/wxu3btYvTo0aiqiqqqvP322zzwwAOoqkpubu5hP8a8vDyGDRuW8tjQoUMTqX/d+V451Dmc5t73mU+9e/fucIzxbV3t4/V6D0jwqifm0KE4rp6YN925LnVn7AcbS5TvJ3a7neOOO4433ngj8ZhhGLzxxhtMnDjxIJ7ZgaWlpYWvvvqKvLw8jjvuOGw2W8p7sHHjRqqrq4+Y96CwsJDevXunjLGpqYn3338/McaJEyfS0NDAxx9/nNhn+fLlGIbB+PHjf/BzPlB8++231NXVkZeXBxwa4z7S5qEQgnnz5vH888+zfPlyCgsLU7YfCXPu5JNPZs2aNXz66aeJP2PGjGHmzJmJfx/uYywrK2tnvffll19SUFAAdO975VDncJh7PTGfJk6cyJo1a1KE3muvvYbX600IyIkTJ6YcI77PgXofemIOHYrj6ol5053r0sSJE3nnnXeIRqMp4xoyZAhZWVkHZGz7zcGuND0cee6554TD4RBPPvmkWL9+vbj44otFZmZmSjXz4c4vf/lL8dZbb4ktW7aIVatWicmTJwu/3y927dolhDBtl/Lz88Xy5cvFRx99JCZOnCgmTpx4kM96/2hubhaVlZWisrJSAOK3v/2tqKysFN98840QwrRgyszMFC+++KL4/PPPxVlnndWhBVNpaal4//33xcqVK0VxcfEhb4nY1bibm5vFtddeK1avXi22bNkiXn/9dTF69GhRXFwsQqFQ4hiHwriPpHl46aWXioyMDPHWW2+lWFEGAoHEPkfCnGtLsnOEEIf/GD/44AOhqqq4++67xaZNm8TTTz8t3G63+H//7/8l9unO98qhzqE+93piPsWtA0899VTx6aefimXLlolevXp1aB143XXXiQ0bNoiHH374B7NEjLO/c+hQHFdPzZt9XZcaGhpEbm6u+PnPfy7Wrl0rnnvuOeF2uy1LxCOBBx98UOTn5wu73S7GjRsn3nvvvYN9Sj3KT37yE5GXlyfsdrvo27ev+MlPfpLiGRoMBsVll10msrKyhNvtFuecc46oqak5iGe8/7z55psCaPdn1qxZQgjThmn+/PkiNzdXOBwOcfLJJ4uNGzemHKOurk7MmDFDpKWlCa/XK84//3zR3Nx8EEbTfboadyAQEKeeeqro1auXsNlsoqCgQFx00UXtLraHyriPlHnY0e8DEE888URinyNhzrWlraA4Esa4ePFiMWLECOFwOERJSYn485//nLK9O98rhwOH8tzrqfn09ddfi2nTpgmXyyX8fr/45S9/KaLRaMo+b775pjj22GOF3W4XAwcOTHmNH4LvMocOxXH1xLzpznXps88+E+Xl5cLhcIi+ffuKe++994COa3+RhBDih4vLW1hYWFhYWFhYWFi0xcopt7CwsLCwsLCwsDjIWKLcwsLCwsLCwsLC4iBjiXILCwsLCwsLCwuLg4wlyi0sLCwsLCwsLCwOMpYot7CwsLCwsLCwsDjIWKLcwsLCwsLCwsLC4iBjiXILCwsLCwsLCwuLg4wlyi0sLCwsLCwsLCwOMpYotzikmD17NpIktftTVVUFwKJFi1AUhV/96lftnvvkk08m9pdlmby8PH7yk59Q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\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Experiment 1: Single features" + ], + "metadata": { + "id": "xbe5pJVBVD8T" + } + }, + { + "cell_type": "code", + "source": [ + "learning_rate = 0.001\n", + "epochs = 20\n", + "batch_size = 50\n", + "features = ['TRIP_MILES']\n", + "label = 'FARE'\n", + "model_1 = run_experiment(training_df,features,label,learning_rate,epochs,batch_size)" + ], + "metadata": { + "id": "fTh5YCT6QkVM", + "outputId": "d55f23bd-e0c3-4c82-c118-13687138cc2c", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + } + }, + "execution_count": 62, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "INFO: starting training experiment with features=['TRIP_MILES'] and label=FARE\n", + "\n", + "Epoch 1/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 157.3623 - root_mean_squared_error: 12.4941\n", + "Epoch 2/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 40.3521 - root_mean_squared_error: 6.3260\n", + "Epoch 3/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 20.0419 - root_mean_squared_error: 4.4736\n", + "Epoch 4/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 17.5082 - root_mean_squared_error: 4.1690\n", + "Epoch 5/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 17.8032 - root_mean_squared_error: 4.2118\n", + "Epoch 6/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 14.1126 - root_mean_squared_error: 3.7534\n", + "Epoch 7/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 15.4648 - root_mean_squared_error: 3.9269\n", + "Epoch 8/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 14.8077 - root_mean_squared_error: 3.8353\n", + "Epoch 9/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - loss: 15.1779 - root_mean_squared_error: 3.8750\n", + "Epoch 10/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - loss: 13.6284 - root_mean_squared_error: 3.6864\n", + "Epoch 11/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 13.3164 - root_mean_squared_error: 3.6460\n", + "Epoch 12/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 13.0886 - root_mean_squared_error: 3.6116\n", + "Epoch 13/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 13.9581 - root_mean_squared_error: 3.7284\n", + "Epoch 14/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 13.5908 - root_mean_squared_error: 3.6750\n", + "Epoch 15/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 14.5385 - root_mean_squared_error: 3.8073\n", + "Epoch 16/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 14.9555 - root_mean_squared_error: 3.8610\n", + "Epoch 17/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 16.1649 - root_mean_squared_error: 3.9895\n", + "Epoch 18/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 14.4353 - root_mean_squared_error: 3.7950\n", + "Epoch 19/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - loss: 12.8893 - root_mean_squared_error: 3.5733\n", + "Epoch 20/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - loss: 15.1180 - root_mean_squared_error: 3.8493\n", + "\n", + "SUCCESS: training experiment complete\n", + "\n", + "--------------------------------------------------------------------------------\n", + "| MODEL INFO |\n", + "--------------------------------------------------------------------------------\n", + "Weight for feature[TRIP_MILES]: 2.270\n", + "Bias: 4.963\n", + "\n", + "FARE = 2.270 * TRIP_MILES + 4.963\n", + "\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" + ] + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Experiment 2: Two features" + ], + "metadata": { + "id": "h1ekmrSwVaRC" + } + }, + { + "cell_type": "code", + "source": [ + "# The following variables are the hyperparameters.\n", + "learning_rate = 0.001\n", + "epochs = 20\n", + "batch_size = 50\n", + "\n", + "training_df['TRIP_MINUTES'] = training_df['TRIP_SECONDS']/60\n", + "\n", + "features = ['TRIP_MILES', 'TRIP_MINUTES']\n", + "label = 'FARE'\n", + "\n", + "model_2 = run_experiment(training_df, features, label, learning_rate, epochs, batch_size)" + ], + "metadata": { + "id": "hLvc1KP6VRoA", + "outputId": "3fd3fdd3-2ba2-4996-d5a1-04bf77234a39", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + } + }, + "execution_count": 63, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "INFO: starting training experiment with features=['TRIP_MILES', 'TRIP_MINUTES'] and label=FARE\n", + "\n", + "Epoch 1/20\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + ":6: SettingWithCopyWarning:\n", + "\n", + "\n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + "\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 2983.8218 - root_mean_squared_error: 54.5371\n", + "Epoch 2/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 998.2363 - root_mean_squared_error: 31.4664 \n", + "Epoch 3/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 147.0420 - root_mean_squared_error: 12.0393\n", + "Epoch 4/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 56.2178 - root_mean_squared_error: 7.4903\n", + "Epoch 5/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 33.3009 - root_mean_squared_error: 5.7676\n", + "Epoch 6/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 20.1534 - root_mean_squared_error: 4.4813\n", + "Epoch 7/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 13.9684 - root_mean_squared_error: 3.7310\n", + "Epoch 8/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 11.7583 - root_mean_squared_error: 3.4180\n", + "Epoch 9/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - loss: 10.6886 - root_mean_squared_error: 3.2491\n", + "Epoch 10/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - loss: 12.5051 - root_mean_squared_error: 3.5281\n", + "Epoch 11/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 2ms/step - loss: 11.9015 - root_mean_squared_error: 3.4344\n", + "Epoch 12/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 11.5185 - root_mean_squared_error: 3.3854\n", + "Epoch 13/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 12.3804 - root_mean_squared_error: 3.5085\n", + "Epoch 14/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 12.4111 - root_mean_squared_error: 3.5084\n", + "Epoch 15/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 13.3523 - root_mean_squared_error: 3.6473\n", + "Epoch 16/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 11.4544 - root_mean_squared_error: 3.3777\n", + "Epoch 17/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 11.2104 - root_mean_squared_error: 3.3445\n", + "Epoch 18/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 11.5754 - root_mean_squared_error: 3.3972\n", + "Epoch 19/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m1s\u001b[0m 1ms/step - loss: 11.2527 - root_mean_squared_error: 3.3507\n", + "Epoch 20/20\n", + "\u001b[1m634/634\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m2s\u001b[0m 2ms/step - loss: 12.5087 - root_mean_squared_error: 3.5318\n", + "\n", + "SUCCESS: training experiment complete\n", + "\n", + "--------------------------------------------------------------------------------\n", + "| MODEL INFO |\n", + "--------------------------------------------------------------------------------\n", + "Weight for feature[TRIP_MILES]: 2.029\n", + "Weight for feature[TRIP_MINUTES]: 0.147\n", + "Bias: 3.828\n", + "\n", + "FARE = 2.029 * TRIP_MILES + 0.147 * TRIP_MINUTES + 3.828\n", + "\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "
\n", + "
\n", + "\n", + "" + ] + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "### Predictions" + ], + "metadata": { + "id": "v-vdCFF9XE-9" + } + }, + { + "cell_type": "code", + "source": [ + "output = predict_fare(model_2, training_df, features, label)\n", + "show_predictions(output)" + ], + "metadata": { + "id": "dCWHARbPXIMn", + "outputId": "c1ad175a-f328-4067-dcdf-6184d3d1eecf", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "execution_count": 64, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "--------------------------------------------------------------------------------\n", + "| PREDICTIONS |\n", + "--------------------------------------------------------------------------------\n", + " PREDICTED_FARE OBSERVED_FARE L1_LOSS TRIP_MILES TRIP_MINUTES\n", + "0 $16.07 $15.50 $0.57 4.80 17.00\n", + "1 $12.76 $11.75 $1.01 3.42 13.53\n", + "2 $44.67 $43.00 $1.67 17.30 39.00\n", + "3 $11.24 $10.25 $0.99 3.00 9.00\n", + "4 $5.99 $5.25 $0.74 0.80 3.63\n", + "5 $43.32 $42.00 $1.32 16.82 36.48\n", + "6 $30.10 $30.00 $0.10 10.45 34.47\n", + "7 $34.17 $36.00 $1.83 12.46 34.40\n", + "8 $13.65 $13.00 $0.65 3.90 13.00\n", + "9 $13.01 $13.00 $0.01 3.80 10.00\n", + "10 $45.89 $45.75 $0.14 18.29 33.67\n", + "11 $25.31 $24.75 $0.56 8.99 22.03\n", + "12 $50.09 $47.75 $2.34 17.87 68.05\n", + "13 $6.89 $6.50 $0.39 0.98 7.30\n", + "14 $45.45 $44.75 $0.70 17.79 37.55\n", + "15 $34.15 $32.75 $1.40 11.47 47.95\n", + "16 $33.17 $39.00 $5.83 10.48 54.95\n", + "17 $17.56 $16.82 $0.74 5.25 20.95\n", + "18 $44.80 $44.75 $0.05 17.97 30.65\n", + "19 $19.31 $25.25 $5.94 6.40 17.00\n", + "20 $44.48 $44.50 $0.02 17.50 35.00\n", + "21 $18.63 $17.50 $1.13 5.95 18.57\n", + "22 $32.59 $32.75 $0.16 12.00 30.00\n", + "23 $86.36 $55.50 $30.86 37.70 41.00\n", + "24 $44.56 $44.25 $0.31 17.24 39.10\n", + "25 $19.36 $19.75 $0.39 4.90 38.00\n", + "26 $23.75 $24.94 $1.19 7.87 26.87\n", + "27 $10.76 $10.50 $0.26 2.40 14.00\n", + "28 $42.87 $43.50 $0.63 17.57 23.07\n", + "29 $15.90 $14.51 $1.39 4.70 17.27\n", + "30 $47.01 $46.00 $1.01 18.64 36.48\n", + "31 $38.01 $37.75 $0.26 14.87 27.23\n", + "32 $29.27 $29.25 $0.02 9.29 44.87\n", + "33 $10.15 $9.75 $0.40 2.09 14.13\n", + "34 $32.10 $32.25 $0.15 11.71 30.67\n", + "35 $20.95 $20.50 $0.45 7.07 18.87\n", + "36 $35.23 $34.75 $0.48 13.60 25.88\n", + "37 $9.61 $9.00 $0.61 2.16 9.52\n", + "38 $5.73 $5.50 $0.23 0.56 5.23\n", + "39 $41.76 $42.00 $0.24 16.34 32.50\n", + "40 $20.63 $20.00 $0.63 6.38 26.22\n", + "41 $7.08 $6.25 $0.83 1.22 5.30\n", + "42 $11.28 $11.25 $0.03 2.50 16.18\n", + "43 $9.14 $9.00 $0.14 1.90 9.88\n", + "44 $6.33 $5.50 $0.83 0.92 4.30\n", + "45 $25.18 $25.00 $0.18 8.64 25.98\n", + "46 $6.56 $6.00 $0.56 0.89 6.33\n", + "47 $9.33 $8.75 $0.58 1.86 11.77\n", + "48 $37.64 $37.50 $0.14 13.70 40.90\n", + "49 $7.64 $7.00 $0.64 1.30 8.00\n" + ] + } ] - }, - "metadata": {}, - "output_type": "display_data" } - ], - "source": [ - "X = np.concatenate((np.ones((300,1)),testX),axis = 1)\n", - "predYBatch = np.matmul(X,np.transpose(thetaBatch))\n", - "predYIncrement = np.matmul(X,np.transpose(thetaIncrement))\n", - "realY = testY.reshape(300,1)\n", - "print('R2 Score of Batch Gradient Descent:',r2_score(realY,predYBatch))\n", - "print('R2 Score of Incremential Gradient Descent:',r2_score(realY,predYIncrement))\n", - "figure,axis = plt.subplots(2,1)\n", - "axis[0].set_title('Batch Gradient Descent')\n", - "axis[0].scatter(testX,testY,color = 'red',s = 5,label = 'GT')\n", - "axis[0].plot(testX,predYBatch,color = 'black',label = 'pred')\n", - "axis[0].set_xlabel('X')\n", - "axis[0].set_ylabel('Y')\n", - "axis[1].set_title('Incremental Gradient Descent')\n", - "axis[1].scatter(testX,testY,color = 'red',s = 5,label = 'GT')\n", - "axis[1].plot(testX,predYIncrement,color = 'black',label = 'pred')\n", - "axis[1].set_xlabel('X')\n", - "axis[1].set_ylabel('Y')\n", - "figure.tight_layout()\n", - "plt.legend()\n", - "plt.show()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3.10.6 64-bit", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.6" + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.6 64-bit", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.6" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1" + } + }, + "colab": { + "provenance": [] + } }, - "orig_nbformat": 4, - "vscode": { - "interpreter": { - "hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1" - } - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/deep_learning/Exercise Files/Spam-Classification.csv b/deep_learning/Exercise Files/Spam-Classification.csv new file mode 100755 index 0000000..cade0ac --- /dev/null +++ b/deep_learning/Exercise Files/Spam-Classification.csv @@ -0,0 +1,1501 @@ +CLASS,SMS +ham," said kiss, kiss, i can't do the sound effects! He is a gorgeous man isn't he! Kind of person who needs a smile to brighten his day! " +ham,<#> ISH MINUTES WAS 5 MINUTES AGO. WTF. +spam,(Bank of Granite issues Strong-Buy) EXPLOSIVE PICK FOR OUR MEMBERS *****UP OVER 300% *********** Nasdaq Symbol CDGT That is a $5.00 per.. +spam,* FREE* POLYPHONIC RINGTONE Text SUPER to 87131 to get your FREE POLY TONE of the week now! 16 SN PoBox202 NR31 7ZS subscription 450pw +spam,**FREE MESSAGE**Thanks for using the Auction Subscription Service. 18 . 150p/MSGRCVD 2 Skip an Auction txt OUT. 2 Unsubscribe txt STOP CustomerCare 08718726270 +spam,+123 Congratulations - in this week's competition draw u have won the £1450 prize to claim just call 09050002311 b4280703. T&Cs/stop SMS 08718727868. Over 18 only 150ppm +spam,+123 Congratulations - in this week's competition draw u have won the £1450 prize to claim just call 09050002311 b4280703. T&Cs/stop SMS 08718727868. Over 18 only 150ppm +spam,+449071512431 URGENT! This is the 2nd attempt to contact U!U have WON £1250 CALL 09071512433 b4 050703 T&CsBCM4235WC1N3XX. callcost 150ppm mobilesvary. max£7. 50 +spam,Hi - this is your Mailbox Messaging SMS alert. You have 4 messages. You have 21 matches. Please call back on 09056242159 to retrieve your messages and matches +spam,Hi - this is your Mailbox Messaging SMS alert. You have 40 matches. Please call back on 09056242159 to retrieve your messages and matches cc100p/min +spam,Please CALL 08712404000 immediately as there is an urgent message waiting for you. +spam,FREE entry into our £250 weekly comp just send the word ENTER to 88877 NOW. 18 T&C www.textcomp.com +spam,07732584351 - Rodger Burns - MSG = We tried to call you re your reply to our sms for a free nokia mobile + free camcorder. Please call now 08000930705 for delivery tomorrow +spam,08714712388 between 10am-7pm Cost 10p +spam,"09066362231 URGENT! Your mobile No 07xxxxxxxxx won a £2,000 bonus caller prize on 02/06/03! this is the 2nd attempt to reach YOU! call 09066362231 ASAP!" +spam,"0A$NETWORKS allow companies to bill for SMS, so they are responsible for their ""suppliers"", just as a shop has to give a guarantee on what they sell. B. G." +ham,"1.20 that call cost. Which i guess isnt bad. Miss ya, need ya, want ya, love ya" +ham,10 min later k... +spam,100 dating service cal;l 09064012103 box334sk38ch +spam,"1000's flirting NOW! Txt GIRL or BLOKE & ur NAME & AGE, eg GIRL ZOE 18 to 8007 to join and get chatting!" +spam,1000's of girls many local 2 u who r virgins 2 this & r ready 2 4fil ur every sexual need. Can u 4fil theirs? text CUTE to 69911(£1.50p. m) +spam,18 days to Euro2004 kickoff! U will be kept informed of all the latest news and results daily. Unsubscribe send GET EURO STOP to 83222. +spam,18 days to Euro2004 kickoff! U will be kept informed of all the latest news and results daily. Unsubscribe send GET EURO STOP to 83222. +spam,1st wk FREE! Gr8 tones str8 2 u each wk. Txt NOKIA ON to 8007 for Classic Nokia tones or HIT ON to 8007 for Polys. Nokia/150p Poly/200p 16+ +spam,2/2 146tf150p +spam,22 days to kick off! For Euro2004 U will be kept up to date with the latest news and results daily. To be removed send GET TXT STOP to 83222 +spam,25p 4 alfie Moon's Children in need song on ur mob. Tell ur m8s. Txt Tone charity to 8007 for Nokias or Poly charity for polys: zed 08701417012 profit 2 charity. +spam,2p per min to call Germany 08448350055 from your BT line. Just 2p per min. Check PlanetTalkInstant.com for info & T's & C's. Text stop to opt out +spam,"3 FREE TAROT TEXTS! Find out about your love life now! TRY 3 FOR FREE! Text CHANCE to 85555 16 only! After 3 Free, Msgs £1.50 each" +spam,3. You have received your mobile content. Enjoy +ham,4 oclock at mine. Just to bash out a flat plan. +spam,"44 7732584351, Do you want a New Nokia 3510i colour phone DeliveredTomorrow? With 300 free minutes to any mobile + 100 free texts + Free Camcorder reply or call 08000930705." +spam,"449050000301 You have won a £2,000 price! To claim, call 09050000301." +spam,4mths half price Orange line rental & latest camera phones 4 FREE. Had your phone 11mths ? Call MobilesDirect free on 08000938767 to update now! or2stoptxt +spam,4mths half price Orange line rental & latest camera phones 4 FREE. Had your phone 11mths ? Call MobilesDirect free on 08000938767 to update now! or2stoptxt +spam,4mths half price Orange line rental & latest camera phones 4 FREE. Had your phone 11mths+? Call MobilesDirect free on 08000938767 to update now! or2stoptxt T&Cs +spam,"5 Free Top Polyphonic Tones call 087018728737, National Rate. Get a toppoly tune sent every week, just text SUBPOLY to 81618, £3 per pole. UnSub 08718727870." +spam,500 free text msgs. Just text ok to 80488 and we'll credit your account +spam,"500 New Mobiles from 2004, MUST GO! Txt: NOKIA to No: 89545 & collect yours today!From ONLY £1 www.4-tc.biz 2optout 087187262701.50gbp/mtmsg18" +spam,"500 New Mobiles from 2004, MUST GO! Txt: NOKIA to No: 89545 & collect yours today!From ONLY £1 www.4-tc.biz 2optout 087187262701.50gbp/mtmsg18 TXTAUCTION" +spam,5p 4 alfie Moon's Children in need song on ur mob. Tell ur m8s. Txt Tone charity to 8007 for Nokias or Poly charity for polys: zed 08701417012 profit 2 charity. +ham,7 at esplanade.. Do ü mind giving me a lift cos i got no car today.. +spam,74355 XMAS iscoming & ur awarded either £500 CD gift vouchers & free entry 2 r £100 weekly draw txt MUSIC to 87066 TnC +ham,"8 at the latest, g's still there if you can scrounge up some ammo and want to give the new ak a try" +spam,8007 25p 4 Alfie Moon's Children in Need song on ur mob. Tell ur m8s. Txt TONE CHARITY to 8007 for nokias or POLY CHARITY for polys :zed 08701417012 profit 2 charity +spam,8007 FREE for 1st week! No1 Nokia tone 4 ur mob every week just txt NOKIA to 8007 Get txting and tell ur mates www.getzed.co.uk POBox 36504 W4 5WQ norm 150p/tone 16+ +spam,83039 62735=£450 UK Break AccommodationVouchers terms & conditions apply. 2 claim you mustprovide your claim number which is 15541 +spam,85233 FREE>Ringtone!Reply REAL +spam,87077: Kick off a new season with 2wks FREE goals & news to ur mobile! Txt ur club name to 87077 eg VILLA to 87077 +spam,88066 FROM 88066 LOST 3POUND HELP +spam,88800 and 89034 are premium phone services call 08718711108 +spam,A £400 XMAS REWARD IS WAITING FOR YOU! Our computer has randomly picked you from our loyal mobile customers to receive a £400 reward. Just call 09066380611 +spam,A £400 XMAS REWARD IS WAITING FOR YOU! Our computer has randomly picked you from our loyal mobile customers to receive a £400 reward. Just call 09066380611 +ham,"A famous quote : when you develop the ability to listen to 'anything' unconditionally without losing your temper or self confidence, it means you are ......... 'MARRIED'" +ham,"A gram usually runs like <#> , a half eighth is smarter though and gets you almost a whole second gram for <#>" +spam,A link to your picture has been sent. You can also use http://alto18.co.uk/wave/wave.asp?o=44345 +ham,"A swt thought: ""Nver get tired of doing little things 4 lovable persons.."" Coz..somtimes those little things occupy d biggest part in their Hearts.. Gud ni8" +ham,Aaooooright are you at work? +ham,aathi..where are you dear.. +spam,"accordingly. I repeat, just text the word ok on your mobile phone and send" +spam,Adult 18 Content Your video will be with you shortly +ham,Aft i finish my lunch then i go str down lor. Ard 3 smth lor. U finish ur lunch already? +ham,Ah poop. Looks like ill prob have to send in my laptop to get fixed cuz it has a gpu problem +ham,AH POOR BABY!HOPE URFEELING BETTERSN LUV! PROBTHAT OVERDOSE OF WORK HEY GO CAREFUL SPK 2 U SN LOTS OF LOVEJEN XXX. +ham,Ahhh. Work. I vaguely remember that! What does it feel like? Lol +ham,"Aight yo, dats straight dogg" +ham,"Aight, I'll hit you up when I get some cash" +ham,"Aight, you close by or still down around alex's place?" +ham,"Aiyo... U always c our ex one... I dunno abt mei, she haven reply... First time u reply so fast... Y so lucky not workin huh, got bao by ur sugardad ah...gee.. " +ham,All done? All handed in? Celebrations in full swing yet? +ham,All e best 4 ur driving tmr :-) +spam,"all the lastest from Stereophonics, Marley, Dizzee Racal, Libertines and The Strokes! Win Nookii games with Flirt!! Click TheMob WAP Bookmark or text WAP to 82468" +ham,All was well until slightly disastrous class this pm with my fav darlings! Hope day off ok. Coffee wld be good as can't stay late tomorrow. Same time + place as always? +ham,Allo! We have braved the buses and taken on the trains and triumphed. I mean we‘re in b‘ham. Have a jolly good rest of week +ham,"Almost there, see u in a sec" +ham,Alright i have a new goal now +ham,"Alright omw, gotta change my order to a half8th" +ham,"Alright, I'll head out in a few minutes, text me where to meet you" +ham,Also are you bringing galileo or dobby +ham,"Although i told u dat i'm into baig face watches now but i really like e watch u gave cos it's fr u. Thanx 4 everything dat u've done today, i'm touched..." +spam,Am new 2 club & dont fink we met yet Will B gr8 2 C U Please leave msg 2day wiv ur area 09099726553 reply promised CARLIE x Calls£1/minMobsmore LKPOBOX177HP51FL +ham,Am not interested to do like that. +ham,Any chance you might have had with me evaporated as soon as you violated my privacy by stealing my phone number from your employer's paperwork. Not cool at all. Please do not contact me again or I will report you to your supervisor. +ham,Any pain on urination any thing else? +ham,Anything lor... U decide... +ham,Anyway i'm going shopping on my own now. Cos my sis not done yet. Dun disturb u liao. +ham,Ü log off 4 wat. It's sdryb8i +ham,Ü predict wat time ü'll finish buying? +ham,Ü say until like dat i dun buy ericsson oso cannot oredi lar... +ham,Ü wait 4 me in sch i finish ard 5.. +ham,Appt is at <TIME> am. Not my fault u don't listen. I told u twice +ham,Are you free now?can i call now? +ham,Are you in castor? You need to see something +ham,Are you there in room. +ham,Are you this much buzy +spam,Are you unique enough? Find out from 30th August. www.areyouunique.co.uk +ham,"Arngd marriage is while u r walkin unfortuntly a snake bites u. bt love marriage is dancing in frnt of d snake & sayin Bite me, bite me." +spam,As a registered optin subscriber ur draw 4 £100 gift voucher will be entered on receipt of a correct ans to 80062 Whats No1 in the BBC charts +spam,As a Registered Subscriber yr draw 4 a £100 gift voucher will b entered on receipt of a correct ans. When are the next olympics. Txt ans to 80062 +spam,"As a SIM subscriber, you are selected to receive a Bonus! Get it delivered to your door, Txt the word OK to No: 88600 to claim. 150p/msg, EXP. 30Apr" +spam,"As a valued customer, I am pleased to advise you that following recent review of your Mob No. you are awarded with a £1500 Bonus Prize, call 09066364589" +spam,"As a valued customer, I am pleased to advise you that following recent review of your Mob No. you are awarded with a £1500 Bonus Prize, call 09066364589" +spam,"As a valued customer, I am pleased to advise you that following recent review of your Mob No. you are awarded with a £1500 Bonus Prize, call 09066368470" +ham,"As I entered my cabin my PA said, '' Happy B'day Boss !!''. I felt special. She askd me 4 lunch. After lunch she invited me to her apartment. We went there." +ham,"As I entered my cabin my PA said, '' Happy B'day Boss !!''. I felt special. She askd me 4 lunch. After lunch she invited me to her apartment. We went there." +spam,As one of our registered subscribers u can enter the draw 4 a 100 G.B. gift voucher by replying with ENTER. To unsubscribe text STOP +ham,As per your request 'Melle Melle (Oru Minnaminunginte Nurungu Vettam)' has been set as your callertune for all Callers. Press *9 to copy your friends Callertune +ham,As per your request 'Melle Melle (Oru Minnaminunginte Nurungu Vettam)' has been set as your callertune for all Callers. Press *9 to copy your friends Callertune +ham,As per your request 'Melle Melle (Oru Minnaminunginte Nurungu Vettam)' has been set as your callertune for all Callers. Press *9 to copy your friends Callertune +ham,"Ask g or iouri, I've told the story like ten times already" +spam,ASKED 3MOBILE IF 0870 CHATLINES INCLU IN FREE MINS. INDIA CUST SERVs SED YES. L8ER GOT MEGA BILL. 3 DONT GIV A SHIT. BAILIFF DUE IN DAYS. I O £250 3 WANT £800 +ham,At home watching tv lor. +spam,"Auction round 4. The highest bid is now £54. Next maximum bid is £71. To bid, send BIDS e. g. 10 (to bid £10) to 83383. Good luck." +ham,"Awesome, I remember the last time we got somebody high for the first time with diesel :V" +ham,"Awesome, I'll see you in a bit" +spam,Babe: U want me dont u baby! Im nasty and have a thing 4 filthyguys. Fancy a rude time with a sexy bitch. How about we go slo n hard! Txt XXX SLO(4msgs) +spam,Back 2 work 2morro half term over! Can U C me 2nite 4 some sexy passion B4 I have 2 go back? Chat NOW 09099726481 Luv DENA Calls £1/minMobsmoreLKPOBOX177HP51FL +spam,"BangBabes Ur order is on the way. U SHOULD receive a Service Msg 2 download UR content. If U do not, GoTo wap. bangb. tv on UR mobile internet/service menu" +ham,Be happy there. I will come after noon +spam,"Bears Pic Nick, and Tom, Pete and ... Dick. In fact, all types try gay chat with photo upload call 08718730666 (10p/min). 2 stop texts call 08712460324" +ham,Beerage? +spam,BIG BROTHER ALERT! The computer has selected u for 10k cash or #150 voucher. Call 09064018838. NTT PO Box CRO1327 18+ BT Landline Cost 150ppm mobiles vary +spam,Block Breaker now comes in deluxe format with new features and great graphics from T-Mobile. Buy for just £5 by replying GET BBDELUXE and take the challenge +ham,"Bloody hell, cant believe you forgot my surname Mr . Ill give u a clue, its spanish and begins with m... " +spam,Bloomberg -Message center +447797706009 Why wait? Apply for your future http://careers. bloomberg.com +spam,Bloomberg -Message center +447797706009 Why wait? Apply for your future http://careers. bloomberg.com +spam,Boltblue tones for 150p Reply POLY# or MONO# eg POLY3 1. Cha Cha Slide 2. Yeah 3. Slow Jamz 6. Toxic 8. Come With Me or STOP 4 more tones txt MORE +ham,BOO BABE! U ENJOYIN YOURJOB? U SEEMED 2 B GETTIN ON WELL HUNNY!HOPE URE OK?TAKE CARE & IÂ’LLSPEAK 2U SOONLOTS OF LOVEME XXXX. +ham,Book which lesson? then you msg me... I will call up after work or sth... I'm going to get specs. My membership is PX3748 +ham,Booked ticket for pongal? +ham,Boooo you always work. Just quit. +spam,Bored housewives! Chat n date now! 0871750.77.11! BT-national rate 10p/min only from landlines! +spam,Bored housewives! Chat n date now! 0871750.77.11! BT-national rate 10p/min only from landlines! +spam,"Bored of speed dating? Try SPEEDCHAT, txt SPEEDCHAT to 80155, if you don't like em txt SWAP and get a new chatter! Chat80155 POBox36504W45WQ 150p/msg rcd 16" +ham,Both :) i shoot big loads so get ready! +spam,Bought one ringtone and now getting texts costing 3 pound offering more tones etc +ham,Bring home some Wendy =D +spam,Burger King - Wanna play footy at a top stadium? Get 2 Burger King before 1st Sept and go Large or Super with Coca-Cola and walk out a winner +ham,Busy here. Trying to finish for new year. I am looking forward to finally meeting you... +ham,But am going to college pa. What to do. are else ill come there it self. Pa. +ham,But i have to. I like to have love and arrange. +ham,But that's on ebay it might be less elsewhere. +spam,Buy Space Invaders 4 a chance 2 win orig Arcade Game console. Press 0 for Games Arcade (std WAP charge) See o2.co.uk/games 4 Terms + settings. No purchase +spam,Buy Space Invaders 4 a chance 2 win orig Arcade Game console. Press 0 for Games Arcade (std WAP charge) See o2.co.uk/games 4 Terms + settings. No purchase +ham,By monday next week. Give me the full gist +spam,CALL 09090900040 & LISTEN TO EXTREME DIRTY LIVE CHAT GOING ON IN THE OFFICE RIGHT NOW TOTAL PRIVACY NO ONE KNOWS YOUR [sic] LISTENING 60P MIN 24/7MP 0870753331018+ +spam,"Call 09094100151 to use ur mins! Calls cast 10p/min (mob vary). Service provided by AOM, just GBP5/month. AOM Box61,M60 1ER until u stop. Ages 18+ only!" +spam,Call 09095350301 and send our girls into erotic ecstacy. Just 60p/min. To stop texts call 08712460324 (nat rate) +spam,Call FREEPHONE 0800 542 0578 now! +spam,Call from 08702490080 - tells u 2 call 09066358152 to claim £5000 prize. U have 2 enter all ur mobile & personal details @ the prompts. Careful! +spam,Call Germany for only 1 pence per minute! Call from a fixed line via access number 0844 861 85 85. No prepayment. Direct access! +spam,Call Germany for only 1 pence per minute! Call from a fixed line via access number 0844 861 85 85. No prepayment. Direct access! www.telediscount.co.uk +ham,"Call me when you/carlos is/are here, my phone's vibrate is acting up and I might not hear texts" +spam,Camera - You are awarded a SiPix Digital Camera! call 09061221066 fromm landline. Delivery within 28 days +spam,Camera - You are awarded a SiPix Digital Camera! call 09061221066 fromm landline. Delivery within 28 days. +spam,Camera - You are awarded a SiPix Digital Camera! call 09061221066 fromm landline. Delivery within 28 days. +spam,Camera - You are awarded a SiPix Digital Camera! call 09061221066 fromm landline. Delivery within 28 days. +spam,Can U get 2 phone NOW? I wanna chat 2 set up meet Call me NOW on 09096102316 U can cum here 2moro Luv JANE xx Calls£1/minmoremobsEMSPOBox45PO139WA +ham,Can you open the door? +ham,Can you say what happen +ham,Cant think of anyone with * spare room off * top of my head +ham,Carlos'll be here in a minute if you still need to buy +spam,Cashbin.co.uk (Get lots of cash this weekend!) www.cashbin.co.uk Dear Welcome to the weekend We have got our biggest and best EVER cash give away!! These.. +ham,Cause I'm not freaky lol +spam,CDs 4u: Congratulations ur awarded £500 of CD gift vouchers or £125 gift guaranteed & Freeentry 2 £100 wkly draw xt MUSIC to 87066 TnCs www.ldew.com1win150ppmx3age16 +ham,Check audrey's status right now +spam,Check Out Choose Your Babe Videos @ sms.shsex.netUN fgkslpoPW fgkslpo +ham,Check with nuerologist. +spam,"Claim a 200 shopping spree, just call 08717895698 now! Have you won! MobStoreQuiz10ppm" +spam,CLAIRE here am havin borin time & am now alone U wanna cum over 2nite? Chat now 09099725823 hope 2 C U Luv CLAIRE xx Calls£1/minmoremobsEMSPOBox45PO139WA +spam,"cmon babe, make me horny, *turn* me on! Txt me your fantasy now babe -) Im hot, sticky and need you now. All replies cost £1.50. 2 cancel send STOP" +ham,"Coffee cake, i guess..." +spam,Collect your VALENTINE'S weekend to PARIS inc Flight & Hotel + £200 Prize guaranteed! Text: PARIS to No: 69101. www.rtf.sphosting.com +ham,Come by our room at some point so we can iron out the plan for this weekend +ham,"Come to mu, we're sorting out our narcotics situation" +spam,"complimentary 4 STAR Ibiza Holiday or £10,000 cash needs your URGENT collection. 09066364349 NOW from Landline not to lose out! Box434SK38WP150PPM18+" +spam,"Congrats 2 mobile 3G Videophones R yours. call 09063458130 now! videochat wid ur mates, play java games, Dload polypH music, noline rentl. bx420. ip4. 5we. 150p" +spam,"Congrats 2 mobile 3G Videophones R yours. call 09063458130 now! videochat wid ur mates, play java games, Dload polypH music, noline rentl. bx420. ip4. 5we. 150p" +spam,"Congrats! 1 year special cinema pass for 2 is yours. call 09061209465 now! C Suprman V, Matrix3, StarWars3, etc all 4 FREE! bx420-ip4-5we. 150pm. Dont miss out!" +spam,"Congrats! 1 year special cinema pass for 2 is yours. call 09061209465 now! C Suprman V, Matrix3, StarWars3, etc all 4 FREE! bx420-ip4-5we. 150pm. Dont miss out!" +spam,"Congrats! 1 year special cinema pass for 2 is yours. call 09061209465 now! C Suprman V, Matrix3, StarWars3, etc all 4 FREE! bx420-ip4-5we. 150pm. Dont miss out! " +spam,"Congrats! 2 mobile 3G Videophones R yours. call 09061744553 now! videochat wid ur mates, play java games, Dload polyH music, noline rentl. bx420. ip4. 5we. 150pm" +spam,"Congrats! 2 mobile 3G Videophones R yours. call 09061744553 now! videochat wid ur mates, play java games, Dload polyH music, noline rentl. bx420. ip4. 5we. 150pm" +spam,"Congrats! 2 mobile 3G Videophones R yours. call 09063458130 now! videochat wid your mates, play java games, Dload polyPH music, noline rentl." +spam,Congrats! Nokia 3650 video camera phone is your Call 09066382422 Calls cost 150ppm Ave call 3mins vary from mobiles 16+ Close 300603 post BCM4284 Ldn WC1N3XX +spam,Congrats! Nokia 3650 video camera phone is your Call 09066382422 Calls cost 150ppm Ave call 3mins vary from mobiles 16+ Close 300603 post BCM4284 Ldn WC1N3XX +spam,"Congratulations - Thanks to a good friend U have WON the £2,000 Xmas prize. 2 claim is easy, just call 08712103738 NOW! Only 10p per minute. BT-national-rate" +spam,Congratulations U can claim 2 VIP row A Tickets 2 C Blu in concert in November or Blu gift guaranteed Call 09061104276 to claim TS&Cs www.smsco.net cost£3.75max +spam,Congratulations ur awarded 500 of CD vouchers or 125gift guaranteed & Free entry 2 100 wkly draw txt MUSIC to 87066 +spam,Congratulations ur awarded 500 of CD vouchers or 125gift guaranteed & Free entry 2 100 wkly draw txt MUSIC to 87066 TnCs www.Ldew.com1win150ppmx3age16 +spam,Congratulations ur awarded 500 of CD vouchers or 125gift guaranteed & Free entry 2 100 wkly draw txt MUSIC to 87066 TnCs www.Ldew.com1win150ppmx3age16 +spam,Congratulations ur awarded either a yrs supply of CDs from Virgin Records or a Mystery Gift GUARANTEED Call 09061104283 Ts&Cs www.smsco.net £1.50pm approx 3mins +spam,Congratulations ur awarded either £500 of CD gift vouchers & Free entry 2 our £100 weekly draw txt MUSIC to 87066 TnCs www.Ldew.com 1 win150ppmx3age16 +spam,Congratulations ur awarded either £500 of CD gift vouchers & Free entry 2 our £100 weekly draw txt MUSIC to 87066 TnCs www.Ldew.com1win150ppmx3age16 +spam,Congratulations YOU'VE Won. You're a Winner in our August £1000 Prize Draw. Call 09066660100 NOW. Prize Code 2309. +spam,"Congratulations! Thanks to a good friend U have WON the £2,000 Xmas prize. 2 claim is easy, just call 08718726971 NOW! Only 10p per minute. BT-national-rate." +spam,"Congratulations! Thanks to a good friend U have WON the £2,000 Xmas prize. 2 claim is easy, just call 08718726978 NOW! Only 10p per minute. BT-national-rate" +ham,"Cool, text me when you're parked" +ham,"Cool, text me when you're ready" +ham,Cool. So how come you havent been wined and dined before? +ham,Cos i want it to be your thing +ham,cud u tell ppl im gona b a bit l8 cos 2 buses hav gon past cos they were full & im still waitin 4 1. Pete x +spam,Customer Loyalty Offer:The NEW Nokia6650 Mobile from ONLY £10 at TXTAUCTION! Txt word: START to No: 81151 & get yours Now! 4T&Ctxt TC 150p/MTmsg +ham,Customer place i will call you. +spam,Customer service annoncement. You have a New Years delivery waiting for you. Please call 07046744435 now to arrange delivery +spam,"Customer service announcement. We recently tried to make a delivery to you but were unable to do so, please call 07090298926 to re-schedule. Ref:9307622" +spam,"Customer service announcement. We recently tried to make a delivery to you but were unable to do so, please call 07099833605 to re-schedule. Ref:9280114" +spam,dating:i have had two of these. Only started after i sent a text to talk sport radio last week. Any connection do you think or coincidence? +spam,Dear 0776xxxxxxx U've been invited to XCHAT. This is our final attempt to contact u! Txt CHAT to 86688 150p/MsgrcvdHG/Suite342/2Lands/Row/W1J6HL LDN 18yrs +spam,Dear 0776xxxxxxx U've been invited to XCHAT. This is our final attempt to contact u! Txt CHAT to 86688 150p/MsgrcvdHG/Suite342/2Lands/Row/W1J6HL LDN 18yrs +spam,Dear Dave this is your final notice to collect your 4* Tenerife Holiday or #5000 CASH award! Call 09061743806 from landline. TCs SAE Box326 CW25WX 150ppm +ham,Dear good morning now only i am up +ham,Dear how is chechi. Did you talk to her +ham,Dear i have reache room +spam,"Dear Matthew please call 09063440451 from a landline, your complimentary 4*Lux Tenerife holiday or £1000 CASH await collection. ppm150 SAE T&Cs Box334 SK38XH." +ham,Dear reached railway. What happen to you +spam,Dear Subscriber ur draw 4 £100 gift voucher will b entered on receipt of a correct ans. When was Elvis Presleys Birthday? TXT answer to 80062 +spam,Dear U've been invited to XCHAT. This is our final attempt to contact u! Txt CHAT to 86688 +spam,Dear U've been invited to XCHAT. This is our final attempt to contact u! Txt CHAT to 86688 150p/MsgrcvdHG/Suite342/2Lands/Row/W1J6HL LDN 18 yrs +spam,Dear Voucher Holder 2 claim your 1st class airport lounge passes when using Your holiday voucher call 08704439680. When booking quote 1st class x 2 +spam,Dear Voucher holder Have your next meal on us. Use the following link on your pc 2 enjoy a 2 4 1 dining experiencehttp://www.vouch4me.com/etlp/dining.asp +spam,"Dear Voucher Holder, 2 claim this weeks offer, at your PC go to http://www.e-tlp.co.uk/expressoffer Ts&Cs apply.2 stop texts txt STOP to 80062." +spam,"Dear Voucher Holder, To claim this weeks offer, at you PC please go to http://www.e-tlp.co.uk/expressoffer Ts&Cs apply. To stop texts, txt STOP to 80062" +spam,"Dear Voucher Holder, To claim this weeks offer, at you PC please go to http://www.e-tlp.co.uk/reward. Ts&Cs apply." +spam,"Dear Voucher Holder, To claim this weeks offer, at your PC please go to http://www.wtlp.co.uk/text. Ts&Cs apply." +ham,Dear we are going to our rubber place +ham,Dear we got <#> dollars hi hi +ham,"Dear, will call Tmorrow.pls accomodate." +ham,"Dear,Me at cherthala.in case u r coming cochin pls call bfore u start.i shall also reach accordingly.or tell me which day u r coming.tmorow i am engaged ans its holiday." +ham,"Dear,shall mail tonite.busy in the street,shall update you tonite.things are looking ok.varunnathu edukkukayee raksha ollu.but a good one in real sense." +spam,December only! Had your mobile 11mths+? You are entitled to update to the latest colour camera mobile for Free! Call The Mobile Update Co FREE on 08002986906 +spam,December only! Had your mobile 11mths+? You are entitled to update to the latest colour camera mobile for Free! Call The Mobile Update Co FREE on 08002986906 +spam,December only! Had your mobile 11mths+? You are entitled to update to the latest colour camera mobile for Free! Call The Mobile Update Co FREE on 08002986906 +spam,December only! Had your mobile 11mths+? You are entitled to update to the latest colour camera mobile for Free! Call The Mobile Update VCo FREE on 08002986906 +ham,"Depends on quality. If you want the type i sent boye, faded glory, then about 6. If you want ralphs maybe 2" +ham,Did he just say somebody is named tampa +ham,"Did I forget to tell you ? I want you , I need you, I crave you ... But most of all ... I love you my sweet Arabian steed ... Mmmmmm ... Yummy" +ham,Did u find out what time the bus is at coz i need to sort some stuff out. +ham,Did u got that persons story +ham,Did u got that persons story +ham,Did u receive my msg? +ham,Did you catch the bus ? Are you frying an egg ? Did you make a tea? Are you eating your mom's left over dinner ? Do you feel my Love ? +spam,"Did you hear about the new ""Divorce Barbie""? It comes with all of Ken's stuff!" +ham,Didn't you get hep b immunisation in nigeria. +ham,Dis is yijue. I jus saw ur mail. In case huiming havent sent u my num. Dis is my num. +ham,"Ditto. And you won't have to worry about me saying ANYTHING to you anymore. Like i said last night, you do whatever you want and i'll do the same. Peace." +ham,Do well :)all will for little time. Thing of good times ahead: +spam,"Do you ever notice that when you're driving, anyone going slower than you is an idiot and everyone driving faster than you is a maniac?" +ham,Do you know what Mallika Sherawat did yesterday? Find out now @ <URL> +ham,Do you know where my lab goggles went +ham,Do you mind if I ask what happened? You dont have to say if it is uncomfortable. +spam,"Do you realize that in about 40 years, we'll have thousands of old ladies running around with tattoos?" +spam,Do you want 750 anytime any network mins 150 text and a NEW video phone for only five pounds per week call 08000776320 now or reply for delivery Tomorrow +spam,Do you want 750 anytime any network mins 150 text and a NEW VIDEO phone for only five pounds per week call 08002888812 or reply for delivery tomorrow +spam,Do you want a New Nokia 3510i Colour Phone Delivered Tomorrow? With 200 FREE minutes to any mobile + 100 FREE text + FREE camcorder Reply or Call 08000930705 +spam,Do you want a New Nokia 3510i Colour Phone Delivered Tomorrow? With 200 FREE minutes to any mobile + 100 FREE text + FREE camcorder Reply or Call 8000930705 +spam,Do you want a New Nokia 3510i colour phone DeliveredTomorrow? With 300 free minutes to any mobile + 100 free texts + Free Camcorder reply or call 08000930705 +spam,Do you want a New Nokia 3510i colour phone DeliveredTomorrow? With 300 free minutes to any mobile + 100 free texts + Free Camcorder reply or call 08000930705. +spam,Do you want a new Video handset? 750 any time any network mins? UNLIMITED TEXT? Camcorder? Reply or Call now 08000930705 for del Sat AM +spam,Do you want a new video handset? 750 anytime any network mins? Half Price Line Rental? Camcorder? Reply or call 08000930705 for delivery tomorrow +spam,Do you want a new Video phone? 600 anytime any network mins 400 Inclusive Video calls AND downloads 5 per week Free delTOMORROW call 08002888812 or reply NOW +spam,Do you want a NEW video phone750 anytime any network mins 150 text for only five pounds per week call 08000776320 now or reply for delivery tomorrow +ham,Does not operate after <#> or what +ham,Does she usually take fifteen fucking minutes to respond to a yes or no question +spam,Don't b floppy... b snappy & happy! Only gay chat service with photo upload call 08718730666 (10p/min). 2 stop our texts call 08712460324 +spam,Dont forget you can place as many FREE Requests with 1stchoice.co.uk as you wish. For more Information call 08707808226. +ham,Dont gimme that lip caveboy +ham,Don't necessarily expect it to be done before you get back though because I'm just now headin out +ham,Dont think so. It turns off like randomlly within 5min of opening +ham,Dont worry. I guess he's busy. +spam,Dorothy@kiefer.com (Bank of Granite issues Strong-Buy) EXPLOSIVE PICK FOR OUR MEMBERS *****UP OVER 300% *********** Nasdaq Symbol CDGT That is a $5.00 per.. +spam,"Double Mins & 1000 txts on Orange tariffs. Latest Motorola, SonyEricsson & Nokia with Bluetooth FREE! Call MobileUpd8 on 08000839402 or call2optout/HF8" +spam,Double Mins & Double Txt & 1/2 price Linerental on Latest Orange Bluetooth mobiles. Call MobileUpd8 for the very latest offers. 08000839402 or call2optout/LF56 +spam,Double Mins & Double Txt & 1/2 price Linerental on Latest Orange Bluetooth mobiles. Call MobileUpd8 for the very latest offers. 08000839402 or call2optout/LF56 +spam,"Double mins and txts 4 6months FREE Bluetooth on Orange. Available on Sony, Nokia Motorola phones. Call MobileUpd8 on 08000839402 or call2optout/N9DX" +spam,"Double mins and txts 4 6months FREE Bluetooth on Orange. Available on Sony, Nokia Motorola phones. Call MobileUpd8 on 08000839402 or call2optout/N9DX" +spam,Double your mins & txts on Orange or 1/2 price linerental - Motorola and SonyEricsson with B/Tooth FREE-Nokia FREE Call MobileUpd8 on 08000839402 or2optout/HV9D +spam,"Download as many ringtones as u like no restrictions, 1000s 2 choose. U can even send 2 yr buddys. Txt Sir to 80082 £3 " +ham,Dude ive been seeing a lotta corvettes lately +ham,Dude we should go sup again +ham,Dunno he jus say go lido. Same time 930. +ham,Dunno y u ask me. +spam,EASTENDERS TV Quiz. What FLOWER does DOT compare herself to? D= VIOLET E= TULIP F= LILY txt D E or F to 84025 NOW 4 chance 2 WIN £100 Cash WKENT/150P16+ +spam,EASTENDERS TV Quiz. What FLOWER does DOT compare herself to? D= VIOLET E= TULIP F= LILY txt D E or F to 84025 NOW 4 chance 2 WIN £100 Cash WKENT/150P16+ +ham,Easy ah?sen got selected means its good.. +spam,"Eerie Nokia tones 4u, rply TONE TITLE to 8007 eg TONE DRACULA to 8007 Titles: GHOST, ADDAMSFA, MUNSTERS, EXORCIST, TWILIGHT www.getzed.co.uk POBox36504W45WQ 150p" +spam,"Eerie Nokia tones 4u, rply TONE TITLE to 8007 eg TONE DRACULA to 8007 Titles: GHOST, ADDAMSFA, MUNSTERS, EXORCIST, TWILIGHT www.getzed.co.uk POBox36504W45WQ 150p " +ham,Eh u remember how 2 spell his name... Yes i did. He v naughty make until i v wet. +ham,"Ela kano.,il download, come wen ur free.." +spam,Email AlertFrom: Jeri StewartSize: 2KBSubject: Low-cost prescripiton drvgsTo listen to email call 123 +ham,En chikku nange bakra msg kalstiya..then had tea/coffee? +spam,"England v Macedonia - dont miss the goals/team news. Txt ur national team to 87077 eg ENGLAND to 87077 Try:WALES, SCOTLAND 4txt/ú1.20 POBOXox36504W45WQ 16+" +spam,Enjoy the jamster videosound gold club with your credits for 2 new videosounds+2 logos+musicnews! get more fun from jamster.co.uk! 16+only Help? call: 09701213186 +ham,Even my brother is not like to speak with me. They treat me like aids patent. +ham,Even u dont get in trouble while convincing..just tel him once or twice and just tel neglect his msgs dont c and read it..just dont reply +spam,Ever thought about living a good life with a perfect partner? Just txt back NAME and AGE to join the mobile community. (100p/SMS) +ham,"Every King Was Once A Crying Baby And Every Great Building Was Once A Map.. Not Imprtant Where U r TODAY, BUT Where U Wil Reach TOMORW. Gud ni8" +ham,Exactly. Anyways how far. Is jide her to study or just visiting +ham,"Fair enough, anything going on?" +ham,"Faith makes things possible,Hope makes things work,Love makes things beautiful,May you have all three this Christmas!Merry Christmas!" +spam,Fancy a shag? I do.Interested? sextextuk.com txt XXUK SUZY to 69876. Txts cost 1.50 per msg. TnCs on website. X +spam,"Fantasy Football is back on your TV. Go to Sky Gamestar on Sky Active and play £250k Dream Team. Scoring starts on Saturday, so register now!SKY OPT OUT to 88088" +spam,"Fantasy Football is back on your TV. Go to Sky Gamestar on Sky Active and play £250k Dream Team. Scoring starts on Saturday, so register now!SKY OPT OUT to 88088" +ham,Ffffffffff. Alright no way I can meet up with you sooner? +ham,"Fighting with the world is easy, u either win or lose bt fightng with some1 who is close to u is dificult if u lose - u lose if u win - u still lose." +spam,Filthy stories and GIRLS waiting for your +spam,"Final Chance! Claim ur £150 worth of discount vouchers today! Text YES to 85023 now! SavaMob, member offers mobile! T Cs SavaMob POBOX84, M263UZ. £3.00 Subs 16" +spam,"Final Chance! Claim ur £150 worth of discount vouchers today! Text YES to 85023 now! SavaMob, member offers mobile! T Cs SavaMob POBOX84, M263UZ. £3.00 Subs 16" +ham,Finally the match heading towards draw as your prediction. +ham,Fine i miss you very much. +ham,Fine if thatÂ’s the way u feel. ThatÂ’s the way its gota b +ham,Finished class where are you. +ham,First answer my question. +ham,For fear of fainting with the of all that housework you just did? Quick have a cuppa +ham,For my family happiness.. +ham,For real when u getting on yo? I only need 2 more tickets and one more jacket and I'm done. I already used all my multis. +spam,For sale - arsenal dartboard. Good condition but no doubles or trebles! +spam,For taking part in our mobile survey yesterday! You can now have 500 texts 2 use however you wish. 2 get txts just send TXT to 80160 T&C www.txt43.com 1.50p +spam,For the most sparkling shopping breaks from 45 per person; call 0121 2025050 or visit www.shortbreaks.org.uk +spam,"For ur chance to win a £250 cash every wk TXT: ACTION to 80608. T's&C's www.movietrivia.tv custcare 08712405022, 1x150p/wk" +spam,"For ur chance to win a £250 cash every wk TXT: ACTION to 80608. T's&C's www.movietrivia.tv custcare 08712405022, 1x150p/wk." +spam,"For ur chance to win a £250 wkly shopping spree TXT: SHOP to 80878. T's&C's www.txt-2-shop.com custcare 08715705022, 1x150p/wk" +spam,"For ur chance to win a £250 wkly shopping spree TXT: SHOP to 80878. T's&C's www.txt-2-shop.com custcare 08715705022, 1x150p/wk" +spam,"For ur chance to win £250 cash every wk TXT: PLAY to 83370. T's&C's www.music-trivia.net custcare 08715705022, 1x150p/wk." +spam,"For your chance to WIN a FREE Bluetooth Headset then simply reply back with ""ADP""" +ham,"Found it, ENC <#> , where you at?" +spam,Free 1st week entry 2 TEXTPOD 4 a chance 2 win 40GB iPod or £250 cash every wk. Txt POD to 84128 Ts&Cs www.textpod.net custcare 08712405020. +spam,Free 1st week entry 2 TEXTPOD 4 a chance 2 win 40GB iPod or £250 cash every wk. Txt VPOD to 81303 Ts&Cs www.textpod.net custcare 08712405020. +spam,FREE camera phones with linerental from 4.49/month with 750 cross ntwk mins. 1/2 price txt bundle deals also avble. Call 08001950382 or call2optout/J MF +spam,Free entry in 2 a weekly comp for a chance to win an ipod. Txt POD to 80182 to get entry (std txt rate) T&C's apply 08452810073 for details 18+ +spam,Free entry in 2 a weekly comp for a chance to win an ipod. Txt POD to 80182 to get entry (std txt rate) T&C's apply 08452810073 for details 18+ +spam,Free entry in 2 a wkly comp to win FA Cup final tkts 21st May 2005. Text FA to 87121 to receive entry question(std txt rate)T&C's apply 08452810075over18's +spam,Free entry in 2 a wkly comp to win FA Cup final tkts 21st May 2005. Text FA to 87121 to receive entry question(std txt rate)T&C's apply 08452810075over18's +spam,FREE entry into our £250 weekly comp just send the word ENTER to 84128 NOW. 18 T&C www.textcomp.com cust care 08712405020. +spam,FREE entry into our £250 weekly comp just send the word WIN to 80086 NOW. 18 T&C www.txttowin.co.uk +spam,FREE entry into our £250 weekly competition just text the word WIN to 80086 NOW. 18 T&C www.txttowin.co.uk +spam,"Free entry to the gr8prizes wkly comp 4 a chance to win the latest Nokia 8800, PSP or £250 cash every wk.TXT GREAT to 80878 http//www.gr8prizes.com 08715705022" +spam,FREE for 1st week! No1 Nokia tone 4 ur mob every week just txt NOKIA to 8007 Get txting and tell ur mates www.getzed.co.uk POBox 36504 W45WQ norm150p/tone 16+ +spam,FREE for 1st week! No1 Nokia tone 4 ur mob every week just txt NOKIA to 8007 Get txting and tell ur mates www.getzed.co.uk POBox 36504 W45WQ norm150p/tone 16+ +spam,FREE for 1st week! No1 Nokia tone 4 ur mob every week just txt NOKIA to 8007 Get txting and tell ur mates www.getzed.co.uk POBox 36504 W45WQ norm150p/tone 16+ +spam,FREE for 1st week! No1 Nokia tone 4 ur mob every week just txt NOKIA to 87077 Get txting and tell ur mates. zed POBox 36504 W45WQ norm150p/tone 16+ +spam,FREE for 1st week! No1 Nokia tone 4 ur mobile every week just txt NOKIA to 8077 Get txting and tell ur mates. www.getzed.co.uk POBox 36504 W45WQ 16+ norm150p/tone +spam,FREE for 1st week! No1 Nokia tone 4 ur mobile every week just txt NOKIA to 8077 Get txting and tell ur mates. www.getzed.co.uk POBox 36504 W45WQ 16+ norm150p/tone +spam,"FREE GAME. Get Rayman Golf 4 FREE from the O2 Games Arcade. 1st get UR games settings. Reply POST, then save & activ8. Press 0 key for Arcade. Termsapply" +spam,"FREE MESSAGE Activate your 500 FREE Text Messages by replying to this message with the word FREE For terms & conditions, visit www.07781482378.com" +spam,"FREE MESSAGE Activate your 500 FREE Text Messages by replying to this message with the word FREE For terms & conditions, visit www.07781482378.com" +spam,"Free msg. Sorry, a service you ordered from 81303 could not be delivered as you do not have sufficient credit. Please top up to receive the service." +spam,"Free Msg: get Gnarls Barkleys ""Crazy"" ringtone TOTALLY FREE just reply GO to this message right now!" +spam,Free Msg: Ringtone!From: http://tms. widelive.com/index. wml?id=1b6a5ecef91ff9*37819&first=true18:0430-JUL-05 +spam,Free msg: Single? Find a partner in your area! 1000s of real people are waiting to chat now!Send CHAT to 62220Cncl send STOPCS 08717890890£1.50 per msg +spam,FREE MSG:We billed your mobile number by mistake from shortcode 83332.Please call 08081263000 to have charges refunded.This call will be free from a BT landline +spam,"FREE NOKIA Or Motorola with upto 12mths 1/2price linerental, 500 FREE x-net mins&100txt/mth FREE B'tooth*. Call Mobileupd8 on 08001950382 or call 2optout/D3WV" +spam,"FREE RING TONE just text ""POLYS"" to 87131. Then every week get a new tone. 0870737910216yrs only £1.50/wk." +spam,"FREE RINGTONE text FIRST to 87131 for a poly or text GET to 87131 for a true tone! Help? 0845 2814032 16 after 1st free, tones are 3x£150pw to e£nd txt stop" +spam,Free tones Hope you enjoyed your new content. text stop to 61610 to unsubscribe. help:08712400602450p Provided by tones2you.co.uk +spam,Free Top ringtone -sub to weekly ringtone-get 1st week free-send SUBPOLY to 81618-?3 per week-stop sms-08718727870 +spam,Free Top ringtone -sub to weekly ringtone-get 1st week free-send SUBPOLY to 81618-?3 per week-stop sms-08718727870 +spam,FREE UNLIMITED HARDCORE PORN direct 2 your mobile Txt PORN to 69200 & get FREE access for 24 hrs then chrgd@50p per day txt Stop 2exit. This msg is free +spam,Free video camera phones with Half Price line rental for 12 mths and 500 cross ntwk mins 100 txts. Call MobileUpd8 08001950382 or Call2OptOut/674 +spam,Free video camera phones with Half Price line rental for 12 mths and 500 cross ntwk mins 100 txts. Call MobileUpd8 08001950382 or Call2OptOut/674& +spam,FREE>Ringtone! Reply REAL or POLY eg REAL1 1. PushButton 2. DontCha 3. BabyGoodbye 4. GoldDigger 5. WeBeBurnin 1st tone FREE and 6 more when u join for £3/wk +spam,"FREE2DAY sexy St George's Day pic of Jordan!Txt PIC to 89080 dont miss out, then every wk a saucy celeb!4 more pics c PocketBabe.co.uk 0870241182716 £3/wk" +spam,"FREE2DAY sexy St George's Day pic of Jordan!Txt PIC to 89080 dont miss out, then every wk a saucy celeb!4 more pics c PocketBabe.co.uk 0870241182716 £3/wk" +spam,"Free-message: Jamster!Get the crazy frog sound now! For poly text MAD1, for real text MAD2 to 88888. 6 crazy sounds for just 3 GBP/week! 16+only! T&C's apply" +spam,"FreeMsg Hey there darling it's been 3 week's now and no word back! I'd like some fun you up for it still? Tb ok! XxX std chgs to send, £1.50 to rcv" +spam,"FreeMsg Hey U, i just got 1 of these video/pic fones, reply WILD to this txt & ill send U my pics, hurry up Im so bored at work xxx (18 150p/rcvd STOP2stop)" +spam,FreeMsg Hi baby wow just got a new cam moby. Wanna C a hot pic? or Fancy a chat?Im w8in 4uTxt / rply CHAT to 82242 Hlp 08712317606 Msg150p 2rcv +spam,FreeMsg Today's the day if you are ready! I'm horny & live in your town. I love sex fun & games! Netcollex Ltd 08700621170150p per msg reply Stop to end +spam,"FreeMsg Why haven't you replied to my text? I'm Randy, sexy, female and live local. Luv to hear from u. Netcollex Ltd 08700621170150p per msg reply Stop to end" +spam,"FreeMSG You have been awarded a FREE mini DIGITAL CAMERA, just reply SNAP to collect your prize! (quizclub Opt out? Stop 80122300p/wk SP:RWM Ph:08704050406)" +spam,Freemsg: 1-month unlimited free calls! Activate SmartCall Txt: CALL to No: 68866. Subscriptn3gbp/wk unlimited calls Help: 08448714184 Stop?txt stop landlineonly +spam,"FreeMsg: Claim ur 250 SMS messages-Text OK to 84025 now!Use web2mobile 2 ur mates etc. Join Txt250.com for 1.50p/wk. T&C BOX139, LA32WU. 16 . Remove txtX or stop" +spam,FreeMsg: Fancy a flirt? Reply DATE now & join the UKs fastest growing mobile dating service. Msgs rcvd just 25p to optout txt stop to 83021. Reply DATE now! +spam,FreeMsg: Hey - I'm Buffy. 25 and love to satisfy men. Home alone feeling randy. Reply 2 C my PIX! QlynnBV Help08700621170150p a msg Send stop to stop txts +spam,FREEMSG: Our records indicate you may be entitled to 3750 pounds for the Accident you had. To claim for free reply with YES to this msg. To opt out text STOP +spam,FreeMsg: Txt: CALL to No: 86888 & claim your reward of 3 hours talk time to use from your phone now! Subscribe6GBP/mnth inc 3hrs 16 stop?txtStop +spam,FreeMsg:Feelin kinda lnly hope u like 2 keep me company! Jst got a cam moby wanna c my pic?Txt or reply DATE to 82242 Msg150p 2rcv Hlp 08712317606 stop to 82242 +spam,FreeMsg>FAV XMAS TONES!Reply REAL +spam,FROM 88066 LOST £12 HELP +ham,From here after The performance award is calculated every two month.not for current one month period.. +spam,From next month get upto 50% More Calls 4 Ur standard network charge 2 activate Call 9061100010 C Wire3.net 1st4Terms PoBox84 M26 3UZ Cost £1.50 min MobcudB more +spam,from www.Applausestore.com MonthlySubscription@50p/msg max6/month T&CsC web age16 2stop txt stop +ham,"Fuck babe ... I miss you already, you know ? Can't you let me send you some money towards your net ? I need you ... I want you ... I crave you ..." +ham,Geeeee ... I love you so much I can barely stand it +spam,GENT! We are trying to contact you. Last weekends draw shows that you won a £1000 prize GUARANTEED. Call 09064012160. Claim Code K52. Valid 12hrs only. 150ppm +spam,GENT! We are trying to contact you. Last weekends draw shows that you won a £1000 prize GUARANTEED. Call 09064012160. Claim Code K52. Valid 12hrs only. 150ppm +spam,"Get 3 Lions England tone, reply lionm 4 mono or lionp 4 poly. 4 more go 2 www.ringtones.co.uk, the original n best. Tones 3GBP network operator rates apply" +spam,"Get 3 Lions England tone, reply lionm 4 mono or lionp 4 poly. 4 more go 2 www.ringtones.co.uk, the original n best. Tones 3GBP network operator rates apply." +spam,Get a brand new mobile phone by being an agent of The Mob! Plus loads more goodies! For more info just text MAT to 87021. +spam,Get a FREE mobile video player FREE movie. To collect text GO to 89105. Its free! Extra films can be ordered t's and c's apply. 18 yrs only +ham,Get down in gandhipuram and walk to cross cut road. Right side <#> street road and turn at first right. +spam,Get the official ENGLAND poly ringtone or colour flag on yer mobile for tonights game! Text TONE or FLAG to 84199. Optout txt ENG STOP Box39822 W111WX £1.50 +spam,Get the official ENGLAND poly ringtone or colour flag on yer mobile for tonights game! Text TONE or FLAG to 84199. Optout txt ENG STOP Box39822 W111WX £1.50 +spam,Get ur 1st RINGTONE FREE NOW! Reply to this msg with TONE. Gr8 TOP 20 tones to your phone every week just £1.50 per wk 2 opt out send STOP 08452810071 16 +spam,Get your garden ready for summer with a FREE selection of summer bulbs and seeds worth £33:50 only with The Scotsman this Saturday. To stop go2 notxt.co.uk +spam,Get your garden ready for summer with a FREE selection of summer bulbs and seeds worth £33:50 only with The Scotsman this Saturday. To stop go2 notxt.co.uk +ham,Gibbs unsold.mike hussey +ham,Gimme a few was <#> minutes ago +ham,"Go until jurong point, crazy.. Available only in bugis n great world la e buffet... Cine there got amore wat..." +spam,"Goal! Arsenal 4 (Henry, 7 v Liverpool 2 Henry scores with a simple shot from 6 yards from a pass by Bergkamp to give Arsenal a 2 goal margin after 78 mins." +ham,Going for dinner.msg you after. +ham,Going on nothing great.bye +ham,Going thru a very different feeling.wavering decisions and coping up with the same is the same individual.time will heal everything i believe. +ham,Going to take your babe out ? +spam,goldviking (29/M) is inviting you to be his friend. Reply YES-762 or NO-762 See him: www.SMS.ac/u/goldviking STOP? Send STOP FRND to 62468 +ham,Good afternoon starshine! How's my boytoy? Does he crave me yet? Ache to fuck me ? *sips cappuccino* I miss you babe *teasing kiss* +ham,"Good afternoon sunshine! How dawns that day ? Are we refreshed and happy to be alive? Do we breathe in the air and smile ? I think of you, my love ... As always" +ham,"Good afternoon, my love! How goes that day ? I hope maybe you got some leads on a job. I think of you, boytoy and send you a passionate kiss from across the sea" +ham,"Good evening Sir, Al Salam Wahleykkum.sharing a happy news.By the grace of God, i got an offer from Tayseer,TISSCO and i joined.Hope you are fine.Inshah Allah,meet you sometime.Rakhesh,visitor from India." +spam,Good Luck! Draw takes place 28th Feb 06. Good Luck! For removal send STOP to 87239 customer services 08708034412 +ham,Good Morning my Dear........... Have a great & successful day. +ham,"Good stuff, will do." +ham,Good words.... But words may leave u in dismay many times. +ham,Good. Good job. I like entrepreneurs +ham,Goodmorning sleeping ga. +ham,Goodo! Yes we must speak friday - egg-potato ratio for tortilla needed! +ham,Got c... I lazy to type... I forgot ü in lect... I saw a pouch but like not v nice... +ham,Got it! It looks scrumptious... daddy wants to eat you all night long! +ham,Got it. Seventeen pounds for seven hundred ml – hope ok. +ham,Got meh... When? +spam,"Got what it takes 2 take part in the WRC Rally in Oz? U can with Lucozade Energy! Text RALLY LE to 61200 (25p), see packs or lucozade.co.uk/wrc & itcould be u!" +spam,"Got what it takes 2 take part in the WRC Rally in Oz? U can with Lucozade Energy! Text RALLY LE to 61200 (25p), see packs or lucozade.co.uk/wrc & itcould be u!" +spam,Gr8 new service - live sex video chat on your mob - see the sexiest dirtiest girls live on ur phone - 4 details text horny to 89070 to cancel send STOP to 89070 +spam,"Gr8 Poly tones 4 ALL mobs direct 2u rply with POLY TITLE to 8007 eg POLY BREATHE1 Titles: CRAZYIN, SLEEPINGWITH, FINEST, YMCA :getzed.co.uk POBox365O4W45WQ 300p" +ham,Great escape. I fancy the bridge but needs her lager. See you tomo +spam,Great NEW Offer - DOUBLE Mins & DOUBLE Txt on best Orange tariffs AND get latest camera phones 4 FREE! Call MobileUpd8 free on 08000839402 NOW! or 2stoptxt T&Cs +spam,Great NEW Offer - DOUBLE Mins & DOUBLE Txt on best Orange tariffs AND get latest camera phones 4 FREE! Call MobileUpd8 free on 08000839402 NOW! or 2stoptxt T&Cs +spam,Great News! Call FREEFONE 08006344447 to claim your guaranteed £1000 CASH or £2000 gift. Speak to a live operator NOW! +spam,Great News! Call FREEFONE 08006344447 to claim your guaranteed £1000 CASH or £2000 gift. Speak to a live operator NOW! +ham,great princess! I love giving and receiving oral. Doggy style is my fave position. How about you? I enjoy making love <#> times per night :) +ham,Great! I hope you like your man well endowed. I am <#> inches... +ham,Great. Never been better. Each day gives even more reasons to thank God +spam,GSOH? Good with SPAM the ladies?U could b a male gigolo? 2 join the uk's fastest growing mens club reply ONCALL. mjzgroup. 08714342399.2stop reply STOP. msg@£1.50rcvd +ham,Gud mrng dear hav a nice day +ham,Gud mrng dear hav a nice day +ham,Gud mrng dear have a nice day +ham,Gudnite....tc...practice going on +ham,Gudnite....tc...practice going on +spam,Guess what! Somebody you know secretly fancies you! Wanna find out who it is? Give us a call on 09065394514 From Landline DATEBox1282EssexCM61XN 150p/min 18 +spam,Guess what! Somebody you know secretly fancies you! Wanna find out who it is? Give us a call on 09065394973 from Landline DATEBox1282EssexCM61XN 150p/min 18 +spam,Guess who am I?This is the first time I created a web page WWW.ASJESUS.COM read all I wrote. I'm waiting for your opinions. I want to be your friend 1/1 +ham,Ha ha cool cool chikku chikku:-):-DB-) +ham,Ha ha ha good joke. Girls are situation seekers. +spam,"Hack Chat. Get backdoor entry into 121 chat rooms at a fraction of the cost. Reply NEO69 or call 09050280520, to subscribe 25p pm. DPS, Bcm box 8027 Ldn, wc1n3xx" +spam,"Had your contract mobile 11 Mnths? Latest Motorola, Nokia etc. all FREE! Double Mins & Text on Orange tariffs. TEXT YES for callback, no to remove from records" +spam,"Had your contract mobile 11 Mnths? Latest Motorola, Nokia etc. all FREE! Double Mins & Text on Orange tariffs. TEXT YES for callback, no to remove from records." +spam,Had your mobile 10 mths? Update to latest Orange camera/video phones for FREE. Save £s with Free texts/weekend calls. Text YES for a callback orno to opt out +spam,"Had your mobile 10 mths? Update to the latest Camera/Video phones for FREE. KEEP UR SAME NUMBER, Get extra free mins/texts. Text YES for a call" +spam,Had your mobile 11 months or more? U R entitled to Update to the latest colour mobiles with camera for Free! Call The Mobile Update Co FREE on 08002986030 +spam,Had your mobile 11 months or more? U R entitled to Update to the latest colour mobiles with camera for Free! Call The Mobile Update Co FREE on 08002986030 +spam,Had your mobile 11mths ? Update for FREE to Oranges latest colour camera mobiles & unlimited weekend calls. Call Mobile Upd8 on freefone 08000839402 or 2StopTx +spam,Had your mobile 11mths ? Update for FREE to Oranges latest colour camera mobiles & unlimited weekend calls. Call Mobile Upd8 on freefone 08000839402 or 2StopTxt +ham,Haf u found him? I feel so stupid da v cam was working. +ham,"Haha awesome, be there in a minute" +ham,"Haha get used to driving to usf man, I know a lot of stoners" +ham,"Haha good to hear, I'm officially paid and on the market for an 8th" +ham,Haha mayb u're rite... U know me well. Da feeling of being liked by someone is gd lor. U faster go find one then all gals in our group attached liao. +ham,Hahaha..use your brain dear +ham,Hai ana tomarrow am coming on morning. <DECIMAL> ill be there in sathy then we ll go to RTO office. Reply me after came to home. +ham,hanks lotsly! +ham,Happy New year my dear brother. I really do miss you. Just got your number and decided to send you this text wishing you only happiness. Abiola +ham,Happy valentines day I know its early but i have hundreds of handsomes and beauties to wish. So i thought to finish off aunties and uncles 1st... +spam,Hard LIVE 121 chat just 60p/min. Choose your girl and connect LIVE. Call 09094646899 now! Cheap Chat UK's biggest live service. VU BCM1896WC1N3XX +spam,Hard LIVE 121 chat just 60p/min. Choose your girl and connect LIVE. Call 09094646899 now! Cheap Chat UK's biggest live service. VU BCM1896WC1N3XX +ham,Have a good evening! Ttyl +ham,Have a good evening! Ttyl +ham,Have you finished work yet? :) +ham,Have you got Xmas radio times. If not i will get it now +ham,Havent planning to buy later. I check already lido only got 530 show in e afternoon. U finish work already? +ham,Having lunch:)you are not in online?why? +ham,He also knows about lunch menu only da. . I know +ham,"He has lots of used ones babe, but the model doesn't help. Youi have to bring it over and he'll match it up" +ham,He is a womdarfull actor +ham,He is there. You call and meet him +ham,He like not v shock leh. Cos telling shuhui is like telling leona also. Like dat almost all know liao. He got ask me abt ur reaction lor. +ham,He says he'll give me a call when his friend's got the money but that he's definitely buying before the end of the week +ham,"He will, you guys close?" +ham,Headin towards busetop +ham,"Height of Confidence: All the Aeronautics professors wer calld & they wer askd 2 sit in an aeroplane. Aftr they sat they wer told dat the plane ws made by their students. Dey all hurried out of d plane.. Bt only 1 didnt move... He said:""if it is made by my students,this wont even start........ Datz confidence.." +ham,Hello darlin ive finished college now so txt me when u finish if u can love Kate xxx +spam,"Hello darling how are you today? I would love to have a chat, why dont you tell me what you look like and what you are in to sexy?" +spam,"Hello from Orange. For 1 month's free access to games, news and sport, plus 10 free texts and 20 photo messages, reply YES. Terms apply: www.orange.co.uk/ow" +ham,Hello handsome ! Are you finding that job ? Not being lazy ? Working towards getting back that net for mummy ? Where's my boytoy now ? Does he miss me ? +ham,"Hello my boytoy ... Geeee I miss you already and I just woke up. I wish you were here in bed with me, cuddling me. I love you ..." +ham,Hello! Good week? Fancy a drink or something later? +ham,Hello! How's you and how did saturday go? I was just texting to see if you'd decided to do anything tomo. Not that i'm trying to invite myself or anything! +ham,"Hello! Just got here, st andrews-boy its a long way! Its cold. I will keep you posted" +ham,"Hello, my love. What are you doing? Did you get to that interview today? Are you you happy? Are you being a good boy? Do you think of me?Are you missing me ?" +spam,Hello. We need some posh birds and chaps to user trial prods for champneys. Can i put you down? I need your address and dob asap. Ta r +ham,here is my new address -apples&pairs&all that malarky +spam,Here is your discount code RP176781. To stop further messages reply stop. www.regalportfolio.co.uk. Customer Services 08717205546 +spam,"Hey Boys. Want hot XXX pics sent direct 2 ur phone? Txt PORN to 69855, 24Hrs free and then just 50p per day. To stop text STOPBCM SF WC1N3XX" +ham,Hey company elama po mudyadhu. +ham,HEY GIRL. HOW R U? HOPE U R WELL ME AN DEL R BAK! AGAIN LONG TIME NO C! GIVE ME A CALL SUM TIME FROM LUCYxx +ham,"HEY HEY WERETHE MONKEESPEOPLE SAY WE MONKEYAROUND! HOWDY GORGEOUS, HOWU DOIN? FOUNDURSELF A JOBYET SAUSAGE?LOVE JEN XXX" +spam,Hey I am really horny want to chat or see me naked text hot to 69698 text charged at 150pm to unsubscribe text stop 69698 +ham,Hey i will be late ah... Meet you at 945+ +ham,Hey leave it. not a big deal:-) take care. +ham,Hey so this sat are we going for the intro pilates only? Or the kickboxing too? +ham,Hey you told your name to gautham ah? +ham,Hey. You got any mail? +ham,Hey... Why dont we just go watch x men and have lunch... Haha +ham,Hi :)finally i completed the course:) +spam,Hi 07734396839 IBH Customer Loyalty Offer: The NEW NOKIA6600 Mobile from ONLY £10 at TXTAUCTION!Txt word:START to No:81151 & get Yours Now!4T& +spam,Hi 07734396839 IBH Customer Loyalty Offer: The NEW NOKIA6600 Mobile from ONLY £10 at TXTAUCTION!Txt word:START to No:81151 & get Yours Now!4T& +ham,HI BABE IM AT HOME NOW WANNA DO SOMETHING? XX +spam,"Hi babe its Chloe, how r u? I was smashed on saturday night, it was great! How was your weekend? U been missing me? SP visionsms.com Text stop to stop 150p/text" +spam,"Hi babe its Jordan, how r u? Im home from abroad and lonely, text me back if u wanna chat xxSP visionsms.com Text stop to stopCost 150p 08712400603" +ham,hi baby im cruisin with my girl friend what r u up 2? give me a call in and hour at home if thats alright or fone me on this fone now love jenny xxx +ham,Hi da:)how is the todays class? +ham,"Hi frnd, which is best way to avoid missunderstding wit our beloved one's?" +ham,"Hi hope u get this txt~journey hasnt been gd,now about 50 mins late I think." +ham,Hi i won't b ard 4 christmas. But do enjoy n merry x'mas. +spam,Hi if ur lookin 4 saucy daytime fun wiv busty married woman Am free all next week Chat now 2 sort time 09099726429 JANINExx Calls£1/minMobsmoreLKPOBOX177HP51FL +spam,Hi I'm sue. I am 20 years old and work as a lapdancer. I love sex. Text me live - I'm i my bedroom now. text SUE to 89555. By TextOperator G2 1DA 150ppmsg 18+ +ham,Hi its Kate how is your evening? I hope i can see you tomorrow for a bit but i have to bloody babyjontet! Txt back if u can. :) xxx +ham,Hi its Kate it was lovely to see you tonight and ill phone you tomorrow. I got to sing and a guy gave me his card! xxx +spam,Hi its LUCY Hubby at meetins all day Fri & I will B alone at hotel U fancy cumin over? Pls leave msg 2day 09099726395 Lucy x Calls£1/minMobsmoreLKPOBOX177HP51FL +ham,Hi mate its RV did u hav a nice hol just a message 3 say hello coz havenÂ’t sent u 1 in ages started driving so stay off roads!RVx +ham,Hi msg me:)i'm in office.. +ham,Hi Princess! Thank you for the pics. You are very pretty. How are you? +ham,"Hi the way I was with u 2day, is the normal way&this is the real me. UR unique&I hope I know u 4 the rest of mylife. Hope u find wot was lost." +spam,"Hi there, 2nights ur lucky night! Uve been invited 2 XCHAT, the Uks wildest chat! Txt CHAT to 86688 now! 150p/MsgrcvdHG/Suite342/2Lands/Row/W1J6HL LDN 18yrs" +spam,"Hi this is Amy, we will be sending you a free phone number in a couple of days, which will give you an access to all the adult parties..." +spam,"Hi ya babe x u 4goten bout me?' scammers getting smart..Though this is a regular vodafone no, if you respond you get further prem rate msg/subscription. Other nos used also. Beware!" +ham,Hi! You just spoke to MANEESHA V. We'd like to know if you were satisfied with the experience. Reply Toll Free with Yes or No. +spam,"Hi, the SEXYCHAT girls are waiting for you to text them. Text now for a great night chatting. send STOP to stop this service" +spam,"Hi, this is Mandy Sullivan calling from HOTMIX FM...you are chosen to receive £5000.00 in our Easter Prize draw.....Please telephone 09041940223 to claim before 29/03/05 or your prize will be transferred to someone else...." +spam,Hi. Customer Loyalty Offer:The NEW Nokia6650 Mobile from ONLY £10 at TXTAUCTION! Txt word: START to No: 81151 & get yours Now! 4T&Ctxt TC 150p/MTmsg +ham,"Hi. Wk been ok - on hols now! Yes on for a bit of a run. Forgot that i have hairdressers appointment at four so need to get home n shower beforehand. Does that cause prob for u?""" +ham,Hmm .. Bits and pieces lol ... *sighs* ... +ham,Hmm...my uncle just informed me that he's paying the school directly. So pls buy food. +ham,"Hmmm ... I thought we said 2 hours slave, not 3 ... You are late ... How should I punish you ?" +ham,"Hmmm.. Thk sure got time to hop ard... Ya, can go 4 free abt... Muz call u to discuss liao... " +ham,"Hmmm... Guess we can go 4 kb n power yoga... Haha, dunno we can tahan power yoga anot... Thk got lo oso, forgot liao..." +ham,Hmmm...k...but i want to change the field quickly da:-)i wanna get system administrator or network administrator.. +spam,HMV BONUS SPECIAL 500 pounds of genuine HMV vouchers to be won. Just answer 4 easy questions. Play Now! Send HMV to 86688 More info:www.100percent-real.com +spam,HMV BONUS SPECIAL 500 pounds of genuine HMV vouchers to be won. Just answer 4 easy questions. Play Now! Send HMV to 86688 More info:www.100percent-real.com +spam,HMV BONUS SPECIAL 500 pounds of genuine HMV vouchers to be won. Just answer 4 easy questions. Play Now! Send HMV to 86688 More info:www.100percent-real.com +ham,Ho ho - big belly laugh! See ya tomo +ham,Home so we can always chat +spam,Hope you enjoyed your new content. text stop to 61610 to unsubscribe. help:08712400602450p Provided by tones2you.co.uk +spam,"HOT LIVE FANTASIES call now 08707500020 Just 20p per min NTT Ltd, PO Box 1327 Croydon CR9 5WB 0870 is a national rate call" +spam,"HOT LIVE FANTASIES call now 08707509020 Just 20p per min NTT Ltd, PO Box 1327 Croydon CR9 5WB 0870 is a national rate call" +spam,"HOT LIVE FANTASIES call now 08707509020 Just 20p per min NTT Ltd, PO Box 1327 Croydon CR9 5WB 0870 is a national rate call" +spam,"HOT LIVE FANTASIES call now 08707509020 Just 20p per min NTT Ltd, PO Box 1327 Croydon CR9 5WB 0870..k" +spam,"HOT LIVE FANTASIES call now 08707509020 Just 20p per min NTT Ltd, PO Box 1327 Croydon CR9 5WB 0870..k" +spam,"Hottest pics straight to your phone!! See me getting Wet and Wanting, just for you xx Text PICS to 89555 now! txt costs 150p textoperator g696ga 18 XxX" +spam,How about getting in touch with folks waiting for company? Just txt back your NAME and AGE to opt in! Enjoy the community (150p/SMS) +ham,How are you doing? Hope you've settled in for the new school year. Just wishin you a gr8 day +spam,How come it takes so little time for a child who is afraid of the dark to become a teenager who wants to stay out all night? +ham,How long does applebees fucking take +ham,"How long has it been since you screamed, princess?" +ham,How many licks does it take to get to the center of a tootsie pop? +ham,How much r ü willing to pay? +ham,How would my ip address test that considering my computer isn't a minecraft server +spam,http//tms. widelive.com/index. wml?id=820554ad0a1705572711&first=true¡C C Ringtone¡ +ham,Huh so early.. Then ü having dinner outside izzit? +ham,Huh so late... Fr dinner? +spam,"Hungry gay guys feeling hungry and up 4 it, now. Call 08718730555 just 10p/min. To stop texts call 08712460324 (10p/min)" +ham,"Hurry up, I've been weed-deficient for like three days" +ham,Hurt me... Tease me... Make me cry... But in the end of my life when i die plz keep one rose on my grave and say STUPID I MISS U.. HAVE A NICE DAY BSLVYL +ham,I accidentally deleted the message. Resend please. +ham,I am going to sao mu today. Will be done only at 12 +ham,I am great princess! What are you thinking about me? :) +ham,I am great! How are you? +spam,I am hot n horny and willing I live local to you - text a reply to hear strt back from me 150p per msg Netcollex LtdHelpDesk: 02085076972 reply Stop to end +ham,I am in office:)whats the matter..msg me now.i will call you at break:). +ham,"I am in tirupur da, once you started from office call me." +ham,"I am real, baby! I want to bring out your inner tigress..." +ham,I am taking half day leave bec i am not well +ham,I am waiting machan. Call me once you free. +ham,I asked you to call him now ok +ham,I borrow ur bag ok. +ham,"I call you later, don't have network. If urgnt, sms me." +ham,I called and said all to him:)then he have to choose this future. +ham,I cant keep talking to people if am not sure i can pay them if they agree to price. So pls tell me what you want to really buy and how much you are willing to pay +ham,I cant pick the phone right now. Pls send a message +ham,I cant pick the phone right now. Pls send a message +ham,I come n pick ü up... Come out immediately aft ur lesson... +ham,I dled 3d its very imp +spam,I don't know u and u don't know me. Send CHAT to 86688 now and let's find each other! Only 150p/Msg rcvd. HG/Suite342/2Lands/Row/W1J6HL LDN. 18 years or over. +spam,I don't know u and u don't know me. Send CHAT to 86688 now and let's find each other! Only 150p/Msg rcvd. HG/Suite342/2Lands/Row/W1J6HL LDN. 18 years or over. +spam,I don't know u and u don't know me. Send CHAT to 86688 now and let's find each other! Only 150p/Msg rcvd. HG/Suite342/2Lands/Row/W1J6HL LDN. 18 years or over. +ham,"I dont knw pa, i just drink milk.." +ham,"I don't think I can get away for a trek that long with family in town, sorry" +ham,"I dun thk i'll quit yet... Hmmm, can go jazz ? Yogasana oso can... We can go meet em after our lessons den... " +ham,"I guess that's why you re worried. You must know that there's a way the body repairs itself. And i'm quite sure you shouldn't worry. We'll take it slow. First the tests, they will guide when your ovulation is then just relax. Nothing you've said is a reason to worry but i.ll keep on followin you up." +ham,I had askd u a question some hours before. Its answer +ham,I HAVE A DATE ON SUNDAY WITH WILL!! +ham,I have many dependents +ham,I have printed it oh. So <#> come upstairs +ham,I have to take exam with march 3 +ham,I hope you that's the result of being consistently intelligent and kind. Start asking him about practicum links and keep your ears open and all the best. ttyl +ham,I jus reached home. I go bathe first. But my sis using net tell u when she finishes k... +ham,I know but you need to get hotel now. I just got my invitation but i had to apologise. Cali is to sweet for me to come to some english bloke's weddin +ham,I know that my friend already told that. +ham,I know you are. Can you pls open the back? +ham,I know! Grumpy old people. My mom was like you better not be lying. Then again I am always the one to play jokes... +ham,I like to talk pa but am not able to. I dont know y. +ham,I like you peoples very much:) but am very shy pa. +ham,I love to give massages. I use lots of baby oil... What is your fave position? +ham,I luv u soo much u donÂ’t understand how special u r 2 me ring u 2morrow luv u xxx +ham,"I met you as a stranger and choose you as my friend. As long as the world stands, our friendship never ends. Lets be Friends forever!!! Gud nitz..." +ham,I only haf msn. It's yijue@hotmail.com +ham,I place all ur points on e cultures module already. +ham,I plane to give on this month end. +ham,"I promise to take good care of you, princess. I have to run now. Please send pics when you get a chance. Ttyl!" +ham,I see a cup of coffee animation +ham,I see the letter B on my car +ham,i see. When we finish we have loads of loans to pay +ham,I sent you <#> bucks +ham,I take it the post has come then! You must have 1000s of texts now! Happy reading. My one from wiv hello caroline at the end is my favourite. Bless him +ham,I taught that Ranjith sir called me. So only i sms like that. Becaus hes verifying about project. Prabu told today so only pa dont mistake me.. +ham,I think i've fixed it can you send a test message? +spam,"I want some cock! My hubby's away, I need a real man 2 satisfy me. Txt WIFE to 89938 for no strings action. (Txt STOP 2 end, txt rec £1.50ea. OTBox 731 LA1 7WS. )" +ham,I wanted to ask ü to wait 4 me to finish lect. Cos my lect finishes in an hour anyway. +ham,I wil be there with in <#> minutes. Got any space +ham,I will spoil you in bed as well :) +ham,I wnt to buy a BMW car urgently..its vry urgent.but hv a shortage of <#> Lacs.there is no source to arng dis amt. <#> lacs..thats my prob +ham,I wont get concentration dear you know you are my mind and everything :-) +ham,I‘ll have a look at the frying pan in case it‘s cheap or a book perhaps. No that‘s silly a frying pan isn‘t likely to be a book +ham,I‘m going to try for 2 months ha ha only joking +ham,I‘m parked next to a MINI!!!! When are you coming in today do you think? +spam,I'd like to tell you my deepest darkest fantasies. Call me 09094646631 just 60p/min. To stop texts call 08712460324 (nat rate) +ham,"I'd say that's a good sign but, well, you know my track record at reading women" +ham,"idc get over here, you are not weaseling your way out of this shit twice in a row" +ham,If u sending her home first it's ok lor. I'm not ready yet. +ham,If we win its really no 1 side for long time. +spam,"If you don't, your prize will go to another customer. T&C at www.t-c.biz 18+ 150p/min Polo Ltd Suite 373 London W1J 6HL Please call back if busy" +spam,"If you don't, your prize will go to another customer. T&C at www.t-c.biz 18+ 150p/min Polo Ltd Suite 373 London W1J 6HL Please call back if busy " +ham,If you're not in my car in an hour and a half I'm going apeshit +ham,I'll be late... +ham,"Ill call u 2mrw at ninish, with my address that icky American freek wont stop callin me 2 bad Jen k eh?" +ham,I'll text you when I drop x off +ham,"I'm an actor. When i work, i work in the evening and sleep late. Since i'm unemployed at the moment, i ALWAYS sleep late. When you're unemployed, every day is saturday." +ham,"I'm back & we're packing the car now, I'll let you know if there's room" +ham,"I'm back, lemme know when you're ready" +ham,I'm going for bath will msg you next <#> min.. +ham,I'm going out to buy mum's present ar. +ham,"I'm gonna be home soon and i don't want to talk about this stuff anymore tonight, k? I've cried enough today." +ham,I'm gonna say no. Sorry. I would but as normal am starting to panic about time. Sorry again! Are you seeing on Tuesday? +ham,I'm home. +ham,"I'm in a meeting, call me later at" +ham,I'm leaving my house now... +ham,"I'm nt goin, got somethin on, unless they meetin 4 dinner lor... Haha, i wonder who will go tis time..." +ham,I'm ok wif it cos i like 2 try new things. But i scared u dun like mah. Cos u said not too loud. +ham,I'm reading the text i just sent you. Its meant to be a joke. So read it in that light +ham,I'm really not up to it still tonight babe +ham,I'm so in love with you. I'm excited each day i spend with you. You make me so happy. +ham,I'm sorry. I've joined the league of people that dont keep in touch. You mean a great deal to me. You have been a friend at all times even at great personal cost. Do have a great week.| +ham,I'm still looking for a car to buy. And have not gone 4the driving test yet. +ham,"I'm tired of arguing with you about this week after week. Do what you want and from now on, i'll do the same." +ham,"Imagine you finally get to sink into that bath after I have put you through your paces, maybe even having you eat me for a while before I left ... But also imagine the feel of that cage on your cock surrounded by the bath water, reminding you always who owns you ... Enjoy, my cuck" +spam,important information 4 orange user . today is your lucky day!2find out why log onto http://www.urawinner.com THERE'S A FANTASTIC SURPRISE AWAITING YOU! +spam,important information 4 orange user 0789xxxxxxx. today is your lucky day!2find out why log onto http://www.urawinner.com THERE'S A FANTASTIC SURPRISE AWAITING YOU! +spam,IMPORTANT INFORMATION 4 ORANGE USER 0796XXXXXX. TODAY IS UR LUCKY DAY!2 FIND OUT WHY LOG ONTO http://www.urawinner.com THERE'S A FANTASTIC PRIZEAWAITING YOU! +spam,IMPORTANT MESSAGE. This is a final contact attempt. You have important messages waiting out our customer claims dept. Expires 13/4/04. Call 08717507382 NOW! +spam,"In The Simpsons Movie released in July 2007 name the band that died at the start of the film? A-Green Day, B-Blue Day, C-Red Day. (Send A, B or C)" +ham,In work now. Going have in few min. +spam,INTERFLORA - “It's not too late to order Interflora flowers for christmas call 0800 505060 to place your order before Midnight tomorrow. +ham,Is that seriously how you spell his name? +ham,Is there a reason we've not spoken this year? Anyways have a great week and all the best in your exam +ham,Is xy going 4 e lunch? +ham,is your hamster dead? Hey so tmr i meet you at 1pm orchard mrt? +ham,It didnt work again oh. Ok goodnight then. I.ll fix and have it ready by the time you wake up. You are very dearly missed have a good night sleep. +ham,It does it on its own. Most of the time it fixes my spelling. But sometimes it gets a completely diff word. Go figure +ham,"It doesnt make sense to take it there unless its free. If you need to know more, wikipedia.com" +ham,It just seems like weird timing that the night that all you and g want is for me to come smoke is the same day as when a shitstorm is attributed to me always coming over and making everyone smoke +spam,it to 80488. Your 500 free text messages are valid until 31 December 2005. +ham,It took Mr owl 3 licks +ham,It will stop on itself. I however suggest she stays with someone that will be able to give ors for every stool. +ham,Its a part of checking IQ +ham,Its a valentine game. . . Send dis msg to all ur friends. .. If 5 answers r d same then someone really loves u. Ques- which colour suits me the best?rply me +ham,"It's fine, imma get a drink or somethin. Want me to come find you?" +ham,Its going good...no problem..but still need little experience to understand american customer voice... +ham,Its not the same here. Still looking for a job. How much do Ta's earn there. +ham,it's really getting me down just hanging around. +ham,I've been searching for the right words to thank you for this breather. I promise i wont take your help for granted and will fulfil my promise. You have been wonderful and a blessing at all times. +ham,"I've got <#> , any way I could pick up?" +ham,"I've not called you in a while. This is hoping it was l8r malaria and that you know that we miss you guys. I miss Bani big, so pls give her my love especially. Have a great day." +spam,Jamster! To get your free wallpaper text HEART to 88888 now! T&C apply. 16 only. Need Help? Call 08701213186. +spam,"January Male Sale! Hot Gay chat now cheaper, call 08709222922. National rate from 1.5p/min cheap to 7.8p/min peak! To stop texts call 08712460324 (10p/min)" +ham,Jay says that you're a double-faggot +spam,Join the UK's horniest Dogging service and u can have sex 2nite!. Just sign up and follow the instructions. Txt ENTRY to 69888 now! Nyt.EC2A.3LP.msg@150p +ham,Jos ask if u wana meet up? +ham,Just checking in on you. Really do miss seeing Jeremiah. Do have a great month +ham,Just forced myself to eat a slice. I'm really not hungry tho. This sucks. Mark is getting worried. He knows I'm sick when I turn down pizza. Lol +ham,Just got up. have to be out of the room very soon. …. i hadn't put the clocks back til at 8 i shouted at everyone to get up and then realised it was 7. wahay. another hour in bed. +ham,Just sent it. So what type of food do you like? +ham,Just sleeping..and surfing +ham,Just sleeping..and surfing +ham,"Just so that you know,yetunde hasn't sent money yet. I just sent her a text not to bother sending. So its over, you dont have to involve yourself in anything. I shouldn't have imposed anything on you in the first place so for that, i apologise." +ham,K fyi x has a ride early tomorrow morning but he's crashing at our place tonight +ham,K I'll be there before 4. +ham,K tell me anything about you. +ham,"K, can I pick up another 8th when you're done?" +ham,"K, I might come by tonight then if my class lets out early" +ham,"K, text me when you're on the way" +ham,K. Did you call me just now ah? +ham,K..i deleted my contact that why? +ham,K..k:)how much does it cost? +ham,K..k:)where are you?how did you performed? +ham,K..u also dont msg or reply to his msg.. +ham,K.k:)advance happy pongal. +ham,K.k:)apo k.good movie. +ham,K.k:)when are you going? +ham,K:)k:)good:)study well. +ham,K:)k:)what are detail you want to transfer?acc no enough? +ham,Kallis wont bat in 2nd innings. +ham,"Kate jackson rec center before 7ish, right?" +ham,Keep my payasam there if rinu brings +ham,Keep yourself safe for me because I need you and I miss you already and I envy everyone that see's you in real life +spam,Kit Strip - you have been billed 150p. Netcollex Ltd. PO Box 1013 IG11 OJA +spam,Knock Knock Txt whose there to 80082 to enter r weekly draw 4 a £250 gift voucher 4 a store of yr choice. T&Cs www.tkls.com age16 to stoptxtstop£1.50/week +spam,Last chance 2 claim ur £150 worth of discount vouchers-Text YES to 85023 now!SavaMob-member offers mobile T Cs 08717898035. £3.00 Sub. 16 . Remove txt X or STOP +spam,"Last Chance! Claim ur £150 worth of discount vouchers today! Text SHOP to 85023 now! SavaMob, offers mobile! T Cs SavaMob POBOX84, M263UZ. £3.00 Sub. 16" +spam,"Last Chance! Claim ur £150 worth of discount vouchers today! Text SHOP to 85023 now! SavaMob, offers mobile! T Cs SavaMob POBOX84, M263UZ. £3.00 Sub. 16" +spam,"Latest News! Police station toilet stolen, cops have nothing to go on!" +spam,"Latest Nokia Mobile or iPOD MP3 Player +£400 proze GUARANTEED! Reply with: WIN to 83355 now! Norcorp Ltd.£1,50/Mtmsgrcvd18+" +ham,Leave it de:-). Start Prepare for next:-).. +ham,Leaving to qatar tonite in search of an opportunity.all went fast.pls add me in ur prayers dear.Rakhesh +ham,Let me know when you've got the money so carlos can make the call +ham,Let there be snow. Let there be snow. This kind of weather brings ppl together so friendships can grow. +spam,LIFE has never been this much fun and great until you came in. You made it truly special for me. I won't forget you! enjoy @ one gbp/sms +ham,"Life is more strict than teacher... Bcoz Teacher teaches lesson & then conducts exam, But Life first conducts Exam & then teaches Lessons. Happy morning. . ." +spam,"Loan for any purpose £500 - £75,000. Homeowners + Tenants welcome. Have you been previously refused? We can still help. Call Free 0800 1956669 or text back 'help'" +spam,"Loan for any purpose £500 - £75,000. Homeowners + Tenants welcome. Have you been previously refused? We can still help. Call Free 0800 1956669 or text back 'help'" +spam,"Loan for any purpose £500 - £75,000. Homeowners + Tenants welcome. Have you been previously refused? We can still help. Call Free 0800 1956669 or text back 'help'" +spam,Loans for any purpose even if you have Bad Credit! Tenants Welcome. Call NoWorriesLoans.com on 08717111821 +ham,LOL ... Have you made plans for new years? +ham,Lol I know! They're so dramatic. Schools already closed for tomorrow. Apparently we can't drive in the inch of snow were supposed to get. +ham,Lol no. U can trust me. +ham,Lol ok your forgiven :) +ham,Lol yes. Our friendship is hanging on a thread cause u won't buy stuff. +ham,Lol you won't feel bad when I use her money to take you out to a steak dinner =D +ham,Lol your always so convincing. +ham,Lol! U drunkard! Just doing my hair at d moment. Yeah still up 4 tonight. Wats the plan? +ham,Lolnice. I went from a fish to ..water.? +ham,"LOOK AT AMY URE A BEAUTIFUL, INTELLIGENT WOMAN AND I LIKE U A LOT. I KNOW U DONÂ’T LIKE ME LIKE THAT SO DONÂ’T WORRY." +spam,"LookAtMe!: Thanks for your purchase of a video clip from LookAtMe!, you've been charged 35p. Think you can do better? Why not send a video in a MMSto 32323." +spam,LORD OF THE RINGS:RETURN OF THE KING in store NOW!REPLY LOTR by 2 June 4 Chance 2 WIN LOTR soundtrack CDs StdTxtRate. Reply STOP to end txts +ham,Love it! Daddy will make you scream with pleasure! I am going to slap your ass with my dick! +ham,Love you aathi..love u lot.. +spam,lyricalladie(21/F) is inviting you to be her friend. Reply YES-910 or NO-910. See her: www.SMS.ac/u/hmmross STOP? Send STOP FRND to 62468 +ham,Macha dont feel upset.i can assume your mindset.believe me one evening with me and i have some wonderful plans for both of us.LET LIFE BEGIN AGAIN.call me anytime +ham,MAKE SURE ALEX KNOWS HIS BIRTHDAY IS OVER IN FIFTEEN MINUTES AS FAR AS YOU'RE CONCERNED +spam,Married local women looking for discreet action now! 5 real matches instantly to your phone. Text MATCH to 69969 Msg cost 150p 2 stop txt stop BCMSFWC1N3XX +spam,Marvel Mobile Play the official Ultimate Spider-man game (£4.50) on ur mobile right now. Text SPIDER to 83338 for the game & we ll send u a FREE 8Ball wallpaper +ham,Maybe i could get book out tomo then return it immediately ..? Or something. +ham,"Maybe westshore or hyde park village, the place near my house?" +ham,Maybe?! Say hi to and find out if got his card. Great escape or wetherspoons? +ham,Me n him so funny... +ham,Meanwhile in the shit suite: xavier decided to give us <#> seconds of warning that samantha was coming over and is playing jay's guitar to impress her or some shit. Also I don't think doug realizes I don't live here anymore +ham,Meet after lunch la... +ham,meet you in corporation st outside gap … you can see how my mind is working! +ham,Men like shorter ladies. Gaze up into his eyes. +ham,"Merry Christmas to you too babe, i love ya *kisses*" +spam,Message Important information for O2 user. Today is your lucky day! 2 find out why log onto http://www.urawinner.com there is a fantastic surprise awaiting you +ham,Message:some text missing* Sender:Name Missing* *Number Missing *Sent:Date missing *Missing U a lot thats y everything is missing sent via fullonsms.com +spam,"Mila, age23, blonde, new in UK. I look sex with UK guys. if u like fun with me. Text MTALK to 69866.18 . 30pp/txt 1st 5free. £1.50 increments. Help08718728876" +spam,"Mila, age23, blonde, new in UK. I look sex with UK guys. if u like fun with me. Text MTALK to 69866.18 . 30pp/txt 1st 5free. £1.50 increments. Help08718728876" +ham,Mind blastin.. No more Tsunamis will occur from now on.. Rajnikant stopped swimming in Indian Ocean..:-D +spam,Missed call alert. These numbers called but left no message. 07008009200 +ham,Missed your call cause I was yelling at scrappy. Miss u. Can't wait for u to come home. I'm so lonely today. +ham,Mm that time you dont like fun +ham,Mmm so yummy babe ... Nice jolt to the suzy +spam,Mobile Club: Choose any of the top quality items for your mobile. 7cfca1a +spam,Moby Pub Quiz.Win a £100 High Street prize if u know who the new Duchess of Cornwall will be? Txt her first name to 82277.unsub STOP £1.50 008704050406 SP +spam,Moby Pub Quiz.Win a £100 High Street prize if u know who the new Duchess of Cornwall will be? Txt her first name to 82277.unsub STOP £1.50 008704050406 SP Arrow +spam,Money i have won wining number 946 wot do i do next +spam,money!!! you r a lucky winner ! 2 claim your prize text money 2 88600 over £1million to give away ! ppt150x3+normal text rate box403 w1t1jy +spam,Monthly password for wap. mobsi.com is 391784. Use your wap phone not PC. +spam,More people are dogging in your area now. Call 09090204448 and join like minded guys. Why not arrange 1 yourself. There's 1 this evening. A£1.50 minAPN LS278BB +ham,Morning only i can ok. +ham,Mum ask ü to buy food home... +ham,my ex-wife was not able to have kids. Do you want kids one day? +ham,"My life Means a lot to me, Not because I love my life, But because I love the people in my life, The world calls them friends, I call them my World:-).. Ge:-).." +ham,MY NO. IN LUTON 0125698789 RING ME IF UR AROUND! H* +ham,My sister cleared two round in birla soft yesterday. +ham,"My sister in law, hope you are having a great month. Just saying hey. Abiola" +ham,My stomach has been thru so much trauma I swear I just can't eat. I better lose weight. +ham,"Nah can't help you there, I've never had an iphone" +ham,"Nah I don't think he goes to usf, he lives around here though" +ham,"Nah it's straight, if you can just bring bud or drinks or something that's actually a little more useful than straight cash" +spam,Natalie (20/F) is inviting you to be her friend. Reply YES-165 or NO-165 See her: www.SMS.ac/u/natalie2k9 STOP? Send STOP FRND to 62468 +spam,Natalja (25/F) is inviting you to be her friend. Reply YES-440 or NO-440 See her: www.SMS.ac/u/nat27081980 STOP? Send STOP FRND to 62468 +spam,Natalja (25/F) is inviting you to be her friend. Reply YES-440 or NO-440 See her: www.SMS.ac/u/nat27081980 STOP? Send STOP FRND to 62468 +ham,Need a coffee run tomo?Can't believe it's that time of week already +spam,network operator. The service is free. For T & C's visit 80488.biz +ham,Neva mind it's ok.. +ham,New car and house for my parents.:)i have only new job in hand:) +spam,"New Mobiles from 2004, MUST GO! Txt: NOKIA to No: 89545 & collect yours today! From ONLY £1. www.4-tc.biz 2optout 087187262701.50gbp/mtmsg18 TXTAUCTION." +spam,New TEXTBUDDY Chat 2 horny guys in ur area 4 just 25p Free 2 receive Search postcode or at gaytextbuddy.com. TXT ONE name to 89693 +spam,New TEXTBUDDY Chat 2 horny guys in ur area 4 just 25p Free 2 receive Search postcode or at gaytextbuddy.com. TXT ONE name to 89693. 08715500022 rpl Stop 2 cnl +ham,"New Theory: Argument wins d SITUATION, but loses the PERSON. So dont argue with ur friends just.. . . . kick them & say, I'm always correct.!" +spam,"New Tones This week include: 1)McFly-All Ab.., 2) Sara Jorge-Shock.. 3) Will Smith-Switch.. To order follow instructions on next message" +ham,Nice line said by a broken heart- Plz don't cum 1 more times infront of me... Other wise once again I ll trust U... Good 9t:) +ham,"Night has ended for another day, morning has come in a special way. May you smile like the sunny rays and leaves your worries at the blue blue bay." +spam,No 1 POLYPHONIC tone 4 ur mob every week! Just txt PT2 to 87575. 1st Tone FREE ! so get txtin now and tell ur friends. 150p/tone. 16 reply HL 4info +spam,No 1 POLYPHONIC tone 4 ur mob every week! Just txt PT2 to 87575. 1st Tone FREE ! so get txtin now and tell ur friends. 150p/tone. 16 reply HL 4info +ham,No calls..messages..missed calls +ham,No calls..messages..missed calls +ham,No da if you run that it activate the full version da. +ham,No he didn't. Spring is coming early yay! +ham,No it's waiting in e car dat's bored wat. Cos wait outside got nothing 2 do. At home can do my stuff or watch tv wat. +ham,No no. I will check all rooms befor activities +ham,No objection. My bf not coming. +ham,No prob. I will send to your email. +ham,No problem. How are you doing? +spam,No. 1 Nokia Tone 4 ur mob every week! Just txt NOK to 87021. 1st Tone FREE ! so get txtin now and tell ur friends. 150p/tone. 16 reply HL 4info +spam,No. 1 Nokia Tone 4 ur mob every week! Just txt NOK to 87021. 1st Tone FREE ! so get txtin now and tell ur friends. 150p/tone. 16 reply HL 4info +ham,No..jst change tat only.. +ham,None of that's happening til you get here though +ham,Nope i waiting in sch 4 daddy... +ham,Nope... Think i will go for it on monday... Sorry i replied so late +ham,Not getting anywhere with this damn job hunting over here! +spam,Not heard from U4 a while. Call 4 rude chat private line 01223585334 to cum. Wan 2C pics of me gettin shagged then text PIX to 8552. 2End send STOP 8552 SAM xxx +spam,Not heard from U4 a while. Call 4 rude chat private line 01223585334 to cum. Wan 2C pics of me gettin shagged then text PIX to 8552. 2End send STOP 8552 SAM xxx +spam,Not heard from U4 a while. Call me now am here all night with just my knickers on. Make me beg for it like U did last time 01223585236 XX Luv Nikiyu4.net +ham,"Not really dude, have no friends i'm afraid :(" +ham,"Not sure yet, still trying to get a hold of him" +ham,Nothing but we jus tot u would ask cos u ba gua... But we went mt faber yest... Yest jus went out already mah so today not going out... Jus call lor... +ham,"Nothing. I meant that once the money enters your account here, the bank will remove its flat rate. Someone transfered <#> to my account and <#> dollars got removed. So the banks differ and charges also differ.be sure you trust the 9ja person you are sending account details to cos..." +ham,O. Well uv causes mutations. Sunscreen is like essential thesedays +ham,Of cos can lar i'm not so ba dao ok... 1 pm lor... Y u never ask where we go ah... I said u would ask on fri but he said u will ask today... +ham,Oh and by the way you do have more food in your fridge! Want to go out for a meal tonight? +ham,Oh is it? Send me the address +ham,Oh k...i'm watching here:) +spam,"Oh my god! I've found your number again! I'm so glad, text me back xafter this msgs cst std ntwk chg £1.50" +ham,Oh ok no prob.. +ham,Oh that was a forwarded message. I thought you send that to me +ham,Oic... I saw him too but i tot he din c me... I found a group liao... +ham,Ok anyway no need to change with what you said +ham,Ok give me 5 minutes I think I see her. BTW you're my alibi. You were cutting my hair the whole time. +ham,Ok i am on the way to home hi hi +ham,Ok i am on the way to railway +ham,Ok i msg u b4 i leave my house. +ham,Ok i will tell her to stay out. Yeah its been tough but we are optimistic things will improve this month. +ham,Ok I'm gonna head up to usf in like fifteen minutes +ham,Ok lar i double check wif da hair dresser already he said wun cut v short. He said will cut until i look nice. +ham,Ok lar... Joking wif u oni... +ham,Ok no prob. Take ur time. +ham,Ok that's great thanx a lot. +ham,Ok. Every night take a warm bath drink a cup of milk and you'll see a work of magic. You still need to loose weight. Just so that you know +ham,ok. I am a gentleman and will treat you with dignity and respect. +ham,Ok. I asked for money how far +ham,Ok. She'll be ok. I guess +ham,Ok. There may be a free gym about. +ham,Ok.. +ham,Ok... Ur typical reply... +ham,Okay name ur price as long as its legal! Wen can I pick them up? Y u ave x ams xx +ham,"Okay. No no, just shining on. That was meant to be signing, but that sounds better." +ham,Okie... +ham,"Okies... I'll go yan jiu too... We can skip ard oso, go cine den go mrt one, blah blah blah... " +spam,okmail: Dear Dave this is your final notice to collect your 4* Tenerife Holiday or #5000 CASH award! Call 09061743806 from landline. TCs SAE Box326 CW25WX 150ppm +ham,Omg I want to scream. I weighed myself and I lost more weight! Woohoo! +ham,On the road so cant txt +ham,One small prestige problem now. +ham,Oooh bed ridden ey? What are YOU thinking of? +ham,"Oops, I'll let you know when my roommate's done" +ham,Oops. 4 got that bit. +ham,Or ill be a little closer like at the bus stop on the same street +ham,Or maybe my fat fingers just press all these buttons and it doesn't know what to do. +spam,"Orange brings you ringtones from all time Chart Heroes, with a free hit each week! Go to Ringtones & Pics on wap. To stop receiving these tips reply STOP." +spam,"Orange customer, you may now claim your FREE CAMERA PHONE upgrade for your loyalty. Call now on 0207 153 9996. Offer ends 14thMarch. T&C's apply. Opt-out availa" +spam,"ou are guaranteed the latest Nokia Phone, a 40GB iPod MP3 player or a £500 prize! Txt word: COLLECT to No: 83355! IBHltd LdnW15H 150p/Mtmsgrcvd18" +spam,Our brand new mobile music service is now live. The free music player will arrive shortly. Just install on your phone to browse content from the top artists. +spam,"Our dating service has been asked 2 contact U by someone shy! CALL 09058091870 NOW all will be revealed. POBox84, M26 3UZ 150p" +spam,"our mobile number has won £5000, to claim calls us back or ring the claims hot line on 09050005321." +ham,Our Prashanthettan's mother passed away last night. pray for her and family. +spam,Our records indicate u maybe entitled to 5000 pounds in compensation for the Accident you had. To claim 4 free reply with CLAIM to this msg. 2 stop txt STOP +spam,Panasonic & BluetoothHdset FREE. Nokia FREE. Motorola FREE & DoubleMins & DoubleTxt on Orange contract. Call MobileUpd8 on 08000839402 or call 2optout +spam,"pdate_Now - Double mins and 1000 txts on Orange tariffs. Latest Motorola, SonyEricsson & Nokia & Bluetooth FREE! Call MobileUpd8 on 08000839402 or call2optout/!YHL" +ham,Pete can you please ring meive hardly gotany credit +ham,Petey boy whereare you me and all your friendsare in theKingshead come down if you canlove Nic +spam,Phony £350 award - Todays Voda numbers ending XXXX are selected to receive a £350 award. If you have a match please call 08712300220 quoting claim code 3100 standard rates app +ham,Pick you up bout 7.30ish? What time are and that going? +ham,"Piggy, r u awake? I bet u're still sleeping. I'm going 4 lunch now..." +spam,Please CALL 08712402578 immediately as there is an urgent message waiting for you +spam,Please CALL 08712402779 immediately as there is an urgent message waiting for you +spam,Please CALL 08712402902 immediately as there is an urgent message waiting for you. +spam,Please CALL 08712402972 immediately as there is an urgent message waiting for you +spam,Please call Amanda with regard to renewing or upgrading your current T-Mobile handset free of charge. Offer ends today. Tel 0845 021 3680 subject to T's and C's +spam,Please call our customer service representative on 0800 169 6031 between 10am-9pm as you have WON a guaranteed £1000 cash or £5000 prize! +spam,Please call our customer service representative on 0800 169 6031 between 10am-9pm as you have WON a guaranteed £1000 cash or £5000 prize! +spam,Please call our customer service representative on FREEPHONE 0808 145 4742 between 9am-11pm as you have WON a guaranteed £1000 cash or £5000 prize! +spam,Please call our customer service representative on FREEPHONE 0808 145 4742 between 9am-11pm as you have WON a guaranteed £1000 cash or £5000 prize! +spam,Please call our customer service representative on FREEPHONE 0808 145 4742 between 9am-11pm as you have WON a guaranteed £1000 cash or £5000 prize! +spam,Please call our customer service representative on FREEPHONE 0808 145 4742 between 9am-11pm as you have WON a guaranteed £1000 cash or £5000 prize! +ham,Please dont say like that. Hi hi hi +ham,Please don't text me anymore. I have nothing else to say. +ham,PLEASSSSSSSEEEEEE TEL ME V AVENT DONE SPORTSx +ham,Pls go ahead with watts. I just wanted to be sure. Do have a great weekend. Abiola +ham,"Pls send me a comprehensive mail about who i'm paying, when and how much." +spam,-PLS STOP bootydelious (32/F) is inviting you to be her friend. Reply YES-434 or NO-434 See her: www.SMS.ac/u/bootydelious STOP? Send STOP FRND to 62468 +ham,Prabha..i'm soryda..realy..frm heart i'm sory +spam,PRIVATE! Your 2003 Account Statement for shows 800 un-redeemed S. I. M. points. Call 08715203656 Identifier Code: 42049 Expires 26/10/04 +spam,PRIVATE! Your 2003 Account Statement for 07753741225 shows 800 un-redeemed S. I. M. points. Call 08715203677 Identifier Code: 42478 Expires 24/10/04 +spam,PRIVATE! Your 2003 Account Statement for 078 +spam,PRIVATE! Your 2003 Account Statement for 07808 XXXXXX shows 800 un-redeemed S. I. M. points. Call 08719899217 Identifier Code: 41685 Expires 07/11/04 +spam,PRIVATE! Your 2003 Account Statement for 07808247860 shows 800 un-redeemed S. I. M. points. Call 08719899229 Identifier Code: 40411 Expires 06/11/04 +spam,PRIVATE! Your 2003 Account Statement for 07815296484 shows 800 un-redeemed S.I.M. points. Call 08718738001 Identifier Code 41782 Expires 18/11/04 +spam,PRIVATE! Your 2003 Account Statement for 07973788240 shows 800 un-redeemed S. I. M. points. Call 08715203649 Identifier Code: 40533 Expires 31/10/04 +spam,PRIVATE! Your 2003 Account Statement for shows 800 un-redeemed S. I. M. points. Call 08715203652 Identifier Code: 42810 Expires 29/10/0 +spam,PRIVATE! Your 2003 Account Statement for shows 800 un-redeemed S. I. M. points. Call 08715203694 Identifier Code: 40533 Expires 31/10/04 +spam,PRIVATE! Your 2003 Account Statement for shows 800 un-redeemed S. I. M. points. Call 08718738002 Identifier Code: 48922 Expires 21/11/04 +spam,PRIVATE! Your 2003 Account Statement for shows 800 un-redeemed S. I. M. points. Call 08719899230 Identifier Code: 41685 Expires 07/11/04 +spam,PRIVATE! Your 2003 Account Statement for shows 800 un-redeemed S.I.M. points. Call 08715203685 Identifier Code:4xx26 Expires 13/10/04 +spam,PRIVATE! Your 2003 Account Statement for shows 800 un-redeemed S.I.M. points. Call 08718738001 Identifier Code: 49557 Expires 26/11/04 +spam,PRIVATE! Your 2004 Account Statement for 07742676969 shows 786 unredeemed Bonus Points. To claim call 08719180248 Identifier Code: 45239 Expires +spam,PRIVATE! Your 2004 Account Statement for 07742676969 shows 786 unredeemed Bonus Points. To claim call 08719180248 Identifier Code: 45239 Expires +spam,PRIVATE! Your 2004 Account Statement for 078498****7 shows 786 unredeemed Bonus Points. To claim call 08719180219 Identifier Code: 45239 Expires 06.05.05 +ham,"Probably gonna be here for a while, see you later tonight <)" +ham,Probably gonna swing by in a wee bit +spam,Promotion Number: 8714714 - UR awarded a City Break and could WIN a £200 Summer Shopping spree every WK. Txt STORE to 88039 . SkilGme. TsCs087147403231Winawk!Age16 £1.50perWKsub +ham,Quite late lar... Ard 12 anyway i wun b drivin... +ham,Ranjith cal drpd Deeraj and deepak 5min hold +spam,RCT' THNQ Adrian for U text. Rgds Vatian +ham,Realy sorry-i don't recognise this number and am now confused :) who r u please?! +spam,RECPT 1/3. You have ordered a Ringtone. Your order is being processed... +spam,ree entry in 2 a weekly comp for a chance to win an ipod. Txt POD to 80182 to get entry (std txt rate) T&C's apply 08452810073 for details 18+ +spam,Refused a loan? Secured or Unsecured? Can't get credit? Call free now 0800 195 6669 or text back 'help' & we will! +spam,"REMINDER FROM O2: To get 2.50 pounds free call credit and details of great offers pls reply 2 this text with your valid name, house no and postcode" +spam,Reminder: You have not downloaded the content you have already paid for. Goto http://doit. mymoby. tv/ to collect your content. +spam,Reply to win £100 weekly! What professional sport does Tiger Woods play? Send STOP to 87239 to end service +spam,Reply to win £100 weekly! Where will the 2006 FIFA World Cup be held? Send STOP to 87239 to end service +spam,Reply with your name and address and YOU WILL RECEIVE BY POST a weeks completely free accommodation at various global locations www.phb1.com ph:08700435505150p +spam,RGENT! This is the 2nd attempt to contact U!U have WON £1250 CALL 09071512433 b4 050703 T&CsBCM4235WC1N3XX. callcost 150ppm mobilesvary. max£7. 50 +spam,Ringtone Club: Get the UK singles chart on your mobile each week and choose any top quality ringtone! This message is free of charge. +spam,Ringtone Club: Gr8 new polys direct to your mobile every week ! +spam,ringtoneking 84484 +spam,"Rock yr chik. Get 100's of filthy films &XXX pics on yr phone now. rply FILTH to 69669. Saristar Ltd, E14 9YT 08701752560. 450p per 5 days. Stop2 cancel" +spam,"Romantic Paris. 2 nights, 2 flights from £79 Book now 4 next year. Call 08704439680Ts&Cs apply." +spam,ROMCAPspam Everyone around should be responding well to your presence since you are so warm and outgoing. You are bringing in a real breath of sunshine. +spam,RT-KIng Pro Video Club>> Need help? info@ringtoneking.co.uk or call 08701237397 You must be 16+ Club credits redeemable at www.ringtoneking.co.uk! Enjoy! +ham,S:)no competition for him. +ham,S:)s.nervous <#> :) +ham,"Same here, but I consider walls and bunkers and shit important just because I never play on peaceful but I guess your place is high enough that it don't matter" +ham,Same. Wana plan a trip sometme then +spam,Santa Calling! Would your little ones like a call from Santa Xmas eve? Call 09058094583 to book your time. +spam,Santa calling! Would your little ones like a call from Santa Xmas Eve? Call 09077818151 to book you time. Calls1.50ppm last 3mins 30s T&C www.santacalling.com +spam,Save money on wedding lingerie at www.bridal.petticoatdreams.co.uk Choose from a superb selection with national delivery. Brought to you by WeddingFriend +ham,"Save yourself the stress. If the person has a dorm account, just send your account details and the money will be sent to you." +ham,"see, i knew giving you a break a few times woul lead to you always wanting to miss curfew. I was gonna gibe you 'til one, but a MIDNIGHT movie is not gonna get out til after 2. You need to come home. You need to getsleep and, if anything, you need to b studdying ear training." +spam,Send a logo 2 ur lover - 2 names joined by a heart. Txt LOVE NAME1 NAME2 MOBNO eg LOVE ADAM EVE 07123456789 to 87077 Yahoo! POBox36504W45WQ TxtNO 4 no ads 150p +spam,Send a logo 2 ur lover - 2 names joined by a heart. Txt LOVE NAME1 NAME2 MOBNO eg LOVE ADAM EVE 07123456789 to 87077 Yahoo! POBox36504W45WQ TxtNO 4 no ads 150p. +ham,Send this to ur friends and receive something about ur voice..... How is my speaking expression? 1.childish 2.naughty 3.Sentiment 4.rowdy 5.ful of attitude 6.romantic 7.shy 8.Attractive 9.funny <#> .irritating <#> .lovable. reply me.. +spam,Sex up ur mobile with a FREE sexy pic of Jordan! Just text BABE to 88600. Then every wk get a sexy celeb! PocketBabe.co.uk 4 more pics. 16 £3/wk 087016248 +spam,sexy sexy cum and text me im wet and warm and ready for some porn! u up for some fun? THIS MSG IS FREE RECD MSGS 150P INC VAT 2 CANCEL TEXT STOP +spam,Sexy Singles are waiting for you! Text your AGE followed by your GENDER as wither M or F E.G.23F. For gay men text your AGE followed by a G. e.g.23G. +ham,S'fine. Anytime. All the best with it. +ham,Shall i come to get pickle +ham,"She was supposed to be but couldn't make it, she's still in town though" +ham,"Shit that is really shocking and scary, cant imagine for a second. Def up for night out. Do u think there is somewhere i could crash for night, save on taxi?" +spam,"Shop till u Drop, IS IT YOU, either 10K, 5K, £500 Cash or £100 Travel voucher, Call now, 09064011000. NTT PO Box CR01327BT fixedline Cost 150ppm mobile vary" +spam,"Shop till u Drop, IS IT YOU, either 10K, 5K, £500 Cash or £100 Travel voucher, Call now, 09064011000. NTT PO Box CR01327BT fixedline Cost 150ppm mobile vary" +spam,Show ur colours! Euro 2004 2-4-1 Offer! Get an England Flag & 3Lions tone on ur phone! Click on the following service message for info! +ham,Si si. I think ill go make those oreo truffles. +ham,Sindu got job in birla soft .. +ham,"Sir, I have been late in paying rent for the past few months and had to pay a $ <#> charge. I felt it would be inconsiderate of me to nag about something you give at great cost to yourself and that's why i didnt speak up. I however am in a recession and wont be able to pay the charge this month hence my askin well ahead of month's end. Can you please help. Thanks" +ham,"Sir, I need AXIS BANK account no and bank address." +ham,"Sir, Waiting for your mail." +ham,Siva is in hostel aha:-. +spam,"SIX chances to win CASH! From 100 to 20,000 pounds txt> CSH11 and send to 87575. Cost 150p/day, 6days, 16+ TsandCs apply Reply HL 4 info" +spam,"SIX chances to win CASH! From 100 to 20,000 pounds txt> CSH11 and send to 87575. Cost 150p/day, 6days, 16+ TsandCs apply Reply HL 4 info" +ham,Smile in Pleasure Smile in Pain Smile when trouble pours like Rain Smile when sum1 Hurts U Smile becoz SOMEONE still Loves to see u Smiling!! +spam,SMS AUCTION - A BRAND NEW Nokia 7250 is up 4 auction today! Auction is FREE 2 join & take part! Txt NOKIA to 86021 now! +spam,SMS AUCTION - A BRAND NEW Nokia 7250 is up 4 auction today! Auction is FREE 2 join & take part! Txt NOKIA to 86021 now! HG/Suite342/2Lands Row/W1J6HL +spam,SMS AUCTION You have won a Nokia 7250i. This is what you get when you win our FREE auction. To take part send Nokia to 86021 now. HG/Suite342/2Lands Row/W1JHL 16+ +spam,SMS SERVICES For your inclusive text credits pls gotto www.comuk.net login 3qxj9 unsubscribe with STOP no extra charge help 08702840625 comuk.220cm2 9AE +spam,"SMS SERVICES. for your inclusive text credits, pls goto www.comuk.net login= ***** unsubscribe with STOP. no extra charge. help:08700469649. PO BOX420. IP4 5WE" +spam,"SMS SERVICES. for your inclusive text credits, pls goto www.comuk.net login= 3qxj9 unsubscribe with STOP, no extra charge. help 08702840625.COMUK. 220-CM2 9AE" +spam,"SMS SERVICES. for your inclusive text credits, pls goto www.comuk.net login= 3qxj9 unsubscribe with STOP, no extra charge. help 08702840625.COMUK. 220-CM2 9AE" +spam,"SMS. ac Blind Date 4U!: Rodds1 is 21/m from Aberdeen, United Kingdom. Check Him out http://img. sms. ac/W/icmb3cktz8r7!-4 no Blind Dates send HIDE" +spam,"SMS. ac JSco: Energy is high, but u may not know where 2channel it. 2day ur leadership skills r strong. Psychic? Reply ANS w/question. End? Reply END JSCO" +spam,SMS. ac Sptv: The New Jersey Devils and the Detroit Red Wings play Ice Hockey. Correct or Incorrect? End? Reply END SPTV +spam,"SMS. ac sun0819 posts HELLO:""You seem cool, wanted to say hi. HI!!!"" Stop? Send STOP to 62468" +spam,"SMSSERVICES. for yourinclusive text credits, pls goto www.comuk.net login= 3qxj9 unsubscribe with STOP, no extra charge. help 08702840625.COMUK. 220-CM2 9AE" +ham,So ü pay first lar... Then when is da stock comin... +ham,"So anyways, you can just go to your gym or whatever, my love *smiles* I hope your ok and having a good day babe ... I miss you so much already" +ham,So how's scotland. Hope you are not over showing your JJC tendencies. Take care. Live the dream +ham,So there's a ring that comes with the guys costumes. It's there so they can gift their future yowifes. Hint hint +ham,So when do you wanna gym harri +ham,So why didnt you holla? +ham,Some of them told accenture is not confirm. Is it true. +spam,Someone has conacted our dating service and entered your phone because they fancy you!To find out who it is call from landline 09111030116. PoBox12n146tf15 +spam,Someone has contacted our dating service and entered your phone because they fancy you! To find out who it is call from a landline 09111032124 . PoBox12n146tf150p +spam,"Someone has contacted our dating service and entered your phone becausethey fancy you! To find out who it is call from a landline 09058098002. PoBox1, W14RG 150p" +spam,Someone U know has asked our dating service 2 contact you! Cant Guess who? CALL 09058091854 NOW all will be revealed. PO BOX385 M6 6WU +spam,Someone U know has asked our dating service 2 contact you! Cant Guess who? CALL 09058091854 NOW all will be revealed. PO BOX385 M6 6WU +spam,"Someone U know has asked our dating service 2 contact you! Cant guess who? CALL 09058095107 NOW all will be revealed. POBox 7, S3XY 150p " +spam,"Someone U know has asked our dating service 2 contact you! Cant Guess who? CALL 09058097189 NOW all will be revealed. POBox 6, LS15HB 150p " +spam,Someonone you know is trying to contact you via our dating service! To find out who it could be call from your mobile or landline 09064015307 BOX334SK38ch +ham,"Sorry battery died, yeah I'm here" +spam,Sorry I missed your call let's talk when you have the time. I'm on 07090201529 +ham,"Sorry light turned green, I meant another friend wanted <#> worth but he may not be around" +ham,"Sorry man my account's dry or I would, if you want we could trade back half or I could buy some shit with my credit card" +ham,Sorry me going home first... Daddy come fetch ü later... +ham,"Sorry my roommates took forever, it ok if I come by now?" +ham,"Sorry that took so long, omw now" +ham,Sorry to be a pain. Is it ok if we meet another night? I spent late afternoon in casualty and that means i haven't done any of y stuff42moro and that includes all my time sheets and that. Sorry. +ham,"Sorry to trouble u again. Can buy 4d for my dad again? 1405, 1680, 1843. All 2 big 1 small, sat n sun. Thanx." +spam,Sorry! U can not unsubscribe yet. THE MOB offer package has a min term of 54 weeks> pls resubmit request after expiry. Reply THEMOB HELP 4 more info +ham,"Sorry, I guess whenever I can get a hold of my connections, maybe an hour or two? I'll text you" +ham,"Sorry, I'll call later" +ham,"Sorry, I'll call later" +ham,"Sorry, I'll call later" +ham,"Sorry, I'll call later" +ham,"Sorry, I'll call later" +ham,"Sorry, I'll call later" +ham,"Sorry, I'll call later in meeting." +ham,"Sorry, I'll call later ok bye" +ham,"Sorry, my battery died, I can come by but I'm only getting a gram for now, where's your place?" +ham,"sorry, no, have got few things to do. may be in pub later." +ham,"Sorry,in meeting I'll call later" +ham,Sounds great! Are you home now? +ham,Speaking of does he have any cash yet? +spam,"SPJanuary Male Sale! Hot Gay chat now cheaper, call 08709222922. National rate from 1.5p/min cheap to 7.8p/min peak! To stop texts call 08712460324 (10p/min)" +spam,SplashMobile: Choose from 1000s of gr8 tones each wk! This is a subscrition service with weekly tones costing 300p. U have one credit - kick back and ENJOY +spam,"Spook up your mob with a Halloween collection of a logo & pic message plus a free eerie tone, txt CARD SPOOK to 8007 zed 08701417012150p per logo/pic" +spam,"Spook up your mob with a Halloween collection of a logo & pic message plus a free eerie tone, txt CARD SPOOK to 8007 zed 08701417012150p per logo/pic " +ham,Spoons it is then okay? +spam,sports fans - get the latest sports news str* 2 ur mobile 1 wk FREE PLUS a FREE TONE Txt SPORT ON to 8007 www.getzed.co.uk 0870141701216+ norm 4txt/120p +spam,"Sppok up ur mob with a Halloween collection of nokia logo&pic message plus a FREE eerie tone, txt CARD SPOOK to 8007" +ham,Stop the story. I've told him i've returned it and he's saying i should not re order it. +spam,Summers finally here! Fancy a chat or flirt with sexy singles in yr area? To get MATCHED up just reply SUMMER now. Free 2 Join. OptOut txt STOP Help08714742804 +ham,"Sun cant come to earth but send luv as rays. cloud cant come to river but send luv as rain. I cant come to meet U, but can send my care as msg to U. Gud evng" +spam,"Sunshine Hols. To claim ur med holiday send a stamped self address envelope to Drinks on Us UK, PO Box 113, Bray, Wicklow, Eire. Quiz Starts Saturday! Unsub Stop" +spam,"Sunshine Hols. To claim ur med holiday send a stamped self address envelope to Drinks on Us UK, PO Box 113, Bray, Wicklow, Eire. Quiz Starts Saturday! Unsub Stop" +spam,Sunshine Quiz Wkly Q! Win a top Sony DVD player if u know which country Liverpool played in mid week? Txt ansr to 82277. £1.50 SP:Tyrone +spam,Sunshine Quiz Wkly Q! Win a top Sony DVD player if u know which country Liverpool played in mid week? Txt ansr to 82277. £1.50 SP:Tyrone +spam,Sunshine Quiz Wkly Q! Win a top Sony DVD player if u know which country the Algarve is in? Txt ansr to 82277. £1.50 SP:Tyrone +spam,Sunshine Quiz Wkly Q! Win a top Sony DVD player if u know which country the Algarve is in? Txt ansr to 82277. £1.50 SP:Tyrone +spam,Sunshine Quiz! Win a super Sony DVD recorder if you canname the capital of Australia? Text MQUIZ to 82277. B +ham,"sure, but make sure he knows we ain't smokin yet" +ham,"Sure, if I get an acknowledgement from you that it's astoundingly tactless and generally faggy to demand a blood oath fo" +ham,Surely result will offer:) +ham,"Sweetheart, hope you are not having that kind of day! Have one with loads of reasons to smile. Biola" +ham,"Ta-Daaaaa! I am home babe, are you still up ?" +ham,TaKe CaRE n gET WeLL sOOn +spam,Talk sexy!! Make new friends or fall in love in the worlds most discreet text dating service. Just text VIP to 83110 and see who you could meet. +ham,Talk With Yourself Atleast Once In A Day...!!! Otherwise You Will Miss Your Best FRIEND In This WORLD...!!! -Shakespeare- SHESIL <#> +spam,TBS/PERSOLVO. been chasing us since Sept for£38 definitely not paying now thanks to your information. We will ignore them. Kath. Manchester. +spam,"tddnewsletter@emc1.co.uk (More games from TheDailyDraw) Dear Helen, Dozens of Free Games - with great prizesWith.." +ham,Tell rob to mack his gf in the theater +ham,Tell them the drug dealer's getting impatient +ham,Tell them u have a headache and just want to use 1 hour of sick time. +ham,Tell where you reached +spam,tells u 2 call 09066358152 to claim £5000 prize. U have 2 enter all ur mobile & personal details @ the prompts. Careful! +ham,Tension ah?what machi?any problem? +spam,Text & meet someone sexy today. U can find a date or even flirt its up to U. Join 4 just 10p. REPLY with NAME & AGE eg Sam 25. 18 -msg recd@thirtyeight pence +spam,Text BANNEDUK to 89555 to see! cost 150p textoperator g696ga 18+ XXX +ham,Text her. If she doesnt reply let me know so i can have her log in +spam,Text PASS to 69669 to collect your polyphonic ringtones. Normal gprs charges apply only. Enjoy your tones +spam,"Text82228>> Get more ringtones, logos and games from www.txt82228.com. Questions: info@txt82228.co.uk" +ham,Thank u! +ham,Thank you baby! I cant wait to taste the real thing... +ham,"Thank You for calling.Forgot to say Happy Onam to you Sirji.I am fine here and remembered you when i met an insurance person.Meet You in Qatar Insha Allah.Rakhesh, ex Tata AIG who joined TISSCO,Tayseer." +ham,"Thank you so much. When we skyped wit kz and sura, we didnt get the pleasure of your company. Hope you are good. We've given you ultimatum oh! We are countin down to aburo. Enjoy! This is the message i sent days ago" +spam,"Thank you, winner notified by sms. Good Luck! No future marketing reply STOP to 84122 customer services 08450542832" +spam,Thanks 4 your continued support Your question this week will enter u in2 our draw 4 £100 cash. Name the NEW US President? txt ans to 80082 +ham,Thanks a lot for your wishes on my birthday. Thanks you for making my birthday truly memorable. +ham,Thanks for looking out for me. I really appreciate. +ham,Thanks for picking up the trash. +spam,Thanks for the Vote. Now sing along with the stars with Karaoke on your mobile. For a FREE link just reply with SING now. +ham,Thanks for this hope you had a good day today +ham,Thanks for yesterday sir. You have been wonderful. Hope you enjoyed the burial. MojiBiola +spam,"Thanks for your ringtone order, ref number K718. Your mobile will be charged £4.50. Should your tone not arrive please call customer services on 09065069120" +spam,"Thanks for your ringtone order, ref number R836. Your mobile will be charged £4.50. Should your tone not arrive please call customer services on 09065069154" +spam,"Thanks for your ringtone order, reference number X29. Your mobile will be charged 4.50. Should your tone not arrive please call customer services 09065989180" +spam,"Thanks for your ringtone order, reference number X49. Your mobile will be charged 4.50. Should your tone not arrive please call customer services 09065989182. From: [colour=red]text[/colour]TXTstar" +spam,"Thanks for your ringtone order, reference number X49.Your mobile will be charged 4.50. Should your tone not arrive please call customer services 09065989182" +spam,"Thanks for your Ringtone Order, Reference T91. You will be charged GBP 4 per week. You can unsubscribe at anytime by calling customer services on 09057039994" +spam,Thanks for your subscription to Ringtone UK your mobile will be charged £5/month Please confirm by replying YES or NO. If you reply NO you will not be charged +ham,Thanks love. But am i doing torch or bold. +ham,Thanx 4 e brownie it's v nice... +ham,Thanx... +ham,THANX4 TODAY CER IT WAS NICE 2 CATCH UP BUT WE AVE 2 FIND MORE TIME MORE OFTEN OH WELL TAKE CARE C U SOON.C +ham,That is wondar full flim. +ham,That means get the door +ham,"That way transport is less problematic than on sat night. By the way, if u want to ask n to join my bday, feel free. But need to know definite nos as booking on fri. " +ham,That would be great. We'll be at the Guild. Could meet on Bristol road or somewhere - will get in touch over weekend. Our plans take flight! Have a good week +ham,"Thats a bit weird, even ?- where is the do supposed to be happening? But good idea, sure they will be in pub!" +ham,Thats cool! Sometimes slow and gentle. Sonetimes rough and hard :) +ham,Thats cool. i am a gentleman and will treat you with dignity and respect. +ham,"That's very rude, you on campus?" +spam,The current leading bid is 151. To pause this auction send OUT. Customer Care: 08718726270 +ham,The evo. I just had to download flash. Jealous? +ham,The hair cream has not been shipped. +ham,The message sent is askin for <#> dollars. Shoul i pay <#> or <#> ? +ham,The wine is flowing and i'm i have nevering.. +ham,"The world is running and i am still.maybe all are feeling the same,so be it.or i have to admit,i am mad.then where is the correction?or let me call this is life.and keep running with the world,may be u r also running.lets run." +spam,"TheMob> Check out our newest selection of content, Games, Tones, Gossip, babes and sport, Keep your mobile fit and funky text WAP to 82468" +spam,"TheMob>Hit the link to get a premium Pink Panther game, the new no. 1 from Sugababes, a crazy Zebra animation or a badass Hoody wallpaper-all 4 FREE!" +spam,TheMob>Yo yo yo-Here comes a new selection of hot downloads for our members to get for FREE! Just click & open the next link sent to ur fone... +ham,Then any special there? +ham,Then mum's repent how? +ham,Then why no one talking to me +ham,Then why you not responding +ham,There are many company. Tell me the language. +ham,There generally isn't one. It's an uncountable noun - u in the dictionary. pieces of research? +ham,There is os called ubandu which will run without installing in hard disk...you can use that os to copy the important files in system and give it to repair shop.. +spam,thesmszone.com lets you send free anonymous and masked messages..im sending this message from there..do you see the potential for abuse??? +ham,They don't put that stuff on the roads to keep it from getting slippery over there? +spam,"Think ur smart ? Win £200 this week in our weekly quiz, text PLAY to 85222 now!T&Cs WinnersClub PO BOX 84, M26 3UZ. 16+. GBP1.50/week" +ham,This girl does not stay in bed. This girl doesn't need recovery time. Id rather pass out while having fun then be cooped up in bed +ham,This is hoping you enjoyed your game yesterday. Sorry i've not been in touch but pls know that you are fondly bein thot off. Have a great week. Abiola +spam,"This is the 2nd attempt to contract U, you have won this weeks top prize of either £1000 cash or £200 prize. Just call 09066361921" +spam,"This is the 2nd time we have tried 2 contact u. U have won the 750 Pound prize. 2 claim is easy, call 08712101358 NOW! Only 10p per min. BT-national-rate" +spam,"This is the 2nd time we have tried 2 contact u. U have won the 750 Pound prize. 2 claim is easy, call 08712101358 NOW! Only 10p per min. BT-national-rate" +spam,"This is the 2nd time we have tried 2 contact u. U have won the 750 Pound prize. 2 claim is easy, call 08718726970 NOW! Only 10p per min. BT-national-rate " +spam,"This is the 2nd time we have tried 2 contact u. U have won the £750 Pound prize. 2 claim is easy, call 087187272008 NOW1! Only 10p per minute. BT-national-rate." +spam,This is the 2nd time we have tried to contact u. U have won the £1450 prize to claim just call 09053750005 b4 310303. T&Cs/stop SMS 08718725756. 140ppm +spam,"This is the 2nd time we have tried to contact u. U have won the £400 prize. 2 claim is easy, just call 087104711148 NOW! Only 10p per minute. BT-national-rate" +spam,This message is brought to you by GMW Ltd. and is not connected to the +spam,This message is free. Welcome to the new & improved Sex & Dogging club! To unsubscribe from this service reply STOP. msgs@150p 18 only +spam,This message is free. Welcome to the new & improved Sex & Dogging club! To unsubscribe from this service reply STOP. msgs@150p 18+only +spam,This msg is for your mobile content order It has been resent as previous attempt failed due to network error Queries to customersqueries@netvision.uk.com +ham,This pay is <DECIMAL> lakhs:) +spam,"This weeks SavaMob member offers are now accessible. Just call 08709501522 for details! SavaMob, POBOX 139, LA3 2WU. Only £1.50/week. SavaMob - offers mobile!" +ham,Tired. I haven't slept well the past few nights. +spam,T-Mobile customer you may now claim your FREE CAMERA PHONE upgrade & a pay & go sim card for your loyalty. Call on 0845 021 3680.Offer ends 28thFeb.T&C's apply +spam,"To review and KEEP the fantastic Nokia N-Gage game deck with Club Nokia, go 2 www.cnupdates.com/newsletter. unsubscribe from alerts reply with the word OUT" +ham,"Today is ""song dedicated day.."" Which song will u dedicate for me? Send this to all ur valuable frnds but first rply me..." +ham,Today is ACCEPT DAY..U Accept me as? Brother Sister Lover Dear1 Best1 Clos1 Lvblefrnd Jstfrnd Cutefrnd Lifpartnr Belovd Swtheart Bstfrnd No rply means enemy +ham,"TODAY is Sorry day.! If ever i was angry with you, if ever i misbehaved or hurt you? plz plz JUST SLAP URSELF Bcoz, Its ur fault, I'm basically GOOD" +spam,"Today's Offer! Claim ur £150 worth of discount vouchers! Text YES to 85023 now! SavaMob, member offers mobile! T Cs 08717898035. £3.00 Sub. 16 . Unsub reply X" +spam,"Today's Offer! Claim ur £150 worth of discount vouchers! Text YES to 85023 now! SavaMob, member offers mobile! T Cs 08717898035. £3.00 Sub. 16 . Unsub reply X" +spam,Todays Voda numbers ending 1225 are selected to receive a £50award. If you have a match please call 08712300220 quoting claim code 3100 standard rates app +spam,Todays Voda numbers ending 5226 are selected to receive a ?350 award. If you hava a match please call 08712300220 quoting claim code 1131 standard rates app +spam,Todays Voda numbers ending 7548 are selected to receive a $350 award. If you have a match please call 08712300220 quoting claim code 4041 standard rates app +spam,Todays Voda numbers ending with 7634 are selected to receive a £350 reward. If you have a match please call 08712300220 quoting claim code 7684 standard rates apply. +spam,todays vodafone numbers ending with 0089(my last four digits) are selected to received a £350 award. If your number matches please call 09063442151 to claim your £350 award +spam,Todays Vodafone numbers ending with 4882 are selected to a receive a £350 award. If your number matches call 09064019014 to receive your £350 award. +spam,Todays Vodafone numbers ending with 4882 are selected to a receive a £350 award. If your number matches call 09064019014 to receive your £350 award. +ham,Tomarrow final hearing on my laptop case so i cant. +spam,Tone Club: Your subs has now expired 2 re-sub reply MONOC 4 monos or POLYC 4 polys 1 weekly @ 150p per week Txt STOP 2 stop This msg free Stream 0871212025016 +ham,Too late. I said i have the website. I didn't i have or dont have the slippers +ham,True dear..i sat to pray evening and felt so.so i sms'd you in some time... +ham,"Turns out my friends are staying for the whole show and won't be back til ~ <#> , so feel free to go ahead and smoke that $ <#> worth" +spam,"Twinks, bears, scallies, skins and jocks are calling now. Don't miss the weekend's fun. Call 08712466669 at 10p/min. 2 stop texts call 08712460324(nat rate)" +spam,Txt: CALL to No: 86888 & claim your reward of 3 hours talk time to use from your phone now! Subscribe6GBP/mnth inc 3hrs 16 stop?txtStop www.gamb.tv +spam,U 447801259231 have a secret admirer who is looking 2 make contact with U-find out who they R*reveal who thinks UR so special-call on 09058094597 +spam,U 447801259231 have a secret admirer who is looking 2 make contact with U-find out who they R*reveal who thinks UR so special-call on 09058094597 +spam,U are subscribed to the best Mobile Content Service in the UK for £3 per 10 days until you send STOP to 82324. Helpline 08706091795 +spam,U are subscribed to the best Mobile Content Service in the UK for £3 per ten days until you send STOP to 83435. Helpline 08706091795. +ham,U call me alter at 11 ok. +ham,U calling me right? Call my hand phone... +ham,U can call me now... +spam,"U can WIN £100 of Music Gift Vouchers every week starting NOW Txt the word DRAW to 87066 TsCs www.Idew.com SkillGame, 1Winaweek, age16. 150ppermessSubscription" +spam,"U can WIN £100 of Music Gift Vouchers every week starting NOW Txt the word DRAW to 87066 TsCs www.Idew.com SkillGame, 1Winaweek, age16. 150ppermessSubscription" +spam,"U can WIN £100 of Music Gift Vouchers every week starting NOW Txt the word DRAW to 87066 TsCs www.ldew.com SkillGame,1Winaweek, age16.150ppermessSubscription" +ham,U don't know how stubborn I am. I didn't even want to go to the hospital. I kept telling Mark I'm not a weak sucker. Hospitals are for weak suckers. +ham,U don't remember that old commercial? +ham,U dun say so early hor... U c already then say... +spam,U have a secret admirer who is looking 2 make contact with U-find out who they R*reveal who thinks UR so special-call on 09058094565 +spam,U have a secret admirer who is looking 2 make contact with U-find out who they R*reveal who thinks UR so special-call on 09058094594 +spam,U have a secret admirer who is looking 2 make contact with U-find out who they R*reveal who thinks UR so special-call on 09058094599 +spam,U have a secret admirer who is looking 2 make contact with U-find out who they R*reveal who thinks UR so special-call on 09058094599 +spam,U have a Secret Admirer who is looking 2 make contact with U-find out who they R*reveal who thinks UR so special-call on 09065171142-stopsms-08 +spam,U have a Secret Admirer who is looking 2 make contact with U-find out who they R*reveal who thinks UR so special-call on 09065171142-stopsms-08718727870150ppm +spam,U have a secret admirer. REVEAL who thinks U R So special. Call 09065174042. To opt out Reply REVEAL STOP. 1.50 per msg recd. Cust care 07821230901 +spam,U have a secret admirer. REVEAL who thinks U R So special. Call 09065174042. To opt out Reply REVEAL STOP. 1.50 per msg recd. Cust care 07821230901 +spam,U have won a nokia 6230 plus a free digital camera. This is what u get when u win our FREE auction. To take part send NOKIA to 83383 now. POBOX114/14TCR/W1 16 +spam,u r a winner U ave been specially selected 2 receive £1000 cash or a 4* holiday (flights inc) speak to a live operator 2 claim 0871277810710p/min (18 ) +spam,"u r subscribed 2 TEXTCOMP 250 wkly comp. 1st wk?s free question follows, subsequent wks charged@150p/msg.2 unsubscribe txt STOP 2 84128,custcare 08712405020" +ham,U reach orchard already? U wan 2 go buy tickets first? +ham,U say leh... Of course nothing happen lar. Not say v romantic jus a bit only lor. I thk e nite scenery not so nice leh. +ham,U should have made an appointment +ham,U still going to the mall? +spam,"U were outbid by simonwatson5120 on the Shinco DVD Plyr. 2 bid again, visit sms. ac/smsrewards 2 end bid notifications, reply END OUT" +spam,U’ve Bin Awarded £50 to Play 4 Instant Cash. Call 08715203028 To Claim. EVERY 9th Player Wins Min £50-£500. OptOut 08718727870 +ham,Ugh I don't wanna get out of bed. It's so warm. +ham,Ugh its been a long day. I'm exhausted. Just want to cuddle up and take a nap +ham,Umma my life and vava umma love you lot dear +ham,Ummma.will call after check in.our life will begin from qatar so pls pray very hard. +ham,Ummmmmaah Many many happy returns of d day my dear sweet heart.. HAPPY BIRTHDAY dear +ham,"Under the sea, there lays a rock. In the rock, there is an envelope. In the envelope, there is a paper. On the paper, there are 3 words... '" +ham,Unless it's a situation where YOU GO GURL would be more appropriate +spam,Update_Now - 12Mths Half Price Orange line rental: 400mins...Call MobileUpd8 on 08000839402 or call2optout=J5Q +spam,"Update_Now - Xmas Offer! Latest Motorola, SonyEricsson & Nokia & FREE Bluetooth! Double Mins & 1000 Txt on Orange. Call MobileUpd8 on 08000839402 or call2optout/F4Q=" +spam,"UpgrdCentre Orange customer, you may now claim your FREE CAMERA PHONE upgrade for your loyalty. Call now on 0207 153 9153. Offer ends 26th July. T&C's apply. Opt-out available" +ham,"Ups which is 3days also, and the shipping company that takes 2wks. The other way is usps which takes a week but when it gets to lag you may have to bribe nipost to get your stuff." +spam,UR awarded a City Break and could WIN a £200 Summer Shopping spree every WK. Txt STORE to 88039 . SkilGme. TsCs087147403231Winawk!Age16 £1.50perWKsub +spam,UR awarded a City Break and could WIN a £200 Summer Shopping spree every WK. Txt STORE to 88039.SkilGme.TsCs087147403231Winawk!Age16+£1.50perWKsub +spam,Ur balance is now £500. Ur next question is: Who sang 'Uptown Girl' in the 80's ? 2 answer txt ur ANSWER to 83600. Good luck! +spam,"Ur balance is now £600. Next question: Complete the landmark, Big, A. Bob, B. Barry or C. Ben ?. Text A, B or C to 83738. Good luck!" +spam,Ur cash-balance is currently 500 pounds - to maximize ur cash-in now send CASH to 86688 only 150p/msg. CC: 08708800282 HG/Suite342/2Lands Row/W1J6HL +spam,Ur cash-balance is currently 500 pounds - to maximize ur cash-in now send CASH to 86688 only 150p/msg. CC: 08718720201 PO BOX 114/14 TCR/W1 +spam,Ur cash-balance is currently 500 pounds - to maximize ur cash-in now send COLLECT to 83600 only 150p/msg. CC: 08718720201 PO BOX 114/14 TCR/W1 +spam,Ur cash-balance is currently 500 pounds - to maximize ur cash-in now send GO to 86688 only 150p/meg. CC: 08718720201 HG/Suite342/2lands Row/W1j6HL +spam,Ur cash-balance is currently 500 pounds - to maximize ur cash-in now send GO to 86688 only 150p/msg. CC 08718720201 HG/Suite342/2Lands Row/W1J6HL +spam,Ur cash-balance is currently 500 pounds - to maximize ur cash-in now send GO to 86688 only 150p/msg. CC: 08718720201 PO BOX 114/14 TCR/W1 +spam,UR GOING 2 BAHAMAS! CallFREEFONE 08081560665 and speak to a live operator to claim either Bahamas cruise of£2000 CASH 18+only. To opt out txt X to 07786200117 +spam,UR GOING 2 BAHAMAS! CallFREEFONE 08081560665 and speak to a live operator to claim either Bahamas cruise of£2000 CASH 18+only. To opt out txt X to 07786200117 +spam,Ur HMV Quiz cash-balance is currently £500 - to maximize ur cash-in now send HMV1 to 86688 only 150p/msg +spam,Ur ringtone service has changed! 25 Free credits! Go to club4mobiles.com to choose content now! Stop? txt CLUB STOP to 87070. 150p/wk Club4 PO Box1146 MK45 2WT +spam,Ur TONEXS subscription has been renewed and you have been charged £4.50. You can choose 10 more polys this month. www.clubzed.co.uk *BILLING MSG* +spam,"Urgent -call 09066649731from Landline. Your complimentary 4* Ibiza Holiday or £10,000 cash await collection SAE T&Cs PO BOX 434 SK3 8WP 150ppm 18+" +spam,Urgent Please call 09066612661 from landline. £5000 cash or a luxury 4* Canary Islands Holiday await collection. T&Cs SAE award. 20M12AQ. 150ppm. 16+ “ +spam,URGENT This is our 2nd attempt to contact U. Your £900 prize from YESTERDAY is still awaiting collection. To claim CALL NOW 09061702893 +spam,URGENT This is our 2nd attempt to contact U. Your £900 prize from YESTERDAY is still awaiting collection. To claim CALL NOW 09061702893. ACL03530150PM +spam,Urgent Ur £500 guaranteed award is still unclaimed! Call 09066368327 NOW closingdate04/09/02 claimcode M39M51 £1.50pmmorefrommobile2Bremoved-MobyPOBox734LS27YF +spam,"Urgent UR awarded a complimentary trip to EuroDisinc Trav, Aco&Entry41 Or £1000. To claim txt DIS to 87121 18+6*£1.50(moreFrmMob. ShrAcomOrSglSuplt)10, LS1 3AJ" +spam,"Urgent UR awarded a complimentary trip to EuroDisinc Trav, Aco&Entry41 Or £1000. To claim txt DIS to 87121 18+6*£1.50(moreFrmMob. ShrAcomOrSglSuplt)10, LS1 3AJ" +spam,"Urgent Urgent! We have 800 FREE flights to Europe to give away, call B4 10th Sept & take a friend 4 FREE. Call now to claim on 09050000555. BA128NNFWFLY150ppm" +spam,URGENT We are trying to contact you Last weekends draw shows u have won a £1000 prize GUARANTEED Call 09064017295 Claim code K52 Valid 12hrs 150p pm +spam,"Urgent! call 09061749602 from Landline. Your complimentary 4* Tenerife Holiday or £10,000 cash await collection SAE T&Cs BOX 528 HP20 1YF 150ppm 18+" +spam,"Urgent! call 09066350750 from your landline. Your complimentary 4* Ibiza Holiday or 10,000 cash await collection SAE T&Cs PO BOX 434 SK3 8WP 150 ppm 18+" +spam,"Urgent! call 09066350750 from your landline. Your complimentary 4* Ibiza Holiday or 10,000 cash await collection SAE T&Cs PO BOX 434 SK3 8WP 150 ppm 18+ " +spam,"Urgent! call 09066612661 from landline. Your complementary 4* Tenerife Holiday or £10,000 cash await collection SAE T&Cs PO Box 3 WA14 2PX 150ppm 18+ Sender: Hol Offer" +spam,"URGENT! Last weekend's draw shows that you have won £1000 cash or a Spanish holiday! CALL NOW 09050000332 to claim. T&C: RSTM, SW7 3SS. 150ppm" +spam,Urgent! Please call 09061213237 from a landline. £5000 cash or a 4* holiday await collection. T &Cs SAE PO Box 177 M227XY. 16+ +spam,Urgent! Please call 09061213237 from landline. £5000 cash or a luxury 4* Canary Islands Holiday await collection. T&Cs SAE PO Box 177. M227XY. 150ppm. 16+ +spam,Urgent! Please call 09061743810 from landline. Your ABTA complimentary 4* Tenerife Holiday or #5000 cash await collection SAE T&Cs Box 326 CW25WX 150 ppm +spam,Urgent! Please call 09061743811 from landline. Your ABTA complimentary 4* Tenerife Holiday or £5000 cash await collection SAE T&Cs Box 326 CW25WX 150ppm +spam,"Urgent! Please call 0906346330. Your ABTA complimentary 4* Spanish Holiday or £10,000 cash await collection SAE T&Cs BOX 47 PO19 2EZ 150ppm 18+" +spam,"Urgent! Please call 09066612661 from your landline, your complimentary 4* Lux Costa Del Sol holiday or £1000 CASH await collection. ppm 150 SAE T&Cs James 28, EH74RR" +spam,URGENT! This is the 2nd attempt to contact U!U have WON £1000CALL 09071512432 b4 300603t&csBCM4235WC1N3XX.callcost150ppmmobilesvary. max£7. 50 +spam,URGENT! We are trying to contact U Todays draw shows that you have won a £800 prize GUARANTEED. Call 09050000460 from land line. Claim J89. po box245c2150pm +spam,URGENT! We are trying to contact U. Todays draw shows that you have won a £2000 prize GUARANTEED. Call 09058094507 from land line. Claim 3030. Valid 12hrs only +spam,URGENT! We are trying to contact U. Todays draw shows that you have won a £2000 prize GUARANTEED. Call 09066358361 from land line. Claim Y87. Valid 12hrs only +spam,URGENT! We are trying to contact U. Todays draw shows that you have won a £800 prize GUARANTEED. Call 09050001295 from land line. Claim A21. Valid 12hrs only +spam,URGENT! We are trying to contact U. Todays draw shows that you have won a £800 prize GUARANTEED. Call 09050001808 from land line. Claim M95. Valid12hrs only +spam,URGENT! We are trying to contact U. Todays draw shows that you have won a £800 prize GUARANTEED. Call 09050001808 from land line. Claim M95. Valid12hrs only +spam,URGENT! We are trying to contact U. Todays draw shows that you have won a £800 prize GUARANTEED. Call 09050003091 from land line. Claim C52. Valid 12hrs only +spam,URGENT! We are trying to contact U. Todays draw shows that you have won a £800 prize GUARANTEED. Call 09050003091 from land line. Claim C52. Valid12hrs only +spam,URGENT! We are trying to contact you. Last weekends draw shows that you have won a £900 prize GUARANTEED. Call 09061701851. Claim code K61. Valid 12hours only +spam,URGENT! We are trying to contact you. Last weekends draw shows that you have won a £900 prize GUARANTEED. Call 09061701939. Claim code S89. Valid 12hrs only +spam,"URGENT! You have won a 1 week FREE membership in our £100,000 Prize Jackpot! Txt the word: CLAIM to No: 81010 T&C www.dbuk.net LCCLTD POBOX 4403LDNW1A7RW18" +spam,"URGENT! You have won a 1 week FREE membership in our £100,000 Prize Jackpot! Txt the word: CLAIM to No: 81010 T&C www.dbuk.net LCCLTD POBOX 4403LDNW1A7RW18" +spam,"URGENT! Your mobile No *********** WON a £2,000 Bonus Caller Prize on 02/06/03! This is the 2nd attempt to reach YOU! Call 09066362220 ASAP! BOX97N7QP, 150ppm" +spam,"URGENT! Your mobile No 077xxx WON a £2,000 Bonus Caller Prize on 02/06/03! This is the 2nd attempt to reach YOU! Call 09066362206 ASAP! BOX97N7QP, 150ppm" +spam,"URGENT! Your Mobile No 07808726822 was awarded a £2,000 Bonus Caller Prize on 02/09/03! This is our 2nd attempt to contact YOU! Call 0871-872-9758 BOX95QU" +spam,"URGENT! Your mobile No 07xxxxxxxxx won a £2,000 bonus caller prize on 02/06/03! this is the 2nd attempt to reach YOU! call 09066362231 ASAP! BOX97N7QP, 150PPM" +spam,"URGENT! Your Mobile No was awarded a £2,000 Bonus Caller Prize on 1/08/03! This is our 2nd attempt to contact YOU! Call 0871-4719-523 BOX95QU BT National Rate" +spam,"URGENT! Your Mobile No. was awarded £2000 Bonus Caller Prize on 5/9/03 This is our final try to contact U! Call from Landline 09064019788 BOX42WR29C, 150PPM" +spam,"URGENT! Your mobile number *************** WON a £2000 Bonus Caller prize on 10/06/03! This is the 2nd attempt to reach you! Call 09066368753 ASAP! Box 97N7QP, 150ppm" +spam,URGENT! Your Mobile number has been awarded a 2000 prize GUARANTEED. Call 09061790125 from landline. Claim 3030. Valid 12hrs only 150ppm +spam,URGENT! Your Mobile number has been awarded with a £2000 Bonus Caller Prize. Call 09058095201 from land line. Valid 12hrs only +spam,URGENT! Your Mobile number has been awarded with a £2000 prize GUARANTEED. Call 09058094454 from land line. Claim 3030. Valid 12hrs only +spam,URGENT! Your Mobile number has been awarded with a £2000 prize GUARANTEED. Call 09058094455 from land line. Claim 3030. Valid 12hrs only +spam,URGENT! Your Mobile number has been awarded with a £2000 prize GUARANTEED. Call 09061790121 from land line. Claim 3030. Valid 12hrs only 150ppm +spam,URGENT! Your Mobile number has been awarded with a £2000 prize GUARANTEED. Call 09061790121 from land line. Claim 3030. Valid 12hrs only 150ppm +spam,URGENT! Your Mobile number has been awarded with a £2000 prize GUARANTEED. Call 09061790126 from land line. Claim 3030. Valid 12hrs only 150ppm +spam,"URGENT! Your mobile was awarded a £1,500 Bonus Caller Prize on 27/6/03. Our final attempt 2 contact U! Call 08714714011" +spam,"URGENT!! Your 4* Costa Del Sol Holiday or £5000 await collection. Call 09050090044 Now toClaim. SAE, TC s, POBox334, Stockport, SK38xh, Cost£1.50/pm, Max10mins" +spam,"URGENT!! Your 4* Costa Del Sol Holiday or £5000 await collection. Call 09050090044 Now toClaim. SAE, TC s, POBox334, Stockport, SK38xh, Cost£1.50/pm, Max10mins" +spam,"URGENT!: Your Mobile No. was awarded a £2,000 Bonus Caller Prize on 02/09/03! This is our 2nd attempt to contact YOU! Call 0871-872-9755 BOX95QU" +spam,"URGENT, IMPORTANT INFORMATION FOR O2 USER. TODAY IS YOUR LUCKY DAY! 2 FIND OUT WHY LOG ONTO HTTP://WWW.URAWINNER.COM THERE IS A FANTASTIC SURPRISE AWAITING FOR YOU" +spam,"URGENT. Important information for 02 user. Today is your lucky day! 2 find out why , log onto http://www.urawinner.com there is a fantastic surprise awaiting you !" +ham,"Usf I guess, might as well take 1 car" +ham,Usually the person is unconscious that's in children but in adults they may just behave abnormally. I.ll call you now +spam,"U've been selected to stay in 1 of 250 top British hotels - FOR NOTHING! Holiday valued at £350! Dial 08712300220 to claim - National Rate Call. Bx526, SW73SS" +spam,Valentines Day Special! Win over £1000 in our quiz and take your partner on the trip of a lifetime! Send GO to 83600 now. 150p/msg rcvd. CustCare:08718720201 +spam,Valentines Day Special! Win over £1000 in our quiz and take your partner on the trip of a lifetime! Send GO to 83600 now. 150p/msg rcvd. CustCare:08718720201. +ham,"Wa, ur openin sentence very formal... Anyway, i'm fine too, juz tt i'm eatin too much n puttin on weight...Haha... So anythin special happened?" +ham,Wah lucky man... Then can save money... Hee... +ham,Wait <#> min.. +ham,"Wait that's still not all that clear, were you not sure about me being sarcastic or that that's why x doesn't want to live with us" +ham,"Wait, do you know if wesleys in town? I bet she does hella drugs!" +ham,Waiting for your call. +spam,wamma get laid?want real doggin locations sent direct to your mobile? join the UKs largest dogging network. txt dogs to 69696 now!nyt. ec2a. 3lp £1.50/msg. +spam,"Wan2 win a Meet+Greet with Westlife 4 U or a m8? They are currently on what tour? 1)Unbreakable, 2)Untamed, 3)Unkempt. Text 1,2 or 3 to 83049. Cost 50p +std text" +spam,"Wan2 win a Meet+Greet with Westlife 4 U or a m8? They are currently on what tour? 1)Unbreakable, 2)Untamed, 3)Unkempt. Text 1,2 or 3 to 83049. Cost 50p +std text" +spam,Wanna get laid 2nite? Want real Dogging locations sent direct to ur mobile? Join the UK's largest Dogging Network. Txt PARK to 69696 now! Nyt. ec2a. 3lp £1.50/msg +spam,Wanna have a laugh? Try CHIT-CHAT on your mobile now! Logon by txting the word: CHAT and send it to No: 8883 CM PO Box 4217 London W1A 6ZF 16+ 118p/msg rcvd +spam,Want 2 get laid tonight? Want real Dogging locations sent direct 2 ur mob? Join the UK's largest Dogging Network bt Txting GRAVEL to 69888! Nt. ec2a. 31p.msg@150p +spam,Want 2 get laid tonight? Want real Dogging locations sent direct 2 ur Mob? Join the UK's largest Dogging Network by txting MOAN to 69888Nyt. ec2a. 31p.msg@150p +spam,Want a new Video Phone? 750 anytime any network mins? Half price line rental free text for 3 months? Reply or call 08000930705 for free delivery +spam,Want explicit SEX in 30 secs? Ring 02073162414 now! Costs 20p/min +spam,Want explicit SEX in 30 secs? Ring 02073162414 now! Costs 20p/min Gsex POBOX 2667 WC1N 3XX +spam,Want the latest Video handset? 750 anytime any network mins? Half price line rental? Reply or call 08000930705 for delivery tomorrow +spam,"Want to funk up ur fone with a weekly new tone reply TONES2U 2 this text. www.ringtones.co.uk, the original n best. Tones 3GBP network operator rates apply" +spam,"Want to funk up ur fone with a weekly new tone reply TONES2U 2 this text. www.ringtones.co.uk, the original n best. Tones 3GBP network operator rates apply" +spam,Warner Village 83118 C Colin Farrell in SWAT this wkend @Warner Village & get 1 free med. Popcorn!Just show msg+ticket@kiosk.Valid 4-7/12. C t&c @kiosk. Reply SONY 4 mre film offers +ham,Was actually sleeping and still might when u call back. So a text is gr8. You rock sis. Will send u a text wen i wake. +ham,Was the farm open? +ham,Wat uniform? In where get? +ham,"Watching cartoon, listening music & at eve had to go temple & church.. What about u?" +ham,Watching telugu movie..wat abt u? +ham,Watching tv lor... +ham,"We are at grandmas. Oh dear, u still ill? I felt Shit this morning but i think i am just hungover! Another night then. We leave on sat." +spam,We currently have a message awaiting your collection. To collect your message just call 08718723815. +spam,We have new local dates in your area - Lots of new people registered in YOUR AREA. Reply DATE to start now! 18 only www.flirtparty.us REPLYS150 +spam,"We know someone who you know that fancies you. Call 09058097218 to find out who. POBox 6, LS15HB 150p" +spam,We tried to call you re your reply to our sms for a video mobile 750 mins UNLIMITED TEXT + free camcorder Reply of call 08000930705 Now +spam,We tried to call you re your reply to our sms for a video mobile 750 mins UNLIMITED TEXT free camcorder Reply or call now 08000930705 Del Thurs +spam,We tried to contact you re our offer of New Video Phone 750 anytime any network mins HALF PRICE Rental camcorder call 08000930705 or reply for delivery Wed +spam,We tried to contact you re your reply to our offer of 750 mins 150 textand a new video phone call 08002988890 now or reply for free delivery tomorrow +spam,We tried to contact you re your reply to our offer of a Video Handset? 750 anytime any networks mins? UNLIMITED TEXT? Camcorder? Reply or call 08000930705 NOW +spam,We tried to contact you re your reply to our offer of a Video Handset? 750 anytime networks mins? UNLIMITED TEXT? Camcorder? Reply or call 08000930705 NOW +spam,We tried to contact you re your reply to our offer of a Video Phone 750 anytime any network mins Half Price Line Rental Camcorder Reply or call 08000930705 +spam,we tried to contact you re your response to our offer of a new nokia fone and camcorder hit reply or call 08000930705 for delivery +spam,"Welcome to Select, an O2 service with added benefits. You can now call our specially trained advisors FREE from your mobile by dialling 402." +spam,"Welcome to UK-mobile-date this msg is FREE giving you free calling to 08719839835. Future mgs billed at 150p daily. To cancel send ""go stop"" to 89123" +spam,Welcome! Please reply with your AGE and GENDER to begin. e.g 24M +ham,"Well am officially in a philosophical hole, so if u wanna call am at home ready to be saved!" +spam,Well done ENGLAND! Get the official poly ringtone or colour flag on yer mobile! text TONE or FLAG to 84199 NOW! Opt-out txt ENG STOP. Box39822 W111WX £1.50 +spam,Well done ENGLAND! Get the official poly ringtone or colour flag on yer mobile! text TONE or FLAG to 84199 NOW! Opt-out txt ENG STOP. Box39822 W111WX £1.50 +spam,"WELL DONE! Your 4* Costa Del Sol Holiday or £5000 await collection. Call 09050090044 Now toClaim. SAE, TCs, POBox334, Stockport, SK38xh, Cost£1.50/pm, Max10mins" +spam,"WELL DONE! Your 4* Costa Del Sol Holiday or £5000 await collection. Call 09050090044 Now toClaim. SAE, TCs, POBox334, Stockport, SK38xh, Cost£1.50/pm, Max10mins" +ham,"Well done, blimey, exercise, yeah, i kinda remember wot that is, hmm. " +ham,Well i know Z will take care of me. So no worries. +ham,"Well imma definitely need to restock before thanksgiving, I'll let you know when I'm out" +ham,Well there's not a lot of things happening in Lindsay on New years *sighs* Some bars in Ptbo and the blue heron has something going +ham,"Well, i'm gonna finish my bath now. Have a good...fine night." +ham,"Wen u miss someone, the person is definitely special for u..... But if the person is so special, why to miss them, just Keep-in-touch gdeve.." +ham,"Wen ur lovable bcums angry wid u, dnt take it seriously.. Coz being angry is d most childish n true way of showing deep affection, care n luv!.. kettoda manda... Have nice day da." +ham,Were gonna go get some tacos +ham,What class of <#> reunion? +spam,What do U want for Xmas? How about 100 free text messages & a new video phone with half price line rental? Call free now on 0800 0721072 to find out more! +ham,what I meant to say is cant wait to see u again getting bored of this bridgwater banter +ham,What is important is that you prevent dehydration by giving her enough fluids +ham,What is the plural of the noun research? +ham,What is this 'hex' place you talk of? Explain! +ham,What time you coming down later? +ham,What Today-sunday..sunday is holiday..so no work.. +ham,"What will we do in the shower, baby?" +ham,What you doing?how are you? +ham,What you thinked about me. First time you saw me in class. +ham,What's the significance? +ham,Whats the staff name who is taking class for us? +ham,"What's up bruv, hope you had a great break. Do have a rewarding semester." +ham,Whatsup there. Dont u want to sleep +ham,When ü login dat time... Dad fetching ü home now? +ham,When are you going to ride your bike? +ham,When can ü come out? +ham,When did you get to the library +ham,When i have stuff to sell i.ll tell you +ham,When're you guys getting back? G said you were thinking about not staying for mcr +ham,Where are the garage keys? They aren't on the bookshelf +ham,Where are you lover ? I need you ... +ham,Where are you?when wil you reach here? +ham,Where did u go? My phone is gonna die you have to stay in here +ham,Where u been hiding stranger? +ham,Where's my boytoy? I miss you ... What happened? +ham,WHO ARE YOU SEEING? +ham,Why do you ask princess? +ham,Why don't you go tell your friend you're not sure you want to live with him because he smokes too much then spend hours begging him to come smoke +ham,Why you Dint come with us. +ham,Wife.how she knew the time of murder exactly +ham,Will do. Was exhausted on train this morning. Too much wine and pie. You sleep well too +ham,Will purchase d stuff today and mail to you. Do you have a po box number? +spam,"Will u meet ur dream partner soon? Is ur career off 2 a flyng start? 2 find out free, txt HORO followed by ur star sign, e. g. HORO ARIES" +spam,Win a £1000 cash prize or a prize worth £5000 +spam,WIN a £200 Shopping spree every WEEK Starting NOW. 2 play text STORE to 88039. SkilGme. TsCs08714740323 1Winawk! age16 £1.50perweeksub. +spam,WIN a year supply of CDs 4 a store of ur choice worth £500 & enter our £100 Weekly draw txt MUSIC to 87066 Ts&Cs www.Ldew.com.subs16+1win150ppmx3 +spam,WIN a year supply of CDs 4 a store of ur choice worth £500 & enter our £100 Weekly draw txt MUSIC to 87066 Ts&Cs www.Ldew.com.subs16+1win150ppmx3 +spam,"Win the newest “Harry Potter and the Order of the Phoenix (Book 5) reply HARRY, answer 5 questions - chance to be the first among readers!" +spam,"Win the newest “Harry Potter and the Order of the Phoenix (Book 5) reply HARRY, answer 5 questions - chance to be the first among readers!" +spam,WIN URGENT! Your mobile number has been awarded with a £2000 prize GUARANTEED call 09061790121 from land line. claim 3030 valid 12hrs only 150ppm +spam,"WIN: We have a winner! Mr. T. Foley won an iPod! More exciting prizes soon, so keep an eye on ur mobile or visit www.win-82050.co.uk" +spam,"WIN: We have a winner! Mr. T. Foley won an iPod! More exciting prizes soon, so keep an eye on ur mobile or visit www.win-82050.co.uk" +spam,WINNER! As a valued network customer you hvae been selected to receive a £900 reward! To collect call 09061701444. Valid 24 hours only. ACL03530150PM +spam,WINNER!! As a valued network customer you have been selected to receivea £900 prize reward! To claim call 09061701461. Claim code KL341. Valid 12 hours only. +spam,WINNER!! As a valued network customer you have been selected to receivea £900 prize reward! To claim call 09061701461. Claim code KL341. Valid 12 hours only. +ham,Wish i were with you now! +ham,"Wishing you and your family Merry ""X"" mas and HAPPY NEW Year in advance.." +ham,WOT U WANNA DO THEN MISSY? +ham,Would really appreciate if you call me. Just need someone to talk to. +spam,Would you like to see my XXX pics they are so hot they were nearly banned in the uk! +spam,WOW! The Boys R Back. TAKE THAT 2007 UK Tour. Win VIP Tickets & pre-book with VIP Club. Txt CLUB to 81303. Trackmarque Ltd info@vipclub4u. +ham,"Wow. I never realized that you were so embarassed by your accomodations. I thought you liked it, since i was doing the best i could and you always seemed so happy about ""the cave"". I'm sorry I didn't and don't have more to give. I'm sorry i offered. I'm sorry your room was so embarassing." +ham,"wow. You're right! I didn't mean to do that. I guess once i gave up on boston men and changed my search location to nyc, something changed. Cuz on my signin page it still says boston." +spam,XCLUSIVE@CLUBSAISAI 2MOROW 28/5 SOIREE SPECIALE ZOUK WITH NICHOLS FROM PARIS.FREE ROSES 2 ALL LADIES !!! info: 07946746291/07880867867 +spam,"Xmas & New Years Eve tickets are now on sale from the club, during the day from 10am till 8pm, and on Thurs, Fri & Sat night this week. They're selling fast!" +spam,XMAS iscoming & ur awarded either £500 CD gift vouchers & free entry 2 r £100 weekly draw txt MUSIC to 87066 TnC www.Ldew.com1win150ppmx3age16subscription +spam,"Xmas Offer! Latest Motorola, SonyEricsson & Nokia & FREE Bluetooth or DVD! Double Mins & 1000 Txt on Orange. Call MobileUpd8 on 08000839402 or call2optout/4QF2" +spam,XMAS Prize draws! We are trying to contact U. Todays draw shows that you have won a £2000 prize GUARANTEED. Call 09058094565 from land line. Valid 12hrs only +spam,"XXXMobileMovieClub: To use your credit, click the WAP link in the next txt message or click here>> http://wap. xxxmobilemovieclub.com?n=QJKGIGHJJGCBL" +ham,Y dun cut too short leh. U dun like ah? She failed. She's quite sad. +ham,Y?WHERE U AT DOGBREATH? ITS JUST SOUNDING LIKE JAN C THATÂ’S AL!!!!!!!!! +ham,Ya even those cookies have jelly on them +ham,Ya srsly better than yi tho +ham,Ya very nice. . .be ready on thursday +ham,Yar lor wait 4 my mum 2 finish sch then have lunch lor... I whole morning stay at home clean my room now my room quite clean... Hee... +ham,Yeah do! Don‘t stand to close tho- you‘ll catch something! +ham,Yeah he got in at 2 and was v apologetic. n had fallen out and she was actin like spoilt child and he got caught up in that. Till 2! But we won't go there! Not doing too badly cheers. You? +ham,"Yeah hopefully, if tyler can't do it I could maybe ask around a bit" +ham,"Yeah I think my usual guy's still passed out from last night, if you get ahold of anybody let me know and I'll throw down" +ham,"Yeah sure, give me a couple minutes to track down my wallet" +ham,"Yeah there's barely enough room for the two of us, x has too many fucking shoes. Sorry man, see you later" +ham,Yeah you should. I think you can use your gt atm now to register. Not sure but if there's anyway i can help let me know. But when you do be sure you are ready. +ham,"Yep, the great loxahatchee xmas tree burning of <#> starts in an hour" +ham,Yes :)it completely in out of form:)clark also utter waste. +ham,Yes baby! We can study all the positions of the kama sutra ;) +ham,Yes I started to send requests to make it but pain came back so I'm back in bed. Double coins at the factory too. I gotta cash in all my nitros. +ham,Yes i think so. I am in office but my lap is in room i think thats on for the last few days. I didnt shut that down +ham,Yes i will be there. Glad you made it. +ham,Yes see ya not on the dot +ham,Yes! How is a pretty lady like you single? +spam,YES! The only place in town to meet exciting adult singles is now in the UK. Txt CHAT to 86688 now! 150p/Msg. +spam,YES! The only place in town to meet exciting adult singles is now in the UK. Txt CHAT to 86688 now! 150p/Msg. +ham,Yes..gauti and sehwag out of odi series. +ham,Yes..he is really great..bhaji told kallis best cricketer after sachin in world:).very tough to get out. +ham,Yes:)from last week itself i'm taking live call. +ham,Yes:)here tv is always available in work place.. +ham,"Yo carlos, a few friends are already asking me about you, you working at all this weekend?" +ham,Yo you guys ever figure out how much we need for alcohol? Jay and I are trying to figure out how much we can safely spend on weed +spam,"YOU 07801543489 are guaranteed the latests Nokia Phone, a 40GB iPod MP3 player or a £500 prize! Txt word:COLLECT to No:83355! TC-LLC NY-USA 150p/Mt msgrcvd18+" +spam,"You are a £1000 winner or Guaranteed Caller Prize, this is our Final attempt to contact you! To Claim Call 09071517866 Now! 150ppmPOBox10183BhamB64XE" +spam,You are a winner U have been specially selected 2 receive £1000 cash or a 4* holiday (flights inc) speak to a live operator 2 claim 0871277810810 +spam,You are a winner U have been specially selected 2 receive £1000 cash or a 4* holiday (flights inc) speak to a live operator 2 claim 0871277810810 +spam,You are a winner U have been specially selected 2 receive £1000 or a 4* holiday (flights inc) speak to a live operator 2 claim 0871277810910p/min (18+) +spam,You are a winner you have been specially selected to receive £1000 cash or a £2000 award. Speak to a live operator to claim call 087123002209am-7pm. Cost 10p +spam,You are a winner you have been specially selected to receive £1000 cash or a £2000 award. Speak to a live operator to claim call 087147123779am-7pm. Cost 10p +ham,"You are always putting your business out there. You put pictures of your ass on facebook. You are one of the most open people i've ever met. Why would i think a picture of your room would hurt you, make you feel violated." +spam,You are awarded a SiPix Digital Camera! call 09061221061 from landline. Delivery within 28days. T Cs Box177. M221BP. 2yr warranty. 150ppm. 16 . p p£3.99 +spam,You are awarded a SiPix Digital Camera! call 09061221061 from landline. Delivery within 28days. T Cs Box177. M221BP. 2yr warranty. 150ppm. 16 . p p£3.99 +spam,"You are being contacted by our dating service by someone you know! To find out who it is, call from a land line 09050000878. PoBox45W2TG150P" +spam,"You are being contacted by our dating service by someone you know! To find out who it is, call from a land line 09050000928. PoBox45W2TG150P" +spam,"You are being contacted by our Dating Service by someone you know! To find out who it is, call from your mobile or landline 09064017305 PoBox75LDNS7 " +spam,You are being ripped off! Get your mobile content from www.clubmoby.com call 08717509990 poly/true/Pix/Ringtones/Games six downloads for only 3 +spam,YOU ARE CHOSEN TO RECEIVE A £350 AWARD! Pls call claim number 09066364311 to collect your award which you are selected to receive as a valued mobile customer. +spam,YOU ARE CHOSEN TO RECEIVE A £350 AWARD! Pls call claim number 09066364311 to collect your award which you are selected to receive as a valued mobile customer. +ham,"You are everywhere dirt, on the floor, the windows, even on my shirt. And sometimes when i open my mouth, you are all that comes flowing out. I dream of my world without you, then half my chores are out too. A time of joy for me, lots of tv shows i.ll see. But i guess like all things you just must exist, like rain, hail and mist, and when my time here is done, you and i become one." +spam,"You are guaranteed the latest Nokia Phone, a 40GB iPod MP3 player or a £500 prize! Txt word: COLLECT to No: 83355! IBHltd LdnW15H 150p/Mtmsgrcvd18" +spam,"You are guaranteed the latest Nokia Phone, a 40GB iPod MP3 player or a £500 prize! Txt word: COLLECT to No: 83355! IBHltd LdnW15H 150p/Mtmsgrcvd18+" +spam,You are now unsubscribed all services. Get tons of sexy babes or hunks straight to your phone! go to http://gotbabes.co.uk. No subscriptions. +ham,You available now? I'm like right around hillsborough & <#> th +spam,You can donate £2.50 to UNICEF's Asian Tsunami disaster support fund by texting DONATE to 864233. £2.50 will be added to your next bill +spam,"You can stop further club tones by replying ""STOP MIX"" See my-tone.com/enjoy. html for terms. Club tones cost GBP4.50/week. MFL, PO Box 1146 MK45 2WT (2/3)" +ham,You could have seen me..i did't recognise you Face.:) +ham,You got called a tool? +spam,You have 1 new message. Call 0207-083-6089 +spam,You have 1 new message. Please call 08712400200. +spam,You have 1 new message. Please call 08715205273 +spam,You have 1 new message. Please call 08718738034. +spam,You have 1 new voicemail. Please call 08719181503 +spam,You have 1 new voicemail. Please call 08719181513. +spam,You have 1 new voicemail. Please call 08719181513. +spam,You have an important customer service announcement from PREMIER. +spam,You have an important customer service announcement from PREMIER. Call FREEPHONE 0800 542 0578 now! +spam,You have an important customer service announcement. Call FREEPHONE 0800 542 0825 now! +spam,You have an important customer service announcement. Call FREEPHONE 0800 542 0825 now! +spam,"You have been selected to stay in 1 of 250 top British hotels - FOR NOTHING! Holiday Worth £350! To Claim, Call London 02072069400. Bx 526, SW73SS" +spam,"You have been specially selected to receive a ""3000 award! Call 08712402050 BEFORE the lines close. Cost 10ppm. 16+. T&Cs apply. AG Promo" +spam,You have been specially selected to receive a 2000 pound award! Call 08712402050 BEFORE the lines close. Cost 10ppm. 16+. T&Cs apply. AG Promo +spam,"You have won ?1,000 cash or a ?2,000 prize! To claim, call09050000327" +spam,"You have won ?1,000 cash or a ?2,000 prize! To claim, call09050000327. T&C: RSTM, SW7 3SS. 150ppm" +spam,You have won a guaranteed 32000 award or maybe even £1000 cash to claim ur award call free on 0800 ..... (18+). Its a legitimat efreefone number wat do u think??? +spam,You have WON a guaranteed £1000 cash or a £2000 prize. To claim yr prize call our customer service representative on 08714712379 between 10am-7pm Cost 10p +spam,You have WON a guaranteed £1000 cash or a £2000 prize. To claim yr prize call our customer service representative on 08714712394 between 10am-7pm +spam,You have WON a guaranteed £1000 cash or a £2000 prize. To claim yr prize call our customer service representative on 08714712412 between 10am-7pm Cost 10p +spam,You have WON a guaranteed £1000 cash or a £2000 prize.To claim yr prize call our customer service representative on +spam,You have won a guaranteed £200 award or even £1000 cashto claim UR award call free on 08000407165 (18+) 2 stop getstop on 88222 PHP +spam,You have won a guaranteed £200 award or even £1000 cashto claim UR award call free on 08000407165 (18+) 2 stop getstop on 88222 PHP. RG21 4JX +spam,You have won a Nokia 7250i. This is what you get when you win our FREE auction. To take part send Nokia to 86021 now. HG/Suite342/2Lands Row/W1JHL 16+ +spam,You have won a Nokia 7250i. This is what you get when you win our FREE auction. To take part send Nokia to 86021 now. HG/Suite342/2Lands Row/W1JHL 16+ +spam,You have won a Nokia 7250i. This is what you get when you win our FREE auction. To take part send Nokia to 86021 now. HG/Suite342/2Lands Row/W1JHL 16+ +spam,YOU HAVE WON! As a valued Vodafone customer our computer has picked YOU to win a £150 prize. To collect is easy. Just call 09061743386 +spam,YOU HAVE WON! As a valued Vodafone customer our computer has picked YOU to win a £150 prize. To collect is easy. Just call 09061743386 +ham,You lifted my hopes with the offer of money. I am in need. Especially when the end of the month approaches and it hurts my studying. Anyways have a gr8 weekend +ham,You made my day. Do have a great day too. +ham,You please give us connection today itself before <DECIMAL> or refund the bill +ham,You should change your fb to jaykwon thuglyfe falconerf +ham,You should know now. So how's anthony. Are you bringing money. I've school fees to pay and rent and stuff like that. Thats why i need your help. A friend in need....| +ham,You still at grand prix? +ham,You unbelievable faglord +spam,"YOU VE WON! Your 4* Costa Del Sol Holiday or £5000 await collection. Call 09050090044 Now toClaim. SAE, TC s, POBox334, Stockport, SK38xh, Cost£1.50/pm, Max10mins" +spam,"YOU VE WON! Your 4* Costa Del Sol Holiday or £5000 await collection. Call 09050090044 Now toClaim. SAE, TC s, POBox334, Stockport, SK38xh, Cost£1.50/pm, Max10mins" +ham,You were supposed to wake ME up >:( +ham,You will be in the place of that man +ham,You will be in the place of that man +spam,You will be receiving this week's Triple Echo ringtone shortly. Enjoy it! +spam,You will recieve your tone within the next 24hrs. For Terms and conditions please see Channel U Teletext Pg 750 +spam,You won't believe it but it's true. It's Incredible Txts! Reply G now to learn truly amazing things that will blow your mind. From O2FWD only 18p/txt +spam,You won't believe it but it's true. It's Incredible Txts! Reply G now to learn truly amazing things that will blow your mind. From O2FWD only 18p/txt +spam,You'll not rcv any more msgs from the chat svc. For FREE Hardcore services text GO to: 69988 If u get nothing u must Age Verify with yr network & try again +spam,Your 2004 account for 07XXXXXXXXX shows 786 unredeemed points. To claim call 08719181259 Identifier code: XXXXX Expires 26.03.05 +spam,"Your account has been credited with 500 FREE Text Messages. To activate, just txt the word: CREDIT to No: 80488 T&Cs www.80488.biz" +ham,Your account has been refilled successfully by INR <DECIMAL> . Your KeralaCircle prepaid account balance is Rs <DECIMAL> . Your Transaction ID is KR <#> . +spam,Your B4U voucher w/c 27/03 is MARSMS. Log onto www.B4Utele.com for discount credit. To opt out reply stop. Customer care call 08717168528 +ham,Your brother is a genius +spam,"YOUR CHANCE TO BE ON A REALITY FANTASY SHOW call now = 08707509020 Just 20p per min NTT Ltd, PO Box 1327 Croydon CR9 5WB 0870 is a national = rate call" +spam,"YOUR CHANCE TO BE ON A REALITY FANTASY SHOW call now = 08707509020 Just 20p per min NTT Ltd, PO Box 1327 Croydon CR9 5WB 0870 is a national = rate call." +spam,Your credits have been topped up for http://www.bubbletext.com Your renewal Pin is tgxxrz +spam,"Your free ringtone is waiting to be collected. Simply text the password ""MIX"" to 85069 to verify. Get Usher and Britney. FML, PO Box 5249, MK17 92H. 450Ppw 16" +spam,"Your free ringtone is waiting to be collected. Simply text the password ""MIX"" to 85069 to verify. Get Usher and Britney. FML, PO Box 5249, MK17 92H. 450Ppw 16" +ham,Your gonna have to pick up a $1 burger for yourself on your way home. I can't even move. Pain is killing me. +spam,Your next amazing xxx PICSFREE1 video will be sent to you enjoy! If one vid is not enough for 2day text back the keyword PICSFREE1 to get the next video. +ham,Your opinion about me? 1. Over 2. Jada 3. Kusruthi 4. Lovable 5. Silent 6. Spl character 7. Not matured 8. Stylish 9. Simple Pls reply.. +ham,Your opinion about me? 1. Over 2. Jada 3. Kusruthi 4. Lovable 5. Silent 6. Spl character 7. Not matured 8. Stylish 9. Simple Pls reply.. +spam,Your unique user ID is 1172. For removal send STOP to 87239 customer services 08708034412 +spam,Your weekly Cool-Mob tones are ready to download !This weeks new Tones include: 1) Crazy Frog-AXEL F>>> 2) Akon-Lonely>>> 3) Black Eyed-Dont P >>>More info in n +spam,"You've won tkts to the EURO2004 CUP FINAL or £800 CASH, to collect CALL 09058099801 b4190604, POBOX 7876150ppm" +spam,"You've won tkts to the EURO2004 CUP FINAL or £800 CASH, to collect CALL 09058099801 b4190604, POBOX 7876150ppm" +ham,Yoyyooo u know how to change permissions for a drive in mac. My usb flash drive +ham,Yup +ham,Yup having my lunch buffet now.. U eat already? +ham,Yup i thk cine is better cos no need 2 go down 2 plaza mah. +ham,Yup i thk they r e teacher said that will make my face look longer. Darren ask me not 2 cut too short. +ham,Yup next stop. +ham,"Yup, no need. I'll jus wait 4 e rain 2 stop." +ham,Yup... From what i remb... I think should be can book... +ham,Yup... How ü noe leh... +ham,Yup... Ok i go home look at the timings then i msg ü again... Xuhui going to learn on 2nd may too but her lesson is at 8am +spam,Hi - this is your Mailbox Messaging SMS alert. You have 40 matches. Please call back on 09056242159 to retrieve your messages and matches cc100p/min \ No newline at end of file diff --git a/deep_learning/Exercise Files/code_04_XX Iris - Deep Learning Classification Example.ipynb b/deep_learning/Exercise Files/code_04_XX Iris - Deep Learning Classification Example.ipynb new file mode 100755 index 0000000..e5b87bf --- /dev/null +++ b/deep_learning/Exercise Files/code_04_XX Iris - Deep Learning Classification Example.ipynb @@ -0,0 +1,591 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "2b9cc808", + "metadata": {}, + "source": [ + "# Deep Learning Example - Iris \n", + "\n", + "This examples demonstrates the core deep learning model building concepts using the Keras library. The Iris flower dataset is used to build the model and perform classification tasks" + ] + }, + { + "cell_type": "markdown", + "id": "7141cfab", + "metadata": {}, + "source": [ + "### 5.1 Setup" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "17aae7a8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: pandas in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (1.3.3)\n", + "Requirement already satisfied: python-dateutil>=2.7.3 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from pandas) (2.8.2)\n", + "Requirement already satisfied: numpy>=1.17.3 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from pandas) (1.19.5)\n", + "Requirement already satisfied: pytz>=2017.3 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from pandas) (2021.3)\n", + "Requirement already satisfied: six>=1.5 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from python-dateutil>=2.7.3->pandas) (1.15.0)\n", + "Requirement already satisfied: tensorflow in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (2.6.0)\n", + "Requirement already satisfied: absl-py~=0.10 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (0.14.1)\n", + "Requirement already satisfied: clang~=5.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (5.0)\n", + "Requirement already satisfied: wheel~=0.35 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (0.37.0)\n", + "Requirement already satisfied: flatbuffers~=1.12.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (1.12)\n", + "Requirement already satisfied: tensorflow-estimator~=2.6 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (2.6.0)\n", + "Requirement already satisfied: opt-einsum~=3.3.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (3.3.0)\n", + "Requirement already satisfied: gast==0.4.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (0.4.0)\n", + "Requirement already satisfied: google-pasta~=0.2 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (0.2.0)\n", + "Requirement already satisfied: tensorboard~=2.6 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (2.6.0)\n", + "Requirement already satisfied: astunparse~=1.6.3 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (1.6.3)\n", + "Requirement already satisfied: typing-extensions~=3.7.4 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (3.7.4.3)\n", + "Requirement already satisfied: keras-preprocessing~=1.1.2 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (1.1.2)\n", + "Requirement already satisfied: numpy~=1.19.2 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (1.19.5)\n", + "Requirement already satisfied: six~=1.15.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (1.15.0)\n", + "Requirement already satisfied: termcolor~=1.1.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (1.1.0)\n", + "Requirement already satisfied: wrapt~=1.12.1 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (1.12.1)\n", + "Requirement already satisfied: grpcio<2.0,>=1.37.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (1.41.0)\n", + "Requirement already satisfied: keras~=2.6 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (2.6.0)\n", + "Requirement already satisfied: h5py~=3.1.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (3.1.0)\n", + "Requirement already satisfied: protobuf>=3.9.2 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorflow) (3.18.0)\n", + "Requirement already satisfied: markdown>=2.6.8 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorboard~=2.6->tensorflow) (3.3.4)\n", + "Requirement already satisfied: setuptools>=41.0.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorboard~=2.6->tensorflow) (58.0.4)\n", + "Requirement already satisfied: requests<3,>=2.21.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorboard~=2.6->tensorflow) (2.26.0)\n", + "Requirement already satisfied: werkzeug>=0.11.15 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorboard~=2.6->tensorflow) (2.0.1)\n", + "Requirement already satisfied: google-auth<2,>=1.6.3 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorboard~=2.6->tensorflow) (1.35.0)\n", + "Requirement already satisfied: google-auth-oauthlib<0.5,>=0.4.1 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorboard~=2.6->tensorflow) (0.4.6)\n", + "Requirement already satisfied: tensorboard-plugin-wit>=1.6.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorboard~=2.6->tensorflow) (1.8.0)\n", + "Requirement already satisfied: tensorboard-data-server<0.7.0,>=0.6.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from tensorboard~=2.6->tensorflow) (0.6.1)\n", + "Requirement already satisfied: pyasn1-modules>=0.2.1 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from google-auth<2,>=1.6.3->tensorboard~=2.6->tensorflow) (0.2.8)\n", + "Requirement already satisfied: cachetools<5.0,>=2.0.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from google-auth<2,>=1.6.3->tensorboard~=2.6->tensorflow) (4.2.4)\n", + "Requirement already satisfied: rsa<5,>=3.1.4 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from google-auth<2,>=1.6.3->tensorboard~=2.6->tensorflow) (4.7.2)\n", + "Requirement already satisfied: requests-oauthlib>=0.7.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from google-auth-oauthlib<0.5,>=0.4.1->tensorboard~=2.6->tensorflow) (1.3.0)\n", + "Requirement already satisfied: pyasn1<0.5.0,>=0.4.6 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from pyasn1-modules>=0.2.1->google-auth<2,>=1.6.3->tensorboard~=2.6->tensorflow) (0.4.8)\n", + "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from requests<3,>=2.21.0->tensorboard~=2.6->tensorflow) (1.26.7)\n", + "Requirement already satisfied: charset-normalizer~=2.0.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from requests<3,>=2.21.0->tensorboard~=2.6->tensorflow) (2.0.6)\n", + "Requirement already satisfied: idna<4,>=2.5 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from requests<3,>=2.21.0->tensorboard~=2.6->tensorflow) (3.2)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from requests<3,>=2.21.0->tensorboard~=2.6->tensorflow) (2021.5.30)\n", + "Requirement already satisfied: oauthlib>=3.0.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<0.5,>=0.4.1->tensorboard~=2.6->tensorflow) (3.1.1)\n", + "Requirement already satisfied: sklearn in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (0.0)\n", + "Requirement already satisfied: scikit-learn in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from sklearn) (1.0)\n", + "Requirement already satisfied: threadpoolctl>=2.0.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from scikit-learn->sklearn) (3.0.0)\n", + "Requirement already satisfied: joblib>=0.11 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from scikit-learn->sklearn) (1.0.1)\n", + "Requirement already satisfied: scipy>=1.1.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from scikit-learn->sklearn) (1.7.1)\n", + "Requirement already satisfied: numpy>=1.14.6 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from scikit-learn->sklearn) (1.19.5)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: matplotlib in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (3.4.3)\r\n", + "Requirement already satisfied: pillow>=6.2.0 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from matplotlib) (8.3.2)\r\n", + "Requirement already satisfied: python-dateutil>=2.7 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from matplotlib) (2.8.2)\r\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from matplotlib) (1.3.2)\r\n", + "Requirement already satisfied: numpy>=1.16 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from matplotlib) (1.19.5)\r\n", + "Requirement already satisfied: cycler>=0.10 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from matplotlib) (0.10.0)\r\n", + "Requirement already satisfied: pyparsing>=2.2.1 in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from matplotlib) (2.4.7)\r\n", + "Requirement already satisfied: six in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from cycler>=0.10->matplotlib) (1.15.0)\r\n" + ] + } + ], + "source": [ + "#Install related libraries for the course. \n", + "#This is a common requirement for all other exampels too\n", + "\n", + "!pip install pandas\n", + "!pip install tensorflow\n", + "!pip install sklearn\n", + "!pip install matplotlib" + ] + }, + { + "cell_type": "markdown", + "id": "2fabf059", + "metadata": {}, + "source": [ + "### 4.2. Prepare Input Data for Deep Learning\n", + "\n", + "Perform the following steps for preparing data\n", + "\n", + "1. Load data into a pandas dataframe\n", + "2. Convert the dataframe to a numpy array\n", + "3. Scale the feature dataset\n", + "4. Use one-hot-encoding for the target variable\n", + "5. Split into training and test datasets\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "6db4bd81", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Loaded Data :\n", + "------------------------------------\n", + " Sepal.Length Sepal.Width Petal.Length Petal.Width Species\n", + "0 5.1 3.5 1.4 0.2 setosa\n", + "1 4.9 3.0 1.4 0.2 setosa\n", + "2 4.7 3.2 1.3 0.2 setosa\n", + "3 4.6 3.1 1.5 0.2 setosa\n", + "4 5.0 3.6 1.4 0.2 setosa\n", + "\n", + "Features before scaling :\n", + "------------------------------------\n", + "[[5.1 3.5 1.4 0.2]\n", + " [4.9 3. 1.4 0.2]\n", + " [4.7 3.2 1.3 0.2]\n", + " [4.6 3.1 1.5 0.2]\n", + " [5. 3.6 1.4 0.2]]\n", + "\n", + "Target before scaling :\n", + "------------------------------------\n", + "[0. 0. 0. 0. 0.]\n", + "\n", + "Features after scaling :\n", + "------------------------------------\n", + "[[-0.90068117 1.01900435 -1.34022653 -1.3154443 ]\n", + " [-1.14301691 -0.13197948 -1.34022653 -1.3154443 ]\n", + " [-1.38535265 0.32841405 -1.39706395 -1.3154443 ]\n", + " [-1.50652052 0.09821729 -1.2833891 -1.3154443 ]\n", + " [-1.02184904 1.24920112 -1.34022653 -1.3154443 ]]\n", + "\n", + "Target after one-hot-encoding :\n", + "------------------------------------\n", + "[[1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]]\n", + "\n", + "Train Test Dimensions:\n", + "------------------------------------\n", + "(135, 4) (135, 3) (15, 4) (15, 3)\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import os\n", + "import tensorflow as tf\n", + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import StandardScaler\n", + "\n", + "#Load Data and review content\n", + "iris_data = pd.read_csv(\"iris.csv\")\n", + "\n", + "print(\"\\nLoaded Data :\\n------------------------------------\")\n", + "print(iris_data.head())\n", + "\n", + "#Use a Label encoder to convert String to numeric values \n", + "#for the target variable\n", + "\n", + "from sklearn import preprocessing\n", + "label_encoder = preprocessing.LabelEncoder()\n", + "iris_data['Species'] = label_encoder.fit_transform(\n", + " iris_data['Species'])\n", + "\n", + "#Convert input to numpy array\n", + "np_iris = iris_data.to_numpy()\n", + "\n", + "#Separate feature and target variables\n", + "X_data = np_iris[:,0:4]\n", + "Y_data=np_iris[:,4]\n", + "\n", + "print(\"\\nFeatures before scaling :\\n------------------------------------\")\n", + "print(X_data[:5,:])\n", + "print(\"\\nTarget before scaling :\\n------------------------------------\")\n", + "print(Y_data[:5])\n", + "\n", + "#Create a scaler model that is fit on the input data.\n", + "scaler = StandardScaler().fit(X_data)\n", + "\n", + "#Scale the numeric feature variables\n", + "X_data = scaler.transform(X_data)\n", + "\n", + "#Convert target variable as a one-hot-encoding array\n", + "Y_data = tf.keras.utils.to_categorical(Y_data,3)\n", + "\n", + "print(\"\\nFeatures after scaling :\\n------------------------------------\")\n", + "print(X_data[:5,:])\n", + "print(\"\\nTarget after one-hot-encoding :\\n------------------------------------\")\n", + "print(Y_data[:5,:])\n", + "\n", + "#Split training and test data\n", + "X_train,X_test,Y_train,Y_test = train_test_split( X_data, Y_data, test_size=0.10)\n", + "\n", + "print(\"\\nTrain Test Dimensions:\\n------------------------------------\")\n", + "print(X_train.shape, Y_train.shape, X_test.shape, Y_test.shape)" + ] + }, + { + "cell_type": "markdown", + "id": "8bb5fad2", + "metadata": {}, + "source": [ + "### 4.3. Creating a Model\n", + "\n", + "Creating a model in Keras requires defining the following\n", + "\n", + "1. Number of hidden layers\n", + "2. Number of nodes in each layer\n", + "3. Activation functions\n", + "4. Loss Function & Accuracy measurements" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "d4a0be90", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "Hidden-Layer-1 (Dense) (None, 128) 640 \n", + "_________________________________________________________________\n", + "Hidden-Layer-2 (Dense) (None, 128) 16512 \n", + "_________________________________________________________________\n", + "Output-Layer (Dense) (None, 3) 387 \n", + "=================================================================\n", + "Total params: 17,539\n", + "Trainable params: 17,539\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2021-10-02 08:22:29.187893: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 FMA\n", + "To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n" + ] + } + ], + "source": [ + "\n", + "from tensorflow import keras\n", + "\n", + "#Number of classes in the target variable\n", + "NB_CLASSES=3\n", + "\n", + "#Create a sequencial model in Keras\n", + "model = tf.keras.models.Sequential()\n", + "\n", + "#Add the first hidden layer\n", + "model.add(keras.layers.Dense(128, #Number of nodes\n", + " input_shape=(4,), #Number of input variables\n", + " name='Hidden-Layer-1', #Logical name\n", + " activation='relu')) #activation function\n", + "\n", + "#Add a second hidden layer\n", + "model.add(keras.layers.Dense(128,\n", + " name='Hidden-Layer-2',\n", + " activation='relu'))\n", + "\n", + "#Add an output layer with softmax activation\n", + "model.add(keras.layers.Dense(NB_CLASSES,\n", + " name='Output-Layer',\n", + " activation='softmax'))\n", + "\n", + "#Compile the model with loss & metrics\n", + "model.compile(loss='categorical_crossentropy',\n", + " metrics=['accuracy'])\n", + "\n", + "#Print the model meta-data\n", + "model.summary()\n" + ] + }, + { + "cell_type": "markdown", + "id": "95c6677e", + "metadata": {}, + "source": [ + "### 4.4. Training and evaluating the Model\n", + "\n", + "Training the model involves defining various training models and then perform \n", + "forward and back propagation." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "55a9ddba", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Training Progress:\n", + "------------------------------------\n", + "Epoch 1/10\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2021-10-02 08:30:49.300887: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:185] None of the MLIR Optimization Passes are enabled (registered 2)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "7/7 [==============================] - 1s 26ms/step - loss: 0.7714 - accuracy: 0.7315 - val_loss: 0.6208 - val_accuracy: 0.8519\n", + "Epoch 2/10\n", + "7/7 [==============================] - 0s 4ms/step - loss: 0.5176 - accuracy: 0.8241 - val_loss: 0.4969 - val_accuracy: 0.8519\n", + "Epoch 3/10\n", + "7/7 [==============================] - 0s 5ms/step - loss: 0.4196 - accuracy: 0.8333 - val_loss: 0.4353 - val_accuracy: 0.8519\n", + "Epoch 4/10\n", + "7/7 [==============================] - 0s 4ms/step - loss: 0.3740 - accuracy: 0.8426 - val_loss: 0.3933 - val_accuracy: 0.8519\n", + "Epoch 5/10\n", + "7/7 [==============================] - 0s 4ms/step - loss: 0.3282 - accuracy: 0.8519 - val_loss: 0.3599 - val_accuracy: 0.8519\n", + "Epoch 6/10\n", + "7/7 [==============================] - 0s 4ms/step - loss: 0.3056 - accuracy: 0.8611 - val_loss: 0.3313 - val_accuracy: 0.8519\n", + "Epoch 7/10\n", + "7/7 [==============================] - 0s 5ms/step - loss: 0.2763 - accuracy: 0.8519 - val_loss: 0.3112 - val_accuracy: 0.8519\n", + "Epoch 8/10\n", + "7/7 [==============================] - 0s 4ms/step - loss: 0.2594 - accuracy: 0.8796 - val_loss: 0.2926 - val_accuracy: 0.8519\n", + "Epoch 9/10\n", + "7/7 [==============================] - 0s 4ms/step - loss: 0.2361 - accuracy: 0.8981 - val_loss: 0.2700 - val_accuracy: 0.9259\n", + "Epoch 10/10\n", + "7/7 [==============================] - 0s 4ms/step - loss: 0.2209 - accuracy: 0.9167 - val_loss: 0.2573 - val_accuracy: 0.8889\n", + "\n", + "Accuracy during Training :\n", + "------------------------------------\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAfAAAAE/CAYAAAC5EpGHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAA3kElEQVR4nO3deXxU9b3/8dcnO4SdhJ2whk1RlohSBK1b0Vq12gVrXbpoe3v1+rOrve3t9dr2anvbWm8Xe2nda2utBaUtuC+4S9iUnQACCVsChJ2sn98f5wTHGMgAIWcm834+HvNwzjqfczLynvOd73yPuTsiIiKSXNKiLkBERESOngJcREQkCSnARUREkpACXEREJAkpwEVERJKQAlxERCQJKcBFTjAzm2xmK6OuQ95nZleZ2TNHWH62mZW2Zk1Hy8zeM7Pzoq5DoqMAl8iZ2UtmttPMsqOu5URw91fcfXjUdSSL1ghPd3/E3S+IeU03s6HHur/wPXzQzPbGPP7eMtWKNE0BLpEys4HAZMCBS1r5tTNa8/VaQ1s8piRyo7t3iHl8IuqCpG1TgEvUrgHeBB4Aro1dYGb9zWyGmZWb2XYz+3XMsuvNbLmZ7TGzZWY2Lpz/gSspM3vAzH4UPj/bzErN7DtmtgW438y6mtk/wtfYGT7vF7N9NzO738w2hcufCOcvMbNPxKyXaWYVZja28QE2vqIMmz6/ZWbvmNk+M7vXzHqa2ZzweJ4zs67hugPDY7ohrGGzmX0zZl+3mdnjZvZHM9sNXGdmfcxslpntMLMSM7s+XLePmR0ws24x248N684Mp78YntedZva0mQ2IWdfN7Gtmtjqs84dmNsTMXjez3Wb2mJllxax/sZktMrPKcJ1TGp2Db4bnYJeZ/cXMcswsF5gD9Im5ku1jZhPMrDh8na1m9oum3kxm9rKZXRE+nxTW/PFw+lwzWxQ+v87MXg2fzw03Xxy+3mdj9vcNM9sWnvcvNPWazYl53/17eK7fM7OrYpZ3NrOHwvfgejP7vpmlxSxv8r0eGtP4HB5LjZKk3F0PPSJ7ACXA14DxQA3QM5yfDiwG7gJygRzgzHDZp4Ey4DTAgKHAgHCZA0Nj9v8A8KPw+dlALfATIBtoB3QHrgDaAx2BvwJPxGz/T+AvQFcgEzgrnP9t4C8x610KvHuYYzwbKI2Zfo/gQ0tPoC+wDVgAjA2P8wXgP8N1B4bH9OfwPIwGyoHzwuW3heftMoIP5O2AucBvw32NCdc/J1z/BeD6mFr+B/hdzDGUACOBDOD7wOsx6zrwJNAJOAmoAp4HBgOdgWXAteG6Y8PjOj38W14bHnd2zDl4G+gDdAOWA19t6nyF894Arg6fdwDOOMy5vh34Vfj834E1wE9ilt0dPr8OeLXRsQ1t9DerDbfJBC4C9gNdD/O6LwFfPsLfvxb4BcH77ixgHzA8XP5QeF47hn/vVcCX4nivH/Yc6pEaj8gL0CN1H8CZYfjkhdMrgFvC5xPD4MloYrungZsPs8/mArwayDlCTWOAneHz3kB9U/9oh/9o7gE6hdOPA98+zD4/EEjhP7xXxUz/DbgnZvomwg8RvB/gI2KW/xS4N3x+GzA3Zll/oA7oGDPvDuCB8PmXgRfC5wZsBKaE03MagiOcTgtDa0DMuZ0Us3w+8J2Y6Z8Dvwyf3wP8sNF5WMn7H4DeAz7f6JgaPkh84HyF8+YC/9XwXjnC3+9c4J3w+VPh8b4ZTr8MXB4+v47mA/wAMe8/gg8kh/vg8FJ4ripjHj+M2VctkBuz/mPAfxB8uKkGRsUs+wrwUhzv9cOeQz1S46EmdInStcAz7l4RTv+J95vR+wPr3b22ie36E1xZHYtydz/YMGFm7c3s/8Kmy90EQdHFzNLD19nh7jsb78TdNwGvAVeYWRfgQuCRo6hja8zzA01Md2i0/saY5+sJPkA0taxPWPOeRuv3DZ//DZhoZr2BKQQfUF4Jlw0A7g6bvCuBHQQh3zdmX/HWPQD4RsO+wv31b1T3lpjn+5s45lhfAoYBK8xsnpldfJj13gCGmVlPgg9jDwH9zSwPmEDw943X9kbvv+Zq/Dd37xLz+I+YZTvdfV/MdMPfMI/gCn99o2UN57y59/rRnENpY9ThRSJhZu2AzwDpFnwfDUHzYhczO5UglArMLKOJEN8IDDnMrvcTNIc36AXE9mhufPu9bwDDgdPdfYuZjQEW8v7VaTcz6+LulU281oMEV3gZwBvuXna4420B/QlaKAAKgE0xy2KPaRNBzR1jQryAoBkWd99pwc+nPkvQVP6ouzdsvxH4sbsfzQeRw2nY14+PYdsP3SLR3VcDV4bfDV8OPG5m3RuFIu6+38zmAzcDS9y92sxeB74OrIn5sNjauppZbky9BcASoIKgFWoAwVcQDcsa3ktHeq9LitMVuETlMoKm3lEEV0pjCALlFYKObW8Dm4E7zSw37OA0Kdz2D8A3zWy8BYbGdLZaBHzOzNLNbCrB941H0pHgyrEy7Nz1nw0L3H0zQbPyby3o7JZpZlNitn0CGEcQFg8d/Sk4Kv8RthacBHyB4Hv5D3H3jcDrwB3hOTuF4Or1jzGr/YngHH8qfN7gd8B3w9do6Fz16WOs9/fAV83s9PBvlGtmHzezjnFsuxXobmadG2aY2efNLN/d6wmapyFoPWjKy8CN4X8haN6OnT7caw6Oo7bj8V9mlmVmk4GLgb+6ex1Bc/qPzaxj+D7+Ou//vY70XpcUpwCXqFwL3O/uG9x9S8MD+DVwFcEV8CcIOu1sILiK/iyAu/8V+DFB+OwhCNKGntU3h9tVhvt5opk6fknQ8auCoGPZU42WX01whbSC4DvQ/9ewwN0PEDRJDwJmxH3kx+Zlgg5mzwM/c/fDDkICXEnw3fkmYCZBh7jnYpbPAgqBLe6+uGGmu88k6OD3aPh1whKCrwaOmrsXA9cT/D13hrVfF+e2Kwg67a0Nm9/7AFOBpWa2F7gbmBae/6a8TPDBbO5hpptyG/Bg+HqfiafOJvzaPvg78Pkxy7YQnIdNBF+1fDU8Tgj6POwD1gKvEryv74Nm3+uS4uz91jMROVpm9gNgmLt//gTtfyCwDsg8TH8ASXBmdjbwR3fv18yqIkdF34GLHKOwyf1LBFfpIiKtSk3oIsfAgsFRNgJz3P1oejaLiLSIuJrQw85AdxP8ZvEP7n5no+UDCL6zySf46cnn3b007NF7D8HAD3UEvVL/Em7zAEEHo13hbq5z90XHf0giIiJtX7MBHv4edhVwPkFHonnAle6+LGadvwL/cPcHzewc4AvufrWZDQPc3VeHHVHmAyPdvTIM8H+4++Mn5MhERETasHia0CcAJe6+1t2rgUcJhlyMNYpgiEaAFxuWu/uq8PebDQNfbCO4ShcREZHjEE8ntr58cKSnUoLxjWMtJhhc4W7gk0DHcJCF7Q0rmNkEIIsPjir047AX7/PAre5edaRC8vLyfODAgXGULCIikvzmz59f4e5NXvi2VC/0bxL8BvI6gt9alhF85w1AOGzjwwQ3OmgYfOG7BL+NzAKmA98huHHAB5jZDcANAAUFBRQXF7dQySIiIonNzNYfblk8TehlBMM4NujH+8P8AUHzuLtf7u5jge+F8yrDF+9EcEen77n7mzHbbPZAFXA/QVP9h7j7dHcvcvei/Hy1vouIiEB8AT4PKDSzQRbc63cawUhOh5hZnr1//9rvEo4iFK4/E3iocWe18KocMzOCYTWXHMdxiIiIpJRmAzwc/elGgtvaLQcec/elZna7mV0SrnY2sNLMVhHc47jhBgafIbjj0XVmtih8jAmXPWJm7wLvEtyR50ctdEwiIiJtXlINpVpUVOT6DlxERFKFmc1396KmlmkkNhERkSSkABcREUlCCnAREZEkpAAXERFJQgpwERGRJKQAFxERaQGvrq7gtZKKVnu9lhpKVUREJCUt27SbO59awdxV5UwuzGPS0LxWeV0FuIiIyDHYVHmAnz+zihkLS+mUk8n3Pz6SqycOaLXXV4CLiIgchd0Ha7jnpTXc9+o63OH6yYP517OH0rl9ZqvWoQAXERGJQ3VtPY+8tZ7/fX41O/fXcNmYPnzjguH079Y+knoU4CIiIkfg7vzz3c389KmVbNixn48M6c6/XzSSk/t2jrQuBbiIiMhhvL1uBz+evZzFGysZ0asjD3zhNM4alk9wI81oKcBFREQaKdm2hzvnrOS55Vvp1SmHn37qFK4Y14/0tOiDu4ECXEREJLRtz0HuenY1f5m3gfZZGXzrY8P54qRBtMtKj7q0D1GAi4hIyttXVcv0uWv5/Strqa6t55qJA7npnKF075AddWmHpQAXEZGUVVtXz1+KN3LXs6up2FvFRaN78e2PjWBgXm7UpTVLAS4iIinH3Xl22VZ+8tQK1pTv47SBXZl+zXjGFXSNurS4KcBFRCSlLNywkztmr+Dt93YwOD+X6VeP5/xRPROiZ/nRUICLiEhKWL99Hz99aiX/fHczeR2y+NFlJzPttP5kpCfnfb0U4CIi0qbt2FfN/z6/mkfeWk9GWho3n1vI9VMG0yE7uSMwuasXERE5jIM1ddz32jrueXEN+6pr+expBdxyXiE9OuVEXVqLUICLiEibUlfvzFhQyi+eXcXmXQc5b2QPvjN1BIU9O0ZdWotSgIuISJvg7sxdXcEds5ezYsseTu3Xmbs+O4YzBnePurQTQgEuIiJJb0nZLu6cs4JXSyoo6NaeX39uLB8f3TvpepYfDQW4iIgkrdKd+/nFM6uYuaiMzu0y+cHFo7jqjAKyMxJv6NOWFleAm9lU4G4gHfiDu9/ZaPkA4D4gH9gBfN7dS8Nl1wLfD1f9kbs/GM4fDzwAtANmAze7ux/vAYmISNu360ANv32xhPtffw+Ar0wZwr+cPYTO7TKjLawVNRvgZpYO/AY4HygF5pnZLHdfFrPaz4CH3P1BMzsHuAO42sy6Af8JFAEOzA+33QncA1wPvEUQ4FOBOS13aCIi0tZU1dbx8Bvr+fWLJew6UMPlY/vx9QuG0bdLu6hLa3XxXIFPAErcfS2AmT0KXArEBvgo4Ovh8xeBJ8LnHwOedfcd4bbPAlPN7CWgk7u/Gc5/CLgMBbiIiDShvt75x7ub+Z+nV7BxxwEmF+Zx64UjOKlP56hLi0w8Ad4X2BgzXQqc3midxcDlBM3snwQ6mln3w2zbN3yUNjFfRETkA95Ys5075iznndJdjOzdiYe+OJopw/KjLityLdWJ7ZvAr83sOmAuUAbUtcSOzewG4AaAgoKCltiliIgkgVVb93DnnBW8sGIbfTrn8IvPnMplY/qSltZ2e5YfjXgCvAzoHzPdL5x3iLtvIrgCx8w6AFe4e6WZlQFnN9r2pXD7fkfaZ8y+pwPTAYqKitTJTUSkjdu6+yB3PbuKx4o3kpudwa0XjuC6jwwkJ7Pt9yw/GvEE+Dyg0MwGEYTsNOBzsSuYWR6ww93rge8S9EgHeBr4bzNruD/bBcB33X2Hme02szMIOrFdA/zquI9GRESS1t6qWv7v5TX8/pW11NU7135kIP92TiFdc7OiLi0hNRvg7l5rZjcShHE6cJ+7LzWz24Fid59FcJV9h5k5QRP6v4bb7jCzHxJ8CAC4vaFDG/A13v8Z2RzUgU1EJCXV1NXz6Nsb+OVzq9m+r5pPnNqHb10wnILu7aMuLaFZMv30uqioyIuLi6MuQ0REWoC78/TSrfz0qRWsrdjHhEHd+PeLRjKmf5eoS0sYZjbf3YuaWqaR2EREpNXNX7+D/569gvnrdzK0RwfuvbaIc0b0aNNDn7Y0BbiIiLSateV7+elTK3lq6RbyO2Zzx+Wj+fT4fmSkp0VdWtJRgIuIyAlXsbeK/31+NX96awPZGWl8/fxhfHnyINpnKYaOlc6ciIicMPura7n3lXX87uU1HKyt58oJ/bn53GHkd8yOurSkpwAXEZEWV1fvPD5/I794dhVbd1dxwaiefOfCEQzJ7xB1aW2GAlxERFqMu/Piym3cOWcFq7buZWxBF379uXGcNrBb1KW1OQpwERFpEe+UVnLH7BW8sXY7A7u357dXjePCk3upZ/kJogAXEZHjsnHHfv7n6ZXMWryJbrlZ/NclJ3HlhAKyMtSz/ERSgIuIyDGp3F/Nr14o4eE31pOWBjd+dChfOWswHXMyoy4tJSjARUTkqBysqePB19/jNy+WsKeqlk+P78ct5w+jd+d2UZeWUhTgIiISl/p658nFZfzs6VWUVR7g7OH53HrhCEb06hR1aSlJAS4iIs16dXUFd8xZztJNuzm5byd++qlTmDQ0L+qyUpoCXEREDmv55t3cOWcFL68qp2+Xdvzys2O45NQ+pKWpZ3nUFOAiIvIhm3cd4OfPrOJvC0rpmJ3B9y4aydUTB5CTmR51aRJSgIuIyCG7D9bwu5fWcO+r63CHL585iH/96FC6tM+KujRpRAEuIiJU19bzyFvr+d/nV7Nzfw2XjenDNy4YTv9u7aMuTQ5DAS4iksLcndnvbuGnT69g/fb9fGRId7574UhG9+scdWnSDAW4iEiKenvdDn48ezmLN1YyvGdH7v/CaZw9LF9DnyYJBbiISIop2baXO+es4LnlW+nZKZufXnEKV4zvR7p6licVBbiISIrYtucgv3xuNX+Zt5F2mel862PD+eKkQbTLUs/yZKQAFxFp4/ZV1fL7V9Yyfe5aqmvr+fzpBdx0biF5HbKjLk2OgwJcRKQNW7yxkq/+cT6bdx3kwpN78e2pIxiUlxt1WdICFOAiIm3Uk4vK+Pbj75DXIZvHvzqRooHdoi5JWpACXESkjamvd/7nmZXc89IaJgzqxj1XjaO7msvbnLjutm5mU81spZmVmNmtTSwvMLMXzWyhmb1jZheF868ys0Uxj3ozGxMueyncZ8OyHi16ZCIiKWjPwRpueLiYe15aw5UTCvjjl05XeLdRzV6Bm1k68BvgfKAUmGdms9x9Wcxq3wcec/d7zGwUMBsY6O6PAI+E+xkNPOHui2K2u8rdi1vmUEREUtv67fv48oPFrK3Yx+2XnsTVZwzQb7rbsHia0CcAJe6+FsDMHgUuBWID3IGGG8J2BjY1sZ8rgUePvVQRETmc10sq+NqfFgDw8Bcn8BHd6rPNiyfA+wIbY6ZLgdMbrXMb8IyZ3QTkAuc1sZ/PEgR/rPvNrA74G/Ajd/d4ihYRkYC788c313Pb35cxOC+XP1xbxIDu6mWeCuL6DjwOVwIPuHs/4CLgYTM7tG8zOx3Y7+5LYra5yt1HA5PDx9VN7djMbjCzYjMrLi8vb6FyRUSSX3VtPd97Ygn/8eRSzh6Wz4yvfUThnULiCfAyoH/MdL9wXqwvAY8BuPsbQA4Q234zDfhz7AbuXhb+dw/wJ4Km+g9x9+nuXuTuRfn5+XGUKyLS9m3fW8XV977Fn97awL+cPYTp1xTRMScz6rKkFcUT4POAQjMbZGZZBGE8q9E6G4BzAcxsJEGAl4fTacBniPn+28wyzCwvfJ4JXAwsQUREmrV8824u/c1rLNpYyd3TxvCdqSM0jnkKavY7cHevNbMbgaeBdOA+d19qZrcDxe4+C/gG8Hszu4WgQ9t1Md9nTwE2NnSCC2UDT4fhnQ48B/y+xY5KRKSNenrpFm75yyI65mTw2Fcmcmr/LlGXJBGxZOo3VlRU5MXF+tWZiKQed+fXL5Tw82dXcWr/Lky/ejw9O+VEXZacYGY2392LmlqmkdhERBLcgeo6vvn4Yv75zmY+ObYvd1w+mpxM3UEs1SnARUQS2KbKA1z/UDHLNu/muxeO4IYpgzU4iwAKcBGRhDV//Q6+8vACqmrquO/a0/joCI04Le9TgIuIJKC/Fm/kezOX0KdLDo/ecDpDe3SMuiRJMApwEZEEUltXzx1zVnDvq+s4c2gev/7cWLq0z4q6LElACnARkQSx60ANN/15IXNXlXPdRwby/Y+PJCO9pQbMlLZGAS4ikgDWlO/l+geL2bhzP3dePpppEwqiLkkSnAJcRCRiL68q58Y/LSArPY1HvnwGEwZ1i7okSQIKcBGRiLg79766jv+evZzhvTrx+2vG069r+6jLkiShABcRiUBVbR3fm7mEx+eXcuHJvfjZp08lN1v/JEv89G4REWll2/Yc5KsPz2fBhkr+33mF/Ns5haTpZiRylBTgIiKtaEnZLq5/qJjK/TX89qpxXDS6d9QlSZLS7xNEJBIHqutYsGEnuw7URF1Kq/n74k186nevk2bG4/8yUeEtx0VX4CLSKtyd5Zv38MrqcuauLmfeup1U19WTnmaM6d+FyYV5TC7M59R+ndvcb5/r6527nlvFr14ooWhAV3539XjyOmRHXZYkOQW4iJww2/Yc5NXVFbwSPir2VgEwvGdHrpk4gHEDurJ8827mrq7g7udX88vnVtMpJ4NJQ4Mwn1yYR/9uyd0re19VLbf8ZRHPLNvKZ4v688PLTiYro219QJFo6H7gItJiDtbUUfzezvAqu4Llm3cD0D03izML3w/lpu5jvXNfNa+v2c7cVeW8srqcTbsOAjAoL/fQ1fnEId3pkEQ9tTfu2M/1DxWzette/uPjI7n2IwN1JzE5Kke6H7gCXESOmbuzauveQ4H91trtVNXWk5luFA3oxuRheUwpzGdU705H1cva3VlTvo9XVpfzyuoK3liznQM1dWSkGeMGdGVKGOgn9+1MeoL23n5z7Xb+5Y/zqat3fnvVeM4szIu6JElCCnARaTHb91bxaklDs3g5W3cHzeJDe3RgcmEQ2KcP7kb7rJa7Uq6qrWPB+spD358vKQuu7Lu0z2TS0DzOKsznzMI8+nRp12KveTweeWs9//nkUgZ0b88frj2NQXm5UZckSUoBLiLHrLq2nvnrdzJ3ddC03Tg8G66GWzM8o/gQEY+aunpu//syHn5zPR8dns/dV46lU05mq9YgbYsCXETi1rj5+s2129lfnbjN1+7O6m17mbvqg834WelpjB/Q9Zib8Y/Wzn3VfO2RBbyxdjtfOWsw3/7YiIQ4P5LcFOAickSV+6t5reTIHcjOGNyNjklwNXk8HemO1aqte/jSg/PYuruKOy8fzeXj+rXYviW1KcBF5ANq6upZuKHyUMi9U1qJO3TMyeDMNvQTLmj8U7ZyKvZWA8FP2aYMC451wqBu5GSmH9P+n1u2lZsfXUhudgb/d/V4xhZ0bcnyJcUpwEVSnLuzfvt+XlldzsurgmbxvVW1KTGISqz6emfFlj2Hvh54+70dVNfWk5WRxumDuh06DyN6dWz2517uzj0vr+F/nl7J6L6dmX51Eb06t9xVvQgowEVS0q4DNbyxpoK54ZXnxh0HAOjfrR1TCvMP/a66c7vEbxY/UQ5U1/H2ezsOfXWwauteAPI7Zh/qDDdpaB75HT84atrBmjq+/fg7zFq8iUvH9OEnV5xyzFfwIkeiABdJAbV19Swu3XXo6nLRxkrq6p0O2RlMHNL9UOezAd3bazCRw9iy6+Ch8/dqSQU79gXN7aN6dzrUGa5/1/bc+OcFvFu2i299bDj/ctYQnU85YY47wM1sKnA3kA78wd3vbLS8AHgQ6BKuc6u7zzazgcByYGW46pvu/tVwm/HAA0A7YDZwszdTjAJc5IM27tgf/LxrVQWvralgz8FazOCUfl04qzCPycPyGdO/C5ltuFn8RKmvd5Zt3s3L4dX5/PU7qakL/onKzUrn7mljOW9Uz4irlLbuuALczNKBVcD5QCkwD7jS3ZfFrDMdWOju95jZKGC2uw8MA/wf7n5yE/t9G/g34C2CAP9fd59zpFoU4JLq9hys4c21Ow5dJa6r2AdAn845TC7MZ8qwfCYN7U6X9lkRV9r27Kuq5a1121m8cRcXn9Kbwp4doy5JUsCRAjyeUQ4mACXuvjbc2aPApcCymHUc6BQ+7wxsaqag3kAnd38znH4IuAw4YoCLpJq6emdJ2a7wO9oKFmzYSW290y4znYlDunPtxAFMHpbP4LxcNeOeYLnZGZwzoifnjNBVtySGeAK8L7AxZroUOL3ROrcBz5jZTUAucF7MskFmthDYDXzf3V8J91naaJ99m3pxM7sBuAGgoKAgjnJFktumygOHft71WkkFlfuD+2WP7tuZG6YMZnJhPuMGdCE7Q52mRFJZS40zeCXwgLv/3MwmAg+b2cnAZqDA3beH33k/YWYnHc2O3X06MB2CJvQWqlckYeyvruXNtduZuyroLb6mPGgW79kpm/NG9gyaxYd0p7vuHy0iMeIJ8DKgf8x0v3BerC8BUwHc/Q0zywHy3H0bUBXOn29ma4Bh4faxQxU1tU+RNqmhc1RD57Pi9TuoqXNyMtM4fVB3rpxQwJRh+RT26KBmcRE5rHgCfB5QaGaDCEJ2GvC5RutsAM4FHjCzkUAOUG5m+cAOd68zs8FAIbDW3XeY2W4zO4OgE9s1wK9a5pBEEs/W3Qd5ZXUFc1eVf+DnSSN7d+KLkwYxZVg+4wd01W+JRSRuzQa4u9ea2Y3A0wQ/EbvP3Zea2e1AsbvPAr4B/N7MbiHo0Hadu7uZTQFuN7MaoB74qrvvCHf9Nd7/Gdkc1IFN2pCGAUJeCTufrdy6B4C8DtmcPSyfycPymDQ0jx4dNXKXiBwbDeQi0gLcgyE6G3qLxw7ROWFgMETnlGHxDdEpItLgeH9GJiJNKN9TxaslwffYr5RUUL4nuCf18J4dueaM4OddEwZ2o12WmsVFpOUpwEXidLCmjvnrdzJ3dTlzV71/m8puuVnhHbyCoUp1QwsRaQ0KcJHDcHdWb9t7qFn8rXXbOVhTT2a6UTSgG9+eOpwphfmM6t2JtDQ1i4tI61KAi8TYsa+aV0sqDnU+27L7IABD8nOZdloBU4blcfqg7uRm638dEYmW/hWSlFZdW8/89TsPjS2+ZNMu3KFzu0zOLMxjSmEeZxbm07dLu6hLFRH5AAW4pBR3Z23FPl5ZFQxV+uba7eyvriMjzRhX0JWvnzeMycPyGd23M+lqFheRBKYAlzavcn81r5VsP3SVXVZ5AICB3dvzqfH9mFyYzxmDu9ExJzPiSkVE4qcAlzanpq6eRRsrmRteZb9TWok7dMzJYNKQPL720SFMHppPQff2UZcqInLMFOCS9Nyd9dv3H7qD1xtrtrO3qpY0g7EFXbn53EImF+Zzar/OZKSnRV2uiEiLUIBLUtp1oIY31lQwd3VwB6+NO4Jm8X5d23HJmD5MKcxj4pA8OrdTs7iItE0KcEkKtXX1LC7ddeh77EUbK6mrd3Kz0pk4JI8bJgf3yR7Qvb2GKhWRlKAAl4S1ccf+Q7fcfG1NBXsO1mIGp/TrwtfOHsLkwnzGFnQhU83iIpKCFOCSMPYcrOHNtTsOXWWvq9gHQJ/OOVx0cu/gDl5D8uiamxVxpSIi0VOAS2Tq6p13y3YdGvVswYad1NY77TLTmTikO9dMHMDkwnyG5OeqWVxEpBEFuLSqssoDvBr2Fn+tpILK/TUAnNy3E9dPGczkwjzGD+hKdobu4CUiciQKcDmh9lXV8ta67cxdFfQWX1MeNIv37JTNeSN7MrkwjzOH5tG9Q3bElYqIJBcFuLSo+npn2ebd4S03y5m/fic1dU52RhqnD+7OlRMKmFyYz7CeHdQsLiJyHBTgcty27Dp4qOPZqyUV7NhXDcDI3p344qRBnFmYx2kDu5GTqWZxEZGWogCXo3aguo6339sR3hCknFVb9wKQ1yGLs4blH2oW79EpJ+JKRUTaLgW4NMvdWb55z6Gr7Lff20F1bT1ZGWlMGNiNK8YFNwQZ0asjabqDl4hIq1CAS5O27TnIayUVvLIqGK60Ym8VAMN6duDqMwYwuTCP0wd1p12WmsVFRKKgABcADtbUUfzezkM3BFm+eTcA3XKzOHNoHpML85hcmE+vzmoWFxFJBArwFOXurN62l7nhICpvrdvOwZp6MtON8QO68q2PDeesYfmM6t1JzeIiIglIAZ5CduyrPvQ99iury9m6O2gWH5Kfy7TTCpgyLGgWz83W20JEJNHF9S+1mU0F7gbSgT+4+52NlhcADwJdwnVudffZZnY+cCeQBVQD33L3F8JtXgJ6AwfC3Vzg7tuO94DkfdW19cxfv/NQaC/ZtAt36NwukzOH5jFlWB5nFubTt0u7qEsVEZGj1GyAm1k68BvgfKAUmGdms9x9Wcxq3wcec/d7zGwUMBsYCFQAn3D3TWZ2MvA00Ddmu6vcvbhlDkXcnTXl+w4F9ptrt7O/uo6MNGNcQVe+ft4wJg/LZ3TfzqSrWVxEJKnFcwU+AShx97UAZvYocCkQG+AOdAqfdwY2Abj7wph1lgLtzCzb3auOt3AJVO6v5rWS7YdCu6wyaNAY2L09nxof/LzrjMHd6JiTGXGlIiLSkuIJ8L7AxpjpUuD0RuvcBjxjZjcBucB5TeznCmBBo/C+38zqgL8BP3J3j7fwVFVTV8+ijZXMXRX0Fn+ntBJ36JiTwaQheXzto0OYPDSfgu7toy5VREROoJbqrXQl8IC7/9zMJgIPm9nJ7l4PYGYnAT8BLojZ5ip3LzOzjgQBfjXwUOMdm9kNwA0ABQUFLVRucnpqyRa++dfF7K2qJc1gTP8u3HxuIZML8zm1X2cy0tOiLlFERFpJPAFeBvSPme4Xzov1JWAqgLu/YWY5QB6wzcz6ATOBa9x9TcMG7l4W/nePmf2JoKn+QwHu7tOB6QBFRUUpfYV+9/Or6dExm599+hQmDsmjczs1i4uIpKp4LtnmAYVmNsjMsoBpwKxG62wAzgUws5FADlBuZl2AfxL0Sn+tYWUzyzCzvPB5JnAxsOQ4j6VNW755N8s37+a6SQOZenJvhbeISIprNsDdvRa4kaAH+XKC3uZLzex2M7skXO0bwPVmthj4M3Bd+H32jcBQ4Admtih89ACygafN7B1gEcEV/e9b+NjalJkLy8hIMy4+pU/UpYiISAKI6ztwd59N8NOw2Hk/iHm+DJjUxHY/An50mN2Oj7/M1FZX7zy5qIyPjuhBt9ysqMsREZEEoF5PSeD1NRVs3V3F5WP7Nr+yiIikBAV4EpixoIxOORmcM7JH1KWIiEiCUIAnuH1VtTy1ZAsXn9qH7AzdulNERAIK8AT31JItHKipU/O5iIh8gAI8wc1cWEZBt/aMH9A16lJERCSBKMAT2OZdB3htTQWfHNsXM918RERE3qcAT2BPLtqEO1w+Ts3nIiLyQQrwBOXuzFhQyvgBXRnQPTfqckREJMEowBPU0k27WbV1r66+RUSkSQrwBDVzYRlZ6WlcPFpDp4qIyIcpwBNQbV09Ty7axDkjetC5vW5aIiIiH6YAT0CvlFRQsbdKzeciInJYCvAENGNBGV3bZ3L2cA2dKiIiTVOAJ5g9B2t4ZukWPnFqH7Iy9OcREZGmKSESzJx3t1BVW88nNXSqiIgcgQI8wcxYWMrgvFzG9O8SdSkiIpLAFOAJpHTnft5cu0NDp4qISLMU4AnkyUWbALhMzeciItIMBXiCaBg6dcKgbvTv1j7qckREJMEpwBPEO6W7WFO+T/f9FhGRuCjAE8TMhWVkZaRx0Sm9oy5FRESSgAI8AdTU1TNr8SbOH9WTTjkaOlVERJqnAE8AL68sZ8e+aq7Q0KkiIhInBXgCmLGwlO65WUwuzI+6FBERSRJxBbiZTTWzlWZWYma3NrG8wMxeNLOFZvaOmV0Us+y74XYrzexj8e4zVew6UMNzy7fxiVP7kJmuz1MiIhKfZhPDzNKB3wAXAqOAK81sVKPVvg885u5jgWnAb8NtR4XTJwFTgd+aWXqc+0wJs9/dTHVtPVeM6xd1KSIikkTiueSbAJS4+1p3rwYeBS5ttI4DncLnnYFN4fNLgUfdvcrd1wEl4f7i2WdKmLGglKE9OnBy307NrywiIhKKJ8D7AhtjpkvDebFuAz5vZqXAbOCmZraNZ59t3obt+5n33k4uH6ehU0VE5Oi01JeuVwIPuHs/4CLgYTNrkX2b2Q1mVmxmxeXl5S2xy4Qxc2EZZnDZmJT77CIiIscpnpAtA/rHTPcL58X6EvAYgLu/AeQAeUfYNp59Eu5vursXuXtRfn7b6aXt7sxcWMrEwd3p06Vd1OWIiEiSiSfA5wGFZjbIzLIIOqXNarTOBuBcADMbSRDg5eF608ws28wGAYXA23Hus01bsKGS97bv132/RUTkmGQ0t4K715rZjcDTQDpwn7svNbPbgWJ3nwV8A/i9md1C0KHtOnd3YKmZPQYsA2qBf3X3OoCm9nkCji9hzVxYSk5mGheO1tCpIiJy9CzI2eRQVFTkxcXFUZdx3Kpq65jw4+c5e3g+d08bG3U5IiKSoMxsvrsXNbVMI4dE4MUV5ew6UKPmcxEROWYK8AjMXFhKfsdszhyaF3UpIiKSpBTgrWznvmpeWLGNS0/tQ4aGThURkWOkBGll/3h3MzV1zuUaOlVERI6DAryVzVhQyoheHRnVR0OniojIsVOAt6J1FftYuKGSy3XfbxEROU4K8FY0c0EpaQaXauhUERE5TgrwVlJf78xYWMakoXn07JQTdTkiIpLkFOCtpHj9Tkp3HlDzuYiItAgFeCuZubCU9lnpfOykXlGXIiIibYACvBUcrKnjH+9sZurJvWif1ezw8yIiIs1SgLeC55dvY8/BWi4fq99+i4hIy1CAt4KZC0vp1SmHiUO6R12KiIi0EQrwE2z73ipeWlnOpWP7kJ5mUZcjIiJthAL8BPv74k3U1ruaz0VEpEUpwE+wGQvLOKlPJ4b36hh1KSIi0oYowE+gkm17eKd0l+77LSIiLU4BfgLNWFBGeppxyZg+UZciIiJtjAL8BKmvd55ctInJhXn06KihU0VEpGUpwE+Qt9btoKzygO77LSIiJ4QC/ASZsaCUDtkZXDCqZ9SliIhIG6QAPwEOVNcxZ8kWLjy5FzmZ6VGXIyIibZAC/AR4ZtkW9lbVqvlcREROGAX4CTBzYRl9u7Tj9EHdoi5FRETaKAV4C9u25yBzV5Vz2dg+pGnoVBEROUHiCnAzm2pmK82sxMxubWL5XWa2KHysMrPKcP5HY+YvMrODZnZZuOwBM1sXs2xMCx5XZGYt2kS9wyc1dKqIiJxAzd6c2szSgd8A5wOlwDwzm+XuyxrWcfdbYta/CRgbzn8RGBPO7waUAM/E7P5b7v748R9G4pi5sIxT+3VmaI8OUZciIiJtWDxX4BOAEndf6+7VwKPApUdY/0rgz03M/xQwx933H32ZyWHllj0s3bRbQ6eKiMgJF0+A9wU2xkyXhvM+xMwGAIOAF5pYPI0PB/uPzeydsAk++zD7vMHMis2suLy8PI5yozNjYSkZacYnTtXQqSIicmK1dCe2acDj7l4XO9PMegOjgadjZn8XGAGcBnQDvtPUDt19ursXuXtRfn5+C5fbcurqnScWlnH28Hy6d2jys4iIiEiLiSfAy4D+MdP9wnlNaeoqG+AzwEx3r2mY4e6bPVAF3E/QVJ+03lizna27q9R5TUREWkU8AT4PKDSzQWaWRRDSsxqvZGYjgK7AG03s40Pfi4dX5ZiZAZcBS46q8gQzY0EpHXMyOHdkj6hLERGRFNBsL3R3rzWzGwmav9OB+9x9qZndDhS7e0OYTwMedXeP3d7MBhJcwb/caNePmFk+YMAi4KvHcyBR2ldVy1NLt3DpmD4aOlVERFpFswEO4O6zgdmN5v2g0fRth9n2PZro9Obu58RbZKJ7eukW9lfXaehUERFpNRqJrQXMXFhG/27tKBrQNepSREQkRSjAj9OWXQd5raSCT47tR/B1voiIyImnAD9OTy4qC4dO1eAtIiLSehTgx8HdmbGgjLEFXRiUlxt1OSIikkIU4Mdh2ebdrNy6R53XRESk1SnAj8PMBWVkphsXj+4ddSkiIpJiFODHqLaunicWbeKcET3ompsVdTkiIpJiFODH6NWSCir2auhUERGJhgL8GM1YUEaX9pl8dETi3mBFRETaLgX4MdhbVcszy7Zw8Sm9yc7Q0KkiItL6FODHYM67mzlYU6/mcxERiYwC/BjMWFDGwO7tGVfQJepSREQkRSnAj1JZ5QHeXLddQ6eKiEikFOBH6YmFZbiGThURkYgpwI+CuzNzYRmnDexKQff2UZcjIiIpTAF+FN4t20XJtr0aOlVERCKnAD8KMxaUkZWRxkUaOlVERCKmAI9TTV09f1+8ifNG9qBzu8yoyxERkRSnAI/T3FXlbN9XzeX67beIiCQABXicZiwso1tuFmcN19CpIiISPQV4HHYdqOHZZVu55NQ+ZKbrlImISPSURnGY8+5mqmvr9dtvERFJGArwOMxYUMaQ/FxO6dc56lJEREQABXizNu7Yz9vv7eDycRo6VUREEkdcAW5mU81spZmVmNmtTSy/y8wWhY9VZlYZs6wuZtmsmPmDzOytcJ9/MbOsFjmiFjZzYRkAl47pE3ElIiIi72s2wM0sHfgNcCEwCrjSzEbFruPut7j7GHcfA/wKmBGz+EDDMne/JGb+T4C73H0osBP40vEdSstrGDr1jMHd6NdVQ6eKiEjiiOcKfAJQ4u5r3b0aeBS49AjrXwn8+Ug7tKAt+hzg8XDWg8BlcdTSqhZtrGRdxT799ltERBJOPAHeF9gYM10azvsQMxsADAJeiJmdY2bFZvammV0WzusOVLp7bXP7jNKMBWVkZ6Rx4eheUZciIiLyARktvL9pwOPuXhczb4C7l5nZYOAFM3sX2BXvDs3sBuAGgIKCghYt9kiqa+v5+zubuOCkXnTM0dCpIiKSWOK5Ai8D+sdM9wvnNWUajZrP3b0s/O9a4CVgLLAd6GJmDR8gDrtPd5/u7kXuXpSf33qjoL24chuV+2u4fFzCNQyIiIjEFeDzgMKw13gWQUjParySmY0AugJvxMzrambZ4fM8YBKwzN0deBH4VLjqtcCTx3MgLW3mgjLyOmQzeWhe1KWIiIh8SLMBHn5PfSPwNLAceMzdl5rZ7WYW26t8GvBoGM4NRgLFZraYILDvdPdl4bLvAF83sxKC78TvPf7DaRmV+6t5fkUwdGqGhk4VEZEEFNd34O4+G5jdaN4PGk3f1sR2rwOjD7PPtQQ93BPOP97ZTE2dq/lcREQSli4vmzBjQSnDenbgpD6doi5FRESkSQrwRt6r2MeCDZUaOlVERBKaAryRmQvLMNPQqSIiktgU4DEahk6dNCSP3p3bRV2OiIjIYSnAY8xfv5MNO/brvt8iIpLwFOAx/ragjHaZ6Uw9WUOniohIYlOAhw7W1PHPdzYx9eRe5Ga39AizIiIiLUsBHnphxTZ2H6xV87mIiCQFBXhoxoIyenTMZpKGThURkSSgAAe2763ipZXbuGxsX9LT9NtvERFJfApwgqFTa+s1dKqIiCQPBTgwY2EZI3t3YkQvDZ0qIiLJIeUDfE35XhZvrOQKXX2LiEgSSfkAn7mgjDSDS07V0KkiIpI8UjrA6+uDoVPPLMynR6ecqMsRERGJW0oH+Nvv7aCs8oCaz0VEJOmkdIDPWFBKblY6F4zS0KkiIpJcUjbAD9bUMefdLVw4ujftstKjLkdEROSopGyAP7tsK3uqarlcQ6eKiEgSStkAn7V4E30653DG4O5RlyIiInLUUva2Wz//zKm8V7GPNA2dKiIiSShlr8A75WRySr8uUZchIiJyTFI2wEVERJKZAlxERCQJxRXgZjbVzFaaWYmZ3drE8rvMbFH4WGVmleH8MWb2hpktNbN3zOyzMds8YGbrYrYb01IHJSIi0tY124nNzNKB3wDnA6XAPDOb5e7LGtZx91ti1r8JGBtO7geucffVZtYHmG9mT7t7Zbj8W+7+eMscioiISOqI5wp8AlDi7mvdvRp4FLj0COtfCfwZwN1Xufvq8PkmYBuQf3wli4iISDwB3hfYGDNdGs77EDMbAAwCXmhi2QQgC1gTM/vHYdP6XWaWHXfVIiIiKa6lO7FNAx5397rYmWbWG3gY+IK714ezvwuMAE4DugHfaWqHZnaDmRWbWXF5eXkLlysiIpKc4gnwMqB/zHS/cF5TphE2nzcws07AP4HvufubDfPdfbMHqoD7CZrqP8Tdp7t7kbsX5eer9V1ERATiC/B5QKGZDTKzLIKQntV4JTMbAXQF3oiZlwXMBB5q3FktvCrHzAy4DFhyjMcgIiKScprthe7utWZ2I/A0kA7c5+5Lzex2oNjdG8J8GvCou3vM5p8BpgDdzey6cN517r4IeMTM8gEDFgFfbYHjERERSQn2wbxNbGZWDqxvwV3mARUtuD9pms5z69B5bj06161D5xkGuHuT3x8nVYC3NDMrdveiqOto63SeW4fOc+vRuW4dOs9HpqFURUREkpACXEREJAmleoBPj7qAFKHz3Dp0nluPznXr0Hk+gpT+DlxERCRZpfoVuIiISFJK2QBv7hapcvzMrL+ZvWhmy8Jbyt4cdU1tmZmlm9lCM/tH1LW0VWbWxcweN7MVZrbczCZGXVNbZGa3hP9mLDGzP5tZTtQ1JaKUDPCYW6ReCIwCrjSzUdFW1SbVAt9w91HAGcC/6jyfUDcDy6Muoo27G3jK3UcAp6Lz3eLMrC/wb0CRu59MMIDYtGirSkwpGeAc/S1S5RiE490vCJ/vIfjHrsk72cnxMbN+wMeBP0RdS1tlZp0JRpa8F8Ddq929MtKi2q4MoJ2ZZQDtgU0R15OQUjXA475FqrQMMxsIjAXeiriUtuqXwLeB+mbWk2M3CCgH7g+/qviDmeVGXVRb4+5lwM+ADcBmYJe7PxNtVYkpVQNcWpGZdQD+Bvw/d98ddT1tjZldDGxz9/lR19LGZQDjgHvcfSywD1D/mRZmZl0JWkQHAX2AXDP7fLRVJaZUDfCjuUWqHAczyyQI70fcfUbU9bRRk4BLzOw9gq+DzjGzP0ZbUptUCpS6e0Mr0uMEgS4t6zxgnbuXu3sNMAP4SMQ1JaRUDfC4bpEqxye8Vey9wHJ3/0XU9bRV7v5dd+/n7gMJ3ssvuLuuWFqYu28BNprZ8HDWucCyCEtqqzYAZ5hZ+/DfkHNRZ8EmNXs70bbocLdIjbistmgScDXwrpktCuf9u7vPjq4kkeNyE8GtkLOAtcAXIq6nzXH3t8zscWABwS9ZFqIR2ZqkkdhERESSUKo2oYuIiCQ1BbiIiEgSUoCLiIgkIQW4iIhIElKAi4iIJCEFuIiISBJSgIuIiCQhBbiIiEgS+v8UerkOnDVxMgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Evaluation against Test Dataset :\n", + "------------------------------------\n", + "1/1 [==============================] - 0s 16ms/step - loss: 0.2216 - accuracy: 0.9333\n" + ] + }, + { + "data": { + "text/plain": [ + "[0.22156038880348206, 0.9333333373069763]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Make it verbose so we can see the progress\n", + "VERBOSE=1\n", + "\n", + "#Setup Hyper Parameters for training\n", + "\n", + "#Set Batch size\n", + "BATCH_SIZE=16\n", + "#Set number of epochs\n", + "EPOCHS=10\n", + "#Set validation split. 20% of the training data will be used for validation\n", + "#after each epoch\n", + "VALIDATION_SPLIT=0.2\n", + "\n", + "print(\"\\nTraining Progress:\\n------------------------------------\")\n", + "\n", + "#Fit the model. This will perform the entire training cycle, including\n", + "#forward propagation, loss computation, backward propagation and gradient descent.\n", + "#Execute for the specified batch sizes and epoch\n", + "#Perform validation after each epoch \n", + "history=model.fit(X_train,\n", + " Y_train,\n", + " batch_size=BATCH_SIZE,\n", + " epochs=EPOCHS,\n", + " verbose=VERBOSE,\n", + " validation_split=VALIDATION_SPLIT)\n", + "\n", + "print(\"\\nAccuracy during Training :\\n------------------------------------\")\n", + "import matplotlib.pyplot as plt\n", + "\n", + "#Plot accuracy of the model after each epoch.\n", + "pd.DataFrame(history.history)[\"accuracy\"].plot(figsize=(8, 5))\n", + "plt.title(\"Accuracy improvements with Epoch\")\n", + "plt.show()\n", + "\n", + "#Evaluate the model against the test dataset and print results\n", + "print(\"\\nEvaluation against Test Dataset :\\n------------------------------------\")\n", + "model.evaluate(X_test,Y_test)" + ] + }, + { + "cell_type": "markdown", + "id": "55efdff7", + "metadata": {}, + "source": [ + "### 4.5. Saving and Loading Models\n", + "\n", + "The training and inference environments are usually separate. Models need to be saved after they are validated. They are then loaded into the inference environments for actual prediction" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "7434d7cb", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:absl:Function `_wrapped_model` contains input name(s) Hidden-Layer-1_input with unsupported characters which will be renamed to hidden_layer_1_input in the SavedModel.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "INFO:tensorflow:Assets written to: iris_save/assets\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO:tensorflow:Assets written to: iris_save/assets\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "Hidden-Layer-1 (Dense) (None, 128) 640 \n", + "_________________________________________________________________\n", + "Hidden-Layer-2 (Dense) (None, 128) 16512 \n", + "_________________________________________________________________\n", + "Output-Layer (Dense) (None, 3) 387 \n", + "=================================================================\n", + "Total params: 17,539\n", + "Trainable params: 17,539\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "#Saving a model\n", + " \n", + "model.save(\"iris_save\")\n", + " \n", + "#Loading a Model \n", + "loaded_model = keras.models.load_model(\"iris_save\")\n", + "\n", + "#Print Model Summary\n", + "loaded_model.summary()" + ] + }, + { + "cell_type": "markdown", + "id": "b6cc6fb5", + "metadata": {}, + "source": [ + "### 4.6. Predictions with Deep Learning Models" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "58037d5d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Raw Prediction Output (Probabilities) : [[0.02282826 0.6545039 0.32266787]]\n", + "Prediction is ['versicolor']\n" + ] + } + ], + "source": [ + "#Raw prediction data\n", + "prediction_input = [[6.6, 3. , 4.4, 1.4]]\n", + "\n", + "#Scale prediction data with the same scaling model\n", + "scaled_input = scaler.transform(prediction_input)\n", + "\n", + "#Get raw prediction probabilities\n", + "raw_prediction = model.predict(scaled_input)\n", + "print(\"Raw Prediction Output (Probabilities) :\" , raw_prediction)\n", + "\n", + "#Find prediction\n", + "prediction = np.argmax(raw_prediction)\n", + "print(\"Prediction is \", label_encoder.inverse_transform([prediction]))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dc76d3ca", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.8.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/deep_learning/Exercise Files/code_05_XX Spam - Classification Example.ipynb b/deep_learning/Exercise Files/code_05_XX Spam - Classification Example.ipynb new file mode 100755 index 0000000..ab7abcb --- /dev/null +++ b/deep_learning/Exercise Files/code_05_XX Spam - Classification Example.ipynb @@ -0,0 +1,401 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "c593e910", + "metadata": {}, + "source": [ + "### 5.1. Setup\n", + "\n", + "Install required text processing libraries for the example" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "91d8262a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: nltk in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (3.6.3)\n", + "Requirement already satisfied: tqdm in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from nltk) (4.62.3)\n", + "Requirement already satisfied: regex in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from nltk) (2021.9.30)\n", + "Requirement already satisfied: click in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from nltk) (8.0.1)\n", + "Requirement already satisfied: joblib in /Users/linkedin/opt/anaconda3/envs/deeplearning/lib/python3.8/site-packages (from nltk) (1.0.1)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[nltk_data] Downloading package stopwords to\n", + "[nltk_data] /Users/linkedin/nltk_data...\n", + "[nltk_data] Package stopwords is already up-to-date!\n", + "[nltk_data] Downloading package punkt to /Users/linkedin/nltk_data...\n", + "[nltk_data] Package punkt is already up-to-date!\n", + "[nltk_data] Downloading package wordnet to\n", + "[nltk_data] /Users/linkedin/nltk_data...\n", + "[nltk_data] Package wordnet is already up-to-date!\n" + ] + } + ], + "source": [ + "!pip install nltk\n", + "\n", + "import nltk\n", + "\n", + "nltk.download('stopwords')\n", + "nltk.download('punkt')\n", + "\n", + "from nltk.corpus import stopwords\n", + "\n", + "nltk.download('wordnet')\n", + "from nltk.stem import WordNetLemmatizer\n", + "lemmatizer = WordNetLemmatizer()" + ] + }, + { + "cell_type": "markdown", + "id": "f40c3a4f", + "metadata": {}, + "source": [ + "### 5.2. Creating Text Representations\n", + "\n", + "Text data needs to be converted to numeric representations before they can be used to train deep learning models. The Spam classification feature data is converted to TF-IDF vectors and the target variable is converted to one-hot encoding." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "08900f4b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Loaded Data :\n", + "------------------------------------\n", + " CLASS SMS\n", + "0 ham said kiss, kiss, i can't do the sound effects...\n", + "1 ham <#> ISH MINUTES WAS 5 MINUTES AGO. WTF.\n", + "2 spam (Bank of Granite issues Strong-Buy) EXPLOSIVE ...\n", + "3 spam * FREE* POLYPHONIC RINGTONE Text SUPER to 8713...\n", + "4 spam **FREE MESSAGE**Thanks for using the Auction S...\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import os\n", + "import numpy as np\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import scale\n", + "\n", + "#Load Spam Data and review content\n", + "spam_data = pd.read_csv(\"Spam-Classification.csv\")\n", + "\n", + "print(\"\\nLoaded Data :\\n------------------------------------\")\n", + "print(spam_data.head())\n", + "\n", + "#Separate feature and target data\n", + "spam_classes_raw = spam_data[\"CLASS\"]\n", + "spam_messages = spam_data[\"SMS\"]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "64202dcd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "TF-IDF Matrix Shape : (1500, 4566)\n", + "One-hot Encoding Shape : (1500, 2)\n" + ] + } + ], + "source": [ + "\n", + "import nltk\n", + "import tensorflow as tf\n", + "\n", + "#Custom tokenizer to remove stopwords and use lemmatization\n", + "def customtokenize(str):\n", + " #Split string as tokens\n", + " tokens=nltk.word_tokenize(str)\n", + " #Filter for stopwords\n", + " nostop = list(filter(lambda token: token not in stopwords.words('english'), tokens))\n", + " #Perform lemmatization\n", + " lemmatized=[lemmatizer.lemmatize(word) for word in nostop ]\n", + " return lemmatized\n", + "\n", + "from sklearn.feature_extraction.text import TfidfVectorizer\n", + "\n", + "#Build a TF-IDF Vectorizer model\n", + "vectorizer = TfidfVectorizer(tokenizer=customtokenize)\n", + "\n", + "#Transform feature input to TF-IDF\n", + "tfidf=vectorizer.fit_transform(spam_messages)\n", + "#Convert TF-IDF to numpy array\n", + "tfidf_array = tfidf.toarray()\n", + "\n", + "#Build a label encoder for target variable to convert strings to numeric values.\n", + "from sklearn import preprocessing\n", + "label_encoder = preprocessing.LabelEncoder()\n", + "spam_classes = label_encoder.fit_transform(\n", + " spam_classes_raw)\n", + "\n", + "#Convert target to one-hot encoding vector\n", + "spam_classes = tf.keras.utils.to_categorical(spam_classes,2)\n", + "\n", + "print(\"TF-IDF Matrix Shape : \", tfidf.shape)\n", + "print(\"One-hot Encoding Shape : \", spam_classes.shape)\n", + "\n", + "X_train,X_test,Y_train,Y_test = train_test_split( tfidf_array, spam_classes, test_size=0.10)" + ] + }, + { + "cell_type": "markdown", + "id": "585a983f", + "metadata": {}, + "source": [ + "### 5.3. Building and Evaluating the Model" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "d927db5d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential_2\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "Hidden-Layer-1 (Dense) (None, 32) 146144 \n", + "_________________________________________________________________\n", + "Hidden-Layer-2 (Dense) (None, 32) 1056 \n", + "_________________________________________________________________\n", + "Output-Layer (Dense) (None, 2) 66 \n", + "=================================================================\n", + "Total params: 147,266\n", + "Trainable params: 147,266\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "from tensorflow import keras\n", + "from tensorflow.keras import optimizers\n", + "from tensorflow.keras.regularizers import l2\n", + "\n", + "#Setup Hyper Parameters for building the model\n", + "NB_CLASSES=2\n", + "N_HIDDEN=32\n", + "\n", + "model = tf.keras.models.Sequential()\n", + "\n", + "model.add(keras.layers.Dense(N_HIDDEN,\n", + " input_shape=(X_train.shape[1],),\n", + " name='Hidden-Layer-1',\n", + " activation='relu'))\n", + "\n", + "model.add(keras.layers.Dense(N_HIDDEN,\n", + " name='Hidden-Layer-2',\n", + " activation='relu'))\n", + "\n", + "model.add(keras.layers.Dense(NB_CLASSES,\n", + " name='Output-Layer',\n", + " activation='softmax'))\n", + "\n", + "model.compile(loss='categorical_crossentropy',\n", + " metrics=['accuracy'])\n", + "\n", + "model.summary()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "294ceb7c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Training Progress:\n", + "------------------------------------\n", + "Epoch 1/10\n", + "5/5 [==============================] - 1s 37ms/step - loss: 0.6866 - accuracy: 0.6370 - val_loss: 0.6652 - val_accuracy: 0.8741\n", + "Epoch 2/10\n", + "5/5 [==============================] - 0s 10ms/step - loss: 0.6388 - accuracy: 0.9574 - val_loss: 0.6146 - val_accuracy: 0.9370\n", + "Epoch 3/10\n", + "5/5 [==============================] - 0s 10ms/step - loss: 0.5743 - accuracy: 0.9796 - val_loss: 0.5619 - val_accuracy: 0.9407\n", + "Epoch 4/10\n", + "5/5 [==============================] - 0s 11ms/step - loss: 0.5082 - accuracy: 0.9843 - val_loss: 0.5100 - val_accuracy: 0.9593\n", + "Epoch 5/10\n", + "5/5 [==============================] - 0s 10ms/step - loss: 0.4445 - accuracy: 0.9889 - val_loss: 0.4620 - val_accuracy: 0.9519\n", + "Epoch 6/10\n", + "5/5 [==============================] - 0s 10ms/step - loss: 0.3836 - accuracy: 0.9907 - val_loss: 0.4137 - val_accuracy: 0.9630\n", + "Epoch 7/10\n", + "5/5 [==============================] - 0s 10ms/step - loss: 0.3270 - accuracy: 0.9917 - val_loss: 0.3705 - val_accuracy: 0.9630\n", + "Epoch 8/10\n", + "5/5 [==============================] - 0s 10ms/step - loss: 0.2756 - accuracy: 0.9917 - val_loss: 0.3304 - val_accuracy: 0.9630\n", + "Epoch 9/10\n", + "5/5 [==============================] - 0s 9ms/step - loss: 0.2299 - accuracy: 0.9926 - val_loss: 0.2952 - val_accuracy: 0.9630\n", + "Epoch 10/10\n", + "5/5 [==============================] - 0s 10ms/step - loss: 0.1903 - accuracy: 0.9944 - val_loss: 0.2637 - val_accuracy: 0.9556\n", + "\n", + "Accuracy during Training :\n", + "------------------------------------\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAeoAAAE/CAYAAACJnoCmAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAq4klEQVR4nO3dfXhcd33n/fdHT5Zly5YTO44tO7ZDbBIndhLqhrbZQO5CINBAKN1tkwIbelNyc21DWR62C902sGG5272329LdZummbUopLWkauqxJTQMlBMoCrZ0Sj2wHJ44h8YwfosTW+Em2nr73H+fIPpYla2SP5oykz+u65tJ5nPnO0Vzzmd85v/mNIgIzMzOrTw15F2BmZmZjc1CbmZnVMQe1mZlZHXNQm5mZ1TEHtZmZWR1zUJuZmdUxB7VZlUi6SdLOvOuw0yS9Q9JXz7H+ZknFWtY0UZJ+JOn1eddh+XFQW81IekLSIUmz8q5lMkTEP0TEK/OuY6qoRUhGxF9ExBsyjxmSrjjf+0tfwyckHc3cvlydas1G56C2mpC0ErgJCOCtNX7splo+Xi1Mx+c0hdwTEXMzt7fkXZBNbw5qq5V/DXwP+CxwV3aFpOWS/kZSt6SXJf1BZt17JT0t6YikHZJelS4/o2Uk6bOS/lM6fbOkoqR/L2k/8KeSFkh6NH2MQ+n0ssz+F0n6U0l70/VfSpdvk/SWzHbNkl6SdP3IJziyhZiesvx3kgqSjkn6E0mLJX0lfT5/L2lBuu3K9DndndawT9JHMvf1CUmPSPq8pMPAuyUtlbRR0kFJuyS9N912qaReSRdl9r8+rbs5nf+/0+N6SNJjklZktg1J/0bSs2mdn5T0CknfkXRY0sOSWjLb3ybpKUk96TbrRxyDj6THoCzpryS1SpoDfAVYmmmZLpV0g6Qt6eMckPS7o72YJH1T0s+l0zemNf9MOv86SU+l0++W9O10+lvp7lvTx/uFzP19WNKL6XH/pdEeczyZ192vp8f6R5LekVk/X9Ln0tfg85J+Q1JDZv2or/XUdSOP4fnUaFNURPjm26TfgF3AvwF+DOgHFqfLG4GtwO8Bc4BW4F+k6/4VUAJ+HBBwBbAiXRfAFZn7/yzwn9Lpm4EB4D8Ds4DZwMXAzwFtQDvw18CXMvv/LfBXwAKgGXhtuvzXgL/KbHc70DXGc7wZKGbmf0Ty4WQx0Am8CPwzcH36PB8HPp5uuzJ9Tl9Ij8M6oBt4fbr+E+lxexvJB+zZwLeA/5He13Xp9j+dbv848N5MLf8F+MPMc9gFXAU0Ab8BfCezbQD/G5gHXA2cBL4OXA7MB3YAd6XbXp8+r1en/8u70uc9K3MM/glYClwEPA28b7TjlS77LvCudHou8BNjHOv7gP+eTv868BzwnzPrfj+dfjfw7RHP7YoR/7OBdJ9m4M3AcWDBGI/7BPDL5/j/DwC/S/K6ey1wDHhluv5z6XFtT//fzwDvqeC1PuYx9G1m3HIvwLfpfwP+RRoyC9P5HwAfTKd/Mg2YplH2ewz4wBj3OV5Q9wGt56jpOuBQOr0EGBrtzTl9czwCzEvnHwF+bYz7PCN40jfYd2Tmvwh8JjP/ftIPC5wO6isz6/8/4E/S6U8A38qsWw4MAu2ZZb8FfDad/mXg8XRawB7gNen8V4YDIp1vSMNpRebY3phZ/yTw7zPz/xX4dDr9GeCTI47DTk5/0PkR8M4Rz2n4A8MZxytd9i3gPw6/Vs7x/3sdUEin/y59vt9L578JvD2dfjfjB3UvmdcfyQePsT4gPJEeq57M7ZOZ+xoA5mS2fxj4TZIPMX3A2sy6/wd4ooLX+pjH0LeZcfOpb6uFu4CvRsRL6fxfcvr093Lg+YgYGGW/5SQtpfPRHREnhmcktUn6n+kpx8MkgdAhqTF9nIMRcWjknUTEXuD/AD8nqQN4E/AXE6jjQGa6d5T5uSO235OZfp7kg8Jo65amNR8ZsX1nOv1F4CclLQFeQ/JB5B/SdSuA309PVfcAB0nCvDNzX5XWvQL48PB9pfe3fETd+zPTx0d5zlnvAdYAP5C0WdJtY2z3XWCNpMUkH7o+ByyXtBC4geT/W6mXR7z+xqvxVyOiI3P7zcy6QxFxLDM//D9cSNJif37EuuFjPt5rfSLH0KYZd0ixSSVpNvDzQKOS68WQnBbskHQtSfhcJqlplLDeA7xijLs+TnIae9ilQLYH8cifhfsw8Erg1RGxX9J1wPc53dq8SFJHRPSM8lh/RtJiawK+GxGlsZ5vFSwnOeMAcBmwN7Mu+5z2ktTcngnry0hOnxIRh5R8LekXSE5xPxQRw/vvAT4VERP5wDGW4fv61Hnse9ZP90XEs8Cd6bXbtwOPSLp4RPgREcclPQl8ANgWEX2SvgN8CHgu86Gw1hZImpOp9zJgG/ASyVmlFSSXDobXDb+WzvVatxnOLWqbbG8jOUW7lqTlcx1JcPwDSQezfwL2Ab8taU7a0ejGdN8/Bj4i6ceUuCLT6ekp4BclNUq6leR64Lm0k7QEe9JOVh8fXhER+0hOB/8PJZ3OmiW9JrPvl4BXkYTC5yZ+CCbkN9PW/9XAL5FcNz9LROwBvgP8VnrM1pO0Rj+f2ewvSY7xv0ynh/0h8LH0MYY7Of2r86z3j4D3SXp1+j+aI+lnJLVXsO8B4GJJ84cXSHqnpEURMURyWhmSswGj+SZwT/oXktPS2fmxHvPyCmq7EP9RUoukm4DbgL+OiEGS0+CfktSevo4/xOn/17le6zbDOahtst0F/GlEvBAR+4dvwB8A7yBp0b6FpPPMCySt4l8AiIi/Bj5FEjJHSAJzuCfzB9L9etL7+dI4dXyapAPWSyQdvP5uxPp3kbR4fkByjfLfDq+IiF6SU8mrgL+p+Jmfn2+SdPT6OvA7ETHmYB3AnSTXtvcC/4ukY9rfZ9ZvBFYD+yNi6/DCiPhfJB3tHkovA2wjOaU/YRGxBXgvyf/zUFr7uyvc9wckned2p6fNlwK3AtslHQV+H7gjPf6j+SbJB7BvjTE/mk8Af5Y+3s9XUuco/kBnfo/6ycy6/STHYS/JJZL3pc8Tkj4Jx4DdwLdJXtcPwrivdZvhdPpsmJmNRdK9wJqIeOck3f9K4IdA8xjX663OSboZ+HxELBtnU7MJ8TVqs3Gkp8rfQ9LqNjOrKZ/6NjsHJYOI7AG+EhET6UlsZlYVPvVtZmZWx9yiNjMzq2MOajMzszpWd53JFi5cGCtXrsy7DDMzs5p58sknX4qIRaOtq7ugXrlyJVu2bMm7DDMzs5qR9PxY63zq28zMrI45qM3MzOqYg9rMzKyOjRvUkh6U9KKkbWOsl6T/JmmXpIKkV2XW3SXp2fR212j7m5mZ2dgqaVF/lmSg/LG8iWTg/9XA3SQ/JD887OLHgVeT/D7sxyUtuJBizczMZppxgzodNvHgOTa5HfhcJL5H8jvDS4A3Al+LiIMRcQj4GucOfDMzMxuhGteoO0nGQh5WTJeNtdzMzMwqVBedySTdLWmLpC3d3d15l2NmZlY3qhHUJWB5Zn5Zumys5WeJiAciYkNEbFi0aNSBWczMzGakaoxMthG4R9JDJB3HyhGxT9JjwP+b6UD2BuBjVXg8MzOzCxYR9A0OcXJgiL70lp3uGxzkZP8QJwfPXnfT6oUsv6itJnWOG9SSvgDcDCyUVCTpyd0MEBF/CGwC3gzsAo4Dv5SuOyjpk8Dm9K7ui4hzdUozM7NpJiIYGAoGh28RDA4my4bSdUkIDp4VlicHhpIg7R+kb5SwPLVPGrZjrTt7v6FT687X/3zXj9VPUEfEneOsD+BXxlj3IPDg+ZVmZjNRRDAUMDA0dPrNfSh9Yx86803/1Jv9YCYEhoaS+Th7v5H7D69PwmPojPCIyPtITNxwKI55nIaSkDz72AwxOERy7DLHdGhkyI77fxg66383NEnHsbFBtDQ20NLUwKym5G8y3Zj8bWygraWJBZl1LY0NzGpuoKWxMbN9Zv8R62eN2Lc1s66jrXlyntgo6u5HOcxs8kQE/YMxZmvj5IiWTdKaOb1dtqUy2unAMVsxg0NjhuQZy9MAsQvX3CgaJJoaROOpWwONDdDU0JBZlmzTINHUmC5T8re5sYHW5jPvo6mhgYaGzDKJxsbT+zSNvN9Ty5LHbmxooFHQ2NiQLJfScDw7bLNBPDI0mxrroi90TTiozepM38AQ5d5+yr19HDreT8/xfnqO91HuTaaPnhyYUKAOrxsO1moZbrVk32RPvcGmb6Zz5jTR0thAc1PDGW/sZwbC6TfwM9/Yz37jz4ZI06kgahhz2+z9DQfRqemGhrMCJvvYEghV7XjVyvDzsOnDQW02SU4ODFI+3k9P7+mwTab7kvne/nR9H4eO9adB3MexvsEx77NBMGdWE7OaGkdtZbQ2NzCvtWnU0JzVnATraK2W0Vo0s5oazjz9lwnj5kYhOQzMasFBbTaOE/2Dp1qzh9KQLfeeDttTIXwqfJNAPn6OwG1qEB1tzcyf3UxHWwtL5rdy5ZJ2Oma3sKCtOVnX1kLH7GS6Y3YLHXOamdvS5NaS2QzjoLYZo7dvkJ7hgM2E7aG0VVsePs2c2aant48T/WOfLm5uFPNnt9DR1syCtmY6O2Zz9dJ5pwJ2flsavOk289Plc2c1uUVqZhVxUNuUEhH09g+eat2ecWo5DdtDo5xa7jnez8lzXJ9taUx6cQ63Xpdf1Mb6ZUlrd362VTu8TdrabWtpdOCa2aRyUFsuIoJjfYOnThmXe7Onlc88lTzymu65vvs4q6mBBW2nW68rF7bRMbvjdLi2NdMxu5n5afDOT1vCs5sduGZWnxzUVhXl4/28cPB45rTxmddwT59mPt17eeAcX8OZ3dx4Rsv1ikvmpuF7OmxPBW+mtdva3FjDZ21mNvkc1Hbeyr39fHX7fh4t7OPbu14a9fuvc1oazzh9fOWl89LW7OmATVq1pwN43mwHrpnZMAe1TcjRkwN8/ekDfHnrPr71TDd9g0MsWzCb9950Oa+6rIMFc1pOtXbnz26mpWnmDEpgZjYZHNQ2rt6+QR7/wYs8WtjL4z94kZMDQ1w6r5V3/eQK3nLtUq5dNt/Xd83MJomD2kZ1cmCQb+7s5tHCPv7+6QMc7xtk4dxZ3PHjy7nt2qX82GUL/H1eM7MacFDbKf2DQ3x710s8unUfX92+nyMnB1jQ1szt13XylvVLePXlF9PocDYzqykH9Qw3MDjE93Yf5NHCXv5u+356jvfT3trEG6+5lLdcu5SfesXFNM+gwe/NzOqNg3oGGhoKNv/oII8W9vGVbft46Wgfc1oauWXtYm5bv5Sb1ixkVpN7XZuZ1QMH9QwREXx/Tw+Pbt3H33bt5cDhk7Q2N/C6Kxdz2/ol/F9XXuKvRJmZ1SEH9TQWEWwrHebRwl4eLeyj1NNLS2MDr33lIt5y7VJed+UlzJnll4CZWT3zu/Q0ExHsPHCER7fu49HCXn708nGaGsRNqxfyoVvWcMvVi5nX2px3mWZmViEH9TTxXPdRHt26jy8X9rLrxaM0CH7qFQt532tfwRuvvpQFc1ryLtHMzM6Dg3oKe+Hl43w5Pa399L7DSPDjKy/ik7dfza3XLGFR+6y8SzQzswvkoJ5i9vb08reF5LT21mIZgFdd1sG9t63lzeuWcOn81pwrNDOzanJQTwEvHj7Bpq59fLmwjyefPwTAus75fOxNV/Iz65ewbEFbzhWamdlkcVDXqZePnuQr2/bzaGEv//jDg0TAlZe285E3rOG29UtZuXBO3iWamVkNOKjr0Mf/9zY+/48vMDgUXL5oDr/606t5y7VLuOKS9rxLMzOzGnNQ15kjJ/r53Pee5/VXLeaDr1/DVUva/ctUZmYzWEWDOEu6VdJOSbskfXSU9SskfV1SQdITkpZl1g1Keiq9baxm8dPRttJhIuAdr76MtUvnOaTNzGa4cVvUkhqB+4FbgCKwWdLGiNiR2ex3gM9FxJ9J+mngt4B3pet6I+K66pY9fXWVeoCks5iZmVklLeobgF0RsTsi+oCHgNtHbLMWeDyd/sYo661ChWKZzo7ZXDzX34E2M7PKgroT2JOZL6bLsrYCb0+nfxZol3RxOt8qaYuk70l624UUOxN0lcqsX+bWtJmZJar1Q8MfAV4r6fvAa4ESMJiuWxERG4BfBD4t6RUjd5Z0dxrmW7q7u6tU0tRTPt7P8y8fZ52D2szMUpUEdQlYnplfli47JSL2RsTbI+J64D+ky3rSv6X0727gCeD6kQ8QEQ9ExIaI2LBo0aLzeBrTQ1cpGWns2mUd+RZiZmZ1o5Kg3gyslrRKUgtwB3BG721JCyUN39fHgAfT5QskzRreBrgRyHZCs4xC2pHsmqVuUZuZWWLcoI6IAeAe4DHgaeDhiNgu6T5Jb003uxnYKekZYDHwqXT5VcAWSVtJOpn99oje4pZR2FNm5cVtzG/zz1CamVmiogFPImITsGnEsnsz048Aj4yy33eAdRdY44zRVSrzqhUL8i7DzMzqSLU6k9kFeunoSUo9vaz396fNzCzDQV0nhjuSuce3mZllOajrRFexjARXL52XdylmZlZHHNR1olAsc/nCObS3uiOZmZmd5qCuE12lHtb7+9NmZjaCg7oOHDh8ggOHT3roUDMzO4uDug50FZOOZA5qMzMbyUFdBwrFHhoEa5c4qM3M7EwO6jpQKJVZs7id2S2NeZdiZmZ1xkGds4igq1hmnQc6MTOzUTioc7a3fIKXj/X5+rSZmY3KQZ2zrmIPAOv81SwzMxuFgzpnhWKZpgZx5aXteZdiZmZ1yEGds65SmVde2k5rszuSmZnZ2RzUOYoICsWyRyQzM7MxOahz9MLB45R7+92RzMzMxuSgzlEhHZHMX80yM7OxOKhz1FUq09LUwJrF7khmZmajc1DnqFDs4aol82hp8r/BzMxG54TIydBQsK10mPU+7W1mZufgoM7JD18+xtGTA6xzRzIzMzsHB3VO/NOWZmZWCQd1TgrFMrObG7li0dy8SzEzszrmoM5JodjD1Uvn0dTof4GZmY3NKZGDgcEhtu897OvTZmY2Lgd1Dp7rPkZv/6CvT5uZ2bgqCmpJt0raKWmXpI+Osn6FpK9LKkh6QtKyzLq7JD2b3u6qZvFTVWH4py07O3Ktw8zM6t+4QS2pEbgfeBOwFrhT0toRm/0O8LmIWA/cB/xWuu9FwMeBVwM3AB+XtKB65U9NXaUyc1oauXzhnLxLMTOzOldJi/oGYFdE7I6IPuAh4PYR26wFHk+nv5FZ/0bgaxFxMCIOAV8Dbr3wsqe2QrHMNZ3zaWhQ3qWYmVmdqySoO4E9mfliuixrK/D2dPpngXZJF1e474zSPzjEjn2HfX3azMwqUq3OZB8BXivp+8BrgRIwWOnOku6WtEXSlu7u7iqVVJ+eOXCEvoEh1vk3qM3MrAKVBHUJWJ6ZX5YuOyUi9kbE2yPieuA/pMt6Ktk33faBiNgQERsWLVo0sWcwxQyPSHatW9RmZlaBSoJ6M7Ba0ipJLcAdwMbsBpIWShq+r48BD6bTjwFvkLQg7UT2hnTZjLW1WGZeaxOXXdSWdylmZjYFjBvUETEA3EMSsE8DD0fEdkn3SXprutnNwE5JzwCLgU+l+x4EPkkS9puB+9JlM1ZXqYf1yzqQ3JHMzMzG11TJRhGxCdg0Ytm9melHgEfG2PdBTrewZ7QT/YPs3H+EX77p8rxLMTOzKcIjk9XQzv1H6B8M/wa1mZlVzEFdQ4VS0pHMY3ybmVmlHNQ11FXs4aI5LXR2zM67FDMzmyIc1DVUKJZZ1znfHcnMzKxiDuoa6e0b5NkXj3pEMjMzmxAHdY3s2FdmcChY7xHJzMxsAhzUNVJIRyRzi9rMzCbCQV0jXcUyl7TPYvG81rxLMTOzKcRBXSOFUtmtaTMzmzAHdQ0cPTnAc91HWdfZkXcpZmY2xTioa2B7qUyEr0+bmdnEOahroCsdkewaDx1qZmYT5KCugUKxzNL5rSxqn5V3KWZmNsU4qGugq1T2+N5mZnZeHNSTrNzbzw9fOuaBTszM7Lw4qCfZtpIHOjEzs/PnoJ5kwyOSrXNHMjMzOw8O6knWVerhsova6GhrybsUMzObghzUk6xQdEcyMzM7fw7qSXTwWB/FQ72s92lvMzM7Tw7qSTQ80Ilb1GZmdr4c1JOoq9gDeEQyMzM7fw7qSbS1WObyRXOY19qcdylmZjZFOagnUVex7OvTZmZ2QRzUk+TFwyfYf/gE6zwimZmZXYCKglrSrZJ2Stol6aOjrL9M0jckfV9SQdKb0+UrJfVKeiq9/WG1n0C96vKIZGZmVgVN420gqRG4H7gFKAKbJW2MiB2ZzX4DeDgiPiNpLbAJWJmuey4irqtq1VNAoVimQbB2yby8SzEzsymskhb1DcCuiNgdEX3AQ8DtI7YJYDiR5gN7q1fi1NRVKnPFJXOZM2vcz0JmZmZjqiSoO4E9mfliuizrE8A7JRVJWtPvz6xblZ4S/6akmy6k2KkiIpIRyTo78i7FzMymuGp1JrsT+GxELAPeDPy5pAZgH3BZRFwPfAj4S0lnnQuWdLekLZK2dHd3V6mk/Ow/fIKXjp709WkzM7tglQR1CViemV+WLst6D/AwQER8F2gFFkbEyYh4OV3+JPAcsGbkA0TEAxGxISI2LFq0aOLPos5s3eMRyczMrDoqCerNwGpJqyS1AHcAG0ds8wLwOgBJV5EEdbekRWlnNCRdDqwGdler+HrVVeqhqUHuSGZmZhds3J5OETEg6R7gMaAReDAitku6D9gSERuBDwN/JOmDJB3L3h0RIek1wH2S+oEh4H0RcXDSnk2dKBTLrFncTmtzY96lmJnZFFdRl+SI2ETSSSy77N7M9A7gxlH2+yLwxQuscUqJCLpKZW69+tK8SzEzs2nAI5NVWfFQLz3H+3192szMqsJBXWWFYjoimb+aZWZmVeCgrrJCqYeWxgbWXDo371LMzGwacFBXWVexzJVL2pnV5I5kZmZ24RzUVTQ0lHQkW+eftjQzsypxUFfRj14+xpETAx6RzMzMqsZBXUWnf9qyI99CzMxs2nBQV1GhWGZWUwOrL3FHMjMzqw4HdRV1FctcvXQeTY0+rGZmVh1OlCoZHAq27S37tLeZmVWVg7pKdncf5XjfoHt8m5lZVTmoq+TUiGTu8W1mZlXkoK6SrlKZtpZGLl/kjmRmZlY9Duoq2Vrs4Zql82lsUN6lmJnZNOKgroL+wSF27D3s095mZlZ1DuoqePbAUU4ODPmnLc3MrOoc1FXQVeoBPCKZmZlVn4O6CgrFMu2tTay4qC3vUszMbJpxUFfB8C9mNbgjmZmZVZmD+gKdHBjk6X2HfX3azMwmhYP6Aj2z/yj9g8H6zo68SzEzs2nIQX2BCqc6krlFbWZm1eegvkCFPWUWtDWzbMHsvEsxM7NpyEF9gQqlMuuWdSC5I5mZmVWfg/oCnOgf5JkDR1jvX8wyM7NJ4qC+ADv2HWZwKNzj28zMJk1FQS3pVkk7Je2S9NFR1l8m6RuSvi+pIOnNmXUfS/fbKemN1Sw+b13+aUszM5tkTeNtIKkRuB+4BSgCmyVtjIgdmc1+A3g4Ij4jaS2wCViZTt8BXA0sBf5e0pqIGKz2E8lDoVhm4dxZXDqvNe9SzMxsmqqkRX0DsCsidkdEH/AQcPuIbQKYl07PB/am07cDD0XEyYj4IbArvb9poavUw/pl892RzMzMJk0lQd0J7MnMF9NlWZ8A3impSNKafv8E9p2Sjp0cYNeLR1nnjmRmZjaJqtWZ7E7gsxGxDHgz8OeSKr5vSXdL2iJpS3d3d5VKmlzb9x5mKHx92szMJlclYVoClmfml6XLst4DPAwQEd8FWoGFFe5LRDwQERsiYsOiRYsqrz5HhWIPgHt8m5nZpKokqDcDqyWtktRC0jls44htXgBeByDpKpKg7k63u0PSLEmrgNXAP1Wr+Dx1lcosmd/KJe3uSGZmZpNn3F7fETEg6R7gMaAReDAitku6D9gSERuBDwN/JOmDJB3L3h0RAWyX9DCwAxgAfmW69PjuKpZ9fdrMzCbduEENEBGbSDqJZZfdm5neAdw4xr6fAj51ATXWncMn+tn90jHe/qpp0S/OzMzqmEcmOw/bSslAJ+uWdeRbiJmZTXsO6vMwPCKZT32bmdlkc1Cfh0KpzLIFs7loTkvepZiZ2TTnoD4PhWKPvz9tZmY14aCeoEPH+thzsJd1nR15l2JmZjOAg3qCutKOZNe6RW1mZjXgoJ6g4aC+2h3JzMysBhzUE1Qo9rBq4Rzmz27OuxQzM5sBHNQT5BHJzMyslhzUE9B95CR7yyfc49vMzGrGQT0Bp0Ykc4vazMxqxEE9AYViGckdyczMrHYc1BNQKPbwikVzmTurot8yMTMzu2AO6gpFBIVSmfVuTZuZWQ05qCt04PBJuo+cdEcyMzOrKQd1hQrFHsA/bWlmZrXloK5QV6lMY4NYu2Re3qWYmdkM4qCuUKFYZvUlc5nd0ph3KWZmNoM4qCsQEXSVyr4+bWZmNeegrkCpp5eDx/p8fdrMzGrOQV2BQjEZkcxfzTIzs1pzUFegUCzT3CiuXNKedylmZjbDOKgr0FXq4ZWXtjOryR3JzMysthzU44gICsUy63192szMcuCgHsfzLx/nyIkBX582M7NcOKjHURj+aUt/NcvMzHJQUVBLulXSTkm7JH10lPW/J+mp9PaMpJ7MusHMuo1VrL0muoo9tDQ1sGaxO5KZmVntjft7jZIagfuBW4AisFnSxojYMbxNRHwws/37geszd9EbEddVreIaKxTLrF0yj+ZGn3wwM7PaqyR9bgB2RcTuiOgDHgJuP8f2dwJfqEZxeRsaCrZ5RDIzM8tRJUHdCezJzBfTZWeRtAJYBTyeWdwqaYuk70l62xj73Z1us6W7u7uyymtg90tHOdY3yDp3JDMzs5xU+3zuHcAjETGYWbYiIjYAvwh8WtIrRu4UEQ9ExIaI2LBo0aIql3T+To1I5q9mmZlZTioJ6hKwPDO/LF02mjsYcdo7Ikrp393AE5x5/bquFYplZjc3csUlc/MuxczMZqhKgnozsFrSKkktJGF8Vu9tSVcCC4DvZpYtkDQrnV4I3AjsGLlvveoqlbmmcx6NDcq7FDMzm6HGDeqIGADuAR4DngYejojtku6T9NbMpncAD0VEZJZdBWyRtBX4BvDb2d7i9WxgcIjte8us6+zIuxQzM5vBxv16FkBEbAI2jVh274j5T4yy33eAdRdQX252dR/lRP+Qe3ybmVmu/OXgMQx3JPOIZGZmlicH9Ri6imXmzmpi1cVz8i7FzMxmMAf1GArFHq7pnEeDO5KZmVmOHNSj6BsY4ul9R/z9aTMzy52DehTPHDhC3+CQRyQzM7PcOahHMdyR7Fq3qM3MLGcO6lF0lXqYP7uZ5RfNzrsUMzOb4RzUoygUk1/MktyRzMzM8uWgHuFE/yA79x/x9WkzM6sLDuoRfrD/CAND4RHJzMysLjioR+gq9gCwzh3JzMysDjioR9haLHPxnBaWzm/NuxQzMzMH9UhdxTLr3JHMzMzqhIM643jfAM++eIT17khmZmZ1wkGdsWPvYYYCDx1qZmZ1w0Gd4Z+2NDOzeuOgzugqlVk8bxaL57kjmZmZ1QcHdUah2MO6zo68yzAzMzvFQZ06cqKf3S8d80AnZmZWVxzUqW2lw0T4+rSZmdUXB3Wqq9QD4DG+zcysrjioU4Vimc6O2SycOyvvUszMzE5xUKe6SmVfnzYzs7rjoAbKx/t5/uXjvj5tZmZ1x0FN0poGWO+vZpmZWZ2pKKgl3Sppp6Rdkj46yvrfk/RUentGUk9m3V2Snk1vd1Wx9qopuCOZmZnVqabxNpDUCNwP3AIUgc2SNkbEjuFtIuKDme3fD1yfTl8EfBzYAATwZLrvoao+iwvUVSyz4uI25rc1512KmZnZGSppUd8A7IqI3RHRBzwE3H6O7e8EvpBOvxH4WkQcTMP5a8CtF1LwZCgUy25Nm5lZXaokqDuBPZn5YrrsLJJWAKuAxye6b15eOnqSUk+ve3ybmVldqnZnsjuARyJicCI7Sbpb0hZJW7q7u6tc0rkNdyTzGN9mZlaPKgnqErA8M78sXTaaOzh92rvifSPigYjYEBEbFi1aVEFJ1dNVLCPBNZ3zavq4ZmZmlagkqDcDqyWtktRCEsYbR24k6UpgAfDdzOLHgDdIWiBpAfCGdFndKBTLXL5wDu2t7khmZmb1Z9ygjogB4B6SgH0aeDgitku6T9JbM5veATwUEZHZ9yDwSZKw3wzcly6rG12lHtYv68i7DDMzs1GN+/UsgIjYBGwasezeEfOfGGPfB4EHz7O+SXXg8AkOHD7pHt9mZla3ZvTIZF3FdEQy9/g2M7M6NaODulAq0yBYu9QdyczMrD7N7KAu9rD6knbaWiq6AmBmZlZzMzaoI4KuYtm/mGVmZnVtxgb13vIJXj7W5+vTZmZW12ZsUHcVewD/YpaZmdW3GRvUhWKZpgZx1RJ3JDMzs/o1Y4O6q1TmlZe209rcmHcpZmZmY5qRQR0RFIplX582M7O6NyODes/BXsq9/f7FLDMzq3szMqi3ph3J3KI2M7N6NyODuqtUpqWxgTWL2/MuxczM7JxmZFAXij1ctaSdlqYZ+fTNzGwKmXFJNTQUbCsd9ohkZmY2Jcy4oP7hy8c4enLAv0FtZmZTwowLav+0pZmZTSUzLqgLxTKtzQ1csWhu3qWYmZmNa8YFdVeph6uXzqepccY9dTMzm4JmVFoNDnck8w9xmJnZFDGjgnrXi0fp7R/09WkzM5syZlRQFzwimZmZTTEzKqi7SmXmtDSyaqE7kpmZ2dQwo4K6UCxzded8GhuUdylmZmYVmTFB3T84xI59h7nWp73NzGwKmTFB/cyBI/QNDLHOI5KZmdkUMmOC+tSIZP5qlpmZTSEVBbWkWyXtlLRL0kfH2ObnJe2QtF3SX2aWD0p6Kr1trFbhE1UolWlvbWLFxW15lWBmZjZhTeNtIKkRuB+4BSgCmyVtjIgdmW1WAx8DboyIQ5IuydxFb0RcV92yJ65Q7GH9svlI7khmZmZTRyUt6huAXRGxOyL6gIeA20ds817g/og4BBARL1a3zAtzon+QnfuPsK6zI+9SzMzMJqSSoO4E9mTmi+myrDXAGkn/R9L3JN2aWdcqaUu6/G2jPYCku9NttnR3d0+k/ors3H+E/sHwQCdmZjbljHvqewL3sxq4GVgGfEvSuojoAVZEREnS5cDjkroi4rnszhHxAPAAwIYNG6JKNZ1SKCUdyTzGt5mZTTWVtKhLwPLM/LJ0WVYR2BgR/RHxQ+AZkuAmIkrp393AE8D1F1jzhHUVe1jQ1syyBbNr/dBmZmYXpJKg3gyslrRKUgtwBzCy9/aXSFrTSFpIcip8t6QFkmZllt8I7KDGCsUy65d1uCOZmZlNOeMGdUQMAPcAjwFPAw9HxHZJ90l6a7rZY8DLknYA3wD+XUS8DFwFbJG0NV3+29ne4rXQ2zfIsy8e9fVpMzObkiq6Rh0Rm4BNI5bdm5kO4EPpLbvNd4B1F17m+dux7zCDQ+Hr02ZmNiVN+5HJTv+0ZUeudZiZmZ2PaR/UXcUyi9pnsXjerLxLMTMzm7BpH9SFUpn1nR6RzMzMpqZpHdRHTw7wXPdR1rkjmZmZTVHVGvCkLrU1N/K1D76GObOm9dM0M7NpbFonWEODuOKS9rzLMDMzO2/T+tS3mZnZVOegNjMzq2MOajMzszrmoDYzM6tjDmozM7M65qA2MzOrYw5qMzOzOuagNjMzq2MOajMzszrmoDYzM6tjioi8aziDpG7g+Srf7ULgpSrfp53Nx7k2fJxrw8e5NnycEysiYtFoK+ouqCeDpC0RsSHvOqY7H+fa8HGuDR/n2vBxHp9PfZuZmdUxB7WZmVkdmylB/UDeBcwQPs614eNcGz7OteHjPI4ZcY3azMxsqpopLWozM7MpaVoHtaRbJe2UtEvSR/OuZzqStFzSNyTtkLRd0gfyrmk6k9Qo6fuSHs27lulMUoekRyT9QNLTkn4y75qmI0kfTN83tkn6gqTWvGuqR9M2qCU1AvcDbwLWAndKWptvVdPSAPDhiFgL/ATwKz7Ok+oDwNN5FzED/D7wdxFxJXAtPuZVJ6kT+FVgQ0RcAzQCd+RbVX2atkEN3ADsiojdEdEHPATcnnNN005E7IuIf06nj5C8oXXmW9X0JGkZ8DPAH+ddy3QmaT7wGuBPACKiLyJ6ci1q+moCZktqAtqAvTnXU5emc1B3Ansy80UcIJNK0krgeuAfcy5luvo08GvAUM51THergG7gT9PLDH8saU7eRU03EVECfgd4AdgHlCPiq/lWVZ+mc1BbDUmaC3wR+LcRcTjveqYbSbcBL0bEk3nXMgM0Aa8CPhMR1wPHAPdxqTJJC0jOcq4ClgJzJL0z36rq03QO6hKwPDO/LF1mVSapmSSk/yIi/ibveqapG4G3SvoRyWWcn5b0+XxLmraKQDEihs8MPUIS3FZdrwd+GBHdEdEP/A3wUznXVJemc1BvBlZLWiWphaSTwsaca5p2JInkWt7TEfG7edczXUXExyJiWUSsJHktPx4Rbn1MgojYD+yR9Mp00euAHTmWNF29APyEpLb0feR1uNPeqJryLmCyRMSApHuAx0h6Ez4YEdtzLms6uhF4F9Al6al02a9HxKb8SjK7YO8H/iL9kL8b+KWc65l2IuIfJT0C/DPJt0e+j0cpG5VHJjMzM6tj0/nUt5mZ2ZTnoDYzM6tjDmozM7M65qA2MzOrYw5qMzOzOuagNjMzq2MOajMzszrmoDYzM6tj/z9scH10VaV7+wAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Evaluation against Test Dataset :\n", + "------------------------------------\n", + "5/5 [==============================] - 0s 1ms/step - loss: 0.2780 - accuracy: 0.9400\n" + ] + }, + { + "data": { + "text/plain": [ + "[0.27803778648376465, 0.9399999976158142]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#Make it verbose so we can see the progress\n", + "VERBOSE=1\n", + "\n", + "#Setup Hyper Parameters for training\n", + "BATCH_SIZE=256\n", + "EPOCHS=10\n", + "VALIDATION_SPLIT=0.2\n", + "\n", + "print(\"\\nTraining Progress:\\n------------------------------------\")\n", + "\n", + "history=model.fit(X_train,\n", + " Y_train,\n", + " batch_size=BATCH_SIZE,\n", + " epochs=EPOCHS,\n", + " verbose=VERBOSE,\n", + " validation_split=VALIDATION_SPLIT)\n", + "\n", + "print(\"\\nAccuracy during Training :\\n------------------------------------\")\n", + "import matplotlib.pyplot as plt\n", + "\n", + "pd.DataFrame(history.history)[\"accuracy\"].plot(figsize=(8, 5))\n", + "plt.title(\"Accuracy improvements with Epoch\")\n", + "plt.show()\n", + "\n", + "print(\"\\nEvaluation against Test Dataset :\\n------------------------------------\")\n", + "model.evaluate(X_test,Y_test)" + ] + }, + { + "cell_type": "markdown", + "id": "1d9d4714", + "metadata": {}, + "source": [ + "### 5.4. Predicting for Text" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "eb0bdcc1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(2, 4566)\n", + "Prediction Output: [1 0]\n", + "Prediction Classes are ['spam' 'ham']\n" + ] + } + ], + "source": [ + "#Predict for multiple samples using batch processing\n", + "\n", + "#Convert input into IF-IDF vector using the same vectorizer model\n", + "predict_tfidf=vectorizer.transform([\"FREE entry to a fun contest\",\n", + " \"Yup I will come over\"]).toarray()\n", + "\n", + "print(predict_tfidf.shape)\n", + "\n", + "#Predict using model\n", + "prediction=np.argmax( model.predict(predict_tfidf), axis=1 )\n", + "print(\"Prediction Output:\" , prediction)\n", + "\n", + "#Print prediction classes\n", + "print(\"Prediction Classes are \", label_encoder.inverse_transform(prediction))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2a6e1e04", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.8.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/deep_learning/Exercise Files/code_06_XX Incident Root Cause Analysis Exercise.ipynb b/deep_learning/Exercise Files/code_06_XX Incident Root Cause Analysis Exercise.ipynb new file mode 100755 index 0000000..fcbb189 --- /dev/null +++ b/deep_learning/Exercise Files/code_06_XX Incident Root Cause Analysis Exercise.ipynb @@ -0,0 +1,792 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Incident Root Cause Analysis \n", + "\n", + "Incident Reports in ITOps usually states the symptoms. Identifying the root cause of the symptom quickly is a key determinant to reducing resolution times and improving user satisfaction." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# 06.02. Preprocessing Incident Data\n", + "\n", + "### Loading the Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ID int64\n", + "CPU_LOAD int64\n", + "MEMORY_LEAK_LOAD int64\n", + "DELAY int64\n", + "ERROR_1000 int64\n", + "ERROR_1001 int64\n", + "ERROR_1002 int64\n", + "ERROR_1003 int64\n", + "ROOT_CAUSE object\n", + "dtype: object\n" + ] + }, + { + "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", + "
IDCPU_LOADMEMORY_LEAK_LOADDELAYERROR_1000ERROR_1001ERROR_1002ERROR_1003ROOT_CAUSE
010000101MEMORY_LEAK
120000001MEMORY_LEAK
230110011MEMORY_LEAK
340101101MEMORY_LEAK
451101010NETWORK_DELAY
\n", + "
" + ], + "text/plain": [ + " ID CPU_LOAD MEMORY_LEAK_LOAD DELAY ERROR_1000 ERROR_1001 ERROR_1002 \\\n", + "0 1 0 0 0 0 1 0 \n", + "1 2 0 0 0 0 0 0 \n", + "2 3 0 1 1 0 0 1 \n", + "3 4 0 1 0 1 1 0 \n", + "4 5 1 1 0 1 0 1 \n", + "\n", + " ERROR_1003 ROOT_CAUSE \n", + "0 1 MEMORY_LEAK \n", + "1 1 MEMORY_LEAK \n", + "2 1 MEMORY_LEAK \n", + "3 1 MEMORY_LEAK \n", + "4 0 NETWORK_DELAY " + ] + }, + "execution_count": 120, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "import os\n", + "import tensorflow as tf\n", + "\n", + "#Load the data file into a Pandas Dataframe\n", + "symptom_data = pd.read_csv(\"root_cause_analysis.csv\")\n", + "\n", + "#Explore the data loaded\n", + "print(symptom_data.dtypes)\n", + "symptom_data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Convert data\n", + "\n", + "Input data needs to be converted to formats that can be consumed by ML algorithms" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Shape of feature variables : (900, 7)\n", + "Shape of target variable : (900, 3)\n" + ] + } + ], + "source": [ + "from sklearn import preprocessing\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "label_encoder = preprocessing.LabelEncoder()\n", + "symptom_data['ROOT_CAUSE'] = label_encoder.fit_transform(\n", + " symptom_data['ROOT_CAUSE'])\n", + "\n", + "#Convert Pandas DataFrame to a numpy vector\n", + "np_symptom = symptom_data.to_numpy().astype(float)\n", + "\n", + "#Extract the feature variables (X)\n", + "X_data = np_symptom[:,1:8]\n", + "\n", + "#Extract the target variable (Y), conver to one-hot-encodign\n", + "Y_data=np_symptom[:,8]\n", + "Y_data = tf.keras.utils.to_categorical(Y_data,3)\n", + "\n", + "#Split training and test data\n", + "X_train,X_test,Y_train,Y_test = train_test_split( X_data, Y_data, test_size=0.10)\n", + "\n", + "print(\"Shape of feature variables :\", X_train.shape)\n", + "print(\"Shape of target variable :\",Y_train.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 06.03. Building and evaluating the model" + ] + }, + { + "cell_type": "code", + "execution_count": 122, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential_1\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " Dense-Layer-1 (Dense) (None, 128) 1024 \n", + " \n", + " Dense-Layer-2 (Dense) (None, 128) 16512 \n", + " \n", + " Final (Dense) (None, 3) 387 \n", + " \n", + "=================================================================\n", + "Total params: 17,923\n", + "Trainable params: 17,923\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n", + "Epoch 1/20\n", + "12/12 [==============================] - 1s 17ms/step - loss: 0.9277 - accuracy: 0.6806 - val_loss: 0.7558 - val_accuracy: 0.7833\n", + "Epoch 2/20\n", + "12/12 [==============================] - 0s 4ms/step - loss: 0.6521 - accuracy: 0.8347 - val_loss: 0.5959 - val_accuracy: 0.8111\n", + "Epoch 3/20\n", + "12/12 [==============================] - 0s 4ms/step - loss: 0.5267 - accuracy: 0.8389 - val_loss: 0.5289 - val_accuracy: 0.8056\n", + "Epoch 4/20\n", + "12/12 [==============================] - 0s 4ms/step - loss: 0.4776 - accuracy: 0.8431 - val_loss: 0.4913 - val_accuracy: 0.8278\n", + "Epoch 5/20\n", + "12/12 [==============================] - 0s 4ms/step - loss: 0.4515 - accuracy: 0.8458 - val_loss: 0.4812 - val_accuracy: 0.8000\n", + "Epoch 6/20\n", + "12/12 [==============================] - 0s 4ms/step - loss: 0.4380 - accuracy: 0.8431 - val_loss: 0.4766 - val_accuracy: 0.8056\n", + "Epoch 7/20\n", + "12/12 [==============================] - 0s 5ms/step - loss: 0.4291 - accuracy: 0.8417 - val_loss: 0.4830 - val_accuracy: 0.8278\n", + "Epoch 8/20\n", + "12/12 [==============================] - 0s 5ms/step - loss: 0.4225 - accuracy: 0.8500 - val_loss: 0.4902 - val_accuracy: 0.8000\n", + "Epoch 9/20\n", + "12/12 [==============================] - 0s 5ms/step - loss: 0.4203 - accuracy: 0.8458 - val_loss: 0.4672 - val_accuracy: 0.8222\n", + "Epoch 10/20\n", + "12/12 [==============================] - 0s 6ms/step - loss: 0.4105 - accuracy: 0.8542 - val_loss: 0.4610 - val_accuracy: 0.8222\n", + "Epoch 11/20\n", + "12/12 [==============================] - 0s 6ms/step - loss: 0.4103 - accuracy: 0.8458 - val_loss: 0.4515 - val_accuracy: 0.8111\n", + "Epoch 12/20\n", + "12/12 [==============================] - 0s 5ms/step - loss: 0.4018 - accuracy: 0.8500 - val_loss: 0.4495 - val_accuracy: 0.8556\n", + "Epoch 13/20\n", + "12/12 [==============================] - 0s 4ms/step - loss: 0.4002 - accuracy: 0.8611 - val_loss: 0.4442 - val_accuracy: 0.8167\n", + "Epoch 14/20\n", + "12/12 [==============================] - 0s 4ms/step - loss: 0.3920 - accuracy: 0.8556 - val_loss: 0.4443 - val_accuracy: 0.8444\n", + "Epoch 15/20\n", + "12/12 [==============================] - 0s 4ms/step - loss: 0.3920 - accuracy: 0.8500 - val_loss: 0.4461 - val_accuracy: 0.8444\n", + "Epoch 16/20\n", + "12/12 [==============================] - 0s 4ms/step - loss: 0.3861 - accuracy: 0.8528 - val_loss: 0.4361 - val_accuracy: 0.8500\n", + "Epoch 17/20\n", + "12/12 [==============================] - 0s 4ms/step - loss: 0.3800 - accuracy: 0.8625 - val_loss: 0.4402 - val_accuracy: 0.8111\n", + "Epoch 18/20\n", + "12/12 [==============================] - 0s 4ms/step - loss: 0.3817 - accuracy: 0.8639 - val_loss: 0.4344 - val_accuracy: 0.8444\n", + "Epoch 19/20\n", + "12/12 [==============================] - 0s 5ms/step - loss: 0.3774 - accuracy: 0.8625 - val_loss: 0.4259 - val_accuracy: 0.8167\n", + "Epoch 20/20\n", + "12/12 [==============================] - 0s 5ms/step - loss: 0.3739 - accuracy: 0.8611 - val_loss: 0.4209 - val_accuracy: 0.8389\n", + "\n", + "Evaluation against Test Dataset :\n", + "------------------------------------\n", + "4/4 [==============================] - 0s 3ms/step - loss: 0.5744 - accuracy: 0.7600\n" + ] + }, + { + "data": { + "text/plain": [ + "[0.5743610262870789, 0.7599999904632568]" + ] + }, + "execution_count": 122, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from tensorflow import keras\n", + "from tensorflow.keras import optimizers\n", + "from tensorflow.keras.regularizers import l2\n", + "\n", + "#Setup Training Parameters\n", + "EPOCHS=20\n", + "BATCH_SIZE=64\n", + "VERBOSE=1\n", + "OUTPUT_CLASSES=len(label_encoder.classes_)\n", + "N_HIDDEN=128\n", + "VALIDATION_SPLIT=0.2\n", + "\n", + "#Create a Keras sequential model\n", + "model = tf.keras.models.Sequential()\n", + "#Add a Dense Layer\n", + "model.add(keras.layers.Dense(N_HIDDEN,\n", + " input_shape=(7,),\n", + " name='Dense-Layer-1',\n", + " activation='relu'))\n", + "\n", + "#Add a second dense layer\n", + "model.add(keras.layers.Dense(N_HIDDEN,\n", + " name='Dense-Layer-2',\n", + " activation='relu'))\n", + "\n", + "#Add a softmax layer for categorial prediction\n", + "model.add(keras.layers.Dense(OUTPUT_CLASSES,\n", + " name='Final',\n", + " activation='softmax'))\n", + "\n", + "#Compile the model\n", + "model.compile(\n", + " loss='categorical_crossentropy',\n", + " metrics=['accuracy'])\n", + "\n", + "\n", + "model.summary()\n", + "\n", + "#Build the model\n", + "model.fit(X_train,\n", + " Y_train,\n", + " batch_size=BATCH_SIZE,\n", + " epochs=EPOCHS,\n", + " verbose=VERBOSE,\n", + " validation_split=VALIDATION_SPLIT)\n", + "\n", + "\n", + "#Evaluate the model against the test dataset and print results\n", + "print(\"\\nEvaluation against Test Dataset :\\n------------------------------------\")\n", + "model.evaluate(X_test,Y_test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 06.04. Predicting Root Causes" + ] + }, + { + "cell_type": "code", + "execution_count": 123, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 76ms/step\n", + "['DATABASE_ISSUE']\n" + ] + } + ], + "source": [ + "#Pass individual flags to Predict the root cause\n", + "import numpy as np\n", + "\n", + "CPU_LOAD=1\n", + "MEMORY_LOAD=0\n", + "DELAY=0\n", + "ERROR_1000=0\n", + "ERROR_1001=1\n", + "ERROR_1002=1\n", + "ERROR_1003=0\n", + "\n", + "prediction=np.argmax(model.predict(\n", + " [[CPU_LOAD,MEMORY_LOAD,DELAY,\n", + " ERROR_1000,ERROR_1001,ERROR_1002,ERROR_1003]]), axis=1 )\n", + "\n", + "print(label_encoder.inverse_transform(prediction))" + ] + }, + { + "cell_type": "code", + "execution_count": 124, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1/1 [==============================] - 0s 45ms/step\n", + "['DATABASE_ISSUE' 'NETWORK_DELAY' 'MEMORY_LEAK' 'DATABASE_ISSUE'\n", + " 'DATABASE_ISSUE']\n" + ] + } + ], + "source": [ + "#Predicting as a Batch\n", + "print(label_encoder.inverse_transform(np.argmax(\n", + " model.predict([[1,0,0,0,1,1,0],\n", + " [0,1,1,1,0,0,0],\n", + " [1,1,0,1,1,0,1],\n", + " [0,0,0,0,0,1,0],\n", + " [1,0,1,0,1,1,1]]), axis=1 )))" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## My Own Model" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Libraries " + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "metadata": {}, + "outputs": [], + "source": [ + "from random import shuffle\n", + "from tensorflow import keras\n", + "from keras.layers import Input,Dense\n", + "from keras import initializers,Model\n", + "import numpy as np" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Constants" + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "metadata": {}, + "outputs": [], + "source": [ + "readDataFile = \"root_cause_analysis.csv\"\n", + "BATCH_SIZE = 16\n", + "epochs = 50" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Loading the data" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": {}, + "outputs": [], + "source": [ + "table = pd.read_csv(readDataFile)\n", + "data = table.values\n", + "attributes = table.columns" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Preprocessing Data" + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": {}, + "outputs": [], + "source": [ + "def generate(array):\n", + " trainy = []\n", + " for label in array:\n", + " if label == \"MEMORY_LEAK\":\n", + " trainy.append([1,0,0])\n", + " elif label == \"NETWORK_DELAY\":\n", + " trainy.append([0,1,0])\n", + " else:\n", + " trainy.append([0,0,1])\n", + " return np.array(trainy)\n", + "\n", + "shuffle(data)\n", + "listOfClasses = []\n", + "for tuple in data:\n", + " if(tuple[8] not in listOfClasses):\n", + " listOfClasses.append(tuple[8])\n", + "classes = len(listOfClasses)\n", + "train = data[0:int(0.8*len(data))]\n", + "validation = data[int(0.8*len(data)):int(0.9*len(data))]\n", + "test = data[int(0.9*len(data)):len(data)]\n", + "trainx = train[:,0:8].astype(\"float32\")\n", + "trainy = generate(train[:,8:9])\n", + "validationx = validation[:,0:8].astype(\"float32\")\n", + "validationy = generate(validation[:,8:9])\n", + "testx = test[:,0:8].astype(\"float32\")\n", + "testy = generate(test[:,8:9])" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "((800, 8), (800, 3))" + ] + }, + "execution_count": 145, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trainx.shape,trainy.shape" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Network Architecture" + ] + }, + { + "cell_type": "code", + "execution_count": 146, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"model_10\"\n", + "_________________________________________________________________\n", + " Layer (type) Output Shape Param # \n", + "=================================================================\n", + " input_15 (InputLayer) [(None, 8)] 0 \n", + " \n", + " dense_34 (Dense) (None, 128) 1152 \n", + " \n", + " dense_35 (Dense) (None, 64) 8256 \n", + " \n", + " dense_36 (Dense) (None, 3) 195 \n", + " \n", + "=================================================================\n", + "Total params: 9,603\n", + "Trainable params: 9,603\n", + "Non-trainable params: 0\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "input_layer = Input((8,))\n", + "hidden_layer1 = Dense(128,activation='relu')(input_layer)\n", + "hidden_layer2 = Dense(64,activation='relu',kernel_initializer=initializers.RandomNormal(stddev=0.1))(hidden_layer1)\n", + "output_layer = Dense(3,activation=\"softmax\",kernel_initializer=initializers.RandomNormal(stddev=0.1))(hidden_layer2)\n", + "model = Model(inputs = input_layer,outputs = output_layer)\n", + "model.summary()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Training the model" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/50\n", + "50/50 [==============================] - 1s 5ms/step - loss: 2.2516 - accuracy: 0.3725 - val_loss: 1.3780 - val_accuracy: 0.4200\n", + "Epoch 2/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 1.8609 - accuracy: 0.4425 - val_loss: 2.1584 - val_accuracy: 0.3300\n", + "Epoch 3/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 1.8920 - accuracy: 0.4525 - val_loss: 6.5078 - val_accuracy: 0.3500\n", + "Epoch 4/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 1.6520 - accuracy: 0.5038 - val_loss: 5.5302 - val_accuracy: 0.4100\n", + "Epoch 5/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 1.6737 - accuracy: 0.4975 - val_loss: 3.2073 - val_accuracy: 0.3100\n", + "Epoch 6/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 1.5078 - accuracy: 0.5263 - val_loss: 1.5278 - val_accuracy: 0.4300\n", + "Epoch 7/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 1.4411 - accuracy: 0.5300 - val_loss: 1.0465 - val_accuracy: 0.5900\n", + "Epoch 8/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 1.3291 - accuracy: 0.5550 - val_loss: 1.4870 - val_accuracy: 0.5200\n", + "Epoch 9/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 1.2823 - accuracy: 0.5813 - val_loss: 2.4657 - val_accuracy: 0.5500\n", + "Epoch 10/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 1.2829 - accuracy: 0.6062 - val_loss: 2.1181 - val_accuracy: 0.4000\n", + "Epoch 11/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 1.0863 - accuracy: 0.6162 - val_loss: 0.9917 - val_accuracy: 0.5500\n", + "Epoch 12/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 1.1425 - accuracy: 0.6200 - val_loss: 5.3480 - val_accuracy: 0.3300\n", + "Epoch 13/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 1.0263 - accuracy: 0.6550 - val_loss: 1.3085 - val_accuracy: 0.6600\n", + "Epoch 14/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 1.0544 - accuracy: 0.6575 - val_loss: 1.3587 - val_accuracy: 0.5600\n", + "Epoch 15/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.9795 - accuracy: 0.6888 - val_loss: 1.5260 - val_accuracy: 0.5600\n", + "Epoch 16/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.9397 - accuracy: 0.6812 - val_loss: 1.5966 - val_accuracy: 0.5400\n", + "Epoch 17/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.9195 - accuracy: 0.7138 - val_loss: 3.4923 - val_accuracy: 0.4100\n", + "Epoch 18/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 1.0315 - accuracy: 0.7038 - val_loss: 2.1994 - val_accuracy: 0.5700\n", + "Epoch 19/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.9189 - accuracy: 0.6812 - val_loss: 1.1308 - val_accuracy: 0.6100\n", + "Epoch 20/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.8114 - accuracy: 0.7075 - val_loss: 1.9486 - val_accuracy: 0.5200\n", + "Epoch 21/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.8233 - accuracy: 0.7325 - val_loss: 1.0371 - val_accuracy: 0.6700\n", + "Epoch 22/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.7332 - accuracy: 0.7362 - val_loss: 1.5622 - val_accuracy: 0.7100\n", + "Epoch 23/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.8147 - accuracy: 0.7250 - val_loss: 2.8758 - val_accuracy: 0.5000\n", + "Epoch 24/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.7515 - accuracy: 0.7312 - val_loss: 1.3143 - val_accuracy: 0.5700\n", + "Epoch 25/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.7701 - accuracy: 0.7325 - val_loss: 0.6338 - val_accuracy: 0.8000\n", + "Epoch 26/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.7100 - accuracy: 0.7525 - val_loss: 2.1077 - val_accuracy: 0.5600\n", + "Epoch 27/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.7795 - accuracy: 0.7538 - val_loss: 6.6772 - val_accuracy: 0.4700\n", + "Epoch 28/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.7999 - accuracy: 0.7487 - val_loss: 0.9651 - val_accuracy: 0.7100\n", + "Epoch 29/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.7340 - accuracy: 0.7450 - val_loss: 0.8782 - val_accuracy: 0.6400\n", + "Epoch 30/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.7282 - accuracy: 0.7588 - val_loss: 0.7162 - val_accuracy: 0.7600\n", + "Epoch 31/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.7732 - accuracy: 0.7650 - val_loss: 1.3372 - val_accuracy: 0.6000\n", + "Epoch 32/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.6483 - accuracy: 0.7700 - val_loss: 2.4073 - val_accuracy: 0.5700\n", + "Epoch 33/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.6502 - accuracy: 0.7638 - val_loss: 0.9478 - val_accuracy: 0.7000\n", + "Epoch 34/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.6426 - accuracy: 0.7763 - val_loss: 0.5584 - val_accuracy: 0.7800\n", + "Epoch 35/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.7117 - accuracy: 0.7550 - val_loss: 0.7044 - val_accuracy: 0.7700\n", + "Epoch 36/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.6363 - accuracy: 0.7825 - val_loss: 1.5595 - val_accuracy: 0.6400\n", + "Epoch 37/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.5818 - accuracy: 0.7862 - val_loss: 3.0188 - val_accuracy: 0.5600\n", + "Epoch 38/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.6562 - accuracy: 0.7738 - val_loss: 2.2768 - val_accuracy: 0.5100\n", + "Epoch 39/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.6100 - accuracy: 0.7700 - val_loss: 0.5672 - val_accuracy: 0.7800\n", + "Epoch 40/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.5786 - accuracy: 0.7925 - val_loss: 1.2358 - val_accuracy: 0.6500\n", + "Epoch 41/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.5647 - accuracy: 0.7700 - val_loss: 0.6831 - val_accuracy: 0.7500\n", + "Epoch 42/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.5372 - accuracy: 0.8062 - val_loss: 1.5153 - val_accuracy: 0.6000\n", + "Epoch 43/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.5589 - accuracy: 0.8025 - val_loss: 0.5889 - val_accuracy: 0.7500\n", + "Epoch 44/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.5829 - accuracy: 0.7962 - val_loss: 0.5716 - val_accuracy: 0.7600\n", + "Epoch 45/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.5672 - accuracy: 0.7788 - val_loss: 1.1337 - val_accuracy: 0.5900\n", + "Epoch 46/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.5249 - accuracy: 0.8012 - val_loss: 0.6624 - val_accuracy: 0.7600\n", + "Epoch 47/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.5023 - accuracy: 0.8125 - val_loss: 2.0395 - val_accuracy: 0.6900\n", + "Epoch 48/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.5272 - accuracy: 0.7950 - val_loss: 1.5256 - val_accuracy: 0.5600\n", + "Epoch 49/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.5329 - accuracy: 0.7875 - val_loss: 1.1081 - val_accuracy: 0.6100\n", + "Epoch 50/50\n", + "50/50 [==============================] - 0s 2ms/step - loss: 0.5104 - accuracy: 0.8075 - val_loss: 1.1782 - val_accuracy: 0.6300\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 147, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "model.compile(loss = \"categorical_crossentropy\",optimizer=\"rmsprop\",metrics=['accuracy'])\n", + "model.fit(trainx,trainy,batch_size=BATCH_SIZE,epochs=epochs,verbose=1,validation_data=(validationx,validationy))" + ] + }, + { + "cell_type": "code", + "execution_count": 148, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Evaluation against Test Dataset :\n", + "------------------------------------\n", + "4/4 [==============================] - 0s 2ms/step - loss: 1.3191 - accuracy: 0.6400\n" + ] + }, + { + "data": { + "text/plain": [ + "[1.31907057762146, 0.6399999856948853]" + ] + }, + "execution_count": 148, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "print(\"\\nEvaluation against Test Dataset :\\n------------------------------------\")\n", + "model.evaluate(testx,testy)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.13" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/deep_learning/Exercise Files/iris.csv b/deep_learning/Exercise Files/iris.csv new file mode 100755 index 0000000..54047c8 --- /dev/null +++ b/deep_learning/Exercise Files/iris.csv @@ -0,0 +1,151 @@ +Sepal.Length,Sepal.Width,Petal.Length,Petal.Width,Species +5.1,3.5,1.4,0.2,setosa +4.9,3,1.4,0.2,setosa +4.7,3.2,1.3,0.2,setosa +4.6,3.1,1.5,0.2,setosa +5,3.6,1.4,0.2,setosa +5.4,3.9,1.7,0.4,setosa +4.6,3.4,1.4,0.3,setosa +5,3.4,1.5,0.2,setosa +4.4,2.9,1.4,0.2,setosa +4.9,3.1,1.5,0.1,setosa +5.4,3.7,1.5,0.2,setosa +4.8,3.4,1.6,0.2,setosa +4.8,3,1.4,0.1,setosa +4.3,3,1.1,0.1,setosa +5.8,4,1.2,0.2,setosa +5.7,4.4,1.5,0.4,setosa +5.4,3.9,1.3,0.4,setosa +5.1,3.5,1.4,0.3,setosa +5.7,3.8,1.7,0.3,setosa +5.1,3.8,1.5,0.3,setosa +5.4,3.4,1.7,0.2,setosa +5.1,3.7,1.5,0.4,setosa +4.6,3.6,1,0.2,setosa +5.1,3.3,1.7,0.5,setosa +4.8,3.4,1.9,0.2,setosa +5,3,1.6,0.2,setosa +5,3.4,1.6,0.4,setosa +5.2,3.5,1.5,0.2,setosa +5.2,3.4,1.4,0.2,setosa +4.7,3.2,1.6,0.2,setosa +4.8,3.1,1.6,0.2,setosa +5.4,3.4,1.5,0.4,setosa +5.2,4.1,1.5,0.1,setosa +5.5,4.2,1.4,0.2,setosa +4.9,3.1,1.5,0.2,setosa +5,3.2,1.2,0.2,setosa +5.5,3.5,1.3,0.2,setosa +4.9,3.6,1.4,0.1,setosa +4.4,3,1.3,0.2,setosa +5.1,3.4,1.5,0.2,setosa +5,3.5,1.3,0.3,setosa +4.5,2.3,1.3,0.3,setosa +4.4,3.2,1.3,0.2,setosa +5,3.5,1.6,0.6,setosa +5.1,3.8,1.9,0.4,setosa +4.8,3,1.4,0.3,setosa +5.1,3.8,1.6,0.2,setosa +4.6,3.2,1.4,0.2,setosa +5.3,3.7,1.5,0.2,setosa +5,3.3,1.4,0.2,setosa +7,3.2,4.7,1.4,versicolor +6.4,3.2,4.5,1.5,versicolor +6.9,3.1,4.9,1.5,versicolor +5.5,2.3,4,1.3,versicolor +6.5,2.8,4.6,1.5,versicolor +5.7,2.8,4.5,1.3,versicolor +6.3,3.3,4.7,1.6,versicolor +4.9,2.4,3.3,1,versicolor +6.6,2.9,4.6,1.3,versicolor +5.2,2.7,3.9,1.4,versicolor +5,2,3.5,1,versicolor +5.9,3,4.2,1.5,versicolor +6,2.2,4,1,versicolor +6.1,2.9,4.7,1.4,versicolor +5.6,2.9,3.6,1.3,versicolor +6.7,3.1,4.4,1.4,versicolor +5.6,3,4.5,1.5,versicolor +5.8,2.7,4.1,1,versicolor +6.2,2.2,4.5,1.5,versicolor +5.6,2.5,3.9,1.1,versicolor +5.9,3.2,4.8,1.8,versicolor +6.1,2.8,4,1.3,versicolor +6.3,2.5,4.9,1.5,versicolor +6.1,2.8,4.7,1.2,versicolor +6.4,2.9,4.3,1.3,versicolor +6.6,3,4.4,1.4,versicolor +6.8,2.8,4.8,1.4,versicolor +6.7,3,5,1.7,versicolor +6,2.9,4.5,1.5,versicolor +5.7,2.6,3.5,1,versicolor +5.5,2.4,3.8,1.1,versicolor +5.5,2.4,3.7,1,versicolor +5.8,2.7,3.9,1.2,versicolor +6,2.7,5.1,1.6,versicolor +5.4,3,4.5,1.5,versicolor +6,3.4,4.5,1.6,versicolor +6.7,3.1,4.7,1.5,versicolor +6.3,2.3,4.4,1.3,versicolor +5.6,3,4.1,1.3,versicolor +5.5,2.5,4,1.3,versicolor +5.5,2.6,4.4,1.2,versicolor +6.1,3,4.6,1.4,versicolor +5.8,2.6,4,1.2,versicolor +5,2.3,3.3,1,versicolor +5.6,2.7,4.2,1.3,versicolor +5.7,3,4.2,1.2,versicolor +5.7,2.9,4.2,1.3,versicolor +6.2,2.9,4.3,1.3,versicolor +5.1,2.5,3,1.1,versicolor +5.7,2.8,4.1,1.3,versicolor +6.3,3.3,6,2.5,virginica +5.8,2.7,5.1,1.9,virginica +7.1,3,5.9,2.1,virginica +6.3,2.9,5.6,1.8,virginica +6.5,3,5.8,2.2,virginica +7.6,3,6.6,2.1,virginica +4.9,2.5,4.5,1.7,virginica +7.3,2.9,6.3,1.8,virginica +6.7,2.5,5.8,1.8,virginica +7.2,3.6,6.1,2.5,virginica +6.5,3.2,5.1,2,virginica +6.4,2.7,5.3,1.9,virginica +6.8,3,5.5,2.1,virginica +5.7,2.5,5,2,virginica +5.8,2.8,5.1,2.4,virginica +6.4,3.2,5.3,2.3,virginica +6.5,3,5.5,1.8,virginica +7.7,3.8,6.7,2.2,virginica +7.7,2.6,6.9,2.3,virginica +6,2.2,5,1.5,virginica +6.9,3.2,5.7,2.3,virginica +5.6,2.8,4.9,2,virginica +7.7,2.8,6.7,2,virginica +6.3,2.7,4.9,1.8,virginica +6.7,3.3,5.7,2.1,virginica +7.2,3.2,6,1.8,virginica +6.2,2.8,4.8,1.8,virginica +6.1,3,4.9,1.8,virginica +6.4,2.8,5.6,2.1,virginica +7.2,3,5.8,1.6,virginica +7.4,2.8,6.1,1.9,virginica +7.9,3.8,6.4,2,virginica +6.4,2.8,5.6,2.2,virginica +6.3,2.8,5.1,1.5,virginica +6.1,2.6,5.6,1.4,virginica +7.7,3,6.1,2.3,virginica +6.3,3.4,5.6,2.4,virginica +6.4,3.1,5.5,1.8,virginica +6,3,4.8,1.8,virginica +6.9,3.1,5.4,2.1,virginica +6.7,3.1,5.6,2.4,virginica +6.9,3.1,5.1,2.3,virginica +5.8,2.7,5.1,1.9,virginica +6.8,3.2,5.9,2.3,virginica +6.7,3.3,5.7,2.5,virginica +6.7,3,5.2,2.3,virginica +6.3,2.5,5,1.9,virginica +6.5,3,5.2,2,virginica +6.2,3.4,5.4,2.3,virginica +5.9,3,5.1,1.8,virginica diff --git a/deep_learning/Exercise Files/root_cause_analysis.csv b/deep_learning/Exercise Files/root_cause_analysis.csv new file mode 100755 index 0000000..e46000a --- /dev/null +++ b/deep_learning/Exercise Files/root_cause_analysis.csv @@ -0,0 +1,1001 @@ +ID,CPU_LOAD,MEMORY_LEAK_LOAD,DELAY,ERROR_1000,ERROR_1001,ERROR_1002,ERROR_1003,ROOT_CAUSE +1,0,0,0,0,1,0,1,MEMORY_LEAK +2,0,0,0,0,0,0,1,MEMORY_LEAK +3,0,1,1,0,0,1,1,MEMORY_LEAK +4,0,1,0,1,1,0,1,MEMORY_LEAK +5,1,1,0,1,0,1,0,NETWORK_DELAY +6,0,0,1,1,0,0,0,NETWORK_DELAY +7,1,0,0,1,1,0,0,NETWORK_DELAY +8,0,0,0,1,1,0,1,DATABASE_ISSUE +9,0,1,0,0,1,0,1,MEMORY_LEAK +10,0,0,0,1,1,0,1,NETWORK_DELAY +11,1,0,0,0,0,0,1,MEMORY_LEAK +12,1,0,1,0,0,0,0,DATABASE_ISSUE +13,0,1,0,0,0,1,1,MEMORY_LEAK +14,0,1,1,0,0,1,0,DATABASE_ISSUE +15,1,0,1,0,1,0,0,NETWORK_DELAY +16,1,0,0,0,1,0,1,MEMORY_LEAK +17,0,1,0,0,0,1,1,MEMORY_LEAK +18,0,1,0,1,0,0,1,MEMORY_LEAK +19,0,1,1,0,0,1,0,NETWORK_DELAY +20,0,1,0,0,0,0,0,MEMORY_LEAK +21,0,1,1,1,1,0,0,NETWORK_DELAY +22,1,0,0,0,0,0,0,MEMORY_LEAK +23,1,1,0,0,1,0,1,MEMORY_LEAK +24,0,1,1,0,0,0,1,MEMORY_LEAK +25,0,0,1,1,1,0,0,NETWORK_DELAY +26,0,1,0,0,0,1,1,MEMORY_LEAK +27,0,1,0,0,0,0,1,MEMORY_LEAK +28,0,0,1,0,0,1,0,NETWORK_DELAY +29,0,0,1,1,0,1,0,NETWORK_DELAY +30,0,0,0,0,0,0,1,MEMORY_LEAK +31,1,1,0,0,0,0,0,DATABASE_ISSUE +32,1,1,1,0,0,1,1,MEMORY_LEAK +33,1,1,0,0,0,1,1,MEMORY_LEAK +34,1,1,1,1,0,0,0,NETWORK_DELAY +35,0,0,0,0,0,0,1,MEMORY_LEAK +36,1,0,0,1,1,1,1,DATABASE_ISSUE +37,0,1,1,0,0,0,1,MEMORY_LEAK +38,1,0,1,0,0,1,0,DATABASE_ISSUE +39,1,0,0,1,1,1,0,DATABASE_ISSUE +40,0,0,1,1,1,0,0,NETWORK_DELAY +41,1,0,0,0,1,0,1,NETWORK_DELAY +42,1,0,1,0,0,1,0,DATABASE_ISSUE +43,0,0,0,0,0,1,0,MEMORY_LEAK +44,1,0,0,0,1,1,0,DATABASE_ISSUE +45,0,1,1,1,1,0,0,NETWORK_DELAY +46,0,0,1,0,0,0,0,NETWORK_DELAY +47,0,1,0,1,1,0,0,NETWORK_DELAY +48,1,1,1,1,1,1,0,DATABASE_ISSUE +49,0,0,1,0,0,0,0,NETWORK_DELAY +50,1,0,0,0,0,1,0,DATABASE_ISSUE +51,0,0,0,0,0,0,1,MEMORY_LEAK +52,1,0,0,1,1,1,1,DATABASE_ISSUE +53,1,0,0,0,0,1,0,DATABASE_ISSUE +54,1,0,0,0,1,1,1,DATABASE_ISSUE +55,0,0,1,1,1,0,0,NETWORK_DELAY +56,0,1,0,1,0,1,0,MEMORY_LEAK +57,0,0,1,0,1,0,1,NETWORK_DELAY +58,0,1,1,1,0,0,1,MEMORY_LEAK +59,1,0,0,0,0,1,0,DATABASE_ISSUE +60,1,0,0,0,1,1,0,DATABASE_ISSUE +61,0,0,1,1,1,0,0,NETWORK_DELAY +62,1,1,0,0,0,1,1,MEMORY_LEAK +63,1,0,0,0,0,1,0,DATABASE_ISSUE +64,0,1,0,0,0,1,1,MEMORY_LEAK +65,0,1,1,1,0,1,1,NETWORK_DELAY +66,0,0,0,0,0,0,1,MEMORY_LEAK +67,1,1,0,1,0,1,0,DATABASE_ISSUE +68,1,0,0,0,0,1,1,DATABASE_ISSUE +69,0,1,0,0,0,1,1,MEMORY_LEAK +70,0,0,1,1,0,0,0,NETWORK_DELAY +71,1,1,0,1,1,0,1,MEMORY_LEAK +72,1,1,1,0,0,1,0,DATABASE_ISSUE +73,0,1,0,0,0,0,1,MEMORY_LEAK +74,1,1,0,0,1,0,1,DATABASE_ISSUE +75,0,0,1,1,1,0,0,NETWORK_DELAY +76,0,1,0,0,0,0,1,MEMORY_LEAK +77,1,1,1,1,0,0,0,NETWORK_DELAY +78,1,0,1,1,1,0,0,NETWORK_DELAY +79,1,0,1,1,1,0,0,NETWORK_DELAY +80,0,0,1,1,0,0,0,NETWORK_DELAY +81,1,0,1,1,1,0,0,NETWORK_DELAY +82,1,1,0,1,0,1,1,MEMORY_LEAK +83,0,0,1,1,1,0,0,NETWORK_DELAY +84,0,1,1,0,1,0,1,MEMORY_LEAK +85,1,0,0,1,0,0,0,NETWORK_DELAY +86,0,0,1,0,0,1,0,NETWORK_DELAY +87,1,1,0,0,0,1,0,DATABASE_ISSUE +88,0,1,0,1,1,0,1,MEMORY_LEAK +89,0,1,1,0,1,1,1,MEMORY_LEAK +90,1,0,0,0,0,1,0,DATABASE_ISSUE +91,0,1,0,0,1,0,1,MEMORY_LEAK +92,0,0,0,0,1,0,0,MEMORY_LEAK +93,0,1,1,0,1,0,1,MEMORY_LEAK +94,0,1,0,0,0,0,0,MEMORY_LEAK +95,0,1,0,0,1,0,1,MEMORY_LEAK +96,0,0,1,1,1,0,0,NETWORK_DELAY +97,1,0,0,0,0,0,0,DATABASE_ISSUE +98,0,0,0,0,0,0,0,MEMORY_LEAK +99,1,1,0,1,0,1,1,MEMORY_LEAK +100,1,1,0,0,1,1,0,MEMORY_LEAK +101,0,1,0,0,0,0,1,MEMORY_LEAK +102,0,1,0,1,0,1,1,MEMORY_LEAK +103,0,0,0,0,0,0,0,NETWORK_DELAY +104,1,0,0,0,1,1,0,DATABASE_ISSUE +105,0,0,0,1,0,0,1,MEMORY_LEAK +106,0,0,1,1,1,0,0,NETWORK_DELAY +107,0,0,1,1,0,0,0,NETWORK_DELAY +108,1,1,0,0,0,1,0,DATABASE_ISSUE +109,1,0,0,0,0,1,0,DATABASE_ISSUE +110,1,1,1,0,1,0,1,MEMORY_LEAK +111,0,0,1,1,0,1,0,NETWORK_DELAY +112,0,0,1,1,0,0,0,NETWORK_DELAY +113,0,1,0,0,1,0,0,NETWORK_DELAY +114,1,1,0,0,1,1,0,DATABASE_ISSUE +115,1,1,1,0,0,1,0,DATABASE_ISSUE +116,1,0,0,0,1,1,0,DATABASE_ISSUE +117,0,1,0,0,0,0,0,MEMORY_LEAK +118,0,0,0,0,1,0,1,MEMORY_LEAK +119,0,1,0,1,1,0,1,MEMORY_LEAK +120,0,0,1,1,1,1,1,NETWORK_DELAY +121,0,1,0,1,0,1,0,MEMORY_LEAK +122,1,1,0,0,1,0,0,DATABASE_ISSUE +123,1,0,1,0,0,1,0,NETWORK_DELAY +124,1,0,0,0,1,1,0,DATABASE_ISSUE +125,1,0,0,0,0,1,0,DATABASE_ISSUE +126,0,0,1,1,1,0,0,NETWORK_DELAY +127,0,1,1,0,1,0,0,NETWORK_DELAY +128,0,0,0,0,1,0,0,NETWORK_DELAY +129,0,1,0,0,0,0,0,MEMORY_LEAK +130,1,0,0,0,0,1,0,DATABASE_ISSUE +131,0,0,1,1,1,0,0,NETWORK_DELAY +132,1,0,0,0,0,0,0,MEMORY_LEAK +133,1,0,1,0,0,1,0,DATABASE_ISSUE +134,1,0,0,0,1,0,0,DATABASE_ISSUE +135,0,0,0,0,1,0,1,DATABASE_ISSUE +136,1,1,0,0,1,1,1,DATABASE_ISSUE +137,1,0,0,0,1,0,0,DATABASE_ISSUE +138,0,0,1,1,0,1,1,NETWORK_DELAY +139,0,1,1,0,1,0,1,MEMORY_LEAK +140,0,1,0,1,1,0,0,MEMORY_LEAK +141,0,0,1,1,1,1,0,NETWORK_DELAY +142,0,1,0,1,1,1,0,DATABASE_ISSUE +143,0,1,1,0,0,1,0,DATABASE_ISSUE +144,1,1,1,0,1,0,1,MEMORY_LEAK +145,1,0,0,0,1,1,1,DATABASE_ISSUE +146,0,0,1,1,0,0,0,NETWORK_DELAY +147,1,1,0,1,0,0,1,MEMORY_LEAK +148,0,0,1,1,1,0,0,NETWORK_DELAY +149,1,0,1,0,0,1,0,DATABASE_ISSUE +150,0,0,1,1,0,0,0,NETWORK_DELAY +151,0,0,1,1,0,1,0,NETWORK_DELAY +152,0,1,0,0,0,1,1,MEMORY_LEAK +153,1,1,1,1,0,1,1,DATABASE_ISSUE +154,0,0,1,0,0,0,1,NETWORK_DELAY +155,0,0,0,1,1,1,0,DATABASE_ISSUE +156,0,0,0,0,0,1,0,DATABASE_ISSUE +157,1,0,0,1,1,1,0,DATABASE_ISSUE +158,0,0,0,1,0,0,1,NETWORK_DELAY +159,0,1,1,0,1,0,0,NETWORK_DELAY +160,0,1,0,0,1,0,1,MEMORY_LEAK +161,0,0,1,1,0,1,0,NETWORK_DELAY +162,0,0,1,1,0,0,0,NETWORK_DELAY +163,1,0,1,1,1,0,1,NETWORK_DELAY +164,0,0,0,0,1,1,0,DATABASE_ISSUE +165,1,0,1,1,1,0,0,NETWORK_DELAY +166,0,0,0,1,1,0,1,NETWORK_DELAY +167,0,1,0,0,0,0,1,MEMORY_LEAK +168,1,0,0,0,0,1,0,DATABASE_ISSUE +169,0,1,0,0,0,0,1,MEMORY_LEAK +170,0,1,0,0,0,0,0,MEMORY_LEAK +171,1,1,1,1,0,1,0,DATABASE_ISSUE +172,0,1,1,0,1,1,1,MEMORY_LEAK +173,0,1,0,1,0,0,0,NETWORK_DELAY +174,0,1,1,1,0,0,1,MEMORY_LEAK +175,0,1,1,0,0,0,1,MEMORY_LEAK +176,1,0,0,0,0,0,0,DATABASE_ISSUE +177,0,1,1,1,0,0,1,MEMORY_LEAK +178,0,1,0,0,1,1,0,MEMORY_LEAK +179,1,1,0,0,0,0,1,MEMORY_LEAK +180,0,0,0,0,1,1,0,DATABASE_ISSUE +181,0,0,1,0,0,0,0,NETWORK_DELAY +182,0,1,1,0,0,1,1,MEMORY_LEAK +183,1,1,0,0,1,1,0,DATABASE_ISSUE +184,1,0,0,0,1,1,0,DATABASE_ISSUE +185,1,0,0,0,1,1,1,MEMORY_LEAK +186,1,0,0,0,1,1,0,DATABASE_ISSUE +187,0,1,1,0,0,1,0,MEMORY_LEAK +188,0,0,1,1,0,0,0,NETWORK_DELAY +189,0,0,1,1,1,1,0,DATABASE_ISSUE +190,0,1,0,0,0,0,1,MEMORY_LEAK +191,1,1,0,0,1,0,1,MEMORY_LEAK +192,1,1,0,0,0,0,1,MEMORY_LEAK +193,0,0,1,1,1,0,1,NETWORK_DELAY +194,1,0,1,0,1,0,1,MEMORY_LEAK +195,1,0,1,1,1,0,0,NETWORK_DELAY +196,1,0,0,1,1,1,1,DATABASE_ISSUE +197,1,0,0,0,1,0,0,DATABASE_ISSUE +198,1,1,0,0,1,0,0,DATABASE_ISSUE +199,1,1,0,0,1,1,1,DATABASE_ISSUE +200,0,0,0,1,0,0,0,MEMORY_LEAK +201,1,0,0,1,1,1,0,DATABASE_ISSUE +202,0,0,0,1,1,0,0,NETWORK_DELAY +203,1,1,0,0,0,0,0,MEMORY_LEAK +204,0,1,0,0,1,0,1,MEMORY_LEAK +205,1,1,0,0,1,1,0,DATABASE_ISSUE +206,1,0,0,0,0,0,0,NETWORK_DELAY +207,1,0,0,1,1,1,0,DATABASE_ISSUE +208,1,0,0,0,0,0,1,MEMORY_LEAK +209,1,0,0,0,1,1,0,MEMORY_LEAK +210,0,1,0,0,1,1,0,DATABASE_ISSUE +211,1,0,0,0,1,1,1,DATABASE_ISSUE +212,0,1,0,0,1,1,0,DATABASE_ISSUE +213,0,0,1,1,1,1,1,NETWORK_DELAY +214,1,0,1,0,1,1,0,DATABASE_ISSUE +215,1,0,0,0,1,1,0,DATABASE_ISSUE +216,1,0,0,0,0,1,0,DATABASE_ISSUE +217,1,1,1,0,0,0,1,MEMORY_LEAK +218,0,0,1,1,1,0,0,NETWORK_DELAY +219,1,0,0,0,0,1,0,DATABASE_ISSUE +220,1,0,0,0,1,0,0,MEMORY_LEAK +221,1,0,0,0,1,1,0,DATABASE_ISSUE +222,1,0,0,1,1,1,0,DATABASE_ISSUE +223,0,0,1,0,1,0,1,NETWORK_DELAY +224,0,1,0,0,0,0,1,MEMORY_LEAK +225,0,0,0,1,0,0,1,NETWORK_DELAY +226,0,0,1,1,0,1,0,NETWORK_DELAY +227,0,0,0,0,1,1,0,DATABASE_ISSUE +228,1,1,0,0,1,0,1,MEMORY_LEAK +229,1,0,0,1,0,1,0,DATABASE_ISSUE +230,0,0,1,1,0,0,0,NETWORK_DELAY +231,0,1,1,1,1,1,0,NETWORK_DELAY +232,0,0,1,0,1,0,0,NETWORK_DELAY +233,1,0,0,0,0,0,0,DATABASE_ISSUE +234,1,0,0,0,1,0,0,DATABASE_ISSUE +235,0,0,1,1,0,0,0,NETWORK_DELAY +236,0,0,0,0,1,0,0,NETWORK_DELAY +237,0,1,1,1,0,1,1,NETWORK_DELAY +238,1,1,0,0,1,0,1,MEMORY_LEAK +239,1,1,1,1,1,0,1,MEMORY_LEAK +240,1,1,0,0,1,1,1,MEMORY_LEAK +241,1,0,1,1,0,0,0,NETWORK_DELAY +242,1,1,0,1,0,1,1,DATABASE_ISSUE +243,0,0,1,1,1,0,0,NETWORK_DELAY +244,1,0,0,1,1,0,1,DATABASE_ISSUE +245,0,0,1,1,1,0,1,NETWORK_DELAY +246,1,0,0,0,0,1,0,DATABASE_ISSUE +247,0,0,1,1,0,0,0,NETWORK_DELAY +248,0,1,0,0,0,0,0,MEMORY_LEAK +249,1,0,0,0,0,1,1,DATABASE_ISSUE +250,0,1,0,0,0,0,1,MEMORY_LEAK +251,0,0,1,1,0,0,1,NETWORK_DELAY +252,0,1,0,0,0,1,0,MEMORY_LEAK +253,0,1,0,0,0,0,1,NETWORK_DELAY +254,0,0,1,0,0,0,0,NETWORK_DELAY +255,1,1,0,0,0,1,1,MEMORY_LEAK +256,0,1,1,1,1,0,0,NETWORK_DELAY +257,1,0,0,1,1,1,1,DATABASE_ISSUE +258,1,1,1,1,0,0,0,DATABASE_ISSUE +259,1,0,1,1,0,0,0,NETWORK_DELAY +260,0,0,1,0,1,0,0,NETWORK_DELAY +261,1,1,0,0,1,0,0,MEMORY_LEAK +262,1,0,0,0,0,0,1,MEMORY_LEAK +263,1,0,0,0,0,0,0,DATABASE_ISSUE +264,0,0,0,0,1,0,0,DATABASE_ISSUE +265,1,1,1,0,0,1,0,DATABASE_ISSUE +266,1,1,0,0,1,0,0,MEMORY_LEAK +267,1,0,0,0,1,0,0,DATABASE_ISSUE +268,1,1,1,1,1,1,0,NETWORK_DELAY +269,0,0,1,1,0,0,1,NETWORK_DELAY +270,0,0,0,0,0,0,0,MEMORY_LEAK +271,1,0,0,0,1,1,0,DATABASE_ISSUE +272,0,0,0,1,0,1,0,NETWORK_DELAY +273,0,0,1,0,0,1,0,NETWORK_DELAY +274,1,1,0,0,1,0,1,DATABASE_ISSUE +275,1,0,0,0,1,0,0,DATABASE_ISSUE +276,1,1,1,0,0,1,1,DATABASE_ISSUE +277,0,0,1,1,0,1,0,NETWORK_DELAY +278,1,0,0,1,1,1,1,NETWORK_DELAY +279,1,0,0,0,1,0,0,DATABASE_ISSUE +280,0,1,1,1,0,1,1,NETWORK_DELAY +281,1,1,0,0,1,1,1,MEMORY_LEAK +282,0,0,1,0,1,1,0,NETWORK_DELAY +283,0,0,0,0,0,1,0,DATABASE_ISSUE +284,1,0,0,1,1,1,0,DATABASE_ISSUE +285,0,0,1,1,0,1,1,NETWORK_DELAY +286,1,1,0,0,0,0,0,DATABASE_ISSUE +287,0,0,1,1,0,0,0,NETWORK_DELAY +288,0,0,1,1,1,1,0,NETWORK_DELAY +289,1,1,1,1,1,0,0,NETWORK_DELAY +290,1,1,0,1,0,1,0,DATABASE_ISSUE +291,1,1,0,1,1,1,0,DATABASE_ISSUE +292,1,0,0,1,1,1,0,DATABASE_ISSUE +293,0,0,0,0,0,0,1,DATABASE_ISSUE +294,1,1,0,0,1,0,1,MEMORY_LEAK +295,0,1,1,0,1,0,0,MEMORY_LEAK +296,0,0,0,0,0,0,1,DATABASE_ISSUE +297,0,0,0,1,0,0,0,NETWORK_DELAY +298,1,1,1,0,0,0,0,MEMORY_LEAK +299,0,1,1,1,1,0,0,NETWORK_DELAY +300,1,0,0,0,1,1,0,DATABASE_ISSUE +301,0,0,0,0,1,0,1,MEMORY_LEAK +302,0,0,0,0,0,0,1,MEMORY_LEAK +303,0,1,1,0,0,1,1,MEMORY_LEAK +304,0,1,0,1,1,0,1,MEMORY_LEAK +305,1,1,0,1,0,1,0,NETWORK_DELAY +306,0,0,1,1,0,0,0,NETWORK_DELAY +307,1,0,0,1,1,0,0,NETWORK_DELAY +308,0,0,0,1,1,0,1,DATABASE_ISSUE +309,0,1,0,0,1,0,1,MEMORY_LEAK +310,0,0,0,1,1,0,1,NETWORK_DELAY +311,1,0,0,0,0,0,1,MEMORY_LEAK +312,1,0,1,0,0,0,0,DATABASE_ISSUE +313,0,1,0,0,0,1,1,MEMORY_LEAK +314,0,1,1,0,0,1,0,DATABASE_ISSUE +315,1,0,1,0,1,0,0,NETWORK_DELAY +316,1,0,0,0,1,0,1,MEMORY_LEAK +317,0,1,0,0,0,1,1,MEMORY_LEAK +318,0,1,0,1,0,0,1,MEMORY_LEAK +319,0,1,1,0,0,1,0,NETWORK_DELAY +320,0,1,0,0,0,0,0,MEMORY_LEAK +321,0,1,1,1,1,0,0,NETWORK_DELAY +322,1,0,0,0,0,0,0,MEMORY_LEAK +323,1,1,0,0,1,0,1,MEMORY_LEAK +324,0,1,1,0,0,0,1,MEMORY_LEAK +325,0,0,1,1,1,0,0,NETWORK_DELAY +326,0,1,0,0,0,1,1,MEMORY_LEAK +327,0,1,0,0,0,0,1,MEMORY_LEAK +328,0,0,1,0,0,1,0,NETWORK_DELAY +329,0,0,1,1,0,1,0,NETWORK_DELAY +330,0,0,0,0,0,0,1,MEMORY_LEAK +331,1,1,0,0,0,0,0,DATABASE_ISSUE +332,1,1,1,0,0,1,1,MEMORY_LEAK +333,1,1,0,0,0,1,1,MEMORY_LEAK +334,1,1,1,1,0,0,0,NETWORK_DELAY +335,0,0,0,0,0,0,1,MEMORY_LEAK +336,1,0,0,1,1,1,1,DATABASE_ISSUE +337,0,1,1,0,0,0,1,MEMORY_LEAK +338,1,0,1,0,0,1,0,DATABASE_ISSUE +339,1,0,0,1,1,1,0,DATABASE_ISSUE +340,0,0,1,1,1,0,0,NETWORK_DELAY +341,1,0,0,0,1,0,1,NETWORK_DELAY +342,1,0,1,0,0,1,0,DATABASE_ISSUE +343,0,0,0,0,0,1,0,MEMORY_LEAK +344,1,0,0,0,1,1,0,DATABASE_ISSUE +345,0,1,1,1,1,0,0,NETWORK_DELAY +346,0,0,1,0,0,0,0,NETWORK_DELAY +347,0,1,0,1,1,0,0,NETWORK_DELAY +348,1,1,1,1,1,1,0,DATABASE_ISSUE +349,0,0,1,0,0,0,0,NETWORK_DELAY +350,1,0,0,0,0,1,0,DATABASE_ISSUE +351,0,0,0,0,0,0,1,MEMORY_LEAK +352,1,0,0,1,1,1,1,DATABASE_ISSUE +353,1,0,0,0,0,1,0,DATABASE_ISSUE +354,1,0,0,0,1,1,1,DATABASE_ISSUE +355,0,0,1,1,1,0,0,NETWORK_DELAY +356,0,1,0,1,0,1,0,MEMORY_LEAK +357,0,0,1,0,1,0,1,NETWORK_DELAY +358,0,1,1,1,0,0,1,MEMORY_LEAK +359,1,0,0,0,0,1,0,DATABASE_ISSUE +360,1,0,0,0,1,1,0,DATABASE_ISSUE +361,0,0,1,1,1,0,0,NETWORK_DELAY +362,1,1,0,0,0,1,1,MEMORY_LEAK +363,1,0,0,0,0,1,0,DATABASE_ISSUE +364,0,1,0,0,0,1,1,MEMORY_LEAK +365,0,1,1,1,0,1,1,NETWORK_DELAY +366,0,0,0,0,0,0,1,MEMORY_LEAK +367,1,1,0,1,0,1,0,DATABASE_ISSUE +368,1,0,0,0,0,1,1,DATABASE_ISSUE +369,0,1,0,0,0,1,1,MEMORY_LEAK +370,0,0,1,1,0,0,0,NETWORK_DELAY +371,1,1,0,1,1,0,1,MEMORY_LEAK +372,1,1,1,0,0,1,0,DATABASE_ISSUE +373,0,1,0,0,0,0,1,MEMORY_LEAK +374,1,1,0,0,1,0,1,DATABASE_ISSUE +375,0,0,1,1,1,0,0,NETWORK_DELAY +376,0,1,0,0,0,0,1,MEMORY_LEAK +377,1,1,1,1,0,0,0,NETWORK_DELAY +378,1,0,1,1,1,0,0,NETWORK_DELAY +379,1,0,1,1,1,0,0,NETWORK_DELAY +380,0,0,1,1,0,0,0,NETWORK_DELAY +381,1,0,1,1,1,0,0,NETWORK_DELAY +382,1,1,0,1,0,1,1,MEMORY_LEAK +383,0,0,1,1,1,0,0,NETWORK_DELAY +384,0,1,1,0,1,0,1,MEMORY_LEAK +385,1,0,0,1,0,0,0,NETWORK_DELAY +386,0,0,1,0,0,1,0,NETWORK_DELAY +387,1,1,0,0,0,1,0,DATABASE_ISSUE +388,0,1,0,1,1,0,1,MEMORY_LEAK +389,0,1,1,0,1,1,1,MEMORY_LEAK +390,1,0,0,0,0,1,0,DATABASE_ISSUE +391,0,1,0,0,1,0,1,MEMORY_LEAK +392,0,0,0,0,1,0,0,MEMORY_LEAK +393,0,1,1,0,1,0,1,MEMORY_LEAK +394,0,1,0,0,0,0,0,MEMORY_LEAK +395,0,1,0,0,1,0,1,MEMORY_LEAK +396,0,0,1,1,1,0,0,NETWORK_DELAY +397,1,0,0,0,0,0,0,DATABASE_ISSUE +398,0,0,0,0,0,0,0,MEMORY_LEAK +399,1,1,0,1,0,1,1,MEMORY_LEAK +400,1,1,0,0,1,1,0,MEMORY_LEAK +401,0,1,0,0,0,0,1,MEMORY_LEAK +402,0,1,0,1,0,1,1,MEMORY_LEAK +403,0,0,0,0,0,0,0,NETWORK_DELAY +404,1,0,0,0,1,1,0,DATABASE_ISSUE +405,0,0,0,1,0,0,1,MEMORY_LEAK +406,0,0,1,1,1,0,0,NETWORK_DELAY +407,0,0,1,1,0,0,0,NETWORK_DELAY +408,1,1,0,0,0,1,0,DATABASE_ISSUE +409,1,0,0,0,0,1,0,DATABASE_ISSUE +410,1,1,1,0,1,0,1,MEMORY_LEAK +411,0,0,1,1,0,1,0,NETWORK_DELAY +412,0,0,1,1,0,0,0,NETWORK_DELAY +413,0,1,0,0,1,0,0,NETWORK_DELAY +414,1,1,0,0,1,1,0,DATABASE_ISSUE +415,1,1,1,0,0,1,0,DATABASE_ISSUE +416,1,0,0,0,1,1,0,DATABASE_ISSUE +417,0,1,0,0,0,0,0,MEMORY_LEAK +418,0,0,0,0,1,0,1,MEMORY_LEAK +419,0,1,0,1,1,0,1,MEMORY_LEAK +420,0,0,1,1,1,1,1,NETWORK_DELAY +421,0,1,0,1,0,1,0,MEMORY_LEAK +422,1,1,0,0,1,0,0,DATABASE_ISSUE +423,1,0,1,0,0,1,0,NETWORK_DELAY +424,1,0,0,0,1,1,0,DATABASE_ISSUE +425,1,0,0,0,0,1,0,DATABASE_ISSUE +426,0,0,1,1,1,0,0,NETWORK_DELAY +427,0,1,1,0,1,0,0,NETWORK_DELAY +428,0,0,0,0,1,0,0,NETWORK_DELAY +429,0,1,0,0,0,0,0,MEMORY_LEAK +430,1,0,0,0,0,1,0,DATABASE_ISSUE +431,0,0,1,1,1,0,0,NETWORK_DELAY +432,1,0,0,0,0,0,0,MEMORY_LEAK +433,1,0,1,0,0,1,0,DATABASE_ISSUE +434,1,0,0,0,1,0,0,DATABASE_ISSUE +435,0,0,0,0,1,0,1,DATABASE_ISSUE +436,1,1,0,0,1,1,1,DATABASE_ISSUE +437,1,0,0,0,1,0,0,DATABASE_ISSUE +438,0,0,1,1,0,1,1,NETWORK_DELAY +439,0,1,1,0,1,0,1,MEMORY_LEAK +440,0,1,0,1,1,0,0,MEMORY_LEAK +441,0,0,1,1,1,1,0,NETWORK_DELAY +442,0,1,0,1,1,1,0,DATABASE_ISSUE +443,0,1,1,0,0,1,0,DATABASE_ISSUE +444,1,1,1,0,1,0,1,MEMORY_LEAK +445,1,0,0,0,1,1,1,DATABASE_ISSUE +446,0,0,1,1,0,0,0,NETWORK_DELAY +447,1,1,0,1,0,0,1,MEMORY_LEAK +448,0,0,1,1,1,0,0,NETWORK_DELAY +449,1,0,1,0,0,1,0,DATABASE_ISSUE +450,0,0,1,1,0,0,0,NETWORK_DELAY +451,0,0,1,1,0,1,0,NETWORK_DELAY +452,0,1,0,0,0,1,1,MEMORY_LEAK +453,1,1,1,1,0,1,1,DATABASE_ISSUE +454,0,0,1,0,0,0,1,NETWORK_DELAY +455,0,0,0,1,1,1,0,DATABASE_ISSUE +456,0,0,0,0,0,1,0,DATABASE_ISSUE +457,1,0,0,1,1,1,0,DATABASE_ISSUE +458,0,0,0,1,0,0,1,NETWORK_DELAY +459,0,1,1,0,1,0,0,NETWORK_DELAY +460,0,1,0,0,1,0,1,MEMORY_LEAK +461,0,0,1,1,0,1,0,NETWORK_DELAY +462,0,0,1,1,0,0,0,NETWORK_DELAY +463,1,0,1,1,1,0,1,NETWORK_DELAY +464,0,0,0,0,1,1,0,DATABASE_ISSUE +465,1,0,1,1,1,0,0,NETWORK_DELAY +466,0,0,0,1,1,0,1,NETWORK_DELAY +467,0,1,0,0,0,0,1,MEMORY_LEAK +468,1,0,0,0,0,1,0,DATABASE_ISSUE +469,0,1,0,0,0,0,1,MEMORY_LEAK +470,0,1,0,0,0,0,0,MEMORY_LEAK +471,1,1,1,1,0,1,0,DATABASE_ISSUE +472,0,1,1,0,1,1,1,MEMORY_LEAK +473,0,1,0,1,0,0,0,NETWORK_DELAY +474,0,1,1,1,0,0,1,MEMORY_LEAK +475,0,1,1,0,0,0,1,MEMORY_LEAK +476,1,0,0,0,0,0,0,DATABASE_ISSUE +477,0,1,1,1,0,0,1,MEMORY_LEAK +478,0,1,0,0,1,1,0,MEMORY_LEAK +479,1,1,0,0,0,0,1,MEMORY_LEAK +480,0,0,0,0,1,1,0,DATABASE_ISSUE +481,0,0,1,0,0,0,0,NETWORK_DELAY +482,0,1,1,0,0,1,1,MEMORY_LEAK +483,1,1,0,0,1,1,0,DATABASE_ISSUE +484,1,0,0,0,1,1,0,DATABASE_ISSUE +485,1,0,0,0,1,1,1,MEMORY_LEAK +486,1,0,0,0,1,1,0,DATABASE_ISSUE +487,0,1,1,0,0,1,0,MEMORY_LEAK +488,0,0,1,1,0,0,0,NETWORK_DELAY +489,0,0,1,1,1,1,0,DATABASE_ISSUE +490,0,1,0,0,0,0,1,MEMORY_LEAK +491,1,1,0,0,1,0,1,MEMORY_LEAK +492,1,1,0,0,0,0,1,MEMORY_LEAK +493,0,0,1,1,1,0,1,NETWORK_DELAY +494,1,0,1,0,1,0,1,MEMORY_LEAK +495,1,0,1,1,1,0,0,NETWORK_DELAY +496,1,0,0,1,1,1,1,DATABASE_ISSUE +497,1,0,0,0,1,0,0,DATABASE_ISSUE +498,1,1,0,0,1,0,0,DATABASE_ISSUE +499,1,1,0,0,1,1,1,DATABASE_ISSUE +500,0,0,0,1,0,0,0,MEMORY_LEAK +501,1,0,0,1,1,1,0,DATABASE_ISSUE +502,0,0,0,1,1,0,0,NETWORK_DELAY +503,1,1,0,0,0,0,0,MEMORY_LEAK +504,0,1,0,0,1,0,1,MEMORY_LEAK +505,1,1,0,0,1,1,0,DATABASE_ISSUE +506,1,0,0,0,0,0,0,NETWORK_DELAY +507,1,0,0,1,1,1,0,DATABASE_ISSUE +508,1,0,0,0,0,0,1,MEMORY_LEAK +509,1,0,0,0,1,1,0,MEMORY_LEAK +510,0,1,0,0,1,1,0,DATABASE_ISSUE +511,1,0,0,0,1,1,1,DATABASE_ISSUE +512,0,1,0,0,1,1,0,DATABASE_ISSUE +513,0,0,1,1,1,1,1,NETWORK_DELAY +514,1,0,1,0,1,1,0,DATABASE_ISSUE +515,1,0,0,0,1,1,0,DATABASE_ISSUE +516,1,0,0,0,0,1,0,DATABASE_ISSUE +517,1,1,1,0,0,0,1,MEMORY_LEAK +518,0,0,1,1,1,0,0,NETWORK_DELAY +519,1,0,0,0,0,1,0,DATABASE_ISSUE +520,1,0,0,0,1,0,0,MEMORY_LEAK +521,1,0,0,0,1,1,0,DATABASE_ISSUE +522,1,0,0,1,1,1,0,DATABASE_ISSUE +523,0,0,1,0,1,0,1,NETWORK_DELAY +524,0,1,0,0,0,0,1,MEMORY_LEAK +525,0,0,0,1,0,0,1,NETWORK_DELAY +526,0,0,1,1,0,1,0,NETWORK_DELAY +527,0,0,0,0,1,1,0,DATABASE_ISSUE +528,1,1,0,0,1,0,1,MEMORY_LEAK +529,1,0,0,1,0,1,0,DATABASE_ISSUE +530,0,0,1,1,0,0,0,NETWORK_DELAY +531,0,1,1,1,1,1,0,NETWORK_DELAY +532,0,0,1,0,1,0,0,NETWORK_DELAY +533,1,0,0,0,0,0,0,DATABASE_ISSUE +534,1,0,0,0,1,0,0,DATABASE_ISSUE +535,0,0,1,1,0,0,0,NETWORK_DELAY +536,0,0,0,0,1,0,0,NETWORK_DELAY +537,0,1,1,1,0,1,1,NETWORK_DELAY +538,1,1,0,0,1,0,1,MEMORY_LEAK +539,1,1,1,1,1,0,1,MEMORY_LEAK +540,1,1,0,0,1,1,1,MEMORY_LEAK +541,1,0,1,1,0,0,0,NETWORK_DELAY +542,1,1,0,1,0,1,1,DATABASE_ISSUE +543,0,0,1,1,1,0,0,NETWORK_DELAY +544,1,0,0,1,1,0,1,DATABASE_ISSUE +545,0,0,1,1,1,0,1,NETWORK_DELAY +546,1,0,0,0,0,1,0,DATABASE_ISSUE +547,0,0,1,1,0,0,0,NETWORK_DELAY +548,0,1,0,0,0,0,0,MEMORY_LEAK +549,1,0,0,0,0,1,1,DATABASE_ISSUE +550,0,1,0,0,0,0,1,MEMORY_LEAK +551,0,0,1,1,0,0,1,NETWORK_DELAY +552,0,1,0,0,0,1,0,MEMORY_LEAK +553,0,1,0,0,0,0,1,NETWORK_DELAY +554,0,0,1,0,0,0,0,NETWORK_DELAY +555,1,1,0,0,0,1,1,MEMORY_LEAK +556,0,1,1,1,1,0,0,NETWORK_DELAY +557,1,0,0,1,1,1,1,DATABASE_ISSUE +558,1,1,1,1,0,0,0,DATABASE_ISSUE +559,1,0,1,1,0,0,0,NETWORK_DELAY +560,0,0,1,0,1,0,0,NETWORK_DELAY +561,1,1,0,0,1,0,0,MEMORY_LEAK +562,1,0,0,0,0,0,1,MEMORY_LEAK +563,1,0,0,0,0,0,0,DATABASE_ISSUE +564,0,0,0,0,1,0,0,DATABASE_ISSUE +565,1,1,1,0,0,1,0,DATABASE_ISSUE +566,1,1,0,0,1,0,0,MEMORY_LEAK +567,1,0,0,0,1,0,0,DATABASE_ISSUE +568,1,1,1,1,1,1,0,NETWORK_DELAY +569,0,0,1,1,0,0,1,NETWORK_DELAY +570,0,0,0,0,0,0,0,MEMORY_LEAK +571,1,0,0,0,1,1,0,DATABASE_ISSUE +572,0,0,0,1,0,1,0,NETWORK_DELAY +573,0,0,1,0,0,1,0,NETWORK_DELAY +574,1,1,0,0,1,0,1,DATABASE_ISSUE +575,1,0,0,0,1,0,0,DATABASE_ISSUE +576,1,1,1,0,0,1,1,DATABASE_ISSUE +577,0,0,1,1,0,1,0,NETWORK_DELAY +578,1,0,0,1,1,1,1,NETWORK_DELAY +579,1,0,0,0,1,0,0,DATABASE_ISSUE +580,0,1,1,1,0,1,1,NETWORK_DELAY +581,1,1,0,0,1,1,1,MEMORY_LEAK +582,0,0,1,0,1,1,0,NETWORK_DELAY +583,0,0,0,0,0,1,0,DATABASE_ISSUE +584,1,0,0,1,1,1,0,DATABASE_ISSUE +585,0,0,1,1,0,1,1,NETWORK_DELAY +586,1,1,0,0,0,0,0,DATABASE_ISSUE +587,0,0,1,1,0,0,0,NETWORK_DELAY +588,0,0,1,1,1,1,0,NETWORK_DELAY +589,1,1,1,1,1,0,0,NETWORK_DELAY +590,1,1,0,1,0,1,0,DATABASE_ISSUE +591,1,1,0,1,1,1,0,DATABASE_ISSUE +592,1,0,0,1,1,1,0,DATABASE_ISSUE +593,0,0,0,0,0,0,1,DATABASE_ISSUE +594,1,1,0,0,1,0,1,MEMORY_LEAK +595,0,1,1,0,1,0,0,MEMORY_LEAK +596,0,0,0,0,0,0,1,DATABASE_ISSUE +597,0,0,0,1,0,0,0,NETWORK_DELAY +598,1,1,1,0,0,0,0,MEMORY_LEAK +599,0,1,1,1,1,0,0,NETWORK_DELAY +600,1,0,0,0,1,1,0,DATABASE_ISSUE +601,0,0,0,0,1,0,1,MEMORY_LEAK +602,0,0,0,0,0,0,1,MEMORY_LEAK +603,0,1,1,0,0,1,1,MEMORY_LEAK +604,0,1,0,1,1,0,1,MEMORY_LEAK +605,1,1,0,1,0,1,0,NETWORK_DELAY +606,0,0,1,1,0,0,0,NETWORK_DELAY +607,1,0,0,1,1,0,0,NETWORK_DELAY +608,0,0,0,1,1,0,1,DATABASE_ISSUE +609,0,1,0,0,1,0,1,MEMORY_LEAK +610,0,0,0,1,1,0,1,NETWORK_DELAY +611,1,0,0,0,0,0,1,MEMORY_LEAK +612,1,0,1,0,0,0,0,DATABASE_ISSUE +613,0,1,0,0,0,1,1,MEMORY_LEAK +614,0,1,1,0,0,1,0,DATABASE_ISSUE +615,1,0,1,0,1,0,0,NETWORK_DELAY +616,1,0,0,0,1,0,1,MEMORY_LEAK +617,0,1,0,0,0,1,1,MEMORY_LEAK +618,0,1,0,1,0,0,1,MEMORY_LEAK +619,0,1,1,0,0,1,0,NETWORK_DELAY +620,0,1,0,0,0,0,0,MEMORY_LEAK +621,0,1,1,1,1,0,0,NETWORK_DELAY +622,1,0,0,0,0,0,0,MEMORY_LEAK +623,1,1,0,0,1,0,1,MEMORY_LEAK +624,0,1,1,0,0,0,1,MEMORY_LEAK +625,0,0,1,1,1,0,0,NETWORK_DELAY +626,0,1,0,0,0,1,1,MEMORY_LEAK +627,0,1,0,0,0,0,1,MEMORY_LEAK +628,0,0,1,0,0,1,0,NETWORK_DELAY +629,0,0,1,1,0,1,0,NETWORK_DELAY +630,0,0,0,0,0,0,1,MEMORY_LEAK +631,1,1,0,0,0,0,0,DATABASE_ISSUE +632,1,1,1,0,0,1,1,MEMORY_LEAK +633,1,1,0,0,0,1,1,MEMORY_LEAK +634,1,1,1,1,0,0,0,NETWORK_DELAY +635,0,0,0,0,0,0,1,MEMORY_LEAK +636,1,0,0,1,1,1,1,DATABASE_ISSUE +637,0,1,1,0,0,0,1,MEMORY_LEAK +638,1,0,1,0,0,1,0,DATABASE_ISSUE +639,1,0,0,1,1,1,0,DATABASE_ISSUE +640,0,0,1,1,1,0,0,NETWORK_DELAY +641,1,0,0,0,1,0,1,NETWORK_DELAY +642,1,0,1,0,0,1,0,DATABASE_ISSUE +643,0,0,0,0,0,1,0,MEMORY_LEAK +644,1,0,0,0,1,1,0,DATABASE_ISSUE +645,0,1,1,1,1,0,0,NETWORK_DELAY +646,0,0,1,0,0,0,0,NETWORK_DELAY +647,0,1,0,1,1,0,0,NETWORK_DELAY +648,1,1,1,1,1,1,0,DATABASE_ISSUE +649,0,0,1,0,0,0,0,NETWORK_DELAY +650,1,0,0,0,0,1,0,DATABASE_ISSUE +651,0,0,0,0,0,0,1,MEMORY_LEAK +652,1,0,0,1,1,1,1,DATABASE_ISSUE +653,1,0,0,0,0,1,0,DATABASE_ISSUE +654,1,0,0,0,1,1,1,DATABASE_ISSUE +655,0,0,1,1,1,0,0,NETWORK_DELAY +656,0,1,0,1,0,1,0,MEMORY_LEAK +657,0,0,1,0,1,0,1,NETWORK_DELAY +658,0,1,1,1,0,0,1,MEMORY_LEAK +659,1,0,0,0,0,1,0,DATABASE_ISSUE +660,1,0,0,0,1,1,0,DATABASE_ISSUE +661,0,0,1,1,1,0,0,NETWORK_DELAY +662,1,1,0,0,0,1,1,MEMORY_LEAK +663,1,0,0,0,0,1,0,DATABASE_ISSUE +664,0,1,0,0,0,1,1,MEMORY_LEAK +665,0,1,1,1,0,1,1,NETWORK_DELAY +666,0,0,0,0,0,0,1,MEMORY_LEAK +667,1,1,0,1,0,1,0,DATABASE_ISSUE +668,1,0,0,0,0,1,1,DATABASE_ISSUE +669,0,1,0,0,0,1,1,MEMORY_LEAK +670,0,0,1,1,0,0,0,NETWORK_DELAY +671,1,1,0,1,1,0,1,MEMORY_LEAK +672,1,1,1,0,0,1,0,DATABASE_ISSUE +673,0,1,0,0,0,0,1,MEMORY_LEAK +674,1,1,0,0,1,0,1,DATABASE_ISSUE +675,0,0,1,1,1,0,0,NETWORK_DELAY +676,0,1,0,0,0,0,1,MEMORY_LEAK +677,1,1,1,1,0,0,0,NETWORK_DELAY +678,1,0,1,1,1,0,0,NETWORK_DELAY +679,1,0,1,1,1,0,0,NETWORK_DELAY +680,0,0,1,1,0,0,0,NETWORK_DELAY +681,1,0,1,1,1,0,0,NETWORK_DELAY +682,1,1,0,1,0,1,1,MEMORY_LEAK +683,0,0,1,1,1,0,0,NETWORK_DELAY +684,0,1,1,0,1,0,1,MEMORY_LEAK +685,1,0,0,1,0,0,0,NETWORK_DELAY +686,0,0,1,0,0,1,0,NETWORK_DELAY +687,1,1,0,0,0,1,0,DATABASE_ISSUE +688,0,1,0,1,1,0,1,MEMORY_LEAK +689,0,1,1,0,1,1,1,MEMORY_LEAK +690,1,0,0,0,0,1,0,DATABASE_ISSUE +691,0,1,0,0,1,0,1,MEMORY_LEAK +692,0,0,0,0,1,0,0,MEMORY_LEAK +693,0,1,1,0,1,0,1,MEMORY_LEAK +694,0,1,0,0,0,0,0,MEMORY_LEAK +695,0,1,0,0,1,0,1,MEMORY_LEAK +696,0,0,1,1,1,0,0,NETWORK_DELAY +697,1,0,0,0,0,0,0,DATABASE_ISSUE +698,0,0,0,0,0,0,0,MEMORY_LEAK +699,1,1,0,1,0,1,1,MEMORY_LEAK +700,1,1,0,0,1,1,0,MEMORY_LEAK +701,0,1,0,0,0,0,1,MEMORY_LEAK +702,0,1,0,1,0,1,1,MEMORY_LEAK +703,0,0,0,0,0,0,0,NETWORK_DELAY +704,1,0,0,0,1,1,0,DATABASE_ISSUE +705,0,0,0,1,0,0,1,MEMORY_LEAK +706,0,0,1,1,1,0,0,NETWORK_DELAY +707,0,0,1,1,0,0,0,NETWORK_DELAY +708,1,1,0,0,0,1,0,DATABASE_ISSUE +709,1,0,0,0,0,1,0,DATABASE_ISSUE +710,1,1,1,0,1,0,1,MEMORY_LEAK +711,0,0,1,1,0,1,0,NETWORK_DELAY +712,0,0,1,1,0,0,0,NETWORK_DELAY +713,0,1,0,0,1,0,0,NETWORK_DELAY +714,1,1,0,0,1,1,0,DATABASE_ISSUE +715,1,1,1,0,0,1,0,DATABASE_ISSUE +716,1,0,0,0,1,1,0,DATABASE_ISSUE +717,0,1,0,0,0,0,0,MEMORY_LEAK +718,0,0,0,0,1,0,1,MEMORY_LEAK +719,0,1,0,1,1,0,1,MEMORY_LEAK +720,0,0,1,1,1,1,1,NETWORK_DELAY +721,0,1,0,1,0,1,0,MEMORY_LEAK +722,1,1,0,0,1,0,0,DATABASE_ISSUE +723,1,0,1,0,0,1,0,NETWORK_DELAY +724,1,0,0,0,1,1,0,DATABASE_ISSUE +725,1,0,0,0,0,1,0,DATABASE_ISSUE +726,0,0,1,1,1,0,0,NETWORK_DELAY +727,0,1,1,0,1,0,0,NETWORK_DELAY +728,0,0,0,0,1,0,0,NETWORK_DELAY +729,0,1,0,0,0,0,0,MEMORY_LEAK +730,1,0,0,0,0,1,0,DATABASE_ISSUE +731,0,0,1,1,1,0,0,NETWORK_DELAY +732,1,0,0,0,0,0,0,MEMORY_LEAK +733,1,0,1,0,0,1,0,DATABASE_ISSUE +734,1,0,0,0,1,0,0,DATABASE_ISSUE +735,0,0,0,0,1,0,1,DATABASE_ISSUE +736,1,1,0,0,1,1,1,DATABASE_ISSUE +737,1,0,0,0,1,0,0,DATABASE_ISSUE +738,0,0,1,1,0,1,1,NETWORK_DELAY +739,0,1,1,0,1,0,1,MEMORY_LEAK +740,0,1,0,1,1,0,0,MEMORY_LEAK +741,0,0,1,1,1,1,0,NETWORK_DELAY +742,0,1,0,1,1,1,0,DATABASE_ISSUE +743,0,1,1,0,0,1,0,DATABASE_ISSUE +744,1,1,1,0,1,0,1,MEMORY_LEAK +745,1,0,0,0,1,1,1,DATABASE_ISSUE +746,0,0,1,1,0,0,0,NETWORK_DELAY +747,1,1,0,1,0,0,1,MEMORY_LEAK +748,0,0,1,1,1,0,0,NETWORK_DELAY +749,1,0,1,0,0,1,0,DATABASE_ISSUE +750,0,0,1,1,0,0,0,NETWORK_DELAY +751,0,0,1,1,0,1,0,NETWORK_DELAY +752,0,1,0,0,0,1,1,MEMORY_LEAK +753,1,1,1,1,0,1,1,DATABASE_ISSUE +754,0,0,1,0,0,0,1,NETWORK_DELAY +755,0,0,0,1,1,1,0,DATABASE_ISSUE +756,0,0,0,0,0,1,0,DATABASE_ISSUE +757,1,0,0,1,1,1,0,DATABASE_ISSUE +758,0,0,0,1,0,0,1,NETWORK_DELAY +759,0,1,1,0,1,0,0,NETWORK_DELAY +760,0,1,0,0,1,0,1,MEMORY_LEAK +761,0,0,1,1,0,1,0,NETWORK_DELAY +762,0,0,1,1,0,0,0,NETWORK_DELAY +763,1,0,1,1,1,0,1,NETWORK_DELAY +764,0,0,0,0,1,1,0,DATABASE_ISSUE +765,1,0,1,1,1,0,0,NETWORK_DELAY +766,0,0,0,1,1,0,1,NETWORK_DELAY +767,0,1,0,0,0,0,1,MEMORY_LEAK +768,1,0,0,0,0,1,0,DATABASE_ISSUE +769,0,1,0,0,0,0,1,MEMORY_LEAK +770,0,1,0,0,0,0,0,MEMORY_LEAK +771,1,1,1,1,0,1,0,DATABASE_ISSUE +772,0,1,1,0,1,1,1,MEMORY_LEAK +773,0,1,0,1,0,0,0,NETWORK_DELAY +774,0,1,1,1,0,0,1,MEMORY_LEAK +775,0,1,1,0,0,0,1,MEMORY_LEAK +776,1,0,0,0,0,0,0,DATABASE_ISSUE +777,0,1,1,1,0,0,1,MEMORY_LEAK +778,0,1,0,0,1,1,0,MEMORY_LEAK +779,1,1,0,0,0,0,1,MEMORY_LEAK +780,0,0,0,0,1,1,0,DATABASE_ISSUE +781,0,0,1,0,0,0,0,NETWORK_DELAY +782,0,1,1,0,0,1,1,MEMORY_LEAK +783,1,1,0,0,1,1,0,DATABASE_ISSUE +784,1,0,0,0,1,1,0,DATABASE_ISSUE +785,1,0,0,0,1,1,1,MEMORY_LEAK +786,1,0,0,0,1,1,0,DATABASE_ISSUE +787,0,1,1,0,0,1,0,MEMORY_LEAK +788,0,0,1,1,0,0,0,NETWORK_DELAY +789,0,0,1,1,1,1,0,DATABASE_ISSUE +790,0,1,0,0,0,0,1,MEMORY_LEAK +791,1,1,0,0,1,0,1,MEMORY_LEAK +792,1,1,0,0,0,0,1,MEMORY_LEAK +793,0,0,1,1,1,0,1,NETWORK_DELAY +794,1,0,1,0,1,0,1,MEMORY_LEAK +795,1,0,1,1,1,0,0,NETWORK_DELAY +796,1,0,0,1,1,1,1,DATABASE_ISSUE +797,1,0,0,0,1,0,0,DATABASE_ISSUE +798,1,1,0,0,1,0,0,DATABASE_ISSUE +799,1,1,0,0,1,1,1,DATABASE_ISSUE +800,0,0,0,1,0,0,0,MEMORY_LEAK +801,1,0,0,1,1,1,0,DATABASE_ISSUE +802,0,0,0,1,1,0,0,NETWORK_DELAY +803,1,1,0,0,0,0,0,MEMORY_LEAK +804,0,1,0,0,1,0,1,MEMORY_LEAK +805,1,1,0,0,1,1,0,DATABASE_ISSUE +806,1,0,0,0,0,0,0,NETWORK_DELAY +807,1,0,0,1,1,1,0,DATABASE_ISSUE +808,1,0,0,0,0,0,1,MEMORY_LEAK +809,1,0,0,0,1,1,0,MEMORY_LEAK +810,0,1,0,0,1,1,0,DATABASE_ISSUE +811,1,0,0,0,1,1,1,DATABASE_ISSUE +812,0,1,0,0,1,1,0,DATABASE_ISSUE +813,0,0,1,1,1,1,1,NETWORK_DELAY +814,1,0,1,0,1,1,0,DATABASE_ISSUE +815,1,0,0,0,1,1,0,DATABASE_ISSUE +816,1,0,0,0,0,1,0,DATABASE_ISSUE +817,1,1,1,0,0,0,1,MEMORY_LEAK +818,0,0,1,1,1,0,0,NETWORK_DELAY +819,1,0,0,0,0,1,0,DATABASE_ISSUE +820,1,0,0,0,1,0,0,MEMORY_LEAK +821,1,0,0,0,1,1,0,DATABASE_ISSUE +822,1,0,0,1,1,1,0,DATABASE_ISSUE +823,0,0,1,0,1,0,1,NETWORK_DELAY +824,0,1,0,0,0,0,1,MEMORY_LEAK +825,0,0,0,1,0,0,1,NETWORK_DELAY +826,0,0,1,1,0,1,0,NETWORK_DELAY +827,0,0,0,0,1,1,0,DATABASE_ISSUE +828,1,1,0,0,1,0,1,MEMORY_LEAK +829,1,0,0,1,0,1,0,DATABASE_ISSUE +830,0,0,1,1,0,0,0,NETWORK_DELAY +831,0,1,1,1,1,1,0,NETWORK_DELAY +832,0,0,1,0,1,0,0,NETWORK_DELAY +833,1,0,0,0,0,0,0,DATABASE_ISSUE +834,1,0,0,0,1,0,0,DATABASE_ISSUE +835,0,0,1,1,0,0,0,NETWORK_DELAY +836,0,0,0,0,1,0,0,NETWORK_DELAY +837,0,1,1,1,0,1,1,NETWORK_DELAY +838,1,1,0,0,1,0,1,MEMORY_LEAK +839,1,1,1,1,1,0,1,MEMORY_LEAK +840,1,1,0,0,1,1,1,MEMORY_LEAK +841,1,0,1,1,0,0,0,NETWORK_DELAY +842,1,1,0,1,0,1,1,DATABASE_ISSUE +843,0,0,1,1,1,0,0,NETWORK_DELAY +844,1,0,0,1,1,0,1,DATABASE_ISSUE +845,0,0,1,1,1,0,1,NETWORK_DELAY +846,1,0,0,0,0,1,0,DATABASE_ISSUE +847,0,0,1,1,0,0,0,NETWORK_DELAY +848,0,1,0,0,0,0,0,MEMORY_LEAK +849,1,0,0,0,0,1,1,DATABASE_ISSUE +850,0,1,0,0,0,0,1,MEMORY_LEAK +851,0,0,1,1,0,0,1,NETWORK_DELAY +852,0,1,0,0,0,1,0,MEMORY_LEAK +853,0,1,0,0,0,0,1,NETWORK_DELAY +854,0,0,1,0,0,0,0,NETWORK_DELAY +855,1,1,0,0,0,1,1,MEMORY_LEAK +856,0,1,1,1,1,0,0,NETWORK_DELAY +857,1,0,0,1,1,1,1,DATABASE_ISSUE +858,1,1,1,1,0,0,0,DATABASE_ISSUE +859,1,0,1,1,0,0,0,NETWORK_DELAY +860,0,0,1,0,1,0,0,NETWORK_DELAY +861,1,1,0,0,1,0,0,MEMORY_LEAK +862,1,0,0,0,0,0,1,MEMORY_LEAK +863,1,0,0,0,0,0,0,DATABASE_ISSUE +864,0,0,0,0,1,0,0,DATABASE_ISSUE +865,1,1,1,0,0,1,0,DATABASE_ISSUE +866,1,1,0,0,1,0,0,MEMORY_LEAK +867,1,0,0,0,1,0,0,DATABASE_ISSUE +868,1,1,1,1,1,1,0,NETWORK_DELAY +869,0,0,1,1,0,0,1,NETWORK_DELAY +870,0,0,0,0,0,0,0,MEMORY_LEAK +871,1,0,0,0,1,1,0,DATABASE_ISSUE +872,0,0,0,1,0,1,0,NETWORK_DELAY +873,0,0,1,0,0,1,0,NETWORK_DELAY +874,1,1,0,0,1,0,1,DATABASE_ISSUE +875,1,0,0,0,1,0,0,DATABASE_ISSUE +876,1,1,1,0,0,1,1,DATABASE_ISSUE +877,0,0,1,1,0,1,0,NETWORK_DELAY +878,1,0,0,1,1,1,1,NETWORK_DELAY +879,1,0,0,0,1,0,0,DATABASE_ISSUE +880,0,1,1,1,0,1,1,NETWORK_DELAY +881,1,1,0,0,1,1,1,MEMORY_LEAK +882,0,0,1,0,1,1,0,NETWORK_DELAY +883,0,0,0,0,0,1,0,DATABASE_ISSUE +884,1,0,0,1,1,1,0,DATABASE_ISSUE +885,0,0,1,1,0,1,1,NETWORK_DELAY +886,1,1,0,0,0,0,0,DATABASE_ISSUE +887,0,0,1,1,0,0,0,NETWORK_DELAY +888,0,0,1,1,1,1,0,NETWORK_DELAY +889,1,1,1,1,1,0,0,NETWORK_DELAY +890,1,1,0,1,0,1,0,DATABASE_ISSUE +891,1,1,0,1,1,1,0,DATABASE_ISSUE +892,1,0,0,1,1,1,0,DATABASE_ISSUE +893,0,0,0,0,0,0,1,DATABASE_ISSUE +894,1,1,0,0,1,0,1,MEMORY_LEAK +895,0,1,1,0,1,0,0,MEMORY_LEAK +896,0,0,0,0,0,0,1,DATABASE_ISSUE +897,0,0,0,1,0,0,0,NETWORK_DELAY +898,1,1,1,0,0,0,0,MEMORY_LEAK +899,0,1,1,1,1,0,0,NETWORK_DELAY +900,1,0,0,0,1,1,0,DATABASE_ISSUE +901,1,0,0,1,1,1,0,DATABASE_ISSUE +902,0,0,0,1,1,0,0,NETWORK_DELAY +903,1,1,0,0,0,0,0,MEMORY_LEAK +904,0,1,0,0,1,0,1,MEMORY_LEAK +905,1,1,0,0,1,1,0,DATABASE_ISSUE +906,1,0,0,0,0,0,0,NETWORK_DELAY +907,1,0,0,1,1,1,0,DATABASE_ISSUE +908,1,0,0,0,0,0,1,MEMORY_LEAK +909,1,0,0,0,1,1,0,MEMORY_LEAK +910,0,1,0,0,1,1,0,DATABASE_ISSUE +911,1,0,0,0,1,1,1,DATABASE_ISSUE +912,0,1,0,0,1,1,0,DATABASE_ISSUE +913,0,0,1,1,1,1,1,NETWORK_DELAY +914,1,0,1,0,1,1,0,DATABASE_ISSUE +915,1,0,0,0,1,1,0,DATABASE_ISSUE +916,1,0,0,0,0,1,0,DATABASE_ISSUE +917,1,1,1,0,0,0,1,MEMORY_LEAK +918,0,0,1,1,1,0,0,NETWORK_DELAY +919,1,0,0,0,0,1,0,DATABASE_ISSUE +920,1,0,0,0,1,0,0,MEMORY_LEAK +921,1,0,0,0,1,1,0,DATABASE_ISSUE +922,1,0,0,1,1,1,0,DATABASE_ISSUE +923,0,0,1,0,1,0,1,NETWORK_DELAY +924,0,1,0,0,0,0,1,MEMORY_LEAK +925,0,0,0,1,0,0,1,NETWORK_DELAY +926,0,0,1,1,0,1,0,NETWORK_DELAY +927,0,0,0,0,1,1,0,DATABASE_ISSUE +928,1,1,0,0,1,0,1,MEMORY_LEAK +929,1,0,0,1,0,1,0,DATABASE_ISSUE +930,0,0,1,1,0,0,0,NETWORK_DELAY +931,0,1,1,1,1,1,0,NETWORK_DELAY +932,0,0,1,0,1,0,0,NETWORK_DELAY +933,1,0,0,0,0,0,0,DATABASE_ISSUE +934,1,0,0,0,1,0,0,DATABASE_ISSUE +935,0,0,1,1,0,0,0,NETWORK_DELAY +936,0,0,0,0,1,0,0,NETWORK_DELAY +937,0,1,1,1,0,1,1,NETWORK_DELAY +938,1,1,0,0,1,0,1,MEMORY_LEAK +939,1,1,1,1,1,0,1,MEMORY_LEAK +940,1,1,0,0,1,1,1,MEMORY_LEAK +941,1,0,1,1,0,0,0,NETWORK_DELAY +942,1,1,0,1,0,1,1,DATABASE_ISSUE +943,0,0,1,1,1,0,0,NETWORK_DELAY +944,1,0,0,1,1,0,1,DATABASE_ISSUE +945,0,0,1,1,1,0,1,NETWORK_DELAY +946,1,0,0,0,0,1,0,DATABASE_ISSUE +947,0,0,1,1,0,0,0,NETWORK_DELAY +948,0,1,0,0,0,0,0,MEMORY_LEAK +949,1,0,0,0,0,1,1,DATABASE_ISSUE +950,0,1,0,0,0,0,1,MEMORY_LEAK +951,0,0,1,1,0,0,1,NETWORK_DELAY +952,0,1,0,0,0,1,0,MEMORY_LEAK +953,0,1,0,0,0,0,1,NETWORK_DELAY +954,0,0,1,0,0,0,0,NETWORK_DELAY +955,1,1,0,0,0,1,1,MEMORY_LEAK +956,0,1,1,1,1,0,0,NETWORK_DELAY +957,1,0,0,1,1,1,1,DATABASE_ISSUE +958,1,1,1,1,0,0,0,DATABASE_ISSUE +959,1,0,1,1,0,0,0,NETWORK_DELAY +960,0,0,1,0,1,0,0,NETWORK_DELAY +961,1,1,0,0,1,0,0,MEMORY_LEAK +962,1,0,0,0,0,0,1,MEMORY_LEAK +963,1,0,0,0,0,0,0,DATABASE_ISSUE +964,0,0,0,0,1,0,0,DATABASE_ISSUE +965,1,1,1,0,0,1,0,DATABASE_ISSUE +966,1,1,0,0,1,0,0,MEMORY_LEAK +967,1,0,0,0,1,0,0,DATABASE_ISSUE +968,1,1,1,1,1,1,0,NETWORK_DELAY +969,0,0,1,1,0,0,1,NETWORK_DELAY +970,0,0,0,0,0,0,0,MEMORY_LEAK +971,1,0,0,0,1,1,0,DATABASE_ISSUE +972,0,0,0,1,0,1,0,NETWORK_DELAY +973,0,0,1,0,0,1,0,NETWORK_DELAY +974,1,1,0,0,1,0,1,DATABASE_ISSUE +975,1,0,0,0,1,0,0,DATABASE_ISSUE +976,1,1,1,0,0,1,1,DATABASE_ISSUE +977,0,0,1,1,0,1,0,NETWORK_DELAY +978,1,0,0,1,1,1,1,NETWORK_DELAY +979,1,0,0,0,1,0,0,DATABASE_ISSUE +980,0,1,1,1,0,1,1,NETWORK_DELAY +981,1,1,0,0,1,1,1,MEMORY_LEAK +982,0,0,1,0,1,1,0,NETWORK_DELAY +983,0,0,0,0,0,1,0,DATABASE_ISSUE +984,1,0,0,1,1,1,0,DATABASE_ISSUE +985,0,0,1,1,0,1,1,NETWORK_DELAY +986,1,1,0,0,0,0,0,DATABASE_ISSUE +987,0,0,1,1,0,0,0,NETWORK_DELAY +988,0,0,1,1,1,1,0,NETWORK_DELAY +989,1,1,1,1,1,0,0,NETWORK_DELAY +990,1,1,0,1,0,1,0,DATABASE_ISSUE +991,1,1,0,1,1,1,0,DATABASE_ISSUE +992,1,0,0,1,1,1,0,DATABASE_ISSUE +993,0,0,0,0,0,0,1,DATABASE_ISSUE +994,1,1,0,0,1,0,1,MEMORY_LEAK +995,0,1,1,0,1,0,0,MEMORY_LEAK +996,0,0,0,0,0,0,1,DATABASE_ISSUE +997,0,0,0,1,0,0,0,NETWORK_DELAY +998,1,1,1,0,0,0,0,MEMORY_LEAK +999,0,1,1,1,1,0,0,NETWORK_DELAY +1000,1,0,0,0,1,1,0,DATABASE_ISSUE \ No newline at end of file