diff --git "a/WEEK13_\341\204\207\341\205\251\341\206\250\341\204\211\341\205\263\341\206\270\341\204\200\341\205\252\341\204\214\341\205\246_\341\204\214\341\205\245\341\206\274\341\204\213\341\205\262\341\206\253\341\204\214\341\205\265.ipynb" "b/WEEK13_\341\204\207\341\205\251\341\206\250\341\204\211\341\205\263\341\206\270\341\204\200\341\205\252\341\204\214\341\205\246_\341\204\214\341\205\245\341\206\274\341\204\213\341\205\262\341\206\253\341\204\214\341\205\265.ipynb" new file mode 100644 index 0000000..4a3afb6 --- /dev/null +++ "b/WEEK13_\341\204\207\341\205\251\341\206\250\341\204\211\341\205\263\341\206\270\341\204\200\341\205\252\341\204\214\341\205\246_\341\204\214\341\205\245\341\206\274\341\204\213\341\205\262\341\206\253\341\204\214\341\205\265.ipynb" @@ -0,0 +1,782 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "08hiKKPzVMn7", + "outputId": "2b225d7f-4b71-48b0-86bf-d35ebd1e8364" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n" + ] + } + ], + "source": [ + "from google.colab import drive\n", + "drive.mount('/content/drive')" + ] + }, + { + "cell_type": "code", + "source": [ + "!pip install py7zr\n", + "\n", + "import py7zr\n", + "import os\n", + "import pandas as pd\n", + "\n", + "zip_path = '/content/drive/MyDrive/Euron/Data/train.tsv.7z'\n", + "extract_path = '/content/mercari_data'\n", + "os.makedirs(extract_path, exist_ok=True)\n", + "\n", + "with py7zr.SevenZipFile(zip_path, mode='r') as archive:\n", + " archive.extractall(path=extract_path)\n", + "\n", + "tsv_path = os.path.join(extract_path, 'train.tsv')\n", + "mercari_df = pd.read_csv(tsv_path, sep='\\t')\n", + "\n", + "print(mercari_df.shape)\n", + "print(mercari_df.head(3))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "U7k6NFNzYocz", + "outputId": "1f8cdc2b-8df1-4e50-affb-540d5a6869e8" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: py7zr in /usr/local/lib/python3.11/dist-packages (1.0.0)\n", + "Requirement already satisfied: texttable in /usr/local/lib/python3.11/dist-packages (from py7zr) (1.7.0)\n", + "Requirement already satisfied: pycryptodomex>=3.20.0 in /usr/local/lib/python3.11/dist-packages (from py7zr) (3.23.0)\n", + "Requirement already satisfied: brotli>=1.1.0 in /usr/local/lib/python3.11/dist-packages (from py7zr) (1.1.0)\n", + "Requirement already satisfied: psutil in /usr/local/lib/python3.11/dist-packages (from py7zr) (5.9.5)\n", + "Requirement already satisfied: pyzstd>=0.16.1 in /usr/local/lib/python3.11/dist-packages (from py7zr) (0.17.0)\n", + "Requirement already satisfied: pyppmd<1.3.0,>=1.1.0 in /usr/local/lib/python3.11/dist-packages (from py7zr) (1.2.0)\n", + "Requirement already satisfied: pybcj<1.1.0,>=1.0.0 in /usr/local/lib/python3.11/dist-packages (from py7zr) (1.0.6)\n", + "Requirement already satisfied: multivolumefile>=0.2.3 in /usr/local/lib/python3.11/dist-packages (from py7zr) (0.2.3)\n", + "Requirement already satisfied: inflate64<1.1.0,>=1.0.0 in /usr/local/lib/python3.11/dist-packages (from py7zr) (1.0.3)\n", + "Requirement already satisfied: typing-extensions>=4.13.2 in /usr/local/lib/python3.11/dist-packages (from pyzstd>=0.16.1->py7zr) (4.14.0)\n", + "(1482535, 8)\n", + " train_id name item_condition_id \\\n", + "0 0 MLB Cincinnati Reds T Shirt Size XL 3 \n", + "1 1 Razer BlackWidow Chroma Keyboard 3 \n", + "2 2 AVA-VIV Blouse 1 \n", + "\n", + " category_name brand_name price \\\n", + "0 Men/Tops/T-shirts NaN 10.0 \n", + "1 Electronics/Computers & Tablets/Components & P... Razer 52.0 \n", + "2 Women/Tops & Blouses/Blouse Target 10.0 \n", + "\n", + " shipping item_description \n", + "0 1 No description yet \n", + "1 0 This keyboard is in great condition and works ... \n", + "2 1 Adorable top with a hint of lace and a key hol... \n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "mercari_df.info()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "wG2sF3mFbi5o", + "outputId": "b764eb38-c21d-43d2-8155-4b3aadf76acf" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "RangeIndex: 1482535 entries, 0 to 1482534\n", + "Data columns (total 8 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 train_id 1482535 non-null int64 \n", + " 1 name 1482535 non-null object \n", + " 2 item_condition_id 1482535 non-null int64 \n", + " 3 category_name 1476208 non-null object \n", + " 4 brand_name 849853 non-null object \n", + " 5 price 1482535 non-null float64\n", + " 6 shipping 1482535 non-null int64 \n", + " 7 item_description 1482529 non-null object \n", + "dtypes: float64(1), int64(3), object(4)\n", + "memory usage: 90.5+ MB\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "y_train_df = mercari_df['price']\n", + "\n", + "plt.figure(figsize=(6, 4))\n", + "sns.histplot(y_train_df, bins=100)\n", + "plt.show()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 388 + }, + "id": "pSg2ycK2bqc5", + "outputId": "f5502b39-be87-4d8d-c2eb-af416c5d381a" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjYAAAFzCAYAAAAty0N3AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMEBJREFUeJzt3XtYVPXe//8XIDPgYcBDgBQqZnkk8RBEB6stt+imvTPbd2rusiKtbiyVfZu6y1MnTXdaeazdnXrdu9L6XdsOanYZZlYSKokKJplpequASTBaCsh8fn/0ZV2OoAKig6vn47rmupj1ec9a7w9LZl6uWWvGzxhjBAAAYAP+vm4AAACgvhBsAACAbRBsAACAbRBsAACAbRBsAACAbRBsAACAbRBsAACAbRBsAACAbTTydQO/Jx6PR4cOHVKzZs3k5+fn63YAALhsGGN07NgxRUZGyt//7MdlCDaX0KFDhxQVFeXrNgAAuGwdOHBAV1111VnHCTaXULNmzST9tlNcLpePuwEA4PLhdrsVFRVlvZaeDcHmEqp8+8nlchFsAACog/OdysHJwwAAwDYINgAAwDYINgAAwDYINgAAwDYINgAAwDYINgAAwDYINgAAwDYINgAAwDYINgAAwDYINgAAwDb4SoXLXFlZmbKzs72WxcbGyuFw+KYhAAB8iGBzmcvOztao+R8oJLK9JKnk0A+alyrFxcX5uDMAAC49go0NhES2V8voLr5uAwAAn+McGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBs+DTYVFRWaNGmSoqOjFRwcrKuvvlrPPvusjDFWjTFGkydPVuvWrRUcHKzExETt3r3baz1FRUUaNmyYXC6XQkNDlZKSouPHj3vVbN++XbfccouCgoIUFRWlmTNnVunnvffeU6dOnRQUFKSYmBitXr3aa7wmvQAAAN/xabB58cUXtXDhQs2bN0/ffvutXnzxRc2cOVNz5861ambOnKlXX31VixYtUmZmppo0aaKkpCSdPHnSqhk2bJhyc3O1du1arVy5Uhs2bNDIkSOtcbfbrX79+qlt27bKysrSrFmzNHXqVL3++utWzcaNGzV06FClpKRo69atGjhwoAYOHKicnJxa9QIAAHzI+FBycrJ56KGHvJYNGjTIDBs2zBhjjMfjMREREWbWrFnWeHFxsXE6neadd94xxhizc+dOI8ls3rzZqvn444+Nn5+fOXjwoDHGmAULFpjmzZub0tJSq2b8+PGmY8eO1v177rnHJCcne/USHx9vHnnkkRr3cj4lJSVGkikpKalRfU1kZmaaxAlvmMGvbTSDX9toEie8YTIzM+tt/QAANAQ1fQ316RGbG2+8Uenp6fruu+8kSdu2bdOXX36pAQMGSJL27t2r/Px8JSYmWo8JCQlRfHy8MjIyJEkZGRkKDQ1V7969rZrExET5+/srMzPTqunTp48cDodVk5SUpLy8PP38889Wzenbqayp3E5NejlTaWmp3G631w0AAFw8jXy58QkTJsjtdqtTp04KCAhQRUWFnn/+eQ0bNkySlJ+fL0kKDw/3elx4eLg1lp+fr7CwMK/xRo0aqUWLFl410dHRVdZROda8eXPl5+efdzvn6+VM06dP17Rp02rwmwAAAPXBp0ds3n33Xb311lt6++239c0332jp0qX6xz/+oaVLl/qyrXozceJElZSUWLcDBw74uiUAAGzNp0dsxo0bpwkTJmjIkCGSpJiYGP3444+aPn26hg8froiICElSQUGBWrdubT2uoKBAsbGxkqSIiAgVFhZ6rffUqVMqKiqyHh8REaGCggKvmsr756s5ffx8vZzJ6XTK6XTW7JcBAAAumE+P2Pz666/y9/duISAgQB6PR5IUHR2tiIgIpaenW+Nut1uZmZlKSEiQJCUkJKi4uFhZWVlWzbp16+TxeBQfH2/VbNiwQeXl5VbN2rVr1bFjRzVv3tyqOX07lTWV26lJLwAAwLd8Gmz+9Kc/6fnnn9eqVau0b98+rVixQrNnz9Zdd90lSfLz89OYMWP03HPP6cMPP9SOHTt0//33KzIyUgMHDpQkde7cWf3799eIESO0adMmffXVVxo1apSGDBmiyMhISdK9994rh8OhlJQU5ebmavny5XrllVeUlpZm9TJ69GitWbNGL730knbt2qWpU6dqy5YtGjVqVI17AQAAPnaJrtKqltvtNqNHjzZt2rQxQUFBpn379uapp57yuizb4/GYSZMmmfDwcON0Ok3fvn1NXl6e13qOHj1qhg4dapo2bWpcLpd58MEHzbFjx7xqtm3bZm6++WbjdDrNlVdeaWbMmFGln3fffddce+21xuFwmK5du5pVq1Z5jdekl3Phcm8AAOqmpq+hfsac9jG/uKjcbrdCQkJUUlIil8tVL+vctGmTnlqxQy2ju0iSju7dqefvilFcXFy9rB8AgIagpq+hfFcUAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDZ8Hm4MHD+qvf/2rWrZsqeDgYMXExGjLli3WuDFGkydPVuvWrRUcHKzExETt3r3bax1FRUUaNmyYXC6XQkNDlZKSouPHj3vVbN++XbfccouCgoIUFRWlmTNnVunlvffeU6dOnRQUFKSYmBitXr3aa7wmvQAAAN/xabD5+eefddNNNykwMFAff/yxdu7cqZdeeknNmze3ambOnKlXX31VixYtUmZmppo0aaKkpCSdPHnSqhk2bJhyc3O1du1arVy5Uhs2bNDIkSOtcbfbrX79+qlt27bKysrSrFmzNHXqVL3++utWzcaNGzV06FClpKRo69atGjhwoAYOHKicnJxa9QIAAHzI+ND48ePNzTfffNZxj8djIiIizKxZs6xlxcXFxul0mnfeeccYY8zOnTuNJLN582ar5uOPPzZ+fn7m4MGDxhhjFixYYJo3b25KS0u9tt2xY0fr/j333GOSk5O9th8fH28eeeSRGvdyPiUlJUaSKSkpqVF9TWRmZprECW+Ywa9tNINf22gSJ7xhMjMz6239AAA0BDV9DfXpEZsPP/xQvXv31n/+538qLCxMPXr00D//+U9rfO/evcrPz1diYqK1LCQkRPHx8crIyJAkZWRkKDQ0VL1797ZqEhMT5e/vr8zMTKumT58+cjgcVk1SUpLy8vL0888/WzWnb6eypnI7NenlTKWlpXK73V43AABw8fg02Pzwww9auHChrrnmGn3yySd67LHH9MQTT2jp0qWSpPz8fElSeHi41+PCw8Otsfz8fIWFhXmNN2rUSC1atPCqqW4dp2/jbDWnj5+vlzNNnz5dISEh1i0qKup8vxIAAHABfBpsPB6PevbsqRdeeEE9evTQyJEjNWLECC1atMiXbdWbiRMnqqSkxLodOHDA1y0BAGBrPg02rVu3VpcuXbyWde7cWfv375ckRURESJIKCgq8agoKCqyxiIgIFRYWeo2fOnVKRUVFXjXVreP0bZyt5vTx8/VyJqfTKZfL5XUDAAAXj0+DzU033aS8vDyvZd99953atm0rSYqOjlZERITS09OtcbfbrczMTCUkJEiSEhISVFxcrKysLKtm3bp18ng8io+Pt2o2bNig8vJyq2bt2rXq2LGjdQVWQkKC13Yqayq3U5NeAACAb/k02IwdO1Zff/21XnjhBX3//fd6++239frrrys1NVWS5OfnpzFjxui5557Thx9+qB07duj+++9XZGSkBg4cKOm3Izz9+/fXiBEjtGnTJn311VcaNWqUhgwZosjISEnSvffeK4fDoZSUFOXm5mr58uV65ZVXlJaWZvUyevRorVmzRi+99JJ27dqlqVOnasuWLRo1alSNewEAAD52ia7SOquPPvrIdOvWzTidTtOpUyfz+uuve417PB4zadIkEx4ebpxOp+nbt6/Jy8vzqjl69KgZOnSoadq0qXG5XObBBx80x44d86rZtm2bufnmm43T6TRXXnmlmTFjRpVe3n33XXPttdcah8NhunbtalatWlXrXs6Fy70BAKibmr6G+hljjK/D1e+F2+1WSEiISkpK6u18m02bNumpFTvUMvq3c5WO7t2p5++KUVxcXL2sHwCAhqCmr6E+/0oFAACA+kKwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtlGn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efgy9dNPP6mioqLKpx6Hh4dr165dPuqqZjwej8aMGaObbrpJ3bp1s5bfe++9atu2rSIjI7V9+3aNHz9eeXl5+ve//y1Jys/Pr3a+lWOXUnx8vJYsWaKOHTvq8OHDmjZtmm655Rbl5OQoPz9fDoejyotLeHi41WdDmkt13n//fRUXF+uBBx6wll1O++dMlduvrr/T90lYWJjXeKNGjdSiRQuvmujo6CrrqBxr3rz5Rem/Jk6ePKnx48dr6NChXl8++MQTT6hnz55q0aKFNm7cqIkTJ+rw4cOaPXu2pIY3p/79+2vQoEGKjo7Wnj179Pe//10DBgxQRkaGAgICLuv9tHTpUjVr1kyDBg3yWt5Q91F1z9X19fx2thq3260TJ04oODi4zn0TbHDJpaamKicnR19++aXX8pEjR1o/x8TEqHXr1urbt6/27Nmjq6+++lK3eU4DBgywfr7uuusUHx+vtm3b6t13372gP8iG4n/+5380YMAARUZGWssup/3ze1NeXq577rlHxhgtXLjQaywtLc36+brrrpPD4dAjjzyi6dOnN8iP8h8yZIj1c0xMjK677jpdffXVWr9+vfr27evDzi7cm2++qWHDhikoKMhreUPdR2d7rm7oeCvqMtWqVSsFBARUORO9oKBAERERPurq/EaNGqWVK1fqs88+01VXXXXO2vj4eEnS999/L0mKiIiodr6VY74UGhqqa6+9Vt9//70iIiJUVlam4uJir5rT901DnsuPP/6oTz/9VA8//PA56y6n/VO5/XP9vURERKiwsNBr/NSpUyoqKmrQ+60y1Pz4449au3at19Ga6sTHx+vUqVPat2+fpIY5p9O1b99erVq18vp3djnupy+++EJ5eXnn/buSGsY+OttzdX09v52txuVyXfB/Dgk2lymHw6FevXopPT3dWubxeJSenq6EhAQfdlY9Y4xGjRqlFStWaN26dVUOq1YnOztbktS6dWtJUkJCgnbs2OH1pFb5RN6lS5eL0ndNHT9+XHv27FHr1q3Vq1cvBQYGeu2bvLw87d+/39o3DXkuixcvVlhYmJKTk89Zdzntn+joaEVERHjtE7fbrczMTK99UlxcrKysLKtm3bp18ng8VohLSEjQhg0bVF5ebtWsXbtWHTt29MnbG5WhZvfu3fr000/VsmXL8z4mOztb/v7+1ts5DW1OZ/q///s/HT161Ovf2eW2n6TfjoL26tVL3bt3P2+tL/fR+Z6r6+v5LSEhwWsdlTX18vp1wacfw2eWLVtmnE6nWbJkidm5c6cZOXKkCQ0N9ToTvaF47LHHTEhIiFm/fr3XJY2//vqrMcaY77//3jzzzDNmy5YtZu/eveaDDz4w7du3N3369LHWUXkJYb9+/Ux2drZZs2aNueKKK3xyifTf/vY3s379erN3717z1VdfmcTERNOqVStTWFhojPntcsg2bdqYdevWmS1btpiEhASTkJDQIOdyuoqKCtOmTRszfvx4r+WXw/45duyY2bp1q9m6dauRZGbPnm22bt1qXSE0Y8YMExoaaj744AOzfft2c+edd1Z7uXePHj1MZmam+fLLL80111zjdRlxcXGxCQ8PN/fdd5/Jyckxy5YtM40bN75ol0afa05lZWXmz3/+s7nqqqtMdna2199V5ZUnGzduNHPmzDHZ2dlmz5495l//+pe54oorzP33398g53Ts2DHz3//93yYjI8Ps3bvXfPrpp6Znz57mmmuuMSdPnrTW0ZD20/n+3Rnz2+XajRs3NgsXLqzy+Ia2j873XG1M/Ty/VV7uPW7cOPPtt9+a+fPnc7k3fjN37lzTpk0b43A4TFxcnPn666993VK1JFV7W7x4sTHGmP3795s+ffqYFi1aGKfTaTp06GDGjRvn9Tkpxhizb98+M2DAABMcHGxatWpl/va3v5ny8vJLPp/Bgweb1q1bG4fDYa688kozePBg8/3331vjJ06cMP/1X/9lmjdvbho3bmzuuusuc/jwYa91NJS5nO6TTz4xkkxeXp7X8sth/3z22WfV/hsbPny4Mea3S74nTZpkwsPDjdPpNH379q0yz6NHj5qhQ4eapk2bGpfLZR588EFz7Ngxr5pt27aZm2++2TidTnPllVeaGTNm+GROe/fuPevfVeVnD2VlZZn4+HgTEhJigoKCTOfOnc0LL7zgFRIa0px+/fVX069fP3PFFVeYwMBA07ZtWzNixIgq/1lrSPvpfP/ujDHmtddeM8HBwaa4uLjK4xvaPjrfc7Ux9ff89tlnn5nY2FjjcDhM+/btvbZxIfz+30QAAAAue5xjAwAAbINgAwAAbINgAwAAbINgAwAAbINgAwAAbINgAwAAbINgAwAAbINgA+B3bd++ffLz87O+IgLA5Y0P6APwu1ZRUaEjR46oVatWatSoka/bAXCBCDYAfrfKysrkcDh83QaAesRbUQBs47bbbtOoUaM0atQohYSEqFWrVpo0aZIq///Wrl07Pfvss7r//vvlcrk0cuTIat+Kys3N1R133CGXy6VmzZrplltu0Z49e6zxN954Q507d1ZQUJA6deqkBQsWXOqpAjgLjrsCsJWlS5cqJSVFmzZt0pYtWzRy5Ei1adNGI0aMkCT94x//0OTJkzVlypRqH3/w4EH16dNHt912m9atWyeXy6WvvvpKp06dkiS99dZbmjx5subNm6cePXpo69atGjFihJo0aaLhw4dfsnkCqB5vRQGwjdtuu02FhYXKzc2Vn5+fJGnChAn68MMPtXPnTrVr1049evTQihUrrMfs27dP0dHR2rp1q2JjY/X3v/9dy5YtU15engIDA6tso0OHDnr22Wc1dOhQa9lzzz2n1atXa+PGjRd/kgDOibeiANjKDTfcYIUaSUpISNDu3btVUVEhSerdu/c5H5+dna1bbrml2lDzyy+/aM+ePUpJSVHTpk2t23PPPef1VhUA3+GtKAC/K02aNDnneHBw8FnHjh8/Lkn65z//qfj4eK+xgICAC28OwAUj2ACwlczMTK/7X3/9ta655poaB4/rrrtOS5cuVXl5eZWjNuHh4YqMjNQPP/ygYcOG1VvPAOoPb0UBsJX9+/crLS1NeXl5eueddzR37lyNHj26xo8fNWqU3G63hgwZoi1btmj37t363//9X+Xl5UmSpk2bpunTp+vVV1/Vd999px07dmjx4sWaPXv2xZoSgFrgiA0AW7n//vt14sQJxcXFKSAgQKNHj9bIkSNr/PiWLVtq3bp1GjdunG699VYFBAQoNjZWN910kyTp4YcfVuPGjTVr1iyNGzdOTZo0UUxMjMaMGXORZgSgNrgqCoBt3HbbbYqNjdXLL7/s61YA+AhvRQEAANsg2AAAANvgrSgAAGAbHLEBAAC2QbABAAC2QbABAAC2QbABAAC2QbABAAC2QbABAAC2QbABAAC2QbABAAC2QbABAAC28f8D+GWREkjyWscAAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [ + "import numpy as np\n", + "\n", + "y_train_df = np.log1p(y_train_df)\n", + "sns.histplot(y_train_df, bins=50)\n", + "plt.show()\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 449 + }, + "id": "OAniIVAibySM", + "outputId": "534691d0-ffd9-40fe-8016-b52feff20921" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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7pxIBwAAcHPhHisAAACTEKwAAABMQrACAAAwCcEKAADAJAQrAAAAkxCsAAAATEKwAgAAMAnBCgAAwCQEKwC4Ad98840sFovy8/Od3QqAJoA3rwPADaiurtb333+v9u3b8800AAQrALhelZWVcnNzc3YbAJoQLgUCwP8ZMmSIEhISlJCQIC8vL7Vv314zZ85U7X9/durUSXPnztVTTz0lT09PTZgwoc5LgQUFBXr44Yfl6empNm3aaNCgQfr666+N8ffff1/dunWTh4eHunbtqnfffbexDxVAA+G8NQBcYvXq1YqLi9O+ffuUm5urCRMmqEOHDho/frwk6e2331ZycrJmzZpV5/rfffedBg8erCFDhmj79u3y9PTU559/rosXL0qS1qxZo+TkZC1dulT33HOPDh48qPHjx6t169aKjY1ttOME0DC4FAgA/2fIkCEqLi5WQUGBLBaLJOnFF1/Uxo0b9cUXX6hTp0665557tGHDBmOdb775RsHBwTp48KBCQkL00ksvae3atSosLFTLli0v28fdd9+tuXPnaty4ccayV199VVu2bNHu3bsb/iABNCguBQLAJe677z4jVElSeHi4jh8/rurqaklSaGhovevn5+dr0KBBdYaq8vJyff3114qLi9Ptt99uTK+++qrDpUIAzReXAgHgGrRu3bre8VatWv3oWFlZmSTpvffeU1hYmMNYixYtbrw5AE5HsAKAS+zdu9dhfs+ePercufNVB5/evXtr9erVqqqquuyslZ+fnwIDA/X3v/9dMTExpvUMoOngUiAAXOLkyZNKSkpSYWGh/vu//1tLlizR5MmTr3r9hIQE2Ww2jR07Vrm5uTp+/Lj+8Ic/qLCwUJL0yiuvKCUlRYsXL9aXX36pw4cPa+XKlVqwYEFDHRKARsQZKwC4xFNPPaUffvhB/fv3V4sWLTR58mRNmDDhqtdv166dtm/frqlTp+qBBx5QixYtFBISovvvv1+S9Oyzz+q2227TW2+9palTp6p169bq1auXEhMTG+iIADQmngoEgP8zZMgQhYSEaOHChc5uBUAzxaVAAAAAkxCsAAAATMKlQAAAAJNwxgoAAMAkBCsAAACTEKwAAABMQrACAAAwCcEKAADAJAQrAAAAkxCsAAAATEKwAgAAMMn/B/DvmCxMM/2dAAAAAElFTkSuQmCC\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [ + "mercari_df['price'] = np.log1p(mercari_df['price'])\n", + "mercari_df['price'].head(3)\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 176 + }, + "id": "SKtIFoUrb147", + "outputId": "2dedd79b-94ef-4cd8-a760-61bcdcc0f62d" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 2.397895\n", + "1 3.970292\n", + "2 2.397895\n", + "Name: price, dtype: float64" + ], + "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", + "
price
02.397895
13.970292
22.397895
\n", + "

" + ] + }, + "metadata": {}, + "execution_count": 12 + } + ] + }, + { + "cell_type": "code", + "source": [ + "print('Shipping 값 유형:\\n', mercari_df['shipping'].value_counts())\n", + "print('item_condition_id 값 유형:\\n', mercari_df['item_condition_id'].value_counts())\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "trcSI6wBb9G6", + "outputId": "d75d11cf-7ca6-4a1f-e676-c279fc636285" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Shipping 값 유형:\n", + " shipping\n", + "0 819435\n", + "1 663100\n", + "Name: count, dtype: int64\n", + "item_condition_id 값 유형:\n", + " item_condition_id\n", + "1 640549\n", + "3 432161\n", + "2 375479\n", + "4 31962\n", + "5 2384\n", + "Name: count, dtype: int64\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "boolean_cond = mercari_df['item_description'] == 'No description yet'\n", + "count = mercari_df[boolean_cond]['item_description'].count()\n", + "print(count)\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Hwf0QROKb_pZ", + "outputId": "3cc0a4d4-059e-46f4-d4f7-e3b63f5ed72a" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "82489\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "def split_cat(category_name):\n", + " try:\n", + " return category_name.split('/')\n", + " except:\n", + " return ['Other_Null', 'Other_Null', 'Other_Null']\n", + "\n", + "mercari_df['cat_dae'], mercari_df['cat_jung'], mercari_df['cat_so'] = \\\n", + " zip(*mercari_df['category_name'].apply(lambda x: split_cat(x)))\n", + "\n", + "print('대분류 유형 :\\n', mercari_df['cat_dae'].value_counts())\n", + "print('중분류 개수 :', mercari_df['cat_jung'].nunique())\n", + "print('소분류 개수 :', mercari_df['cat_so'].nunique())\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "kh1-u4MQcFVu", + "outputId": "1ab46098-afc8-40cb-f4ba-1cbed7689bdb" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "대분류 유형 :\n", + " cat_dae\n", + "Women 664385\n", + "Beauty 207828\n", + "Kids 171689\n", + "Electronics 122690\n", + "Men 93680\n", + "Home 67871\n", + "Vintage & Collectibles 46530\n", + "Other 45351\n", + "Handmade 30842\n", + "Sports & Outdoors 25342\n", + "Other_Null 6327\n", + "Name: count, dtype: int64\n", + "중분류 개수 : 114\n", + "소분류 개수 : 871\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "mercari_df['brand_name'] = mercari_df['brand_name'].fillna(value='Other_Null')\n", + "mercari_df['category_name'] = mercari_df['category_name'].fillna(value='Other_Null')\n", + "mercari_df['item_description'] = mercari_df['item_description'].fillna(value='Other_Null')\n", + "\n", + "print(mercari_df.isnull().sum())\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "VY89FKmpcJ1N", + "outputId": "396a217e-237d-47ff-d056-66872f29c18c" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "train_id 0\n", + "name 0\n", + "item_condition_id 0\n", + "category_name 0\n", + "brand_name 0\n", + "price 0\n", + "shipping 0\n", + "item_description 0\n", + "cat_dae 0\n", + "cat_jung 0\n", + "cat_so 0\n", + "dtype: int64\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "print('brand name의 유형 건수 :', mercari_df['brand_name'].nunique())\n", + "print('brand name sample 5건 :\\n', mercari_df['brand_name'].value_counts().head(5))\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "qU3iDgjhcOOM", + "outputId": "90a2e70b-6a31-4727-9b12-34ff38cfaa8b" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "brand name의 유형 건수 : 4810\n", + "brand name sample 5건 :\n", + " brand_name\n", + "Other_Null 632682\n", + "PINK 54088\n", + "Nike 54043\n", + "Victoria's Secret 48036\n", + "LuLaRoe 31024\n", + "Name: count, dtype: int64\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "print('name의 종류 개수 :', mercari_df['name'].nunique())\n", + "print('name sample 7건 :\\n', mercari_df['name'].head(7))\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "wRdEYMYPcRcL", + "outputId": "65f0e51b-32aa-4847-873b-2fbebef866f9" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "name의 종류 개수 : 1225273\n", + "name sample 7건 :\n", + " 0 MLB Cincinnati Reds T Shirt Size XL\n", + "1 Razer BlackWidow Chroma Keyboard\n", + "2 AVA-VIV Blouse\n", + "3 Leather Horse Statues\n", + "4 24K GOLD plated rose\n", + "5 Bundled items requested for Ruie\n", + "6 Acacia pacific tides santorini top\n", + "Name: name, dtype: object\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import pandas as pd\n", + "\n", + "pd.set_option('max_colwidth', 200)\n", + "\n", + "print('item_description 평균 문자열 크기 :', mercari_df['item_description'].str.len().mean())\n", + "\n", + "print(mercari_df['item_description'][:2])\n" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "W0LTPKTtcVfz", + "outputId": "bf427532-f8e5-4d1e-89cb-451135fcb5dc" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "item_description 평균 문자열 크기 : 145.71139703278507\n", + "0 No description yet\n", + "1 This keyboard is in great condition and works like it came out of the box. All of the ports are tested and work perfectly. The lights are customizable via the Razer Synapse app on your PC.\n", + "Name: item_description, dtype: object\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer\n", + "\n", + "cnt_vec = CountVectorizer()\n", + "X_name = cnt_vec.fit_transform(mercari_df['name'])\n", + "\n", + "tfidf_descp = TfidfVectorizer(max_features=50000, ngram_range=(1, 3), stop_words='english')\n", + "X_descp = tfidf_descp.fit_transform(mercari_df['item_description'])\n", + "\n", + "print('name vectorization shape:', X_name.shape)\n", + "print('item_description vectorization shape:', X_descp.shape)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "z4MIgP_ycbbf", + "outputId": "1d3258af-7242-4802-8855-f0df0b9f6245" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "name vectorization shape: (1482535, 105757)\n", + "item_description vectorization shape: (1482535, 50000)\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.preprocessing import LabelBinarizer\n", + "\n", + "lb_brand_name = LabelBinarizer(sparse_output=True)\n", + "X_brand = lb_brand_name.fit_transform(mercari_df['brand_name'])\n", + "\n", + "lb_item_cond_id = LabelBinarizer(sparse_output=True)\n", + "X_item_cond_id = lb_item_cond_id.fit_transform(mercari_df['item_condition_id'])\n", + "\n", + "lb_shipping = LabelBinarizer(sparse_output=True)\n", + "X_shipping = lb_shipping.fit_transform(mercari_df['shipping'])\n", + "\n", + "lb_cat_dae = LabelBinarizer(sparse_output=True)\n", + "X_cat_dae = lb_cat_dae.fit_transform(mercari_df['cat_dae'])\n", + "\n", + "lb_cat_jung = LabelBinarizer(sparse_output=True)\n", + "X_cat_jung = lb_cat_jung.fit_transform(mercari_df['cat_jung'])\n", + "\n", + "lb_cat_so = LabelBinarizer(sparse_output=True)\n", + "X_cat_so = lb_cat_so.fit_transform(mercari_df['cat_so'])" + ], + "metadata": { + "id": "LQjtXoFHcwqW" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "print(type(X_brand), type(X_item_cond_id), type(X_shipping))\n", + "print('X_brand shape: {0}, X_item_cond_id shape: {1}'.format(X_brand.shape, X_item_cond_id.shape))\n", + "print('X_shipping shape: {0}, X_cat_dae shape: {1}'.format(X_shipping.shape, X_cat_dae.shape))\n", + "print('X_cat_jung shape: {0}, X_cat_so shape: {1}'.format(X_cat_jung.shape, X_cat_so.shape))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "nv6JroBrc4Kj", + "outputId": "58f9aa55-4ff3-4f51-e14f-232e74213ce0" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " \n", + "X_brand shape: (1482535, 4810), X_item_cond_id shape: (1482535, 5)\n", + "X_shipping shape: (1482535, 1), X_cat_dae shape: (1482535, 11)\n", + "X_cat_jung shape: (1482535, 114), X_cat_so shape: (1482535, 871)\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "from scipy.sparse import hstack\n", + "import gc\n", + "\n", + "sparse_matrix_list = (X_name, X_descp, X_brand, X_item_cond_id,\n", + " X_shipping, X_cat_dae, X_cat_jung, X_cat_so)\n", + "\n", + "X_features_sparse = hstack(sparse_matrix_list).tocsr()\n", + "print(type(X_features_sparse), X_features_sparse.shape)\n", + "\n", + "del X_features_sparse\n", + "gc.collect()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "W0jMvR8Ec_H2", + "outputId": "4086a886-cd49-4023-aaf7-4224f0d2220e" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " (1482535, 161569)\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "129" + ] + }, + "metadata": {}, + "execution_count": 25 + } + ] + }, + { + "cell_type": "code", + "source": [ + "import numpy as np\n", + "\n", + "def rmsle(y, y_pred):\n", + " return np.sqrt(np.mean(np.power(np.log1p(y) - np.log1p(y_pred), 2)))\n", + "\n", + "def evaluate_org_price(y_test, preds):\n", + " preds_exp = np.expm1(preds)\n", + " y_test_exp = np.expm1(y_test)\n", + " rmsle_result = rmsle(y_test_exp, preds_exp)\n", + " return rmsle_result" + ], + "metadata": { + "id": "1KFHkgzedDLO" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "import gc\n", + "from scipy.sparse import hstack\n", + "from sklearn.model_selection import train_test_split\n", + "\n", + "def model_train_predict(model, matrix_list):\n", + " X = hstack(matrix_list).tocsr()\n", + " X_train, X_test, y_train, y_test = train_test_split(\n", + " X, mercari_df['price'], test_size=0.2, random_state=156\n", + " )\n", + " model.fit(X_train, y_train)\n", + " preds = model.predict(X_test)\n", + " del X, X_train, X_test, y_train\n", + " gc.collect()\n", + " return preds, y_test\n" + ], + "metadata": { + "id": "O1kN5_2YdKIh" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.linear_model import Ridge\n", + "\n", + "linear_model = Ridge(solver=\"lsqr\", fit_intercept=False)\n", + "\n", + "sparse_matrix_list = (X_name, X_brand, X_item_cond_id,\n", + " X_shipping, X_cat_dae, X_cat_jung, X_cat_so)\n", + "linear_preds, y_test = model_train_predict(model=linear_model, matrix_list=sparse_matrix_list)\n", + "print('Item Description을 제외했을 때 rmsle 값 :', evaluate_org_price(y_test, linear_preds))\n", + "\n", + "sparse_matrix_list = (X_descp, X_name, X_brand, X_item_cond_id,\n", + " X_shipping, X_cat_dae, X_cat_jung, X_cat_so)\n", + "linear_preds, y_test = model_train_predict(model=linear_model, matrix_list=sparse_matrix_list)\n", + "print('Item Description을 포함한 rmsle 값 :', evaluate_org_price(y_test, linear_preds))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "KT5aFwuYdQnI", + "outputId": "0ac2b2a5-1fce-4bf2-9d52-c5d0c5c0e14a" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Item Description을 제외했을 때 rmsle 값 : 0.4983990938999374\n", + "Item Description을 포함한 rmsle 값 : 0.4680432471796771\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "from lightgbm import LGBMRegressor\n", + "\n", + "sparse_matrix_list = (X_descp, X_name, X_brand, X_item_cond_id,\n", + " X_shipping, X_cat_dae, X_cat_jung, X_cat_so)\n", + "\n", + "lgbm_model = LGBMRegressor(n_estimators=200, learning_rate=0.5, num_leaves=125, random_state=156)\n", + "lgbm_preds, y_test = model_train_predict(model=lgbm_model, matrix_list=sparse_matrix_list)\n", + "\n", + "print('LightGBM rmsle 값 :', evaluate_org_price(y_test, lgbm_preds))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4f4aANkmdTfv", + "outputId": "1993f6d1-38fa-4e98-c6a8-bf9bf1033e1b" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.11/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", + " warnings.warn(\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "preds = lgbm_preds * 0.45 + linear_preds * 0.55\n", + "print('LightGBM과 Ridge를 ensemble한 최종 rmsle 값 :', evaluate_org_price(y_test, preds))" + ], + "metadata": { + "id": "GCTVDReUdZ1C" + }, + "execution_count": null, + "outputs": [] + } + ] +} \ No newline at end of file diff --git "a/WEEK13_\341\204\213\341\205\250\341\204\211\341\205\263\341\206\270\341\204\200\341\205\252\341\204\214\341\205\246_\341\204\214\341\205\245\341\206\274\341\204\213\341\205\262\341\206\253\341\204\214\341\205\265.ipynb" "b/WEEK13_\341\204\213\341\205\250\341\204\211\341\205\263\341\206\270\341\204\200\341\205\252\341\204\214\341\205\246_\341\204\214\341\205\245\341\206\274\341\204\213\341\205\262\341\206\253\341\204\214\341\205\265.ipynb" new file mode 100644 index 0000000..8a3dff9 --- /dev/null +++ "b/WEEK13_\341\204\213\341\205\250\341\204\211\341\205\263\341\206\270\341\204\200\341\205\252\341\204\214\341\205\246_\341\204\214\341\205\245\341\206\274\341\204\213\341\205\262\341\206\253\341\204\214\341\205\265.ipynb" @@ -0,0 +1,3417 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "id": "5jpRD-ADmnHN" + }, + "outputs": [], + "source": [ + "# 토픽 모델링 - 20 뉴스그룹" + ] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.datasets import fetch_20newsgroups\n", + "from sklearn.feature_extraction.text import CountVectorizer\n", + "from sklearn.decomposition import LatentDirichletAllocation\n", + "\n", + "cats = ['rec.motorcycles', 'rec.sport.baseball', 'comp.graphics', 'comp.windows.x',\n", + " 'talk.politics.mideast', 'soc.religion.christian', 'sci.electronics', 'sci.med']\n", + "\n", + "news_df = fetch_20newsgroups(subset='all', remove=('headers', 'footers', 'quotes'),\n", + " categories=cats, random_state=42)\n", + "\n", + "count_vect = CountVectorizer(max_df=0.95, max_features=1000, min_df=2, stop_words='english',\n", + " ngram_range=(1, 2))\n", + "\n", + "feat_vect = count_vect.fit_transform(news_df.data)\n", + "print('CountVectorizer Shape:', feat_vect.shape)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "RRNJSVAvnEja", + "outputId": "a9de7f06-38e8-47db-c062-c5d155dfdf04" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "CountVectorizer Shape: (7862, 1000)\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "lda = LatentDirichletAllocation(n_components=8, random_state=0)\n", + "lda.fit(feat_vect)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "s1_WjXsvnVIU", + "outputId": "bcef821a-9eb0-4d9f-e3c2-a2539d56d5ff" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "LatentDirichletAllocation(n_components=8, random_state=0)" + ], + "text/html": [ + "
LatentDirichletAllocation(n_components=8, random_state=0)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ] + }, + "metadata": {}, + "execution_count": 2 + } + ] + }, + { + "cell_type": "code", + "source": [ + "print(lda.components_.shape)\n", + "lda.components_" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "NYi-MeOOnWmW", + "outputId": "d82f07cf-53d8-4b54-a0ab-e698dd44e0a5" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(8, 1000)\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[2.84969355e+02, 1.82741674e+02, 7.44561411e+01, ...,\n", + " 9.58783824e+00, 1.19929132e+02, 6.30958337e+01],\n", + " [1.25085023e-01, 4.74393664e+00, 1.25049407e-01, ...,\n", + " 2.82363151e+02, 1.25101274e-01, 6.75947204e+01],\n", + " [1.17111450e+02, 1.25040770e-01, 9.61897939e+01, ...,\n", + " 1.25104152e-01, 2.62881154e+01, 1.25029330e-01],\n", + " ...,\n", + " [3.29431245e+01, 1.85323621e+01, 1.16934909e+01, ...,\n", + " 2.13409938e+01, 6.07878793e+00, 1.45410651e+01],\n", + " [1.25063053e-01, 1.25140852e-01, 1.25003472e-01, ...,\n", + " 1.05279458e+02, 1.25088354e-01, 6.75254413e+01],\n", + " [1.25129628e-01, 5.73185922e-01, 1.25189046e-01, ...,\n", + " 5.17057874e+01, 1.25024221e-01, 1.25058221e-01]])" + ] + }, + "metadata": {}, + "execution_count": 3 + } + ] + }, + { + "cell_type": "code", + "source": [ + "def display_topics(model, feature_names, no_top_words):\n", + " for topic_index, topic in enumerate(model.components_):\n", + " print('Topic #', topic_index)\n", + " topic_word_indexes = topic.argsort()[::-1]\n", + " top_indexes = topic_word_indexes[:no_top_words]\n", + " feature_concat = ' '.join([feature_names[i] for i in top_indexes])\n", + " print(feature_concat)\n", + "\n", + "feature_names = count_vect.get_feature_names_out()\n", + "\n", + "display_topics(lda, feature_names, 15)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "fzyqKDkNnatH", + "outputId": "bc175758-0a66-4f34-a89a-eb766c1284e7" + }, + "execution_count": null, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Topic # 0\n", + "10 year medical 1993 health 20 12 disease cancer patients research new 00 number 11\n", + "Topic # 1\n", + "don just like know think good time ve way people really does ll right going\n", + "Topic # 2\n", + "image file jpeg output program gif color images format files use entry bit 03 version\n", + "Topic # 3\n", + "armenian armenians turkish people said turkey armenia government genocide turks muslim russian greek killed azerbaijan\n", + "Topic # 4\n", + "israel jews jewish dos israeli dos dos arab state ed arabs people university palestinian adl anti\n", + "Topic # 5\n", + "edu com graphics available ftp window software use data mail version motif server pub information\n", + "Topic # 6\n", + "god people jesus church believe say christ does christian think know christians did bible said\n", + "Topic # 7\n", + "thanks use does know using like help ve need bike problem advance hi work display\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "# 문서 군집화 소개와 실습" + ], + "metadata": { + "id": "P3-oaf5tncwn" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "import pandas as pd\n", + "import glob\n", + "import os\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "pd.set_option('display.max_colwidth', 700)\n", + "\n", + "from google.colab import drive\n", + "drive.mount('/content/drive')\n", + "path = '/content/drive/MyDrive/Euron/Data/OpinosisDataset1.0/topics'\n", + "\n", + "all_files = glob.glob(os.path.join(path, \"*.data\"))\n", + "\n", + "filename_list = []\n", + "opinion_text = []\n", + "\n", + "for file_ in all_files:\n", + " try:\n", + " with open(file_, 'r', encoding='latin1') as f:\n", + " text = f.read()\n", + "\n", + " filename = os.path.basename(file_)\n", + " filename = os.path.splitext(filename)[0]\n", + "\n", + " filename_list.append(filename)\n", + " opinion_text.append(text)\n", + " except Exception as e:\n", + " print(f\"파일 {file_} 읽기 실패: {e}\")\n", + "\n", + "document_df = pd.DataFrame({\n", + " 'filename': filename_list,\n", + " 'opinion_text': opinion_text\n", + "})\n", + "\n", + "document_df.head()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 751 + }, + "id": "mbEMiCedqOmF", + "outputId": "d3d6c771-a216-4d70-d522-091bb68e62b3" + }, + "execution_count": 43, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " filename \\\n", + "0 room_holiday_inn_london.txt \n", + "1 parking_bestwestern_hotel_sfo.txt \n", + "2 performance_honda_accord_2008.txt \n", + "3 free_bestwestern_hotel_sfo.txt \n", + "4 speed_windows7.txt \n", + "\n", + " opinion_text \n", + "0 We arrived at 23,30 hours and they could not recommend a restaurant so we decided to go to Tesco, with very limited choices but when you are hingry you do not careNext day they rang the bell at 8,00 hours to clean the room, not being very nice being waken up so earlyEvery day they gave us a candy bar and two bottlets of water whic is a very nice touch .\\n We had a room with two double beds which was surprisingly roomy, considering the small hotel rooms I have in previous trips to London .\\nThe room was quiet, clean, the bed and pillows were comfortable, and the service was adequate .\\n We arrived about 11 am, room was ready .\\n Room was good size for Europe , clean throughout .\\n The Co... \n", + "1 Parking was expensive but I think this is common for San Fran .\\n there is a fee for parking but well worth it seeing no where to park if you do have a car .\\n The parking was free, which was great, and the hotel was conveniently located for public transport, and local attractions .\\nAs for in, and, out parking, I have seen a lot of San Francisco with no car at all .\\n They have a parking garage, but they make you leave your vehicle for them to park and then if you want to take a drive later, you have to wait for the staff to get it .\\n There is no real parking space, so I had to pull up in front of the hotel in a small space .\\nThere was valet parking at a cost of $42 .\\n Rooms are v... \n", + "2 Very happy with my 08 Accord, performance is quite adequate it has nice looks and is a great long, distance cruiser .\\n 6, 4, 3 eco engine has poor performance and gas mileage of 22 highway .\\n Overall performance is good but comfort level is poor .\\n I'm impressed with the performance as well as efficiency gains .\\n It has room, performance, good MPG for its size and excellent reliability .\\n For the record I test, drove the Lexus350 the BMW 5 series, the infiniti G35 and enjoyed the Honda performance equally for far less money !\\n Very happy with the car enjoy the ride and performance .\\n The performance of the engine is very smooth .\\n This car had rattles at 500 miles and has horrib... \n", + "3 The wine reception is a great idea as it is nice to meet other travellers and great having access to the free Internet access in our room .\\n They also have a computer available with free internet which is a nice bonus but I didn't find that out till the day before we left but was still able to get on there to check our flight to Vegas the next day .\\n The service was good, very friendly staff and we loved the free wine reception each night .\\n has free wireless and help you with transportation needs .\\n The nightly free wine tasting from 5 , 6 pm is a brilliant idea and gets guests together to socialise witheach other .\\n They have a happy hour where you have a couple offree drinks bet... \n", + "4 Windows 7 is quite simply faster, more stable, boots faster, goes to sleep faster, comes back from sleep faster, manages your files better and on top of that it's beautiful to look at and easy to use .\\n, faster about 20% to 30% faster at running applications than my Vista , seriously\\n Yes, it'll make your computer run a bit slower but\\n, Fast startup and performance\\n Also, in my non, benchmarked experience, Windows 7 has been at least as fast as XP if not faster .\\n It's fast, secure, stable, visually appealing and fun to use .\\n For these two computers, normal use is pretty fast, , not quite as fast as Windows XP SP3, but very close .\\nIt loads blazing fast, software runs smooth a... " + ], + "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", + "
filenameopinion_text
0room_holiday_inn_london.txtWe arrived at 23,30 hours and they could not recommend a restaurant so we decided to go to Tesco, with very limited choices but when you are hingry you do not careNext day they rang the bell at 8,00 hours to clean the room, not being very nice being waken up so earlyEvery day they gave us a candy bar and two bottlets of water whic is a very nice touch .\\n We had a room with two double beds which was surprisingly roomy, considering the small hotel rooms I have in previous trips to London .\\nThe room was quiet, clean, the bed and pillows were comfortable, and the service was adequate .\\n We arrived about 11 am, room was ready .\\n Room was good size for Europe , clean throughout .\\n The Co...
1parking_bestwestern_hotel_sfo.txtParking was expensive but I think this is common for San Fran .\\n there is a fee for parking but well worth it seeing no where to park if you do have a car .\\n The parking was free, which was great, and the hotel was conveniently located for public transport, and local attractions .\\nAs for in, and, out parking, I have seen a lot of San Francisco with no car at all .\\n They have a parking garage, but they make you leave your vehicle for them to park and then if you want to take a drive later, you have to wait for the staff to get it .\\n There is no real parking space, so I had to pull up in front of the hotel in a small space .\\nThere was valet parking at a cost of $42 .\\n Rooms are v...
2performance_honda_accord_2008.txtVery happy with my 08 Accord, performance is quite adequate it has nice looks and is a great long, distance cruiser .\\n 6, 4, 3 eco engine has poor performance and gas mileage of 22 highway .\\n Overall performance is good but comfort level is poor .\\n I'm impressed with the performance as well as efficiency gains .\\n It has room, performance, good MPG for its size and excellent reliability .\\n For the record I test, drove the Lexus350 the BMW 5 series, the infiniti G35 and enjoyed the Honda performance equally for far less money !\\n Very happy with the car enjoy the ride and performance .\\n The performance of the engine is very smooth .\\n This car had rattles at 500 miles and has horrib...
3free_bestwestern_hotel_sfo.txtThe wine reception is a great idea as it is nice to meet other travellers and great having access to the free Internet access in our room .\\n They also have a computer available with free internet which is a nice bonus but I didn't find that out till the day before we left but was still able to get on there to check our flight to Vegas the next day .\\n The service was good, very friendly staff and we loved the free wine reception each night .\\n has free wireless and help you with transportation needs .\\n The nightly free wine tasting from 5 , 6 pm is a brilliant idea and gets guests together to socialise witheach other .\\n They have a happy hour where you have a couple offree drinks bet...
4speed_windows7.txtWindows 7 is quite simply faster, more stable, boots faster, goes to sleep faster, comes back from sleep faster, manages your files better and on top of that it's beautiful to look at and easy to use .\\n, faster about 20% to 30% faster at running applications than my Vista , seriously\\n Yes, it'll make your computer run a bit slower but\\n, Fast startup and performance\\n Also, in my non, benchmarked experience, Windows 7 has been at least as fast as XP if not faster .\\n It's fast, secure, stable, visually appealing and fun to use .\\n For these two computers, normal use is pretty fast, , not quite as fast as Windows XP SP3, but very close .\\nIt loads blazing fast, software runs smooth a...
\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", + "variable_name": "document_df", + "summary": "{\n \"name\": \"document_df\",\n \"rows\": 51,\n \"fields\": [\n {\n \"column\": \"filename\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 51,\n \"samples\": [\n \"voice_garmin_nuvi_255W_gps.txt\",\n \"service_bestwestern_hotel_sfo.txt\",\n \"size_asus_netbook_1005ha.txt\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"opinion_text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 51,\n \"samples\": [\n \" The voice prompts and maps are wonderful especially when driving after dark .\\nI also thought the the voice prompts of the 750 where more pleasant sounding than the 255w's .\\n The 750 sounds more like a real female voice, where the 255w sounds more robotic .\\n I didn't have the problems with the sounds of the voices like others have .\\nSome of the voices are annoying .\\n My understanding is that Garmin really compressed the voice in this unit, far more than in previous units .\\n I like my older unit better , better voice quality and it simply tells you how far to the next turn and what direction to turn .\\n The quality of the voice leaves a bit to be desired .\\nThe text to speech is great for not having to look down at the screen endangering yourself and others on the road and after the voice updates the Garmin put out for the 255W the scratchiness and robotic sounding voice became crisp and very audible .\\n I note that a competitor is coming out with a Homer Simpson version of the GPS voices .\\nI wish that the GPS had a remote control that allowed you to change screens without having to lean forward while driving, or better yet, responded to voice commands .\\nFirst I want to address the potential problem on 255w which is the robotic sound, I personally think it is absolutely understandable, the female sound is a little vauge at some point, however the man's voice is very clear to me, so this is not a problem for me .\\nSome of the negatives that were mentioned that I did not find to be true were that you can't understand the voice The possible list could go on and on but I think you get the idea .\\n The voice is somewhat robotic and some street names are mispronounced, but it's all understandable, I read comments in some reviews that the voice is not loud enough, but I have no problem .\\n The text, to, speech is very good, with very clear voices .\\n You have your choice of several languages and voices .\\n Also, for no extra charge, you are able to download several voices and vehicles from the Garmin site .\\n For instance, you can change the voice of the GPS .\\nThe voice descriptions of the routes are clear and easily understood, even for me with a hearing loss .\\n At volumes of 60% or above, there is so much distortion that the voices sound like they are coming from a blown speaker .\\n It seems to be caused by Garmin decreasing the file sizes and quality of the voice files .\\n On previous models like the 350 and 360 the voice files were 100\\n Its almost impossible to understand the voice as its metallic tinny .\\n Many a times, this is a distraction as you will be wondering what the voice command said .\\n Other than the Magellan's screen being an inch smaller , but really noticeable , the Magellan did not have text to voice, and often would take a much longer route even though we told it to take freeways .\\nThe most noticeable thing is that the screen is much easier to read, and that the text to voice is extremely valuable and much better than a beep just as you need to turn .\\n And the voice and streets match perfectly .\\n the female voice is much clearer than Jack, the male American English .\\n I couldn't understand the Australian or English voices, but Samantha is clear as a bell and can even be heard over the radio .\\n The screen is easy to see, the voice tells you where you are and it's very accurate .\\n When the voices are turned up loud enough for my satisfaction, the speakers sound like they are overpowered, making a distorted noise during the loudest parts of the system's voices .\\n It seems that the female voices do not distort quite as much as the male voices .\\n The voices seem too robotic .\\n However, I much prefer robotic voices to no spoken directions at all .\\n Everybody said the same thing, great unit, but poor voice in the TTS mode .\\n So I called Garmin and ask if any fix was comming out to fix the voice .\\n I bought the 255W and the voice was tinny and soft .\\n Voice commands were mechanical but clear .\\n I had no problem with the clarity of the voice system .\\n A clear voice tells me when the turns are coming up, as well as the names of the roads .\\n the unit takes you on weird routes and people don't like the TTS voice .\\n The user remarks on voice on saying the street name was important to me and easy use of device so too was important .\\nThe voice directions are great, but sometimes it mispronounces names .\\nThe default voice is extremely clear and easy to understand, so I never even tried any of the alternative voices .\\nI like being able to select different voices, however when I am using Daniel with the English accent, he seems to be clearing his throat at the end of his directions .\\nThe voice instructions given are clear, but as few people mentioned in their reviews, you need to get familiar with the pronunciation .\\nNot only the voice gives turn, by, turn instructions, the map on the screen also has a thick purple line indicating the route ahead .\\n This is a big help as I was essentially following that thick purple line while listening to the voice instructions to make sure I was make correct turns when in Buffalo .\\n Often when I'd get a phone call or was talking to someone, it would have been nice to just have the ability to quickly make the voice directions mute .\\n I have no problems reading it in bright sunlight, but with the voice to text, the screen is almost unnecessary .\\n I had read about concerns the voice prompts were not loud enough .\\n I also love the small things, such as being able to download new voices, and vehicles, I plan on getting all the vehicles has on their site, because there is one for every season, for every mood, every time of year .\\n The screen is crystal clear and the voice in it is nice and loud .\\n There are different voices you can choose to give you your directions, even Australian, American and British English .\\nI agree that the sound isn't great for the TTS voice but it's definitely audible and I like it over all .\\n The non TTS voice is more pleasant .\\n The only complaint that I have if you even want to call it that is that the text, to, speech voices sound pretty robotic .\\n You can also change the voice you hear and your vehicle type .\\n The Voice Prompted turn by turn directions make it easy to get from one place to another without having to look up at the GPS, but of course you also get turn, by, turn directions on the GPS with a touch of the screen .\\nThe unit worked well and I had no issue with the voice as I had my window up all the time and did not have the radio on .\\n I switched over to the male voice which I happen to like better .\\nThe screen is clear and the instructions are good though again if you have a lot of exits or turns all in the same spot you have to be careful to just listen to the voice and watch the road or you can miss the turn .\\nUnder the Services link on the Garmin site look for the Goodies section and The Garmin Garage link for extra car images and sometimes voices too .\\n The only complaint I have is that the voice is a little bit tinny especially if the volume is turned up .\\n The voice directions give you fair warning when you are about to take a turn, which is really important .\\n The voice is annoying as heck too, no personality .\\n The voice it has is clear and readable even for my 79 year old ears .\\nThe voice is clear and easy to understand .\\n Since my near vision isn't very good I like the combination of the voice prompts and the big white arrow indicating an approaching turn, especially at night .\\n0 out of 5 stars No Jill voice on this one !\\nI rated this item with 4 stars because it does not have Jill's voice and there's no way to put it in .\\n All the english voices you have suck big time, you will not like not even one and the new Samantha voice really sucks big time .\\n What they did was, they made new voice files a lot smaller that on the previous models and all the new voices sound like crap and there's no way to copy the voices from other devices like you use to with the previous models .\\n If you input an address on where you want to go, it tells you how to get there in very clear graphics and also with a computer voice that is not obnoxious to listen to .\\nI'm really glad I bought it though, and like the easy to read graphics, the voice used to tell you the name of the street you are to turn on, the uncannily accurate estimates of mileage and time of arrival at your destination .\\n Map is bright and detailed, voice directions are clear and loud .\\nThe voice prompts are mostly clear, sometimes quirky and the volume levels adequate .\\n The voice system gave ample time to make turns and lane changes .\\n Several voice options will announce both directions and street names, etc .\\n From reviews, I thought there might only be one voice .\\n The pre, installed english voice is a little robotic but if you switch to the british american it is perfect .\\n After ample research I selected the Nuvi 255W for it's abundant features, wider screen and voice communication .\\nVOICE ACTIVATION DID STOP WORKING & THEN CAME BACK IN GERMAN , JUST CHANGED IT BACK ENGLISH & HAS BEEN WORKING WELL SINCE THEN .\\n Love that you can change the voice person talking on this one, my last one didn't do that .\\nOthers have said that the voice directions leave something to be desired in terms of volume and clarity .\\n I must say, though, that I believed it would have a certain cachet to use the British English female voice that is a standard feature but found that she could not properly pronounce some of the street names in my area .\\nThe voice commands are excellent and timely .\\n The model 255W that we received seemed to take longer to find a satelite, and the man's voice was very fast and not as clear, and at times seemed a bit confused in directions .\\n The voice is very clear and gives plenty of warning when we need to make a turn ahead .\\n\",\n \" Both of us having worked in tourism for over 14 years were very disappointed at the level of service provided by this gentleman .\\n The service was good, very friendly staff and we loved the free wine reception each night .\\n Also, thanks to Ken the concierge for recommending Grand Limo service .\\n The restaurant is not cheap but is very well patronised and the service is very good as is the food .\\n Service was spotty Front desk was marginally helpful .\\n This tuscan, themed hotel was charming, clean comfortable and the complimentary concierge service was so helpful .\\nPhenominal Service, great room, great location , couldn't have asked for more .\\n It has some charms in decor, and all staff gave very good service to us .\\n The rooms were clean and updated, the beds were comfortable, and the bellman service was fast and efficient .\\n A highlight of our visit was the historic boats at the Hyde Street Pier , , a national Park Service site that costs only $5 .\\n The service was quick and gracious checking in and out .\\nGreat location service and value !\\nSo to sum up if your looking for somewhere to lay your head after a long day then this is the place for you if your looking for something a bit special with good customer service avoid this place like the plague\\nI did not take advantage of the concierge service, but I saw many people were receiving great service from them .\\nGreat value and service for the price !\\nExcellent Service , Great Location\\n The staff and service were exceptional .\\nThe concierge can give discounts for booking city tours and for some restaurants, although we tried Neptune's which was recommended to us and felt it was overpriced for the service and quality .\\n I personally appreciated the free internet service in the hotel .\\nIn addition, they advertise Limousine service to the financial district but when I inquired they announce they had stopped the service and I would need to take mass transportation .\\nAs I checked out I expressed my disappointment there were no biscottis and transportation service and the check out clerk tells me they do have the service and I needed to make an appointment .\\n All employee's that I mentioned have shown customer service skills that are above and beyond .\\nWe had a discussion on the plane that it was such a shame that customer service was gone in so many companies these days .\\nThe rooms were a decent size for a city hotel and were very clean and well serviced .\\nWonderful service friendly people\\nseems service just isn't the way it used to be .\\ni'am 40 years old and its very disheartening that people have lost their pride of service and doing a good job .\\nWe have stayed at The Tuscan Inn on our last 3 trips to San Francisco, and I really can't fault the service .\\n The staff at this hotel make you feel so welcome and its service with a smile .\\n All the staff go the extra mile to assist in anyway they can and the staff of the ajoining Cafe Pescatore are just as welcoming, with great service and the food is excellent .\\n We ate at the Italian restaraunt located in the hotel and the food and service was outstanding .\\n Never experienced the room service .\\n Service was all good, albeit a bit stoic .\\n Unfortunately we didn't get to dine in the hotel restaurant, but I'd say it would be good, if the after hours service is anything to go by !\\n I'd highly recommend the Tuscan Inn based on location, cheerfulness of staff, aesthetics in the room and general overall service .\\nExcellent service great location good value\\nThe staff at the front desk could not have been more helpful and whilst we did not avail his services, the concierge always seemed to be busy with guests giving info and advice .\\n There was also a gentleman offering massage at this time and we met a few people who had enjoyed his services .\\n The food and service were both excellent .\\n This was probably not the best pick for us as we don't like tourist areas and Fishermans Wharf if one big tourist service .\\n There are many public transportation options including the cable cars, the trolley line and bus service .\\n The highlight of this hotel for us was the service offered by the staff, particularly the two concierges on duty while we were there .\\n Their service was of the level and knowledge I would expect at at 5, star hotel .\\n One day we had the do not disturb sign on the door before the maid had come so we could rest, and when we finally stepped out for about an hour, we changed the sign for maid service and everything was perfect when we returned !\\nAmenities , While this hotel isn't a luxury property, they have some nice touches like marble bathrooms, mini bar, room service and an evening wine reception every day .\\n At this point I asked to be put through to Best Western Customer Services and amazingly our room was changed to a king bed suite as per our reservation within the hour .\\n They state that there is an obligatory service charge for tables of more than 6 .\\n We dined as a party of 4 and were still hit with this and then the waitress failed to hand over $10 of change taking this as an additional service charge .\\n We were very impressed with the service we received .\\nThe concierge service is second to none .\\nTuscan Inn has it all, exellant location,very close to public transport, very clean, impeccable, friendly service and a supermarket opposite .\\nWe found a great breakfast place just around the corner in Taylor St, called Darren's Cafe, good prices with excellant food and service .\\n Valet parking for $40 per night seems a bit steep,but at least the service was efficient and quick .\\n very clean,well maintained,with efficient,if not overly friendly service .\\nThe hotel makes a big thing of the coffee bisc service in the morning,and this is quite nice .\\n I'd say that,as far as the evening wine service is concerned,if you happen to be in the hotel,it's fine .\\n Did not eat at the restaurant, but room service was great .\\n Overall, the stay at The Tuscan Inn was great and would highly recommend due to the room service .\\n There are other hotels in the area who do not offer room service .\\nThe service in the hotel was really good .\\n The restaurant in the hotel , Cafe Pescatore , does the breakfast run for room service, it was adequate but a little overpriced .\\n Lunch and dinner room service is provided by North Beach Pizza, which deliveries many Italian specialties including pasta, entrees, salads, sandwiches and of course , pizza .\\n However, there are countless restaurants of all sorts and price ranges within a 1, 4 block walk of this hotel, there is little reason to order room service .\\n We did not use this service but thought it was nice that it was available if needed .\\n We did not eat at the hotel restaurant, we chose to eat at the IHOP around the corner for breakfast and it was good food and service, and they are open 24 hours .\\n Maid service was prompt and outstanding .\\nvery good hotel , great location, concierge extremely helpful, decor is nice and the maid service was excellent .\\n The customer service was wonderful .\\n The adjacent Cafe Pescatero was handy for breakfast but had some hiccups in service, but it was okay overall .\\n, provide service like high end hotels .\\nWill store your luggage in separate room on your check out day if you have late flight, want to spend more time,Oldest Italian restaurant in the country w in walking distance, back east service, integrity, etc .\\n Split a fare w a private service i .\\n, we walked everywhere including up the hill to Coit Tower then walked down just in time to attend 1300 service @ St .\\n The staff was so friendly and helpful and the concierge service was very knowledgeable .\\n A masseur was giving guests a massage at the same location, not sure if there was a charge involved for that service, as there was no information about that anywhere .\\nThe hotel is conveniently located to the shopping centre across the road, and we made use of this to purchase our breakfast requirements, as we had not had great service from the adjoining cafe Pescatore for our evening meal and thought we would do our own thing each morning .\\nHousekeeping service was very inadequate, though .\\nand the service was just ok too .\\n The whole trip was ruined by the guest service of the hotel .\\n They say they pride themselves on being the best in guest service but I was not impressed at all .\\nThe valet parking was overpriced, the service was terrible, and the coffe was cold .\\nservice was extra good, very friendly and there is a great cafe across the street which has the best breakfast in the world .\\n The service was fine with the exception of check, in .\\n From reading other reviews, it seems as though this hotel has significant lapses in service from time to time .\\n Nevertheless, I did like this hotel, the rooms, location, and most of the service and I would stay here again .\\nNice place but service could be better\\n Overall we had a nice stay but just had some minor service issues .\\n When we finally found the church later, the service times she had given us were wrong, too .\\n Speaking of parking, you're going to have to pay and it's going to have to be valet service, as there are no free self park lots that are part of the hotel .\\n The hotel is pretty much as you'd expect from the chain , nice clean rooms well serviced, and the staff were extremely helpful, very pleasant to deal with .\\n Service was poor and they got our order wrong, but they did correct it at no extra cost and the food was good .\\nGreat service and friendly Front Desk .\\n The Concierge service is excellent .\\n Valet parking was $36 a day, but we're not complaining because other SF wharf hotels have charged us a similar fee even without the valet service .\\n This hotel is truly a value for the mid, level traveler looking for excellent accomodations and the HIGHEST LEVEL OF SERVICE ANYWHERE !\\n But the maid service was excellent, it was very clean and the bed was comfortable .\\n The service from every staff member we encountered was delightful .\\nGreat location service and beer .\\nThe hotel room was average although the service was good .\\nIn accordance with the Tuscan Inn\\u0092s Italian style theme a coffee tea biscotti service was open from 6am till 9am in the mornings .\\n In the evenings from 5pm till 6pm a wine, beer and sparkling water service was available .\\n Maid service was prompt, too .\\n the service is poor, and for those used to staying in Kimpton hotels .\\nThere is simply not the service, oriented feeling one is used to in this hotel group .\\n It has everthing you need to have a great time in a great city, location, good service, great food , comfortable rooms and a complimentary happy hour .\\n The cafe is comfortable and service was attentive and polite .\\nRoom service at the hotel is limited :\\n The rooms are small but very clean, charmingly decorated with a view of the little flowered courtyard, comfy beds, plenty of pillows towels and smiling service .\\n I really didn't get a chance to experience the staff's level of service but the rooms are small as is the bathroom .\\n One other thing, I took my family to the eating establishment connected to this hotel and the service there was TERRIBLE !\\n The concierge, in turn, told us to see the bellman, who said the shuttle did not run on weekends and he knew nothing about how to arrange the service .\\n We ate there several times and never had a bad meal or poor service .\\n While we were making these arrangements, the valet secured a shuttle service to get us to the airport on time .\\n Found the food there to be quite nice, and our service was always prompt and efficient .\\nI planned a weekend getaway and thought because of the location and Hotel chain we would receive good service .\\n The service was excellent, the room was terrific, the bed was incredibly comfortable and the hotel is centrally located to all the major attractions of San Francisco .\\nVery clean room, great location, wonderful service and dog friendly .\\n The personalized service always stands out and if we have a problem, it is immediately remedied .\\n WORST BW we've ever stayed in as far as service goes .\\n We ate breakfast there one day and were appalled at the slow service, rude waitstaff, and overpriced breakfast food .\\n I had breakfast and dinner a few times at the restaurant joined to the hotel, Cafe Pescatore, and thought the food and the service were both very good .\\n The rooms were great and the Service wonderful .\\n The only complaint I have is the Valet service .\\n The front desk is the worst service I have had in years .\\n And the hotel restaurant food and service was awful .\\ngreat rooms fantastic location and great service !\\n i would also urge other vistors to prebook Alacatraz with Blue and Gold Fleet direct on there website before they arrive in San Fran as you can pick up your tickets at the self service machine without the miles of queues !\\n The food at the " Cafe" is quite " hotel, like" but the service makes up for it .\\n friendly service was evident each day and the gentleman conceirge was patient and helpful .\\n The valet guy was extremely helpful and very friendly but the check in guest services staff on the whole uninterested and unhelpful .\\n The hotel restaurant was a bit over priced but good service and good quality .\\nCourteous, responsive service and a great location !\\n The service was good, the wine service each evening was very nice next to the fireplace, and the location was awesome !\\n The service was friendly and helpful at the front desk, but the conciege that I dealt with was not very good .\\n Excellent staff and service and the adjoining Italian restaurant was superb .\\n A very cheerful staff and prompt service .\\n Great people, service was terrefic, especially during this stressful time !\\n Teaming this Hotel with the great food service @ Cafe Pescatore, I would definitely choose this hotel again while in SF, an experience we won't ever forget .\\n I was also disappointed that the hotel's " room service" came from a nearby pizzeria, but the hotel still charged a fee on each delivery .\\n Being that I worked as a front desk person at a Best Western for quite awhile I was on the lookout for good service and facilities .\\n We asked her how to get back to the airport without having to pay the shuttle service $15 each .\\n And value is key for the rooms and the service !\\n The service is always great and the rooms very clean .\\nnette Lage aber durchschnittlicher Service !\\n\",\n \" A few other things I'd like to point out is that you must push the micro, sized right angle end of the ac adapter until it snaps in place or the battery may not charge .\\n The full size right shift key was enough for me to drop my 1000HE .\\n You should understand that this is not a full featured laptop squeezed into a smaller and manageable size .\\n The keyboards are 92% the size of those found on a standard computer and the machines run a little hot .\\n The keyboard has a responsive feel and the larger keys along with the oversize right shift key are a real plus .\\n Yes, I did have an airplane trip in the last couple of days, and was thankful for the small size when the person in front of me reclined their seat back all the way for the whole flight .\\n Taking the machine through airport security is so much easier than doing the same with a full size notebook or even the 700m .\\n Battery life continues to hold up and the keyboard is a true godsend with its full size keys .\\n I recommend minimizing the size of the scroll zones on the right and bottom, other wise you find the screen suddenly scrolling when you did not want it to do so .\\n It's a huge improvement over my old, full, size laptop in many ways, and the few things that are less than ideal aren't such a big deal .\\n, Tiny and light the slightly smaller than standard keyboard is no problem for me to use, , and I'm a touch typist, , the keys themselves are a good size and feel good .\\n The keyboard is terrific, solid feel and full size .\\n It's the perfect size and weight to take almost anywhere .\\n The machine has the most comfortable small keyboard I've ever used, because the keys are flat and so the surfaces that your fingerpads touch are actually about the size of standard keyboards .\\n It won't give you all the functionality of a full, sized laptop, and the small screen may take some getting used to, but no regular laptop gives you this kind of battery life, and most of the functions absent here aren't used by most people most of the time anyway, so if the tradeoff is fewer features for greatly, increased battery life, I'll take the latter .\\n Smaller size videos play even smoother .\\nkeyboard is actually a pleasure to use inspite of small size\\n Size is one of the smaller for a 10 yet still maintaining reasonable useability .\\n Ended up with this one based on smaller size, lighter weight and the overwhelming number of positive reviews .\\nPro's , I so wanted to love the small size, long battery life, brilliant blue color and light weight .\\n The performance is great for it's size , remember these are not designed to be speed demons but to be highly portable and cordless for extended periods of time .\\nI must remind buyer's these are not meant to be a replacement for a full size PC, they don't have CD DVD drives in them although you can get an external, which I have .\\n Small, easy to grab and go, and can do your business in places that wouldn't open a full size laptop, easy to take notes on, or keep copies of what your working on from your main PC and continue working on it where ever you are .\\n The keyboard isn't quite full sized of course, but very easy to get used to .\\n I had some real problems trying to use my Toshiba Satellite when flying for the past few years, and the distance between the top of the display and the edge of the netbook when open is a practical size to get my work done on a flight .\\n The keyboard, more than 90% standard size, is just large enough .\\n, don't know why they use the screen size most do , 1024 x 600 seems cramped\\nEverything I needed in a laptop without the heavy, bulky size .\\nThe overall size seems right on target, small enough to easily travel, but large enough to be usable .\\n Full sized laptops are so freaking bulky, heavy, and the battery wouldnt even make it though one of my evening classes .\\nSurprisingly readable screen for the size .\\n Speaking of which, the keyboard's relatively large size , at 92% of the size of a normal one , writing longer texts on it is no problem .\\n My only complaint is the small, compressed size of the UP and DOWN arrows, but I suppose that was probably unavoidable .\\n Someone else suggested going to the store first to check out the size .\\n1 inches is a bit small, so make sure you check some 10 inch models out at Best Buy or Office Max to make sure you're ok with the size .\\n It runs quietly and operates Windows efficiently, staying incredibly cool compared to the instant burn, your, lap sauna of my full, sized HP Pavillion .\\n Speaking of typing, the keyboard is great, almost full size .\\n Screen is nice, and adequately sized, , use fullscreen browsing .\\n XP is great after a glacial Vista laptop, despite the Atom this is much faster than a full, size Vista laptop we have .\\nThe screen size works just fine for me .\\n It's 92% the size of a regular keyboard, and my somewhat larger, than, average male hands have adapted completely in a few weeks .\\nSome reviewers have complained about the physical size of the battery extrusion from the bottom of the netbook .\\n Great battery life, decent sized screen, and the keyboard was large enough to be comfortable to type on .\\n I originally bought the EEE to take with me whenever my laptop was too big to take somewhere, but have started exclusively using the EEE in place of my laptop because of its portability and battery life that greatly exceeds most full size laptops .\\nLight weight and small size , This was highly important during my travels .\\n The ASUS is comfortable , the keyboard is normal sized, so I don't make any adjustment when typing .\\n I needed this for a business trip because my full size laptop needs service .\\n This netbook is great and I love its small compact size and ultra portability .\\nMy advice is to visit a store to personally try the keyboard and screen size .\\n although the screen is relatively small to my eyes it wasn't really hard to get used to the size and the screen is clear and bright, no prob reading articles and writing essays .\\nOne of the things that I found difficult to get used to is the size of the screen .\\n Also tried a full size Logitech Trackman and a little wired Logitech notebook mouse sucks like all mice but usable if a mouse is your idea of a good time .\\n I'm using it with a Xion 2 fan pad that folds up to about the size of the closed netbook and runs off a USB port .\\n The screen is very sharp and readable even with the tiny text at this size .\\n And you can't beat the price with a stick compared to a full size laptop or desktop .\\nThe small size makes it very easy to carry compared to a standard laptop, the long battery life is really great, and the speed and performance using various wi, fi connections was better than I expected it to be .\\nThe keyboard is excellent and even though only 92% the size of a full size keyboard, feels like the big one .\\nThe overall size is just perfect for what I wanted .\\n The keyboard is just the right size .\\n The battery life is to die for , my full size laptop doesnt have 10\\n Due to the size of netbooks and a wide screen format, the screen should have been designed to be able to rotate all the way back to inline with the keyboard .\\nI love the lightweight, small size of this product .\\nThe power adapter is a nice small size\\n It seems as though this is due to the small size of the unit, it doesn't have enough room to dissipate the heat .\\njust right for the size of my hands .\\n Because of its size and ease of travel , pretty soon this became an important part of my wife's professional life and she was using it for work, business discussions, document development etc .\\n I was never a fan of really large laptops or even standard sized ones as I like to stick to the definition of portable, so this fit's the bill .\\n Like how they made keyboard as large as possible unlike Qosmio 17 which is almost same size .\\n Instead I convert DVDs to DVIX AVI files using Fair Use Wizard and load them on to memory slot card and they play great, 700mb files look fine on this size of screen .\\n It's 90% size keyboard doesn't take too long to get used to .\\nI was worried the screen size would be too small and uncomfortable to read, but it has been great for everything I run :\\n I love the feel of typing on it, and have not had any issues transferring from a regular, sized keyboard to a smaller one .\\n I was also worried that it's small size would equate to something delicate, but I am rough on my electronics, and the ASUS has handled a few rough tousles with textbooks in a bag slung into my car seat without any problems .\\n years old, so the screen size was also a concern, but it is adequate for the type of things I use it for .\\n As soon as you connect the VGA cable to an unknown projector and press the function key for projection, it automatically adjusts the size and resolution to fit the projector even if it cannot display properly on its own screen .\\n But the projection was always perfect in full size and proper aspect ratio .\\n I have more productivity flow on a conventional laptop with a full sized screen and keyboard .\\n If I were looking to get work done quickly, I would pay the extra money to go full, sized, even if it's slower .\\n The big one for me is its small size meaning that I can put it in the smaller pocket of the backpack and nobody would know that there was a laptop in there .\\n0 out of 5 stars PERFECT SIZE NETBOOK, September 23, 2009\\nThis netbook is just the right size, great for travel and the 10 .\\n His full sized laptop dies after about 2 hours of use .\\n The keyboard is nearly full size and very comfortable to type on for hours .\\n9 I was used to, the increase in size and or weight was barely noticeable .\\n Other than that, it is an amazing little computer and I can't see any reason to own a full sized laptop anymore .\\n, I was willing to downsize my screen size in favor of portability and speed .\\n\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 43 + } + ] + }, + { + "cell_type": "code", + "source": [ + "import nltk\n", + "nltk.download('punkt')\n", + "\n", + "from nltk.tokenize import word_tokenize\n", + "\n", + "def LemNormalize(text):\n", + " return word_tokenize(text)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "6n003H6bw67G", + "outputId": "2c252b48-54a2-458f-a7ab-075e671d7633" + }, + "execution_count": 58, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[nltk_data] Downloading package punkt to /root/nltk_data...\n", + "[nltk_data] Package punkt is already up-to-date!\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import nltk\n", + "nltk.download('punkt_tab')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "-IAWD6DxAezF", + "outputId": "54ee0dd9-3212-4eaf-976f-9c6ad703305f" + }, + "execution_count": 62, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[nltk_data] Downloading package punkt_tab to /root/nltk_data...\n", + "[nltk_data] Package punkt_tab is already up-to-date!\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "True" + ] + }, + "metadata": {}, + "execution_count": 62 + } + ] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.feature_extraction.text import TfidfVectorizer\n", + "\n", + "tfidf_vect = TfidfVectorizer(\n", + " tokenizer=LemNormalize,\n", + " stop_words='english',\n", + " ngram_range=(1, 2),\n", + " min_df=0.05,\n", + " max_df=0.85\n", + ")\n", + "\n", + "feature_vect = tfidf_vect.fit_transform(document_df['opinion_text'])" + ], + "metadata": { + "id": "VdCmqB_RwNuu" + }, + "execution_count": 63, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.cluster import KMeans\n", + "\n", + "km_cluster = KMeans(n_clusters=5, max_iter=10000, random_state=0)\n", + "km_cluster.fit(feature_vect)\n", + "\n", + "cluster_label = km_cluster.labels_\n", + "cluster_centers = km_cluster.cluster_centers_" + ], + "metadata": { + "id": "LPbOhMYXA3wr" + }, + "execution_count": 64, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "document_df['cluster_label'] = cluster_label\n", + "document_df.head()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 867 + }, + "id": "l7nZTJuaA9ej", + "outputId": "fe593a7c-b06c-49a1-821a-1d761896ba47" + }, + "execution_count": 65, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " filename \\\n", + "0 room_holiday_inn_london.txt \n", + "1 parking_bestwestern_hotel_sfo.txt \n", + "2 performance_honda_accord_2008.txt \n", + "3 free_bestwestern_hotel_sfo.txt \n", + "4 speed_windows7.txt \n", + "\n", + " opinion_text \\\n", + "0 We arrived at 23,30 hours and they could not recommend a restaurant so we decided to go to Tesco, with very limited choices but when you are hingry you do not careNext day they rang the bell at 8,00 hours to clean the room, not being very nice being waken up so earlyEvery day they gave us a candy bar and two bottlets of water whic is a very nice touch .\\n We had a room with two double beds which was surprisingly roomy, considering the small hotel rooms I have in previous trips to London .\\nThe room was quiet, clean, the bed and pillows were comfortable, and the service was adequate .\\n We arrived about 11 am, room was ready .\\n Room was good size for Europe , clean throughout .\\n The Co... \n", + "1 Parking was expensive but I think this is common for San Fran .\\n there is a fee for parking but well worth it seeing no where to park if you do have a car .\\n The parking was free, which was great, and the hotel was conveniently located for public transport, and local attractions .\\nAs for in, and, out parking, I have seen a lot of San Francisco with no car at all .\\n They have a parking garage, but they make you leave your vehicle for them to park and then if you want to take a drive later, you have to wait for the staff to get it .\\n There is no real parking space, so I had to pull up in front of the hotel in a small space .\\nThere was valet parking at a cost of $42 .\\n Rooms are v... \n", + "2 Very happy with my 08 Accord, performance is quite adequate it has nice looks and is a great long, distance cruiser .\\n 6, 4, 3 eco engine has poor performance and gas mileage of 22 highway .\\n Overall performance is good but comfort level is poor .\\n I'm impressed with the performance as well as efficiency gains .\\n It has room, performance, good MPG for its size and excellent reliability .\\n For the record I test, drove the Lexus350 the BMW 5 series, the infiniti G35 and enjoyed the Honda performance equally for far less money !\\n Very happy with the car enjoy the ride and performance .\\n The performance of the engine is very smooth .\\n This car had rattles at 500 miles and has horrib... \n", + "3 The wine reception is a great idea as it is nice to meet other travellers and great having access to the free Internet access in our room .\\n They also have a computer available with free internet which is a nice bonus but I didn't find that out till the day before we left but was still able to get on there to check our flight to Vegas the next day .\\n The service was good, very friendly staff and we loved the free wine reception each night .\\n has free wireless and help you with transportation needs .\\n The nightly free wine tasting from 5 , 6 pm is a brilliant idea and gets guests together to socialise witheach other .\\n They have a happy hour where you have a couple offree drinks bet... \n", + "4 Windows 7 is quite simply faster, more stable, boots faster, goes to sleep faster, comes back from sleep faster, manages your files better and on top of that it's beautiful to look at and easy to use .\\n, faster about 20% to 30% faster at running applications than my Vista , seriously\\n Yes, it'll make your computer run a bit slower but\\n, Fast startup and performance\\n Also, in my non, benchmarked experience, Windows 7 has been at least as fast as XP if not faster .\\n It's fast, secure, stable, visually appealing and fun to use .\\n For these two computers, normal use is pretty fast, , not quite as fast as Windows XP SP3, but very close .\\nIt loads blazing fast, software runs smooth a... \n", + "\n", + " cluster_label \n", + "0 1 \n", + "1 1 \n", + "2 0 \n", + "3 1 \n", + "4 4 " + ], + "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", + "
filenameopinion_textcluster_label
0room_holiday_inn_london.txtWe arrived at 23,30 hours and they could not recommend a restaurant so we decided to go to Tesco, with very limited choices but when you are hingry you do not careNext day they rang the bell at 8,00 hours to clean the room, not being very nice being waken up so earlyEvery day they gave us a candy bar and two bottlets of water whic is a very nice touch .\\n We had a room with two double beds which was surprisingly roomy, considering the small hotel rooms I have in previous trips to London .\\nThe room was quiet, clean, the bed and pillows were comfortable, and the service was adequate .\\n We arrived about 11 am, room was ready .\\n Room was good size for Europe , clean throughout .\\n The Co...1
1parking_bestwestern_hotel_sfo.txtParking was expensive but I think this is common for San Fran .\\n there is a fee for parking but well worth it seeing no where to park if you do have a car .\\n The parking was free, which was great, and the hotel was conveniently located for public transport, and local attractions .\\nAs for in, and, out parking, I have seen a lot of San Francisco with no car at all .\\n They have a parking garage, but they make you leave your vehicle for them to park and then if you want to take a drive later, you have to wait for the staff to get it .\\n There is no real parking space, so I had to pull up in front of the hotel in a small space .\\nThere was valet parking at a cost of $42 .\\n Rooms are v...1
2performance_honda_accord_2008.txtVery happy with my 08 Accord, performance is quite adequate it has nice looks and is a great long, distance cruiser .\\n 6, 4, 3 eco engine has poor performance and gas mileage of 22 highway .\\n Overall performance is good but comfort level is poor .\\n I'm impressed with the performance as well as efficiency gains .\\n It has room, performance, good MPG for its size and excellent reliability .\\n For the record I test, drove the Lexus350 the BMW 5 series, the infiniti G35 and enjoyed the Honda performance equally for far less money !\\n Very happy with the car enjoy the ride and performance .\\n The performance of the engine is very smooth .\\n This car had rattles at 500 miles and has horrib...0
3free_bestwestern_hotel_sfo.txtThe wine reception is a great idea as it is nice to meet other travellers and great having access to the free Internet access in our room .\\n They also have a computer available with free internet which is a nice bonus but I didn't find that out till the day before we left but was still able to get on there to check our flight to Vegas the next day .\\n The service was good, very friendly staff and we loved the free wine reception each night .\\n has free wireless and help you with transportation needs .\\n The nightly free wine tasting from 5 , 6 pm is a brilliant idea and gets guests together to socialise witheach other .\\n They have a happy hour where you have a couple offree drinks bet...1
4speed_windows7.txtWindows 7 is quite simply faster, more stable, boots faster, goes to sleep faster, comes back from sleep faster, manages your files better and on top of that it's beautiful to look at and easy to use .\\n, faster about 20% to 30% faster at running applications than my Vista , seriously\\n Yes, it'll make your computer run a bit slower but\\n, Fast startup and performance\\n Also, in my non, benchmarked experience, Windows 7 has been at least as fast as XP if not faster .\\n It's fast, secure, stable, visually appealing and fun to use .\\n For these two computers, normal use is pretty fast, , not quite as fast as Windows XP SP3, but very close .\\nIt loads blazing fast, software runs smooth a...4
\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", + "variable_name": "document_df", + "summary": "{\n \"name\": \"document_df\",\n \"rows\": 51,\n \"fields\": [\n {\n \"column\": \"filename\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 51,\n \"samples\": [\n \"voice_garmin_nuvi_255W_gps.txt\",\n \"service_bestwestern_hotel_sfo.txt\",\n \"size_asus_netbook_1005ha.txt\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"opinion_text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 51,\n \"samples\": [\n \" The voice prompts and maps are wonderful especially when driving after dark .\\nI also thought the the voice prompts of the 750 where more pleasant sounding than the 255w's .\\n The 750 sounds more like a real female voice, where the 255w sounds more robotic .\\n I didn't have the problems with the sounds of the voices like others have .\\nSome of the voices are annoying .\\n My understanding is that Garmin really compressed the voice in this unit, far more than in previous units .\\n I like my older unit better , better voice quality and it simply tells you how far to the next turn and what direction to turn .\\n The quality of the voice leaves a bit to be desired .\\nThe text to speech is great for not having to look down at the screen endangering yourself and others on the road and after the voice updates the Garmin put out for the 255W the scratchiness and robotic sounding voice became crisp and very audible .\\n I note that a competitor is coming out with a Homer Simpson version of the GPS voices .\\nI wish that the GPS had a remote control that allowed you to change screens without having to lean forward while driving, or better yet, responded to voice commands .\\nFirst I want to address the potential problem on 255w which is the robotic sound, I personally think it is absolutely understandable, the female sound is a little vauge at some point, however the man's voice is very clear to me, so this is not a problem for me .\\nSome of the negatives that were mentioned that I did not find to be true were that you can't understand the voice The possible list could go on and on but I think you get the idea .\\n The voice is somewhat robotic and some street names are mispronounced, but it's all understandable, I read comments in some reviews that the voice is not loud enough, but I have no problem .\\n The text, to, speech is very good, with very clear voices .\\n You have your choice of several languages and voices .\\n Also, for no extra charge, you are able to download several voices and vehicles from the Garmin site .\\n For instance, you can change the voice of the GPS .\\nThe voice descriptions of the routes are clear and easily understood, even for me with a hearing loss .\\n At volumes of 60% or above, there is so much distortion that the voices sound like they are coming from a blown speaker .\\n It seems to be caused by Garmin decreasing the file sizes and quality of the voice files .\\n On previous models like the 350 and 360 the voice files were 100\\n Its almost impossible to understand the voice as its metallic tinny .\\n Many a times, this is a distraction as you will be wondering what the voice command said .\\n Other than the Magellan's screen being an inch smaller , but really noticeable , the Magellan did not have text to voice, and often would take a much longer route even though we told it to take freeways .\\nThe most noticeable thing is that the screen is much easier to read, and that the text to voice is extremely valuable and much better than a beep just as you need to turn .\\n And the voice and streets match perfectly .\\n the female voice is much clearer than Jack, the male American English .\\n I couldn't understand the Australian or English voices, but Samantha is clear as a bell and can even be heard over the radio .\\n The screen is easy to see, the voice tells you where you are and it's very accurate .\\n When the voices are turned up loud enough for my satisfaction, the speakers sound like they are overpowered, making a distorted noise during the loudest parts of the system's voices .\\n It seems that the female voices do not distort quite as much as the male voices .\\n The voices seem too robotic .\\n However, I much prefer robotic voices to no spoken directions at all .\\n Everybody said the same thing, great unit, but poor voice in the TTS mode .\\n So I called Garmin and ask if any fix was comming out to fix the voice .\\n I bought the 255W and the voice was tinny and soft .\\n Voice commands were mechanical but clear .\\n I had no problem with the clarity of the voice system .\\n A clear voice tells me when the turns are coming up, as well as the names of the roads .\\n the unit takes you on weird routes and people don't like the TTS voice .\\n The user remarks on voice on saying the street name was important to me and easy use of device so too was important .\\nThe voice directions are great, but sometimes it mispronounces names .\\nThe default voice is extremely clear and easy to understand, so I never even tried any of the alternative voices .\\nI like being able to select different voices, however when I am using Daniel with the English accent, he seems to be clearing his throat at the end of his directions .\\nThe voice instructions given are clear, but as few people mentioned in their reviews, you need to get familiar with the pronunciation .\\nNot only the voice gives turn, by, turn instructions, the map on the screen also has a thick purple line indicating the route ahead .\\n This is a big help as I was essentially following that thick purple line while listening to the voice instructions to make sure I was make correct turns when in Buffalo .\\n Often when I'd get a phone call or was talking to someone, it would have been nice to just have the ability to quickly make the voice directions mute .\\n I have no problems reading it in bright sunlight, but with the voice to text, the screen is almost unnecessary .\\n I had read about concerns the voice prompts were not loud enough .\\n I also love the small things, such as being able to download new voices, and vehicles, I plan on getting all the vehicles has on their site, because there is one for every season, for every mood, every time of year .\\n The screen is crystal clear and the voice in it is nice and loud .\\n There are different voices you can choose to give you your directions, even Australian, American and British English .\\nI agree that the sound isn't great for the TTS voice but it's definitely audible and I like it over all .\\n The non TTS voice is more pleasant .\\n The only complaint that I have if you even want to call it that is that the text, to, speech voices sound pretty robotic .\\n You can also change the voice you hear and your vehicle type .\\n The Voice Prompted turn by turn directions make it easy to get from one place to another without having to look up at the GPS, but of course you also get turn, by, turn directions on the GPS with a touch of the screen .\\nThe unit worked well and I had no issue with the voice as I had my window up all the time and did not have the radio on .\\n I switched over to the male voice which I happen to like better .\\nThe screen is clear and the instructions are good though again if you have a lot of exits or turns all in the same spot you have to be careful to just listen to the voice and watch the road or you can miss the turn .\\nUnder the Services link on the Garmin site look for the Goodies section and The Garmin Garage link for extra car images and sometimes voices too .\\n The only complaint I have is that the voice is a little bit tinny especially if the volume is turned up .\\n The voice directions give you fair warning when you are about to take a turn, which is really important .\\n The voice is annoying as heck too, no personality .\\n The voice it has is clear and readable even for my 79 year old ears .\\nThe voice is clear and easy to understand .\\n Since my near vision isn't very good I like the combination of the voice prompts and the big white arrow indicating an approaching turn, especially at night .\\n0 out of 5 stars No Jill voice on this one !\\nI rated this item with 4 stars because it does not have Jill's voice and there's no way to put it in .\\n All the english voices you have suck big time, you will not like not even one and the new Samantha voice really sucks big time .\\n What they did was, they made new voice files a lot smaller that on the previous models and all the new voices sound like crap and there's no way to copy the voices from other devices like you use to with the previous models .\\n If you input an address on where you want to go, it tells you how to get there in very clear graphics and also with a computer voice that is not obnoxious to listen to .\\nI'm really glad I bought it though, and like the easy to read graphics, the voice used to tell you the name of the street you are to turn on, the uncannily accurate estimates of mileage and time of arrival at your destination .\\n Map is bright and detailed, voice directions are clear and loud .\\nThe voice prompts are mostly clear, sometimes quirky and the volume levels adequate .\\n The voice system gave ample time to make turns and lane changes .\\n Several voice options will announce both directions and street names, etc .\\n From reviews, I thought there might only be one voice .\\n The pre, installed english voice is a little robotic but if you switch to the british american it is perfect .\\n After ample research I selected the Nuvi 255W for it's abundant features, wider screen and voice communication .\\nVOICE ACTIVATION DID STOP WORKING & THEN CAME BACK IN GERMAN , JUST CHANGED IT BACK ENGLISH & HAS BEEN WORKING WELL SINCE THEN .\\n Love that you can change the voice person talking on this one, my last one didn't do that .\\nOthers have said that the voice directions leave something to be desired in terms of volume and clarity .\\n I must say, though, that I believed it would have a certain cachet to use the British English female voice that is a standard feature but found that she could not properly pronounce some of the street names in my area .\\nThe voice commands are excellent and timely .\\n The model 255W that we received seemed to take longer to find a satelite, and the man's voice was very fast and not as clear, and at times seemed a bit confused in directions .\\n The voice is very clear and gives plenty of warning when we need to make a turn ahead .\\n\",\n \" Both of us having worked in tourism for over 14 years were very disappointed at the level of service provided by this gentleman .\\n The service was good, very friendly staff and we loved the free wine reception each night .\\n Also, thanks to Ken the concierge for recommending Grand Limo service .\\n The restaurant is not cheap but is very well patronised and the service is very good as is the food .\\n Service was spotty Front desk was marginally helpful .\\n This tuscan, themed hotel was charming, clean comfortable and the complimentary concierge service was so helpful .\\nPhenominal Service, great room, great location , couldn't have asked for more .\\n It has some charms in decor, and all staff gave very good service to us .\\n The rooms were clean and updated, the beds were comfortable, and the bellman service was fast and efficient .\\n A highlight of our visit was the historic boats at the Hyde Street Pier , , a national Park Service site that costs only $5 .\\n The service was quick and gracious checking in and out .\\nGreat location service and value !\\nSo to sum up if your looking for somewhere to lay your head after a long day then this is the place for you if your looking for something a bit special with good customer service avoid this place like the plague\\nI did not take advantage of the concierge service, but I saw many people were receiving great service from them .\\nGreat value and service for the price !\\nExcellent Service , Great Location\\n The staff and service were exceptional .\\nThe concierge can give discounts for booking city tours and for some restaurants, although we tried Neptune's which was recommended to us and felt it was overpriced for the service and quality .\\n I personally appreciated the free internet service in the hotel .\\nIn addition, they advertise Limousine service to the financial district but when I inquired they announce they had stopped the service and I would need to take mass transportation .\\nAs I checked out I expressed my disappointment there were no biscottis and transportation service and the check out clerk tells me they do have the service and I needed to make an appointment .\\n All employee's that I mentioned have shown customer service skills that are above and beyond .\\nWe had a discussion on the plane that it was such a shame that customer service was gone in so many companies these days .\\nThe rooms were a decent size for a city hotel and were very clean and well serviced .\\nWonderful service friendly people\\nseems service just isn't the way it used to be .\\ni'am 40 years old and its very disheartening that people have lost their pride of service and doing a good job .\\nWe have stayed at The Tuscan Inn on our last 3 trips to San Francisco, and I really can't fault the service .\\n The staff at this hotel make you feel so welcome and its service with a smile .\\n All the staff go the extra mile to assist in anyway they can and the staff of the ajoining Cafe Pescatore are just as welcoming, with great service and the food is excellent .\\n We ate at the Italian restaraunt located in the hotel and the food and service was outstanding .\\n Never experienced the room service .\\n Service was all good, albeit a bit stoic .\\n Unfortunately we didn't get to dine in the hotel restaurant, but I'd say it would be good, if the after hours service is anything to go by !\\n I'd highly recommend the Tuscan Inn based on location, cheerfulness of staff, aesthetics in the room and general overall service .\\nExcellent service great location good value\\nThe staff at the front desk could not have been more helpful and whilst we did not avail his services, the concierge always seemed to be busy with guests giving info and advice .\\n There was also a gentleman offering massage at this time and we met a few people who had enjoyed his services .\\n The food and service were both excellent .\\n This was probably not the best pick for us as we don't like tourist areas and Fishermans Wharf if one big tourist service .\\n There are many public transportation options including the cable cars, the trolley line and bus service .\\n The highlight of this hotel for us was the service offered by the staff, particularly the two concierges on duty while we were there .\\n Their service was of the level and knowledge I would expect at at 5, star hotel .\\n One day we had the do not disturb sign on the door before the maid had come so we could rest, and when we finally stepped out for about an hour, we changed the sign for maid service and everything was perfect when we returned !\\nAmenities , While this hotel isn't a luxury property, they have some nice touches like marble bathrooms, mini bar, room service and an evening wine reception every day .\\n At this point I asked to be put through to Best Western Customer Services and amazingly our room was changed to a king bed suite as per our reservation within the hour .\\n They state that there is an obligatory service charge for tables of more than 6 .\\n We dined as a party of 4 and were still hit with this and then the waitress failed to hand over $10 of change taking this as an additional service charge .\\n We were very impressed with the service we received .\\nThe concierge service is second to none .\\nTuscan Inn has it all, exellant location,very close to public transport, very clean, impeccable, friendly service and a supermarket opposite .\\nWe found a great breakfast place just around the corner in Taylor St, called Darren's Cafe, good prices with excellant food and service .\\n Valet parking for $40 per night seems a bit steep,but at least the service was efficient and quick .\\n very clean,well maintained,with efficient,if not overly friendly service .\\nThe hotel makes a big thing of the coffee bisc service in the morning,and this is quite nice .\\n I'd say that,as far as the evening wine service is concerned,if you happen to be in the hotel,it's fine .\\n Did not eat at the restaurant, but room service was great .\\n Overall, the stay at The Tuscan Inn was great and would highly recommend due to the room service .\\n There are other hotels in the area who do not offer room service .\\nThe service in the hotel was really good .\\n The restaurant in the hotel , Cafe Pescatore , does the breakfast run for room service, it was adequate but a little overpriced .\\n Lunch and dinner room service is provided by North Beach Pizza, which deliveries many Italian specialties including pasta, entrees, salads, sandwiches and of course , pizza .\\n However, there are countless restaurants of all sorts and price ranges within a 1, 4 block walk of this hotel, there is little reason to order room service .\\n We did not use this service but thought it was nice that it was available if needed .\\n We did not eat at the hotel restaurant, we chose to eat at the IHOP around the corner for breakfast and it was good food and service, and they are open 24 hours .\\n Maid service was prompt and outstanding .\\nvery good hotel , great location, concierge extremely helpful, decor is nice and the maid service was excellent .\\n The customer service was wonderful .\\n The adjacent Cafe Pescatero was handy for breakfast but had some hiccups in service, but it was okay overall .\\n, provide service like high end hotels .\\nWill store your luggage in separate room on your check out day if you have late flight, want to spend more time,Oldest Italian restaurant in the country w in walking distance, back east service, integrity, etc .\\n Split a fare w a private service i .\\n, we walked everywhere including up the hill to Coit Tower then walked down just in time to attend 1300 service @ St .\\n The staff was so friendly and helpful and the concierge service was very knowledgeable .\\n A masseur was giving guests a massage at the same location, not sure if there was a charge involved for that service, as there was no information about that anywhere .\\nThe hotel is conveniently located to the shopping centre across the road, and we made use of this to purchase our breakfast requirements, as we had not had great service from the adjoining cafe Pescatore for our evening meal and thought we would do our own thing each morning .\\nHousekeeping service was very inadequate, though .\\nand the service was just ok too .\\n The whole trip was ruined by the guest service of the hotel .\\n They say they pride themselves on being the best in guest service but I was not impressed at all .\\nThe valet parking was overpriced, the service was terrible, and the coffe was cold .\\nservice was extra good, very friendly and there is a great cafe across the street which has the best breakfast in the world .\\n The service was fine with the exception of check, in .\\n From reading other reviews, it seems as though this hotel has significant lapses in service from time to time .\\n Nevertheless, I did like this hotel, the rooms, location, and most of the service and I would stay here again .\\nNice place but service could be better\\n Overall we had a nice stay but just had some minor service issues .\\n When we finally found the church later, the service times she had given us were wrong, too .\\n Speaking of parking, you're going to have to pay and it's going to have to be valet service, as there are no free self park lots that are part of the hotel .\\n The hotel is pretty much as you'd expect from the chain , nice clean rooms well serviced, and the staff were extremely helpful, very pleasant to deal with .\\n Service was poor and they got our order wrong, but they did correct it at no extra cost and the food was good .\\nGreat service and friendly Front Desk .\\n The Concierge service is excellent .\\n Valet parking was $36 a day, but we're not complaining because other SF wharf hotels have charged us a similar fee even without the valet service .\\n This hotel is truly a value for the mid, level traveler looking for excellent accomodations and the HIGHEST LEVEL OF SERVICE ANYWHERE !\\n But the maid service was excellent, it was very clean and the bed was comfortable .\\n The service from every staff member we encountered was delightful .\\nGreat location service and beer .\\nThe hotel room was average although the service was good .\\nIn accordance with the Tuscan Inn\\u0092s Italian style theme a coffee tea biscotti service was open from 6am till 9am in the mornings .\\n In the evenings from 5pm till 6pm a wine, beer and sparkling water service was available .\\n Maid service was prompt, too .\\n the service is poor, and for those used to staying in Kimpton hotels .\\nThere is simply not the service, oriented feeling one is used to in this hotel group .\\n It has everthing you need to have a great time in a great city, location, good service, great food , comfortable rooms and a complimentary happy hour .\\n The cafe is comfortable and service was attentive and polite .\\nRoom service at the hotel is limited :\\n The rooms are small but very clean, charmingly decorated with a view of the little flowered courtyard, comfy beds, plenty of pillows towels and smiling service .\\n I really didn't get a chance to experience the staff's level of service but the rooms are small as is the bathroom .\\n One other thing, I took my family to the eating establishment connected to this hotel and the service there was TERRIBLE !\\n The concierge, in turn, told us to see the bellman, who said the shuttle did not run on weekends and he knew nothing about how to arrange the service .\\n We ate there several times and never had a bad meal or poor service .\\n While we were making these arrangements, the valet secured a shuttle service to get us to the airport on time .\\n Found the food there to be quite nice, and our service was always prompt and efficient .\\nI planned a weekend getaway and thought because of the location and Hotel chain we would receive good service .\\n The service was excellent, the room was terrific, the bed was incredibly comfortable and the hotel is centrally located to all the major attractions of San Francisco .\\nVery clean room, great location, wonderful service and dog friendly .\\n The personalized service always stands out and if we have a problem, it is immediately remedied .\\n WORST BW we've ever stayed in as far as service goes .\\n We ate breakfast there one day and were appalled at the slow service, rude waitstaff, and overpriced breakfast food .\\n I had breakfast and dinner a few times at the restaurant joined to the hotel, Cafe Pescatore, and thought the food and the service were both very good .\\n The rooms were great and the Service wonderful .\\n The only complaint I have is the Valet service .\\n The front desk is the worst service I have had in years .\\n And the hotel restaurant food and service was awful .\\ngreat rooms fantastic location and great service !\\n i would also urge other vistors to prebook Alacatraz with Blue and Gold Fleet direct on there website before they arrive in San Fran as you can pick up your tickets at the self service machine without the miles of queues !\\n The food at the " Cafe" is quite " hotel, like" but the service makes up for it .\\n friendly service was evident each day and the gentleman conceirge was patient and helpful .\\n The valet guy was extremely helpful and very friendly but the check in guest services staff on the whole uninterested and unhelpful .\\n The hotel restaurant was a bit over priced but good service and good quality .\\nCourteous, responsive service and a great location !\\n The service was good, the wine service each evening was very nice next to the fireplace, and the location was awesome !\\n The service was friendly and helpful at the front desk, but the conciege that I dealt with was not very good .\\n Excellent staff and service and the adjoining Italian restaurant was superb .\\n A very cheerful staff and prompt service .\\n Great people, service was terrefic, especially during this stressful time !\\n Teaming this Hotel with the great food service @ Cafe Pescatore, I would definitely choose this hotel again while in SF, an experience we won't ever forget .\\n I was also disappointed that the hotel's " room service" came from a nearby pizzeria, but the hotel still charged a fee on each delivery .\\n Being that I worked as a front desk person at a Best Western for quite awhile I was on the lookout for good service and facilities .\\n We asked her how to get back to the airport without having to pay the shuttle service $15 each .\\n And value is key for the rooms and the service !\\n The service is always great and the rooms very clean .\\nnette Lage aber durchschnittlicher Service !\\n\",\n \" A few other things I'd like to point out is that you must push the micro, sized right angle end of the ac adapter until it snaps in place or the battery may not charge .\\n The full size right shift key was enough for me to drop my 1000HE .\\n You should understand that this is not a full featured laptop squeezed into a smaller and manageable size .\\n The keyboards are 92% the size of those found on a standard computer and the machines run a little hot .\\n The keyboard has a responsive feel and the larger keys along with the oversize right shift key are a real plus .\\n Yes, I did have an airplane trip in the last couple of days, and was thankful for the small size when the person in front of me reclined their seat back all the way for the whole flight .\\n Taking the machine through airport security is so much easier than doing the same with a full size notebook or even the 700m .\\n Battery life continues to hold up and the keyboard is a true godsend with its full size keys .\\n I recommend minimizing the size of the scroll zones on the right and bottom, other wise you find the screen suddenly scrolling when you did not want it to do so .\\n It's a huge improvement over my old, full, size laptop in many ways, and the few things that are less than ideal aren't such a big deal .\\n, Tiny and light the slightly smaller than standard keyboard is no problem for me to use, , and I'm a touch typist, , the keys themselves are a good size and feel good .\\n The keyboard is terrific, solid feel and full size .\\n It's the perfect size and weight to take almost anywhere .\\n The machine has the most comfortable small keyboard I've ever used, because the keys are flat and so the surfaces that your fingerpads touch are actually about the size of standard keyboards .\\n It won't give you all the functionality of a full, sized laptop, and the small screen may take some getting used to, but no regular laptop gives you this kind of battery life, and most of the functions absent here aren't used by most people most of the time anyway, so if the tradeoff is fewer features for greatly, increased battery life, I'll take the latter .\\n Smaller size videos play even smoother .\\nkeyboard is actually a pleasure to use inspite of small size\\n Size is one of the smaller for a 10 yet still maintaining reasonable useability .\\n Ended up with this one based on smaller size, lighter weight and the overwhelming number of positive reviews .\\nPro's , I so wanted to love the small size, long battery life, brilliant blue color and light weight .\\n The performance is great for it's size , remember these are not designed to be speed demons but to be highly portable and cordless for extended periods of time .\\nI must remind buyer's these are not meant to be a replacement for a full size PC, they don't have CD DVD drives in them although you can get an external, which I have .\\n Small, easy to grab and go, and can do your business in places that wouldn't open a full size laptop, easy to take notes on, or keep copies of what your working on from your main PC and continue working on it where ever you are .\\n The keyboard isn't quite full sized of course, but very easy to get used to .\\n I had some real problems trying to use my Toshiba Satellite when flying for the past few years, and the distance between the top of the display and the edge of the netbook when open is a practical size to get my work done on a flight .\\n The keyboard, more than 90% standard size, is just large enough .\\n, don't know why they use the screen size most do , 1024 x 600 seems cramped\\nEverything I needed in a laptop without the heavy, bulky size .\\nThe overall size seems right on target, small enough to easily travel, but large enough to be usable .\\n Full sized laptops are so freaking bulky, heavy, and the battery wouldnt even make it though one of my evening classes .\\nSurprisingly readable screen for the size .\\n Speaking of which, the keyboard's relatively large size , at 92% of the size of a normal one , writing longer texts on it is no problem .\\n My only complaint is the small, compressed size of the UP and DOWN arrows, but I suppose that was probably unavoidable .\\n Someone else suggested going to the store first to check out the size .\\n1 inches is a bit small, so make sure you check some 10 inch models out at Best Buy or Office Max to make sure you're ok with the size .\\n It runs quietly and operates Windows efficiently, staying incredibly cool compared to the instant burn, your, lap sauna of my full, sized HP Pavillion .\\n Speaking of typing, the keyboard is great, almost full size .\\n Screen is nice, and adequately sized, , use fullscreen browsing .\\n XP is great after a glacial Vista laptop, despite the Atom this is much faster than a full, size Vista laptop we have .\\nThe screen size works just fine for me .\\n It's 92% the size of a regular keyboard, and my somewhat larger, than, average male hands have adapted completely in a few weeks .\\nSome reviewers have complained about the physical size of the battery extrusion from the bottom of the netbook .\\n Great battery life, decent sized screen, and the keyboard was large enough to be comfortable to type on .\\n I originally bought the EEE to take with me whenever my laptop was too big to take somewhere, but have started exclusively using the EEE in place of my laptop because of its portability and battery life that greatly exceeds most full size laptops .\\nLight weight and small size , This was highly important during my travels .\\n The ASUS is comfortable , the keyboard is normal sized, so I don't make any adjustment when typing .\\n I needed this for a business trip because my full size laptop needs service .\\n This netbook is great and I love its small compact size and ultra portability .\\nMy advice is to visit a store to personally try the keyboard and screen size .\\n although the screen is relatively small to my eyes it wasn't really hard to get used to the size and the screen is clear and bright, no prob reading articles and writing essays .\\nOne of the things that I found difficult to get used to is the size of the screen .\\n Also tried a full size Logitech Trackman and a little wired Logitech notebook mouse sucks like all mice but usable if a mouse is your idea of a good time .\\n I'm using it with a Xion 2 fan pad that folds up to about the size of the closed netbook and runs off a USB port .\\n The screen is very sharp and readable even with the tiny text at this size .\\n And you can't beat the price with a stick compared to a full size laptop or desktop .\\nThe small size makes it very easy to carry compared to a standard laptop, the long battery life is really great, and the speed and performance using various wi, fi connections was better than I expected it to be .\\nThe keyboard is excellent and even though only 92% the size of a full size keyboard, feels like the big one .\\nThe overall size is just perfect for what I wanted .\\n The keyboard is just the right size .\\n The battery life is to die for , my full size laptop doesnt have 10\\n Due to the size of netbooks and a wide screen format, the screen should have been designed to be able to rotate all the way back to inline with the keyboard .\\nI love the lightweight, small size of this product .\\nThe power adapter is a nice small size\\n It seems as though this is due to the small size of the unit, it doesn't have enough room to dissipate the heat .\\njust right for the size of my hands .\\n Because of its size and ease of travel , pretty soon this became an important part of my wife's professional life and she was using it for work, business discussions, document development etc .\\n I was never a fan of really large laptops or even standard sized ones as I like to stick to the definition of portable, so this fit's the bill .\\n Like how they made keyboard as large as possible unlike Qosmio 17 which is almost same size .\\n Instead I convert DVDs to DVIX AVI files using Fair Use Wizard and load them on to memory slot card and they play great, 700mb files look fine on this size of screen .\\n It's 90% size keyboard doesn't take too long to get used to .\\nI was worried the screen size would be too small and uncomfortable to read, but it has been great for everything I run :\\n I love the feel of typing on it, and have not had any issues transferring from a regular, sized keyboard to a smaller one .\\n I was also worried that it's small size would equate to something delicate, but I am rough on my electronics, and the ASUS has handled a few rough tousles with textbooks in a bag slung into my car seat without any problems .\\n years old, so the screen size was also a concern, but it is adequate for the type of things I use it for .\\n As soon as you connect the VGA cable to an unknown projector and press the function key for projection, it automatically adjusts the size and resolution to fit the projector even if it cannot display properly on its own screen .\\n But the projection was always perfect in full size and proper aspect ratio .\\n I have more productivity flow on a conventional laptop with a full sized screen and keyboard .\\n If I were looking to get work done quickly, I would pay the extra money to go full, sized, even if it's slower .\\n The big one for me is its small size meaning that I can put it in the smaller pocket of the backpack and nobody would know that there was a laptop in there .\\n0 out of 5 stars PERFECT SIZE NETBOOK, September 23, 2009\\nThis netbook is just the right size, great for travel and the 10 .\\n His full sized laptop dies after about 2 hours of use .\\n The keyboard is nearly full size and very comfortable to type on for hours .\\n9 I was used to, the increase in size and or weight was barely noticeable .\\n Other than that, it is an amazing little computer and I can't see any reason to own a full sized laptop anymore .\\n, I was willing to downsize my screen size in favor of portability and speed .\\n\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"cluster_label\",\n \"properties\": {\n \"dtype\": \"int32\",\n \"num_unique_values\": 5,\n \"samples\": [\n 0,\n 2,\n 4\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 65 + } + ] + }, + { + "cell_type": "code", + "source": [ + "document_df[document_df['cluster_label'] == 0].sort_values(by='filename')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "IM21SVl5BBPD", + "outputId": "b387c498-a88d-45ec-94a9-9d21c2f3896f" + }, + "execution_count": 66, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " filename \\\n", + "31 comfort_honda_accord_2008.txt \n", + "16 comfort_toyota_camry_2007.txt \n", + "48 gas_mileage_toyota_camry_2007.txt \n", + "11 interior_honda_accord_2008.txt \n", + "30 interior_toyota_camry_2007.txt \n", + "9 mileage_honda_accord_2008.txt \n", + "2 performance_honda_accord_2008.txt \n", + "12 quality_toyota_camry_2007.txt \n", + "27 seats_honda_accord_2008.txt \n", + "22 transmission_toyota_camry_2007.txt \n", + "\n", + " opinion_text \\\n", + "31 Drivers seat not comfortable, the car itself compared to other models of similar class .\\n It's very comfortable, remarkably large inside and just an overall great vehicle .\\n Front seats are very uncomfortable .\\n I'm 6' tall, and find the driving position pretty comfortable .\\n However, there are a couple of things that kill it for me 1 terrible driver seat comfort, kills my back 2 lack luster interior design, my Acadia has much better comfort 3 the VCM drives me crazy because the constant change in cylinder use is perceptible enough to be an annoyance .\\n The seats are extremely uncomfortable .\\n While the Accord is no Acura it is a close relative in terms of quality and comfort .\\n ... \n", + "16 Ride seems comfortable and gas mileage fairly good averaging 26 city and 30 open road .\\n Seats are fine, in fact of all the smaller sedans this is the most comfortable I found for the price as I am 6', 2 and 250# .\\n Great gas mileage and comfortable on long trips .\\n Good gas mileage, comfortable seating, lots of leg room .\\n Lots of comfort for the price .\\n The ride is loud and not comfortable .\\n I drive 2 hours to work each day and it is just not comfortable to me .\\n Getting about 26 mpg mixed city hwy with conservative driving, seating 4 people comfortably .\\n The ride is quiet and comfortable .\\n Styling is bland, the engine isn't strong at all, and the car doesn't deliver goo... \n", + "48 Ride seems comfortable and gas mileage fairly good averaging 26 city and 30 open road .\\n It gets great gas mileage .\\n Being a mother who drives a lot I wanted a safe vehicle with good gas mileage and this car delivered that and more .\\n Great gas mileage and comfortable on long trips .\\n Nice looking car and good gas mileage .\\n Good gas mileage, comfortable seating, lots of leg room .\\n The interior is roomy, the ride is smooth and solid and yet it has excellent gas mileage .\\n The gas mileage is still good, cant give specifics but for a V6, its good .\\n I had my OEM Turanzas wear out at 14K and was lucky to get local Bridgestones to gimme a mileage warranty adjustment, got new tir... \n", + "11 I love the new body style and the interior is a simple pleasure except for the center dash .\\n However, there are a couple of things that kill it for me 1 terrible driver seat comfort, kills my back 2 lack luster interior design, my Acadia has much better comfort 3 the VCM drives me crazy because the constant change in cylinder use is perceptible enough to be an annoyance .\\n Love the interior and the power and speed, but not hard to beat after what I had .\\n Love the interior and exterior look, the V6 is sensational, and getting compliments on the steel metallic color as if it's a Lexus or BMW .\\n The seats are decent, the interior design is excellent IMO as well as the exterior design... \n", + "30 First of all, the interior has way too many cheap plastic parts like the cheap plastic center piece that houses the clock .\\n 3 blown struts at 30,000 miles, interior trim coming loose and rattling squeaking, stains on paint, and bug splats taking paint off, premature uneven brake wear, on 3rd windshield .\\n Insanely cheap plastic all over interior .\\n Disappointed in interior and exterior quality .\\n I love the color of the exterior and interior .\\nThis car is nearly perfect when compared to other cars in this class regarding interior dimensions, visibility, exterior styling, etc .\\n Several parts in the interior rattle including the sunroof and some parts of the dash, the radio ra... \n", + "9 It's quiet, get good gas mileage and looks clean inside and out .\\n The mileage is great, and I've had to get used to stopping less for gas .\\n Thought gas mileage would be better .\\nThere are trade offs that I have no problems with, my mileage after two tanks with mostly city driving is 21 but acceleration is very good, smooth, ride a little firm but enjoy the handling .\\n I chose it for the low emissions, value for the money, reliability and gas mileage .\\n The EPA mileage ratings and what the dealer bragged about mileage wise are a joke .\\n 6, 4, 3 eco engine has poor performance and gas mileage of 22 highway .\\n road noise is horrible, stereo sucks, terrible gas mileage etc .\\n Othe... \n", + "2 Very happy with my 08 Accord, performance is quite adequate it has nice looks and is a great long, distance cruiser .\\n 6, 4, 3 eco engine has poor performance and gas mileage of 22 highway .\\n Overall performance is good but comfort level is poor .\\n I'm impressed with the performance as well as efficiency gains .\\n It has room, performance, good MPG for its size and excellent reliability .\\n For the record I test, drove the Lexus350 the BMW 5 series, the infiniti G35 and enjoyed the Honda performance equally for far less money !\\n Very happy with the car enjoy the ride and performance .\\n The performance of the engine is very smooth .\\n This car had rattles at 500 miles and has horrib... \n", + "12 I previously owned a Toyota 4Runner which had incredible build quality and reliability .\\nI bought the Camry because of Toyota reliability and quality .\\nI purchased a 2007 Camry because of the looks of the redesigned model and because of the legendary Toyota quality and reliability .\\n As of today, I am a bit disappointed in the build quality of the car .\\n Disappointed in interior and exterior quality .\\n Toyota did a great job with design but forgot about quality !\\n This car needs quality improvement !\\n The fit and finish in the cabin is not the level of quality I expected .\\nThis car looks great and the build quality is good .\\n I am so disappointed in the quality .\\nI've had 2 ... \n", + "27 Front seats are very uncomfortable .\\n No memory seats, no trip computer, can only display outside temp with trip odometer .\\n needs power seats on the passenger side .\\n I haven't had any back pain from the seats, maybe these people exceed the seat weight limit ?\\n There is a great deal of road noise in the cabin and the seats are very low quality .\\nPower seats are not fully adjustable .\\n Front seats are too narrow and not deep enough .\\n The seats are extremely uncomfortable .\\n I previously owned a 98 Avalon, and found the seats more comfortable than the Honda .\\n The seats in the Honda are more firm .\\n I'm very sad , I loved my daughter's Civic and the dealer service is fantasti... \n", + "22 After slowing down, transmission has to be kicked to speed up .\\n I wonder if the people who have problems with rattles and transmission were built in the US .\\n The transmission, I don't know what to tell you, but good luck if you don't learn from my mistake .\\nI did not notice any hesitation with the transmission until after I read about it last summer, and now I sense a slight bit occasionally .\\n I've had the same transmission problems hesitation issues as everyone else .\\n I immediately starting noticing transmission surge during 2nd and 3rd gear during first few minutes of driving .\\n The transmission is horrible, it shifts revs horribly at the wrong times, it putters when it hi... \n", + "\n", + " cluster_label \n", + "31 0 \n", + "16 0 \n", + "48 0 \n", + "11 0 \n", + "30 0 \n", + "9 0 \n", + "2 0 \n", + "12 0 \n", + "27 0 \n", + "22 0 " + ], + "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", + "
filenameopinion_textcluster_label
31comfort_honda_accord_2008.txtDrivers seat not comfortable, the car itself compared to other models of similar class .\\n It's very comfortable, remarkably large inside and just an overall great vehicle .\\n Front seats are very uncomfortable .\\n I'm 6' tall, and find the driving position pretty comfortable .\\n However, there are a couple of things that kill it for me 1 terrible driver seat comfort, kills my back 2 lack luster interior design, my Acadia has much better comfort 3 the VCM drives me crazy because the constant change in cylinder use is perceptible enough to be an annoyance .\\n The seats are extremely uncomfortable .\\n While the Accord is no Acura it is a close relative in terms of quality and comfort .\\n ...0
16comfort_toyota_camry_2007.txtRide seems comfortable and gas mileage fairly good averaging 26 city and 30 open road .\\n Seats are fine, in fact of all the smaller sedans this is the most comfortable I found for the price as I am 6', 2 and 250# .\\n Great gas mileage and comfortable on long trips .\\n Good gas mileage, comfortable seating, lots of leg room .\\n Lots of comfort for the price .\\n The ride is loud and not comfortable .\\n I drive 2 hours to work each day and it is just not comfortable to me .\\n Getting about 26 mpg mixed city hwy with conservative driving, seating 4 people comfortably .\\n The ride is quiet and comfortable .\\n Styling is bland, the engine isn't strong at all, and the car doesn't deliver goo...0
48gas_mileage_toyota_camry_2007.txtRide seems comfortable and gas mileage fairly good averaging 26 city and 30 open road .\\n It gets great gas mileage .\\n Being a mother who drives a lot I wanted a safe vehicle with good gas mileage and this car delivered that and more .\\n Great gas mileage and comfortable on long trips .\\n Nice looking car and good gas mileage .\\n Good gas mileage, comfortable seating, lots of leg room .\\n The interior is roomy, the ride is smooth and solid and yet it has excellent gas mileage .\\n The gas mileage is still good, cant give specifics but for a V6, its good .\\n I had my OEM Turanzas wear out at 14K and was lucky to get local Bridgestones to gimme a mileage warranty adjustment, got new tir...0
11interior_honda_accord_2008.txtI love the new body style and the interior is a simple pleasure except for the center dash .\\n However, there are a couple of things that kill it for me 1 terrible driver seat comfort, kills my back 2 lack luster interior design, my Acadia has much better comfort 3 the VCM drives me crazy because the constant change in cylinder use is perceptible enough to be an annoyance .\\n Love the interior and the power and speed, but not hard to beat after what I had .\\n Love the interior and exterior look, the V6 is sensational, and getting compliments on the steel metallic color as if it's a Lexus or BMW .\\n The seats are decent, the interior design is excellent IMO as well as the exterior design...0
30interior_toyota_camry_2007.txtFirst of all, the interior has way too many cheap plastic parts like the cheap plastic center piece that houses the clock .\\n 3 blown struts at 30,000 miles, interior trim coming loose and rattling squeaking, stains on paint, and bug splats taking paint off, premature uneven brake wear, on 3rd windshield .\\n Insanely cheap plastic all over interior .\\n Disappointed in interior and exterior quality .\\n I love the color of the exterior and interior .\\nThis car is nearly perfect when compared to other cars in this class regarding interior dimensions, visibility, exterior styling, etc .\\n Several parts in the interior rattle including the sunroof and some parts of the dash, the radio ra...0
9mileage_honda_accord_2008.txtIt's quiet, get good gas mileage and looks clean inside and out .\\n The mileage is great, and I've had to get used to stopping less for gas .\\n Thought gas mileage would be better .\\nThere are trade offs that I have no problems with, my mileage after two tanks with mostly city driving is 21 but acceleration is very good, smooth, ride a little firm but enjoy the handling .\\n I chose it for the low emissions, value for the money, reliability and gas mileage .\\n The EPA mileage ratings and what the dealer bragged about mileage wise are a joke .\\n 6, 4, 3 eco engine has poor performance and gas mileage of 22 highway .\\n road noise is horrible, stereo sucks, terrible gas mileage etc .\\n Othe...0
2performance_honda_accord_2008.txtVery happy with my 08 Accord, performance is quite adequate it has nice looks and is a great long, distance cruiser .\\n 6, 4, 3 eco engine has poor performance and gas mileage of 22 highway .\\n Overall performance is good but comfort level is poor .\\n I'm impressed with the performance as well as efficiency gains .\\n It has room, performance, good MPG for its size and excellent reliability .\\n For the record I test, drove the Lexus350 the BMW 5 series, the infiniti G35 and enjoyed the Honda performance equally for far less money !\\n Very happy with the car enjoy the ride and performance .\\n The performance of the engine is very smooth .\\n This car had rattles at 500 miles and has horrib...0
12quality_toyota_camry_2007.txtI previously owned a Toyota 4Runner which had incredible build quality and reliability .\\nI bought the Camry because of Toyota reliability and quality .\\nI purchased a 2007 Camry because of the looks of the redesigned model and because of the legendary Toyota quality and reliability .\\n As of today, I am a bit disappointed in the build quality of the car .\\n Disappointed in interior and exterior quality .\\n Toyota did a great job with design but forgot about quality !\\n This car needs quality improvement !\\n The fit and finish in the cabin is not the level of quality I expected .\\nThis car looks great and the build quality is good .\\n I am so disappointed in the quality .\\nI've had 2 ...0
27seats_honda_accord_2008.txtFront seats are very uncomfortable .\\n No memory seats, no trip computer, can only display outside temp with trip odometer .\\n needs power seats on the passenger side .\\n I haven't had any back pain from the seats, maybe these people exceed the seat weight limit ?\\n There is a great deal of road noise in the cabin and the seats are very low quality .\\nPower seats are not fully adjustable .\\n Front seats are too narrow and not deep enough .\\n The seats are extremely uncomfortable .\\n I previously owned a 98 Avalon, and found the seats more comfortable than the Honda .\\n The seats in the Honda are more firm .\\n I'm very sad , I loved my daughter's Civic and the dealer service is fantasti...0
22transmission_toyota_camry_2007.txtAfter slowing down, transmission has to be kicked to speed up .\\n I wonder if the people who have problems with rattles and transmission were built in the US .\\n The transmission, I don't know what to tell you, but good luck if you don't learn from my mistake .\\nI did not notice any hesitation with the transmission until after I read about it last summer, and now I sense a slight bit occasionally .\\n I've had the same transmission problems hesitation issues as everyone else .\\n I immediately starting noticing transmission surge during 2nd and 3rd gear during first few minutes of driving .\\n The transmission is horrible, it shifts revs horribly at the wrong times, it putters when it hi...0
\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\": \"document_df[document_df['cluster_label'] == 0]\",\n \"rows\": 10,\n \"fields\": [\n {\n \"column\": \"filename\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 10,\n \"samples\": [\n \"seats_honda_accord_2008.txt\",\n \"comfort_toyota_camry_2007.txt\",\n \"mileage_honda_accord_2008.txt\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"opinion_text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 10,\n \"samples\": [\n \" Front seats are very uncomfortable .\\n No memory seats, no trip computer, can only display outside temp with trip odometer .\\n needs power seats on the passenger side .\\n I haven't had any back pain from the seats, maybe these people exceed the seat weight limit ?\\n There is a great deal of road noise in the cabin and the seats are very low quality .\\nPower seats are not fully adjustable .\\n Front seats are too narrow and not deep enough .\\n The seats are extremely uncomfortable .\\n I previously owned a 98 Avalon, and found the seats more comfortable than the Honda .\\n The seats in the Honda are more firm .\\n I'm very sad , I loved my daughter's Civic and the dealer service is fantastic, but even good service can't help the uncomfortable seats .\\n It cost me thousands of dollars to get rid of it, but the seats gave me and my wife back pain after 20 minutes of driving !\\n Although it is fun to drive and quality seems ok, the leather seats are very uncomfortable, especially on a long drive .\\n The seats are decent, the interior design is excellent IMO as well as the exterior design, and thus far it has been extremely reliable .\\n In fact, I love the car just wish Honda wouldn't have made such horrible seats .\\n Body wasn't used to seats like if you bought a new mattress .\\n The interior quality is OK, my 1999 Accord EX had a better comfort level on the seats .\\nI just purchased an Accord Sedan with leather seats .\\n Only needs to add drivers seat memory, 2, tone perforated leather, xenons, rear seat interior illumination mounted under front seats, and better tilt .\\n I can also fit three car seats in the back which was the reason I was able to go back the the Honda family .\\n The seats are very comfortable & supportive .\\n I test drove an EX, L and felt the seats were too firm plus, the EX, L seemed too slow .\\n This Accord has more road noise than I like and the seats tend to be hard, unlike my other Accords .\\n Engine performance lacks punch after 60, head rest are poor design, lacks driver seat memory rear seat a c, radio system is marginal compared to Bose, Seats are hard and small for a large person .\\n The seats are comfortable, and there is ample leg room in the front and rear .\\n Most uncomfortable seats in any vehicle I have ever owned .\\n Only 2 things could make it better memory seats and a smoother shifting transmission .\\n Seats are firm but not uncomfortable , very BMW like .\\n Advise anyone considering the L to drive one for awhile if you can , some cannot stand the seats .\\n The seat cover was coming out in between the seats .\\n The only for sure complaint I have is the seats seems to hurt my back after I drove for a period of time, this may be because I am use to my silverado truck with leather bucket seats .\\n DON'T rely on your test drive, the seats are Very uncomfortable and when the engine goes into the econo mode the vehicle shifts rocks violently forward and when leaving the econo mode it shifts rocks forward once again which means that the vehicle is CONTINUOUSLY SHAKING AND ROCKING .\\n Seats are very comfortable and ride is very smooth !\\n It's a black beauty with comfy leather seats .\\n The front seats are extremely uncomfortable after anything more than 15 minutes of driving due to what I see as a design flaw, the seat curvature is too great, and even with the lumbar support all the way retracted, it still feels like there is some type of bar sticking out in the wrong part of my back .\\n However, long, distance comfort is poor due to hard, narrow and deeply, bucketed seats combined with a very taut suspension which transmits even minor road imperfections through the whole vehicle .\\n At first the seats seemed stiffer than I'd like, but after making a 2 1 2 hour trip, It felt very comfortable once I got the seat and lumbar adjusted to my liking .\\n Great leg room in the back and the seats a very supportive .\\n Door closure is solid, leather seats are very comfortable .\\n Ride is very good, but seats are just a little firm .\\n Seats are not very comfortable and not happy with the heated seats .\\n The seats are very comfortable and I love the cloth .\\n Seats are little on the hard side .\\n The black leather seats feel a bit hot on the back in the warm weather but otherwise no complaints about the interior .\\n Steering nice and tight, seats a little stiff but comfortable .\\n We wanted three things, heated seats and mirrors and an easy to get out of back seat for some aging friends .\\n Ride is superior, comfortable seats, radio excellent .\\n5 Seats= Like sitting on a church pew .\\n Leather seats are the only thing of good quality .\\n Problems with steering wheel, windows & seals, seats .\\n Smooth responsive acceleration,top of the line high quality supple comfy leather seats .\\n Also, amazing leg space in front AND back seats , the Accord could almost be considered a full size sedan .\\n5L V6 scoots sporty handling and acceleration good sporty leather seats highway gas mileage appearance package worth having no dealer service yet Negatives :\\n First off the new body style is very appealing and the new seats are more forgiving for larger men .\\n The heated seats for me and my passenger are a plus for the cold weather .\\n hard seats, hard ride, more road noise than expected, disappointing gas mileage .\\n The seats are supportive and the materials are great .\\n You get a V, 6, heated leather seats, XM, 18 rims .\\n Cloth front seats big & comfortable .\\n Seats are stiff but once adjusted seem to become more comfortable .\\n The seats are very firm, but getting used to this .\\nThe seats in my 2008 which is just like a 2009 are considerably less than I'm used to from Honda .\\n The only hiccup I can report is that I think that the seats in our 2008 Odyssey are a bit more comfortable .\\n Don't get me wrong, the Accord is a comfortable car, I am just a big guy and the seats just feel like they could use a little more of something .\\n I have two herniated disks and the seats of the Honda have alleviated the pain in my legs and back when I drive .\\n Additionally, the standard seats are not my favorite .\\n Although it's a lower trim level, it has high quality interior trim very comfortable seats and and very smooth, quiet ride .\\n Decent accel, huge back seat for my kids baby seats large friends .\\n we don't need moonroof, heated seats side mirrors we live in S .\\n With the leather seats, comfort is close to EX, L's at a best buy price .\\n Seats are a bit too firm for me .\\n Leather seats are very comfortable .\\n The inside and outside pads should ALWAYS wear evenly Always had stiff ride and seats .\\n I have a bad lower back, and the lumbar support on the seats is a life saver !\\n Front seats much more comfortable .\\n The satellite radio cuts out constantly, the heated seats are barely warm, the sound system is pathetic and the brakes wore out around 15,000 miles google it .\\n We are both tall, 5'11'' and 6'2 and have no problems with the seats .\\n After driving it for a few months I found the seats are tough on the lower back on long runs and it need a few more inches to go back .\\n Seats are too firm and leather is quite hard in character and feel .\\n I was slightly concerned about all the reviews with the seats being uncomfortable .\\n I love the seats, they are supportive .\\n\",\n \" Ride seems comfortable and gas mileage fairly good averaging 26 city and 30 open road .\\n Seats are fine, in fact of all the smaller sedans this is the most comfortable I found for the price as I am 6', 2 and 250# .\\n Great gas mileage and comfortable on long trips .\\n Good gas mileage, comfortable seating, lots of leg room .\\n Lots of comfort for the price .\\n The ride is loud and not comfortable .\\n I drive 2 hours to work each day and it is just not comfortable to me .\\n Getting about 26 mpg mixed city hwy with conservative driving, seating 4 people comfortably .\\n The ride is quiet and comfortable .\\n Styling is bland, the engine isn't strong at all, and the car doesn't deliver good comfort while driving it .\\n The seats aren't comfortable either .\\n It is relatively comfortable inside .\\n It's a pretty good car, reliable, comfortable as far as it goes, but limited rear visibility because of high rear bumper, and a problem with its computer learning my driving style .\\n The driver seat is still soft and mostly uncomfortable .\\n The ride is comfortable and it seems to ride a little higher than the average sedan, which I like .\\n I've had 3 BMWs and only one of them could offer a more comfortable ride than the Camry .\\n Second the internal comfort id awful .\\n The previous soft seats were replaced with hard cheap ones which are very very uncomfortable and give me back pain .\\n If you keep in mind that the Camry is a comfort car, you may even enjoy the experience .\\n While the 4 cylinder does not have the punch of the Honda Accord 4 cylinder, the comfort and quietness of the ride won out .\\n No hestitation, comfort is great in front in back .\\n I feel uncomfortable driving this car and will get rid of it .\\n Very comfortable, great styling .\\n I was surprised by how quiet the cabin was and just how comfortable it was to sit in and drive .\\nThis car offers poor driver's seat comfort, poor vision , only average ride quality, gas mileage \\nWe have had this Camry about two years now, and it is not a boring car but it is smooth, comfortable and has good road manner, and overall it is a good car .\\n I'd highly recommend anyone buy this car if they are seeking an affordable, comfortable, reliable vehicle .\\n You can not get that comfort with any other automaker other than perhaps Honda .\\n Looks are great and interior is comfortable, but it ?\\nI needed a comfortable commuter that I could also run around with the family in .\\n great ride, quiet comfortable spacious cabin, superior electronics , fair price and good looks .\\n You can't have it both ways, either a car is full of power and stiff suspension or it's smooth and comfortable on the road .\\nThe interior is very luxurious and comfortable, however the car feels slower than my 2002 Camry LE .\\n For the comfort and entertainment of the ride, I like the Camry .\\n The driver's seat is really comfortable .\\n I have had no transmission issues or rattling, the comfort and ride of this vehicle felt to me much more high end then what I had paid .\\n I love the look, and the comfort, but would never buy one again .\\n I've read other reviews stating that the leather seats were not comfortable for long drives due to lack of cushion support, but that's not been the case for me especially after recently driving from Houston to Key West, Fla .\\n The seats were very comfortable .\\n The car comfort, looks, performance and fuel economy are great but the paint is a disaster .\\n Front seats are not comfortable on long trip .\\nI was not sure at first about trading my 01 Honda Accord but have been more than satisfied with the performance, looks, and comfort .\\n A little stiffer ride than the xl and xle models I have had, but still comfortable and quiet .\\n Very comfortable ride and seating .\\n Very low interior noise level, which adds to the long trip comfort .\\n The ride, comfort, and drive is as expected, however, the quality and reputation of yore are completely gone for the flagship Camry .\\n Over the month it was in the shop, we rented several different cars and nothing seemed to measure up to the comfort and options of the Camry .\\n The seat comfort is not as it was and I found that the gas, brake pedals are offset too much to the left of my body centerline .\\n Very comfortable, quiet interior .\\n Seats are padded more firmly than previous model but comfortable on trips .\\n Feels expensive, yet comfortable with larger interior than my Grand Prix .\\n Trunk is big and rear seat very comfortable for 2 and will seat 3 .\\n Headroom body room comfort great for my 6'1 250 lbs .\\n I feel that the Camry just gets better and better in terms of comfort, styling and performance with each generation .\\n It looks awesome, turns like it's on rails, has a great sound system, and is just comfortable and fun to drive .\\n It is very quiet and comfortable .\\n Smooth, comfortable, reliable, fast .\\n Very comfortable seating position for both me and my husband .\\n The interior is extremely comfortable, and spacious .\\n For the price I couldn't have asked for a better performing, comfortable and stylish whip .\\n The seating is relatively comfortable .\\n Other than that, technology is mind blowing on this sedan and performance is incredible, with a smooth and comfortable ride .\\n I'm 6'3 and I find this car very comfortable to drive or ride in .\\n My friends say my car is just like a Lexus and I have to agree, very comfortable and beautiful .\\n Seats are comfortable, but wish the seat bottoms tilted back more into a bucket position .\\n Solid, high quality, comfortable and quiet .\\n Uncomfortable head restraint, too close to my head .\\n Superb handling, performance and comfort .\\n Turns out, it was one of the smoothest, most comfortable rides ever .\\nI bought this car smitten by its exterior look and interior comfort .\\n Yes, it is very comfortable, esp for the price paid .\\n Very quiet and comfortable ride, more than enough power .\\n It is very reliable and comfortable .\\n It's very comfortable and a quiet ride with low levels of road and wind noise .\\n The seats are way to low to the ground making long drives uncomfortable .\\n I do not find the front seats as comfortable as the seats in my old 96 Ford taurus .\\n Toyota made many improvements since 03, including more comfortable front seats, better rear seat room and comfort .\\n Very comfortable, quite and smooth ride .\\n The sound system is incredible, the seats are comfortable, the controls are ergonomic and straight forward and the take off power is quite impressive .\\n My passengers are expecially happy with it and love the room, comfort, and adjustability .\\n On longer trips, however, they have a tendency to fall asleep, , which I think emphasizes how comfortable, smooth, and quiet it is .\\n It is a very comfortable car that gives us options that we never had on previous vehicles .\\nI test drove and compared similar 4 door sedans like the Maxima, Accord, Mazda6, and noticed that none had all the features,performance,comfort ,safety,and looks that the Camry has .\\n The navigation works flawlessly, comfortable seats .\\n I have to say the car rode great,comfortable and gas mileage great .\\nI would recommend this car to anyone looking for a comfortable ride as well as good fuel economy .\\n The seats were very comfortable on a four and a half hour trip, and wind and road noise were minimal .\\n The interior is much more comfortable than my last 3 Camrys and the exterior styling is oh so chic .\\n Comfortable and quiet with excellent gas mileage .\\n Comfort is great, mileage is good overall, better on the road than expected , compared to my 1999 Camry .\\nHaving flown 26 different aircraft and driven cars for 61 years, I find the 2007 Camry to be the most uncomfortable cockpit I have every been in .\\n The headrest presses into my head at an uncomfortable angle and it is imposssible to tell where the front of the car is for parking .\\n The window sill is too high and the armrest too low to be comfortable .\\n The new looks are what attracted it to me initially, but its relatively smooth drive, comfort and reliability sold me on it .\\n It is a beautiful sapphire blue, has really nice lines, is very comfortable, is plenty peppy, and hugs the road .\\n The ride is very comfortable, although I'm 6'6 and I didn't think head room was an issue but I do think leg room could be better, I think this is mainly because the back seats have tons of leg room .\\n It is so comfortable and drives perfect .\\n Overall this car is very quiet, comfortable, smooth, powerful, and absolutly the best mid, size in the current market .\\n Leather seats are comfortable, Nav system is easy to use .\\n I only have a vibration shimmy problem at 70 mph, visited dealer three times and ended up with changing a new tire and now the ride is even quieter and comfortable .\\n Leather seats were comfortable .\\n Leather interior very comfortable .\\n My conclusion after doing a ton of research regarding safety, reliability, comfort and gas mileage :\\n the Hyundai Sonata is thousands of dollars cheaper and matches the Camry in all respects except comfort .\\n Bottom line was that I was going to be in that driver's seat for years to come and I was not going to skimp on the critical comfort factor .\\n While the '03 was roomy and comfortable, the steering and handling were very vague .\\n The interior is upgraded markedly, and although there is a bit less headroom, the added telescoping feature of the steering wheel combined with the greater travel of the seat yields greater comfort .\\n , a luxurious comfort feature, and a fuel consumption that is best in the class .\\n Nice looking interior but seats are very hard and are not comfortable for long trips .\\n Top notch rating on interior comfort .\\n The car is VERY comfortable and the air conditioning is perfect for the heat here in Arizona .\\nExtremely comfortable with 3 separate power driver seat adjustments .\\nI purchased a Camry LE approximately 2 months ago, it's a smooth comfortable ride .\\nI selected the Camry for its comfort and reliability .\\n This new Camry is indeed very comfortable with quiet and soft ride .\\nVery uncomfortable when driving long distances .\\n I am not real fond of the electric seat and I find it is not as comfortable as my F150 pickup on trips .\\n This car is easy to drive, great gas mileage and comfortable .\\n However, when we drove the Camry we were impressed with its looks and the comfort of the ride .\\n\",\n \" It's quiet, get good gas mileage and looks clean inside and out .\\n The mileage is great, and I've had to get used to stopping less for gas .\\n Thought gas mileage would be better .\\nThere are trade offs that I have no problems with, my mileage after two tanks with mostly city driving is 21 but acceleration is very good, smooth, ride a little firm but enjoy the handling .\\n I chose it for the low emissions, value for the money, reliability and gas mileage .\\n The EPA mileage ratings and what the dealer bragged about mileage wise are a joke .\\n 6, 4, 3 eco engine has poor performance and gas mileage of 22 highway .\\n road noise is horrible, stereo sucks, terrible gas mileage etc .\\n Otherwise the gas mileage, service intervals, drive and dependability is still pristine .\\n I traded an 05 Acura TL for the gas mileage savings .\\n Runs better than AUDI A6 , Better Mileage \\n Gas mileage at first wasn't great but having reached 2500 miles, it seemed to go up dramatically in city driving .\\nLeased in Feb 2008 as a replacement to a Pilot, which had poor gas mileage .\\n I do miss the carry and load capacity of the Pilot, but the Accord gets decent gas mileage by comparison .\\n My old Buicks had far smoother shifts at far higher mileage .\\n It has excellent gas mileage drove from PHX to San on a half a gas of tank .\\n gas mileage sucks, i was getting 20 mpg on 05 accord v6 and seem to pull only 18 mpg on this one .\\n Gas mileage is only 20 around town and 26 to 27 on the highway with a four !\\nThe car has met expectations, aside from the gas mileage and wind noise .\\n Almost half the mileage as compared to advertisement .\\n At first the Gas mileage was very poor but has really improved .\\n I wanted an inexpensive car with good mileage, and strong resale .\\n Very good mileage, getting about 28 mpg combined highway, and I have a heavy foot .\\n The 190 hp I4 engine is powerful and smooth enough to enjoy, without sacrificing fuel mileage .\\n great mileage, poor build quality of the car .\\n On top of all this, I get horrible gas mileage in city driving I get 15, 16 mpg .\\n It gets great gas mileage and love the car .\\n Mileage over three tanks has been 25 .\\n3 mpg as consistent full tank highway mileage .\\n The car drives great and gets better gas mileage than my 2000 Lincoln LS V8 .\\n It looks great, handles well, and gets good gas mileage .\\n The gas mileage has improved from 18MPG to 21 but that still is not good .\\n Gas mileage has been a bit disappointing, but it has been improving .\\n the variable cylinder management changes to 4 cyl when not under load, this helps with fuel mileage .\\nAfter owning a Honda Accord EX I had to go back to the Honda the gas mileage can't be beat .\\n Gas mileage is around 22, 23 in town and 29, 30 on the highway .\\n Fuel mileage has been less than expected .\\n It's no 8 cylinder GT, but it also gets double the gas mileage and so far, no problems .\\n Aside from missing the turbo's acceleration, I've preferred the Accord's better mileage, handling and comfort .\\n The manual transmission lets me control the car better and achieve higher mileage .\\n So beware, if you are trading in your V8 for a mileage vehicle, this is not it in my case .\\n The car is getting great gas mileage even though I have only been driving it 2 weeks .\\nOur 2008 Accord is very disappointing, our in town mileage is 14 .\\n Gets great gas mileage, I mostly drive city and I am currently receiving 25 .\\n I just love the VCM makes the car give great mileage .\\n Initial gas mileage looks good too .\\nDon't buy this car if you want good gas mileage .\\n I have a V, 6 with Variable Cylinder Management which is supposed to let the car run on 3,4 or 6 cylinders, as needed, to improve mileage .\\n My BMW 530i got better mileage .\\n It is fun to drive, I love the color, it has great features, the sound system is nice, the power is perfect and the gas mileage is great !\\n Fun to drive, fairly roomy, looks good, gas mileage is OK , but not as good as Honda advertises .\\n Gas mileage is wonderful, 1st tank 26 mpg with almost all city driving .\\n I had tons of room in my 4Runner, but I needed something that would get better gas mileage w o giving up power .\\n I am so very disappointed with the gas mileage !\\n I traded for better mileage, and this is what I got .\\n I will warn you though, that if you drive it like it should be driven, gas mileage isn't the best .\\n It feels safe, performs well, looks fantastic and gets decent gas mileage for its size .\\n The Accord is better than other those car on gas mileage and reliability .\\n Strangely, the gas mileage is not as good as the Acura but is acceptable .\\n Some reviewers were complaining about gas mileage .\\n Gas mileage is horrible too, 20 mpg city highway after 6000 miles .\\n If you are looking for a car that is affordable and well built this is the car for you bad gas mileage\\n In reality we have been very disappointed our in city mileage is 16, 17 and highway is better at 27 .\\n While the mileage is not bad it good be better, but as the acceleration is good for a 4 cylinder it's a trade, off .\\n I am sure as gas prices go up cars will be built to get better mileage at the expense of acceleration .\\n Good looking inside and out, comfortable and roomy, commendable performance, and excellent gas mileage .\\n I live in Chicago and drive downtown and back 2 times a week for school and am getting great mileage .\\n Only update is after about 5k miles the fuel mileage is less than I had anticipated .\\n Everything else such gas mileage, handling, stereo system is fine but it doesn't make up for the loud rattles and wind noise .\\n It's almost embarrassing driving such a nice car around a parking lot and have it sound like a high mileage beater .\\n So I saved $2 K upfront and will also save down the road since the 4 cylinder gets slightly better gas mileage .\\n It is a well built car that runs smooth and gets great gas mileage .\\n Gas mileage is still getting better though .\\n The gas mileage on the highway is about the same for both models .\\n Local mileage with the '08 has been about 24 mpg, and about 25 mpg with the '06's that we've leased .\\n I decided to go back to Honda as even with high mileage they keep their value .\\n Mileage , also not impressive , all I can get is about 24mpg, far from the 32 mpg you see on the window sticker .\\n Posted mileage ratings are for those who have a heavy right foot .\\n Gas mileage is fantastic especially going from a V8 SUV to a 4 cylinder sedan .\\n I was tempted to go for the V6, but I drive 42 miles one way to work and we have an '07 Odyssey with the variable cylinder management system and unless you're on long highway runs it doesn't get the gas mileage Honda claims .\\n I just love this car , and with almost double the highway gas mileage that I was getting with my Grand Cherokee , that adds a lot of $$ towards my monthly payment .\\n 190 hp and superior gas mileage .\\n It wasn't worth saving the little difference in gas mileage for this Honda .\\n The gas mileage is about 45 to the gallon going on the highway with cruise at about 800 or 900 RPM and about 38 going 70 .\\n The Gas mileage is good, the acceleration sometime is slow when cold from 1st to 2nd gear .\\n I hope to get better mileage on extended highway trips .\\n I think the mileage would be even better with a 6, speed stick shift to drop the tachometer from ~2300 rpm to <2000 rpm at 60 mph .\\n Gas mileage has been improving and is now consistently 29 hwy 22 city .\\n Very peppy engine great fuel mileage 28, 30 combined .\\n I am not known to drive slowly so I am pleased with the mileage .\\nWe bought this car with the expectations of getting a car that feels good with my bad back, gets good gas mileage, and is reliable .\\n So far, the reliability has been as expected, it is comfortable on my back, and the gas mileage has been pretty good .\\n It is great to drive, has many nice features and gets you there with great mileage .\\n Mileage is very good and we have already taken it on a long trip .\\n I had rather not have it and sacrifice the mileage .\\n The gas mileage has been as advertised, hitting 32 mpg on the highway when driving at 65 MPH .\\n Gas mileage after 1000 miles is averaging apprx 23, 24 mpg in a blend of city highway .\\n It has everything but good gas mileage .\\n This car has great gas mileage even with the V6 .\\n The best gas mileage I can get is 22 mpg which is mostly highway and the car sometimes hesitates during acceleration\\n I drive around 60 miles a day so fuel mileage was important .\\n First tank mileage was 27 mpg not bad at all .\\n highway mileage slightly over 30 as advertised .\\n with gas prices, wanted better mileage .\\n It gets good mileage on HWY = 30 but mediocre on local = 21 .\\n SUV, wanted something with better gas mileage and something that had good resale value .\\n The 4, door provides the room we needed, the exterior design keeps the sedan from looking boring, the gas mileage is great, the price point was right, and the reliability is terrific .\\n Gas mileage is disappointed, avg 20 mpg so far .\\ni just purchased my lx, p a couple of weeks ago, having driven a pick up for the last 25 years, i was really surprised at how much i like this car, going from a big v, 8 to a 4 is a change but the power is good, gas mileage is great .\\n At first the gas mileage was a disappointment, but as the car is now breaking in it's getting better .\\n I test the car and was very impressed with the looks and the 4cyl was adequate since gas mileage was very important to me .\\n I expected a little better gas mileage avg, approx 26 mpg .\\n poor gas mileage look close at your window sticker not the big mpg numbers but the ratings below, it tells you that you could get 17 mpg based on your driving habits .\\n The ride is excellent, and the fuel mileage is impressive so far .\\n Wanted something with better handling and gas mileage .\\n Great gas mileage for a v, 6 .\\n Gas mileage is horrible on highway at 21 mpg .\\n My mileage, is averaging about 28 .\\n I was a bit disappointed with the 4 Cyl mileage as I drive over a 100 miles a day round trip to work .\\n There seems to be no way to shut it off and mileage is about 26 27 highway .\\n Mileage jumps on the highway to 31 32 at normal speeds .\\n The car is very smooth for a v4, my first, but I thought that the gas mileage should be More about 38, 45 .\\n Around town gas mileage is not as good at 22 with a mix of city and high way .\\n Mileage looks like it will be a little less than the older V6 Hondas\\n Some here have complained of poor gas mileage, but I've had mine almost two weeks, driven 300 miles so far in mostly city driving, and have a bit more than a quarter of a tank left .\\n5L V6 scoots sporty handling and acceleration good sporty leather seats highway gas mileage appearance package worth having no dealer service yet Negatives :\\n Tough negotiations w 6 Wash DC dealers city gas mileage road noise no keyless memory link w driver profiles steering wheel quality and size console storage tray outside mirrors don ?\\n VCM works out nice for better mileage .\\n hard seats, hard ride, more road noise than expected, disappointing gas mileage .\\n And great gas mileage averaging 28 .\\n Very disappointed in mileage .\\n Nowhere near the mileage the sticker shows .\\n I love the appearance of the car from the outside, and it has a much bigger feel to it, ride is a little stiff but smooth, engine is very responsive, however gas mileage is diappointing getting 5 mpg less then 06 Accord .\\n My only really complaint is the gas mileage is not as good as advertised .\\n Mileage is decent around 24, 27 .\\nTraded in my Oddysey for better gas mileage and more comfort .\\n So far not super impressed with gas mileage, and comfort, well lets just say my dealership just ordered a new seat cushion for me today .\\n Gas mileage will surely improve, hopefully .\\n The trade, off is a bit lower mileage but still better than most out there .\\n Having had to give up my 99 Accord due to very high mileage 170K\\n My my, I have never experienced such smooth performance, stability, pick, up, mileage and comfort that I am enjoying with my new 2008 Honda Accord .\\n Mileage so far is the big disappointment, low 20's, old Accord was never below 27mpg .\\n Telling me how good the gas mileage is not true .\\n5 in nob the display under the speedometer could be more helpful telling me how many miles gallon I have, telling me how my speed affects my gas mileage .\\n Gas mileage is great for a vehicle with this type of performance .\\n The car has ample power, but the gas mileage has been disappointing .\\n The car is as big and roomy inside as my old Acura Rl, handles better and gets better gas mileage .\\n It's fun to drive, and gets great gas mileage .\\n The best gas mileage I have achieved for this 4 cyl .\\n Handles great, good mileage, and wonderful ride .\\n The Accord was quiet, was easy to drive, seemed to be the right size, and would provide decent mileage .\\n It was the combination I was looking for, great look, good value, decent gas mileage, and Honda's resale value .\\n The windshield wash barely hits the windshield but I am mostly disappointed in the gas mileage .\\n I do not know what these people are talking about saying it gets bad gas mileage !\\nCar rides great, good fuel mileage .\\n Gas mileage is not as advertised , 25 mpg at most .\\n Gas mileage is OK, averaging about 23, 24 city , 31 highway normal driving, I don't drive fast, but I don't drive slow either .\\n Fuel mileage is disappointing 15 18 city 22 26 hwy .\\n Gas mileage not quite as good as advertised .\\n Gas mileage is above average .\\n Great power, great ride, and pretty good fuel mileage .\\n Gas mileage is at it's highest 24 mpg usually 22 mpg hwy .\\n The VCM definitely helps the mileage , it was very noticeable when it activated in the beginning, but is barely detectable now, except for the dash indicator .\\n Little 4cyl 5 spd LX and it got awesome gas mileage .\\n\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"cluster_label\",\n \"properties\": {\n \"dtype\": \"int32\",\n \"num_unique_values\": 1,\n \"samples\": [\n 0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 66 + } + ] + }, + { + "cell_type": "code", + "source": [ + "document_df[document_df['cluster_label'] == 1].sort_values(by='filename')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "71x6_oJtBD85", + "outputId": "c11484b7-8598-4469-89d0-e348ab9a88aa" + }, + "execution_count": 67, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " filename \\\n", + "18 bathroom_bestwestern_hotel_sfo.txt \n", + "29 food_holiday_inn_london.txt \n", + "25 food_swissotel_chicago.txt \n", + "3 free_bestwestern_hotel_sfo.txt \n", + "14 location_bestwestern_hotel_sfo.txt \n", + "47 location_holiday_inn_london.txt \n", + "1 parking_bestwestern_hotel_sfo.txt \n", + "15 price_amazon_kindle.txt \n", + "20 price_holiday_inn_london.txt \n", + "0 room_holiday_inn_london.txt \n", + "6 rooms_bestwestern_hotel_sfo.txt \n", + "26 rooms_swissotel_chicago.txt \n", + "40 service_bestwestern_hotel_sfo.txt \n", + "28 service_holiday_inn_london.txt \n", + "35 service_swissotel_hotel_chicago.txt \n", + "45 staff_bestwestern_hotel_sfo.txt \n", + "36 staff_swissotel_chicago.txt \n", + "\n", + " opinion_text \\\n", + "18 The room was not overly big, but clean and very comfortable beds, a great shower and very clean bathrooms .\\n The second room was smaller, with a very inconvenient bathroom layout, but at least it was quieter and we were able to sleep .\\n Large comfortable room, wonderful bathroom .\\n The rooms were nice, very comfy bed and very clean bathroom .\\n Bathroom was spacious too and very clean .\\n The bathroom only had a single sink, but it was very large .\\n The room was a standard but nice motel room like any other, bathroom seemed upgraded if I remember .\\nThe room was quite small but perfectly formed with a super bathroom .\\n You could eat off the bathroom floor it was so clean .\\n The ba... \n", + "29 The room was packed to capacity with queues at the food buffets .\\n The over zealous staff cleared our unfinished drinks while we were collecting cooked food and movement around the room with plates was difficult in the crowded circumstances .\\n There are a couple pubs, a great patisserie and even fast food restaurants within a block .\\nThe neighborhood is an upscale residential area full of restaurants in easy walking distance ranging from fast food to up, scale with a wide variety of cuisines , , we never had a bad meal .\\nThe food was wonderful, a selection of sandwiches, salads, cous cous and spicy wedge potato's, fruit salad and a cake was a good fill up when needed .\\nFull ... \n", + "25 The food for our event was delicious .\\n The food in the lounge was great and very fresh, , , salads, sandwiches etc .\\n As far as food, walk a few blocks toward Michigan Ave turn left or right and there are plently of less expensive places to eat .\\n The Palm resturant in the hotel had some specials Sunday night, we ate there and the food service,etc were outstanding portions are large and we shared since we are not big eaters .\\n Took the charge of the minibar which we had used to keep my 2 year old sons food .\\n We never ate anything onsite so I can't vouch for the food options immediately avialable .\\n The Lobby bar does not serve food very late at night and we couldn't find any ven... \n", + "3 The wine reception is a great idea as it is nice to meet other travellers and great having access to the free Internet access in our room .\\n They also have a computer available with free internet which is a nice bonus but I didn't find that out till the day before we left but was still able to get on there to check our flight to Vegas the next day .\\n The service was good, very friendly staff and we loved the free wine reception each night .\\n has free wireless and help you with transportation needs .\\n The nightly free wine tasting from 5 , 6 pm is a brilliant idea and gets guests together to socialise witheach other .\\n They have a happy hour where you have a couple offree drinks bet... \n", + "14 Good Value good location , ideal choice .\\nGreat Location , Nice Rooms , Helpless Concierge\\n The location is good, and the overall decor is nice, but there was nothing that I can really rave about .\\n Overall, it was a good location, but an average hotel with serious noise issues .\\nA perfect hotel a perfect location perfect staff !\\n The location is perfect to pier 39 and surrounding areas .\\n My husband found this hotel on Trip Advisor and it ranked very high and we weren't disappointed at all as it is in a great location and a very nice hotel .\\nThe hotel location was perfect .\\nMy husband and I stayed for two nights at the Tuscan Inn and enjoyed it's great location to Fisherman... \n", + "47 Great location for tube and we crammed in a fair amount of sightseeing in a short time .\\nAll in all, a normal chain hotel on a nice location , I will be back if I do not find anthing closer to Picadilly for a better price .\\nGreat Price Terrific Location .\\nThe location is absolutely wonderful .\\nOur main focus before booking was looking for a low price with good location .\\nVery Good Value , Excellent Location .\\n The location is ideal for travel all over the city via the Underground .\\nExcellent hotel in prime location .\\nGood Location Horrible Service Disgusting Procedures .\\nFirst and foremost, the good, yes it has good location, a block away from Gloucester Road Tube Station .\\n... \n", + "1 Parking was expensive but I think this is common for San Fran .\\n there is a fee for parking but well worth it seeing no where to park if you do have a car .\\n The parking was free, which was great, and the hotel was conveniently located for public transport, and local attractions .\\nAs for in, and, out parking, I have seen a lot of San Francisco with no car at all .\\n They have a parking garage, but they make you leave your vehicle for them to park and then if you want to take a drive later, you have to wait for the staff to get it .\\n There is no real parking space, so I had to pull up in front of the hotel in a small space .\\nThere was valet parking at a cost of $42 .\\n Rooms are v... \n", + "15 If a case was included, as with the Kindle 1, that would have been reflected in a higher price .\\n lower overall price, with nice leather cover .\\nIf you have the first Kindle and are deciding whether to upgrade, do it now while you can still get a good price for your old Kindle on Amazon's Marketplace, craigslist, wherever .\\n Before purchasing, I was obsessed with the reviews and predictions I found online and reading about some of the critiques such as the thick border, the lack of touchscreen, lack of battery SD slot, lack of a back light, awkward difficult keyboard layout, minimally faster page flipping, and the super, high price .\\n However, I think all the positives of the K2 gre... \n", + "20 All in all, a normal chain hotel on a nice location , I will be back if I do not find anthing closer to Picadilly for a better price .\\nGreat Price Terrific Location .\\nOur main focus before booking was looking for a low price with good location .\\n All for the bargain price off £ 250 for 2 nights including return rail to North Wales .\\nExplore the area and you will find plenty of pubs where you can eat for a reasonable price .\\n Half expected a noisy room by the elevator for the bargain price we paid, but instead got a 17th floor room with awesome city view .\\n The price we paid for our rooms was reasonable .\\nI got this hotel on price line for a 4 night stay with my boyfriend for our ... \n", + "0 We arrived at 23,30 hours and they could not recommend a restaurant so we decided to go to Tesco, with very limited choices but when you are hingry you do not careNext day they rang the bell at 8,00 hours to clean the room, not being very nice being waken up so earlyEvery day they gave us a candy bar and two bottlets of water whic is a very nice touch .\\n We had a room with two double beds which was surprisingly roomy, considering the small hotel rooms I have in previous trips to London .\\nThe room was quiet, clean, the bed and pillows were comfortable, and the service was adequate .\\n We arrived about 11 am, room was ready .\\n Room was good size for Europe , clean throughout .\\n The Co... \n", + "6 Great Location , Nice Rooms , Helpless Concierge\\n The rooms were bright, clean and the windows open .\\n Another odd thing we noticed is a majority of the room doors opened OUT into the hallway, rather than into the rooms .\\n The rooms are on the small side but they're still big enough to be comfortable and are decorated very nicely .\\n The rooms were spacious and clean .\\n The rooms are clean and tidy .\\n The location was perfect for perusing the shops at Fishermans Wharf, we had dinner at Nicks's Lighthouse , the food was fine but the rest rooms were in a horrendous state, which completely put us off .\\n The rooms were nice, very comfy bed and very clean bathroom .\\n rooms somewha... \n", + "26 The Swissotel is one of our favorite hotels in Chicago and the corner rooms have the most fantastic views in the city .\\n The rooms look like they were just remodled and upgraded, there was an HD TV and a nice iHome docking station to put my iPod so I could set the alarm to wake up with my music instead of the radio .\\nGreat rooms staff and location but extras overpriced .\\n Hotel was very clean and the rooms were comfy .\\n the standard rooms are small, the lobby bar is very small .\\n My son loved the Chicago river view from our 31st floor , rooms where neat and clean .\\n The rooms were small and much more expensive .\\n I've olny ever stayed in the 'standard' rooms in this property, al... \n", + "40 Both of us having worked in tourism for over 14 years were very disappointed at the level of service provided by this gentleman .\\n The service was good, very friendly staff and we loved the free wine reception each night .\\n Also, thanks to Ken the concierge for recommending Grand Limo service .\\n The restaurant is not cheap but is very well patronised and the service is very good as is the food .\\n Service was spotty Front desk was marginally helpful .\\n This tuscan, themed hotel was charming, clean comfortable and the complimentary concierge service was so helpful .\\nPhenominal Service, great room, great location , couldn't have asked for more .\\n It has some charms in decor, and... \n", + "28 not customer, oriented hotelvery low service levelboor reception\\nThe room was quiet, clean, the bed and pillows were comfortable, and the service was adequate .\\n There were no service issues to speak of, but it's not an overly, friendly hotel .\\nGood Location Horrible Service Disgusting Procedures .\\nIf you're looking for a full, service experience, this is still not the hotel for you .\\nThe Holiday Inn Kensington Forum is fine if you like large, impersonal hotels with mediocre service, overcrowded breakfast rooms and don't mind tired decor .\\nWe found the front desk service unfriendly and indifferent .\\nGreat stay friendly service great location .\\n A prompt reply indicated not and th... \n", + "35 Mediocre room and service for a very extravagant price .\\n The accomodations and support services are phenomenal .\\n no robes in the rooms, ice machines are not on every floor , no turn down service at night, and when housekeeping did come, they did not replace the shower gel we had used which was totally empty .\\nConcierge service was fine when we needed our boarding pass printed .\\n Room service was expensive in the hotel .\\n Even with the amount we saved on the room, we could not justify spending the amount they listed for room service .\\nClose to everything , underground eating, Michigan avenue shops , walking or short cabNegatives, Room service expensive , ridiculously expensi... \n", + "45 Staff are friendly and helpful .\\n The staff in the morning seemed to need another cup of coffee as they weren't excited to see us .\\nA perfect hotel a perfect location perfect staff !\\n The front desk staff is more than eager to help, smile, make you happy .\\n The staff is friendly and we only went to one of the " Happy Hours" for a glass of wine as we were either at the baseball game or on the two tours we took in , busy time !\\n The front desk and the concierge staff were very helpful when we had a question .\\n The staff is helpful and knowledgable .\\n The room was clean and comfortable and the staff were friendly and helpful .\\n The staff was very helpful, got two grea... \n", + "36 The staff at Swissotel were not particularly nice .\\n Each time I waited at the counter for staff for several minutes and then was waved to the desk upon my turn with no hello or anything, or apology for waiting in line .\\n All staff members are very courteous and go the extra mile in meeting your needs during your stay .\\n The staff was great and put us on the 30th floor with a view of the lake .\\n The staff is friendly and knowledgeable about the town and will go out of your way to be helpful .\\n Our whole stay it felt like the staff went out of their way to make sure we had the best visit possible .\\nGreat rooms staff and location but extras overpriced .\\n The hotel staff was very ... \n", + "\n", + " cluster_label \n", + "18 1 \n", + "29 1 \n", + "25 1 \n", + "3 1 \n", + "14 1 \n", + "47 1 \n", + "1 1 \n", + "15 1 \n", + "20 1 \n", + "0 1 \n", + "6 1 \n", + "26 1 \n", + "40 1 \n", + "28 1 \n", + "35 1 \n", + "45 1 \n", + "36 1 " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
filenameopinion_textcluster_label
18bathroom_bestwestern_hotel_sfo.txtThe room was not overly big, but clean and very comfortable beds, a great shower and very clean bathrooms .\\n The second room was smaller, with a very inconvenient bathroom layout, but at least it was quieter and we were able to sleep .\\n Large comfortable room, wonderful bathroom .\\n The rooms were nice, very comfy bed and very clean bathroom .\\n Bathroom was spacious too and very clean .\\n The bathroom only had a single sink, but it was very large .\\n The room was a standard but nice motel room like any other, bathroom seemed upgraded if I remember .\\nThe room was quite small but perfectly formed with a super bathroom .\\n You could eat off the bathroom floor it was so clean .\\n The ba...1
29food_holiday_inn_london.txtThe room was packed to capacity with queues at the food buffets .\\n The over zealous staff cleared our unfinished drinks while we were collecting cooked food and movement around the room with plates was difficult in the crowded circumstances .\\n There are a couple pubs, a great patisserie and even fast food restaurants within a block .\\nThe neighborhood is an upscale residential area full of restaurants in easy walking distance ranging from fast food to up, scale with a wide variety of cuisines , , we never had a bad meal .\\nThe food was wonderful, a selection of sandwiches, salads, cous cous and spicy wedge potato's, fruit salad and a cake was a good fill up when needed .\\nFull ...1
25food_swissotel_chicago.txtThe food for our event was delicious .\\n The food in the lounge was great and very fresh, , , salads, sandwiches etc .\\n As far as food, walk a few blocks toward Michigan Ave turn left or right and there are plently of less expensive places to eat .\\n The Palm resturant in the hotel had some specials Sunday night, we ate there and the food service,etc were outstanding portions are large and we shared since we are not big eaters .\\n Took the charge of the minibar which we had used to keep my 2 year old sons food .\\n We never ate anything onsite so I can't vouch for the food options immediately avialable .\\n The Lobby bar does not serve food very late at night and we couldn't find any ven...1
3free_bestwestern_hotel_sfo.txtThe wine reception is a great idea as it is nice to meet other travellers and great having access to the free Internet access in our room .\\n They also have a computer available with free internet which is a nice bonus but I didn't find that out till the day before we left but was still able to get on there to check our flight to Vegas the next day .\\n The service was good, very friendly staff and we loved the free wine reception each night .\\n has free wireless and help you with transportation needs .\\n The nightly free wine tasting from 5 , 6 pm is a brilliant idea and gets guests together to socialise witheach other .\\n They have a happy hour where you have a couple offree drinks bet...1
14location_bestwestern_hotel_sfo.txtGood Value good location , ideal choice .\\nGreat Location , Nice Rooms , Helpless Concierge\\n The location is good, and the overall decor is nice, but there was nothing that I can really rave about .\\n Overall, it was a good location, but an average hotel with serious noise issues .\\nA perfect hotel a perfect location perfect staff !\\n The location is perfect to pier 39 and surrounding areas .\\n My husband found this hotel on Trip Advisor and it ranked very high and we weren't disappointed at all as it is in a great location and a very nice hotel .\\nThe hotel location was perfect .\\nMy husband and I stayed for two nights at the Tuscan Inn and enjoyed it's great location to Fisherman...1
47location_holiday_inn_london.txtGreat location for tube and we crammed in a fair amount of sightseeing in a short time .\\nAll in all, a normal chain hotel on a nice location , I will be back if I do not find anthing closer to Picadilly for a better price .\\nGreat Price Terrific Location .\\nThe location is absolutely wonderful .\\nOur main focus before booking was looking for a low price with good location .\\nVery Good Value , Excellent Location .\\n The location is ideal for travel all over the city via the Underground .\\nExcellent hotel in prime location .\\nGood Location Horrible Service Disgusting Procedures .\\nFirst and foremost, the good, yes it has good location, a block away from Gloucester Road Tube Station .\\n...1
1parking_bestwestern_hotel_sfo.txtParking was expensive but I think this is common for San Fran .\\n there is a fee for parking but well worth it seeing no where to park if you do have a car .\\n The parking was free, which was great, and the hotel was conveniently located for public transport, and local attractions .\\nAs for in, and, out parking, I have seen a lot of San Francisco with no car at all .\\n They have a parking garage, but they make you leave your vehicle for them to park and then if you want to take a drive later, you have to wait for the staff to get it .\\n There is no real parking space, so I had to pull up in front of the hotel in a small space .\\nThere was valet parking at a cost of $42 .\\n Rooms are v...1
15price_amazon_kindle.txtIf a case was included, as with the Kindle 1, that would have been reflected in a higher price .\\n lower overall price, with nice leather cover .\\nIf you have the first Kindle and are deciding whether to upgrade, do it now while you can still get a good price for your old Kindle on Amazon's Marketplace, craigslist, wherever .\\n Before purchasing, I was obsessed with the reviews and predictions I found online and reading about some of the critiques such as the thick border, the lack of touchscreen, lack of battery SD slot, lack of a back light, awkward difficult keyboard layout, minimally faster page flipping, and the super, high price .\\n However, I think all the positives of the K2 gre...1
20price_holiday_inn_london.txtAll in all, a normal chain hotel on a nice location , I will be back if I do not find anthing closer to Picadilly for a better price .\\nGreat Price Terrific Location .\\nOur main focus before booking was looking for a low price with good location .\\n All for the bargain price off £ 250 for 2 nights including return rail to North Wales .\\nExplore the area and you will find plenty of pubs where you can eat for a reasonable price .\\n Half expected a noisy room by the elevator for the bargain price we paid, but instead got a 17th floor room with awesome city view .\\n The price we paid for our rooms was reasonable .\\nI got this hotel on price line for a 4 night stay with my boyfriend for our ...1
0room_holiday_inn_london.txtWe arrived at 23,30 hours and they could not recommend a restaurant so we decided to go to Tesco, with very limited choices but when you are hingry you do not careNext day they rang the bell at 8,00 hours to clean the room, not being very nice being waken up so earlyEvery day they gave us a candy bar and two bottlets of water whic is a very nice touch .\\n We had a room with two double beds which was surprisingly roomy, considering the small hotel rooms I have in previous trips to London .\\nThe room was quiet, clean, the bed and pillows were comfortable, and the service was adequate .\\n We arrived about 11 am, room was ready .\\n Room was good size for Europe , clean throughout .\\n The Co...1
6rooms_bestwestern_hotel_sfo.txtGreat Location , Nice Rooms , Helpless Concierge\\n The rooms were bright, clean and the windows open .\\n Another odd thing we noticed is a majority of the room doors opened OUT into the hallway, rather than into the rooms .\\n The rooms are on the small side but they're still big enough to be comfortable and are decorated very nicely .\\n The rooms were spacious and clean .\\n The rooms are clean and tidy .\\n The location was perfect for perusing the shops at Fishermans Wharf, we had dinner at Nicks's Lighthouse , the food was fine but the rest rooms were in a horrendous state, which completely put us off .\\n The rooms were nice, very comfy bed and very clean bathroom .\\n rooms somewha...1
26rooms_swissotel_chicago.txtThe Swissotel is one of our favorite hotels in Chicago and the corner rooms have the most fantastic views in the city .\\n The rooms look like they were just remodled and upgraded, there was an HD TV and a nice iHome docking station to put my iPod so I could set the alarm to wake up with my music instead of the radio .\\nGreat rooms staff and location but extras overpriced .\\n Hotel was very clean and the rooms were comfy .\\n the standard rooms are small, the lobby bar is very small .\\n My son loved the Chicago river view from our 31st floor , rooms where neat and clean .\\n The rooms were small and much more expensive .\\n I've olny ever stayed in the 'standard' rooms in this property, al...1
40service_bestwestern_hotel_sfo.txtBoth of us having worked in tourism for over 14 years were very disappointed at the level of service provided by this gentleman .\\n The service was good, very friendly staff and we loved the free wine reception each night .\\n Also, thanks to Ken the concierge for recommending Grand Limo service .\\n The restaurant is not cheap but is very well patronised and the service is very good as is the food .\\n Service was spotty Front desk was marginally helpful .\\n This tuscan, themed hotel was charming, clean comfortable and the complimentary concierge service was so helpful .\\nPhenominal Service, great room, great location , couldn't have asked for more .\\n It has some charms in decor, and...1
28service_holiday_inn_london.txtnot customer, oriented hotelvery low service levelboor reception\\nThe room was quiet, clean, the bed and pillows were comfortable, and the service was adequate .\\n There were no service issues to speak of, but it's not an overly, friendly hotel .\\nGood Location Horrible Service Disgusting Procedures .\\nIf you're looking for a full, service experience, this is still not the hotel for you .\\nThe Holiday Inn Kensington Forum is fine if you like large, impersonal hotels with mediocre service, overcrowded breakfast rooms and don't mind tired decor .\\nWe found the front desk service unfriendly and indifferent .\\nGreat stay friendly service great location .\\n A prompt reply indicated not and th...1
35service_swissotel_hotel_chicago.txtMediocre room and service for a very extravagant price .\\n The accomodations and support services are phenomenal .\\n no robes in the rooms, ice machines are not on every floor , no turn down service at night, and when housekeeping did come, they did not replace the shower gel we had used which was totally empty .\\nConcierge service was fine when we needed our boarding pass printed .\\n Room service was expensive in the hotel .\\n Even with the amount we saved on the room, we could not justify spending the amount they listed for room service .\\nClose to everything , underground eating, Michigan avenue shops , walking or short cabNegatives, Room service expensive , ridiculously expensi...1
45staff_bestwestern_hotel_sfo.txtStaff are friendly and helpful .\\n The staff in the morning seemed to need another cup of coffee as they weren't excited to see us .\\nA perfect hotel a perfect location perfect staff !\\n The front desk staff is more than eager to help, smile, make you happy .\\n The staff is friendly and we only went to one of the &quot Happy Hours&quot for a glass of wine as we were either at the baseball game or on the two tours we took in , busy time !\\n The front desk and the concierge staff were very helpful when we had a question .\\n The staff is helpful and knowledgable .\\n The room was clean and comfortable and the staff were friendly and helpful .\\n The staff was very helpful, got two grea...1
36staff_swissotel_chicago.txtThe staff at Swissotel were not particularly nice .\\n Each time I waited at the counter for staff for several minutes and then was waved to the desk upon my turn with no hello or anything, or apology for waiting in line .\\n All staff members are very courteous and go the extra mile in meeting your needs during your stay .\\n The staff was great and put us on the 30th floor with a view of the lake .\\n The staff is friendly and knowledgeable about the town and will go out of your way to be helpful .\\n Our whole stay it felt like the staff went out of their way to make sure we had the best visit possible .\\nGreat rooms staff and location but extras overpriced .\\n The hotel staff was very ...1
\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\": \"document_df[document_df['cluster_label'] == 1]\",\n \"rows\": 17,\n \"fields\": [\n {\n \"column\": \"filename\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 17,\n \"samples\": [\n \"bathroom_bestwestern_hotel_sfo.txt\",\n \"food_holiday_inn_london.txt\",\n \"location_holiday_inn_london.txt\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"opinion_text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 17,\n \"samples\": [\n \" The room was not overly big, but clean and very comfortable beds, a great shower and very clean bathrooms .\\n The second room was smaller, with a very inconvenient bathroom layout, but at least it was quieter and we were able to sleep .\\n Large comfortable room, wonderful bathroom .\\n The rooms were nice, very comfy bed and very clean bathroom .\\n Bathroom was spacious too and very clean .\\n The bathroom only had a single sink, but it was very large .\\n The room was a standard but nice motel room like any other, bathroom seemed upgraded if I remember .\\nThe room was quite small but perfectly formed with a super bathroom .\\n You could eat off the bathroom floor it was so clean .\\n The bathroom door does the same thing, making the bathroom seem slightly larger .\\nbathroom spotless and nicely appointed .\\n The rooms are exceptionally clean and also the bathrooms .\\n The bathroom was clean and the bed was comfy .\\n They provide you with great aveda products in the bathroom .\\n Also, the bathroom was a bit dirty , brown water came out of the bath tub faucet initially and the sink wall by the toilet was dirty .\\n If your dog tends to be a little disruptive or on the noisy side, there is a bathroom fan that you can keep on to make noise .\\n The bathroom was big and clean as well .\\n Also, the bathrooms were quite well set up, with a seperate toilet shower to basin, so whilst one guest is showering another can use the basin .\\n The bathroom was marble and we had luxurious bathrobes and really, every detail attended to .\\n It was very clean, had a beautiful bathroom, and was comfortable .\\n The bed was comfortable and the bathroom was clean with a nice selection of toiletries .\\n The bathroom was an adequate size .\\nFirst, from day one our bathroom had a urine smell that never went away .\\n Otherwise the bathroom was decent enough , decent temperature and decent water pressure .\\n Bathroom shower curtain reeked of mildew enough to smell up the room .\\n The bed was comfortable and the rooms and bathrooms were kept clean and although the refrigerators are honour bars the hotel is happy for you to chill your own drinks in them .\\n The room was very nice, and had a nice bathroom .\\n The room was wonderful with great beds, a nice bathroom and we also had an excellent view of Coit Tower as well .\\n The room was small, with a king bed, and a truly claustrophobic bathroom .\\nAmenities , While this hotel isn't a luxury property, they have some nice touches like marble bathrooms, mini bar, room service and an evening wine reception every day .\\n The bathroom was clean, well lit, and always well stocked with shampoo etc and towels .\\n The only odd thing was the bathroom door and room door opened outwards into the room and hallway respectively .\\n Room spacious 2 double beds gave us plenty of room, the beds were comfortable and the bathroom was a good size .\\n The bathroom was large and included a mounted makeup mirror .\\n The rooms are abit smallish , but immaculately maintained, and tastefully decorated, with excellent bathroom facilities .\\n Shower bathroom was good with good shower and plenty of space .\\n Both the bedroom and bathroom had plenty of room .\\n large clean bathrooms fully stocked with everything needed .\\n However, when we arrived at our room there was a maintenance worker there measuring the bathroom counter, so maybe they're doing work in some units .\\n The room was large and very comfortable with a nice large bathroom .\\n There is a wall, mounted hair dryer in the bathroom .\\nThe thing that bothered me the most was the bathroom was very dated .\\n There is virtually no counterspace in the bathroom at all .\\n Upon our arrival, there was a SLIGHT odor in bathroom but nothing worth complaining about .\\n The bathroom was adequate with thick, fluffy towels .\\n The bathroom was large and private .\\n The bathroom was very clean and well appointed with nice towels and toiletries, it was not big, but room enough to do what one needs to .\\nThe Tuscan Inn room was quite nicely appointed, the bed was comfortable the chairs TV adequate, the bathroom reasonably good .\\nmy only real complaint would be that the bathroom does not have a separate vanity area, so 2 people getting dressed had to improvise, which was kind of surprising since the bathrooms were all redone on 2005 .\\n The clever use of mirrors behind the bed helped to create the illusion of space, however, in reality the room was cramped and with two of us trying to use the hand basin and bathroom at the same time was particularly awkward .\\n The bathroom containing the toilet and the shower was also very small, not to mention the sink and counter directly outside of it .\\n Turning the bathroom light on also turns the counter light on, meaning a middle, of, the, night trip to the bathroom means the whole side of the room gets illuminated and the wooden shutters that were installed in place of traditional curtains to add to the hotel's theme do absolutely nothing to keep the room dark once the sun comes up .\\n The room was a good size but the bathroomm was very small .\\n Bathroom was adequate and clean and there was a hairdryer .\\n The wash basin was in the room without any privacy and there was a small bathroom for the toilet and bath shower .\\n The bathroom had not been remodeled in alignment, but it was all very clean and perfectly acceptable .\\n The bathroom had several problems .\\n Bathrooms were also very nice .\\n The shower stall could have been bigger as the bathroom itself was pretty large .\\n Then they gave us a room which had a view of a wall, a tiny bathroom so small in fact that the sink had to be in the bedroom .\\n The room is not the most modern room but there was tons of space especially in the bathroom .\\n We may have had an ADA room because it was pretty big with large bathroom , it was room 459 , and the room had all the amenities we were looking for .\\nThe room and bathroom were perfect in size, just what is needed .\\n The only possible complaint was that the sink in the bathroom had a crack in it, but it did not bother me enough to ask for a different room .\\n Bathrooms, though, are plenty big .\\n Although the rooms were clean and fresh, one of ours had several small problems , the phone didn't work, the bathroom door handle was quite loose, and the thermostat didn't work properly .\\n It represents value for money, the rooms and bathrooms were impeccably clean, fresh linen daily, and the staff extremely helpful and friendly .\\n There were plenty of thick towels in the bathroom, and all the usual toiletries, hair, dryer, etc .\\n I really didn't get a chance to experience the staff's level of service but the rooms are small as is the bathroom .\\n The bathroom was also small it was difficult to close the door once inside to avoid the door hitting you no joke !\\n Some rooms had the bathroom sink outside the bathroom, which we would have preferred, but our sink was inside the bathroom .\\n The bathroom was clean and bright and the toiletries were so good that we took the leftovers home because there was a website selling the shampoo listed on the bottle .\\n The rooms were very nice, could of use just a little more shelf space by the bathroom sink .\\n The bathroom was clean but a little dated .\\n The only thing wrong with the room was the bathroom, it was not up to the standard of the rest of the decor but it was clean and large enough .\\n The bathroom was just okay, but for the price we survived .\\n Hair dryer in bathroom constantly fell in sink from it's holder when anyone used the door to our room .\\n The reasonable price of the hotel allowed us to book 2 rooms, thus giving the 4 of us a bit more space and 2 bathrooms .\\n Plenty of room in the bathroom .\\n Nice clean rooms and a spaciousbathroom .\\n The only minor downside, as a few others have mentioned, is the bathroom sink lighting .\\n Did not like the bathroom light shining into bedroom .\\n Only negative is the bathroom area is a little small .\\n Our suite we had was small there was pubic hair on the bathroom floor from ?\\nbathroom a little on the older side .\\n The bathroom needed a face, lift also .\\n The bathrooms are quite small compared to other hotels but adequate .\\n The hotel was of a good standard, big clean rooms, decent bathroom and the free wine reception in the evening was an added bonus .\\n\",\n \" The room was packed to capacity with queues at the food buffets .\\n The over zealous staff cleared our unfinished drinks while we were collecting cooked food and movement around the room with plates was difficult in the crowded circumstances .\\n There are a couple pubs, a great patisserie and even fast food restaurants within a block .\\nThe neighborhood is an upscale residential area full of restaurants in easy walking distance ranging from fast food to up, scale with a wide variety of cuisines , , we never had a bad meal .\\nThe food was wonderful, a selection of sandwiches, salads, cous cous and spicy wedge potato's, fruit salad and a cake was a good fill up when needed .\\nFull English breakfast was included in our rate and was very good indeed , staff were busy clearing tables promptly and fresh food kept arriving all the time .\\n One local restaurant stood out for having excellent food, Olives located one block away .\\n, Great location , Very good selection of food for breakfast buffet .\\n I can't see what sets it apart from other 3, star hotels I've stayed in , other than the fact it's in London, in a posh area and has good food .\\n We ate breakfast at the hotel a couple of days and thought it was overprice for the quality of food .\\n There are plenty of restaurants in the area as well, including fast food joints and two small, ish supermarkets .\\n They also have a great room service menu and was surprised at the big portions and quality of the food, great to get a bit in your room after a night on the town .\\n Breakfast equally tired , although a reasonable selection of food, general ambience in restaurant more like a youth hostel .\\n The breakfast buffet full English breakfast was fantastic with a very good selection of food .\\nreally nice hotel for buissnessnot much around in terms of shoppin etcfood was ok\\nEverything about this hotel was first class including the food !\\n The nicest surprise was how fantastic the food was which I hadn't expected in a large chain hotel .\\n It is very convenient to the Gloucester Road tube stop, grocery store, drug store and fast food places .\\n I ordered room service one night, and the food was delightful, and the service was fast and friendly .\\n The location is just around the corner from the tube, Boots and Waitrose right next door, close to many restaurants including fast food if you like .\\n Talking about food, something worth noticing is that there was a fridge in the room, but it was completely reserved for the mini, bar service beverages, which completely filled it .\\n There was a massive queue for the restaurant, the food was beginning to run low we went down at 9 .\\n There were Italian, Indian, British, American fast food, and Thai restaurants very close to the hotel on Cromwell Gloucester Rds .\\nRoom service is expensive but good, the food was delivered hot and was tasty but was chosen from the current uninspired Holiday Inn room service menu, when I ordered a \\u00a36 .\\n You could buy food from Sainsburys or Waitrose which were 2 minutes away to save money .\\n Food Drink a little pricey in local establishments .\\n95 if you want hot food as well .\\n Note that all around the hotel are decent little cafes and shops to get either full breakfasts or breakfast foods .\\n We ate on evening once at the Garfunkels pub in the mall, it was typical chain restaurant food but fast with good service .\\n There was an adequate self service buffet, not a huge selection or very well presented, cloths were not changed when food got spilt .\\n Not exactly what most tourists are looking for but when you have been out of the states as long as we have you eat fast food when you get the chance !\\n There is no mini, fridge in standard rooms, so you can't store any food , the hotel used to have mini, fridges .\\n Poor customer service, bad and overpriced pub food .\\nThere is a grocery store close by that you can pick up food and a Starbucks nearby .\\n As mentioned, there are several places to buy food if you're going cheap :\\nThe hotel is just a couple of minutes walk from the nearest tube station and also has a Waitrose , Tesco and various Fast Food joints and restaurants nearby .\\n Shame that we had to use the forum restaurant this morning prior to check out , this restaurant is on the first floor and is one of the buffet style breakfasts so lukewarm food and very busy .\\nThe food is very, very good and the staff were very friendly .\\n The hotel itself was very pleasant , the staff friendly and helpful and I can only comment on the breakfasts as this was the only meal that we had there , the food was excellent with a wide variety of choice .\\n The food was excellent, the service was very friendly and the prices cheap .\\n The food is excellent and the service great .\\n The bar food actually looked pretty inviting as it passed by .\\n If you like Indian food we ate at the Dehli Brassiere it was exellent and more reasonably priced .\\n I would recommendeating out as the evening food is frozen re, heat type and for the price you are paying it is not simply worth it .\\n You can buy drinks and breakfast food at a Waitrose supermarket and Tesso express mart next door .\\n The area has a few pubs, a couple of steak places, a number of Indian restaurants and some fast food, so it's convenient for that .\\n Within 200 yards of leaving the hotel and heading to the Tube Station you have a number of fast food outlets, highstreet Restautants, Pastry shops and supermarkets, so if you did wish to live in your hotel room for the duration of your stay, you could do !\\n as for the continental breakfast taste was good but became boring after the 3rd day the food served wasnt changed .\\nWe ate in the bistro downstairs and the food was very good , although the portions varied significantly depending on the chef that night .\\n The buffet breakfast is ok although not the best I've had and usually includes a selection of fresh fruit as well as the usual 'full english' The food in the ground floor restaurant is good I haven't had problems with room service although the menu has recently changed and doesn't have as good a selection as it did .\\n When the food arrive it was the wrong order .\\n I can also tell you that there is nothing fantastic about the food .\\n While travelling out of London to any of the popular destinations, food can be pretty expensive .\\n The rooms have never disappointed and the food is always nice .\\n Breakfast was OK, great choice, but the cooked food was a bit tepid .\\n The area is really safe with great food, boots, tesco, waitrose burger king, kfc and starbucks .\\nAdditionally, they recommended the Cafe Forum which was about two blocks from the hotel for breakfast, the prices were reasonable and food was excellent .\\n00, good quality food, lots of choice, continental, full english, hot and fresh, very friendly staffs .\\n There is 24 hour room service, a restaurant, and a tavern in the hotel although we did not sample the hotel food .\\n Many hotels I have stayed in the food has been rarely hot .\\n The bed was very comfortable, and the empty refrigerator was a great place to store food and beverages .\\n Within easy reach you have all you could want peaceful areas and shops and food outlets .\\n I can't comment on any of the hotel restaurants or food as we never ate there with so many other choices nearby .\\n Avoid the food in the hotel restaurant as it is ridiculously overpriced .\\n Also there is a nice bistro around the corner with very good food that is moderately priced .\\nThe food here is great, we had breakfast brought to our room, although pricy well worth it .\\n Minimall with Boots pharmacy, Whole Foods type ritzy fullservice market, coffee shops, etc .\\nWould not recommend the Patisserie food looked overpriced, pastries were dry !\\n Food is overpriced everywhere due to $ to pound conversion of course .\\nthere are a variety of priced places to eat in the immediate area, but the food costs are always high, we ate mostly at pubs, where the beer and scotch were very reasonably priced always !\\n More than enough food choices with coffee or tea, juice, pastries, toast, yogurt, cereal and assorted cold cuts to please every taste .\\n Another good thing is that the rooms have mini, fridges and it's great for storing ready, to, eat food from Waitrose .\\n they mark down their food at the end of the day and you can get great deals on everything from sandwhiches to desserts at a fraction of the cost .\\nThe food in the restaurant is terrible .\\n Both of these offer good variety of good food at very reasonable prices and suitable for children .\\n The Glouster Road tube station is just two minutes away, along with other food stores, pubs, internet cafes, restaurants etc .\\n Its a chain but the food was cheap and delicious !\\n Stunning food, amazing service .\\n We didn't eat at the hotel , there were some great cafe's just around the block with great food at a much better price .\\n If you're a family vacation traveller, you'll probably make use of the grocery store often becuse food in London is expensive when you consider the terrible USD, GPB exchange rate .\\n Many restaurants in the neighborhood, ranging from swanky to fast food to haute cuisine .\\n There are coffee and pastry shops around the corner and fast food .\\n There is also a grocery store in a shopping plaza on the corner where you can buy take out food, wine, etc .\\n It was in a fantastic position, one block to the Gloucester Road tube station there's a supermarket and fast food shops, as well as other shops nearby and opposite the station .\\n But it's great value for money, great location, pleasant staff, good food, and we'll be staying there again .\\n Food was OK, service very haphazard .\\n The range of food available would have satirfied anyone, all well cooked and efficiently replenished .\\nI didn't sample any of the food options but there are several outlets just around the hotel .\\nThe huge coffe bar in the lobby is quite nice and offers drinks and food at good prices .\\n The Delhi Brasserie restaurant recommended by the hotel's concierge was a short walk, the food delicious and reasonable .\\n The food was good and the service was very good .\\n Additionally, there are numerous restaurants everywhere ranging from fast food to upscale .\\n There was also a more expensive English breakfast with many hot foods which was included in some room prices .\\n The frig doesn\\u0092t keep items cold enough for food safety \\u0096 it\\u0092s merely to slightly chill .\\nThe Waitrose Market sells yummy food .\\nI want close proximity to tube station, starbucks, and food .\\n Food was expensive, but that is true all over London just now .\\n The Waitrose supermarket has many take out food options .\\nAnother reviewer mentioned the smell of food on the 25th floor .\\n Very convenient, but don't stay on that floor as the smell of heating food wafts down the corridor .\\n The best food deal in this area is the local grocery store down the street , get your breakfast and lunch here and dine out nightly .\\n One block from the tube, half a block from a nice grocery store for essentials like bottled water, snacks and takeaway prepared food, tissues, etc .\\n Food quality was good, service prompt, everything prepared as we had ordered .\\nThe food in their pub as far as sandwiches etc, was reasonable .\\n Food in Pub is excellent value .\\n All the 4 nights we stayed there we relished the hot Indian food takeout from the WaitRose grocery chain, which is just around the corner .\\n Really good Indian food is just a few blocks away .\\nThere is an Internet cafe, laundramat and Sainsbury grocery store to the left up Cromwell Road and fast food, Banks and post offices to the right down Cromwell road .\\n It is in a nice neighborhood with fast food, resturants, and shopping with in walking distance .\\n because it has sensor to count how many times you open it for beverage service, nice area, near Starbucks, pastry shops, fast foods, supermarket, walking distances to Kensington Palace, London Natural Science Museum, Harrods, Victoria Albert Musuem, pubs, and what else could you ask for .\\n The food was delicious in both the Consortia and Forum restaurants in the hotel .\\n\",\n \" Great location for tube and we crammed in a fair amount of sightseeing in a short time .\\nAll in all, a normal chain hotel on a nice location , I will be back if I do not find anthing closer to Picadilly for a better price .\\nGreat Price Terrific Location .\\nThe location is absolutely wonderful .\\nOur main focus before booking was looking for a low price with good location .\\nVery Good Value , Excellent Location .\\n The location is ideal for travel all over the city via the Underground .\\nExcellent hotel in prime location .\\nGood Location Horrible Service Disgusting Procedures .\\nFirst and foremost, the good, yes it has good location, a block away from Gloucester Road Tube Station .\\n The convenient location and competitive rates finally sold us on a repeat visit .\\nThe location of this hotel is it's best feature , two blocks from the tube on lines that run to most major attractions .\\nThe saving grace of this hotel, is the friendly staff and its location in Kensington .\\nThe positives were the location, a block from the Gloucster Rd .\\n The public areas are fine if bland, the rooms comfortable if slightly cramped, the location good for tube and bus but just a little 'distant' .\\nIts saving grace is its location .\\n The location is excellent , near to the Tube and walking distance of a lot of attractions .\\n Turned out to be this excellent property in a prime location .\\n Location could not have been better with the Gloucester Road tube station just a few minutes' walk from the hotel .\\n Bottom line is that I would definitely return to this property for its comfort and convenient location .\\nGreat Location clean good place to stay !\\n Overall, I would recommend this hotel to friends, and would probably stay here again, because it was such a great location and clean .\\n Even better is the hotel's location , literally a two, minute walk around the corner and you're at the Gloucester Road Tube Station and a host of small shops, pubs and eateries .\\nGreat stay friendly service great location .\\n I would say this is a better than standard HI and the location just can't be beat .\\n I am giving a 'very good' based on staff, rates,and location .\\n We liked the location and decided to stay again .\\n The location close to a tube station and a grocery store is ideal .\\naverage hotel in a good location .\\nThis hotel is in a good location .\\n If you want a reasonably priced place to stay in London in a convenient location, then this is a good choice !\\nExcellent Hotel Excellent location Would definately stay again !\\nIn London its often hard to find good location and good customer service in the same place , The Holiday Inn Kensington Forum did that for me and I couldn't ask for more .\\n It's rated 4, stars, but I also stayed at an equivalently rated Marriott while in London, and a 3, star Holiday Inn Express in Scotland, and the service and rooms were much better at the other locations .\\ngreat hotel in a lovely location .\\n Excellent location next to Gloucester Road tube station that has 3 train lines making getting around London really easy .\\nGood location one excellent concierge but problems .\\n The location of the hotel is really good .\\nGreat Location for Sightseeing .\\nEfficient hotel with a good location .\\n The location is a block away from the underground station on the Picadilly Line direct from Heathrow Airport .\\nExcellent Hotel , Great Location .\\nGood Location New Room Bad Service .\\nThe hotel was a great location just 1 block from Tube, Grocery Stores, Pharmacy and 2 blocks from Natural History and Victoria Albert Museums .\\nConvenient location not 4, star room and services but OK .\\nGreat location but definitely NOT a 4 star hotel .\\nLOCATION , this hotel is located around the block from the Gloucester tube station and a few ATM machines .\\nGreat location but is it really 4 star ?\\n, Great location , Very good selection of food for breakfast buffet .\\n The location was only a five minute walk from the Gloucester Road Tube stop .\\n Great location, near Gloucester Road tube station, handy cluster of cafes, shops, couple of pubs, plus supermarket in the station complex .\\n For the price and location, this was a very great hotel .\\nGood location clean and comfortable .\\nGreat location but not sure it's worth the money .\\n What you are really paying for at this hotel is location and in hotel restaurants .\\n Fantastic location very close to the tube and buses .\\n It was a pretty good value and in a good location .\\n We wanted something more spacious, but this hotel had extremely convenient location and good reviews, so we decided to stay there .\\n The positives, great location, just a few minutes from a tube station which makes touring easy and with a travelcard taking midday breaks is easy .\\nApart from the location, the hotel was really not up to standard .\\n It is a great location, the rooms are a bit basic, but clean and we actually got a pretty good view this time .\\nexcellent location friendly staff .\\nwent for a city break with the family hotel good location harrods 20 mins walk,royal albert hall 10 mins,and under ground around the corner,plenty to see and do around hotel .\\n One good aspect of this hotel was the location, it is about 2 blocks to the tube station, shopping and eating .\\n Not too easy to find rooms for more than two people in London unless you compromise on a few things, such as cost, location etc .\\nLocation is not very good since one has to travel by tube to shop or sightsee .\\n The location to the Gloucester Road tube station was very handy .\\n We chose it due to its location i .\\nGreat location for first time traveller .\\n When I approached one stewardess, she assured me that her airline used Holiday Inn Kensington Forum on a regular basis because of its location .\\nHotel was super average nothing great about it at all except the location .\\nSince everyone starts with the good that I agree with , great location, very clean, I'll state the not, so good .\\n One of the best features of this hotel is the LOCATION .\\n The hotel's location is perfect for sightseeing and shopping and the Tube .\\nLocation great but hotel dated .\\nTower block hotel in fantastic location near good shops, bars and restaurants .\\n The positives about the place are the views from the windows if you have an upper floor room, and the location next to Gloucester Road tube station and a small shopping area .\\n For a little extra money, the soon to be Crowne Plaza over the road offers far better service yet with the same great location\\nNice hotel with great location for transportation .\\nWe've stayed at this hotel before and it's always been a great choice for it's location, cleanliness and staff .\\n very good location, next to underground station, very near to city center .\\nConvenient location Great Concierge service .\\n It isn't the most central location but I found it easy enough to get into London .\\n I would definitely stay here again for the location and the great customer service .\\nGreat location and above average rooms .\\n For the price and the location I thought this place was great .\\n The location is just around the corner from the tube, Boots and Waitrose right next door, close to many restaurants including fast food if you like .\\n Its location is probably the first thing worth mentioning, being a 10 minutes walk from the natural history museum, a 15 minutes walk from beautiful Hyde Park and just behind the corner of the Gloucester Road underground station .\\n Even otherwise, no matter if it's going to cost you a bit more, I'd still recommend it, considering its location and overall standards .\\n There was a lot of road noise, but this is only to be expected, given the location .\\nLocation is great, 5 mins walk to the Natural History Museum, 15 to Kensington High St and 2 mins to the tube and in a high room you can see for miles .\\nLocation was excellent with close proximity to tube station We will definitely stau here again , good value\\nGreat location for the tube and bus !\\nAlso it is perfect for the Gloucester Road tube station with direct trains to Heathrow airport terminals,very good location turn right as you exit the station the hotels a 3 minute walk on your right hand side .\\n Location is very close to Gloucester Road Tube so easy to get into central london for the tourist sites .\\nSome positives are that it is in a good location for the tube .\\n It's a great location , literally a minute's walk to Gloucester Road tube station, 5 mins walk to the Victoria Albert Museum and the British Science Museum .\\n But for the price, and the favourable location, we were content .\\npleasant hotel very good location .\\nGreat location for all London has too offer .\\n The hotel is in a very good location for touring London .\\nClean rooms, great location, close to the Gloucester Tube entrance .\\n The one standout is location , , it's only about a block from the Gloucester Rd tube station, which is on the Picadilly line that connects to Heathrow, so being on the west side of London, it's a shorter ride to and from aiport and a very short walk to your hotel with no changes, and then you are close to public transport for the rest of your stay .\\nGood hotel for the price nice location .\\n No noise problems and a nice, convenient location .\\nPerfect Location and Excellent Hotel .\\nRoom , clean, good size, everything you need is in the room including the coolerLocation , within every attractions, short walk or you can take the double decker just across the street .\\nGreat location , good value place to stay .\\nThe Holiday Inn Kensington Forum benefits from a fantastic location, right next to Gloucester Road Tube or to Paddington Station for the Heathrow Express .\\n Believe me, the location alone is worth the stay .\\nThe location is fantastic near Gloucester Station which was very handy for all our needs in transport !\\nThe breakfast we had 1 morning was to say the least quite incredible there was so much variety, there was also no complaint in this area with the staff they were right on the ball helpfulThis hotel while being high rise had some low moments for us as we felt some areas were really lacking but the hotels location is superb and staff like Peter did try and make your stay worth while .\\nThe location is South West London and a healthy but doable walk from landmarks like the Museum of Natural History, Albert's Hall, Kensington Gardens, and Harrods .\\nLOCATIONA block from Gloucester Road Tube which is conveniently on the Piccadilly, District Circle lines .\\n Other reviewers are right, the entrance is in a bizarre location but once you figure it out, it's fine .\\nNice clean rooms, good value, and average location near a tube station, but the rooms directing towards the main street outside are all VERY noisy .\\nTerrific location wonderful staff excellent pub !\\n This was our first trip to London and we found the location to be excellent .\\n Lovely hotel, terrific location, wonderful helpful staff, immaculately clean rooms .\\nGreat location, 1 min from Gloucester Tube .\\nExcellent location good value .\\nExcellent location in the nice and relatively quiet area 100m from Tube station and shops restaurants .\\nThe hotel's location is the best thing about it , near the tube stop, museums and Kensington High Street .\\nFor our purposes, the hotel was perfectly adequate , the location was good and the room was clean and quiet .\\nGood location but need upgrade .\\nI really love the location of this hotel .\\n But again, the location could justify charging that price .\\nThe hotel is very nice and the location is excellent .\\n If you're looking for a no, frills hotel that is all about location and price, this is your place .\\n All, in, all this hotel was a great choice for the price and location .\\nThe Holiday Inn Kensington Forum has a fantastic location for a city break in London .\\n The best thing was the location .\\nGood location ,near the tube .\\nGood price location but no thrills .\\n The location is great , very close to Gloucester Road Tube, with Waitrose supermarket, coffee shops and restaurants nearby .\\nGreat value and awesome location .\\n Instead you get attractively appointed, decent, sized rooms , AC that works, a modern bathroom, plumbing that doesn't gurgle and bang in the night, iron and board, bathrobe and slippers, lots of TV channels and a location that can hardly be bettered .\\n The location is terrific for museum, going and the Royal Albedrt Hall is an easy walk away if you enjoy concerts .\\nGreat Location Nice Rooms Friendly Staff .\\nGreat location service questionable .\\n Like other reviews, the location of the hotel is great, seconds around the corner from the tube .\\n Location wise, the tube station is just around the bend and key restaurants Bugis St .\\n Great location, close to the Underground and several excellent Pubs .\\n Everything was clean, the staff were very friendly and helpful and the location was excellent, all at a relatively cheap cost .\\n Location can't be beat, right on bus lines, next to tube station .\\nA nice hotel a resonable rate and a great location .\\n Location of hotel is great, next to Gloucester Road tube, close to museums, short hike to Buckingham Palace etc .\\nLocation is the only thing it has going for it .\\n Great location, okay value and what you would expect .\\nOn the positive side the location of Holiday Inn Forum was very handy for a conference I was attending .\\n The location is superb with the tube and bus stops literally steps away .\\nNice location by Glouchester tube stop .\\nThe best part about the hotel is the great location in Kensington .\\nGreat Location and great business hotel .\\n Holiday Inn Kensington Forum is a perfect no fuss business hotel with fantastic location .\\nGreat location pub in the ground floor .\\n Having never been to London, I found it easy to get around to places of interest from this location .\\ngreat location great breakfast !\\n Great location , we did what others have descibed and turned along Cromwell road and went to the other Holiday Inn in error when we first arrived .\\nThis was my second stay at this location in the past one year .\\n The hotel is in an excellent location only a short walk to Gloucester Rd .\\nThe location of the hotel is excellent, in a very nice area right next to the Gloucester Road tube station and direct on the picadilly line from Kings cross .\\nWe thought this was a great value for such a great location .\\nGreat location for vacationer .\\nThe hotel was good and in a great location .\\n You cannot beat the location !\\n Coming from Cardiff, the location was perfect, as it was straight off the M4 and a short drive on the A4 before reaching the hotel .\\nit's just a great location, period .\\n This hotel provided that and a great location to boot !\\nthe hotel is in a good location .\\nConvenient Location for Tourists .\\n Great location close to Gloucester Road tube stop .\\n Would definitely recommend this hotel if only for the fair price I got on priceline combined with the great, convenient location, which made it easy to get to all the touristy sites in London .\\n Convenient to Gloucester Road tube station, , location could not have been better .\\n Great location with cafes, restaurants and grocery stores all around .\\nAll in all a clean room, great location near hyde park and all the stuff in kensington chelea, near tube station , quiet area .\\nGreat location clean and quiet .\\n Location is excellent to the tube stations .\\nThe good thing about this hotel is its location, you are a 10 minute walk from Harrods and \\u00a313 taxi ride to Covent Garden which will take you past all the tourist attractions :\\n Loved the location as it's only a 1, minute walk from the Gloucester Road tube station .\\n I like this hotel due to its location, but the management need to get a grip .\\n Its in an easy location from the tube, just two minutes walk .\\n The hotel has an unbeatable location in a very nice part of South Kensington , only 1 block from the Gloucester Road station .\\n The location of the hotel is fine and actually the hotel is not extremely bad but it is extremely EXPENSIVE .\\nWe've stayed in London a lot and booked this hotel for one night due to a number of factors , the location, the price the availibility of a room to accomodate three adults .\\nThe hotel itself is truly in a great location , on the same road as the major London museums it took a leisurely 5, 10 minutes to stroll to the wonderful Natural History Museum a further 5, 10 minutes up the road to Harrods .\\n If we hadn't experienced a problem with the a c I would have rated my overall stay here 5 5 for value, location, comfort, etc .\\n Location itself is great, but everything else is terrible .\\n don t stay here unless if the Kensington location is important to you .\\nGeat location, clean, relatively quiet inside the rooms, somewhat confortable .\\n The main reasons are location and the quality of the air conditioning .\\n Yes, the standard rooms are small for two people and, yes, they seem to have a lot of trainee staff at the front desk, who struggle sometimes with the language, and yes some of the rooms are affected by traffic noise, but for a good location and a no, frills room provider, it is hard to beat .\\n Clean rooms, bustling lobby, GREAT location .\\n I will NOT recommend this location .\\n I travelled during the off, season in January to London, this was my first stay at this location and I would definitely consider doing so again .\\n Less than a five minute walk from the tube station and within walking distance to the Museum of Natural History, really a good location .\\n, , The one thing this hotel has it going for it is the location .\\nWith a kid and a stroller, this definitely is a very convenient location .\\n Cromwell is a pretty posh and popular location .\\nA fine hotel and great location .\\n We could not have been happier with the location or the room for the price .\\nGreat location indifferent service .\\n This being our first ever visit to UK, must say the location of the hotel, just 2min walk from Glousceter Rd tube stn was a great advantage as even during the weekend, Piccadely line remained open, though distict and central lines had some restrictions on a c of maintainence etc .\\nGood value and excellent location .\\n Booking through Priceline led me to the Holiday Inn Kensington Forum which was inexpensive, in a great location, and clean and comfortable .\\n The location of the hotel is great because it's about a block from the Gloucester Road Tube Station which is on several Tube lines .\\n In short, the location of the hotel made travel around London and getting to train stations to go out of London incredibly easy .\\n Overall, we felt this hotel was in a convenient location and a good deal for a London hotel .\\n As other reviewers mentioned, good location and lots around to do eat see enjoy .\\nNice hotel with great location .\\n The location is excellent, just a half a block from the Glouster Rd .\\n Also, the tour bus most likely will not drop you off at your hotel after the tour, but rather at Victoria Station or some location nearest your hotel as the bus driver can get .\\n Also, the close location of the gloucester road tube stop is great for getting around all of london .\\n Great location , a couple of minutes walk from Gloucester Rd underground station, and shops, restaurants, internet cafe etc\\nGreat location but don't bring the car !\\n The location is great however, only 5 mins walk from the Gloucester Road tube and 10 mins walk to the South Kensington museums, Albert Hall, etc .\\n The hotel is in an ok location , close the the Gloucester Rd tube station .\\nThe location of the hotel was great .\\n Otherwise, really great location with the refrige being key .\\nThis is our 2nd time at the Kensington Forum and love the location .\\nLocation was great come out of tube station, take first turn right and walk 150 yards you're there !\\n Location was great , close to tube stop .\\nThe location of the hotel was excellent, a 5 min stroll from Gloucester Road tube, next to tesco express and a large supermarket just around the corner .\\n The location is perfect, very central and very near the subway .\\n However the location was great with the underground and good restaurants nearby .\\nOne of the nicest features about this hotel is the location .\\nSo many employees, a wonderful location, an impressive building .\\nWell, after all, as I said, great location, great view, NOTHING ELSE !\\n On a positive note the location is great and the overworked staff did their best however if visiting London their are definitely better options such as the NH which is just around the corner .\\n Perfect location, right around the corner from the tube .\\n Our parents who are 55, 70 were able to wonder around the entire city by themselves due to the ideal location of this hotel .\\n Nothing fancy but we were quite happy with the location of the hotel, just like most who have stayed at the hotel before .\\n Overall, we found the hotel only good for location and decent room if somewhat cold just like the weather was in London then .\\n The breakfasts were excellent and the location is great for viewing London by bus, on foot and by tube , which is just at the end of the road .\\nGreat Location, Very Clean Miami FL .\\n The location in the Kensington area could not have been better, the area is safe, nice and fairly quiet .\\nA Great Location, Friendly And Polite Staff, First Class Breakfast And Rooms As Described Above Will Have Me Returning Again And Again .\\n Very convenient location for Gloucester Road tube .\\nThe location was excellent with a number of good eating options locally and Garfunkels and Ask Pizza located in a complex within a very short walking distance for kids who want something easy .\\n brilliant, behind tube station, near local stores, restaurant, posh area, near kensington park, great central location yet quiet enough in a cul, de, sac location .\\n flaw location of main entrance, big signs and big flags on main street but enter from the back, tiny miserable unwelcoming cheap entrance design, confusing to first time visitors .\\nthe only reason to choose this hotel is its location, for other aspects, not up to standard for its price .\\n The Forum Holiday is a big high rise and right across the street, is another Holiday Inn, albeit it much smaller which tends to confuse people looking for that 2nd location hotel .\\nGreat Location and Hotel for the Money .\\n The location in South Kensington is excellent as the Gloucester Road tube station is just around the corner and is served by 3 main lines, , District, Circle and Piccadilly .\\n Can't say enough about the price, quality, location and convenience of this hotel and area .\\n Good points excellent location really very close to the tube and the tube is on good lines so not lots of changing .\\n The location is in a good location near the tube and only a few minutes by cab to central London .\\n Although in some ways I would have preferred a smaller, more authentic English hotel, we really couldn't beat the combination of price and location .\\nLocation is good if you plan on taking the tube .\\nWould recommend the Holiday Inn Kensington Forum for location, price , and cleanliness .\\nDecent rooms and good location .\\nStayed at this hotel, for one night, as the location was ideal for our night out at the Royal Albert Hall .\\nAs also said before, location is excellent, very near the tube stations, plenty of delis and eating places nearby and a supermarkets for any snacks we wanted for the room .\\n Location is great, hotel is wonderful, and price is right, it really is hard to beat right now .\\ngood location great deal on priceline .\\nThis hotel is in a very convenient location, just a block and a half from the Gloucester Road tube station .\\n Comfortable room with large bed but limited space as is often the case with London hotels, but I found the location excellent .\\nStayed between Xmas and New Years and the room, location, etc were what to expect for the price I paid .\\n The location was great too as it was next to the tube .\\nExcellent location but rooms far too hot .\\n hotel but would stay again if the price was right due to the excellent location .\\nGood value in a good location .\\n The location was ideal for getting around London .\\nWhich leads us to , location, this hotel's best feature .\\nStay here , you won't regret it, great price , great location .\\nThe Hotel location was absolutely perfect for sightseeing and shopping .\\n Overall, for the money, location, and for the piece of mind knowing that its going to be clean and comfortable, look no further .\\nPerfectly adequate excellent location .\\n THe location was great, just aroung the corner from the tube .\\n But we also didn't give them any hard times, so they didn't have to fake anything , The location of the hotel is just perfect .\\n As everyone mentions, the location was perfect for sightseeing .\\n, very clean, quiet, bathrooms appear to have been updated recentlyThe hotel location is great .\\n The location is fab , near the Gloucester underground station and the Waitrose grocery store .\\nExcellent location shame about the service !\\n Fantastic location and local amenities i .\\n The location is great and the Tube station is very close .\\n good hotel for the price and location .\\n Apart from that, the staff were friendly and the location is great .\\n The location is incredibly convenient, with lots of restaurants and easily walkable to the tube .\\nThe single thing to recommend this hotel is the location, which is excellent .\\nThe location is EXCELLENT, just round the corner from the subway .\\n Friendly helpful staff, clean and comfortable rooms and not to mention its great location .\\nThis hotel is in a very good location , tube, buses, restaurants, shopping and museums all within very easy walking distance .\\n All in all, if you do not mind giving up the Euopean atmosphere, the Holiday Inn gives you a comfortable stay with the most convenient location .\\nLocation was great being only a few yards from the Gloucester Road tube on Piccadilly, Circle and District lines and was therefore an ideal base for our sight seeing visit .\\n Great location and can't beat the price and the comfort !\\n Since this location is the designated layover site for American Airlines, there were tons of pilots and flight attendants everywhere, but that added to the familiar feeling of having Americans around .\\n Pleasant staff, clean hotel, comfortable beds, with a great location .\\nGood Price Great Location Would definately stay there again !\\n Anyway it may not have the charm or history of other hotels in London, but for the price location we would visit again .\\nExcellent location clean but small .\\nThe best feature of this hotel is it's location .\\nThe location is perfect with many everything you need just outside the door including a great French patisserie and coffee shop .\\n Best part of all is the location, loved the Gloucester Road tube station nearby and the South Kensington area in general, very safe to walk around in any time day or night .\\n Gloucester Road tube station is at the westernmost side of zone 1, making it a perfect location between the airport and central London .\\nThe location of the hotel is superb , 2 minutes walk from Gloucester Road tube .\\n Location is hard to beat though .\\nThe hotel was clean, the beds were comfortable and the location was great .\\n Maybe I'm being a little harsh so if you can get this hotel at a good rate it is probably just about worth it, as it has an excellent location .\\nAwesome location comfortable rooms .\\nGreat service and perfect location !\\n I would definately recommed this hotel to anyone as it is unbeatable for price and location in London .\\n I wanted a good location, above all else, and this hotel fills that need .\\nFor a similarly good location , you can stay at the London Hilton Metropole for the same price and receive much better service .\\n It's a great location and the rooms are nice and clean and yes, a bit small but definately NOT tiny .\\n It's a great location VERY near the Gloucester Rd tube stop .\\n Perfect if you are going to see the sights in London, , great location to get around from, , right downtown .\\nA decent hotel with a great location .\\n The raves about the location are well deserved .\\n it's a solid property, with an amazing location !\\nAgain the location just can't be beat !\\nGreat Location , Just fine for our stay .\\nVery convenient location one block from Gloucester Road tube station .\\n It is in a very good location for catching the tube or the Hop On Hop Off bus tour .\\n The hotel caters to airline personnel, cruise tourists, and is a good choice for someone that wants to have a safe location .\\nGood location if you want to be near the Piccadilly line to Heathrow , but otherwise very average .\\nSolid Deal in a Great Location .\\nExcellent Hotel Excellent Location !\\nLocation wise it is a 5 min walk to the tube and you are on the circle, district and picadilly line .\\n The location is great though to get to the Tube and sites around West london and i got a good rate for the room .\\nThe top feature of The Holiday Inn Kensington Forum is its location, in a superb area of London that's clean, safe and interesting .\\nNot impressed at all and will not stay again despite good location .\\n But it's great value for money, great location, pleasant staff, good food, and we'll be staying there again .\\nWe thought this modern, efficient hotel was excellent value for such a great location in the heart of London .\\nGreat location great breakfast bathrooms tiny .\\n The location of the hotel is, as stated earlier, absolutely fine and well within walking distance of the V A, Natural History Museum, Science Museum and Hyde Park .\\n The location can't be beat , , a two, minute walk from the Gloucester Road tube stop .\\n Great location, close to a tube station with a 24 hour Tesco metro nearby .\\n Mother was very pleased with the location and convenience .\\n GREAT location and bargain internet price !\\n The rooms are a standard European size but they are kept spotlessly clean and the hotel couldn't be in a better location .\\nThe location of the hotel was brilliant , really nice area .\\n Still, if you're just looking for a cheap place to lay your head, the Holiday Inn Kensington Forum is a great location .\\n The location is fantastic, , you're literally around the corner from the Tube station there's a Sainsbury's supermarket right above the aforesaid Tube station .\\nAnother plus is its location , convenient to the tube, museums, shops, etc .\\nThis was our second stay stay at this hotel based on it's location .\\nb basis Hotel huge , 900 rooms Buffet breakfast good for a buffet This is a well run hotel with a great location for the metro Rooms a bit on the small side but I would stay again\\n The location is also good because it is literally 150 footsteps from Gloucester Road Underground Station .\\nI have stayed in a few hotels in London while touring but it would be difficult to find a better location in London for the tourist class who is looking for value, efficiency and cleanliness .\\n The location and American standards are nice touches .\\n The location was perfect, just a minute from the Gloucester Rd .\\n We were easily able to navigate the city from this location .\\n The hotel is clean, modern, and in an excellent location .\\n But we would definitely stay again because of the hotel's location .\\n Aside from that, the location is great and the furnishings were modern and very comfortable .\\nExcellent location and service .\\n The location is excellent, just a short walk from the Gloucester Road tube station and in a lovely neighborhood .\\n Overall an above average hotel based on location and price but not one for a romantic get, away !\\nLocation is fantastic , both on bus line and underground, with many useful stores on Gloucester Rd .\\nThis is a good basic hotel which has a terrific location .\\n, checked us in at 11 am after a transatlantic flight, room larger than average, compared to our continental Europe travel, location, location, location .\\n The location is right next to the Picadilly line tube stop, so it is very convenient to get around town and also to the airport .\\nGreat location, grocery store open 24 hours within 5 mins walk and friendly international staff, will stay here again .\\nGreat location , but executive room not worth it !\\nWe enjoyed our trip to London , and the location for the Holiday Inn Kensington Forum was terrific .\\nI do recommend the hotel , it was clean, excellent location, there was ice on the top floor along with one microwave, etc .\\n Right off of the Piccadilly and Circle tube lines, the location is excellent .\\n It is a relatively new hotel, clean and has a great location which is close to the underground with 3 connecting lines, it gives you an advantage to go anywhere without changing lots of trains .\\n Fantastic location right next to Gloucester Rd tube station .\\nExcellent location service cleanliness and price at the Holiday Inn Kensington Forum .\\n All in all great location , nice restaurants nearby, nicely pitched service .\\n Speaking of the tube, the location really is great 1 block away !\\n The location of the hotel is excellent .\\n Like others, I liked the location with restaurants, Glouster tube station, small grocery stores, , , and internet cafes within easy walking distance .\\nThe location of the hotel is excellent , one block from the tube Gloucester Rd and the surrounding neighborhood is fantastic , take a walk from High Street Kensington to the hotel , I'd love to live there !\\nGreat Hotel Great Location Great Value !\\n The biggest advantage of this hotel is it's excellent location just off of Gloucester Road in Kensington, with the Undergroud one block away, along with several nice restaurants and pubs in the area .\\n Although the location is a bit removed from the West End, it is only a block away from the Gloucester Road underground, with three train lines that will take you almost anywhere in the city in 15 minutes or less .\\ngreat location good but large tourist hotel .\\n The location is great and very convenient .\\nThe location is great but there are many hotels in the same area so I might try out others but would certainly consider coming back .\\nCan't beat the location, rooms, value and view !\\nGood Value Nice Hotel Fantastic Location .\\nHoliday Inn KF has a location that cannot be beat .\\n this is definitely the location you want .\\nGreat location loved the hotel .\\n The tube station is right there and the location is great for getting around London .\\n You could not beat the location or the price .\\n The price is moderate for the service and the location .\\nI will say this hotel is in a wonderful location, right across from the gloucester tube station and only a stop or two away from Notting hill, Harrods, and Kensington High street .\\nLocation is so convienent to the tube and grocery .\\n Other than room size, we were very happy with the hotel, especially its location .\\n Overall good hotel and very good location close to the tube .\\n The hotel has a great location with easy access to most of London's tourist sites .\\n The room is a tad small but is super clean and great location .\\n The price, the space, the location and the service were the exactly right thing we wanted .\\nYes I do stay here a lot and as such, guess that I get extra special treatment but it is in a great location with the tube within a 2 min walk surrounded by places to eat and drink and far enough out of central London to be quiet but you can still be in the west end in 15 minutes .\\nGREAT LOCATION COMFORTABLE HOTEL .\\nOutstanding location, even an internet cafe nearby .\\n the hotel is in a GREAT location .\\n Great location, freshly renovated, very small rooms, anonymous hotel, acceptable service .\\n The location couldn't be better in my opinion .\\nPrice and location can't be beat .\\n As said by others, an absolutely excellent location, on tube lines that will get you to just about anywhere .\\n The location could not have been better with being so close to the Underground station and near good restaurants, grocery stores, post office, pharmacy, Internet cafe .\\n The hotel is set in an absolutely ideal location, offers great rates, and excellent conceirge .\\n Great location, one block from the Gloucester Tube station with a number of acceptable restaurants in the area within walking distance .\\nBest location and unbeatable price !\\nThis is an awesome location right near the Gloucester Road tube stop .\\n Definitely stay here if you are on a budget , and even if not, it's still nice and the location is really the best !\\n A true bargain in the London hotel market, and a very convenient location adjacent to the Gloucester road underground station .\\nExcellent location but a couple of problems .\\n The location is excellent being a few minutes walk from Gloucester Road tube station with its good connection to Heathrow airport and to central London .\\nGreat choice in a great location .\\n The location could not be better , one block from the intersection of Cromwell and Gloucester Roads, with the Glouster Road tube stop .\\n I say fortunate because the location was perfect for my needs as a first, timer .\\n This is definitely a modern hotel, no English charm here, but the location and the price can't be beat .\\n The location could not be better and best of all it was so clean .\\n Everything worked well, was in good condition and the room was quiet in spite of the hotel's busy location .\\n Service was great and the location of the hotel was very convenient .\\nGreat room fabulous price wonderful location !\\n\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"cluster_label\",\n \"properties\": {\n \"dtype\": \"int32\",\n \"num_unique_values\": 1,\n \"samples\": [\n 1\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 67 + } + ] + }, + { + "cell_type": "code", + "source": [ + "document_df_subset = document_df[document_df['cluster_label']==2].sort_values(by='filename')" + ], + "metadata": { + "id": "yNkmHq31BGQy" + }, + "execution_count": 75, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "document_df_subset = document_df[document_df['cluster_label']==3].sort_values(by='filename')" + ], + "metadata": { + "id": "qrQyMgK2BJWs" + }, + "execution_count": 76, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "document_df [document_df[ 'cluster_label']==4].sort_values(by='filename')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "iJoeAkybBUjo", + "outputId": "55b0080d-8fab-474e-8434-14d056822998" + }, + "execution_count": 78, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " filename \\\n", + "19 accuracy_garmin_nuvi_255W_gps.txt \n", + "17 directions_garmin_nuvi_255W_gps.txt \n", + "5 display_garmin_nuvi_255W_gps.txt \n", + "39 satellite_garmin_nuvi_255W_gps.txt \n", + "44 speed_garmin_nuvi_255W_gps.txt \n", + "4 speed_windows7.txt \n", + "34 updates_garmin_nuvi_255W_gps.txt \n", + "43 voice_garmin_nuvi_255W_gps.txt \n", + "\n", + " opinion_text \\\n", + "19 , and is very, very accurate .\\n but for the most part, we find that the Garmin software provides accurate directions, whereever we intend to go .\\n This function is not accurate if you don't leave it in battery mode say, when you stop at the Cracker Barrell for lunch and to play one of those trangle games with the tees .\\n It provides immediate alternatives if the route from the online map program was inaccurate or blocked by an obstacle .\\n I've used other GPS units, as well as GPS built into cars and to this day NOTHING beats the accuracy of a Garmin GPS .\\n It got me from point A to point B with 100% accuracy everytime .\\n It has yet to disappoint, getting me everywhere with 100% a... \n", + "17 You also get upscale features like spoken directions including street names and programmable POIs .\\n I used to hesitate to go out of my directions but not any more .\\n the directions didn't tell me anything I didn't already know after fiddling with it for 10 minutes .\\n It also does not offer an option to view the route as a series of turn by turn directions .\\n It gives your heading not in terms of degres but only in terms of one of eight directions .\\nThe widescreen is a plus and I highly recommend it, even though it has the wide screen you can stick it in your back pocket which can be conveniently used for walking directions .\\nGarmin's nuvi 255W is a handy little device that pr... \n", + "5 3 quot widescreen display was a bonus .\\n This made for smoother graphics on the 255w of the vehicle moving along displayed roads, where the 750's display was more of a jerky movement .\\n I also found that the display on the 255w was a bit brighter, clearer, and more vivid than on the 750 in both daylight and at night .\\n The 750 just displays text on the top line for upcoming turns without the arrow .\\n The 255 also automatically adjusts the font size of displayed text so that even lengthy text will fit .\\nAnother feature on the 255w is a display of the posted speed limit on the road which you are currently on right above your current displayed speed .\\nThe 255W has a really clear di... \n", + "39 It's fast to acquire satellites .\\n If you've ever had a Brand X GPS take you on some strange route that adds 20 minutes to your trip, has you turn the wrong way down a one way road, tell you to turn AFTER you've passed the street, frequently loses the satellite signal, or has old maps missing streets, you know how important this stuff is .\\n The Garmin Nuvi 255W connects to satellites extremely fast, , So when I get in my car and turn it on, we're pretty much ready to go immediately .\\nIt picks up the satellites quickly , routes fast, has good animation maybe 6, 8 frames a second ?\\n The revised chipset allows the GPS to make satellite connections quickly .\\n The unit takes very qui... \n", + "44 Another feature on the 255w is a display of the posted speed limit on the road which you are currently on right above your current displayed speed .\\n I found myself not even looking at my car speedometer as I could easily see my current speed and the speed limit of my route at a glance .\\nMy final decision was to keep the 255w and return the 750 because I really liked the graphic turn indicator and the posted speed limit and current speed indicators .\\n It even tells you the speed limit on most roads .\\n The new display posts speed limit signs of major roads flush left on the screen, which is a new feature that is also really helpful, if you're driving in an unfamiliar area .\\n Display ... \n", + "4 Windows 7 is quite simply faster, more stable, boots faster, goes to sleep faster, comes back from sleep faster, manages your files better and on top of that it's beautiful to look at and easy to use .\\n, faster about 20% to 30% faster at running applications than my Vista , seriously\\n Yes, it'll make your computer run a bit slower but\\n, Fast startup and performance\\n Also, in my non, benchmarked experience, Windows 7 has been at least as fast as XP if not faster .\\n It's fast, secure, stable, visually appealing and fun to use .\\n For these two computers, normal use is pretty fast, , not quite as fast as Windows XP SP3, but very close .\\nIt loads blazing fast, software runs smooth a... \n", + "34 Another thing to consider was that I paid $50 less for the 750 and it came with the FM transmitter cable and a USB cord to connect it to your computer for updates and downloads .\\n update and reroute much _more_ quickly than my other GPS .\\nUPDATE ON THIS , It finally turned out that to see the elevation contours at lower zoom levels you have to reduce the amount of detail displayed .\\n it's a curiousity for most of us, traffic and content updates .\\nThe text to speech is great for not having to look down at the screen endangering yourself and others on the road and after the voice updates the Garmin put out for the 255W the scratchiness and robotic sounding voice became crisp and... \n", + "43 The voice prompts and maps are wonderful especially when driving after dark .\\nI also thought the the voice prompts of the 750 where more pleasant sounding than the 255w's .\\n The 750 sounds more like a real female voice, where the 255w sounds more robotic .\\n I didn't have the problems with the sounds of the voices like others have .\\nSome of the voices are annoying .\\n My understanding is that Garmin really compressed the voice in this unit, far more than in previous units .\\n I like my older unit better , better voice quality and it simply tells you how far to the next turn and what direction to turn .\\n The quality of the voice leaves a bit to be desired .\\nThe text to speech is... \n", + "\n", + " cluster_label \n", + "19 4 \n", + "17 4 \n", + "5 4 \n", + "39 4 \n", + "44 4 \n", + "4 4 \n", + "34 4 \n", + "43 4 " + ], + "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", + "
filenameopinion_textcluster_label
19accuracy_garmin_nuvi_255W_gps.txt, and is very, very accurate .\\n but for the most part, we find that the Garmin software provides accurate directions, whereever we intend to go .\\n This function is not accurate if you don't leave it in battery mode say, when you stop at the Cracker Barrell for lunch and to play one of those trangle games with the tees .\\n It provides immediate alternatives if the route from the online map program was inaccurate or blocked by an obstacle .\\n I've used other GPS units, as well as GPS built into cars and to this day NOTHING beats the accuracy of a Garmin GPS .\\n It got me from point A to point B with 100% accuracy everytime .\\n It has yet to disappoint, getting me everywhere with 100% a...4
17directions_garmin_nuvi_255W_gps.txtYou also get upscale features like spoken directions including street names and programmable POIs .\\n I used to hesitate to go out of my directions but not any more .\\n the directions didn't tell me anything I didn't already know after fiddling with it for 10 minutes .\\n It also does not offer an option to view the route as a series of turn by turn directions .\\n It gives your heading not in terms of degres but only in terms of one of eight directions .\\nThe widescreen is a plus and I highly recommend it, even though it has the wide screen you can stick it in your back pocket which can be conveniently used for walking directions .\\nGarmin's nuvi 255W is a handy little device that pr...4
5display_garmin_nuvi_255W_gps.txt3 quot widescreen display was a bonus .\\n This made for smoother graphics on the 255w of the vehicle moving along displayed roads, where the 750's display was more of a jerky movement .\\n I also found that the display on the 255w was a bit brighter, clearer, and more vivid than on the 750 in both daylight and at night .\\n The 750 just displays text on the top line for upcoming turns without the arrow .\\n The 255 also automatically adjusts the font size of displayed text so that even lengthy text will fit .\\nAnother feature on the 255w is a display of the posted speed limit on the road which you are currently on right above your current displayed speed .\\nThe 255W has a really clear di...4
39satellite_garmin_nuvi_255W_gps.txtIt's fast to acquire satellites .\\n If you've ever had a Brand X GPS take you on some strange route that adds 20 minutes to your trip, has you turn the wrong way down a one way road, tell you to turn AFTER you've passed the street, frequently loses the satellite signal, or has old maps missing streets, you know how important this stuff is .\\n The Garmin Nuvi 255W connects to satellites extremely fast, , So when I get in my car and turn it on, we're pretty much ready to go immediately .\\nIt picks up the satellites quickly , routes fast, has good animation maybe 6, 8 frames a second ?\\n The revised chipset allows the GPS to make satellite connections quickly .\\n The unit takes very qui...4
44speed_garmin_nuvi_255W_gps.txtAnother feature on the 255w is a display of the posted speed limit on the road which you are currently on right above your current displayed speed .\\n I found myself not even looking at my car speedometer as I could easily see my current speed and the speed limit of my route at a glance .\\nMy final decision was to keep the 255w and return the 750 because I really liked the graphic turn indicator and the posted speed limit and current speed indicators .\\n It even tells you the speed limit on most roads .\\n The new display posts speed limit signs of major roads flush left on the screen, which is a new feature that is also really helpful, if you're driving in an unfamiliar area .\\n Display ...4
4speed_windows7.txtWindows 7 is quite simply faster, more stable, boots faster, goes to sleep faster, comes back from sleep faster, manages your files better and on top of that it's beautiful to look at and easy to use .\\n, faster about 20% to 30% faster at running applications than my Vista , seriously\\n Yes, it'll make your computer run a bit slower but\\n, Fast startup and performance\\n Also, in my non, benchmarked experience, Windows 7 has been at least as fast as XP if not faster .\\n It's fast, secure, stable, visually appealing and fun to use .\\n For these two computers, normal use is pretty fast, , not quite as fast as Windows XP SP3, but very close .\\nIt loads blazing fast, software runs smooth a...4
34updates_garmin_nuvi_255W_gps.txtAnother thing to consider was that I paid $50 less for the 750 and it came with the FM transmitter cable and a USB cord to connect it to your computer for updates and downloads .\\n update and reroute much _more_ quickly than my other GPS .\\nUPDATE ON THIS , It finally turned out that to see the elevation contours at lower zoom levels you have to reduce the amount of detail displayed .\\n it's a curiousity for most of us, traffic and content updates .\\nThe text to speech is great for not having to look down at the screen endangering yourself and others on the road and after the voice updates the Garmin put out for the 255W the scratchiness and robotic sounding voice became crisp and...4
43voice_garmin_nuvi_255W_gps.txtThe voice prompts and maps are wonderful especially when driving after dark .\\nI also thought the the voice prompts of the 750 where more pleasant sounding than the 255w's .\\n The 750 sounds more like a real female voice, where the 255w sounds more robotic .\\n I didn't have the problems with the sounds of the voices like others have .\\nSome of the voices are annoying .\\n My understanding is that Garmin really compressed the voice in this unit, far more than in previous units .\\n I like my older unit better , better voice quality and it simply tells you how far to the next turn and what direction to turn .\\n The quality of the voice leaves a bit to be desired .\\nThe text to speech is...4
\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\": \"document_df [document_df[ 'cluster_label']==4]\",\n \"rows\": 8,\n \"fields\": [\n {\n \"column\": \"filename\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 8,\n \"samples\": [\n \"directions_garmin_nuvi_255W_gps.txt\",\n \"speed_windows7.txt\",\n \"accuracy_garmin_nuvi_255W_gps.txt\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"opinion_text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 8,\n \"samples\": [\n \" You also get upscale features like spoken directions including street names and programmable POIs .\\n I used to hesitate to go out of my directions but not any more .\\n the directions didn't tell me anything I didn't already know after fiddling with it for 10 minutes .\\n It also does not offer an option to view the route as a series of turn by turn directions .\\n It gives your heading not in terms of degres but only in terms of one of eight directions .\\nThe widescreen is a plus and I highly recommend it, even though it has the wide screen you can stick it in your back pocket which can be conveniently used for walking directions .\\nGarmin's nuvi 255W is a handy little device that provides excellent value, but more importantly spot on directions .\\n While I recommend that you refrain from entering a directions request while driving your car, I note that some of the more impressive features of this GPS are literally one touch away, and so mounting the device close enough to you to activite a one touch feature would seem to be relatively important .\\n But leaving it on the seat next to you is likely to cause a few double takes because as comfortable as you think you're going to be just listening for directions, the fact remains that the graphics will attract your eyeballs like a moth to a flame .\\n I've found the directions in major metropolitan areas to be excellent .\\n but for the most part, we find that the Garmin software provides accurate directions, whereever we intend to go .\\nAnother screen at the touch of the button will show you the turn by turn directions coming up so that you can plan even better, especially in areas that you have just enough familiarity to be considered dangerous .\\nI like how the Garmin 255W doesn't make you type in complete directions when it isn't necessary .\\nThe only other annoyance of any time is that if you deviate from your route and don't indicate that you are detouring, you get to hear the Garmin repeatedly chastize you because it has to recalulate your directions .\\n No more firing up the computer, going to the site, printing the directions .\\n It speaks the directions so that you don't have to keep looking down at a piece of paper .\\n It allows for detours with directions on how to get back .\\n Saves mobile phone minutes, because you don't have to call and ask for directions .\\nTraffic directions are as good and detailed as can be, as you would expect from a Garmin, and less intrusive than on some other brands .\\nIn closing, this is a fantastic GPS with some very nice features and is very accurate in directions .\\n The sound is tolerable, but when you are hearing spoken directions a lot, it gets really annoying .\\n However, the TTS gave me few wrong directions during my trip to NY city .\\n0 out of 5 stars gives strange directions, July 6, 2009\\n The directions are highly accurate down to a T .\\n Depending on what you are using it for, it is a nice adjunct to a travel trip and the directions are accurate and usually the quickest, but not always .\\n I tend to be a technological idiot but I figure this out, right out of the box and I hadn't even read the directions yet, , this is major easy .\\n Gives you immediate directions to get to the location you chose to set up as your home location .\\n Allows you to type in two street names, and if they intersect, the GPS unit will give you directions to that intersection .\\n You can touch anywhere on the map and press GO for directions to that location .\\n Shows you your current latitude and longitude location, and allows you to enter new coordinates to set up so you can get directions to that location .\\n If you missed the spoken directions, you can look at the top of the screen for written directions .\\n However, I much prefer robotic voices to no spoken directions at all .\\nSome of the verbal directions :\\n It should tell me to take the Southwest Drive exit, or the Buffalo Gap Road exit, like the highway sign says, or like I would verbally tell someone to take if giving them directions .\\n So, although the Nuvi doesn't verbalize those directions, I can look at the screen to see the exit I need to take .\\nDirections seemed to focus on Interstate travel and I have not played with the device enough to know if it can be set to avoid Interstates .\\nIt lost satellite contact a couple of times on the trip but apparently picked them up again because there were no skipped directions .\\nDirections were easy to see and understand .\\n The spoken directions are generally easy to understand .\\n Since the directions are also displayed on the screen, I find the occasional mispronunciation entertaining and not an issue .\\n It does know when you are not near a public road but it cannot give directions to the road .\\n The spoken turn, by, turn directions are clear and very timely .\\n My only real gripes on the software interface side would be its inability to show 1, way streets on your overhead map and that this particular model does not support the Garmin routing feature that you can sync between your PC and their more expensive models to pick multiple waypoints instead of just a point 'A' to point 'B' directions system .\\n You can even get turn, by, turn directions from the program, and Google Maps has features that work with Garmin units .\\n Any time you're facing a closed roadway or are terribly stuck in highway traffic, you'll get a very slick change in directions to your destination given to you in literally less than 5 seconds than you ask for it .\\n button, and it gave us directions right to Carmel .\\n The purpose of the GPS is to give me directions in unfamiliar locations .\\nThe voice directions are great, but sometimes it mispronounces names .\\nIt takes a little while to get the satellites sometimes, but I just set it up as soon as I get in the car and by the time I'm out on the road and actually need directions it's up and going .\\n I had a great time torturing the poor thing and deliberately not following its directions while driving one day in downtown Sacramento .\\nAs with the 285WT, it gave me bad directions in one place in Sacramento .\\n I avoided the more complex ones as I had read that FM updates can confuse the device and changing directions after the obstruction has been cleared is not a good option .\\nI like being able to select different voices, however when I am using Daniel with the English accent, he seems to be clearing his throat at the end of his directions .\\n It loads quickly, have pretty accurate directions, and can recalculate quickly when I miss a turn .\\n Often when I'd get a phone call or was talking to someone, it would have been nice to just have the ability to quickly make the voice directions mute .\\n The directions were pretty right on, with a brief glitch with the distance it was calculating for some approaching streets .\\n I am sure I've not even touched upon the many features this GPS boasts, but for basic travel directions for the non, techie then this is a great product .\\n My daughter would then call my wife, asking her to plot a course using a mapping Web site and recite the directions .\\n Daughter Dearest now carries the Nuvi in the glove box of her car, pulling it out, plugging it in, and getting directions whenever she needs, in a manner that notably is much faster and clearer than reading a map or calling her mother .\\n When it comes to directions, I'm horrible .\\n There are different voices you can choose to give you your directions, even Australian, American and British English .\\n I mainly bought the first one for my wife since she needs directions alot of the time .\\n It worked so well that people from the wedding were following me for directions .\\n In the week that I have had it, it's been spot on in providing directions and keeps up with the speed I am traveling .\\n The Voice Prompted turn by turn directions make it easy to get from one place to another without having to look up at the GPS, but of course you also get turn, by, turn directions on the GPS with a touch of the screen .\\n Amazon had the best price for this model which I chose for its ability to adjust the directions if you reroute, text to speech feature and 4 .\\nFor the first time in several years, my husband & I took a roadtrip with no squabbling about directions .\\n Directions and maps are easy to use, and if you miss a turn, it updates your route in seconds .\\n It has worked well for local driving giving accurate directions for roads and streets .\\n I was so tired of having to go to Mapquest and print out directions .\\n The voice directions give you fair warning when you are about to take a turn, which is really important .\\nWhat the 255w does best is find a street address, business, point of interest, hospital or airport and give you turn, by, turn directions with amazing accuracy .\\n I would have struggled to find with my usual combination of maps and Web, based directions .\\n The directions the GPS gave me were absolutely correct , but the name of the highway was wrong .\\n Wish I had bought it about two years ago rather than spend a lot on maps and wasting time asking directions, especially in relatively remote areas of ME .\\n I spent 2 weeks driving around the Mid, West following Mapquest maps and directions .\\n I chose small towns as destinations and it always led me there without any problems, thus allowing me to enjoy the scenery of the fall foliage without worrying about using a map for directions or getting lost .\\n I use the map feature when I don't need directions which makes it easier to identify streets when street signs are obscured or missing .\\nOn the negative side, the directions it gives to a given address are not always the best way to get there .\\n0 out of 5 stars MyOn, StarDirectionsReplacementUnit, October 15, 2009\\nMy new Garmin 255w had very Easy Set Up, Accurate Directions to locations, User Friendly Unit to anyone in my vehicle who tried it .\\n This unit has replaced my GM On, Star Directions unit in my vehicle .\\n directions routing are perfect .\\n spoken directions are crystal clear .\\n Practiced visiting places I already knew to see how accurate the directions and maps would be .\\n The directions provided have all been quite accurate thus far .\\n No more stopping at so and so gas stations for directions .\\n Map is bright and detailed, voice directions are clear and loud .\\n It can be a little distracting the first few times you use it, but once you find the right mounting spot, it s like it's not there until you need it and then it's there waiting for you to with all the directions to get you to your destination .\\n I had no trouble with the volume level of the spoken directions either and found it to be an interesting and helpful tool .\\n Several voice options will announce both directions and street names, etc .\\nAfter a certain amount of frustration dealing with paper maps, missed exits and fumbling for directions in the dark , I decided it was time to get on the GPS car navigation wagon .\\n Also, there is there no asking for directions from passengers like spouses and children who have difficulty reading conventional paper maps .\\nOthers have said that the voice directions leave something to be desired in terms of volume and clarity .\\n It was accurate on determing original directions and recalculating when necessary .\\n But driving on the highway with music on and windows down, it will be hard to hear the directions using just 70% of volume .\\n I didnt know the address of the mueseum so I typed it into the unit and it found not only the meuseum, but the nearest garage, the places to eat, and directions were right ON .\\nThe display is very easy to read, and the directions were very good .\\n The model 255W that we received seemed to take longer to find a satelite, and the man's voice was very fast and not as clear, and at times seemed a bit confused in directions .\\n\",\n \"Windows 7 is quite simply faster, more stable, boots faster, goes to sleep faster, comes back from sleep faster, manages your files better and on top of that it's beautiful to look at and easy to use .\\n, faster about 20% to 30% faster at running applications than my Vista , seriously\\n Yes, it'll make your computer run a bit slower but\\n, Fast startup and performance\\n Also, in my non, benchmarked experience, Windows 7 has been at least as fast as XP if not faster .\\n It's fast, secure, stable, visually appealing and fun to use .\\n For these two computers, normal use is pretty fast, , not quite as fast as Windows XP SP3, but very close .\\nIt loads blazing fast, software runs smooth and even downloads from the internet seem to be faster .\\n XP SP3 Performance Comparison , smaller resource footprint, and faster start shutdown wake times .\\nOther than that, it starts up pretty fast .\\n Its faster to load, easier to use, and it has a new feature called the library where you can access all your related files in one window .\\n Performance wise it is slightly faster than Vista and I'm talking 10 to 15 seconds difference for starting the computer, other computers I have the run on Linux still start in less than 1 quarter the time that Windows 7 does .\\n If you have newer hardware, 64, bit is probably the way to go as it is faster and will allow you to take advantage of more than 3 .\\n Installation took about 30 minutes, actually much faster than any other OS install I've ever done .\\n Overall the OS just 'feels' faster, snappier, and easier to use .\\n If you want a stable, fast, visually appealing and advances OS, W7 will not disappoint .\\n It does boot up faster than Vista, I do like the taskbar at the bottom as you can pin icons to start all of your programs and you can start a program with the desired file opening .\\nAlthough Win 7 seems a bit faster than Vista did, I do not notice any decrease in the start, up time .\\nIt may be that Win7 is faster, sounder, prettier, etc .\\n Yes the comp does boot a bit faster, but it's going to take a lot sequences to break even on the time spent so far .\\n It may or may not be a little faster .\\n W7 is fast and resource friendly, every hardware device works perfect , and there's a ton of great features .\\n My system seems to be faster, all of my previous programs and peripherals run without a problem, things come up quicker when clicking on them and I love the new look .\\n How about allowing the user to keep the menu open so thathe she doesn't have to repeatedly click to open it if there's a failure or the connection is to slow ?\\n1 Very fast SDHC scanning speed in comparison to vista and xp big headache relief .\\n It might do that on vista but I got the trojans recently and haven't been using vista as much since it's on a slow HP mini netbook that gets sickeningly hot to the touch .\\n5 Seems to load the desktop much faster than vista, but it might be because I have 2 gigs of ram on my w7 netbook and only 1 on my vista one .\\nThis is much faster than visata and I love it .\\nSome of the things I like most about Windows 7 is how fast it boots up and shuts off .\\n When I ran Vista, it was a bit slower .\\n But Windows 7 is definitely faster !\\n It is also way faster than what I experience using Windows XP, but I won't get into that .\\nIt is more stable than Vista and wakes up from sleep much faster, also boots faster .\\nIt boots faster and shuts down faster than XP .\\nXP Mode worked on everything I had except an Honestech analog video capture device, but seemed to be slower .\\n I like many other people, was running Vista and tired of it being so slow and crashing .\\n As far as speed, I will admit that its not as fast as XP .\\n The speed at which the upgrade completed is quite fast and the driver hardware detection was seamless .\\n The machines run as fast as ever with new functionality and better stability .\\n fast, stable, compatible, and cool .\\nIt is as fast as Vista if not faster .\\n It's very stable, it seems significantly faster than Vista, and it has got rid of most of the redundant security conformation dialogs .\\n Programs load and run faster than ever .\\n Windows 7 is also faster in the core of the operating system .\\n The operating system loads faster, shuts off faster and so far has need a 3 finger salute , control alt delete about as often as Vista .\\n I do note this computer is running much faster but part of that may well be that it now has 4 gb of memory as opposed to 3gb\\n All the applications that I checked worked OK, although Photoshop opened slowly .\\n Several improvements, and it does seem faster .\\n , RW | Creative Sound Blaster Audigy 4 | MOTU FastLane USB MIDI interface | E, MU 0404 USB audio interface | Yamaha YST, M15 speakers | HP Photosmart 8150 printer | HP Scanjet 4070 scanner | D, Link DIR, 628 router | Microsoft Natural Keyboard & Optical Mouse | Logitech RumblePad 2 | Windows 7 Home Premium x64\\nAlso it starts faster and runs things faster .\\n34 seconds faster will make a HUGE difference .\\nI installed the 64bit version and it made my computer respond a lot faster .\\n I can finally use adobe CS4, before with Vista 32bit photoshop cs4 wouldn't run so smoothly as cs3 but now it opens faster and is just working great .\\n I ordered the upgrade disc from HP and tried 3 times to upgrade to Vista, but all 3 times I had problems with it being too slow, buggy, and my software games printer didn't work .\\n It's as fast as XP, and all my software and hardware work great !\\n It's a faster install, and you get a fresh clean install so it feels like a new computer .\\n My system boots much faster, and shuts down almost instantly now .\\nit's fast, very organized and just plain and simple witty .\\n Also connect time is way faster .\\n Finding and configuring is way more intuitive, start up and shut down is faster, and best of all, that damn hard drive light is not always on .\\n I have been running Win7 for a week now and and it is at least twice as fast as Win2K .\\n I have to say it was the smoothest, fastest, and easiest install since doing a DOS install .\\n Applications are noticeably faster , especially Quicken 09, Outlook 07 .\\n It boots faster, the programs run faster and the overall performance has been nothing short of amazing .\\n Vista had all of its upgrades and worked fine, but did not connect to the internet as fast .\\n It operates much faster, starts up faster, and rarily freezes up like the worthless Vista .\\n W7 does everything so much faster also .\\n0 out of 5 stars Fast Shipment and Excellent Value, December 17, 2009\\n The install took a little more time than I had expected, and encouraged backup of all data which slowed things down more, but went very smoothly .\\n I have been operating for two months with no problems not much different than Vista, but much faster to load and turn off .\\n0 out of 5 stars Faster performance, December 13, 2009\\n With 7, however, things have become a lot smoother and faster .\\n Based on speed and performance, it does deliver for it is pretty fast when opening programs, boot time, hibernation, etc .\\nWindows 7 is overall faster than Windows XP .\\n I cannot say that the system is significantly faster, or that boot or shutdown times are significantly improved, but I did not expect that .\\nIt made my system faster which i didn't think was possible, it has a more creative appeal, i didn't lose any of my important files and the installation went smoothly and without any kinks whatsoever\\nWindows 7 is fun, fast and creative, , it finally gave a newer more interesting look to the paint program and i have no issues at all\\n My notebook runs so much faster .\\nI admit Windows 7 performs faster than Vista as a whole .\\n, Superfast file movement over a network .\\nWe have a 5 year old laptop that we were about to throw away because it was too slow running XP .\\n Someone commented that maybe it was just faster because I cleaned out the bloatware that was on the old XP system .\\n Previously we tried to make the laptop faster by installing XP from scratch .\\n Now Window 7 runs smoothly, 10, 20% faster overall .\\n, opening applications is very slow .\\n I am not seeing a faster boot up or shut down at this point .\\n It's a bit faster than Vista and I really like the new taskbar and simplified menus .\\n Windows 7 home premium eliminates almost all of these and is much faster well worth the upgrade if you are going to keep your computer for a while .\\n It's nice to finally have a Windows OS that is fast, fun, stable, functional, and good looking .\\n Very robust and extremely fast, I can find and open programs or files by just hitting window on the keyboard and typing in the first few letters of the thing I want to open and Win7 almost instantaneously finds what I'm looking for .\\n Win7 looks great and feels fast .\\n faster than XP in many areas on my system .\\n Web apps are noticeably slower .\\n I had not experience any weird chokes or slowness that I had experienced in Vista .\\nWin7 runs faster than Vista, and is more intuitive .\\nIn short, Win7 feels faster, leaner, and more user, friendly than Vista did .\\nEverything from the internet to Photoshop runs faster .\\nMy Vista system was awful , slow and painful .\\n It does shut down MUCH faster and MOST of my hardware seems to work .\\n Upgrading over your old OS can cause problems and slow things down .\\nOther than that, seems very fast and works well and worth the $50 upgrade .\\n The upgrade process was simple, fast, and went perfectly .\\n Boot, hibernation, sleep, and restart procedures are much slower than XP .\\n It makes it a lot easier to find what you are looking for and is just all around faster .\\nmicrosoft has created a great os, easy,fast and fun to use .\\nNow my PC is really extremelly fast .\\n My laptop starts and shuts down so much faster than with Vista .\\n I say my start up was cut down by half the previous time and it closes even faster .\\nThere are less steps to get to files, every application opens faster even desktop gadgets seem to function better .\\nI'm been using Windows 7 since its inception I upgraded from beta to RC to finally RTM and I can tell you right now it is fast and reliable .\\n Boot up of the Operating System is slower in the RTM for whatever reason but on newer hardware it is pretty fast .\\n Obviously compared to XP you know it will be slower going in but I am very happy with the operating system .\\n It's fast, it doesn't crash, and the interface is clean and far more Mac, like than any previous OS from M$ .\\n I own XP Professional and wanted a nice, clean install of Win7 so I didn't have a bunch of legacy files hanging around to slow down Win7 so I reformatted the HD before doing the Win7 install .\\n It is very fast and very user friendly .\\nAlthough most are saying that the start up is faster I happen to disagree, I feel its about the same .\\n It takes a little work to setup and doesn't run you application as fast as they would natively .\\n You need a faster CPU and extra memory if you plan on using this a lot .\\nI am very happy with the program, it is much faster, I upgraded from Windows xp, the bad part is there is no driver available to install for my HP wireless printer to work .\\n0 out of 5 stars Windows 7 runs slower than Vista, December 15, 2009\\nSince putting Windows 7 on my computer, the computer runs much slower than it did with Vista .\\nSo I just got the Windows 7 upgrade installed , and I was instantly amazed at how fast and sleek everything looked .\\nSimply put, Windows 7 looks amazing, and is fast and intuitive .\\n I started to upload a youtube video, went away to have breakfast and came back to a blue screen of death .\\n\",\n \", and is very, very accurate .\\n but for the most part, we find that the Garmin software provides accurate directions, whereever we intend to go .\\n This function is not accurate if you don't leave it in battery mode say, when you stop at the Cracker Barrell for lunch and to play one of those trangle games with the tees .\\n It provides immediate alternatives if the route from the online map program was inaccurate or blocked by an obstacle .\\n I've used other GPS units, as well as GPS built into cars and to this day NOTHING beats the accuracy of a Garmin GPS .\\n It got me from point A to point B with 100% accuracy everytime .\\n It has yet to disappoint, getting me everywhere with 100% accuracy .\\n0 out of 5 stars Honest, accurate review, , PLEASE READ !\\n Aside from that, every destination I've thrown at has been 100% accurate .\\nIn closing, this is a fantastic GPS with some very nice features and is very accurate in directions .\\n Plus, I've always heard that there are quirks with any GPS being accurate, having POIs, etc .\\n DESTINATION TIME, , This is pretty accurate too .\\n But, it's always very accurate .\\n The map is pretty accurate and the Point of interest database also is good .\\n Most of the times, this info was very accurate .\\nI've even used it in the pedestrian mode, and it's amazing how accurate it is .\\n ONLY is only accurate when an ad says, Top sirloin steak, ONLY $1 .\\n The most accurate review stated that these machines are adjunct to a good map and signs on the interstate .\\n The directions are highly accurate down to a T .\\n Depending on what you are using it for, it is a nice adjunct to a travel trip and the directions are accurate and usually the quickest, but not always .\\n The screen is easy to see, the voice tells you where you are and it's very accurate .\\n It was accurate to the minute when it told me when I would arrive home .\\n0 out of 5 stars GPS Navigator doesn't navigate accurately on a straight road .\\n I was familiar with the streets and only used the Nuvi to get an accurate arrival time estimate .\\n but after that it is very easy and quite accurate to use .\\n The accuracy at this point is very good .\\nWhile the 255W routing seems generally accurate and logical, on my first use I discovered that it does have some errors in its internal map .\\n Bottom line is I wanted a unit that is accurate and had reliable satellite connection .\\n I've used it around town and find it to be extremely accurate .\\nI found the maps to be inaccurate at first, but after I updated them from Garmin's website everything is golden .\\n A lot of my friends' addresses are inaccurate by any GPS .\\n It loads quickly, have pretty accurate directions, and can recalculate quickly when I miss a turn .\\n Because the accuracy is good to the street address level, it may not be able to guide you to the exact location if your destination is inside a shopping mall .\\nI updated to the latest 2010 map soon after I received the unit, so the map is accurate to me .\\n I was blown away at the accuracy and routing capability this thing had .\\n I used it the day I bought it, and then this morning, and as soon as it comes on it is ready to navigate The only downfall of this product, and the only reason I did not give it 5 stars is the fact that the speed limit it displays for the road you are on isn't 100% accurate .\\n If your looking for a nice, accurate GPS for not so much money, got with this one .\\n0 out of 5 stars Inexpensive, accurate, plenty of features, August 6, 2009\\n The only glitch I have found so far is that the speed limits are not 100% accurate, although the GPS, amazingly, is able to very accurately tell you how fast your vehicle is moving .\\n I was a little disappointed in the inaccuracy of the posted speed limit, as I'm guilty of not paying close enough attention to those signs, especially w interstate speed traps that are constantly changing up and down .\\n The closest one that gives the most accurate route that I usually take is the Navigon .\\n After 2 weeks, it has yet to make a mistake, and is always completely accurate , even to the point of telling me which side of the street my destination is on .\\n It has worked well for local driving giving accurate directions for roads and streets .\\nThe estimated time to arrival does not seem to calculate the travelling time accurately .\\nAccuracy is as good as any other unit, they all sometimes tell you you have arrived when you haven't, or continue to tell you to turn when you're already there .\\n Accuracy is determined by the maps .\\n Less traveled rural roads will not be accurate on any unit .\\n Accuracy is within a few yards .\\nWhat the 255w does best is find a street address, business, point of interest, hospital or airport and give you turn, by, turn directions with amazing accuracy .\\n The Garmin is loaded with very accurate maps that generally know the roads in even the remotest areas .\\nI'm really glad I bought it though, and like the easy to read graphics, the voice used to tell you the name of the street you are to turn on, the uncannily accurate estimates of mileage and time of arrival at your destination .\\nMy new Garmin 255w had very Easy Set Up, Accurate Directions to locations, User Friendly Unit to anyone in my vehicle who tried it .\\n I had a GPS 10, years ago when I owned a boat that was difficult to use and with very poor accuracy so I had assumed that the road GPS wasn't any better .\\n Practiced visiting places I already knew to see how accurate the directions and maps would be .\\n Easy to use, excellent accuracy, nice and intuitive interface .\\n The directions provided have all been quite accurate thus far .\\n, Very Accurate but with one small glitch I found , I'll explain in the CONS\\nThis is a great GPS, it is so easy to use and it is always accurate .\\nVery easy to operate and pretty accurate as well, only led me astray once and that was in northern Maine where roads are few and paved ones fewer .\\n Easy to use and amazed at how accurate this item is .\\nTo date it's been a very easy to use and accurate .\\n Mounted really easily and has been very accurate .\\n seems to be rather accurate .\\n It was accurate on determing original directions and recalculating when necessary .\\nHighly accurate, POIs are great .\\n I can't believe how accurate and detailed the information estimated time of arrival,speed limits along the way,and detailed map of my route, to name a few .\\n Speed of calculation, accuracy, and simplicity of operation are top notch .\\n\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"cluster_label\",\n \"properties\": {\n \"dtype\": \"int32\",\n \"num_unique_values\": 1,\n \"samples\": [\n 4\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 78 + } + ] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.cluster import KMeans\n", + "\n", + "km_cluster = KMeans(n_clusters=3, max_iter=10000, random_state=0)\n", + "km_cluster.fit(feature_vect)\n", + "cluster_label = km_cluster.labels_\n", + "\n", + "document_df['cluster_label'] = cluster_label\n", + "document_df = document_df.sort_values(by='cluster_label')" + ], + "metadata": { + "id": "iCxbU2mqBbIr" + }, + "execution_count": 79, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "# 군집별 핵심 단어 추출하기" + ], + "metadata": { + "id": "Ol7tmX7nBdzh" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "cluster_centers = km_cluster.cluster_centers_\n", + "print('cluster_centers shape:', cluster_centers.shape)\n", + "print(cluster_centers)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "smmtV4EaBhi1", + "outputId": "969e4799-ad6e-4168-acc1-8a3c69395bbd" + }, + "execution_count": 80, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "cluster_centers shape: (3, 5804)\n", + "[[0.00112003 0.00098669 0. ... 0. 0. 0. ]\n", + " [0.0006186 0.00106686 0. ... 0.00162313 0.00138743 0.00138743]\n", + " [0.00114568 0.001023 0.00127108 ... 0. 0. 0. ]]\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "def get_cluster_details(cluster_model, cluster_data, feature_names, clusters_num, top_n_features=10):\n", + " cluster_details = {}\n", + " centroid_feature_ordered_ind = cluster_model.cluster_centers_.argsort()[:, ::-1]\n", + "\n", + " for cluster_num in range(clusters_num):\n", + " cluster_details[cluster_num] = {}\n", + " cluster_details[cluster_num]['cluster'] = cluster_num\n", + "\n", + " top_feature_indexes = centroid_feature_ordered_ind[cluster_num, :top_n_features]\n", + " top_features = [feature_names[ind] for ind in top_feature_indexes]\n", + " cluster_details[cluster_num]['top_features'] = top_features\n", + "\n", + " top_feature_values = cluster_model.cluster_centers_[cluster_num, top_feature_indexes].tolist()\n", + " cluster_details[cluster_num]['top_feature_values'] = top_feature_values\n", + "\n", + " cluster_member_indices = (cluster_data == cluster_num).nonzero()[0]\n", + " cluster_details[cluster_num]['file_indices'] = cluster_member_indices.tolist()\n", + "\n", + " return cluster_details" + ], + "metadata": { + "id": "cXrPNVJDBkov" + }, + "execution_count": 81, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "def get_cluster_details(cluster_model, cluster_data, feature_names, clusters_num, top_n_features=10):\n", + " cluster_details = {}\n", + " centroid_feature_ordered_ind = cluster_model.cluster_centers_.argsort()[:, ::-1]\n", + "\n", + " for cluster_num in range(clusters_num):\n", + " cluster_details[cluster_num] = {}\n", + " cluster_details[cluster_num]['cluster'] = cluster_num\n", + "\n", + " top_feature_indexes = centroid_feature_ordered_ind[cluster_num, :top_n_features]\n", + " top_features = [feature_names[ind] for ind in top_feature_indexes]\n", + " cluster_details[cluster_num]['top_features'] = top_features\n", + "\n", + " top_feature_values = cluster_model.cluster_centers_[cluster_num, top_feature_indexes].tolist()\n", + " cluster_details[cluster_num]['top_feature_values'] = top_feature_values\n", + "\n", + " filenames = cluster_data[cluster_data['cluster_label'] == cluster_num]['filename']\n", + " cluster_details[cluster_num]['filenames'] = filenames.values.tolist()\n", + "\n", + " return cluster_details" + ], + "metadata": { + "id": "_16tOy7yBpTM" + }, + "execution_count": 83, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "def print_cluster_details(cluster_details):\n", + " for cluster_num, cluster_detail in cluster_details.items():\n", + " print('####### Cluster {0}'.format(cluster_num))\n", + " print('Top features:', cluster_detail['top_features'])\n", + " print('Reviews 파일명:', cluster_detail['filenames'][:7])\n", + " print('---')" + ], + "metadata": { + "id": "8IwTTCmJB2pE" + }, + "execution_count": 84, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "feature_names = tfidf_vect.get_feature_names_out()\n", + "\n", + "cluster_details = get_cluster_details(\n", + " cluster_model=km_cluster,\n", + " cluster_data=document_df,\n", + " feature_names=feature_names,\n", + " clusters_num=3,\n", + " top_n_features=10\n", + ")\n", + "\n", + "print_cluster_details(cluster_details)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "-osOVYAiB5rn", + "outputId": "2cf055a3-c7a3-4f8c-b337-08814f22fbbe" + }, + "execution_count": 85, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "####### Cluster 0\n", + "Top features: ['interior', 'mileage', 'seats', 'comfortable', 'gas', 'gas mileage', 'transmission', 'car', 'performance', 'quality']\n", + "Reviews 파일명: ['performance_honda_accord_2008.txt', 'quality_toyota_camry_2007.txt', 'interior_honda_accord_2008.txt', 'mileage_honda_accord_2008.txt', 'seats_honda_accord_2008.txt', 'comfort_honda_accord_2008.txt', 'transmission_toyota_camry_2007.txt']\n", + "---\n", + "####### Cluster 1\n", + "Top features: ['hotel', 'service', 'rooms', 'staff', 'room', 'food', 'location', 'price', 'clean', 'bathroom']\n", + "Reviews 파일명: ['food_swissotel_chicago.txt', 'price_amazon_kindle.txt', 'rooms_bestwestern_hotel_sfo.txt', 'room_holiday_inn_london.txt', 'parking_bestwestern_hotel_sfo.txt', 'location_bestwestern_hotel_sfo.txt', 'food_holiday_inn_london.txt']\n", + "---\n", + "####### Cluster 2\n", + "Top features: ['screen', 'battery', 'battery life', 'keyboard', 'life', 'directions', 'size', 'voice', 'video', 'speed']\n", + "Reviews 파일명: ['screen_netbook_1005ha.txt', 'fonts_amazon_kindle.txt', 'speed_windows7.txt', 'display_garmin_nuvi_255W_gps.txt', 'navigation_amazon_kindle.txt', 'sound_ipod_nano_8gb.txt', 'directions_garmin_nuvi_255W_gps.txt']\n", + "---\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "# 문서 유사도" + ], + "metadata": { + "id": "5VLVe8TlB98O" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "import numpy as np\n", + "\n", + "def cos_similarity(v1, v2):\n", + " dot_product = np.dot(v1, v2)\n", + " l2_norm = (np.sqrt(np.sum(np.square(v1))) * np.sqrt(np.sum(np.square(v2))))\n", + " similarity = dot_product / l2_norm\n", + " return similarity" + ], + "metadata": { + "id": "0rD175XdCCdB" + }, + "execution_count": 87, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.feature_extraction.text import TfidfVectorizer\n", + "\n", + "doc_list = [\n", + " 'if you take the blue pill, the story ends',\n", + " 'if you take the red pill, you stay in Wonderland',\n", + " 'if you take the red pill, I show you how deep the rabbit hole goes'\n", + "]\n", + "\n", + "tfidf_vect_simple = TfidfVectorizer()\n", + "feature_vect_simple = tfidf_vect_simple.fit_transform(doc_list)\n", + "\n", + "print('feature_vect_simple shape:', feature_vect_simple.shape)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "YmKLL4QQCEx_", + "outputId": "138f0f02-9006-4012-aee2-008bd5b65460" + }, + "execution_count": 88, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "feature_vect_simple shape: (3, 18)\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import numpy as np\n", + "\n", + "feature_vect_dense = feature_vect_simple.todense()\n", + "\n", + "vect1 = np.array(feature_vect_dense[0]).reshape(-1,)\n", + "vect2 = np.array(feature_vect_dense[1]).reshape(-1,)\n", + "\n", + "def cos_similarity(v1, v2):\n", + " dot_product = np.dot(v1, v2)\n", + " norm = (np.sqrt(np.sum(np.square(v1))) * np.sqrt(np.sum(np.square(v2))))\n", + " similarity = dot_product / norm\n", + " return similarity\n", + "\n", + "similarity_simple = cos_similarity(vect1, vect2)\n", + "print('문장 1과 문장 2의 Cosine 유사도: {:.3f}'.format(similarity_simple))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "7ZEV2ozQCILe", + "outputId": "0e38638f-7ae8-47f0-f0a6-6af73587f675" + }, + "execution_count": 89, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "문장 1과 문장 2의 Cosine 유사도: 0.402\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "vect1 = np.array(feature_vect_dense[0]).reshape(-1,)\n", + "vect3 = np.array(feature_vect_dense[2]).reshape(-1,)\n", + "similarity_simple = cos_similarity(vect1, vect3)\n", + "print('문장 1, 문장 3 Cosine 유사도: {:.3f}'.format(similarity_simple))\n", + "\n", + "vect2 = np.array(feature_vect_dense[1]).reshape(-1,)\n", + "vect3 = np.array(feature_vect_dense[2]).reshape(-1,)\n", + "similarity_simple = cos_similarity(vect2, vect3)\n", + "print('문장 2, 문장 3 Cosine 유사도: {:.3f}'.format(similarity_simple))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "t7yZlw98CLHL", + "outputId": "245740a6-8fa8-40d2-8a66-0277a4cb5c8c" + }, + "execution_count": 90, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "문장 1, 문장 3 Cosine 유사도: 0.404\n", + "문장 2, 문장 3 Cosine 유사도: 0.456\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.metrics.pairwise import cosine_similarity\n", + "\n", + "similarity_simple_pair = cosine_similarity(feature_vect_simple[0], feature_vect_simple)\n", + "\n", + "print(similarity_simple_pair)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "EE1k5TgWCPIM", + "outputId": "a69d3983-7abf-4311-aaa6-258d1b2cdcd0" + }, + "execution_count": 91, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[[1. 0.40207758 0.40425045]]\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.metrics.pairwise import cosine_similarity\n", + "\n", + "similarity_simple_pair = cosine_similarity(feature_vect_simple[0], feature_vect_simple[1:])\n", + "\n", + "print(similarity_simple_pair)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "JzTHz1fTCRU1", + "outputId": "c9aa42d5-6d67-449d-d271-0a34bae6b779" + }, + "execution_count": 92, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[[0.40207758 0.40425045]]\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "similarity_simple_pair = cosine_similarity(feature_vect_simple, feature_vect_simple)\n", + "print(similarity_simple_pair)\n", + "print('shape:', similarity_simple_pair.shape)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "WcTmsD5BCU2U", + "outputId": "c3e507c6-a7d3-461e-ac3b-aa8d04d8efbc" + }, + "execution_count": 93, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[[1. 0.40207758 0.40425045]\n", + " [0.40207758 1. 0.45647296]\n", + " [0.40425045 0.45647296 1. ]]\n", + "shape: (3, 3)\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "# Opinion Review 데이터 세트를 이용한 문서 유사도 측정" + ], + "metadata": { + "id": "vdbe5YZ7CW4R" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "import pandas as pd\n", + "import glob\n", + "import os\n", + "from sklearn.feature_extraction.text import TfidfVectorizer\n", + "from sklearn.cluster import KMeans\n", + "\n", + "path = '/content/drive/MyDrive/Euron/Data/OpinosisDataset1.0/topics'\n", + "all_files = glob.glob(os.path.join(path, \"*.data\"))\n", + "\n", + "filename_list = []\n", + "opinion_text = []\n", + "\n", + "for file_ in all_files:\n", + " try:\n", + " with open(file_, 'r', encoding='latin1') as f:\n", + " text = f.read()\n", + "\n", + " filename = os.path.basename(file_)\n", + " filename = os.path.splitext(filename)[0]\n", + "\n", + " filename_list.append(filename)\n", + " opinion_text.append(text)\n", + " except Exception as e:\n", + " print(f\"파일 {file_} 읽기 실패: {e}\")\n", + "\n", + "document_df = pd.DataFrame({\n", + " 'filename': filename_list,\n", + " 'opinion_text': opinion_text\n", + "})\n", + "\n", + "tfidf_vect = TfidfVectorizer(\n", + " tokenizer=LemNormalize,\n", + " stop_words='english',\n", + " ngram_range=(1, 2),\n", + " min_df=0.05,\n", + " max_df=0.85\n", + ")\n", + "\n", + "feature_vect = tfidf_vect.fit_transform(document_df['opinion_text'])\n", + "\n", + "km_cluster = KMeans(n_clusters=3, max_iter=10000, random_state=0)\n", + "km_cluster.fit(feature_vect)\n", + "\n", + "cluster_label = km_cluster.labels_\n", + "cluster_centers = km_cluster.cluster_centers_\n", + "\n", + "document_df['cluster_label'] = cluster_label\n", + "\n", + "print(document_df.head())" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "yN5wxBNzCfPf", + "outputId": "22c914e9-0e46-438c-8dae-9aacab1e4e73" + }, + "execution_count": 95, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " filename \\\n", + "0 room_holiday_inn_london.txt \n", + "1 parking_bestwestern_hotel_sfo.txt \n", + "2 performance_honda_accord_2008.txt \n", + "3 free_bestwestern_hotel_sfo.txt \n", + "4 speed_windows7.txt \n", + "\n", + " opinion_text \\\n", + "0 We arrived at 23,30 hours and they could not recommend a restaurant so we decided to go to Tesco, with very limited choices but when you are hingry you do not careNext day they rang the bell at 8,00 hours to clean the room, not being very nice being waken up so earlyEvery day they gave us a candy bar and two bottlets of water whic is a very nice touch .\\n We had a room with two double beds which was surprisingly roomy, considering the small hotel rooms I have in previous trips to London .\\nThe room was quiet, clean, the bed and pillows were comfortable, and the service was adequate .\\n We arrived about 11 am, room was ready .\\n Room was good size for Europe , clean throughout .\\n The Co... \n", + "1 Parking was expensive but I think this is common for San Fran .\\n there is a fee for parking but well worth it seeing no where to park if you do have a car .\\n The parking was free, which was great, and the hotel was conveniently located for public transport, and local attractions .\\nAs for in, and, out parking, I have seen a lot of San Francisco with no car at all .\\n They have a parking garage, but they make you leave your vehicle for them to park and then if you want to take a drive later, you have to wait for the staff to get it .\\n There is no real parking space, so I had to pull up in front of the hotel in a small space .\\nThere was valet parking at a cost of $42 .\\n Rooms are v... \n", + "2 Very happy with my 08 Accord, performance is quite adequate it has nice looks and is a great long, distance cruiser .\\n 6, 4, 3 eco engine has poor performance and gas mileage of 22 highway .\\n Overall performance is good but comfort level is poor .\\n I'm impressed with the performance as well as efficiency gains .\\n It has room, performance, good MPG for its size and excellent reliability .\\n For the record I test, drove the Lexus350 the BMW 5 series, the infiniti G35 and enjoyed the Honda performance equally for far less money !\\n Very happy with the car enjoy the ride and performance .\\n The performance of the engine is very smooth .\\n This car had rattles at 500 miles and has horrib... \n", + "3 The wine reception is a great idea as it is nice to meet other travellers and great having access to the free Internet access in our room .\\n They also have a computer available with free internet which is a nice bonus but I didn't find that out till the day before we left but was still able to get on there to check our flight to Vegas the next day .\\n The service was good, very friendly staff and we loved the free wine reception each night .\\n has free wireless and help you with transportation needs .\\n The nightly free wine tasting from 5 , 6 pm is a brilliant idea and gets guests together to socialise witheach other .\\n They have a happy hour where you have a couple offree drinks bet... \n", + "4 Windows 7 is quite simply faster, more stable, boots faster, goes to sleep faster, comes back from sleep faster, manages your files better and on top of that it's beautiful to look at and easy to use .\\n, faster about 20% to 30% faster at running applications than my Vista , seriously\\n Yes, it'll make your computer run a bit slower but\\n, Fast startup and performance\\n Also, in my non, benchmarked experience, Windows 7 has been at least as fast as XP if not faster .\\n It's fast, secure, stable, visually appealing and fun to use .\\n For these two computers, normal use is pretty fast, , not quite as fast as Windows XP SP3, but very close .\\nIt loads blazing fast, software runs smooth a... \n", + "\n", + " cluster_label \n", + "0 1 \n", + "1 1 \n", + "2 0 \n", + "3 1 \n", + "4 2 \n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.metrics.pairwise import cosine_similarity\n", + "\n", + "hotel_indexes = document_df[document_df['cluster_label'] == 2].index\n", + "print('호텔로 클러스터링 된 문서들의 DataFrame Index:', hotel_indexes.tolist())\n", + "\n", + "comparison_docname = document_df.iloc[hotel_indexes[0]]['filename']\n", + "print(f'##### 비교 기준 문서명: {comparison_docname} 와 타 문서 간 유사도 ######')\n", + "\n", + "similarity_pair = cosine_similarity(feature_vect[hotel_indexes[0]], feature_vect[hotel_indexes])\n", + "print(similarity_pair)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "KuZAkVCdCr-w", + "outputId": "e417f68b-a095-4347-b49b-87473225df0e" + }, + "execution_count": 96, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "호텔로 클러스터링 된 문서들의 DataFrame Index: [4, 5, 7, 8, 10, 13, 17, 19, 21, 23, 24, 32, 33, 34, 37, 38, 39, 41, 42, 43, 44, 46, 49, 50]\n", + "##### 비교 기준 문서명: speed_windows7.txt 와 타 문서 간 유사도 ######\n", + "[[1. 0.0230839 0.09689617 0.02869334 0.06050166 0.01526317\n", + " 0.02955985 0.03135396 0.03381033 0.03112552 0.02566152 0.27208697\n", + " 0.03364378 0.03006513 0.0483927 0.03929816 0.15032982 0.13866269\n", + " 0.04905015 0.02279669 0.04215995 0.08461419 0.02500035 0.02611578]]\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import seaborn as sns\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "sorted_index = similarity_pair.argsort()[0, ::-1]\n", + "sorted_index = sorted_index[1:]\n", + "\n", + "hotel_sorted_indexes = hotel_indexes[sorted_index]\n", + "\n", + "hotel_1_sim_value = np.sort(similarity_pair.reshape(-1))[::-1]\n", + "hotel_1_sim_value = hotel_1_sim_value[1:]\n", + "\n", + "hotel_1_sim_df = pd.DataFrame()\n", + "hotel_1_sim_df['filename'] = document_df.iloc[hotel_sorted_indexes]['filename'].values\n", + "hotel_1_sim_df['similarity'] = hotel_1_sim_value\n", + "\n", + "print('가장 유사도가 큰 파일명 및 유사도:\\n', hotel_1_sim_df.iloc[0])\n", + "\n", + "sns.barplot(x='similarity', y='filename', data=hotel_1_sim_df)\n", + "plt.title(comparison_docname)\n", + "plt.show()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 540 + }, + "id": "-52o05xKC1tK", + "outputId": "fa7e2a3a-11c3-4c9f-eb33-8cfdc9b53752" + }, + "execution_count": 97, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "가장 유사도가 큰 파일명 및 유사도:\n", + " filename features_windows7.txt\n", + "similarity 0.272087\n", + "Name: 0, dtype: object\n" + ] + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAygAAAHHCAYAAABUeXyPAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3XlcT9nj+PHXuyjticgSWSppkhKjmpS1ZOwmTCR7Y1+yzMdW9hCyb0Mx2fexJ0WTLUtZShLJjGiyJUuo9++Pft2v97wr2cZ2no/HfYx77znnnnPv27jnnk0ml8vlCIIgCIIgCIIgfAZUPnUGBEEQBEEQBEEQ8okKiiAIgiAIgiAInw1RQREEQRAEQRAE4bMhKiiCIAiCIAiCIHw2RAVFEARBEARBEITPhqigCIIgCIIgCILw2RAVFEEQBEEQBEEQPhuigiIIgiAIgiAIwmdDVFAEQRAEQRAEQfhsiAqKIAiCIHyjXFxccHFx+ejXSUlJQSaTERwc/FmnKQjC50FUUARBEARBED6AyMhIZDJZodu0adOKjB8fH4+fnx8pKSnvnIfp06ezc+fOd44vCJ+DEp86A4IgCIIgfN2qVq3Ks2fPKFmy5KfOykdlYWHBunXrlI6vW7eOQ4cO0aJFiyLjx8fH4+/vj4uLCyYmJu+Uh+nTp9OpUyfatWv3TvEF4XMgKiiCIAiCIHxUMpmMUqVKfepsfHTly5enW7duSsf9/f0xNTWlfv36nyBXgvDlEV28BEEQBOEDePz4McOGDcPExAR1dXXKlStH8+bNOXfuHJA33uO7777j7NmzODg4oKGhQbVq1Vi2bJlSWtnZ2UyaNImaNWuirq6OsbExo0ePJjs7Wyns77//Tr169dDQ0MDAwIAuXbpw69YtpXArVqygRo0aaGho0KBBA6Kiot66jCNGjKBMmTLI5XLp2ODBg5HJZCxYsEA6dvfuXWQyGUuXLgUKHi/i7e2NtrY2f//9N+3atUNbWxtDQ0N8fX3JyclRuO7Dhw/x9vZGT08PfX19evTowcOHDwvM45EjR3ByckJLSwt9fX3atm1LQkKCdP7ChQvIZDJ2794tHTt79iwymQxbW1uFtFq2bMn3338v7Z85cwZXV1fKli0rPb9evXoVec9Onz7NtWvX8PT0LDJccHAwP/30EwCNGzeWuoVFRkZy5MgRVFRUmDhxokKc9evXK9xnmUzGkydPCAkJkeJ7e3sXeV1B+ByJCoogCIIgfAA+Pj4sXbqUjh07smTJEnx9fdHQ0FB4OX7w4AHu7u7Uq1ePWbNmUblyZX755RdWr14thcnNzaVNmzbMmTOH1q1bs3DhQtq1a8e8efPo3LmzwjWnTZuGl5cXpqamzJ07l2HDhhEeHk6jRo0UXuB/++03+vfvj5GREbNmzcLR0ZE2bdoUWJEpipOTE/fv3+fy5cvSsaioKFRUVBQqPPl/btSoUZHp5eTk4OrqSpkyZZgzZw7Ozs4EBgayYsUKKYxcLqdt27asW7eObt26MXXqVP766y969OihlN7hw4dxdXUlPT0dPz8/RowYwfHjx3F0dJTGdXz33Xfo6+tz7NgxpTLExcWRmZkJ5D2H48ePS2VIT0+nRYsWpKSkMHbsWBYuXIinpycnT54ssoyhoaEAb6ygNGrUiCFDhgDwv//9j3Xr1rFu3TosLCxo0qQJAwYMYMaMGVKFNy0tjcGDB9OsWTN8fHyAvK5k6urqODk5SfH79+9f5HUF4bMkFwRBEAThvenp6ckHDhxY6HlnZ2c5IA8MDJSOZWdny+vWrSsvV66c/MWLF3K5XC5ft26dXEVFRR4VFaUQf9myZXJAHh0dLZfL5fKUlBS5qqqqfNq0aQrhLl68KC9RooR0/MWLF/Jy5crJ69atK8/OzpbCrVixQg7InZ2di13G9PR0OSBfsmSJXC6Xyx8+fChXUVGR//TTT/Ly5ctL4YYMGSI3MDCQ5+bmyuVyufzGjRtyQL5mzRopTI8ePeSAfPLkyQrXsLGxkderV0/a37lzpxyQz5o1Szr26tUruZOTk1Ka+ffy3r170rG4uDi5ioqK3MvLSzrWqlUreYMGDaT9Dh06yDt06CBXVVWV79+/Xy6Xy+Xnzp2TA/Jdu3bJ5XK5fMeOHXJAHhMTU+z79erVK3n58uUVrlWULVu2yAF5RESE0rknT57Ia9asKbe0tJQ/f/5c3qpVK7murq785s2bCuG0tLTkPXr0KHYeBeFzJFpQBEEQBOED0NfX59SpU9y+fbvQMCVKlFD4oq2mpkb//v1JT0/n7NmzAGzZsgULCwtq1apFRkaGtDVp0gSAiIgIALZv305ubi4eHh4K4YyMjDA1NZXCnTlzhvT0dHx8fFBTU5Ound9l6m0YGhpSq1YtqfUhOjoaVVVVRo0axd27d0lKSgLyWiR++OEHZDLZG9PM//qfz8nJievXr0v7+/bto0SJEvzyyy/SMVVVVQYPHqwQLy0tjdjYWLy9vTEwMJCO16lTh+bNm7Nv3z6Fa5w7d44nT54A8Oeff+Lu7k7dunWl1p+oqChkMhk//PADkPd8Afbs2cPLly/fWC6A8PBw7t69+8bWk+LQ1NQkODiYhIQEGjVqxN69e5k3bx5VqlR577QF4XMjKiiCIAiC8AHMmjWLS5cuYWxsTIMGDfDz81N40QaoWLEiWlpaCsfMzMwApC5ISUlJXL58GUNDQ4UtP1x6eroUTi6XY2pqqhQ2ISFBCnfz5k0ATE1NFa5bsmRJqlev/tbldHJyUniJt7Ozw87ODgMDA6KiosjMzCQuLg4nJ6c3plWqVCkMDQ0VjpUuXZoHDx5I+zdv3qRChQpoa2srhDM3N1fYzy/nv49D3uxaGRkZUoXEycmJV69eceLECRITE0lPT8fJyYlGjRoplK127dpSZcfZ2ZmOHTvi7+9P2bJladu2LWvWrClwXFC+0NBQVFVVlbrmvStHR0d++eUXTp8+jaur6xvHvwjCl0rM4iUIgiAIH4CHhwdOTk7s2LGDQ4cOMXv2bAICAti+fTstW7Ysdjq5ublYWVkxd+7cAs8bGxtL4WQyGfv370dVVVUp3L9f6D+UH374gZUrV3L9+nWioqJwcnKSWhqioqKoWLEiubm5xaqgFJTv/4KdnR2lSpXi2LFjVKlShXLlymFmZoaTkxNLliwhOzubqKgo2rdvL8WRyWRs3bqVkydP8scff3Dw4EF69epFYGAgJ0+eVLrfz549Y8eOHTRr1ozy5ct/kHxnZ2cTGRkJQHJyMk+fPkVTU/ODpC0InxNRQREEQRCED6RChQoMGDCAAQMGkJ6ejq2tLdOmTZMqKLdv3+bJkycKrShXr14FkNa9qFGjBnFxcTRt2rTILlI1atRALpdTrVo1qXWlIFWrVgXyWlzyu4kBvHz5khs3bmBtbf1WZcyveISFhRETE8PYsWOBvEHeS5culVqJ6tWr91bpFpX/8PBwsrKyFCoBiYmJSuEKOg5w5coVypYtK913NTU1aSazKlWqSGVycnIiOzub0NBQ7t69W+Ag/4YNG9KwYUOmTZvG+vXr8fT0ZOPGjfTp00ch3O7du3n8+PFbde96U5e4SZMmkZCQwJw5cxgzZgxjx45VmD2tOGkIwpdAdPESBEEQhPeUk5PDo0ePFI6VK1eOihUrKnQBevXqFcuXL5f2X7x4wfLlyzE0NJRe6D08PPj7779ZuXKl0nWePXsmdVPq0KEDqqqq+Pv7K0z7C3kzX927dw/Iay0wNDRk2bJlvHjxQgoTHBxc6FS9RalWrRqVKlVi3rx5vHz5EkdHRyDv5T45OZmtW7fSsGFDSpT4MN9A3d3defXqlTSVLuTd74ULFyqEq1ChAnXr1iUkJEShXJcuXeLQoUO4u7srhHdycuLUqVNERERIFZSyZctiYWFBQECAFCbfgwcPlO5z3bp1AQrs5rV+/Xo0NTUVWmFe9+jRI65cuaLwu8mvQBX0XE6dOsWcOXMYNmwYI0eOZNSoUSxatIijR48qhNPS0nqn5yoInxPRgiIIgiAI7+nx48dUrlyZTp06YW1tjba2NocPHyYmJobAwEApXMWKFQkICCAlJQUzMzM2bdpEbGwsK1askFZZ7969O5s3b8bHx4eIiAgcHR3JycnhypUrbN68mYMHD2JnZ0eNGjWYOnUqv/76KykpKbRr1w4dHR1u3LjBjh076NevH76+vpQsWZKpU6fSv39/mjRpQufOnblx4wZr1qx5pzEokPfivnHjRqysrChdujQAtra2aGlpcfXqVX7++ef3v6n/X+vWrXF0dGTs2LGkpKRQu3Zttm/frlQhBJg9ezYtW7bE3t6e3r178+zZMxYuXIienh5+fn5KZZg2bRq3bt1SqIg0atSI5cuXY2JiQuXKlaXjISEhLFmyhPbt21OjRg0eP37MypUr0dXVVar83L9/n/3799OxY8dCu9rt2LGDnj17smbNGmmtkrp166KqqkpAQACPHj1CXV2dJk2aoKurS48ePTA1NWXatGlA3uKPf/zxBz179uTixYtS5aZevXocPnyYuXPnUrFiRapVq6awlosgfBE+6RxigiAIgvAVyM7Olo8aNUpubW0t19HRkWtpacmtra2l6Xjl8rxphi0tLeVnzpyR29vby0uVKiWvWrWqfNGiRUrpvXjxQh4QECC3tLSUq6ury0uXLi2vV6+e3N/fX/7o0SOFsNu2bZP/8MMPci0tLbmWlpa8Vq1a8oEDB8oTExMVwi1ZskRerVo1ubq6utzOzk5+7NgxubOz81tNM5xv8eLFckD+yy+/KBxv1qyZHJCHh4crHC9smmEtLS2ltCdNmiT/9+vJvXv35N27d5fr6urK9fT05N27d5efP39eKU25XC4/fPiw3NHRUa6hoSHX1dWVt27dWh4fH690nczMTLmqqqpcR0dH/urVK+n477//Lgfk3bt3Vwh/7tw5edeuXeVVqlSRq6ury8uVKyf/8ccf5WfOnFFKO39K6N27dyudy7dmzZoC879y5Up59erV5aqqqtKUw8OHD5erqqrKT506pRD2zJkz8hIlSig8hytXrsgbNWok19DQkANiymHhiySTy//VXikIgiAIwgfn4uJCRkYGly5d+tRZEQRB+KyJMSiCIAiCIAiCIHw2xBgUQRAEQRD4559/yMnJKfS8mpqawgKIgiAIH4uooAiCIAiCQP369aXFDgvi7OwsrcEhCILwMYkxKIIgCIIgEB0dzbNnzwo9X7p06Q+2tokgCEJRRAVFEARBEARBEITPhhgkLwiCIAiCIAjCZ0OMQREE4YuTm5vL7du30dHRQSaTfersCIIgCIJQDHK5nMePH1OxYkVUVApvJxEVFEEQvji3b9/G2Nj4U2dDEARBEIR3cOvWLSpXrlzoeVFBEQThi6OjowPk/Q9OV1f3E+dGEARBEITiyMzMxNjYWPp3vDCigiIIwhcnv1vXj7P2oqqu8YlzIwiCIAhfj7OzvT76Nd7UPVsMkheKRS6X069fPwwMDJDJZMTGxn7qLH22TExMmD9//nulERkZiUwm4+HDhx8kT4IgCIIgCF8KUUERiuXAgQMEBwezZ88e0tLS+O677947TW9vb9q1a/f+mfvMxMTE0K9fv0+djXfm5+eHTCZT2rS0tAqN864VKj8/P+rWrft+GRYEQRAE4asiungJxZKcnEyFChVwcHD41FlRkpOTg0wmK3I2iP+SoaHhp87Ce/H19cXHx0fhWNOmTalfv/4nypEgCIIgCN+Sz+ONTviseXt7M3jwYFJTU5HJZJiYmJCbm8uMGTOoVq0aGhoaWFtbs3XrVilOTk4OvXv3ls6bm5sTFBQknffz8yMkJIRdu3ZJX+gjIyML/BIfGxuLTCYjJSUFgODgYPT19dm9eze1a9dGXV2d1NRUsrOz8fX1pVKlSmhpafH9998TGRkppXPz5k1at25N6dKl0dLSwtLSkn379r2x/HZ2dsyZM0fab9euHSVLliQrKwuAv/76C5lMxrVr1wDlLl4ymYxVq1bRvn17NDU1MTU1Zffu3QrX2LdvH2ZmZmhoaNC4cWOprK/btm0blpaWqKurY2JiQmBgoHRu0aJFCq1aO3fuRCaTsWzZMulYs2bNGD9+PABxcXE0btwYHR0ddHV1qVevHmfOnAFAW1sbIyMjabt79y7x8fH07t27wPuTkpJC48aNgbyVpmUyGd7e3vzzzz8YGRkxffp0Kezx48dRU1MjPDyc4OBg/P39iYuLk34DwcHBhT4HQRAEQRC+DaKCIrxRUFAQkydPpnLlyqSlpRETE8OMGTNYu3Yty5Yt4/LlywwfPpxu3bpx9OhRIG+disqVK7Nlyxbi4+OZOHEi//vf/9i8eTOQ95Xew8MDNzc30tLSSEtLe6vWmadPnxIQEMCqVau4fPky5cqVY9CgQZw4cYKNGzdy4cIFfvrpJ9zc3EhKSgJg4MCBZGdnc+zYMS5evEhAQADa2tpvvJazs7NU0ZHL5URFRaGvr8+ff/4JwNGjR6lUqRI1a9YsNA1/f388PDy4cOEC7u7ueHp6cv/+fSBvJqoOHTrQunVrYmNj6dOnD2PHjlWIf/bsWTw8POjSpQsXL17Ez8+PCRMmSC/0zs7OxMfH888//0h5Klu2rJTvly9fcuLECVxcXADw9PSkcuXKxMTEcPbsWcaOHUvJkiULzPuqVaswMzPDycmpwPPGxsZs27YNgMTERNLS0ggKCsLQ0JDVq1fj5+fHmTNnePz4Md27d2fQoEE0bdqUzp07M3LkSCwtLaXfQOfOnQu8RnZ2NpmZmQqbIAiCIAhfJ9HFS3gjPT09dHR0UFVVxcjIiOzsbKZPn87hw4ext7cHoHr16vz5558sX74cZ2dnSpYsib+/v5RGtWrVOHHiBJs3b8bDwwNtbW00NDTIzs7GyMjorfP08uVLlixZgrW1NQCpqamsWbOG1NRUKlasCORVgg4cOMCaNWuYPn06qampdOzYESsrKynPxeHi4sJvv/1GTk4Oly5dQk1Njc6dOxMZGYmbmxuRkZE4OzsXmYa3tzddu3YFYPr06SxYsIDTp0/j5ubG0qVLqVGjhtQiYm5uLlWg8s2dO5emTZsyYcIEAMzMzIiPj2f27Nl4e3vz3XffYWBgwNGjR+nUqRORkZGMHDlSarU6ffo0L1++lCqBqampjBo1ilq1agFgampaYL6fP39OaGioUoXpdaqqqhgYGABQrlw59PX1pXPu7u707dsXT09P7Ozs0NLSYsaMGQBoaGigra1NiRIl3vgbmDFjhsLvSRAEQRCEr5doQRHe2rVr13j69CnNmzdHW1tb2tauXUtycrIUbvHixdSrVw9DQ0O0tbVZsWIFqampHyQPampq1KlTR9q/ePEiOTk5mJmZKeTp6NGjUp6GDBnC1KlTcXR0ZNKkSVy4cKFY13JycuLx48ecP3+eo0eP4uzsjIuLi9Q6cfToUallojCv51VLSwtdXV3S09MBSEhI4Pvvv1cIn1/xy5eQkICjo6PCMUdHR5KSkqQxOI0aNSIyMpKHDx8SHx/PgAEDyM7O5sqVKxw9epT69eujqakJwIgRI+jTpw/NmjVj5syZCs/tdTt27ODx48f06NHjjfepMHPmzOHVq1ds2bKF0NBQ1NXV3zqNX3/9lUePHknbrVu33jk/giAIgiB83kQFRXhr+WMv9u7dS2xsrLTFx8dL41A2btyIr68vvXv35tChQ8TGxtKzZ09evHhRZNr5A93lcrl07OXLl0rhNDQ0FObQzsrKQlVVlbNnzyrkKSEhQWpF6NOnD9evX6d79+5cvHgROzs7Fi5c+Mby6uvrY21tTWRkpFQZadSoEefPn+fq1askJSW9sQXl392nZDIZubm5b7z228ivNEVFRWFjY4Ourq5UacmvWOXz8/Pj8uXLtGrViiNHjlC7dm127NihlOaqVav48ccfKV++/DvnKzk5mdu3b5Obm1vg2JriUFdXR1dXV2ETBEEQBOHrJCoowlt7fWB6zZo1FTZjY2MAoqOjcXBwYMCAAdjY2FCzZk2lr/Rqamrk5OQoHMufASstLU06Vpw1V2xsbMjJySE9PV0pT693HzI2NsbHx4ft27czcuRIVq5cWawyOzs7ExERwbFjx3BxccHAwAALCwumTZtGhQoVMDMzK1Y6BbGwsOD06dMKx06ePKkUJjo6WuFYdHQ0ZmZmqKqqSnmMj49ny5YtUouOi4sLhw8fJjo6WqmVx8zMjOHDh3Po0CE6dOjAmjVrFM7fuHGDiIiIQgfHv05NTQ1A6Xm+ePGCbt260blzZ6ZMmUKfPn2klqP8eP+OIwiCIAjCt01UUIS3pqOjg6+vL8OHDyckJITk5GTOnTvHwoULCQkJAfLGNJw5c4aDBw9y9epVJkyYQExMjEI6JiYmXLhwgcTERDIyMnj58qVUyfHz8yMpKYm9e/cqzFZVGDMzMzw9PfHy8mL79u3cuHGD06dPM2PGDPbu3QvAsGHDOHjwIDdu3ODcuXNERERgYWFRrDK7uLhw8OBBSpQoIY3bcHFxITQ09I2tJ2/i4+NDUlISo0aNIjExkfXr1yvNZjVy5EjCw8OZMmUKV69eJSQkhEWLFuHr6yuFqVOnDqVLl2b9+vUKFZSdO3eSnZ0tdRF79uwZgwYNIjIykps3bxIdHU1MTIzSvVi9ejUVKlSgZcuWSnnesWOHdB8AqlatikwmY8+ePfzzzz9SK9u4ceN49OgRCxYsYMyYMZiZmdGrVy8pnomJCTdu3CA2NpaMjAyys7Pf614KgiAIgvDlExUU4Z1MmTKFCRMmMGPGDCwsLHBzc2Pv3r1Uq1YNgP79+9OhQwc6d+7M999/z7179xgwYIBCGn379sXc3Bw7OzsMDQ2Jjo6mZMmSbNiwgStXrlCnTh0CAgKYOnVqsfK0Zs0avLy8GDlyJObm5rRr146YmBiqVKkC5H3dHzhwoJRfMzMzlixZUqy0nZycyM3NVaiMuLi4kJOT88bxJ29SpUoVtm3bxs6dO7G2tmbZsmUKU/MC2NrasnnzZjZu3Mh3333HxIkTmTx5Mt7e3lIYmUyGk5MTMpmMH374AcirtOjq6koD1CFvUPu9e/fw8vLCzMwMDw8PWrZsqTAIPTc3l+DgYLy9vaUWmtc9evSIxMREab9SpUr4+/szduxYypcvL1WA5s+fz7p169DV1UVFRYV169YRFRXF0qVLAejYsSNubm40btwYQ0NDNmzY8F73UhAEQRCEL59M/npnf0EQhC9AZmYmenp6WA9ehqq6xqfOjiAIgiB8Nc7O9vpoaef/+/3o0aMix5OKaYYFQfhiHZvaVQyYFwRBEISvjOjiJXzzfHx8FKYmfn3z8fH51NkTBEEQBEH4poguXsI3Lz09vdCVyXV1dSlXrtx/nCPhTYrbRCwIgiAIwudDdPEShGIqV66cqIR8oRqN3yDGoAiCAHzcfvOCIPy3RBevYpDJZOzcuROAlJQUZDKZtDZHZGQkMpmMhw8ffrL8fQomJibMnz//U2fjrfj5+VG3bt1PnQ1BEARBEAShCN9UBeX1isaH4uDgQFpaGnp6egAEBwejr6//Qa/xOYqJiaFfv36fOhtvxdfXl/Dw8GKFXblyJU5OTpQuXZrSpUvTrFkzpcUUvb29kclkCpubm5tCGBMTE6UwM2fOBCArK4uSJUuyceNGhThdunRBJpMprbpuYmLChAkT3rLU/413/d17e3vTrl27D54fQRAEQRC+XN9UBeVjUFNTw8jICJlM9qmz8tZevHjxznENDQ3R1NT8gLn5+LS1tSlTpkyxwkZGRtK1a1ciIiI4ceIExsbGtGjRgr///lshnJubG2lpadJW0DoekydPVggzePBgKT92dnZERkYqXdvY2Fjh+I0bN7h58yZNmjR5u0ILgiAIgiB8Yb64CsrWrVuxsrJCQ0ODMmXK0KxZM548eUJMTAzNmzenbNmy6Onp4ezszLlz56R4JiYmALRv3x6ZTCbtA+zatQtbW1tKlSpF9erV8ff359WrV8XKz+tdvCIjI+nZsyePHj2Svpb7+fkBkJ2dja+vL5UqVUJLS4vvv/9e6cW0KCtXrsTY2BhNTU3at2/P3LlzFb5YJycn07ZtW8qXL4+2tjb169fn8OHDCmmYmJgwZcoUvLy80NXVpV+/ftKX7z179mBubo6mpiadOnXi6dOnhISEYGJiQunSpRkyZAg5OTkKab3exUsmk7Fq1Srat2+PpqYmpqam7N69+63uYXh4OHZ2dmhqauLg4KCwEGBBX9qHDRsmLZK4YsUKKlasSG5urkKYtm3bSiuXv00Xr9DQUAYMGEDdunWpVasWq1atIjc3V6kFRl1dHSMjI2krXbq0Ulo6OjoKYfIXTARo3Lixwu8gISGB58+f88svvygcj4yMRF1dHXt7+zfm/dWrVwwZMgR9fX3KlCnDmDFj6NGjh8L9c3FxYdCgQQwaNAg9PT3Kli3LhAkTeH3OjCVLlmBqakqpUqUoX748nTp1KvB6hf3ur1y5gqamJuvXr5fCbt68GQ0NDeLj4/Hz8yMkJIRdu3ZJ8d7m74QgCIIgCF+nL6qCkpaWRteuXenVqxcJCQlERkbSoUMH5HI5jx8/pkePHvz555+cPHkSU1NT3N3defz4MZDXJQnyVhtPS0uT9qOiovDy8mLo0KHEx8ezfPlygoODmTZt2lvnz8HBgfnz56Orqyt9Lff19QVg0KBBnDhxgo0bN3LhwgV++ukn3NzcSEpKemO60dHR+Pj4MHToUGJjY2nevLlS/rKysnB3dyc8PJzz58/j5uZG69atSU1NVQg3Z84crK2tOX/+vNRd6OnTpyxYsICNGzdy4MABIiMjad++Pfv27WPfvn2sW7eO5cuXs3Xr1iLz6e/vj4eHBxcuXMDd3R1PT0/u379f7Ps3btw4AgMDOXPmDCVKlJAqFsXx008/ce/ePSIiIqRj9+/f58CBA3h6ehY7ncI8ffqUly9fYmBgoHA8MjKScuXKYW5uzi+//MK9e/eU4s6cOZMyZcpgY2PD7NmzFSq/jRs3JjExkbS0NAAiIiL44YcfaNKkicLLekREBPb29pQqVeqNeQ0ICCA0NJQ1a9YQHR1NZmZmgV0bQ0JCKFGiBKdPnyYoKIi5c+eyatUqAM6cOcOQIUOYPHkyiYmJHDhwgEaNGhV4vcJ+97Vq1WLOnDkMGDCA1NRU/vrrL3x8fAgICKB27dr4+vri4eGh0Arl4OBQ4DWys7PJzMxU2ARBEARB+Dp9UbN4paWl8erVKzp06EDVqlUBsLKyAlDq+rJixQr09fU5evQoP/74I4aGhgDo6+tjZGQkhfP392fs2LH06NEDgOrVqzNlyhRGjx7NpEmT3ip/ampq6OnpIZPJFK6RmprKmjVrSE1NpWLFikDeeIgDBw6wZs0apk+fXmS6CxcupGXLllJlx8zMjOPHj7Nnzx4pjLW1NdbW1tL+lClT2LFjB7t372bQoEHS8SZNmjBy5EhpPyoqipcvX7J06VJq1KgBQKdOnVi3bh13795FW1ub2rVr07hxYyIiIujcuXOh+fT29qZr164ATJ8+nQULFnD69GmlcRmFmTZtGs7OzgCMHTuWVq1a8fz582K9lJcuXZqWLVuyfv16mjZtCuS1tpUtW5bGjRsX6/pFGTNmDBUrVqRZs2bSMTc3Nzp06EC1atVITk7mf//7Hy1btuTEiROoqqoCMGTIEGxtbTEwMOD48eP8+uuvpKWlMXfuXAAcHR1RU1OTupRFRkbi7OxMvXr1yMjI4MaNG1SrVo2jR4/Su3fvYuV14cKF/Prrr7Rv3x6ARYsWsW/fPqVwxsbGzJs3D5lMhrm5ORcvXmTevHn07duX1NRUtLS0+PHHH9HR0aFq1arY2NgUeL3CfvcAAwYMYN++fXTr1g01NTXq16+v0MVNQ0OD7OxspXj/NmPGDPz9/YtVfkEQBEEQvmxfVAuKtbU1TZs2xcrKip9++omVK1fy4MEDAO7evUvfvn0xNTVFT08PXV1dsrKylFoQ/i0uLo7JkycrLM7Xt29f0tLSePr06QfJ98WLF8nJycHMzEzhOkePHiU5OfmN8RMTE2nQoIHCsX/vZ2Vl4evri4WFBfr6+mhra5OQkKBUfjs7O6X0NTU1pcoJQPny5TExMUFbW1vhWHp6epH5rFOnjvRnLS0tdHV13xinsPgVKlQAeKv4np6ebNu2jezsbCCvm1aXLl1QUXm/n/nMmTPZuHEjO3bsUKgsdenShTZt2mBlZUW7du3Ys2cPMTExCi0fI0aMwMXFhTp16uDj40NgYCALFy6U8qipqUn9+vWlOEePHsXFxYUSJUrg4OBAZGQk169fJzU1tVgVrUePHnH37l2F34eqqir16tVTCtuwYUOFsVP29vYkJSWRk5ND8+bNqVq1KtWrV6d79+6Ehoa+89+H1atXc+HCBc6dO0dwcPA7jdf69ddfefTokbTdunXrnfIiCIIgCMLn74tqQVFVVSUsLIzjx49z6NAhFi5cyLhx4zh16pTUvSYoKIiqVatK/fXfNBA8KysLf39/OnTooHSuOF/uiyMrKwtVVVXOnj0rfVnP93ol4H34+voSFhbGnDlzqFmzJhoaGnTq1Emp/K+Pf8hXsmRJhX2ZTFbgsX+P7yhOOm+KU1j8/JfY/PgqKir8e03Rly9fKuy3bt0auVzO3r17qV+/PlFRUcybN6/Y1y/InDlzmDlzJocPH1aoQBWkevXqlC1blmvXrkmtOP/2/fff8+rVK1JSUjA3Nwfyunlt2rSJy5cv8+zZM2xtbQFwdnYmIiKC3NxcNDU1+f7779+rLG9DR0eHc+fOERkZyaFDh5g4cSJ+fn7ExMS89WxdcXFxPHnyBBUVFdLS0qTK59tQV1dHXV39reMJgiAIgvDl+aIqKJD34uro6IijoyMTJ06katWq7Nixg+joaJYsWYK7uzsAt27dIiMjQyFuyZIlFQZ6A9ja2pKYmEjNmjU/SP7U1NSUrmFjY0NOTg7p6ek4OTm9dZrm5ubSmJl8/96Pjo7G29tb6taTlZWlNE3tl8zQ0JBLly4pHIuNjVWo1JQqVYoOHToQGhrKtWvXMDc3l17238WsWbOYNm0aBw8eLLDl6d/++usv7t27V+QLeGxsLCoqKgoLQzZu3JipU6eyfv16fvjhB6kS26hRI1asWIFcLpe6gr2Jnp4e5cuXJyYmRhozkpOTw7lz55QmCDh16pTCfv7YrfzrlyhRgmbNmtGsWTMmTZqEvr4+R44cKbAyX9DvHvLGAXl7ezNu3DjS0tLw9PTk3LlzaGhoFBlPEARBEIRv1xfVxevUqVNMnz6dM2fOkJqayvbt2/nnn3+wsLDA1NSUdevWkZCQwKlTp/D09JRegvKZmJgQHh7OnTt3pK5hEydOZO3atfj7+3P58mUSEhLYuHEj48ePf6c8mpiYkJWVRXh4OBkZGTx9+hQzMzM8PT3x8vJi+/bt3Lhxg9OnTzNjxgz27t37xjQHDx7Mvn37mDt3LklJSSxfvpz9+/crdJUxNTVl+/btxMbGEhcXx88///xWrRefuyZNmnDmzBnWrl1LUlISkyZNUqqwQF43r71797J69er3GhwfEBDAhAkTWL16NSYmJty5c4c7d+6QlZUF5FUAR40axcmTJ0lJSSE8PJy2bdtSs2ZNXF1dAThx4gTz588nLi6O69evExoayvDhw+nWrZvCbF8ODg6oq6uzcOFCaQwO5HXjS09PZ9euXW81jmbw4MHMmDGDXbt2kZiYyNChQ3nw4IFS16rU1FRGjBhBYmIiGzZsYOHChQwdOhSAPXv2sGDBAmJjY7l58yZr164lNzdXavVZtGiRQitRQb97AB8fH4yNjRk/fjxz584lJydHGkuVH+/ChQskJiaSkZGh1ComCIIgCMK354uqoOjq6nLs2DHc3d0xMzNj/PjxBAYG0rJlS3777TcePHiAra0t3bt3Z8iQIQpfqQECAwMJCwvD2NhYGvDr6urKnj17OHToEPXr16dhw4bMmzdPGoT/thwcHPDx8aFz584YGhoya9YsIG/2MC8vL0aOHIm5uTnt2rUjJiaGKlWqvDFNR0dHli1bxty5c7G2tubAgQMMHz5coQva3LlzKV26NA4ODrRu3RpXV9f3aj343Li6ujJhwgRGjx5N/fr1efz4MV5eXkrhmjRpgoGBAYmJifz888/vfL2lS5fy4sULOnXqRIUKFaRtzpw5QF53wwsXLtCmTRvMzMzo3bs39erVIyoqSuqKpK6uzsaNG3F2dsbS0pJp06YxfPhwVqxYoXCtUqVK0bBhQx4/fixNm5wfP//421RQxowZQ9euXfHy8sLe3h5tbW1cXV2Vuix6eXnx7NkzGjRowMCBAxk6dKi0+Ka+vj7bt2+nSZMmWFhYsGzZMjZs2IClpSUAGRkZCuOnCvrdr127VpoFrkSJEmhpafH777+zcuVK9u/fD0Dfvn0xNzfHzs4OQ0NDoqOji11OQRAEQRC+TjL5vzv2C1+Evn37cuXKFaKioj51VoTPXG5uLhYWFnh4eDBlyhQgbx2UunXrKqxl8yXJzMxET08P68HLUFXXeHMEQRC+emdnK3+0EgTh85L/7/ejR4/Q1dUtNNwXNwblWzVnzhyaN2+OlpYW+/fvJyQkhCVLlnzqbAmfoZs3b3Lo0CGcnZ3Jzs5m0aJF3Lhx471alD5Xx6Z2LfJ/cIIgCIIgfHm+qC5eX6uWLVsqTD/8+pa/Rsrp06dp3rw5VlZWLFu2jAULFtCnT59PnPPi8fHxKbR8Pj4+nyRPheVHW1v7s2+VelPeVVRUCA4Opn79+jg6OnLx4kUOHz6MhYXFp866IAiCIAjCG4kuXp+Bv//+m2fPnhV4zsDAQGn18i9Nenp6oSt/6+rqKo0V+i9cu3at0HOVKlVSmmDhc/Il5/1DKW4TsSAIgiAIn4/i/vstKiiCIHxxxBgUQfiyifEigvBtKm4FRXTx+gD8/PwoX748MpmMnTt3fursfFNMTEz+k4HeX8uzdXFxYdiwYZ86G4IgCIIgCIUSFZT3lJCQgL+/P8uXLyctLY2WLVt+6ix9lYKDg996BfPPxfbt22nRogVlypRBJpMRGxurFOb58+cMHDiQMmXKoK2tTceOHbl7965CmNTUVFq1aoWmpiblypVj1KhRvHr1SjofGRmJTCZT2u7cufOxi/hOFbj8/D58+PCj5EkQBEEQhC+TqKC8o5ycHHJzc6W1INq2bYuRkZG0BsbbEgvUfb2ePHnCDz/8QEBAQKFhhg8fzh9//MGWLVs4evQot2/fVlixPScnh1atWvHixQuOHz9OSEgIwcHBTJw4USmtxMRE0tLSpO1TjPERBEEQBEF4V99MBcXFxYVBgwYxaNAg9PT0KFu2LBMmTCB/CE52dja+vr5UqlQJLS0tvv/+eyIjI6X4+V/wd+/eTe3atVFXV6dXr160bt0aABUVFWml7tzcXCZPnkzlypVRV1enbt26HDhwQEorJSUFmUzGpk2bcHZ2plSpUoSGhuLt7U27du2YPn065cuXR19fn8mTJ/Pq1StGjRqFgYEBlStXZs2aNQplGzNmDGZmZmhqalK9enUmTJigUOHx8/Ojbt26rFu3DhMTE/T09OjSpQuPHz+WwuTm5jJr1ixq1qyJuro6VapUYdq0adL5W7du4eHhgb6+PgYGBrRt25aUlJRi3fv8cs2ZM4cKFSpQpkwZBg4cqJDHou5/ZGQkPXv25NGjR1KrgJ+fnxT38ePHdO3aFS0tLSpVqsTixYsVrp+amkrbtm3R1tZGV1cXDw8PpdaJpUuXUqNGDdTU1DA3N2fdunVFlmnSpElUqFCBCxcuvLH83bt3Z+LEiTRr1qzA848ePeK3335j7ty5NGnShHr16rFmzRqOHz/OyZMnATh06BDx8fH8/vvv1K1bl5YtWzJlyhQWL17MixcvFNIrV64cRkZG0qaiovjXPDc3l9GjR2NgYICRkZHCvYS8RT+trKzQ0tLC2NiYAQMGkJWVVWj5TExMAGjfvj0ymQwTExPkcjnNmjXD1dVV+jt2//59KleuzMSJE0lJSZEWnyxdujQymQxvb+833ktBEARBEL5+30wFBSAkJIQSJUpw+vRpgoKCmDt3LqtWrQJg0KBBnDhxgo0bN3LhwgV++ukn3NzcSEpKkuI/ffqUgIAAVq1axeXLl1mwYIFUWcj/Wg0QFBREYGAgc+bM4cKFC7i6utKmTRuFtADGjh3L0KFDSUhIwNXVFYAjR45w+/Ztjh07xty5c5k0aRI//vgjpUuX5tSpU/j4+NC/f3/++usvKR0dHR2Cg4OJj48nKCiIlStXMm/ePIVrJScns3PnTvbs2cOePXs4evQoM2fOlM7/+uuvzJw5kwkTJhAfH8/69espX748kNe64+rqio6ODlFRUURHR6OtrY2bm5vSy3FhIiIiSE5OJiIiQvr6HxwcLJ0v6v47ODgwf/58dHV1pfvs6+srxZ09ezbW1tacP39euqdhYWFA3st427ZtuX//PkePHiUsLIzr16/TuXNnKf6OHTsYOnQoI0eO5NKlS/Tv35+ePXsSERGhVA65XM7gwYNZu3YtUVFR1KlTp1jlL8rZs2d5+fKlQgWmVq1aVKlShRMnTgBw4sQJrKyspGcC4OrqSmZmJpcvX1ZIr27dulSoUIHmzZsXuDJ7SEgIWlpanDp1ilmzZjF58mTpfkFeZXvBggVcvnyZkJAQjhw5wujRowvNf0xMDABr1qwhLS2NmJgYZDIZISEhxMTEsGDBAiBvuulKlSoxceJEjI2N2bZtG/B/LT5BQUGFXiM7O5vMzEyFTRAEQRCEr9M3M4uXi4sL6enpXL58WWrpGDt2LLt37+bAgQNUr16d1NRUKlasKMVp1qwZDRo0YPr06QQHB9OzZ09iY2OxtraWwuzcuZP27dvz+m2sVKkSAwcO5H//+590rEGDBtSvX5/FixeTkpJCtWrVmD9/PkOHDpXCeHt7ExkZyfXr16Wv3rVq1aJcuXIcO3YMyOvqo6enx6pVq+jSpUuBZZ0zZw4bN27kzJkzQF4LyuzZs7lz5w46OjoAjB49mmPHjnHy5EkeP36MoaEhixYtKnBtld9//52pU6eSkJAg3bsXL16gr6/Pzp07adGiRZH3Pr9cycnJqKqqAuDh4YGKigobN24kNTW1WPd/2LBhSuMVTExMsLCwYP/+/dKxLl26kJmZyb59+wgLC6Nly5bcuHEDY2NjAOLj47G0tOT06dPSWiGWlpasWLFCSsPDw4MnT56wd+9eIG+MxZYtW9ixYwfnz58nLCyMSpUqFVnuf8t/7ufPn6du3brS8fXr19OzZ0+ys7MVwjdo0IDGjRsTEBBAv379uHnzJgcPHpTOP336FC0tLfbt20fLli1JTEwkMjISOzs7srOzWbVqFevWrePUqVPY2toCeX8PcnJyFNZ6adCgAU2aNFGosL5u69at+Pj4kJGRUWjZZDIZO3bsoF27dgrHt2zZgpeXF8OGDWPhwoWcP38eU1NTIK9lrHHjxjx48OCN44v8/Pzw9/dXOi5m8RKEL5OYxUsQvk1iJfkCNGzYUHrBBrC3tycwMJCLFy+Sk5ODmZmZQvjs7GzKlCkj7aupqb3xi3lmZia3b9/G0dFR4bijoyNxcXEKx+zs7JTiW1paKnTJKV++PN999520r6qqSpkyZUhPT5eObdq0iQULFpCcnExWVhavXr1SeugmJiZS5QSgQoUKUhoJCQlkZ2fTtGnTAssUFxfHtWvXFOJD3sDu/DE4b2JpaSlVTvKvf/HiRYBi3//C2NvbK+3nz+yVkJCAsbGxVDkBqF27Nvr6+iQkJFC/fn0SEhLo16+fQhqOjo5KX/SHDx+Ouro6J0+epGzZsm8u9H/M3Nwcc3Nzad/BwYHk5GTmzZun0GXt37/h138LAIcPH2bGjBlcuXKFzMxMXr16xfPnz3n69CmamppvlaeffvqJHTt2MHPmTJYuXSpVTt7Wr7/+yogRI6T9zMxMhWcqCIIgCMLX45uqoBQmKysLVVVVzp49q/ASDXmrdufT0NBQqOC8Ly0tLaVjJUuWVNiXyWQFHsvNzQXyuv54enri7++Pq6srenp6bNy4kcDAwDemm5/Gmxb2y8rKol69eoSGhiqdMzQ0LDJuca5f3Pv/qTVv3pwNGzZw8OBBPD09P1i6RkZGvHjxgocPHyq0JNy9excjIyMpzOnTpxXi5Y+jyQ9TkAYNGvDnn38qHCvqWaSkpPDjjz/yyy+/MG3aNAwMDPjzzz/p3bs3L168eOsKytOnT6Xn+u8ujm9DXV39nSegEARBEAThy/JNjUE5deqUwv7JkycxNTXFxsaGnJwc0tPTqVmzpsJW1MtfQXR1dalYsaJS3//o6Ghq16793mX4t+PHj1O1alXGjRuHnZ0dpqam3Lx5863SMDU1RUNDg/Dw8ALP29rakpSURLly5ZTuj56e3nuXoTj3X01NjZycnALj5w8kf33fwsICAAsLC27dusWtW7ek8/Hx8Tx8+FB6HhYWFsV6Xm3atGH9+vX06dOHjRs3vl+hX1OvXj1KliypcP8TExNJTU2VWofs7e25ePGiQktHWFgYurq6Rf6uYmNjqVChQrHzcvbsWXJzcwkMDKRhw4aYmZlx+/btN8YrWbJkgc9n5MiRqKiosH//fhYsWMCRI0ekc2pqagCFPldBEARBEL5N31QFJTU1lREjRpCYmMiGDRtYuHAhQ4cOxczMDE9PT7y8vNi+fTs3btzg9OnTzJgxQxqD8DZGjRpFQEAAmzZtIjExkbFjxxIbG6sw3uRDMTU1JTU1lY0bN5KcnMyCBQvYsWPHW6VRqlQpxowZw+jRo1m7di3JycmcPHmS3377DQBPT0/Kli1L27ZtiYqK4saNG0RGRjJkyBCFwfrvqjj338TEhKysLMLDw8nIyODp06dS/OjoaGbNmsXVq1dZvHgxW7Zske51s2bNsLKywtPTk3PnznH69Gm8vLxwdnaWutiNGjWK4OBgli5dSlJSEnPnzmX79u0KA/HztW/fnnXr1tGzZ0+2bt1arPLdv3+f2NhY4uPjgbzKR2xsrLQ+iZ6eHr1792bEiBFERERw9uxZevbsib29PQ0bNgSgRYsW1K5dm+7duxMXF8fBgwcZP348AwcOlFoW5s+fz65du7h27RqXLl1i2LBhHDlyhIEDBxb7WdSsWZOXL1+ycOFCrl+/zrp161i2bJlCmL///ptatWoptOiYmJgQHh7OnTt3ePDgAQB79+5l9erVhIaG0rx5c0aNGkWPHj2k81WrVkUmk7Fnzx7++eefImcKEwRBEATh2/FNVVC8vLx49uwZDRo0YODAgQwdOlQae7BmzRq8vLwYOXIk5ubmtGvXjpiYGKpUqfLW1xkyZAgjRoxg5MiRWFlZceDAAXbv3v3O/e+L0qZNG4YPH86gQYOoW7cux48fZ8KECW+dzoQJExg5ciQTJ07EwsKCzp07S1/rNTU1OXbsGFWqVKFDhw5YWFjQu3dvnj9/XuQAp7fxpvvv4OCAj48PnTt3xtDQkFmzZklxR44cyZkzZ7CxsWHq1KnMnTtXmhVNJpOxa9cuSpcuTaNGjWjWrBnVq1dn06ZNUvx27doRFBTEnDlzsLS0ZPny5axZswYXF5cC89qpUydCQkLo3r0727dvf2PZdu/ejY2NDa1atQLyBvHb2NgovPjPmzePH3/8kY4dO9KoUSOMjIwU0lZVVWXPnj2oqqpib29Pt27d8PLyYvLkyVKYFy9eSL85Z2dn4uLiOHz4cKFjiwpibW3N3LlzCQgI4LvvviM0NJQZM2YohHn58iWJiYkKlcTAwEDCwsIwNjbGxsaGf/75h969e+Pn5ycN0Pf396d8+fL4+PgAeZNJ+Pv7M3bsWMqXL8+gQYOKnU9BEARBEL5e39QsXnXr1pUGTwuC8OXKnwVEzOIlCF8mMYuXIHybxCxegiB89Y5N7frBWvEEQRAEQfg8fFNdvISPQ1tbu9Dt9fU2vkZRUVFFll8QBEEQBEF4O99MC0pkZOSnzsJXKzY2ttBzb7uY4ZfGzs6uyPILgiAIgiAIb+ebqaAIH0/NmjU/dRY+GQ0NjW+6/J9ao/EbxBgU4bMkxlgIgiC8O9HF6wuVkpKCTCb7T77eR0ZGIpPJePjw4Ue/1rfOxcWFYcOGFXre29ubdu3avfd1ZDIZO3fuBP7b35IgCIIgCMKbiArKF8rY2Ji0tDS+++67D5puQS/IDg4OpKWlfZBFGYX3ExQURHBw8KfOhpLg4GD09fXfOt6HqnAJgiAIgvD1EF28vlCqqqpvvcr9u1JTU/vPriUUTVQSBUEQBEH42okWlI/ExcWFIUOGMHr0aAwMDDAyMsLPz086P3fuXKysrNDS0sLY2JgBAwZIK2lnZmaioaHB/v37FdLcsWMHOjo6PH36tMBuOfmLQZYqVYrGjRsTEhKi0DXr3r17dO3alUqVKqGpqYmVlRUbNmyQ4nt7e3P06FGCgoKQyWTIZDJSUlIK7OK1bds2LC0tUVdXx8TEhMDAQIW8mpiYMH36dHr16oWOjg5VqlRhxYoVxb5/Y8aMwczMDE1NTapXr86ECRN4+fKldN7Pz4+6deuyevVqqlSpgra2NgMGDCAnJ4dZs2ZhZGREuXLlmDZtmkK6Rd33/OeWX/bXt5SUFABSU1Np27Yt2tra6Orq4uHhwd27d5XytW7dOkxMTNDT06NLly48fvy42GV/3d69e9HT0yM0NBRQbnF40+8MICkpiUaNGlGqVClq165NWFjYG6976dIlWrZsiba2NuXLl6d79+5kZGQUGDYyMpKePXvy6NEj6X75+flx5coVNDU1Wb9+vRR28+bNaGhoEB8fj5+fHyEhIezatUuKJyazEARBEARBVFA+opCQELS0tDh16hSzZs1i8uTJ0suhiooKCxYs4PLly4SEhHDkyBFGjx4NgK6uLj/++KPCix1AaGgo7dq1Q1NTU+laN27coFOnTrRr1464uDj69+/PuHHjFMI8f/6cevXqsXfvXi5dukS/fv3o3r07p0+fBvK6D9nb29O3b1/S0tJIS0vD2NhY6Vpnz57Fw8ODLl26cPHiRfz8/JgwYYJS16PAwEDs7Ow4f/48AwYM4JdffiExMbFY905HR4fg4GDi4+MJCgpi5cqVzJs3TyFMcnIy+/fv58CBA2zYsIHffvuNVq1a8ddff3H06FECAgIYP348p06dkuIUdd8Btm/fLpU9LS2NDh06YG5uTvny5cnNzaVt27bcv3+fo0ePEhYWxvXr1+ncubNSvnbu3MmePXvYs2cPR48eZebMmcUq9+vWr19P165dCQ0NxdPTs9BwRf3OcnNz6dChA2pqapw6dYply5YxZsyYIq/78OFDmjRpgo2NDWfOnOHAgQPcvXsXDw+PAsM7ODgwf/58dHV1pfvm6+tLrVq1mDNnDgMGDCA1NZW//voLHx8fAgICqF27Nr6+vnh4eODm5ibFc3BwKPAa2dnZZGZmKmyCIAiCIHydRBevj6hOnTpMmjQJAFNTUxYtWkR4eDjNmzdXGOdhYmLC1KlT8fHxYcmSJQB4enrSvXt3nj59iqamJpmZmezdu5cdO3YUeK3ly5djbm7O7NmzATA3N+fSpUsKLQiVKlXC19dX2h88eDAHDx5k8+bNNGjQAD09PdTU1NDU1CyyS9fcuXNp2rQpEyZMAMDMzIz4+Hhmz56Nt7e3FM7d3Z0BAwYAeS0i8+bNIyIiAnNz8zfeu/HjxyvcH19fXzZu3KhQmcjNzWX16tXo6OhQu3ZtGjduTGJiIvv27UNFRQVzc3MCAgKIiIjg+++/B3jjfTcwMJDOz5s3jyNHjnDq1Ck0NDQICwvj4sWL3LhxQ6q4rV27FktLS2JiYqhfv76Ur+DgYHR0dADo3r074eHhSq05RVm8eDHjxo3jjz/+wNnZuciwRf3ODh8+zJUrVzh48CAVK1YEYPr06bRs2bLQ9BYtWoSNjQ3Tp0+Xjq1evRpjY2OuXr2KmZmZQng1NTX09PSQyWRKv5sBAwawb98+unXrhpqaGvXr12fw4MFA3vo5GhoaZGdnv7EL4YwZM/D39y8yjCAIgiAIXwdRQfmI6tSpo7BfoUIF0tPTATh8+DAzZszgypUrZGZm8urVK54/fy5VSNzd3SlZsiS7d++mS5cubNu2DV1dXZo1a1bgtRITE6UX5HwNGjRQ2M/JyWH69Ols3ryZv//+mxcvXpCdnV1gi0xREhISaNu2rcIxR0dH5s+fT05ODqqqqkrlz395zS//m2zatIkFCxaQnJxMVlYWr169Ulox3MTERKoEAJQvXx5VVVVUVFQUjr1+zTfd93z79+9n7Nix/PHHH9ILeUJCAsbGxgqtSrVr10ZfX5+EhATp/v87X68/9+LYunUr6enpREdHKz3TghT1O8vPc37lBMDe3r7I9OLi4oiIiChwocnk5GSlCsqbrF69GjMzM1RUVLh8+TIymeyt4gP8+uuvjBgxQtrPzMwssHVPEARBEIQvn+ji9RGVLFlSYV8mk5Gbm0tKSgo//vgjderUYdu2bZw9e5bFixcD8OLFCyDvq3SnTp2kbl7r16+nc+fOlCjx7nXK2bNnExQUxJgxY4iIiCA2NhZXV1fpmh9aYeV/kxMnTuDp6Ym7uzt79uzh/PnzjBs3TimfBaVf1DWLc98B4uPj6dKlCzNnzqRFixbFL3AR+SpOufPZ2NhgaGjI6tWrkcvlH/16/5aVlUXr1q2JjY1V2PLHsrytuLg4njx5wpMnT0hLS3unPKmrq6Orq6uwCYIgCILwdRItKJ/A2bNnyc3NJTAwUPrav3nzZqVwnp6eNG/enMuXL3PkyBGmTp1aaJrm5ubs27dP4VhMTIzCfnR0NG3btqVbt25AXlekq1evUrt2bSmMmpoaOTk5RebfwsKC6OhopbTNzMyk1pP3cfz4capWraowhubmzZvvnW5x7ntGRgatW7emY8eODB8+XOGchYUFt27d4tatW9LX+/j4eB4+fKhwD99XjRo1CAwMxMXFBVVVVRYtWvTOaeXnOS0tjQoVKgBw8uTJIuPY2tqybds2TExMil0hLux3c//+fby9vRk3bhxpaWl4enpy7tw5NDQ0iownCIIgCMK3S7SgfAI1a9bk5cuXLFy4kOvXr7Nu3TqWLVumFK5Ro0YYGRnh6elJtWrVpHEUBenfvz9XrlxhzJgxXL16lc2bN0uD1vO71JiamhIWFsbx48dJSEigf//+CjNQQV73pFOnTpGSkkJGRkaBX+JHjhxJeHg4U6ZM4erVq4SEhLBo0SKF8S3vw9TUlNTUVDZu3EhycjILFiwodOzN2yjOfe/YsSOampr4+flx584dacvJyaFZs2ZYWVlJL9mnT5/Gy8sLZ2dn7Ozs3jt/rzMzMyMiIoJt27YVuXDjmzRr1gwzMzN69OhBXFwcUVFRSpMn/NvAgQO5f/8+Xbt2JSYmhuTkZA4ePEjPnj2lysSiRYto2rSpFMfExISsrCzCw8PJyMjg6dOnAPj4+GBsbMz48eOZO3cuOTk5Cr8TExMTLly4QGJiIhkZGQoztQmCIAiC8G0SFZRPwNramrlz5xIQEMB3331HaGgoM2bMUAonk8no2rUrcXFxRc7iBFCtWjW2bt3K9u3bqVOnDkuXLpVeRNXV1YG8gee2tra4urri4uKCkZGR0iJ5vr6+qKqqUrt2bQwNDUlNTVW6lq2tLZs3b2bjxo189913TJw4kcmTJysMkH8fbdq0Yfjw4QwaNIi6dety/PhxaUD++yjOfT927BiXLl2iatWqVKhQQdpu3bqFTCZj165dlC5dmkaNGtGsWTOqV6/Opk2b3jtvBTE3N+fIkSNs2LCBkSNHvlMaKioq7Nixg2fPntGgQQP69OnzxsH6FStWJDo6mpycHFq0aIGVlRXDhg1DX19fannKyMggOTlZiuPg4ICPjw+dO3fG0NCQWbNmsXbtWvbt28e6desoUaIEWlpa/P7776xcuVKaQrtv376Ym5tjZ2eHoaGhUsucIAiCIAjfHpm8OJ3chS/StGnTWLZsGbdu3frUWRGEDyozMxM9PT2sBy9DVV3jU2dHEJScne31qbMgCILw2cn/9/vRo0dFjicVY1C+IkuWLKF+/fqUKVOG6OhoZs+ezaBBgz51tgThozk2tasYMC8IgiAIXxnRxesrkpSURNu2balduzZTpkxh5MiRSquKfw6mT5+OtrZ2gVtR63N86VJTUwstt7a2doHd6QRBEARBEL41oouX8J+7f/8+9+/fL/CchoYGlSpV+o9z9N949eoVKSkphZ5/m1mzvnXFbSIWBEEQBOHzIbp4CZ8tAwMDhRXbvxUlSpSgZs2anzobX5VG4zeIMSjCexPjRQRBED4voovXR+bt7a00U5bw4fj5+VG3bt2Pfp2v5TkGBwejr6//qbMhCIIgCIJQKFFB+ciCgoKk9UiE9yOTydi5c+enzsZbS0tL4+eff8bMzAwVFZVC1zXZsmULtWrVolSpUlhZWSktvCmXy5k4cSIVKlRAQ0ODZs2akZSUpBDGxMQEmUymsM2cOfNjFU3yrhU4ExMT5s+f/8HzIwiCIAjCl0tUUD4yPT098cX6G5ednY2hoSHjx4/H2tq6wDDHjx+na9eu9O7dm/Pnz9OuXTvatWvHpUuXpDCzZs1iwYIFLFu2jFOnTqGlpYWrqyvPnz9XSGvy5MmkpaVJ2+DBgz9q+QRBEARBED4kUUH5QLZu3YqVlRUaGhqUKVOGZs2a8eTJE4UvyykpKUpft2UyGS4uLlI6f/75J05OTmhoaGBsbMyQIUN48uRJsfKwbt067Ozs0NHRwcjIiJ9//pn09HTp/IMHD/D09MTQ0BANDQ1MTU1Zs2YNAJGRkchkMh4+fCiFj42NRSaTSQO7b968SevWrSldujRaWlpYWloqfeUvSH7a4eHh2NnZoampiYODA4mJiQrhdu3aha2tLaVKlaJ69er4+/vz6tUrIO9LO0D79u2RyWTSfr7ly5djbGyMpqYmHh4ePHr0SDqXm5vL5MmTqVy5Murq6tStW5cDBw4oxL948SJNmjSRnl+/fv3IysoqtEwxMTEYGhoSEBDwxvKbmJgQFBSEl5cXenp6BYYJCgrCzc2NUaNGYWFhwZQpU7C1tWXRokVAXuvJ/PnzGT9+PG3btqVOnTqsXbuW27dvK7Uq5T///E1LS0vpegcPHsTCwgJtbW3c3NxIS0tTKFvz5s0pW7Ysenp6ODs7c+7cuULL5+fnR0hICLt27ZJ+05GRkaxduxZtbW2FVp4BAwZQq1Ytnj59iouLCzdv3mT48OFSPEEQBEEQBFFB+QDS0tLo2rUrvXr1IiEhgcjISDp06MC/J0gzNjZW+LJ9/vx5ypQpQ6NGjQBITk7Gzc2Njh07cuHCBTZt2sSff/5Z7LVMXr58yZQpU4iLi2Pnzp2kpKQorO4+YcIE4uPj2b9/PwkJCSxdupSyZcsWu5wDBw4kOzubY8eOcfHiRQICAtDW1i52/HHjxhEYGMiZM2coUaIEvXr1ks5FRUXh5eXF0KFDiY+PZ/ny5QQHB0urnsfExACwZs0a0tLSpH2Aa9eusXnzZv744w8OHDjA+fPnGTBggHQ+KCiIwMBA5syZw4ULF3B1daVNmzbSi/OTJ09wdXWldOnSxMTEsGXLFg4fPlzofT9y5AjNmzdn2rRpjBkzptjlL8qJEydo1qyZwjFXV1dOnDgBwI0bN7hz545CGD09Pb7//nspTL6ZM2dSpkwZbGxsmD17tlTJy/f06VPmzJnDunXrOHbsGKmpqfj6+krnHz9+TI8ePfjzzz85efIkpqamuLu78/jx4wLz7uvri4eHh1TRSUtLw8HBAS8vL9zd3fH09OTVq1fs3buXVatWERoaiqamJtu3b6dy5coKLT6Fyc7OJjMzU2ETBEEQBOHrJGbx+gDS0tJ49eoVHTp0oGrVqgBYWVkphVNVVcXIyAiA58+f065dO+zt7aW1SmbMmIGnp6c0RsHU1JQFCxbg7OzM0qVLKVWqVJH5eP2Fv3r16ixYsID69euTlZUlrbNhY2ODnZ0dgFIrxJukpqbSsWNHqWzVq1d/q/jTpk3D2dkZgLFjx9KqVSueP39OqVKl8Pf3Z+zYsfTo0UNKe8qUKYwePZpJkyZhaGgIgL6+vnQP8z1//py1a9dK0xMvXLiQVq1aERgYiJGREXPmzGHMmDF06dIFgICAACIiIpg/fz6LFy9m/fr1Uhr5rQ2LFi2idevWBAQEUL58eelaO3bswMvLi1WrVtG5c+e3Kn9R7ty5o3AdgPLly3Pnzh3pfP6xwsIADBkyBFtbWwwMDDh+/Di//voraWlpzJ07Vwrz8uVLli1bRo0aNQAYNGgQkydPls43adJE4RorVqxAX1+fo0eP8uOPPyrlXVtbGw0NDbKzs5WezfLly6lTpw5Dhgxh+/bt+Pn5Ua9ePSBvNjdVVVWpxacoM2bMwN/fv8gwgiAIgiB8HUQF5QOwtramadOmWFlZ4erqSosWLejUqROlS5cuNE6vXr14/PgxYWFhqKjkNWTFxcVx4cIFQkNDpXByuZzc3Fxu3LiBhYVFkfk4e/Ysfn5+xMXF8eDBA3Jzc4G8ikXt2rX55Zdf6NixI+fOnaNFixa0a9cOBweHYpdzyJAh/PLLLxw6dIhmzZrRsWNH6tSpU+z4r4etUKECAOnp6VSpUoW4uDiio6OlFhOAnJwcnj9/ztOnT9HU1Cw03SpVqiisnWJvb09ubi6JiYloampy+/ZtHB0dFeI4OjoSFxcHQEJCAtbW1gpdoRwdHaU08isFp06dYs+ePWzduvWzndFrxIgR0p/r1KmDmpoa/fv3Z8aMGairqwOgqakpVU4g71m83hXw7t27jB8/nsjISNLT08nJyeHp06fvtJBk6dKl+e2333B1dcXBwYGxY8e+U7l+/fVXhbJlZmZibGz8TmkJgiAIgvB5E128PgBVVVXCwsLYv38/tWvXZuHChZibm3Pjxo0Cw0+dOpWDBw+ye/dudHR0pONZWVn079+f2NhYaYuLiyMpKUnhhbIg+d2UdHV1CQ0NJSYmhh07dgDw4sULAFq2bCn1+b99+zZNmzaVuvbkV5Je75b28uVLhWv06dOH69ev0717dy5evIidnR0LFy4s9n0qWbKk9Of88Qb5laisrCz8/f0Vyn7x4kWSkpLe2HL0X6lRowa1atVi9erVSvfmfRkZGXH37l2FY3fv3pVaFvL/W1SYgnz//fdKC0S+/hwg71m8/tx79OhBbGwsQUFBHD9+nNjYWMqUKSP9jt7WsWPHUFVVJS0trdjjqf5NXV0dXV1dhU0QBEEQhK+TqKB8IDKZDEdHR/z9/Tl//jxqampSBeF127ZtY/LkyWzevFmp0mFra0t8fDw1a9ZU2tTU1Iq8/pUrV7h37x4zZ87EycmJWrVqKXwVz2doaEiPHj34/fffmT9/PitWrJCOAwrjAGJjY5XiGxsb4+Pjw/bt2xk5ciQrV658470pDltbWxITEwsse37lqWTJkuTk5CjFTU1N5fbt29L+yZMnUVFRwdzcHF1dXSpWrEh0dLRCnOjoaGrXrg2AhYUFcXFxCi/P0dHRUhr5ypYty5EjR7h27RoeHh4ftJJib29PeHi4wrGwsDDs7e0BqFatGkZGRgphMjMzOXXqlBSmILGxsaioqFCuXLli5yU6OpohQ4bg7u6OpaUl6urqZGRkFBlHTU2twGdz/PhxAgIC+OOPP9DW1lYa11NYPEEQBEEQvl2igvIBnDp1iunTp3PmzBlSU1PZvn07//zzj1KXrEuXLuHl5cWYMWOwtLTkzp073Llzh/v37wMwZswYjh8/zqBBg4iNjSUpKYldu3YVa5B8lSpVUFNTY+HChVy/fp3du3czZcoUhTATJ05k165dXLt2jcuXL7Nnzx4pjzVr1sTY2Bg/Pz+SkpLYu3cvgYGBCvGHDRvGwYMHuXHjBufOnSMiIuKN3c6Ka+LEiaxduxZ/f38uX75MQkICGzduZPz48VIYExMTwsPDuXPnDg8ePJCOlypVih49ehAXF0dUVBRDhgzBw8NDalkYNWoUAQEBbNq0icTERMaOHUtsbCxDhw4FwNPTU0rj0qVLREREMHjwYLp376405qNcuXIcOXKEK1eu0LVrV6UB6IXJbxXKysrin3/+ITY2lvj4eOn80KFDOXDgAIGBgVy5cgU/Pz/OnDkjPXuZTMawYcOYOnUqu3fv5uLFi3h5eVGxYkWpu9mJEyeYP38+cXFxXL9+ndDQUIYPH063bt2K7G74b6ampqxbt46EhAROnTqFp6cnGhqKq7V7eXnx66+/SvsmJiZcuHCBxMREMjIyePnyJY8fP6Z79+4MGTKEli1bEhoayqZNm9i6datCvGPHjvH333+/sRIkCIIgCMK3QVRQPgBdXV2OHTuGu7s7ZmZmjB8/nsDAQFq2bKkQ7syZMzx9+pSpU6dSoUIFaevQoQOQN2bg6NGjXL16FScnJ2xsbJg4cSIVK1Z8Yx4MDQ0JDg5my5Yt1K5dm5kzZzJnzhyFMGpqavz666/UqVOHRo0aoaqqysaNG4G81okNGzZw5coV6tSpQ0BAAFOnTlWIn5OTw8CBA7GwsMDNzQ0zMzOWLFnyPrdO4urqyp49ezh06BD169enYcOGzJs3T5p0ACAwMJCwsDCMjY2xsbGRjtesWZMOHTrg7u5OixYtqFOnjkK+hgwZwogRIxg5ciRWVlYcOHCA3bt3Y2pqCuSNyTh48CD379+nfv36dOrUiaZNm0pT/P6bkZERR44c4eLFi3h6eharBcDGxgYbGxvOnj3L+vXrsbGxwd3dXTrv4ODA+vXrWbFiBdbW1mzdupWdO3fy3XffSWFGjx7N4MGD6devnzT5wYEDB6QucOrq6mzcuBFnZ2csLS2ZNm0aw4cPl1rJiuu3337jwYMH2NraShWMf7fApKamKrS29e3bF3Nzc+zs7DA0NCQ6OpqhQ4eipaXF9OnTgbyJI6ZPn07//v35+++/gbw1W1JSUqhRo4bUiicIgiAIwrdNJv/3XLiCIAifuczMTPT09LAevAxVdY03RxCEIpyd7fWpsyAIgvBNyP/3+9GjR0WOJxWzeAmC8MU6NrWrGDAvCIIgCF8Z0cXrCxEVFYW2tnah26fk4+NTaL58fHw+ad7+C5aWloWW//UpowVBEARBEIQ3E128vhDPnj2T+u0XpGbNmv9hbhSlp6cXurK3rq7uW80g9SW6efNmoTN6lS9fXmEqaeHDKG4TsSAIgiAIn4/i/vstKiiCIHxxxBiUL4MY2yEIgiC8rrgVFNHFS/jiyWQydu7c+VGvkZKSgkwmK3BtmC+NiYkJ8+fP/9TZEARBEARBKJCooAhfDD8/P+rWrfups/FOVqxYgYuLC7q6ushkMh4+fKgU5v79+3h6eqKrq4u+vj69e/cmKytLIcyFCxdwcnKiVKlSGBsbM2vWLIXzwcHByGQyhS1/GuKP6V0rcMHBwejr63+UPAmCIAiC8GUSFZSv3Idc7Vx4d0+fPsXNzY3//e9/hYbx9PTk8uXLhIWFsWfPHo4dO0a/fv2k85mZmbRo0YKqVaty9uxZZs+ejZ+fn9I6J7q6uqSlpUnbzZs3P1q5BEEQBEEQPjRRQflMbd26FSsrKzQ0NChTpgzNmjXjyZMnAKxevRpLS0vU1dWpUKGCwkrzMpmMpUuX0qZNG7S0tJg2bRoAu3btwtbWllKlSlG9enX8/f0VVkF/+PAhffr0wdDQEF1dXZo0aUJcXJx0Pr/1Yt26dZiYmKCnp0eXLl14/Phxscrj4uLCkCFDGD16NAYGBhgZGeHn56cQpqg8BAcH4+/vT1xcnNQyEBwcLMVNS0ujZcuWaGhoUL16dYXVygEuXrxIkyZNpPvZr18/hdaJ3NxcJk+eTOXKlVFXV6du3bocOHCg0PLk5OTQq1cvatWqRWpq6hvLP2zYMMaOHUvDhg0LPJ+QkMCBAwdYtWoV33//PT/88AMLFy5k48aN3L59G4DQ0FBevHghPf8uXbowZMgQ5s6dq5CWTCbDyMhI2sqXL690vadPn9KrVy90dHSoUqWKUiVnzJgxmJmZoampSfXq1ZkwYUKRld1q1aoBeQtSymQyXFxceP78OZaWlgqVrOTkZHR0dFi9ejWRkZH07NmTR48eSc/0378JQRAEQRC+PaKC8hlKS0uja9eu9OrVi4SEBCIjI+nQoQNyuZylS5cycOBA+vXrx8WLF9m9e7fSDF5+fn60b9+eixcv0qtXL6KiovDy8mLo0KHEx8ezfPlygoODpcoLwE8//UR6ejr79+/n7Nmz2Nra0rRpU+7fvy+FSU5OZufOnezZs4c9e/Zw9OhRZs6cWexyhYSEoKWlxalTp5g1axaTJ08mLCysWHno3LkzI0eOxNLSUmoZ6Ny5sxR3woQJdOzYkbi4ODw9PenSpQsJCQkAPHnyBFdXV0qXLk1MTAxbtmzh8OHDChW7oKAgAgMDmTNnDhcuXMDV1ZU2bdqQlJSkVI7s7Gx++uknYmNjiYqKokqVKsW+B4U5ceIE+vr62NnZSceaNWuGiooKp06dksI0atQINTU1KYyrqyuJiYk8ePBAOpaVlUXVqlUxNjambdu2XL58Wel6gYGB2NnZcf78eQYMGMAvv/xCYmKidF5HR4fg4GDi4+MJCgpi5cqVzJs3r9D8nz59GoDDhw+TlpbG9u3bKVWqFKGhoYSEhLBr1y5ycnLo1q0bzZs3p1evXjg4ODB//nyFFh9fX993v4mCIAiCIHwVxEKNn6G0tDRevXpFhw4dqFq1KgBWVlYATJ06lZEjRzJ06FApfP369RXi//zzz/Ts2VPa79WrF2PHjqVHjx4AVK9enSlTpjB69GgmTZrEn3/+yenTp0lPT0ddXR2AOXPmsHPnTrZu3Sp9Ac/NzSU4OFiaNrd79+6Eh4crVHSKUqdOHSZNmgSAqakpixYtIjw8nObNmxcrD9ra2pQoUQIjIyOltH/66Sf69OkDwJQpUwgLC2PhwoUsWbKE9evX8/z5c9auXYuWlhYAixYtonXr1gQEBFC+fHnmzJnDmDFj6NKlCwABAQFEREQwf/58Fi9eLF0nKyuLVq1akZ2dTUREBHp6esUq+5vcuXNHaTrmEiVKYGBgwJ07d6Qw+S0V+fJbR+7cuUPp0qUxNzdn9erV1KlTh0ePHjFnzhwcHBy4fPkylStXluK5u7szYMAAIK+1ZN68eURERGBubg7A+PHjpbAmJib4+vqyceNGRo8eXWD+DQ0NAShTpozC86lbty5Tp06lT58+dOnShZs3b7Jnzx4A1NTU0NPTk1p8ipKdnU12dra0X9i01oIgCIIgfPlEBeUzZG1tTdOmTbGyssLV1ZUWLVrQqVMnXr58ye3bt2natGmR8V//Cg8QFxdHdHS0QkUiJyeH58+f8/TpU+Li4sjKyqJMmTIK8Z49e0ZycrK0b2JiorCmR4UKFUhPTy92uerUqaOw/3r84uahMPb29kr7+QO2ExISsLa2lionAI6OjuTm5pKYmIiGhga3b9/G0dFRIQ1HR0eFbm4AXbt2pXLlyhw5cgQNjc9velt7e3uFe+Hg4ICFhQXLly9nypQp0vHXn0V+BeH1Z7lp0yYWLFhAcnIyWVlZvHr16p3XGxk5ciQ7d+5k0aJF7N+/X+kZF8eMGTPw9/d/p+sLgiAIgvBlERWUz5CqqiphYWEcP36cQ4cOsXDhQsaNG0d4eHix4r/+Ig55X/39/f3p0KGDUthSpUqRlZVFhQoViIyMVDr/+gxLJUuWVDgnk8nIzc0tVp7eFL+4efjU3N3d+f333zlx4gRNmjT5YOn+u4IA8OrVK+7fvy+1LhgZGXH37l2FMPn7hbVAlCxZEhsbG65du6Z0/HWvP4sTJ07g6emJv78/rq6u6OnpsXHjRgIDA9+pbOnp6Vy9ehVVVVWSkpJwc3N76zR+/fVXRowYIe1nZmZibGz8TvkRBEEQBOHzJsagfKZkMhmOjo74+/tz/vx51NTUCAsLw8TEpNgVlXy2trYkJiZSs2ZNpU1FRQVbW1vu3LlDiRIllM6XLVv2I5VQOY9vyoOamho5OTkFxj958qTSvoWFBQAWFhbExcVJkwwAREdHo6Kigrm5Obq6ulSsWJHo6GiFNKKjo6ldu7bCsV9++YWZM2fSpk0bjh49+t7lzmdvb8/Dhw85e/asdOzIkSPk5uby/fffS2GOHTumMFg9LCwMc3NzSpcuXWC6OTk5XLx4kQoVKhQ7L8ePH6dq1aqMGzcOOzs7TE1N3zgTWP64mIKeT69evbCysiIkJIQxY8ZIY4Py4xX2TF+nrq6Orq6uwiYIgiAIwtdJVFA+Q6dOnWL69OmcOXOG1NRUtm/fzj///IOFhQV+fn4EBgayYMECkpKSOHfuHAsXLiwyvYkTJ7J27Vr8/f25fPkyCQkJbNy4URpn0KxZM+zt7WnXrh2HDh0iJSWF48ePM27cOM6cOfNfFLlYeTAxMeHGjRvExsaSkZGhMCZhy5YtrF69mqtXrzJp0iROnz4tDYL39PSkVKlS9OjRg0uXLhEREcHgwYPp3r27NIZj1KhRBAQEsGnTJhITExk7diyxsbEKY33yDR48mKlTp/Ljjz/y559/Fqt8d+7cITY2VmrJuHjxIrGxsdIkBBYWFri5udG3b19Onz5NdHQ0gwYNokuXLlSsWBHIG1ukpqZG7969uXz5Mps2bSIoKEihZWHy5MkcOnSI69evc+7cObp168bNmzel8TnFYWpqSmpqKhs3biQ5OZkFCxawY8cOhTCnT5+mVq1a/P333wCUK1cODQ0NDhw4wN27d3n06BEAixcv5sSJE4SEhODp6Um7du3w9PTkxYsXQN4zzcrKIjw8nIyMDJ4+fVrsfAqCIAiC8HUSFZTPkK6uLseOHcPd3R0zMzPGjx9PYGAgLVu2pEePHsyfP58lS5ZgaWnJjz/+WOBMU69zdXVlz549HDp0iPr169OwYUPmzZsnDcCXyWTs27ePRo0a0bNnT8zMzKQBzQVNUfsxFCcPHTt2xM3NjcaNG2NoaMiGDRuk+P7+/mzcuJE6deqwdu1aNmzYILV+aGpqcvDgQe7fv0/9+vXp1KkTTZs2ZdGiRVL8IUOGMGLECEaOHImVlRUHDhxg9+7dmJqaFpjfYcOG4e/vj7u7O8ePH39j+ZYtW4aNjQ19+/YFoFGjRtjY2LB7924pTGhoKLVq1aJp06a4u7vzww8/KEz/q6enx6FDh7hx4wb16tVj5MiRTJw4UWEa3wcPHtC3b18sLCxwd3cnMzOT48ePK7UEFaVNmzYMHz6cQYMGUbduXY4fP86ECRMUwjx9+pTExESpNadEiRIsWLCA5cuXU7FiRdq2bcuVK1cYNWoUS5YskbpjLVmyhIyMDCk9BwcHfHx86Ny5M4aGhkoLTwqCIAiC8O2RyeVy+afOhCAIwtvIzMxET08P68HLUFX//CYrEPKcne31qbMgCIIgfEby//1+9OhRkd21xSB5QRC+WMemdhXjUQRBEAThKyO6eAnvLTU1FW1t7UK34qy0/iULDQ0ttOyWlpafOnuCIAiCIAhfFNGCIry3ihUrSmuOFHb+a9amTRtppq1/+/d0voIgCIIgCELRRAVFeG/5UwN/q3R0dBQWsBT+O43GbxBjUD4gMWZEEARB+ByILl4fkIuLC8OGDfsoaQcHB39WCxZC3hSx8+fP/6R5iIyMRCaT8fDhw496nc/x/r+LlJQUZDJZkS1egiAIgiAIn5KooAhfjI9ZAfzYhgwZQr169VBXV6du3boFhrlw4QJOTk6UKlUKY2PjAqfc3bJlC7Vq1aJUqVJYWVmxb98+hfPe3t7IZDKF7V1Wbn9b71qB8/b2pl27dh88P4IgCIIgfLlEBUUoUk5ODrm5uZ86G1+FXr160blz5wLPZWZm0qJFC6pWrcrZs2eZPXs2fn5+CuugHD9+nK5du9K7d2/Onz9Pu3btaNeuHZcuXVJIy83NjbS0NGl7fb0YQRAEQRCEz52ooHxEe/fuRU9Pj9DQUG7duoWHhwf6+voYGBjQtm1bUlJSADh27BglS5bkzp07CvGHDRuGk5OTwrGdO3diampKqVKlcHV15datWwrnly5dSo0aNVBTU8Pc3Jx169YpnJ87dy5WVlZoaWlhbGzMgAEDyMrKks7nfwnfvXs3tWvXRl1dndTUVNLT02ndujUaGhpUq1aN0NDQt7oXMpmMVatW0b59ezQ1NTE1NVVYpBDg0qVLtGzZEm1tbcqXL0/37t3JyMgA8r60Hz16lKCgIKllIP/+AURHR1OnTh1KlSpFw4YNlV7at23bhqWlJerq6piYmBAYGKhw/sGDB3h5eVG6dGk0NTVp2bJlkQtg/vPPP9jZ2dG+fXuFFe0Ls2DBAgYOHEj16tULPB8aGsqLFy9YvXo1lpaWdOnShSFDhjB37lwpTFBQEG5ubowaNQoLCwumTJmCra2twoKTAOrq6hgZGUlb6dKlla53/fp1GjdujKamJtbW1pw4cUI6d+/ePbp27UqlSpXQ1NTEysqqyEpOZGQkPXv25NGjR9Kz8fPz48qVK2hqarJ+/Xop7ObNm9HQ0CA+Ph4/Pz9CQkLYtWuXFC8yMvKN91IQBEEQhK+bqKB8JOvXr6dr166Ehobi4eGBq6srOjo6REVFER0djba2Nm5ubrx48YJGjRpRvXp1hcrEy5cvCQ0NpVevXtKxp0+fMm3aNNauXUt0dDQPHz6kS5cu0vkdO3YwdOhQRo4cyaVLl+jfvz89e/YkIiJCCqOiosKCBQu4fPkyISEhHDlyhNGjRyvk/enTpwQEBLBq1SouX75MuXLl8Pb25tatW0RERLB161aWLFlCenr6W90Tf39/PDw8uHDhAu7u7nh6enL//n0AHj58SJMmTbCxseHMmTMcOHCAu3fv4uHhAeS9nNvb29O3b1+pZSB/dXKAUaNGERgYSExMDIaGhrRu3Vpa5fzs2bN4eHjQpUsXLl68iJ+fHxMmTCA4OFiK7+3tzZkzZ9i9ezcnTpxALpfj7u4upfG6W7du4eTkxHfffcfWrVtRV1d/q/tQkBMnTtCoUSPU1NSkY66uriQmJvLgwQMpTLNmzRTiubq6KlQuIK/CUK5cOczNzfnll1+4d++e0vXGjRuHr68vsbGxmJmZ0bVrV169egXA8+fPqVevHnv37uXSpUv069eP7t27c/r06QLz7uDgwPz589HV1ZWeja+vL7Vq1WLOnDkMGDCA1NRU/vrrL3x8fAgICKB27dr4+vri4eGh0OLj4ODwXvdREARBEIQvn5jF6yNYvHgx48aN448//sDZ2Znff/+d3NxcVq1ahUwmA2DNmjXo6+sTGRlJixYt6N27N2vWrGHUqFEA/PHHHzx//lx6QYe8SsuiRYukKW1DQkKwsLDg9OnTNGjQgDlz5uDt7c2AAQMAGDFiBCdPnmTOnDk0btwYQGEMh4mJCVOnTsXHx4clS5YoXGfJkiVYW1sDcPXqVfbv38/p06epX78+AL/99hsWFhZvdV+8vb3p2rUrANOnT2fBggWcPn0aNzc3Fi1ahI2NDdOnT5fCr169GmNjY65evYqZmRlqampoampiZGSklPakSZNo3ry5dF8qV67Mjh078PDwYO7cuTRt2pQJEyYAYGZmRnx8PLNnz8bb25ukpCR2795NdHS09IIcGhqKsbExO3fu5KeffpKuk5iYSPPmzWnfvj3z58+Xnuf7unPnDtWqVVM4Vr58eelc6dKluXPnjnTs9TCvt7y5ubnRoUMHqlWrRnJyMv/73/9o2bIlJ06cQFVVVQrn6+tLq1atgLyKo6WlJdeuXaNWrVpUqlQJX19fKezgwYM5ePAgmzdvpkGDBkp5V1NTQ09PD5lMpvRsBgwYwL59++jWrRtqamrUr1+fwYMHA6CtrY2GhgbZ2dkFPtPXZWdnK7RUZWZmFhleEARBEIQvl2hB+cC2bt3K8OHDCQsLw9nZGYC4uDiuXbuGjo6OtICfgYEBz58/Jzk5Gch7eb927RonT54E8rpaeXh4oKWlJaVdokQJqYIAUKtWLfT19UlISAAgISEBR0dHhfw4OjpK5wEOHz5M06ZNqVSpEjo6OnTv3p179+7x9OlTKYyamhp16tSR9hMSEihRogT16tVTuvbbeD1NLS0tdHV1pVaYuLg4IiIiFBY5rFWrFoB0j4pib28v/dnAwABzc/M33pekpCRycnKk8r2+lkmZMmUU0gB49uwZTk5OdOjQQepq9rnp0qULbdq0wcrKinbt2rFnzx5iYmKUuk69/iwqVKgAID2LnJwcpkyZgpWVFQYGBmhra3Pw4MF3XnBz9erVXLhwgXPnzhEcHPxO923GjBno6elJ2+utZ4IgCIIgfF1EBeUDs7GxwdDQkNWrVyOXywHIysqiXr16xMbGKmxXr17l559/BqBcuXK0bt2aNWvWcPfuXfbv36/QvetDSElJ4ccff6ROnTps27aNs2fPsnjxYgBevHghhdPQ0PgoL9//XrRQJpNJA/CzsrJo3bq10j1KSkqiUaNGHzwv70JdXZ1mzZqxZ88e/v777w+atpGREXfv3lU4lr+f37pQWJiiWh+qV69O2bJluXbtmsLx159F/rPOfxazZ88mKCiIMWPGEBERQWxsLK6urgq/kbcRFxfHkydPePLkCWlpae+Uxq+//sqjR4+k7d9jrwRBEARB+HqICsoHVqNGDSIiIti1a5fUlcXW1pakpCTKlStHzZo1FTY9PT0pbp8+fdi0aRMrVqygRo0aSl/9X716xZkzZ6T9xMREHj58KHW1srCwIDo6WiFOdHQ0tWvXBvLGYuTm5hIYGEjDhg0xMzPj9u3bbyxTrVq1ePXqFWfPnlW69odia2vL5cuXMTExUbpH+a1Iampq5OTkFBg/v+UJ8ga8X7169Y33xczMDFVVVSwsLHj16hWnTp2Szt+7d4/ExETp3kHe+J1169ZRr149GjduXKx7V1z29vYcO3ZMYcxLWFgY5ubm0iB3e3t7wsPDFeKFhYUptB79219//cW9e/ekVpLiiI6Opm3btnTr1g1ra2uqV6/O1atXi4xT2LO5f/8+3t7ejBs3Dm9vbzw9PXn27Nkb4/2buro6urq6CpsgCIIgCF8nUUH5CMzMzIiIiGDbtm0MGzYMT09PypYtS9u2bYmKiuLGjRtERkYyZMgQ/vrrLymeq6srurq6TJ06lZ49eyqlW7JkSQYPHsypU6c4e/Ys3t7eNGzYUBoXMGrUKIKDg1m6dClJSUnMnTuX7du3S+MJatasycuXL1m4cCHXr19n3bp1LFu27I3lMTc3x83Njf79+0vX7tOnDxoaH24F74EDB3L//n26du1KTEwMycnJHDx4kJ49e0ovsCYmJpw6dYqUlBQyMjIUpj+ePHky4eHhXLp0CW9vb8qWLSutrzFy5EjCw8OZMmUKV69eJSQkhEWLFkn3xdTUlLZt29K3b1/+/PNP4uLi6NatG5UqVaJt27YK+VRVVSU0NBRra2uaNGmiNPNaYa5du0ZsbCx37tzh2bNnUgtRfqvEzz//jJqaGr179+by5cts2rSJoKAgRowYIaUxdOhQDhw4QGBgIFeuXMHPz48zZ84waNAgIK8VatSoUZw8eZKUlBTCw8Np27YtNWvWxNXVtdjPwtTUlLCwMI4fP05CQgL9+/dXarlZtGgRTZs2lfZNTEzIysoiPDycjIwMqcugj48PxsbGjB8/nrlz55KTk6MwvsXExIQLFy6QmJhIRkZGgZMSCIIgCILwbREVlI/E3NycI0eOsGHDBiZMmMCxY8eoUqUKHTp0wMLCgt69e/P8+XOFL8EqKip4e3uTk5ODl5eXUpqampqMGTOGn3/+GUdHR7S1tdm0aZN0vl27dgQFBTFnzhwsLS1Zvnw5a9aswcXFBQBra2vmzp1LQEAA3333HaGhocyYMaNY5VmzZg0VK1bE2dmZDh060K9fP8qVK/d+N+k1FStWJDo6mpycHFq0aIGVlRXDhg1DX18fFZW8n6mvry+qqqrUrl0bQ0NDhTERM2fOZOjQodSrV487d+7wxx9/SDNi2drasnnzZjZu3Mh3333HxIkTmTx5Mt7e3grlq1evHj/++CP29vbI5XL27dun1C0N8sYCbdiwAUtLS5o0aVKs2cz69OmDjY0Ny5cv5+rVq9jY2GBjYyO1wujp6XHo0CFu3LhBvXr1GDlyJBMnTqRfv35SGg4ODqxfv54VK1ZgbW3N1q1b2blzJ9999x2QV3m6cOECbdq0wczMjN69e1OvXj2ioqLeaqax8ePHY2tri6urKy4uLhgZGSktppiRkaEwNsjBwQEfHx86d+6MoaEhs2bNYu3atezbt49169ZRokQJtLS0+P3331m5ciX79+8HoG/fvpibm2NnZ4ehoaFSS5cgCIIgCN8emTx/oITwWejduzf//POP0hohgiD8n8zMTPT09LAevAxV9Q/XkvetOztb+cOIIAiCIHwo+f9+P3r0qMju2mKa4c/Eo0ePuHjxIuvXrxeVE0EopmNTu4rxKIIgCILwlRFdvD4Tbdu2pUWLFvj4+EjreXwpQkNDFaYHfn2ztLT81Nn76Hx8fAotv4+Pz6fOniAIgiAIwhdFdPES3tvjx4+VBlHnK1myJFWrVv2Pc/TfSk9PL3ThQF1d3Q86VkfIU9wmYkEQBEEQPh+ii5fwn9HR0UFHR+dTZ+OTKVeunKiEfCKNxm8QY1A+EDH+RBAEQfhciC5ehXBxcWHYsGGfOhsfXEpKCjKZjNjYWAAiIyORyWQKa5rs3LmTmjVroqqq+lnfg3+X5WMp6B59qWQyGTt37vzU2RAEQRAEQSiUqKB8JIW91H5uFR8HBwfS0tIUFozs378/nTp14tatW0yZMuUT5u7/eHt7K011+6WYNm0aDg4OaGpqoq+vX2CY1NRUWrVqhaamJuXKlWPUqFG8evVKIUxkZCS2traoq6tTs2ZNgoODFc77+fkhk8kUtlq1an2kUinm610qcH5+ftStW/ej5EkQBEEQhC+X6OL1hXrx4oW0zsf7UFNTw8jISNrPysoiPT0dV1dXKlas+N7pC3nP6qeffsLe3p7ffvtN6XxOTg6tWrXCyMiI48ePk5aWhpeXFyVLlmT69OkA3Lhxg1atWuHj40NoaCjh4eH06dOHChUqKCzCaGlpyeHDh6X9EiXEX3FBEARBEL4sogWlCK9evWLQoEHo6elRtmxZJkyYQP6cAuvWrcPOzg4dHR2MjIz4+eefpQX7UlJSaNy4MQClS5dGJpPh7e2Nt7c3R48eJSgoSPrCnZKSAsClS5do2bIl2tralC9fnu7du5ORkSHlxcXFhUGDBjFs2DDKli2Lq6srvXr14scff1TI88uXLylXrlyBL8IFef3rd2RkpDSWpEmTJshkMiIjIwH4888/cXJyQkNDA2NjY4YMGcKTJ0+KdQ0TExOmT59Or1690NHRoUqVKqxYsUIhzK1bt/Dw8EBfXx8DAwPatm0r3Rs/Pz9CQkLYtWuXdN/y8wVw5coVHBwcKFWqFN999x1Hjx5VSPvo0aM0aNAAdXV1KlSowNixYxVaJ7KzsxkyZAjlypWjVKlS/PDDD8TExBRanqdPn9KyZUscHR2L1Wrg7+/P8OHDsbKyKvD8oUOHiI+P5/fff6du3bq0bNmSKVOmsHjxYmml+WXLllGtWjUCAwOxsLBg0KBBdOrUiXnz5imkVaJECYyMjKStbNmyStfLyMigffv2aGpqYmpqqjCtdU5ODr1796ZatWpoaGhgbm5OUFBQoWUr7Lf+zz//YGRkJFWwAI4fP46amhrh4eEEBwfj7+9PXFyc9Ez/3SIkCIIgCMK3SVRQihASEkKJEiU4ffo0QUFBzJ07l1WrVgF5FYEpU6YQFxfHzp07SUlJkVYmNzY2Ztu2bQAkJiaSlpZGUFAQQUFB2Nvb07dvX9LS0khLS8PY2JiHDx/SpEkTbGxsOHPmDAcOHODu3bt4eHgo5UdNTY3o6GiWLVtGnz59OHDgAGlpaVKYPXv28PTpUzp37vzW5XVwcCAxMRGAbdu2kZaWhoODA8nJybi5udGxY0cuXLjApk2b+PPPPxk0aFCx0w4MDMTOzo7z588zYMAAfvnlF+laL1++xNXVFR0dHaKiooiOjkZbWxs3NzdevHiBr68vHh4euLm5SffNwcFBSnvUqFGMHDmS8+fPY29vT+vWrbl37x4Af//9N+7u7tSvX5+4uDiWLl3Kb7/9xtSpU6X4o0ePZtu2bYSEhHDu3Dlq1qyJq6sr9+/fVyrHw4cPad68Obm5uYSFhRXaZettnDhxAisrK8qXLy8dc3V1JTMzk8uXL0thmjVrphDP1dWVEydOKBxLSkqiYsWKVK9eHU9PT1JTU5Wu5+/vj4eHBxcuXMDd3R1PT0+prLm5uVSuXJktW7YQHx/PxIkT+d///sfmzZsLzHthv3VDQ0NWr16Nn58fZ86c4fHjx3Tv3p1BgwbRtGlTOnfuzMiRI7G0tJSe6bv8ZgVBEARB+PqI/h9FMDY2Zt68echkMszNzbl48SLz5s2jb9++9OrVSwpXvXp1FixYQP369cnKykJbWxsDAwMgb4an119i1dTU0NTUVOhWtWjRImxsbBS+Nq9evRpjY2OuXr2KmZkZAKampsyaNUshj+bm5qxbt47Ro0cDsGbNGn766Se0tbXfurxqamrSbFQGBgZSHmfMmIGnp6c0dsbU1JQFCxbg7OzM0qVLKVWq1BvTdnd3Z8CAAQCMGTOGefPmERERgbm5OZs2bSI3N5dVq1Yhk8mkcujr6xMZGUmLFi3Q0NAgOztb4b7lGzRoEB07dgRg6dKlHDhwgN9++43Ro0ezZMkSjI2NWbRokTQm4/bt24wZM4aJEyfy7Nkzli5dSnBwMC1btgRg5cqVhIWF8dtvvzFq1CjpOnfu3KFz586Ympqyfv36D9LFLj/d1ysngLR/586dIsNkZmby7NkzNDQ0+P777wkODsbc3Jy0tDT8/f1xcnLi0qVLCrOseXt707VrVwCmT5/OggULOH36NG5ubpQsWRJ/f38pbLVq1Thx4gSbN29WqjADqKqqFvpbd3d3p2/fvnh6emJnZ4eWlhYzZswAQENDA21tbanF502ys7PJzs6W9gub1lkQBEEQhC+faEEpQsOGDaUXZgB7e3uSkpLIycnh7NmztG7dmipVqqCjo4OzszNAgV+s3yQuLo6IiAiFBf7yBzcnJydL4erVq6cUt0+fPqxZswaAu3fvsn//fqny9O8FBN9VXFwcwcHBCmm5urqSm5vLjRs3ipVGnTp1pD/LZDKMjIykLnFxcXFcu3YNHR0dKX0DAwOeP3+uUP7C2NvbS38uUaIEdnZ2JCQkAJCQkIC9vb3Cc3R0dCQrK4u//vqL5ORkXr58iaOjo3S+ZMmSNGjQQEojX/PmzalZsyabNm36YJWTD6lly5b89NNP1KlTB1dXV/bt28fDhw+VWj9efxZaWlro6upKzwJg8eLF1KtXD0NDQ7S1tVmxYsU7/a4B5syZw6tXr9iyZQuhoaGoq6u/UzozZsxAT09P2oyNjd8pHUEQBEEQPn+iBeUdPH/+HFdXV1xdXQkNDcXQ0JDU1FRcXV2lMQNvIysri9atWxMQEKB0rkKFCtKftbS0lM57eXkxduxYTpw4wfHjx6lWrRpOTk4ATJ48GV9f37fOT0H569+/P0OGDFE6V6VKlWKlUbJkSYV9mUxGbm6ulH69evUIDQ1VimdoaPgOOf44WrVqxbZt24iPjy90PMm7MDIy4vTp0wrH8he+zG9dMDIyUloM8+7du+jq6qKhUfA6IPr6+piZmXHt2jWF40U9i40bN+Lr60tgYCD29vbo6Ogwe/ZsTp069U5lS05O5vbt2+Tm5pKSkvLO9+3XX39lxIgR0n5mZqaopAiCIAjCV0pUUIrw75eykydPYmpqypUrV7h37x4zZ86UXpLOnDmjEDb/C3tOTo7S8X8fs7W1Zdu2bZiYmLz1rEtlypShXbt2rFmzhhMnTtCzZ0/p3IdaQNDW1pb4+Hhq1qz53mkVlv6mTZsoV65coauKFnTf8p08eZJGjRoBeRMbnD17VhofY2FhwbZt25DL5VIrSnR0NDo6OlSuXJkyZcpI43ryV7x/+fIlMTExStNBz5w5E21tbZo2bUpkZCS1a9f+EMXH3t6eadOmkZ6eLj2vsLAwdHV1pWvY29uzb98+hXhhYWEKrUf/lpWVRXJyMt27dy92XqKjo3FwcJC64wFvbMUq7Lf+4sULunXrRufOnTE3N6dPnz5cvHhRKmNRz/Tf1NXV37n1RRAEQRCEL4vo4lWE1NRURowYQWJiIhs2bGDhwoUMHTqUKlWqoKamxsKFC7l+/Tq7d+9WWi+katWqyGQy9uzZwz///ENWVhaQN6PVqVOnSElJISMjg9zcXAYOHMj9+/fp2rUrMTExJCcnc/DgQXr27FmsF7g+ffoQEhJCQkICPXr0+OD3YcyYMRw/fpxBgwYRGxtLUlISu3bteqtB8kXx9PSkbNmytG3blqioKG7cuEFkZCRDhgzhr7/+AvLu24ULF0hMTCQjI4OXL19K8RcvXsyOHTu4cuUKAwcO5MGDB1I3twEDBnDr1i0GDx7MlStX2LVrF5MmTWLEiBGoqKigpaXFL7/8wqhRozhw4ADx8fH07duXp0+f0rt3b6W8zpkzB09PT5o0acKVK1eKVb7U1FRiY2NJTU0lJyeH2NhYYmNjpd9EixYtqF27Nt27dycuLo6DBw8yfvx4Bg4cKL2U+/j4cP36dUaPHs2VK1dYsmQJmzdvZvjw4dJ1fH19OXr0KCkpKRw/fpz27dujqqoqjTcpDlNTU86cOcPBgwe5evUqEyZMUJrRbMeOHQrrqxT2Wx83bhyPHj1iwYIFjBkzBjMzM4WxWyYmJty4cYPY2FgyMjIUxpgIgiAIgvDtEhWUInh5efHs2TMaNGjAwIEDGTp0KP369cPQ0JDg4GC2bNlC7dq1mTlzJnPmzFGIW6lSJfz9/Rk7dizly5eXXuZ9fX1RVVWldu3aUtewihUrEh0dTU5ODi1atMDKyophw4ahr6+PisqbH1GzZs2k9TA+xtolderU4ejRo1y9ehUnJydsbGyYOHHiB7uWpqYmx44do0qVKnTo0AELCwt69+7N8+fPpRaVvn37Ym5ujp2dHYaGhkRHR0vxZ86cycyZM7G2tubPP/9k9+7d0vS6lSpVYt++fZw+fRpra2t8fHzo3bs348ePV4jfsWNHunfvjq2tLdeuXePgwYOULl26wPzOmzcPDw8PmjRpwtWrV99YvokTJ2JjY8OkSZPIysrCxsZGmrEN8gaa79mzB1VVVezt7enWrRteXl5MnjxZSqNatWrs3buXsLAwrK2tCQwMZNWqVQproPz111907doVc3NzPDw8KFOmDCdPnnyrbnL9+/enQ4cOdO7cme+//5579+4ptKYAPHr0SJqBDQr+rUdGRjJ//nzWrVuHrq4uKioqrFu3jqioKJYuXQpAx44dcXNzo3HjxhgaGrJhw4Zi51MQBEEQhK+XTJ6/sIfwxcrKyqJSpUqsWbOGDh06fOrsCMJHl5mZiZ6eHtaDl6GqXvAYHOHtnJ3t9amzIAiCIHzl8v/9fvToUaHd+kGMQfmi5ebmkpGRQWBgIPr6+rRp0+ZTZ0kQ/lPHpnYt8n9wgiAIgiB8eUQXry9Yamoq5cuXZ/369axevfqtB9h/CFFRUQrTD/97+9pNnz690LLnr6siCIIgCIIgFJ/o4iW8l2fPnvH3338Xev5jzfz1ubh//36BK85D3mKElSpV+o9z9G0obhOxIAiCIAifD9HFS/hPaGhofPWVkKIYGBhIK6kL/71G4zeIMShFEONKBEEQhC+R6OIlCIIgCIIgCMJnQ1RQPiEXFxelxQC/FMHBwejr63/qbLw1mUzGzp07P3U2BEEQBEEQhEKICorwTjp37lysNUA+N2lpacUavJ6SkkLv3r2pVq0aGhoa1KhRg0mTJvHixQuFMDKZTGk7efKkFCY4OFjpfKlSpaTzY8eOVVj0EODKlSvIZDK8vb0VjgcHB6Ours6zZ8/esfQfl4mJCfPnz3+rOPn3MDY29qPkSRAEQRCEL48Yg/INy8nJQSaTFWsxyH/T0NBAQ+PL6/tvZGRUrHBXrlwhNzeX5cuXU7NmTS5dukTfvn158uSJ0qKchw8fxtLSUtovU6aMwnldXV2FhQ1lMpn058aNGxMQEMCdO3ekvEVERGBsbExkZKRCOhERETRs2PCLvO+CIAiCIAjF9c20oGzduhUrKys0NDQoU6YMzZo148mTJ3h7e9OuXTv8/f0xNDREV1cXHx8fhS/lubm5zJgxQ/qabm1tzdatWxXSv3TpEi1btkRbW5vy5cvTvXt3MjIypPNPnjzBy8sLbW1tKlSoQGBg4FvlPy0tjVatWqGhoUG1atVYv3690hfruXPnYmVlhZaWFsbGxgwYMICsrCzpfH63rN27d1O7dm3U1dVJTU3FxMSEqVOnSvmrWrUqu3fv5p9//qFt27Zoa2tTp04daeXz19PK5+fnR926dVm3bh0mJibo6enRpUsXHj9+XKzyubi4MGTIEEaPHo2BgQFGRkb4+flJ5wv60v7w4UNkMhmRkZHk5uZSuXJlaZXyfOfPn0dFRYWbN28Cxe/i5ebmxpo1a2jRogXVq1enTZs2+Pr68v/Yu/O4nNL/8eOvu9K+J0kiiYSiZKmQLJMt68gSiWyfYezrIJFd2cdOxWQZ+76mO8SQkC0hkiXDWCJri98f/TpftxZ3xoxlrufjcR4P97muc53rnO503ufatmzZkieviYkJJUuWlLZixYoppMtkMoV0MzMzKa1u3boUK1ZMIRiRy+X079+fx48fk5ycrLDfw8Pjo3UHOH78ONWrV0dTUxNnZ2e2bdumcP/kcjkymYzdu3fj4OCApqYmderU4eLFi1IZt27dwsvLCyMjI3R0dKhSpQp79uzJ93wNGjTg1q1bDBkyRGopAujZsycODg68efMGgLdv3+Lo6Iivb87g7XLlygHg6OiITCajQYMGSl2fIAiCIAjfr/9EgJKamkrnzp3p2bMnCQkJyOVy2rVrR+4My5GRkdL+devWsWXLFiZOnCgdP23aNFavXs2SJUu4dOkSQ4YMoWvXrkRHRwM5D8oNGzbE0dGR06dPs2/fPv7880+8vb2lMkaMGEF0dDTbt2/nwIEDyOVyzpw5o/Q1+Pr6cu/ePeRyOZs3b2bZsmU8ePBAIY+Kigrz58/n0qVLhIeHc/jwYUaOHKmQ5+XLl8yYMYMVK1Zw6dIlSpQoAcCcOXNwc3Pj7NmztGjRgm7duuHr60vXrl05c+YM5cuXx9fXl8JmpU5KSmLbtm3s2rWLXbt2ER0dzfTp05W+xvDwcHR0dDh58iQzZ85k0qRJHDx4UKljVVRU6Ny5M2vXrlXYHxERgZubG2XLllW6HgVJS0vLd8auVq1aUaJECerWrcuOHTvypKenp1O2bFksLS1p3bo1ly5dktJ0dHSoWbMmUVFR0j65XE6jRo1wc3OT9t+4cYOUlBSlApRnz57h5eWFvb09Z86cISgoiFGjRuWbd8SIEYSEhBAbG4upqSleXl5kZGQA0L9/f968ecORI0e4cOECM2bMKHBtmy1btlC6dGkmTZpEamoqqampAMyfP58XL14wevRoAMaOHcvTp09ZuHAhAKdOnQJyWqFSU1PzDQAB3rx5w7NnzxQ2QRAEQRC+T/+JLl6pqalkZmbSrl076UHV3t5eSldXV2fVqlVoa2tTpUoVJk2axIgRIwgKCiIjI4OpU6dy6NAhXFxcALC2tubYsWMsXboUd3d3Fi5ciKOjI1OnTpXKXLVqFZaWlly9epVSpUqxcuVKfvvtNxo1agTkPIyXLl1aqfpfuXKFQ4cOERsbi7OzMwArVqygQoUKCvneH3Cf2yrSr18/Fi1aJO3PyMhg0aJFVKtWTeHY5s2b07dvXwACAgJYvHgxNWvWpEOHDgCMGjUKFxcX/vzzzwK7SWVnZxMWFoaenh4A3bp1IzIykilTpih1nQ4ODkyYMAGAChUqsHDhQiIjI2nSpIlSx/v4+BASEkJKSgplypQhOzub9evXM27cOKWOL8z169dZsGCBQvcuXV1dQkJCcHNzQ0VFhc2bN9OmTRu2bdtGq1atALC1tWXVqlU4ODiQlpZGcHAwrq6uXLp0Sfr5e3h4sHHjRgAuX77M69evcXR0pH79+sjlcnr06IFcLpdaOT5m7dq1yGQyli9fjqamJpUrV+bu3bv07t07T94JEyZI9zf3O7l161a8vb1JSUmhffv20u+KtbV1gec0NjZGVVUVPT09he+Hrq4uv/32G+7u7ujp6TF37lyioqKkuc9NTU2B/2uFKsi0adMUXhoIgiAIgvD9+k8EKNWqVaNRo0bY29vj6enJDz/8wI8//oiRkZGUrq2tLeV3cXEhPT2d27dvk56ezsuXL/M8JOd2VQGIj48nKioq37fLSUlJvHr1irdv31K7dm1pv7GxMba2tkrVPzExETU1NZycnKR9NjY2Uv1zHTp0iGnTpnHlyhWePXtGZmYmr1+/5uXLl9L1qaur4+DgkOcc7+/L7YL0fhCXu+/BgwcFPkhaWVlJwQmAubl5nlaewnxYr6IeX716dezs7Fi7di2jR48mOjqaBw8eSEHWp7p79y5NmzalQ4cOCg/5xYsXZ+jQodLnmjVrcu/ePWbNmiUFKC4uLlJgC+Dq6oqdnR1Lly4lKCgIyOkeNWXKFFJTU5HL5dStWxdVVVXc3d1ZsmQJkNOq4urqioaGxkfrm5iYKHXbylWrVq18875ft9zvZEJCAgADBw7kf//7HwcOHKBx48a0b98+3+/Ox7i4uDB8+HCpJadu3bpFLmPMmDEK9/rZs2dYWloWuRxBEARBEL5+/4kuXqqqqhw8eJC9e/dSuXJlFixYgK2tLTdv3vzosbljOHbv3s25c+ek7fLly9I4lPT0dLy8vBTSz507x7Vr16hfv/4/em25kpOTadmyJQ4ODmzevJm4uDh+/fVXAIXxNFpaWgqDtHO9P24iNz2/fdnZ2QXWIb+xF4XlL8rxuQP53+9iltsV6X0+Pj5SN6+1a9fStGnTPIPWi+LevXt4eHjg6urKsmXLPpq/du3aXL9+vcD0YsWK4ejoqJDHzc0NdXV1oqKiiIqKwt3dHcgJeP766y9u3LiBXC6nYcOGn3wdn6JXr17cuHGDbt26ceHCBZydnVmwYEGRy8nOziYmJgZVVdVC701hNDQ00NfXV9gEQRAEQfg+/ScCFMh52HVzc2PixImcPXsWdXV1tm7dCuS0gLw/desff/yBrq4ulpaWCoPJbWxsFLbcN7hOTk5cunQJKyurPHl0dHQoX748xYoV4+TJk9I5njx5ovQ0vba2tmRmZnL27Flp3/Xr13ny5In0OS4ujuzsbEJCQqhTpw4VK1bk3r17f+uefU1yuwLljm0A8p2atkuXLly8eJG4uDg2bdqEj4/PJ5/z7t27NGjQgBo1ahAaGqrUbGfnzp3D3Ny8wPSsrCwuXLigkEdLS4vatWsjl8uJjo6WBooXK1aMOnXqsHLlSm7fvq30AHlbW1suXLggDUwHiI2NzTfv+1Mi534n7ezspH2Wlpb069ePLVu2MGzYMJYvX17gedXV1cnKysqzf9asWVy5coXo6Gj27dtHaGiowjFAvscJgiAIgvDf9J8IUE6ePMnUqVM5ffo0KSkpbNmyhYcPH0oPYm/fvsXf35/Lly+zZ88eJkyYwIABA1BRUUFPT4/hw4czZMgQwsPDSUpK4syZMyxYsIDw8HAAacalzp07ExsbS1JSEvv376dHjx5kZWWhq6uLv78/I0aM4PDhw1y8eBE/Pz+lp/etVKkSjRs3pk+fPpw6dYqzZ8/Sp08fhdYQGxsbMjIyWLBgATdu3GDNmjVS96DvgZaWFnXq1GH69OkkJCQQHR2d79gSKysrXF1d8ff3JysrS+pqVVS5wUmZMmUIDg7m4cOH3L9/n/v370t5wsPDWbduHVeuXOHKlStMnTqVVatW8fPPP0t5Jk2axIEDB7hx4wZnzpyha9eu3Lp1i169eimcz8PDg/Xr1/P69WuFrnzu7u4sWLBAGkyvjC5dupCdnU2fPn1ISEhg//790tiZD1vPJk2aRGRkpPSdLF68OG3atAFyxjTt37+fmzdvcubMGaKiohSCl0qVKklBPuTc+yNHjnD37l1pBruzZ88SEBDAihUrcHNzY/bs2QwaNIgbN24AUKJECbS0tKSJJdLS0pS6RkEQBEEQvl//iQBFX1+fI0eO0Lx5cypWrMi4ceMICQmRFuxr1KgRFSpUoH79+nTs2JFWrVopTHEbFBTE+PHjmTZtGnZ2djRt2pTdu3dLU6SWKlWKmJgYsrKy+OGHH7C3t2fw4MEYGhpKQcisWbOoV68eXl5eNG7cmLp161KjRg2lr2H16tWYmZlRv3592rZtS+/evdHT05PGGVSrVo3Zs2czY8YMqlatSkREBNOmTftMd/DrsGrVKjIzM6lRowaDBw9m8uTJ+ebz8fEhPj6etm3bfvKaIQcPHuT69etERkZSunRpzM3Npe19QUFB1KhRg9q1a7N9+3Y2bNhAjx49pPQnT57Qu3dv7OzsaN68Oc+ePeP48eNUrlxZoRwPDw+eP3+Om5sbamr/NzTM3d2d58+fS9MRK0NfX5+dO3dy7tw5qlevztixYwkICABQGJcCMH36dAYNGkSNGjW4f/8+O3fuVGjV6N+/v/Sdr1ixosKEC4mJiQoBxaRJk0hOTqZ8+fKYmpry+vVrunbtip+fH15eXgD06dMHDw8PunXrRlZWFmpqasyfP5+lS5dSqlQpWrdurdQ1CoIgCILw/ZK9K2ze2P8APz8/nj59qtTaGF+TO3fuYGlpyaFDh6SZwQShIBEREfTo0YO0tDS0tLSkNVWePHmisJ7Nt+LZs2cYGBiQlpYmxqMIgiAIwjdC2b/f/4lZvL4Hhw8fJj09HXt7e1JTUxk5ciRWVlb/2iB84duyevVqrK2tsbCwID4+nlGjRuHt7S1WoRcEQRAE4av3n+ji9bU7evQourq6BW6QM2PVL7/8QpUqVWjbti2mpqbI5XKlu/18SSkpKYVeX0pKyr9ep6lTpxZYn9yuf18rZep+//59unbtip2dHUOGDKFDhw5KzUImCIIgCILwpf3nu3h9DV69esXdu3cLTLexsfkXa/P5ZWZmkpycXGC6lZWVwriLf8Pjx495/PhxvmlaWlpYWFj8q/Upim+57p9LbhNxtZ+XoKohWoUA4mb5fukqCIIgCEKhRBevb4iWltY3H4QURk1N7au7PmNjY4yNjb90NT7Jt1x3QRAEQRCEjxFdvD6TBg0aMHjw4C9djc8uOTkZmUwmrTkil8uRyWQ8ffpUyrNt2zZsbGxQVVX9Lu/BvyUwMJDq1asXmB4WFvZZBrR/+F21srJi7ty5f7tcQRAEQRCEz0EEKF+J/B784esLfFxdXUlNTcXAwEDa17dvX3788Udu375NUFDQF6zd961jx45KL+75b/owiFXW5wq4BEEQBEH4voguXv8Rb9++lda3+DvU1dUpWbKk9Dk9PZ0HDx7g6elJqVKl/nb5QsG0tLTELFyCIAiCIHz3RAvKZ5SZmcmAAQMwMDCgePHijB8/ntw5CNasWYOzszN6enqULFmSLl268ODBAyDnDbSHhwcARkZGyGQy/Pz88PPzIzo6mnnz5iGTyZDJZNJg84sXL9KsWTN0dXUxMzOjW7du0urdkNPyMmDAAAYPHkzx4sXx9PSkZ8+etGzZUqHOGRkZlChRgpUrVyp1je+39MjlcvT09ABo2LAhMpkMuVwOwLFjx6hXrx5aWlpYWloycOBAXrx4odQ5CrtX79dh//79ODo6oqWlRcOGDXnw4AF79+7Fzs4OfX19unTpwsuXL6Xj9u3bR926dTE0NMTExISWLVuSlJQkpQcGBkr3+f0tLCwMgDdv3jBw4EBKlCiBpqYmdevWJTY2Nk+9IiMjcXZ2RltbG1dXVxITE5W67g8lJSVhbW3NgAEDePfuXZ4Wh9wuYWvWrMHKygoDAwM6derE8+fPpTwvXrzA19cXXV1dzM3NCQkJ+eh5nz59Sq9evTA1NUVfX5+GDRsSHx9fYP7cBUsdHR2RyWQ0aNCA169fU6VKFfr06aNwPXp6eqxatQq5XC6ty5J7n99fHFUQBEEQhP8uEaB8RuHh4aipqXHq1CnmzZvH7NmzWbFiBZATCAQFBREfH8+2bdtITk7Gz88PAEtLSzZv3gzkrM6dmprKvHnzmDdvHi4uLvTu3ZvU1FRSU1OxtLTk6dOnNGzYEEdHR06fPs2+ffv4888/8fb2zlMfdXV1YmJiWLJkCb169WLfvn2kpqZKeXbt2sXLly/p2LFjka/3/YfvzZs3k5qaiqurK0lJSTRt2pT27dtz/vx5NmzYwLFjxxgwYIBS5RZ2r94XGBjIwoULOX78OLdv38bb25u5c+eydu1adu/ezYEDB1iwYIGU/8WLFwwdOpTTp08TGRmJiooKbdu2JTs7G4Dhw4dL9zk1NZXg4GC0tbVxdnYGYOTIkWzevJnw8HDOnDmDjY0Nnp6eeWbUGjt2LCEhIZw+fRo1NTV69uxZ5Ht7/vx56tatS5cuXVi4cCEymSzffElJSWzbto1du3axa9cuoqOjmT59upQ+YsQIoqOj2b59OwcOHEAul3PmzJlCz92hQwcp2IuLi8PJyYlGjRoVOHPYqVOnADh06BCpqals2bIFTU1NIiIiCA8PZ/v27WRlZdG1a1eaNGlCz549cXV1Ze7cuejr60v3e/jw4QXW6c2bNzx79kxhEwRBEATh+yS6eH1GlpaWzJkzB5lMhq2tLRcuXGDOnDn07t1b4SHV2tqa+fPnU7NmTdLT09HV1ZVmZSpRooTCW3J1dXW0tbUVulUtXLgQR0dHpk6dKu1btWoVlpaWXL16lYoVKwJQoUIFZs6cqVBHW1tb1qxZw8iRIwEIDQ2lQ4cO0norRaGurk6JEiWAnJmlcus4bdo0fHx8pLEzFSpUYP78+bi7u7N48WI0NTULLfdj9yrX5MmTcXNzA8Df358xY8ZIrQ4AP/74I1FRUYwaNQqA9u3bK5xn1apVmJqacvnyZapWraqw7swff/zBuHHjCA8Pp2rVqrx48YLFixcTFhYmrTWyfPlyDh48yMqVKxkxYoRU7pQpU3B3dwdg9OjRtGjRgtevX3/0unMdP36cli1bMnbsWIYNG1Zo3uzsbMLCwqSWrG7duhEZGcmUKVNIT09n5cqV/PbbbzRq1AjICVpLly5dYHnHjh3j1KlTPHjwAA0NDQCCg4PZtm0bmzZtUmgRyWVqagqAiYmJwve0evXqTJ48mV69etGpUydu3brFrl27gJzvjoGBATKZTOGYgkybNo2JEyd+NJ8gCIIgCN8+0YLyGdWpU0fhTbeLiwvXrl0jKyuLuLg4vLy8KFOmDHp6etID7KcsUhgfH09UVJTCAn2VKlUCUOiyVKNGjTzH9urVi9DQUAD+/PNP9u7dKwUE/fr1y7NA5KeIj48nLCxMoSxPT0+ys7O5efPmR49X9l45ODhI/zYzM0NbW1sKTnL3vd817Nq1a3Tu3Blra2v09fWxsrLKt9yUlBTatGnD8OHDpVappKQkMjIypIAIoFixYtSqVYuEhIQC62Vubg6gUI/CpKSk0KRJEwICAj4anEDODFy5wUnu+XLPlZSUxNu3b6ldu7aUbmxsjK2tbYHlxcfHk56ejomJicLP7+bNmwrfLWUNGzaMihUrsnDhQlatWoWJiUmRywAYM2YMaWlp0nb79u1PKkcQBEEQhK+faEH5F7x+/RpPT088PT2JiIjA1NSUlJQUPD09efv2bZHLS09Px8vLixkzZuRJy30gBtDR0cmT7uvry+jRozlx4gTHjx+nXLly1KtXD4BJkyYV2s2mKPXr27cvAwcOzJNWpkyZQo998eKF0veqWLFi0r9lMpnC59x9ud23ALy8vChbtizLly+nVKlSZGdnU7VqVYVyX7x4QatWrXBxcWHSpElFuu6C6gUo1KMwpqamlCpVinXr1tGzZ89CFzH68Fy551P2XPlJT0/H3NxcGkv0vk+ZcevBgwdcvXoVVVVVrl27RtOmTT+pXhoaGlKLjiAIgiAI3zcRoHxGJ0+eVPj8xx9/UKFCBa5cucKjR4+YPn06lpaWAJw+fVohb+4MW1lZWXn2f7jPycmJzZs3f9IK7CYmJrRp04bQ0FBOnDhBjx49pLQSJUpIXbb+DicnJy5fvvxJizMqc68+xaNHj0hMTGT58uVSQHbs2DGFPO/evaNr165kZ2ezZs0ahdaw8uXLS+N5ypYtC+SMlYmNjf2s00BraWmxa9cumjdvjqenJwcOHFBoISmK8uXLU6xYMU6ePCkFhk+ePOHq1atSq9SHnJycuH//PmpqalIL08cU9N2FnO569vb2+Pv707t3bxo3boydnZ10XH7HCIIgCILw3/ZJXbzWrFmDm5sbpUqV4tatWwDMnTuX7du3f9bKfWtSUlIYOnQoiYmJrFu3jgULFjBo0CDKlCmDuro6CxYs4MaNG+zYsSPPeiFly5ZFJpOxa9cuHj58SHp6OpDThefkyZMkJyfz119/kZ2dTf/+/Xn8+DGdO3cmNjaWpKQk9u/fT48ePZR64OvVqxfh4eEkJCTQvXv3z34fRo0axfHjxxkwYADnzp3j2rVrbN++XalB8srcq09hZGSEiYkJy5Yt4/r16xw+fJihQ4cq5AkMDOTQoUMsXbqU9PR07t+/z/3793n16hU6Ojr873//Y8SIEezbt4/Lly/Tu3dvXr58ib+//9+u3/t0dHTYvXs3ampqNGvWTPouFJWuri7+/v6MGDGCw4cPc/HiRfz8/FBRKfjXvnHjxri4uNCmTRsOHDhAcnIyx48fZ+zYsVKgeOrUKSpVqsTdu3eBnMBWS0tLmqwhLS0NgF9//ZUTJ04QHh6Oj48Pbdq0wcfHR2qxsrKyIj09ncjISP766y+FGdcEQRAEQfjvKnKAsnjxYoYOHUrz5s15+vSp9EBsaGj4n1+N2tfXl1evXlGrVi369+/PoEGD6NOnD6ampoSFhbFx40YqV67M9OnTCQ4OVjjWwsKCiRMnMnr0aMzMzKSH+eHDh6OqqkrlypWl7k6lSpUiJiaGrKwsfvjhB+zt7Rk8eDCGhoaFPnzmaty4Mebm5v/Y2iUODg5ER0dz9epV6tWrh6OjIwEBAUqdS5l79SlUVFRYv349cXFxVK1alSFDhjBr1iyFPNHR0aSnp+Pq6oq5ubm0bdiwAYDp06fTvn17unXrhpOTE9evX2f//v0YGRn97fp9SFdXl7179/Lu3TtatGih9BTNH5o1axb16tXDy8uLxo0bU7du3XzHJuWSyWTs2bOH+vXr06NHDypWrCgNcDczMwPg5cuXJCYmkpGRAYCamhrz589n6dKllCpVitatW3PlyhVGjBjBokWLpJawRYsW8ddffzF+/HggZxa4fv360bFjR0xNTfNM6CAIgiAIwn+T7F3uQh1Kqly5MlOnTqVNmzbo6ekRHx+PtbU1Fy9epEGDBgprcQhfp/T0dCwsLAgNDaVdu3ZfujqCUGTPnj3DwMCAtLS0j47TEQRBEATh66Ds3+8ij0G5efMmjo6OefZraGh88lte4d+RnZ3NX3/9RUhICIaGhrRq1epLV0kQBEEQBEEQFBS5i1e5cuU4d+5cnv379u2TBr8KX6eUlBTMzMxYu3Ytq1atKvIA+8/h6NGjCtPXfrh9z6pUqVLgdUdERHzp6gmCIAiCIHwVivyEOnToUPr378/r16959+4dp06dYt26dUybNk1aNV34OllZWVHEHn2fnbOzc74B7n/Bnj17pHEbH8od3yEUTf1x61DV0PrS1fhHxc3y/dJVEARBEIR/VZEDlF69eqGlpcW4ceN4+fIlXbp0oVSpUsybN49OnTr9E3UUviNaWlqfNP3w9yB3emJBEARBEAShYJ80zbCPjw/Xrl2TpmK9c+fOZ59qVVDUoEGDz7rehvD1CQsLK3QxRLlcjkwm4+nTp3/rPH5+frRp00b6LL5bgiAIgiB8TT4pQMmlra39WRb2E/55ycnJyGSyPN2rPnxYFb5erq6upKamYmBg8KWrkodMJmPbtm1FOuZzBVyCIAiCIHxfitzF69GjRwQEBBAVFcWDBw/Izs5WSH/8+PFnq5wgCP9HXV2dkiVLfulqCIIgCIIg/KOK3ILSrVs3Dh48SPfu3QkODmbOnDkKm/DPyczMZMCAARgYGFC8eHHGjx8vDXrP7w22oaEhYWFhQM7sawCOjo7IZDIaNGhAYGAg4eHhbN++HZlMhkwmQy6XA3DhwgUaNmyIlpYWJiYm9OnTR2FF89yWl+DgYMzNzTExMaF///4Kg8AXLVpEhQoV0NTUxMzMjB9//FGp69y3bx9169bF0NAQExMTWrZsSVJSkpSe2xr0+++/U69ePbS0tKhZsyZXr14lNjYWZ2dndHV1adasGQ8fPpSOi42NpUmTJhQvXhwDAwPc3d05c+aMlB4WFibdh/e3wMBAIGea5kmTJlG6dGk0NDSoXr06+/bty1OvLVu24OHhgba2NtWqVePEiRNKXfeHHj58iLOzM23btuXNmzd5Whxyu4Tt378fOzs7dHV1adq0KampqVIZWVlZDB06VLqXI0eO/OhECW/evGH48OFYWFigo6ND7dq1pe9FfqysrABo27YtMplMmoyhcePGeHp6Sud7/PgxpUuXJiAggOTkZDw8PAAwMjJCJpPh5+f3SfdJEARBEITvS5EDlKNHj7Jx40ZGjRqFn58f3bt3V9iEf054eDhqamqcOnWKefPmMXv2bKVnTjt16hQAhw4dIjU1lS1btjB8+HC8vb2lh9rU1FRcXV158eIFnp6eGBkZERsby8aNGzl06JC0un2uqKgokpKSiIqKIjw8nLCwMCkgOn36NAMHDmTSpEkkJiayb98+6tevr1RdX7x4wdChQzl9+jSRkZGoqKjQtm3bPK11EyZMYNy4cZw5cwY1NTW6dOnCyJEjmTdvHkePHuX69esEBARI+Z8/f0737t05duwYf/zxBxUqVKB58+Y8f/4cgI4dO0r3ITU1lXXr1qGmpoabmxsA8+bNIyQkhODgYM6fP4+npyetWrXi2rVrCvUaO3Ysw4cP59y5c1SsWJHOnTuTmZmp1LXnun37NvXq1aNq1aps2rQJDQ2NfPO9fPmS4OBg1qxZw5EjR0hJSWH48OFSekhICGFhYaxatYpjx47x+PFjtm7dWui5BwwYwIkTJ1i/fj3nz5+nQ4cONG3aNM915oqNjQUgNDSU1NRUYmNjkclkhIeHExsby/z58wHo168fFhYWBAQEYGlpyebNmwFITEwkNTWVefPmFVinN2/e8OzZM4VNEARBEITvU5G7eFWqVIlXr179E3URPsLS0pI5c+Ygk8mwtbXlwoULzJkzh969e3/0WFNTUwBMTEwUuglpaWnx5s0bhX3h4eG8fv2a1atXo6OjA8DChQvx8vJixowZ0pS4RkZGLFy4EFVVVSpVqkSLFi2IjIykd+/epKSkoKOjQ8uWLdHT06Ns2bL5LvCZn/bt2yt8XrVqFaamply+fJmqVatK+4cPH46npycAgwYNonPnzkRGRkoBhb+/vxQwATRs2FCh3GXLlmFoaEh0dDQtW7ZES0sLLa2cKWuTkpLo378/U6dOpUmTJgAEBwczatQoaba6GTNmEBUVxdy5c/n1118V6tWiRQsAJk6cSJUqVbh+/TqVKlVS6voTExNp0qQJbdu2Ze7cuchksgLzZmRksGTJEsqXLw/kBBeTJk2S0ufOncuYMWNo164dAEuWLGH//v0FlpeSkkJoaCgpKSmUKlVKup59+/YRGhrK1KlT8xyT+90yNDRU+B5ZWFiwdOlSfH19uX//Pnv27OHs2bPS+jvGxsYAlChRotDJAQCmTZvGxIkTC80jCIIgCML3ocgtKIsWLWLs2LFER0fz6NEj8VbzX1SnTh2Fh1UXFxeuXbtGVlbWZz1PQkIC1apVk4ITADc3N7Kzs0lMTJT2ValSBVVVVemzubk5Dx48AKBJkyaULVsWa2trunXrRkREBC9fvlTq/NeuXaNz585YW1ujr68vdSFKSUlRyOfg4CD9Ozdosre3V9iXWx+AP//8k969e1OhQgUMDAzQ19cnPT09T7lpaWm0bNmSFi1aMGLECACePXvGvXv3pODn/fuSkJBQYL3Mzc0BFOpRmFevXlGvXj3atWvHvHnzCg1OIGeiitzgJPd8uedKS0sjNTWV2rVrS+lqamo4OzsXWN6FCxfIysqiYsWKCgtJRkdHK3SzU1aHDh1o27Yt06dPJzg4mAoVKhS5DIAxY8aQlpYmbbdv3/6kcgRBEARB+PoVuQXF0NCQZ8+e5Xkb/e7dO2Qy2Wd/WBaUI5PJ8owtKGhRwM+lWLFieeqQ2w1LT0+PM2fOIJfLOXDgAAEBAQQGBhIbG/vRt+VeXl6ULVuW5cuXU6pUKbKzs6latSpv374t8Py5D/If7nu/W1j37t159OgR8+bNo2zZsmhoaODi4qJQblZWFh07dkRfX59ly5YV7YYUUq8Pu6cVRENDg8aNG7Nr1y5GjBiBhYWF0ufKPd/fWYwzPT0dVVVV4uLiFIJPAF1d3SKX9/LlS6msgrqIKUNDQ6PAbm6CIAiCIHxfihyg+Pj4UKxYMdauXYuZmdlH3/AKn8/JkycVPueOo1BVVcXU1FRhcPS1a9cUWizU1dUB8gSQ6urqefbZ2dkRFhbGixcvpFaUmJgYVFRUsLW1Vbq+ampqNG7cmMaNGzNhwgQMDQ05fPiw1N0oP48ePSIxMZHly5dTr149AI4dO6b0OQsTExPDokWLaN68OZAzzuOvv/5SyDNkyBAuXLjA6dOn0dTUlPbr6+tTqlQpYmJicHd3VyizVq1an6V+ACoqKqxZs4YuXbrg4eGBXC6XuloVlYGBAebm5pw8eVIa/5OZmUlcXBxOTk75HuPo6EhWVhYPHjyQ7r8yihUrlu/LiWHDhqGiosLevXtp3rw5LVq0kF5uFPSdFARBEAThv63IAcrFixc5e/ZskR5Uhc8jJSWFoUOH0rdvX86cOcOCBQsICQkBcsZXLFy4EBcXF7Kyshg1apTC2/USJUqgpaXFvn37KF26NJqamhgYGGBlZcX+/ftJTEzExMQEAwMDfHx8mDBhAt27dycwMJCHDx/y888/061bN6kr1cfs2rWLGzduUL9+fYyMjNizZw/Z2dkf/d4YGRlhYmLCsmXLMDc3JyUlhdGjR3/6TXtPhQoVWLNmDc7Ozjx79owRI0ZIY04gZ5D3okWL2Lp1KzKZjPv37wNI3ZxGjBjBhAkTKF++PNWrVyc0NJRz584RERHxWeqXS1VVlYiICDp37kzDhg2Ry+WfPL3woEGDmD59OhUqVKBSpUrMnj270HVHKlasiI+PD76+voSEhODo6MjDhw+JjIzEwcGBFi1acPfuXRo1asTq1aul4MzKykoa/6OhoYGRkRG7d+9m1apVnDhxAicnJ0aMGEH37t05f/48RkZGlC1bFplMxq5du2jevDlaWlqf1EojCIIgCML3pchjUJydnUX/7y/E19eXV69eUatWLfr378+gQYPo06cPkDNbk6WlJfXq1aNLly4MHz4cbW1t6Vg1NTXmz5/P0qVLKVWqFK1btwagd+/e2Nra4uzsjKmpKTExMWhra7N//34eP35MzZo1+fHHH2nUqBELFy5Uuq6GhoZs2bKFhg0bYmdnx5IlS1i3bh1VqlQp9DgVFRXWr19PXFwcVatWZciQIcyaNesT7lZeK1eu5MmTJzg5OdGtWzcGDhyosNBodHQ0WVlZtGrVCnNzc2kLDg4GYODAgQwdOpRhw4Zhb2/Pvn372LFjxyePqyiMmpqadL8aNmyo9BiWDw0bNoxu3brRvXt3XFxc0NPTo23btoUeExoaiq+vL8OGDcPW1pY2bdoQGxtLmTJlgJyug4mJiQotdCEhIRw8eBBLS0spqPH39ycwMFBqrZk4cSJmZmb069cPyBlEP3HiREaPHo2ZmVmeWeIEQRAEQfhvkr0rYof1jRs3EhgYyIgRI7C3t8/TB/79AcKCIAj/hGfPnmFgYEBaWhr6+vpfujqCIAiCIChB2b/fRQ5QVFTyNrrkDswVg+QFQfg3iABFEARBEL49yv79LvIYlJs3b/6tign/bSkpKVSuXLnA9MuXL0tdib43zZo14+jRo/mm/fLLL/zyyy//co0EQRAEQRC+PkVuQRGEvyMzM5Pk5OQC062srKSF/L43d+/eLXCRU2NjY2nhQuHjct/AVPt5CaoaWh8/4BsWN8v3S1dBEARBED6Lf6wFJdfly5dJSUnJszZFq1atPrVI4T9ATU0NGxubL12NL+Jja5oIgiAIgiAInxCg3Lhxg7Zt23LhwgWFReFy10MRY1C+HYGBgWzbto1z584VmMfPz4+nT5+ybdu2f6VODRo0oHr16sydO/cfPY8y1/5fJJfL8fDw4MmTJx9dUFMQBEEQBOGfUORphgcNGkS5cuV48OAB2traXLp0iSNHjuDs7IxcLv8Hqij8U4YPH05kZOSXroaCLVu2EBQU9KWr8U26f/8+3bp1o2TJkujo6ODk5MTmzZv/lXPLZLIiB7FyuRyZTFbouiyCIAiCIPz3FLkF5cSJExw+fJjixYujoqKCiooKdevWZdq0aQwcOJCzZ8/+E/UU/gG5CxB+TcQ4jE/n6+vL06dP2bFjB8WLF2ft2rV4e3tz+vRpHB0dv3T1BEEQBEEQlFLkFpSsrCz09PQAKF68OPfu3QOgbNmyJCYmft7aCX/LsmXLKFWqFNnZ2Qr7W7duTc+ePQkMDKR69erS/qysLIYOHYqhoSEmJiaMHDmSD+dQyM7OZtq0aZQrVw4tLS2qVavGpk2bFPJER0dTq1YtNDQ0MDc3Z/To0WRmZipV5wYNGjB48GDps5WVFUFBQXTu3BkdHR0sLCz49ddfFY5JSUmhdevW6Orqoq+vj7e3N3/++adCnunTp2NmZoaenh7+/v68fv1aqfpATje3Nm3aEBwcjLm5OSYmJvTv35+MjAwpT+4K9Xp6epQsWZIuXbooLK6Y21oQGRmJs7Mz2trauLq65vmdWbx4MeXLl0ddXR1bW1vWrFmjdD2PHz/Ozz//TK1atbC2tmbcuHEYGhoSFxenkKd69epoamri7OzMtm3bkMlkebq6xcTE4ODggKamJnXq1OHixYsFntfKygqAtm3bIpPJsLKy4t27dzRu3BhPT0/pO/T48WNKly5NQEAAycnJeHh4AGBkZIRMJsPPz0/paxUEQRAE4ftV5AClatWqxMfHA1C7dm1mzpxJTEwMkyZNwtra+rNXUPh0HTp04NGjR0RFRUn7Hj9+zL59+/Dx8cmTPyQkhLCwMFatWsWxY8d4/PgxW7duVcgzbdo0Vq9ezZIlS7h06RJDhgyha9euREdHAzkzVTVv3pyaNWsSHx/P4sWLWblyJZMnT/7k65g1axbVqlXj7NmzjB49mkGDBnHw4EEgJ2Bq3bo1jx8/Jjo6moMHD3Ljxg06duwoHf/7778TGBjI1KlTOX36NObm5ixatKhIdYiKiiIpKYmoqCjCw8MJCwsjLCxMSs/IyCAoKIj4+Hi2bdtGcnJyvg/cY8eOJSQkhNOnT6OmpkbPnj2ltK1btzJo0CCGDRvGxYsX6du3Lz169FD4+RXG1dWVDRs28PjxY7Kzs1m/fj2vX7+mQYMGQM7MGV5eXtjb23PmzBmCgoIYNWpUvmWNGDGCkJAQYmNjMTU1xcvLSyEge19sbCyQswJ9amoqsbGxyGQywsPDiY2NZf78+QD069cPCwsLAgICsLS0lLqfJSYmkpqayrx58wq8tjdv3vDs2TOFTRAEQRCE71ORu3iNGzeOFy9eADBp0iRatmxJvXr1MDExYcOGDZ+9gsKnMzIyolmzZqxdu5ZGjRoBsGnTJooXL46Hh0eeNTnmzp3LmDFjaNeuHQBLlixh//79UvqbN2+YOnUqhw4dwsXFBQBra2uOHTvG0qVLcXd3Z9GiRVhaWrJw4UJkMhmVKlXi3r17jBo1ioCAgHwX+vwYNzc3Ro8eDUDFihWJiYlhzpw5NGnShMjISC5cuMDNmzextLQEYPXq1VSpUoXY2Fhq1qzJ3Llz8ff3x9/fH4DJkydz6NChIrWiGBkZsXDhQlRVValUqRItWrQgMjKS3r17AygEGtbW1syfP5+aNWuSnp6u0I1uypQpuLu7AzB69GhatGjB69ev0dTUJDg4GD8/P3766ScAhg4dyh9//EFwcLDU2lCY33//nY4dO2JiYoKamhra2tps3bpVmjVt7dq1yGQyli9fjqamJpUrV+bu3bvSNbxvwoQJNGnSBIDw8HBKly7N1q1b8fb2zpPX1NQUAENDQ0qWLCntt7CwYOnSpfj6+nL//n327NnD2bNnpWmkc7vzlShR4qMD8qdNm8bEiRM/eg8EQRAEQfj2Fflp0dPTU3qAtbGx4cqVK/z11188ePCAhg0bfvYKCn+Pj48Pmzdv5s2bNwBERETQqVOnPIFCWloaqamp1K5dW9qnpqaGs7Oz9Pn69eu8fPmSJk2aSONXdHV1Wb16NUlJSQAkJCTg4uIizeoGOQFGeno6d+7c+aRryA2G3v+ckJAgnc/S0lIKTgAqV66MoaGhQp73ryu/Mj+mSpUqqKqqSp/Nzc0VunDFxcXh5eVFmTJl0NPTk4KQlJQUhXIcHBwUygCkchISEnBzc1PI7+bmJl3Hx4wfP56nT59y6NAhTp8+zdChQ/H29ubChQtATktFbretXLVq1cq3rPfvj7GxMba2tkrX430dOnSgbdu2TJ8+neDgYCpUqFDkMgDGjBlDWlqatN2+ffuTyhEEQRAE4ev3WVbEEwObv15eXl68e/eO3bt3U7NmTY4ePcqcOXM+qaz09HQAdu/enWdNDw0Njb9d169ZsWLFFD7LZDJpbM+LFy/w9PTE09OTiIgITE1NSUlJwdPTM886Qe+XkxvEfThG6FMkJSWxcOFCLl68SJUqVQCoVq0aR48e5ddff2XJkiV/+xyf4uXLl8TFxaGqqsq1a9c+uRwNDY3v/jsmCIIgCEKOIregvHjxgvHjx+Pq6oqNjQ3W1tYKm/B10dTUpF27dkRERLBu3TpsbW1xcnLKk8/AwABzc3NOnjwp7cvMzFQYYF25cmU0NDRISUnBxsZGYcttwbCzs+PEiRMKg+tjYmLQ09OjdOnSn3QNf/zxR57PdnZ20vlu376t8Eb98uXLPH36lMqVK0t53r+u/Mr8O65cucKjR4+YPn069erVo1KlSgqtK8qys7MjJiZGYV9MTIx0HYV5+fIlQJ6WMVVVVSkAsrW15cKFC1JrGvzf+JEPvX9/njx5wtWrV6V7np9ixYrluwbSsGHDUFFRYe/evcyfP5/Dhw9Laerq6oBYO0kQBEEQBEVFbkHp1asX0dHRdOvWDXNzc4WuPMLXycfHh5YtW3Lp0iW6du1aYL5BgwYxffp0KlSoQKVKlZg9e7bCGhV6enoMHz6cIUOGkJ2dTd26dUlLSyMmJgZ9fX26d+/OTz/9xNy5c/n5558ZMGAAiYmJTJgwgaFDh37S+BPIeUifOXMmbdq04eDBg2zcuJHdu3cD0LhxY+zt7fHx8WHu3LlkZmby008/4e7uLnVPGzRoEH5+fjg7O+Pm5kZERASXLl36bAF1mTJlUFdXZ8GCBfTr14+LFy9+0louI0aMwNvbG0dHRxo3bszOnTvZsmULhw4d+uixlSpVwsbGhr59+xIcHIyJiQnbtm3j4MGD7Nq1C4AuXbowduxY+vTpw+jRo0lJSSE4OBggz+/xpEmTMDExwczMjLFjx1K8eHHatGkD5EyE0KhRI1avXi11EbOysiIyMhI3Nzc0NDQwMjJi9+7drFq1ihMnTuDk5MSIESPo3r0758+fx8jIiLJlyyKTydi1axfNmzdHS0vrq5v2WhAEQRCEf1+RA5S9e/eye/fuPH3lha9Xw4YNMTY2JjExkS5duhSYb9iwYaSmptK9e3dUVFTo2bMnbdu2JS0tTcoTFBSEqakp06ZN48aNGxgaGuLk5MQvv/wC5AyM3rNnDyNGjKBatWoYGxvj7+/PuHHjPrn+w4YN4/Tp00ycOBF9fX1mz56Np6cnkPNgvX37dn7++Wfq16+PiooKTZs2ZcGCBdLxHTt2JCkpiZEjR/L69Wvat2/P//73P4UJAP4OU1NTwsLC+OWXX5g/fz5OTk4EBwfTqlWrIpXTpk0b5s2bR3BwsLQgamhoqDQLV2GKFSvGnj17GD16NF5eXqSnp2NjY0N4eDjNmzcHQF9fn507d/K///2P6tWrY29vT0BAAF26dFEYlwI50zIPGjSIa9euUb16dXbu3Cm1eGRkZJCYmCi12kDODHBDhw5l+fLlWFhYEBsbi7+/P4GBgVKL3cSJEzlw4AD9+vVjw4YNWFhYMHHiREaPHk2PHj3w9fVVmBlNEARBEIT/Jtm7Dxe6+Ihy5cqxZ8+eQrt7CMLnYmVlxeDBgxXWRhE+n4iICHr06EFaWhpaWlpfujpKe/bsGQYGBqSlpaGvr/+lqyMIgiAIghKU/ftd5D43QUFBBAQEKLw9FQTh27B69WqOHTvGzZs32bZtG6NGjcLb2/ubCk4EQRAEQfi+FbmLV0hICElJSZiZmWFlZZVndqMzZ858tsoJ35eUlJRCB3xfvnyZMmXK/Is1ylHYuIe9e/dSr169f7E2+YuIiKBv3775ppUtW5ZLly4pVc79+/cJCAjg/v37mJub06FDB6ZMmfI5qyoIgiAIgvC3FLmL18cWS5swYcLfqpDw/crMzCQ5ObnAdCsrK2kRv3/T9evXC0yzsLD4KloXnj9/zp9//plvWrFixShbtuy/XKMvS3TxEgRBEIRvj7J/v4scoAiCIHxpuf/BVft5CaoaXz6A/JziZvl+6SoIgiAIwj/iHxuDAvD06VNWrFjBmDFjePz4MZDTtevu3bufVlvhmxMWFoahoeGXrkaRyWQytm3b9qWrIQiCIAiCIBSgyAHK+fPnqVixIjNmzCA4OFhaJ2PLli2MGTPmc9dP+Ep17NiRq1evfulqFFlqairNmjX7aL7k5GT8/f0pV64cWlpalC9fngkTJiisDJ+cnIxMJsuzvb/IYVhYWJ7096f0HT16NJUqVVI495UrV5DJZPj5+SnsDwsLQ0NDg1evXn3i1f+zrKysmDt3bpGOyb2H586d+0fqJAiCIAjCt6fIAcrQoUPx8/Pj2rVrCg9azZs358iRI5+1cl+LjIyML12Ff0RWVpa0ynhRaWlpUaJEic9co39eyZIl0dDQ+Gi+K1eukJ2dzdKlS7l06RJz5sxhyZIl0nov7zt06BCpqanSVqNGDYV0fX19hfRbt25JaR4eHiQmJnL//n1pX1RUFJaWlsjlcoVyoqKiqFOnzlcxJkYQBEEQBOGfUuQAJTY2Nt/ZhCwsLBQesv6Offv2UbduXQwNDTExMaFly5YkJSVJ6Xfu3KFz584YGxujo6ODs7MzJ0+elNJ37txJzZo10dTUpHjx4rRt21ZKy6+Lj6GhobRAXO4b3Q0bNuDu7o6mpiYRERE8evSIzp07Y2Fhgba2Nvb29qxbt06hnOzsbGbOnImNjQ0aGhqUKVNGmiGpYcOGDBgwQCH/w4cPUVdXJzIy8qP3JDU1lRYtWqClpUW5cuVYu3ZtnjfWs2fPxt7eHh0dHSwtLfnpp59IT0+X0nO7Ze3YsYPKlSujoaFBSkoKVlZWTJ48GV9fX3R1dSlbtiw7duzg4cOHtG7dGl1dXRwcHDh9+nSesnIFBgZSvXp11qxZg5WVFQYGBnTq1Innz59/9NoAGjRowMCBAxk5ciTGxsaULFmSwMBAKT2/N+1Pnz5FJpMhl8vJzs6mdOnSLF68WKHcs2fPoqKiIgUFynbxatq0KaGhofzwww9YW1vTqlUrhg8fzpYtW/LkNTExoWTJktL24cx2MplMId3MzExKq1u3LsWKFVMIRuRyOf379+fx48cKkwrI5XI8PDw+WneA48ePU716dTQ1NXF2dmbbtm0K908ulyOTydi9ezcODg5oampSp04dLl68KJVx69YtvLy8MDIyQkdHhypVqrBnz558z9egQQNu3brFkCFDpJYigJ49e+Lg4MCbN28AePv2LY6Ojvj65oyzKFeuHACOjo7IZDKlFqUUBEEQBOH7VuQARUNDg2fPnuXZf/XqVUxNTT9LpV68eMHQoUM5ffo0kZGRqKio0LZtW7Kzs0lPT8fd3Z27d++yY8cO4uPjGTlypNQSsHv3btq2bUvz5s05e/YskZGR1KpVq8h1GD16NIMGDSIhIQFPT09ev35NjRo12L17NxcvXqRPnz5069aNU6dOSceMGTOG6dOnM378eC5fvszatWulh9FevXqxdu1a6UEN4LfffsPCwoKGDRt+tD6+vr7cu3cPuVzO5s2bWbZsGQ8ePFDIo6Kiwvz587l06RLh4eEcPnyYkSNHKuR5+fIlM2bMYMWKFVy6dElqBZkzZw5ubm6cPXuWFi1a0K1bN3x9fenatStnzpyhfPny+Pr6UticCklJSWzbto1du3axa9cuoqOjmT59+sdv9v8XHh6Ojo4OJ0+eZObMmUyaNImDBw8qdayKigqdO3dm7dq1CvsjIiJwc3P7LLNcpaWlYWxsnGd/q1atKFGiBHXr1mXHjh150tPT0ylbtiyWlpa0bt1aYUpgHR0datasSVRUlLRPLpfTqFEj3NzcpP03btwgJSVFqQDl2bNneHl5YW9vz5kzZwgKCmLUqFH55h0xYgQhISHExsZiamqKl5eX1GLYv39/3rx5w5EjR7hw4QIzZswocErmLVu2ULp0aSZNmiS1FAHMnz+fFy9eMHr0aADGjh3L06dPWbhwIYD0+5PbCpVfAAjw5s0bnj17prAJgiAIgvB9KvKcrq1atWLSpEn8/vvvQM7b4ZSUFEaNGkX79u0/S6U+LGfVqlWYmppy+fJljh8/zsOHD4mNjZUeFm1sbKS8U6ZMoVOnTgrTIVerVq3IdRg8eDDt2rVT2Dd8+HDp3z///DP79+/n999/p1atWjx//px58+axcOFCunfvDkD58uWpW7cuAO3atWPAgAFs374db29vIKcVws/PT3rbXJArV65w6NAhYmNjcXZ2BmDFihVUqFAhT51z5baK9OvXj0WLFkn7MzIyWLRoUZ570rx5c6llLCAggMWLF1OzZk06dOgAwKhRo3BxceHPP/+kZMmS+dYzOzubsLAw9PT0AOjWrRuRkZFKr7Ph4OAgTVNdoUIFFi5cSGRkJE2aNFHqeB8fH0JCQkhJSaFMmTJkZ2ezfv16xo0bp9Txhbl+/ToLFiwgODhY2qerq0tISAhubm6oqKiwefNm2rRpw7Zt22jVqhUAtra2rFq1CgcHB9LS0ggODsbV1ZVLly5RunRpIKeb18aNG4GctWBev36No6Mj9evXRy6X06NHD+RyudTK8TFr165FJpOxfPlyNDU1qVy5Mnfv3qV379558k6YMEG6v+Hh4ZQuXZqtW7fi7e1NSkoK7du3x97eHgBra+sCz2lsbIyqqip6enoK3w9dXV1+++033N3d0dPTY+7cuURFRUkzd+S+1MhthSrItGnTPjrFuSAIgiAI34cit6CEhISQnp5OiRIlePXqFe7u7tjY2KCnp/fZFny7du0anTt3xtraGn19faysrICchf7OnTuHo6Njvm+yAc6dO0ejRo3+dh1yA4FcWVlZBAUFYW9vj7GxMbq6uuzfv5+UlBQAEhISePPmTYHn1tTUpFu3bqxatQrImfXs4sWLeQZC5ycxMRE1NTWcnJykfTY2NhgZGSnkO3ToEI0aNcLCwgI9PT26devGo0ePePnypZRHXV0dBweHPOd4f19uq0/ug+n7+z5stXmflZWVFJwAmJubF5q/sDp8yvHVq1fHzs5OakWJjo7mwYMHUpD1qe7evUvTpk3p0KGDwkN+8eLFGTp0KLVr16ZmzZpMnz6drl27MmvWLCmPi4sLvr6+VK9eHXd3d7Zs2YKpqSlLly6V8jRo0ICrV6+SmpqKXC6nbt26qKqq4u7uLnX9ksvluLq6KjV+JjExUeq2laugVkQXFxfp38bGxtja2pKQkADAwIEDmTx5Mm5ubkyYMIHz588rd8PyOcfw4cMJCgpi2LBhUtBeFGPGjCEtLU3abt++/Ul1EQRBEATh61fkAMXAwICDBw+yc+dO5s+fz4ABA9izZw/R0dHo6Oh8lkp5eXnx+PFjli9fzsmTJ6XxJW/fvv3oAOGPpctksjzdlPIbBP/htcyaNYt58+YxatQooqKiOHfuHJ6entKsTsoMXO7VqxcHDx7kzp07hIaG0rBhw8+2wF5ycjItW7bEwcGBzZs3ExcXx6+//gqgMPOUlpZWvi0274+byE3Pb19hg+rzG3tRlEH4hR2vopLzVX3/Z5ffz83Hx0cKUNauXUvTpk0xMTFRug4funfvHh4eHri6urJs2bKP5q9du3ahCz8WK1YMR0dHhTxubm6oq6sTFRVFVFQU7u7uANSsWZO//vqLGzduIJfLleoK+Dn16tWLGzdu0K1bNy5cuICzszMLFiwocjnZ2dnExMSgqqpa6L0pjIaGBvr6+gqbIAiCIAjfp09aBwVyBvf+9NNPjBw5ksaNG3+2Cj169IjExETGjRtHo0aNsLOz48mTJ1K6g4MD586dk9Zf+ZCDg0Ohg85NTU2l/vGQ01rzfgtDQWJiYmjdujVdu3alWrVqWFtbK0yzW6FCBbS0tAo9t729Pc7Ozixfvpy1a9fSs2fPj54XcroJZWZmcvbsWWnf9evXFe5LXFwc2dnZhISEUKdOHSpWrMi9e/eUKv9bkNsV6P2fXX5T03bp0oWLFy8SFxfHpk2b8PHx+eRz3r17lwYNGlCjRg1CQ0OlIKkw586dw9zcvMD0rKwsLly4oJBHS0uL2rVrI5fLiY6OlgaKFytWjDp16rBy5Upu376t9AB5W1tbLly4oDDeKTY2Nt+870+J/OTJE65evYqdnZ20z9LSkn79+rFlyxaGDRvG8uXLCzyvuro6WVlZefbPmjWLK1euEB0dzb59+wgNDVU4Bsj3OEEQBEEQ/puUGoMyf/58pQscOHDgJ1cGwMjICBMTE5YtW4a5uTkpKSnSAFuAzp07M3XqVNq0acO0adMwNzfn7NmzlCpVChcXFyZMmECjRo0oX748nTp1IjMzkz179kiDhBs2bMjChQtxcXEhKyuLUaNG5Xlzn58KFSqwadMmjh8/jpGREbNnz+bPP/+kcuXKQE4XrlGjRjFy5EjU1dVxc3Pj4cOHXLp0CX9/f6mcXr16MWDAAHR0dBRmFytMpUqVaNy4MX369GHx4sUUK1aMYcOGKbSG2NjYkJGRwYIFC/Dy8iImJoYlS5Yofd+/dlpaWtSpU4fp06dTrlw5Hjx4kO/YEisrK1xdXfH39ycrK0saC1JUucFJ2bJlCQ4O5uHDh1Ja7liJ8PBw1NXVcXR0BHIGiq9atYoVK1ZIeSdNmkSdOnWwsbHh6dOnzJo1i1u3btGrVy+F83l4eDBnzhwAha587u7uBAcHS4PpldGlSxfGjh1Lnz59GD16NCkpKdLYmQ9bzyZNmoSJiQlmZmaMHTuW4sWL06ZNGyBnTFOzZs2oWLEiT548ISoqSiF4qVSpEtOmTZO+x1ZWVhw5coROnTqhoaFB8eLFOXv2LAEBAWzatAk3Nzdmz57NoEGDcHd3x9ramhIlSqClpcW+ffsoXbo0mpqaGBgYKHWdgiAIgiB8n5QKUHIfnD5GJpP97QBFRUWF9evXM3DgQKpWrYqtrS3z58+X3iqrq6tz4MABhg0bRvPmzcnMzKRy5cpSd6YGDRqwceNGgoKCmD59Ovr6+tSvX18qPyQkhB49elCvXj1KlSrFvHnziIuL+2i9xo0bx40bN/D09ERbW5s+ffrQpk0b0tLSpDzjx49HTU2NgIAA7t27h7m5Of369VMop3PnzgwePJjOnTsrjBH4mNWrV+Pv70/9+vUpWbIk06ZN49KlS1IZ1apVY/bs2cyYMYMxY8ZQv359pk2bJk3n+j1YtWoV/v7+1KhRA1tbW2bOnMkPP/yQJ5+Pjw8//fQTvr6+n7xmyMGDB7l+/TrXr1+XBrPner+bWVBQELdu3UJNTY1KlSqxYcMGfvzxRyn9yZMn9O7dm/v372NkZESNGjU4fvy4FNjm8vDwYNKkSTRt2hQ1tf/7tXR3d2fChAl4enoqFUhDzrorO3fu5H//+x/Vq1fH3t6egIAAunTpkuc7N336dAYNGsS1a9eoXr06O3fuVGjV6N+/P3fu3EFfX5+mTZsq/F+QmJio8P2fNGkSffv2pXz58rx584ZXr17RtWtX/Pz88PLyAqBPnz7s3r2bbt26ceTIEdTU1Jg/fz6TJk0iICCAevXq5Vn/RRAEQRCE/xbZu8LmjRU+u+TkZMqXL09sbKzCm/KiunPnDpaWltLAeEEoTEREBD169CAtLQ0tLS1pTZUnT54orGfzrXj27BkGBgakpaWJ8SiCIAiC8I1Q9u93kacZFj5NRkYGjx49Yty4cdSpU6fIwcnhw4dJT0/H3t6e1NRURo4ciZWVlULrkCDkWr16NdbW1lhYWBAfH8+oUaPw9vYWq9ALgiAIgvDVUypAGTp0KEFBQejo6DB06NBC886ePfuzVOx7ExMTg4eHBxUrVmTTpk0KaUePHqVZs2YFHpuenk5GRga//PILN27cQE9PD1dXVyIiIpTu9vMlpaSk5OnS9L7Lly9TpkyZf7FGMHXqVKZOnZpvWr169di7d++/Wp+iUKbu9+/fJyAggPv372Nubk6HDh0+2zTggiAIgiAI/ySlungZGxtz9epVihcvXuhMQjKZjMOHD3/WCv4XvHr1irt37xaY/v5ClN+izMxMkpOTC0y3srJSGHfxb3j8+HGBM8FpaWlhYWHxr9anKL7lun8uoouXIAiCIHx7lP37rVSAoqKiwv379ylRogTW1tbExsb+rbUlBEEQ/o7c/+Cq/bwEVY3vq9ta3KzvZ2ILQRAEQXifsgGKUuugGBkZcfPmTSBnkHdRFt8ThKJq0KABgwcP/sfPExgYSPXq1f/x83xr5HI5MpmMp0+ffumqCIIgCILwH6RUgNK+fXvc3d0pV64cMpkMZ2dnrK2t890E4e/asmULQUFBX7oa36T79+/TrVs3SpYsiY6ODk5OTmzevPlfObdMJmPbtm1FOkYEQ4IgCIIgfEipjv/Lli2jXbt2XL9+nYEDB9K7d2/09PT+6boJ/7KMjIyvYtC9sbHxl67CN8vX15enT5+yY8cOihcvztq1a/H29ub06dPSgpKCIAiCIAhfM6VaUACaNm3KgAED6N69O4MGDSpwE/59mzZtwt7eHi0tLUxMTGjcuDEvXrwAchY3rFKlChoaGpibmzNgwADpOJlMxuLFi2nVqhU6OjrSLE/bt2/HyckJTU1NrK2tmThxIpmZmdJxT58+pVevXpiamqKvr0/Dhg2Jj4+X0nO7Tq1ZswYrKysMDAzo1KkTz58/V+p6PuziZWVlRVBQEJ07d0ZHRwcLCwtpYc5cKSkptG7dGl1dXfT19fH29ubPP/9UyDN9+nTMzMzQ09PD39+f169fK3eDAT8/P9q0aUNwcDDm5uaYmJjQv39/MjIypDxr1qzB2dkZPT09SpYsSZcuXXjw4IGUnttaEBkZibOzM9ra2ri6upKYmKhwrsWLF1O+fHnU1dWxtbVlzZo1Stfz+PHj/Pzzz9SqVQtra2vGjRuHoaGhwmKkx48fp3r16mhqauLs7My2bduQyWScO3dOoayYmBgcHBzQ1NSkTp06XLx4scDzWllZAdC2bVtkMhlWVla8e/eOxo0b4+npKS1u+fjxY0qXLk1AQADJycnSpBtGRkbIZDL8/PyUvlZBEARBEL5PSgcouUJDQ0XryVckNTWVzp0707NnTxISEpDL5bRr1453796xePFi+vfvT58+fbhw4QI7duzIMyNYYGAgbdu25cKFC/Ts2ZOjR4/i6+vLoEGDuHz5MkuXLiUsLExhitoOHTrw4MED9u7dS1xcHE5OTjRq1EhhZqmkpCS2bdvGrl272LVrF9HR0UyfPv2Tr3PWrFlUq1aNs2fPMnr0aAYNGsTBgwcByM7OpnXr1jx+/Jjo6GgOHjzIjRs36Nixo3T877//TmBgIFOnTuX06dOYm5uzaNGiItUhKiqKpKQkoqKiCA8PJywsjLCwMCk9IyODoKAg4uPj2bZtG8nJyfk+cI8dO5aQkBBOnz6NmpoaPXv2lNK2bt3KoEGDGDZsGBcvXqRv37706NGDqKgopero6urKhg0bePz4MdnZ2axfv57Xr1/ToEEDIGdwmpeXF/b29pw5c4agoCBGjRqVb1kjRowgJCSE2NhYTE1N8fLyUgjI3hcbGwvk/P+QmppKbGwsMpmM8PBwYmNjmT9/PgD9+vXDwsKCgIAALC0tpe5niYmJpKamMm/evHzLf/PmDc+ePVPYBEEQBEH4PomV5L9xZ86coUaNGiQnJ1O2bFmFNAsLC3r06MHkyZPzPVYmkzF48GDmzJkj7WvcuDGNGjVizJgx0r7ffvuNkSNHcu/ePY4dO0aLFi148OABGhoaUh4bGxtGjhxJnz59CAwMZNasWdy/f18KZkeOHMmRI0f4448/PnpNDRo0oHr16sydOxfIeTtvZ2ensDZJp06dePbsGXv27OHgwYM0a9aMmzdvYmlpCeSsrVKlShVOnTpFzZo1cXV1xdHRUaHlpU6dOrx+/TpPy0F+/Pz8kMvlJCUloaqqCoC3tzcqKiqsX78+32NOnz5NzZo1ef78Obq6utLq7YcOHaJRo0YA7NmzhxYtWvDq1Ss0NTVxc3OjSpUqLFu2TCrH29ubFy9esHv37o/W8+nTp3Ts2JEDBw6gpqaGtrY2Gzdu5IcffgBgyZIljBs3jjt37qCpqQnAihUr6N27N2fPnqV69epSPdevXy8FebktH2FhYXh7e+d7bplMxtatW2nTpo3C/o0bN+Lr68vgwYNZsGABZ8+epUKFCgBKr2gfGBjIxIkT8+wXs3gJgiAIwrfjs87iJXy9qlWrRqNGjbC3t6dDhw4sX76cJ0+e8ODBA+7duyc9CBfE2dlZ4XN8fDyTJk1CV1dX2nr37k1qaiovX74kPj6e9PR0TExMFPLcvHmTpKQkqRwrKyuFljZzc3OF7k5F5eLikudzQkICAAkJCVhaWkrBCUDlypUxNDRUyFO7du1Cy/yYKlWqSMEJ5L2muLg4vLy8KFOmDHp6eri7uwM53c/e5+DgoFAGIJWTkJCAm5ubQn43NzfpOj5m/PjxPH36lEOHDnH69GmGDh2Kt7c3Fy5cAHJaKnK7beWqVatWvmW9f3+MjY2xtbVVuh7v69ChA23btmX69OkEBwdLwUlRjBkzhrS0NGm7fft2kcsQBEEQBOHb8O+ujid8dqqqqhw8eJDjx49z4MABFixYwNixY4mMjFTqeB0dHYXP6enpTJw4kXbt2uXJq6mpSXp6Oubm5sjl8jzp778B/3CwvUwm++anpy7sml68eIGnpyeenp5ERERgampKSkoKnp6evH37tsByZDIZwGe5N0lJSSxcuJCLFy9SpUoVICeAPXr0KL/++itLliz52+f4FC9fviQuLg5VVVWuXbv2SWVoaGgotNgJgiAIgvD9Ei0o3wGZTIabmxsTJ07k7NmzqKurc/DgQaysrJQOVHI5OTmRmJiIjY1Nnk1FRQUnJyfu37+PmppanvTixYv/Q1dInq5hf/zxB3Z2dgDY2dlx+/Zthbfqly9f5unTp1SuXFnKc/LkyULL/DuuXLnCo0ePmD59OvXq1aNSpUqf1GJkZ2dHTEyMwr6YmBjpOgrz8uVLIGdh1fepqqpKAZCtrS0XLlzgzZs3Unru+JEPvX9/njx5wtWrV6V7np9ixYqRlZWVZ/+wYcNQUVFh7969zJ8/n8OHD0tp6urqAPkeJwiCIAjCf5MIUL5xJ0+elAZ+p6SksGXLFh4+fIidnR2BgYGEhIQwf/58rl27xpkzZ1iwYEGh5QUEBLB69WomTpzIpUuXSEhIYP369YwbNw7IGaPi4uJCmzZtOHDgAMnJyRw/fpyxY8dy+vTpf+w6Y2JimDlzJlevXuXXX39l48aN0qxxjRs3xt7eHh8fH86cOcOpU6fw9fXF3d1d6sI2aNAgVq1aRWhoKFevXmXChAlcunTps9WvTJkyqKurs2DBAm7cuMGOHTs+aS2XESNGEBYWxuLFi7l27RqzZ89my5YtDB8+/KPHVqpUCRsbG/r27cupU6dISkoiJCSEgwcPSuNCunTpQnZ2Nn369CEhIYH9+/cTHBwM/F9rTq5JkyYRGRnJxYsX8fPzo3jx4lI5d+/epVKlSpw6dUrKnxsQ379/nydPngCwe/duVq1aRUREBE2aNGHEiBF0795dSi9btiwymYxdu3bx8OFD0tPTi3zPBEEQBEH4vogA5Runr6/PkSNHaN68ORUrVmTcuHGEhITQrFkzunfvzty5c1m0aBFVqlShZcuWH+1i4+npya5duzhw4AA1a9akTp06zJkzRxqAL5PJ2LNnD/Xr16dHjx5UrFiRTp06cevWLczMzP6x6xw2bJi0lsfkyZOZPXs2np6eUp22b9+OkZER9evXp3HjxlhbW7Nhwwbp+I4dOzJ+/HhGjhxJjRo1uHXrFv/73/8+W/1MTU0JCwtj48aNVK5cWRpvUVRt2rRh3rx5BAcHU6VKFZYuXUpoaKg0C1dhihUrxp49e6QZtxwcHFi9ejXh4eE0b94cyPm+7Ny5k3PnzlG9enXGjh1LQEAAgMK4FMiZlnnQoEHUqFGD+/fvs3PnTqnFIyMjg8TERKnVBpCCIUtLSxwdHXn48CH+/v4EBgbi5OQEwMSJEzEzM6Nfv35AzkQOEydOZPTo0ZiZmSlMgy0IgiAIwn+TmMVL+OpZWVkxePBghbVRhM8nIiKCHj16kJaWhpbWtzEjlrKzgAiCIAiC8PVQ9u+3GCQvCP8xq1evxtraGgsLC+Lj4xk1ahTe3t7fTHAiCIIgCML3TXTxEv5VKSkpCtMTf7h9OCXvv6WwOh09evSL1OlDERERBdYxd9YuZdy/f5+uXbtiZ2fHkCFD6NChg8K6K4IgCIIgCF+S6OIl/KsyMzNJTk4uMN3Kygo1tX+/Ye/69esFpllYWHwVrQvPnz/nzz//zDetWLFieRbq/J6JLl6CIAiC8O1R9u+3CFAEQfjm5P4H9z2tJC9WkBcEQRC+d2IleSUlJycjk8k4d+7cl67KN0Umk7Ft27YvXY0i8fPzk6bJFQRBEARBEL5O//kA5VOIB11ITU2lWbNmX7oaRTJv3jzCwsKUyjtt2jRq1qyJnp4eJUqUoE2bNiQmJirkadCgATKZTGHLnT4314fpMpmM9evXAzmLO8pksjwLRtapUwdNTU1ev34t7Xv9+jWampqsXLnyE678nxcYGEj16tWLfFyDBg3E7GyCIAiCICgQAcp/WEZGxicfW7JkSTQ0ND5jbf55BgYGGBoaKpU3Ojqa/v3788cff3Dw4EEyMjL44YcfePHihUK+3r17k5qaKm0zZ87MU1ZoaKhCntzgtlKlSpQsWRK5XC7lff78OWfOnMHU1FQhcDlx4gRv3ryhYcOGRb5uQRAEQRCEb8k3FaBYWVkxd+5chX3Vq1cnMDAQyHlbvXjxYpo1a4aWlhbW1tZs2rRJIf+pU6dwdHREU1MTZ2dnzp49q5CelZWFv78/5cqVQ0tLC1tbW+bNmyelBwYGEh4ezvbt26U34rkPmLdv38bb2xtDQ0OMjY1p3bq1woBwuVxOrVq10NHRwdDQEDc3N27duqXUtU+ePJkSJUqgp6dHr169GD16tMIb69jYWJo0aULx4sUxMDDA3d2dM2fOKJSRe39atWqFjo4OU6ZMkd58r1q1ijJlyqCrq8tPP/1EVlYWM2fOpGTJkpQoUYIpU6bkKSu3i1duN7ktW7bg4eGBtrY21apV48SJE0pdW1hYGIaGhuzfvx87Ozt0dXVp2rQpqampUp783rS3adMGPz8/AH755Rdq166dp+xq1aoxadIkoGgtX/v27cPPz48qVapQrVo1wsLCSElJIS4uTiGftrY2JUuWlLb8+lMaGhoq5Hl/QUQPDw+FAOXYsWNUrFgRLy8vhf1yuZyyZctSrly5j9b9+fPn+Pj4oKOjg7m5OXPmzMlz/6ysrAgKCqJz587o6OhgYWHBr7/+KqW/e/eOwMBAypQpg4aGBqVKlWLgwIH5ni8sLIyJEycSHx8v/U6EhYUhl8tRV1dXmAVt5syZlChRgj///BM/Pz+io6OZN2+edFxhEygIgiAIgvDf8E0FKMoYP3487du3Jz4+Hh8fHzp16kRCQgIA6enptGzZksqVKxMXF0dgYCDDhw9XOD47O5vSpUuzceNGLl++TEBAAL/88gu///47AMOHD8fb21t6gE5NTcXV1ZWMjAw8PT3R09Pj6NGjxMTESA/ab9++JTMzkzZt2uDu7s758+c5ceIEffr0QSaTffSaIiIimDJlCjNmzCAuLo4yZcqwePFihTzPnz+ne/fuHDt2jD/++IMKFSrQvHlznj9/rpAvMDCQtm3bcuHCBXr27AlAUlISe/fuZd++faxbt46VK1fSokUL7ty5Q3R0NDNmzGDcuHGcPHmy0HqOHTuW4cOHc+7cOSpWrEjnzp3JzMz86PUBvHz5kuDgYNasWcORI0dISUnJ87MpjI+PD6dOnSIpKUnad+nSJc6fP0+XLl2ULqcgaWlpABgbGyvsj4iIoHjx4lStWpUxY8YorKyeq3///hQvXpxatWqxatUq3p+XwsPDg2PHjkn3KSoqigYNGuDu7k5UVJSULyoqCg8PD6XqOnToUGJiYtixYwcHDx7k6NGjeYJVgFmzZlGtWjXOnj3L6NGjGTRoEAcPHgRg8+bNzJkzh6VLl3Lt2jW2bduGvb19vufr2LEjw4YNo0qVKtLvRMeOHaWgqFu3bqSlpXH27FnGjx/PihUrMDMzY968ebi4uCi0QllaWuZ7jjdv3vDs2TOFTRAEQRCE79N3t1Bjhw4d6NWrFwBBQUEcPHiQBQsWsGjRItauXUt2djYrV65EU1OTKlWqcOfOHf73v/9JxxcrVoyJEydKn8uVK8eJEyf4/fff8fb2RldXFy0tLd68eUPJkiWlfL/99hvZ2dmsWLFCCjpCQ0MxNDRELpfj7OxMWloaLVu2pHz58gDY2dkpdU0LFizA39+fHj16ABAQEMCBAwdIT0+X8nzY9WfZsmUYGhoSHR1Ny5Ytpf1dunSRysmVnZ3NqlWr0NPTo3Llynh4eJCYmMiePXtQUVHB1taWGTNmEBUVlW8rRa7hw4fTokULACZOnEiVKlW4fv06lSpV+ug1ZmRksGTJEuneDBgwQGr5UEZuS8fatWsZP348kBM81K5dGxsbG6XLyU92djaDBw/Gzc2NqlWrSvu7dOlC2bJlKVWqFOfPn2fUqFEkJiayZcsWKc+kSZNo2LAh2traHDhwgJ9++on09HSpNcLDw4MXL14QGxuLi4sLcrmcESNGULduXbp3787r16959+4dp06dkr7XhXn+/Dnh4eGsXbuWRo0aATnfw1KlSuXJ6+bmxujRowGoWLEiMTExzJkzhyZNmpCSkkLJkiVp3LgxxYoVo0yZMtSqVSvfc2ppaaGrq4uamprC7wTktPwdPHiQPn36cPHiRbp3706rVq2AnC536urqUitUYaZNm6bweykIgiAIwvfru2tBcXFxyfM5twUlISEBBwcHhS42H+YH+PXXX6lRowampqbo6uqybNmyjy4gGB8fz/Xr19HT05MWzzM2Nub169ckJSVhbGyMn58fnp6eeHl5MW/ePIUuTIVJTEzM83D44ec///yT3r17U6FCBQwMDNDX1yc9PT1PvZ2dnfOUb2VlhZ6envTZzMyMypUro6KiorDvwYMHhdbTwcFB+re5uTnAR4/Jpa2tLQUnuccre2wuHx8f1q5dC+R0UVq3bh0+Pj5FKiM//fv35+LFi9Lg9lx9+vTB09MTe3t7fHx8WL16NVu3blVoxRk/fjxubm44OjoyatQoRo4cyaxZs6R0GxsbSpcujVwu59mzZ5w9exZ3d3fMzc0pU6YMJ06ckMafKNOCcuPGDTIyMhS+HwYGBtja2ubJW9jvSocOHXj16hXW1tb07t2brVu3Kt0a9j51dXUiIiLYvHkzr1+/Zs6cOUUuA2DMmDGkpaVJ2+3btz+pHEEQBEEQvn7fVICioqLCh8u2/J2B3vlZv349w4cPx9/fnwMHDnDu3Dl69OjB27dvCz0uPT2dGjVqcO7cOYXt6tWrUhej0NBQTpw4gaurKxs2bKBixYp5ZnD6VN27d+fcuXPMmzeP48ePc+7cOUxMTPLUW0dHJ8+xxYoVU/gsk8ny3ZednV1oHd4/JrcV6WPHFFaH93/WyvzsO3fuTGJiImfOnOH48ePcvn2bjh07KnX+ggwYMIBdu3YRFRVF6dKlC82b27pU2KKPtWvX5s6dO7x580ba16BBA6Kiojh69CgVKlSgRIkSAFI3r6ioKGxsbArs/vRPsLS0JDExkUWLFqGlpcVPP/1E/fr1P+n37fjx4wA8fvyYx48ff1J9NDQ00NfXV9gEQRAEQfg+fVMBiqmpqUKrw7Nnz7h586ZCng8f+P/44w+pK5WdnR3nz59XmL71w/wxMTG4urry008/4ejoiI2NjcIbcch5K5yVlaWwz8nJiWvXrlGiRAlsbGwUNgMDAymfo6MjY8aM4fjx41StWlV6418YW1tbYmNjFfZ9+DkmJoaBAwfSvHlzqlSpgoaGBn/99ddHy/5WfPizz8rK4uLFiwp5Spcujbu7OxEREURERNCkSRPpYb+o3r17x4ABA9i6dSuHDx9WanB67lo6ua1HBeUxMjJSmAHNw8OD48ePc/DgQRo0aCDtr1+/PnK5HLlcrvT4E2tra4oVK6bw/UhLS+Pq1at58hb2uwI5Xbe8vLyYP38+crmcEydOcOHChXzPm9/vBOSMbxoyZAjLly+ndu3adO/eXSFoLeg4QRAEQRD+u76pAKVhw4asWbOGo0ePcuHCBbp3746qqqpCno0bN7Jq1SquXr3KhAkTOHXqFAMGDAByxgzIZDJ69+7N5cuX2bNnD8HBwQrHV6hQgdOnT7N//36uXr3K+PHj8wQDVlZWnD9/nsTERP766y8yMjLw8fGhePHitG7dmqNHj3Lz5k3kcjkDBw7kzp073Lx5kzFjxnDixAlu3brFgQMHuHbtmlLjUH7++WdWrlxJeHg4165dY/LkyZw/f15hgH2FChVYs2YNCQkJnDx5Eh8fH7S0vo8VtiHnZ7979252797NlStX+N///sfTp0/z5PPx8WH9+vVs3Ljxb3Xv6t+/P7/99htr165FT0+P+/fvc//+fV69egXkPHgHBQURFxdHcnIyO3bswNfXl/r160td3Xbu3MmKFSu4ePEi169fZ/HixUydOpWff/5Z4Vy541BWrVqFu7u7tN/d3Z2TJ09y6tQppQMUPT09unfvzogRI4iKiuLSpUv4+/ujoqKSZ0KGmJgYZs6cydWrV/n111/ZuHEjgwYNAnJm5lq5ciUXL17kxo0b/Pbbb2hpaVG2bFkgp8uVr+//rXxuZWXFzZs3OXfuHH/99Rdv3rwhKyuLrl274unpSY8ePQgNDeX8+fOEhIQoHHfy5EmSk5P566+/lG5xEwRBEATh+/VNBShjxozB3d2dli1b0qJFC9q0aaMwbgFyBmevX78eBwcHVq9ezbp166hcuTIAurq67Ny5kwsXLuDo6MjYsWOZMWOGwvF9+/alXbt2dOzYkdq1a/Po0SN++uknhTy9e/fG1tYWZ2dnTE1NiYmJQVtbmyNHjlCmTBnatWuHnZ0d/v7+vH79Gn19fbS1tbly5Qrt27enYsWK9OnTh/79+9O3b9+PXrePjw9jxoxh+PDhODk5cfPmTfz8/BTG0qxcuZInT57g5OREt27dGDhw4Ce3HnyNevbsSffu3fH19cXd3R1ra+t8H9p//PFHHj16xMuXL//WYpqLFy8mLS2NBg0aYG5uLm0bNmwAct78Hzp0iB9++IFKlSoxbNgw2rdvz86dO6UyihUrxq+//oqLiwvVq1dn6dKlzJ49mwkTJiicq1y5cpQtW5bnz58rBChlypShVKlSvH37VqFl5WNmz56Ni4sLLVu2pHHjxri5uWFnZ6fwfQEYNmwYp0+fxtHRkcmTJzN79mw8PT2BnKmRly9fjpubGw4ODhw6dIidO3diYmIC5CzU+f74pvbt29O0aVM8PDwwNTVl3bp1TJkyhVu3brF06VIgp2Vp2bJljBs3jvj4eCBnYgVVVVUqV66MqanpR8d6CYIgCILw/ZO9+7Bj/zdMJpOxdevW/8Qq702aNKFkyZKsWbPmS1dF+Mq9ePECCwsLQkJC8Pf3B3JaLgYPHvzNruL+7NkzDAwMqPbzElQ1vo+WwrhZvh/PJAiCIAjfsNy/32lpaYWOJ/3uphn+Hr18+ZIlS5bg6emJqqoq69at49ChQ9KaFYLwvrNnz3LlyhVq1apFWlqaNF1z69atv3DNPr8jkzuLAfOCIAiC8J35prp4fa+qVKkiTU384RYREYFMJmPPnj3Ur1+fGjVqsHPnTjZv3kzjxo2/dNWV0qxZswKvb+rUqf96fVJSUgqsj66u7lfdzUjZugcHB1OtWjUaN27MixcvOHr0KMWLF//CtRcEQRAEQfi476qL17fq1q1bBU7famZmprBGybfo7t270uDyDxkbG+dZnf2flpmZSXJycoHpVlZWqKl9nY2L33LdPydlm4gFQRAEQfh6KPv3WwQogiB8c763MShi/IkgCILwX6BsgPLVdfFq0KCBNHDXysqKuXPnfpF6fMlzf+2Sk5ORyWTSuh/five/W4IgCIIgCMLX6asLUN4XGxtLnz59/tFzhIWFYWho+EXO/a2ytLQkNTWVqlWrfumqFMmWLVsICgr6aL6MjAxGjRqFvb09Ojo6lCpVCl9fX+7du6eQz8rKCplMprBNnz5dSs8N5D7cchdI3LdvHzKZjPv37yuUa25ujpWVlcK+3LIiIyM/8er/WX5+fp80e554ESAIgiAIwoe+6gDF1NQUbW3tAtMLGrfxb5z7e/Cp909VVZWSJUt+c2MdjI2NlRrP8/LlS86cOcP48eM5c+YMW7ZsITExkVatWuXJO2nSJFJTU6Xtw0UYAQ4dOqSQp0aNGgDUrVsXNTU15HK5lDchIYFXr17x5MkThbEmUVFRaGho4ObmVvQLFwRBEARB+IZ80QDlxYsX+Pr6oquri7m5ucIK05D37apMJmPx4sW0atUKHR0dpkyZAsD27dtxcnJCU1MTa2trJk6cSGZmpnTc06dP6du3L2ZmZmhqalK1alV27dqFXC6nR48epKWlSW+3AwMD8z13SkoKrVu3RldXF319fby9vfnzzz+l9MDAQKpXr86aNWuwsrLCwMCATp068fz5cynPpk2bsLe3R0tLCxMTE2mGpY/JzMxk4MCBGBoaYmJiwqhRo+jevbvCG+t9+/ZRt25dKU/Lli1JSkqS0nPfwG/YsAF3d3c0NTWJiIiQ3nxPnToVMzMzDA0NmTRpEpmZmYwYMQJjY2NKly5NaGhonrJyu3jJ5XLp7b6zszPa2tq4urqSmJj40WtT9t7l96a9evXq0s+rS5cudOzYUSE9IyOD4sWLs3r1akD5Ll4GBgYcPHgQb29vbG1tqVOnDgsXLiQuLi7PDF96enqULFlS2nR0dPKUZ2JiopCnWLFiQM7CoTVr1lQIUORyOXXr1sXNzS3P/jp16uRZbDE/qamptGjRAi0tLcqVK8fatWsL/F1q1qwZWlpaWFtbs2nTJin97du3DBgwAHNzczQ1NSlbtizTpk3L93yBgYGEh4ezfft26fdILpezevVqdHV1uXbtmpT3p59+olKlSrx8+ZIGDRpw69YthgwZIh0nCIIgCILwRQOUESNGEB0dzfbt2zlw4AByuZwzZ84UekxgYCBt27blwoUL9OzZk6NHj+Lr68ugQYO4fPkyS5cuJSwsTApesrOzadasGTExMfz2229cvnyZ6dOno6qqiqurK3PnzkVfX196uz18+PA858zOzqZ169Y8fvyY6OhoDh48yI0bN/I8ECclJbFt2zZ27drFrl27iI6Olrr8pKam0rlzZ3r27ElCQgJyuZx27dqhzBwFM2bMICIigtDQUGJiYnj27Bnbtm1TyPPixQuGDh3K6dOniYyMREVFhbZt25Kdna2Qb/To0QwaNIiEhARp1fDDhw9z7949jhw5Iq103rJlS4yMjDh58iT9+vWjb9++3Llzp9B6jh07lpCQEE6fPo2amho9e/b86LUpc++U4ePjw86dO0lPT5f27d+/n5cvX9K2bVulyylIbhD7YXfA6dOnY2JigqOjI7NmzVIIjHO1atWKEiVKULduXXbs2KGQ5uHhQVRUlPQ5KiqKBg0a4O7urrBfLpfj4eGhVF1zu6PJ5XI2b97MsmXLePDgQZ5848ePp3379sTHx+Pj40OnTp1ISEgAYP78+ezYsYPff/+dxMREIiIi8nQ7yzV8+HC8vb1p2rSp9Hvk6uqKr68vzZs3x8fHh8zMTHbv3s2KFSuIiIhAW1ubLVu2ULp0aYVWqIK8efOGZ8+eKWyCIAiCIHyfvlgfnfT0dFauXMlvv/1Go0aNAAgPD6d06dKFHtelSxd69Oghfe7ZsyejR4+me/fuAFhbWxMUFMTIkSOZMGEChw4d4tSpUyQkJFCxYkUpTy4DAwNkMhklS5Ys8JyRkZFcuHCBmzdvYmlpCcDq1aupUqUKsbGx1KxZE8gJZMLCwqRuRN26dSMyMpIpU6aQmppKZmYm7dq1o2zZsgDY29srda8WLFjAmDFjpAfthQsXsmfPHoU87du3V/i8atUqTE1NuXz5ssJYkcGDB9OuXTuFvMbGxsyfPx8VFRVsbW2ZOXMmL1++5JdffgFgzJgxTJ8+nWPHjtGpU6cC6zllyhTc3d2BnECoRYsWvH79Wqm3/oXdO2V4enqio6PD1q1b6datGwBr166lVatWf3ua5tevXzNq1Cg6d1ZcFHDgwIE4OTlhbGzM8ePHGTNmDKmpqcyePRvIaSEJCQnBzc0NFRUVNm/eTJs2bdi2bZvUXczDw4OpU6eSmpqKubk50dHRjBgxgszMTBYvXgzAjRs3SElJUSpAuXLlCocOHSI2NhZnZ2cAVqxYQYUKFfLk7dChA7169QIgKCiIgwcPsmDBAhYtWkRKSgoVKlSgbt26yGQy6TubH11dXbS0tHjz5k2e36OlS5fi4ODAwIED2bJlC4GBgVIXN2NjY1RVVaVWqMJMmzaNiRMnfvT6BUEQBEH49n2xACUpKYm3b99Su3ZtaZ+xsTG2traFHpf70JUrPj6emJgYhQfZrKwsXr9+zcuXLzl37hylS5eWgpNPkZCQgKWlpRScAFSuXBlDQ0MSEhKkAMXKykrhYdjc3Fx6c12tWjUaNWqEvb09np6e/PDDD/z4448YGRkVeu60tDT+/PNPatWqJe1TVVWlRo0aCq0j165dIyAggJMnT/LXX39JaSkpKQoByof3D3IWilRR+b/GNDMzM4VjVFVVMTExyfct/PscHBwUrh3gwYMHlClTptDjoPB7pww1NTW8vb2JiIigW7duvHjxgu3bt7N+/Xqly8hPRkYG3t7evHv3TgoYcg0dOlT6t4ODA+rq6vTt25dp06ahoaFB8eLFFfLUrFmTe/fuMWvWLClAcXV1RV1dHblcTrVq1Xj16hVOTk5kZ2fz8OFDbt68iVwuR0tLizp16ny0vomJiaipqeHk5CTts7Gxyfd75uLikudzbrc9Pz8/mjRpgq2tLU2bNqVly5b88MMPH79hHzAyMmLlypV4enri6urK6NGji1wG5ATJ79/LZ8+eKfw+CoIgCILw/fiqB8nn58M+/unp6UycOJFz585J24ULF7h27Rqamppoaf17ayTkji3IJZPJpEBBVVWVgwcPsnfvXipXrsyCBQuwtbXl5s2bn+XcXl5ePH78mOXLl3Py5ElOnjwJ5IwleF9+YyTyq3dh11KQ94/JHU/wsWMKq8P7x6qoqOTpDvfhIH8fHx8iIyN58OAB27ZtQ0tLi6ZNmyp1/vzkBie3bt3i4MGDH10QsHbt2h9dSLF27dpcv35d+qytrU2tWrWIiooiKiqKunXroqqqSrFixXB1dZX2u7m5oa6u/snXUlROTk7cvHmToKAgXr16hbe3Nz/++OMnlXXkyBFUVVVJTU1VasxVfjQ0NNDX11fYBEEQBEH4Pn2xAKV8+fIUK1ZMepAGePLkCVevXi1SOU5OTiQmJmJjY5NnU1FRwcHBgTt37hRYrrq6OllZWYWew87Ojtu3b3P79m1p3+XLl3n69CmVK1dWuq4ymQw3NzcmTpzI2bNnUVdXZ+vWrYUeY2BggJmZGbGxsdK+rKwshbE6jx49IjExkXHjxtGoUSPs7Ox48uSJ0vX6FpiamiqMUXj27Fme4M7V1RVLS0s2bNhAREQEHTp0yBP4KCs3OLl27RqHDh3CxMTko8ecO3cOFRUVSpQoUWie3NalXB4eHsjlcuRyOQ0aNJD2169fH7lcTnR0tNLjT2xtbcnMzOTs2bPSvuvXr+f7fcid7vj9z3Z2dtJnfX19OnbsyPLly9mwYQObN2/m8ePH+Z63oN+j48ePM2PGDHbu3Imuri4DBgxQ6jhBEARBEP67vlgXL11dXfz9/RkxYgQmJiaUKFGCsWPHKnQ1UkZAQAAtW7akTJky/Pjjj6ioqBAfH8/FixeZPHky7u7u1K9fn/bt2zN79mxsbGy4cuUKMpmMpk2bYmVlRXp6OpGRkVSrVg1tbe080ws3btwYe3t7fHx8mDt3LpmZmfz000+4u7vn22UqPydPniQyMpIffviBEiVKcPLkSR4+fKjwQFiQn3/+mWnTpmFjY0OlSpVYsGABT548kVopjIyMMDExYdmyZZibm5OSkvLJXWm+Vg0bNiQsLAwvLy8MDQ0JCAhAVVU1T74uXbqwZMkSrl69qjDIvCgyMjL48ccfOXPmDLt27SIrK0taq8TY2Bh1dXVOnDjByZMn8fDwQE9PjxMnTjBkyBC6du0qdacKDw9HXV0dR0dHIGcdllWrVrFixQqF83l4eBAUFMT9+/cVJmlwd3dn1qxZPH/+XOkApVKlSjRu3Jg+ffqwePFiihUrxrBhw9DS0sozS9bGjRtxdnambt26REREcOrUKVauXAnA7NmzMTc3x9HRERUVFTZu3EjJkiWlSQJ8fX2xsLCQZvaysrJi//79JCYmYmJigoGBAa9fv6Zbt24MHDiQZs2aUbp0aWrWrImXl5fUGmNlZcWRI0fo1KmT1C1OEARBEIT/ti/axWvWrFnUq1cPLy8vGjduTN26daUBtMry9PRk165dHDhwgJo1a1KnTh3mzJmjMKh38+bN1KxZk86dO1O5cmVGjhwpvbV1dXWlX79+dOzYEVNTU2bOnJnnHDKZjO3bt2NkZET9+vVp3Lgx1tbWbNiwQel66uvrc+TIEZo3b07FihUZN24cISEhNGvW7KPH5g7Q9vX1xcXFBV1dXTw9PaXB5yoqKqxfv564uDiqVq3KkCFDmDVrltJ1+xaMGTMGd3d3WrZsSYsWLWjTpg3ly5fPk8/Hx4fLly9jYWHxyWuG3L17lx07dnDnzh2qV6+Oubm5tB0/fhzI6XK0fv163N3dqVKlClOmTGHIkCEsW7ZMoaygoCBq1KhB7dq12b59Oxs2bFCY5AFyxn5oaGjw7t07he9/7dq1ycjIkKYjVtbq1asxMzOjfv36tG3blt69e6Onp5dnsoKJEyeyfv16HBwcWL16NevWrZNaBPX09Jg5cybOzs7UrFmT5ORk9uzZI71ASElJUWjR6t27N7a2tjg7O2NqakpMTAyDBg1CR0eHqVOnAjmTQkydOpW+ffty9+5dIGcdmeTkZMqXL4+pqanS1ygIgiAIwvdL9k6ZeW6Fr0p2djZ2dnZ4e3srtTK68N92584dLC0tOXTokDRjnkwmY+vWrZ+0+vvX4NmzZxgYGFDt5yWoavx748z+KXGzfL90FQRBEAThH5f79zstLa3Q8aTf1lLg/1G3bt3iwIEDuLu78+bNGxYuXMjNmzfp0qXLl66a8BU6fPgw6enp2Nvbk5qaysiRI7GysqJ+/fpfumqf3ZHJncWAeUEQBEH4znxzs3h9j3R1dQvcjh49ioqKCmFhYdSsWRM3NzcuXLjAoUOHlBq/8jWoUqVKgdcXERHxr9fn6NGjhd7zr5kydc/IyOCXX36hSpUqtG3bFlNTU+Ry+SdPGCAIgiAIgvBvEl28vgLvTzv7IQsLi391quR/wq1bt/JMCZzLzMzsby+kWFSvXr2SxkDkx8bG5l+sTdF8y3X/nJRtIhYEQRAE4euh7N9vEaAIgvDN+V7GoIixJ4IgCMJ/ibIBiuji9ZmFhYVJU7Eqy8/P77MNVg4MDKR69eqfpSzh3/ex78Ln+vlaWVkxd+5c6bNMJmPbtm1/u1xBEARBEIS/SwQon1nHjh2LvNikMj58oCzI8OHDiYyM/OznF74OX+vPVy6XI5PJePr0aZGOEwG1IAiCIAgfErN4fWZaWlpfdMzItzDQW/h04ucrCIIgCML37rtsQcnOzmbatGmUK1cOLS0tqlWrxqZNm3j37h02NjYEBwcr5D937hwymUwarP706VN69eqFqakp+vr6NGzYkPj4eCl/fHy8tIK4vr4+NWrU4PTp00D+XbwmT55MiRIl0NPTo1evXowePTrft8bBwcGYm5tjYmJC//79pYHlDRo04NatWwwZMgSZTJZnRfD3ffhGWi6XU6tWLXR0dDA0NMTNzY1bt2599Drye7M9d+5crKysFPatWLECOzs7NDU1qVSpEosWLZLS3r59y4ABAzA3N0dTU5OyZctKK49/zOzZs7G3t0dHRwdLS0t++ukn0tPTpfTc+7xr1y5sbW3R1tbmxx9/5OXLl4SHh2NlZYWRkREDBw6UFuUEWLNmDc7Ozujp6VGyZEm6dOnCgwcPpHQ/Pz/pHr+/yeVyAJ48eYKvry9GRkZoa2vTrFkzrl27lqde+/fvx87ODl1dXZo2baqwqGFRxMbGYmpqyowZM4C8P5fcLmEFfXcAHjx4gJeXF1paWpQrV06pmdNu376Nt7c3hoaGGBsb07p1a5KTk/PNm5ycLK10b2RkhEwmw8/Pj4cPH1KyZElpoUaA48ePo66uTmRkJGFhYUycOJH4+HjpPoeFhRX9JgmCIAiC8F35LgOUadOmsXr1apYsWcKlS5cYMmQIXbt25ciRI/Ts2ZPQ0FCF/KGhodSvX1+aAalDhw48ePCAvXv3EhcXh5OTE40aNeLx48dAzmrlpUuXJjY2lri4OEaPHl3gFK4RERFMmTKFGTNmEBcXR5kyZVi8eHGefFFRUSQlJREVFUV4eDhhYWHSw9qWLVsoXbo0kyZNIjU1VemH3czMTNq0aYO7uzvnz5/nxIkT9OnTRwpwinIdBV1bQEAAU6ZMISEhgalTpzJ+/HjCw8MBmD9/Pjt27OD3338nMTGRiIiIPAFOQVRUVJg/fz6XLl0iPDycw4cPM3LkSIU8L1++ZP78+axfv559+/Yhl8tp27Yte/bsYc+ePaxZs4alS5eyadMm6ZiMjAyCgoKIj49n27ZtJCcn4+fnJ6XPmzdPusepqakMGjSIEiVKUKlSJSAnIDh9+jQ7duzgxIkTvHv3jubNmysEBC9fviQ4OJg1a9Zw5MgRUlJSGD58uNL3Ndfhw4dp0qQJU6ZMYdSoUQXmK+y7k1vn27dvExUVxaZNm1i0aJFCUPahjIwMPD090dPT4+jRo8TExEiB1tu3b/Pkt7S0ZPPmzQAkJiaSmprKvHnzMDU1ZdWqVQQGBnL69GmeP39Ot27dGDBgAI0aNaJjx44MGzaMKlWqSPe7Y8eO+dbpzZs3PHv2TGETBEEQBOH79N118Xrz5g1Tp07l0KFDuLi4AGBtbc2xY8dYunQpwcHBBAQEcOrUKWrVqkVGRgZr166VWlWOHTvGqVOnePDgARoaGkBOy8a2bdvYtGkTffr0ISUlhREjRkgPrRUqVCiwPgsWLMDf358ePXoAEBAQwIEDBxRaAyDnzfPChQtRVVWlUqVKtGjRgsjISHr37o2xsTGqqqrSW39lPXv2jLS0NFq2bEn58uUBFNZOKcp15GfChAmEhITQrl07AMqVK8fly5dZunQp3bt3JyUlhQoVKlC3bl1kMhlly5ZVuuzBgwdL/7aysmLy5Mn069dPoYUmIyODxYsXS9f2448/smbNGv788090dXWpXLkyHh4eREVFSQ++PXv2lI63trZm/vz51KxZk/T0dHR1dTEwMMDAwADICQyXLl3KoUOHKFmyJNeuXWPHjh3ExMTg6uoK5ARplpaWbNu2jQ4dOkj1WrJkiVSvAQMGMGnSpCLd261bt+Lr68uKFSsKfGjPVdh35+rVq+zdu5dTp05Rs2ZNAFauXFnoGjobNmwgOzubFStWSMFsaGgohoaGyOVyfvjhB4X8qqqqGBsbA1CiRAmFFsTmzZvTu3dvfHx8cHZ2RkdHR2pF09LSQldXFzU1tY9+r6dNm8bEiRMLzSMIgiAIwvfhu2tBuX79Oi9fvqRJkyYKC9itXr2apKQkSpUqRYsWLVi1ahUAO3fu5M2bN9LDZXx8POnp6ZiYmCgcf/PmTZKSkgAYOnQovXr1onHjxkyfPl3an5/ExERq1aqlsO/Dz5CzmKGqqqr02dzcvNC33KC4wGO/fv3ypBsbG+Pn54enpydeXl5S60CuolzHh168eEFSUhL+/v4K9Zg8ebJUjp+fH+fOncPW1paBAwdy4MABpcs/dOgQjRo1wsLCAj09Pbp168ajR494+fKllEdbW1sKAiBnTRUrKyuFMRpmZmYK9zEuLg4vLy/KlCmDnp4e7u7uQE6w9r6zZ8/SrVs3Fi5ciJubGwAJCQmoqalRu3ZtKZ+JiQm2trYkJCQUWC9lfpbvO3nyJB06dGDNmjUfDU6g8O9Obp1r1KghpVeqVKnQmebi4+O5fv06enp60s/V2NiY169fF+k7kis4OJjMzEw2btxIRESEFPgXxZgxY0hLS5O227dvF7kMQRAEQRC+Dd9dC0puy8Tu3buxsLBQSMt9MOrVqxfdunVjzpw5hIaG0rFjR7S1taXjzc3NpTEH78t9qAsMDKRLly7s3r2bvXv3MmHCBNavX0/btm0/ufl2nJAAAGdoSURBVN4fdq2SyWRkZ2cXesy5c+ekfxc0l3RoaCgDBw5k3759bNiwgXHjxnHw4EHq1KlT6HWoqKjw4RI573djyr3Py5cvV3hgB6SHZScnJ27evMnevXs5dOgQ3t7eNG7cWKHLVX6Sk5Np2bIl//vf/5gyZQrGxsYcO3YMf39/3r59K/2s8rtnhd3HFy9e4OnpiaenJxEREZiampKSkoKnp6dC16X79+/TqlUrevXqhb+/f6F1zU9+dSjKckPly5fHxMSEVatW0aJFi492u/uU705h0tPTqVGjRr5jVUxNTYtcXlJSEvfu3SM7O5vk5GTs7e2LXIaGhsYnBTaCIAiCIHx7vrsApXLlymhoaJCSkiK9Hf9Q8+bN0dHRYfHixezbt48jR45IaU5OTty/fx81NbVCx0tUrFiRihUrMmTIEDp37kxoaGi+AYqtrS2xsbH4+v7fgmyxsbFFvi51dXWFwd6g/Krhjo6OODo6MmbMGFxcXFi7di116tQp9DpMTU25f/8+7969k7r5vB8QmZmZUapUKW7cuIGPj0+B59bX16djx4507NiRH3/8kaZNm/L48WOpS1B+4uLiyM7OJiQkBBWVnEa+33//XalrLcyVK1d49OgR06dPx9LSEkCaFCDX69evad26NZUqVWL27NkKaXZ2dmRmZnLy5Empi9ejR49ITEykcuXKf7t+uYoXL86WLVto0KAB3t7e/P7770UaG/S+SpUqkZmZSVxcnNTFKzExsdDpgJ2cnNiwYQMlSpRQepV2dXV1gDzf0bdv39K1a1c6duyIra0tvXr14sKFC5QoUUI67sNjBEEQBEH4b/vuunjp6ekxfPhwhgwZQnh4OElJSZw5c4YFCxZIg7dVVVXx8/NjzJgxVKhQQRqrAtC4cWNcXFxo06YNBw4cIDk5mePHjzN27FhOnz7Nq1evGDBgAHK5nFu3bhETE0NsbGyBffp//vlnVq5cSXh4ONeuXWPy5MmcP3++0Jm48mNlZcWRI0e4e/cuf/31l1LH3Lx5kzFjxnDixAlu3brFgQMHuHbtGnZ2dh+9jgYNGvDw4UNmzpxJUlISv/76K3v37lUof+LEiUybNo358+dz9epVLly4QGhoqPRgP3v2bNatW8eVK1e4evUqGzdupGTJkh9dyNLGxoaMjAwWLFjAjRs3WLNmDUuWLCnS/cpPmTJlUFdXl8rdsWMHQUFBCnn69u3L7du3mT9/Pg8fPuT+/fvcv3+ft2/fUqFCBVq3bk3v3r05duwY8fHxdO3aFQsLC1q3bv236/e+EiVKcPjwYa5cuULnzp3JzMz8pHJsbW1p2rQpffv25eTJk8TFxdGrV69Cp8L28fGhePHitG7dmqNHj3Lz5k3kcjkDBw7kzp07QM4YmdyxSwBly5ZFJpOxa9cuHj58KLWwjR07lrS0NObPn8+oUaOoWLGiwjggKysrbt68yblz5/jrr7948+bNJ12nIAiCIAjfj+8uQAEICgpi/PjxTJs2DTs7O5o2bcru3bspV66clCe3u1Du4PVcMpmMPXv2UL9+fXr06EHFihXp1KkTt27dwszMDFVVVR49eoSvry8VK1bE29ubZs2aFTiA18fHhzFjxjB8+HCpy5Ofnx+amppFuqZJkyaRnJxM+fLlle5mo62tzZUrV2jfvj0VK1akT58+9O/fn759+370Ouzs7Fi0aBG//vor1apV49SpU3lmourVqxcrVqwgNDQUe3t73N3dCQsLk+6znp4eM2fOxNnZmZo1a5KcnMyePXukVpGCVKtWjdmzZzNjxgyqVq1KRESE0tMTF8bU1JSwsDA2btxI5cqVmT59ep4pp6Ojo0lNTaVy5cqYm5tL2/Hjx4GcLnM1atSgZcuWuLi48O7dO/bs2fPJLRyFKVmyJIcPH+bChQv4+Ph8cktDaGgopUqVwt3dnXbt2tGnTx+pBSM/2traHDlyhDJlytCuXTvs7Ozw9/fn9evXUotKWloaiYmJ0jEWFhZMnDiR0aNHY2ZmJgW/c+fOZc2aNejr66OiosKaNWs4evSoNJNd+/btadq0KR4eHpiamrJu3bpPukZBEARBEL4fsndF6Rz/HTl69CiNGjXi9u3bmJmZ/avnbtKkyf9r787jasr/B46/rrRqI20oiUqaym5oUGSyjJEx1gbZzQzDV5Y8bGWZaaixb2OGYmwz9mGsTRlCEsIg6Sv5zmQYa8ne/f3Ro/NztShbi/fz8TgP3XM+53M+59N1O+/72bCysmLVqlVv9bpClBV3797FxMQE9+FL0NItvoVRX1X8rD4vTiSEEEKUETl/v+/cuVNgN/IyNwblRR4+fMj169cJCgqia9eubzw4yczMZMmSJfj4+KClpcXatWvZt28fe/fufaPXFeJd8Mf0noUeJyOEEEKI0qFMdvEqyNq1a6levTq3b99m5syZb/x6z3YZa9CgAb/++isbN27E29v7jV+7pFq9erXG1MTPbi4uLsVdvDcqv/s2NDTkwIEDxV08IYQQQohi98528RLFJz09nX/++SfPY9ra2kVa0LG0uXjxYr7HqlatWuDgdfH/CttELIQQQoiSQ7p4iRLLyMgIIyOj4i5GsSjs1NCicFpMXFuqxqDImBMhhBDixd65Ll7i1UVHR6NSqQpcS6MksrOzY86cOcVdDCGEEEIIUQAJUESRNWvWjLS0NExMTIq7KEUSFxfH4MGDX5ju5s2bDB8+HCcnJ/T19bG1teWrr77izp07GulUKlWubd26dcrxnEDu+e3q1asALFmyBCMjI401TjIyMtDW1sbT01PjWjl5JScnv0INvDmenp6MHDmyyOepVCq2bNny2ssjhBBCiNJLungV4PHjx29kfYuSQK1W8/TpU8qXL/pbQEdHBysrqzdQqjersOvH/P333/z999+EhoZSp04dLl++zNChQ/n777/ZsGGDRtoVK1bQtm1b5XVei1AmJiZq9LPMWYPEy8uLjIwMjh07xvvvvw9kT39tZWVFbGwsDx48UNbLiYqKwtbWlpo1axbpnoUQQgghSpsy2YKyYcMGXF1d0dfXx8zMDG9vb+7duwfA8uXLcXFxQVdXF2tra4YNG6acp1KpWLx4MR9//DEVKlRgxowZAGzdupX69eujp6eHvb09wcHBGt963759m4EDB2Jubo6xsTGtWrUiISFBOR4UFETdunVZtWoVdnZ2mJiY0KNHD9LT0wt1P+np6fj5+VGhQgWsra2ZPXt2rm+sV61aRcOGDTEyMsLKyopevXpx7do15XjON/A7d+6kQYMG6OrqcvDgQTw9PRk+fDgjR46kYsWKWFpasmzZMu7du0e/fv0wMjKiVq1aGqvIP9/FKzw8HFNTU3bv3o2zszOGhoa0bduWtLS0Qt2fv78/vr6+hIaGYm1tjZmZGV9++SWPHz/W+N08/027qakp4eHhQHarzrhx4zSOX79+HW1tbf744w+g8F283nvvPTZu3EjHjh2pWbMmrVq1YsaMGfz666+5VnQ3NTXFyspK2fJagNPCwkIjTc5ClU5OTlhbWxMdHa2kjY6OplOnTtSoUYMjR45o7Pfy8nph2QHOnz/PBx98gJ6eHnXq1GHfvn0a9ZeSkqK09jRr1gw9PT3ee+899u/fr+Rx69Yt/Pz8MDc3R19fHwcHB1asWJHn9fz9/dm/fz9z585VWolSUlKYOnUqVapU4caNG0raDh064OXlRVZWFnZ2dgB07twZlUqlvBZCCCHEu63MBShpaWn07NmT/v37c+7cOaKjo/nkk09Qq9UsXryYL7/8ksGDB3P69Gm2bduWa9ByUFAQnTt35vTp0/Tv358DBw7Qp08fRowYwdmzZ1m6dCnh4eFK8ALQtWtXrl27xs6dO4mPj6d+/fq0bt2amzdvKmmSk5PZsmUL27dvZ/v27ezfv5+QkJBC3dOoUaOIiYlh27Zt7N27lwMHDnD8+HGNNI8fP2batGkkJCSwZcsWUlJS8Pf3z5VXYGAgISEhnDt3Djc3NwAiIiKoXLkyR48eZfjw4Xz++ed07dqVZs2acfz4cT788EN69+5NZmZmvmXMzMwkNDSUVatW8ccff5Camppr5fmCREVFkZycTFRUFBEREYSHhyvBR2H4+fmxbt06np2Ubv369VSpUoXmzZsXOp/85Mw28XyL05dffknlypVp3Lgxy5cvJ69J8erWrYu1tTVt2rQhJiZG45iXlxdRUVHK66ioKDw9PWnZsqWy//79+8TGxhYqQHn69Cm+vr4YGBgQGxvL999/z4QJE/JMO2bMGAICAjhx4gRNmzalY8eOSjAxadIkzp49y86dOzl37hyLFy+mcuXKeeYzd+5cmjZtyqBBg0hLSyMtLQ0bGxsmTJiAnZ0dAwcOBGDhwoUcOnSIiIgIypUrR1xcHJDdCpWWlqa8zsvDhw+5e/euxiaEEEKIsqnMdfFKS0vjyZMnfPLJJ8p0ta6urgBMnz6dgIAARowYoaRv1KiRxvm9evWiX79+yuv+/fsTGBhI3759AbC3t2fatGmMHTuWKVOmcPDgQY4ePcq1a9fQ1dUFIDQ0lC1btrBhwwZlzENWVhbh4eHK7FW9e/cmMjJSI9DJS3p6OhEREaxZs4bWrVsD2Q90VapU0UjXv39/5Wd7e3vmzZtHo0aNyMjIwNDQUDk2depU2rRpo3Guu7s7EydOBGD8+PGEhIRQuXJlBg0aBMDkyZNZvHgxp06dUroiPe/x48csWbJE6YI0bNgwpk6dWuC9PatixYosWLAALS0tateuTYcOHYiMjFTK8CLdunVj5MiRHDx4UAlI1qxZQ8+ePVGpVIUuR17+/fdfpk2blmv8ytSpU2nVqhUGBgbs2bOHL774goyMDL766isArK2tWbJkCQ0bNuThw4f88MMPeHp6EhsbS/369YHsAGXkyJE8efKE+/fvc+LECVq2bKnUJ8Dhw4d5+PBhoQKUvXv3kpycTHR0tNINb8aMGbl+55D9O+rSpQsAixcvZteuXfz444+MHTuW1NRU6tWrR8OGDQEKbN0wMTFBR0cHAwODXF3/fvrpJ+rWrUtgYCDz5s3jhx9+wNbWFvj/Lnc5rVAF+eabbwgODn7h/QshhBCi9CtzAYq7uzutW7fG1dUVHx8fPvzwQz799FMeP37M33//rTzk5yfngSxHQkICMTExGoHE06dPefDgAZmZmSQkJJCRkYGZmZnGeffv39cY0GxnZ6cxta61tbVGF6z8/Pe//+Xx48c0btxY2WdiYoKTk5NGuvj4eIKCgkhISODWrVtkZWUBkJqaSp06dfK9P0BpSQHQ0tLCzMxMCeoALC0tAQosr4GBgcb4iMLeXw4XFxe0tLQ0zj99+nShzzc3N+fDDz9k9erVNG/enEuXLnH48GGWLl1a6DzycvfuXTp06ECdOnUICgrSODZp0iTl53r16nHv3j1mzZqlBChOTk4av6dmzZqRnJzM7NmzWbVqFZA9uPzevXvExcVx69YtHB0dMTc3p2XLlvTr148HDx4QHR2Nvb298mBfkMTERGxsbDQe+J997zyradOmys/ly5enYcOGnDt3DoDPP/+cLl26KC1ovr6+NGvW7IXXf569vT2hoaEMGTKE7t2706tXryLnAdmB86hRo5TXd+/excbG5qXyEkIIIUTJVua6eGlpabF371527txJnTp1mD9/Pk5OTvkuDPi8ChUqaLzOyMggODiYkydPKtvp06dJSkpCT0+PjIwMrK2tNY6fPHmSxMRExowZo+Tz/GB7lUqlBBGv6t69e/j4+GBsbMzq1auJi4tj8+bNADx69KjA+8uvbM/uy2mBKKi8eeVRlDVAX1Q/eeX37BgVyO7mtWHDBh4/fsyaNWtwdXXVCLSKKj09nbZt22JkZMTmzZtfOGFCkyZN+N///sfDhw/zTdO4cWONxRpr1apFtWrViIqKIioqipYtWwJQpUoVbGxsOHToEFFRUbRq1eql7+NltGvXjsuXL/Of//xHCeyL0mXvWX/88QdaWlqkpKTkGsNTWLq6uhgbG2tsQgghhCibylyAAtkPsx4eHgQHB3PixAl0dHTYu3cvdnZ2REZGFimv+vXrk5iYSK1atXJt5cqVo379+ly9epXy5cvnOp5fn/2isLe3R1tbW6N//p07d7hw4YLy+vz589y4cYOQkBCaN29O7dq1i9R6URqYm5trDLpPSkrKNSamU6dOPHjwgF27drFmzRr8/Pxe+np3797lww8/REdHh23btuU5+P15J0+epGLFikpXv/zSWFtba+zz8vIiOjqa6OhojemFW7Rowc6dOzl69GihB8g7OTlx5coVjYA8v7Edzw7Cf/LkCfHx8Tg7Oyv7zM3N6du3Lz/99BNz5szh+++/z/e6Ojo6PH36NNf+9evXs2nTJqKjo0lNTWXatGkax7W1tfM8TwghhBDvrjLXxSs2NpbIyEg+/PBDLCwsiI2N5fr16zg7OxMUFMTQoUOxsLCgXbt2pKenExMTw/Dhw/PNb/LkyXz00UfY2try6aefUq5cORISEjhz5gzTp0/H29ubpk2b4uvry8yZM3F0dOTvv/9mx44ddO7cOc8uVUVhZGRE3759GTNmDJUqVcLCwoIpU6ZQrlw5pWXD1tYWHR0d5s+fz9ChQzlz5kyuB8HSrlWrVixYsICmTZvy9OlTxo0bl6tFo0KFCvj6+jJp0iTOnTtHz549X+paOcFJZmYmP/30k8agbHNzc7S0tPj111/5559/eP/999HT02Pv3r18/fXXGq0Mc+bMoUaNGri4uPDgwQN++OEHfv/9d/bs2aNxPS8vL2XWspwWFICWLVsybNgwHj16VOgApU2bNtSsWZO+ffsyc+ZM0tPTlfFFz4/FWbhwIQ4ODjg7OzN79mxu3bqljGWaPHkyDRo0wMXFhYcPH7J9+3aN4KV169Z07txZmQXPzs6O2NhYUlJSMDQ0pFKlSvz99998/vnnfPvtt3zwwQesWLGCjz76iHbt2iljmXK+NPDw8EBXV5eKFSsW6j6FEEIIUXaVuRYUY2Nj/vjjD9q3b4+joyMTJ04kLCyMdu3a0bdvX+bMmcOiRYtwcXHho48+IikpqcD8fHx82L59O3v27KFRo0a8//77zJ49WxmAr1Kp+O2332jRogX9+vXD0dGRHj16cPnyZWXsxqv67rvvaNq0KR999BHe3t54eHjg7OysfKtvbm5OeHg4v/zyC3Xq1CEkJITQ0NDXcu2SIiwsDBsbG5o3b06vXr0YPXo0BgYGudL5+fmRkJBA8+bNCzVmIy/Hjx8nNjaW06dPU6tWLaytrZXtypUrQPY3/wsXLqRp06bUrVuXpUuX8t133zFlyhQln0ePHhEQEICrqystW7YkISGBffv25RoH5eXlxf3796lVq5bGe6Zly5akp6cr0xEXhpaWFlu2bCEjI4NGjRoxcOBAZRav51uBQkJCCAkJwd3dnYMHD7Jt2zal1U9HR4fx48fj5uZGixYt0NLS0liEMjk5mX///Vd5PXr0aLS0tKhTpw7m5uZcvnwZf39/GjdurAQxPj4+fP7553z22WdkZGQA2b/XvXv3YmNjQ7169Qp1j0IIIYQo21TqogwUECXCvXv3qFq1KmFhYQwYMKC4iyNKuJiYGD744AMuXrxIzZo1SUlJoUaNGpw4cYK6desWd/Feyt27dzExMcF9+BK0dPWLuziFFj+rT3EXQQghhCg2OX+/c5ZvyE+Z6+JVFp04cYLz58/TuHFj7ty5o0zf26lTp2IumSiJNm/ejKGhIQ4ODly8eJERI0bg4eFRJleh/2N6TxkwL4QQQpQxZa6LV2mTmpqKoaFhvltqaiqQvbaKu7s73t7e3Lt3jwMHDryWQfhvQ0H3d+DAgbdentWrV+dbHhcXl7denqIoTNnT09P58ssvqV27Nv7+/jRq1IitW7cWc8mFEEIIIQpHungVsydPnpCSkpLvcTs7u1yrl5c2z06r+7yqVauir/92u+ikp6fnO+20tra2Mr6oJCrNZX+dCttELIQQQoiSo7B/vyVAEUKUOqVxDIqMPxFCCPGuK2yAIl28xFvh7++Pr69vodJ6enoycuTIN1oegKCgoFI7SPxNio6ORqVScfv27eIuihBCCCHeQRKgiBJn06ZNZW4dl7fl6tWr9O7dGysrKypUqED9+vXZuHHjW7m2SqViy5YtRTpHgiEhhBBCPK90D24QZVKlSpWKuwilVp8+fbh9+7aypsmaNWvo1q0bx44dk3VGhBBCCFEqSAtKGbRhwwZcXV3R19fHzMxMmfkrKyuLqVOnUq1aNXR1dalbty67du1Szsvr2+yTJ0+iUqmUgfzh4eGYmpqye/dunJ2dMTQ0pG3btqSlpSnnPH36lFGjRmFqaoqZmRljx46lKEOdnu/iZWdnx7Rp0+jZsycVKlSgatWqLFy4UOOc1NRUOnXqhKGhIcbGxnTr1i3XYPKQkBAsLS0xMjJiwIABPHjwoNBlyumiFhoairW1NWZmZsrq7zlWrVpFw4YNMTIywsrKil69enHt2jXleE79RkZG0rBhQwwMDGjWrBmJiYka11q8eDE1a9ZER0cHJycnVq1aVehyHjp0iOHDh9O4cWPs7e2ZOHEipqamxMfHa6SpW7cuenp6NGzYkC1btqBSqTh58qRGXjExMbi5uaGnp8f777/PmTNn8r2unZ0dAJ07d0alUmFnZ4darcbb2xsfHx/l93/z5k2qVavG5MmTSUlJwcvLC4CKFSuiUqnw9/cv9L0KIYQQomySAKWMSUtLo2fPnvTv359z584RHR3NJ598glqtZu7cuYSFhREaGsqpU6fw8fHh448/JikpqUjXyMzMJDQ0lFWrVvHHH3+QmprK6NGjleNhYWGEh4ezfPlyDh48yM2bN9m8efMr3desWbNwd3fnxIkTBAYGMmLECPbu3QtAVlYWnTp14ubNm+zfv5+9e/fy3//+l+7duyvn//zzzwQFBfH1119z7NgxrK2tWbRoUZHKEBUVRXJyMlFRUURERBAeHk54eLhy/PHjx0ybNo2EhAS2bNlCSkpKng/cEyZMICwsjGPHjlG+fHn69++vHNu8eTMjRowgICCAM2fOMGTIEPr160dUVFShytisWTPWr1/PzZs3ycrKYt26dTx48ABPT08ge3Bax44dcXV15fjx40ybNo1x48blmdeYMWMICwsjLi4Oc3NzOnbsqBGQPSsuLg6AFStWkJaWRlxcHCqVioiICOLi4pg3bx4AQ4cOpWrVqkyePBkbGxul+1liYiJpaWnMnTs3z/wfPnzI3bt3NTYhhBBClE3SxauMSUtL48mTJ3zyySfKlLOurq5A9loq48aNo0ePHgB8++23REVFMWfOnFwtEgV5/PgxS5YsURb+GzZsmLJ4JMCcOXMYP348n3zyCQBLlixh9+7dr3RfHh4eBAYGAuDo6EhMTAyzZ8+mTZs2REZGcvr0aS5duoSNjQ0AK1euxMXFhbi4OBo1asScOXMYMGAAAwYMAGD69Ons27evSK0oFStWZMGCBWhpaVG7dm06dOhAZGQkgwYNAtAINOzt7Zk3bx6NGjUiIyMDQ0ND5diMGTNo2bIlAIGBgXTo0IEHDx6gp6dHaGgo/v7+fPHFFwCMGjWKI0eOEBoaqrQ2FOTnn3+me/fumJmZUb58eQwMDNi8eTO1atUCYM2aNahUKpYtW4aenh516tThr7/+Uu7hWVOmTKFNmzYAREREUK1aNTZv3ky3bt1ypTU3NwfA1NQUKysrZX/VqlVZunQpffr04erVq/z222+cOHFCmTo7pzufhYUFpqam+d7XN998Q3Bw8AvvXwghhBCln7SglDHu7u60bt0aV1dXunbtyrJly7h16xZ3797l77//xsPDQyO9h4cH586dK9I1DAwMNFYlt7a2Vroy3blzh7S0NJo0aaIcL1++PA0bNnyFu4KmTZvmep1T7nPnzmFjY6MEJwB16tTB1NRUI82zZcorzxdxcXFBS0tLef3sfQPEx8fTsWNHbG1tMTIyUoKQnMU2c7i5uWnkASj5nDt37pV+R5MmTeL27dvs27ePY8eOMWrUKLp168bp06eB7JaKnG5bORo3bpxnXs/WT6VKlXByciryewWga9eudO7cmZCQEEJDQ3FwcChyHuPHj+fOnTvKduXKlSLnIYQQQojSQQKUMkZLS4u9e/eyc+dO6tSpw/z583FycuLSpUsvPLdcuey3w7PjRfLq0qOtra3xWqVSFWmMSWmV131nZWUBcO/ePXx8fDA2Nmb16tXExcUp3doePXqUbz4qlQpAyedVJCcns2DBApYvX07r1q1xd3dnypQpNGzYsEgtZK9bZmYm8fHxaGlpFbk7YQ5dXV2MjY01NiGEEEKUTRKglEEqlQoPDw+Cg4M5ceIEOjo6REZGUqVKFWJiYjTSxsTEUKdOHeD/u+k8O+D9+YHTL2JiYoK1tTWxsbHKvidPnmgM0n4ZR44cyfXa2dkZAGdnZ65cuaLxrfrZs2e5ffu2cm/Ozs4aZcorz1dx/vx5bty4QUhICM2bN6d27doarSuF5ezsXODvqCCZmZnA/weaObS0tJQAyMnJidOnT/Pw4UPleM74kec9Wz+3bt3iwoULSp3nRVtbm6dPn+baHxAQQLly5di5cyfz5s3j999/V47p6OgA5HmeEEIIId5NEqCUMbGxscpA8NTUVDZt2sT169dxdnZmzJgxfPvtt6xfv57ExEQCAwM5efIkI0aMAKBWrVrY2NgQFBREUlISO3bsICwsrMhlGDFiBCEhIWzZsoXz58/zxRdfvPI6FzExMcycOZMLFy6wcOFCfvnlF6Xc3t7euLq64ufnx/Hjxzl69Ch9+vShZcuWSteyESNGsHz5clasWMGFCxeYMmUKf/755yuV6Vm2trbo6Ogwf/58/vvf/7Jt27aXWstlzJgxhIeHs3jxYpKSkvjuu+/YtGmTxiQE+alduza1atViyJAhHD16lOTkZMLCwti7d6+ySGavXr3Iyspi8ODBnDt3jt27dxMaGgr8f2tOjqlTpxIZGcmZM2fw9/encuXKSj5//fUXtWvX5ujRo0p6Ozs7IiMjuXr1Krdu3QJgx44dLF++nNWrV9OmTRvGjBlD3759lePVq1dHpVKxfft2rl+/TkZGRpHrTAghhBBliwQoZYyxsTF//PEH7du3x9HRkYkTJxIWFka7du346quvGDVqFAEBAbi6urJr1y62bdumjAnQ1tZm7dq1nD9/Hjc3N7799lumT59e5DIEBATQu3dv+vbtS9OmTTEyMqJz586vdF8BAQHKWh7Tp0/nu+++w8fHB8h+sN66dSsVK1akRYsWeHt7Y29vz/r165Xzu3fvzqRJkxg7diwNGjTg8uXLfP75569UpmeZm5sTHh7OL7/8Qp06dZTxFkXl6+vL3LlzCQ0NxcXFhaVLl7JixQplFq6CaGtr89tvvykzbrm5ubFy5UoiIiJo3749kP3++PXXXzl58iR169ZlwoQJTJ48GUBjXApkT8s8YsQIGjRowNWrV/n111+VFo/Hjx+TmJiotNoASjBkY2NDvXr1uH79OgMGDCAoKIj69esDEBwcjKWlJUOHDgWyB9EHBwcTGBiIpaUlw4YNK3KdCSGEEKJsUanfhcEDolSzs7Nj5MiRGmujiNdn9erV9OvXjzt37qCvr1/cxSmUu3fvYmJigvvwJWjplo4yx8/qU9xFEEIIIYpVzt/vO3fuFDieVKYZFuIds3LlSuzt7alatSoJCQmMGzeObt26lZrg5Fl/TO8pA+aFEEKIMka6eIm3KjU1FUNDw3y356fkfVsKKtOBAweKpUzPW716db5ldHFxKXQ+V69e5bPPPsPZ2Zn//Oc/dO3ale+///4NllwIIYQQovCki5d4q548eUJKSkq+x+3s7JRF/N6mixcv5nusatWqJaJ1IT09nX/++SfPY9ra2srCnO+CwjYRCyGEEKLkKOzfbwlQhBClTmkbgyLjT4QQQojCByjSxes18PT0LJMDuFNSUlCpVMpaKNHR0ahUKo0pg7ds2UKtWrXQ0tJ6LXVgZ2fHnDlzXjmfF/H391emzBX/Lzw8HFNT0+IuhhBCCCHeYRKglAB5PfhDyQt8mjVrRlpaGiYmJsq+IUOG8Omnn3LlypWXWvfjeXFxcQwePPiV83kXXbhwgU6dOlG5cmWMjY354IMPiIqKeuPXfT6QLSwJhoQQQgiRFwlQ3gGPHj16Lfno6OhgZWWlLOiXkZHBtWvX8PHxoUqVKhgZGb3yNczNzTEwMHjlfN5FH330EU+ePOH3338nPj4ed3d3PvroI65evVrcRRNCCCGEKDQJUF6TJ0+eMGzYMExMTKhcuTKTJk0iZ3jPqlWraNiwIUZGRlhZWdGrVy+uXbsGZH/77OXlBUDFihVRqVT4+/vj7+/P/v37mTt3LiqVCpVKpQwuP3PmDO3atcPQ0BBLS0t69+7Nv//+q5TF09OTYcOGMXLkSCpXroyPjw/9+/fno48+0ijz48ePsbCw4McffyzUPT7b0hMdHa0EJK1atUKlUhEdHQ3AwYMHad68Ofr6+tjY2PDVV19x7969Ql3j+S5eKpWKxYsX065dO/T19bG3t2fDhg0a55w+fZpWrVqhr6+PmZkZgwcP1liR/OnTp4waNQpTU1PMzMwYO3YsRRl65enpyVdffcXYsWOpVKkSVlZWBAUFaaT57rvvcHV1pUKFCtjY2PDFF19olCGntWD37t04OztjaGhI27ZtSUtLU9JkZWUxdepUqlWrhq6uLnXr1mXXrl2FKuO///5LUlISgYGBuLm54eDgQEhICJmZmZw5c0ZJl7Mwp56eHl5eXkREROTZerdlyxYlnY+PD1euXMn32jVq1ACgXr16qFQqPD09efDgAS4uLhqtYcnJyRgZGbF8+XKio6OVtVdy3t/P16kQQggh3k0SoLwmERERlC9fnqNHjzJ37ly+++47fvjhByA7EJg2bRoJCQls2bKFlJQU/P39AbCxsWHjxo0AJCYmkpaWxty5c5k7dy5NmzZl0KBBpKWlkZaWho2NDbdv36ZVq1bUq1ePY8eOsWvXLv755x+6deuWqzw6OjrExMSwZMkSBg4cyK5duzQeiLdv305mZibdu3cv8v02a9aMxMREADZu3EhaWhrNmjUjOTmZtm3b0qVLF06dOsX69es5ePDgK60QPmnSJLp06UJCQgJ+fn706NGDc+fOAXDv3j18fHyoWLEicXFx/PLLL+zbt0/jemFhYYSHh7N8+XIOHjzIzZs32bx5c5HKEBERQYUKFYiNjWXmzJlMnTqVvXv3KsfLlSvHvHnz+PPPP4mIiOD3339n7NixGnlkZmYSGhrKqlWr+OOPP0hNTWX06NHK8blz5xIWFkZoaCinTp3Cx8eHjz/+mKSkpBeWz8zMDCcnJ1auXMm9e/d48uQJS5cuxcLCggYNGgBw6dIlPv30U3x9fUlISGDIkCFMmDAhV16ZmZnMmDGDlStXEhMTw+3bt+nRo0e+1z569CgA+/btIy0tjU2bNqGnp8fq1auJiIhg69atPH36lM8++4w2bdrQv39/mjVrxpw5czA2Nlbe38/WxfMePnzI3bt3NTYhhBBClE2yUONrYmNjw+zZs1GpVDg5OXH69Glmz57NoEGD6N+/v5LO3t6eefPm0ahRIzIyMjA0NKRSpUoAWFhYaPTJ19HRwcDAACsrK2XfggULqFevHl9//bWyb/ny5djY2HDhwgUcHR0BcHBwYObMmRpldHJyYtWqVcqD84oVK+jatSuGhoZFvl8dHR0sLCwAlFYFgG+++QY/Pz9l7IyDgwPz5s2jZcuWLF68GD09vSJfq2vXrgwcOBCAadOmsXfvXubPn8+iRYtYs2YNDx48YOXKlVSoUAHIrqOOHTvy7bffYmlpyZw5cxg/fjyffPIJAEuWLGH37t1FKoObmxtTpkxR7mnBggVERkbSpk0bAI2xQnZ2dkyfPp2hQ4eyaNEiZf/jx49ZsmQJNWvWBGDYsGFMnTpVOR4aGsq4ceOUYODbb78lKiqKOXPmsHDhwgLLp1Kp2LdvH76+vhgZGVGuXDksLCzYtWsXFStWBGDp0qU4OTkxa9YsIPv9cObMGWbMmKGR1+PHj1mwYAFNmjQBsoMzZ2dnjh49SuPGjXNd29zcHMgOkp59r9atW5fp06czcOBAevToweXLl9m+fTuQ/f4xMTFBpVJpnJOfb775huDg4BemE0IIIUTpJy0or8n777+vjM0AaNq0KUlJSTx9+pT4+Hg6duyIra0tRkZGtGzZEuClFiVMSEggKipKY5G+2rVrA9ldaHLkfGv+rIEDB7JixQoA/vnnH3bu3KkET0OHDtXI82UlJCQQHh6ukZePjw9ZWVlcunTppfJs2rRprtc5LSjnzp3D3d1dCU4APDw8yMrKIjExkTt37pCWlqY8bAOUL1+ehg0bFqkMbm5uGq+tra2VbnqQ3XrQunVrqlatipGREb179+bGjRtkZmYqaQwMDJTg5Pk87t69y99//42Hh4fGdTw8PJR7LYharebLL7/EwsKCAwcOcPToUXx9fenYsaPSapaYmEijRo00zssr4ChfvrxGutq1a2NqalqocjwvICAAR0dHFixYwPLlyzEzMytyHgDjx4/nzp07ylZQlzMhhBBClG7SgvKGPXjwAB8fH3x8fFi9ejXm5uakpqbi4+PzUoPXMzIylNaB51lbWys/P/vAnqNPnz4EBgZy+PBhDh06RI0aNWjevDkAU6dOLbCLTVHKN2TIEL766qtcx2xtbV85/+Kira2t8VqlUpGVlQVkjyP66KOP+Pzzz5kxYwaVKlXi4MGDDBgwgEePHimD/vPK43UtQ/T777+zfft2bt26pcwrvmjRIvbu3UtERASBgYGv5TpFde3aNS5cuICWlhZJSUm0bdv2pfLR1dVFV1f3NZdOCCGEECWRtKC8JrGxsRqvjxw5goODA+fPn+fGjRuEhITQvHlzateurfHNO2R3d4HswdzP739+X/369fnzzz+xs7OjVq1aGlteQcmzzMzM8PX1ZcWKFYSHh9OvXz/lmIWFhUZeL6t+/fqcPXs2V9lq1aql3GdRHTlyJNdrZ2dnAJydnUlISNAYhB8TE0O5cuVwcnLCxMQEa2trjd/PkydPiI+Pf6my5CU+Pp6srCzCwsJ4//33cXR05O+//y5SHsbGxlSpUoWYmBiN/TExMdSpU+eF5+e01JQrp/lfuly5ckog5eTkxLFjxzSOx8XF5crryZMnGukSExO5ffu2UufPy+/9C9C/f39cXV2JiIhg3LhxGq0web2/hRBCCCEkQHlNUlNTGTVqFImJiaxdu5b58+czYsQIbG1t0dHRYf78+fz3v/9l27ZtudYLqV69OiqViu3bt3P9+nVl9ic7OztiY2NJSUnh33//JSsriy+//JKbN2/Ss2dP4uLiSE5OZvfu3fTr169QD3sDBw4kIiKCc+fO0bdv39deD+PGjePQoUMMGzaMkydPkpSUxNatW19pkPwvv/zC8uXLuXDhAlOmTOHo0aNKfn5+fujp6dG3b1/OnDlDVFQUw4cPp3fv3lhaWgIwYsQIQkJC2LJlC+fPn+eLL77INWvVq6hVqxaPHz9WfserVq1iyZIlRc5nzJgxfPvtt6xfv57ExEQCAwM5efIkI0aMeOG5TZs2pWLFivTt25eEhAQuXLjAmDFjuHTpEh06dACy16w5f/4848aN48KFC/z888+Eh4cDaHRP1NbWZvjw4cTGxhIfH4+/vz/vv/++0h3s6NGj1K5dm7/++gvIDm719fWVCRvu3LkDwMKFCzl8+DARERH4+fnh6+uLn5+f0nJoZ2dHRkYGkZGR/Pvvvxrd4YQQQgjx7pIA5TXp06cP9+/fp3Hjxnz55ZeMGDGCwYMHY25uTnh4OL/88gt16tQhJCSE0NBQjXOrVq1KcHAwgYGBWFpaKg/fo0ePRktLizp16ihdw3K+ZX/69Ckffvghrq6ujBw5ElNT01zfnufF29sba2trZe2S183NzY39+/dz4cIFmjdvTr169Zg8efIrXSs4OJh169bh5ubGypUrWbt2rdKqYGBgwO7du7l58yaNGjXi008/pXXr1ixYsEA5PyAggN69e9O3b1+aNm2KkZERnTt3fuV7zeHu7s53333Ht99+y3vvvcfq1av55ptvipzPV199xahRowgICMDV1ZVdu3Yp0wK/SOXKldm1axcZGRm0atWKhg0bcvDgQbZu3Yq7uzuQPR3whg0b2LRpE25ubixevFiZxevZ7lMGBgaMGzeOXr164eHhgaGhIevXr1eOZ2ZmkpiYyOPHj4HsMSvz5s1j6dKlVKlShU6dOnH+/HnGjBnDokWLsLGxAbK7nP37779MmjQJyJ4JbujQoXTv3h1zc/NckzoIIYQQ4t2kUr+uTvCiVMjIyKBq1aqsWLFCmdWqJFOpVGzevBlfX9/iLkqZNGPGDJYsWVLqBp3fvXsXExMT3IcvQUtXv7iL80Lxs/oUdxGEEEKIYpfz9/vOnTvKmNm8yCD5d0RWVhb//vsvYWFhmJqa8vHHHxd3kUQxWLRoEY0aNcLMzIyYmBhmzZr1St3vitsf03sW+AEnhBBCiNJHApR3RGpqKjVq1KBatWqEh4dTvvzb/9UfOHCAdu3a5Xv82ZXX35bU1NQCB6GfPXu2RMw+9vXXX2usffOs5s2bs3PnzkLlk5SUxPTp07l58ya2trYEBAQwfvz411lUIYQQQohXIl28xFtz//59ZWB1Xl5l9rCX9eTJE1JSUvI9bmdnVyzB3PNu3rzJzZs38zymr69P1apV33KJildhm4iFEEIIUXIU9u+3BChCiFKnNIxBkXEnQgghhKbCBihlehYvT09PRo4cCWR/Ez5nzpzXlrdKpWLLli2vLb/S5tm6LS3Cw8MxNTUt7mIIIYQQQogClOkA5VlxcXEMHjy4uItRZmzatCnXei4lXffu3blw4UKh0m7atIk2bdpgbm6OsbExTZs2Zffu3RppgoKCUKlUGlvt2rU10nh6euZKM3ToUOW4tbU1ISEhGucEBgaiUqmIjo7OlVfv3r2LcMdvT3R0NCqVqsjrywQFBVG3bt03UiYhhBBClE7vTIBibm6OgYFBcRejRMlZMO9lVKpUCSMjo9dYmjdPX18fCwuLQqX9448/aNOmDb/99hvx8fF4eXnRsWNHTpw4oZHOxcWFtLQ0ZTt48GCuvAYNGqSR5tn1Pjw9PXMFIlFRUdjY2Gjsf/DgAUeOHKFVq1aFv2EhhBBCiFKozAQo9+7do0+fPhgaGmJtbU1YWJjG8We7eKnVaoKCgrC1tUVXV5cqVarw1VdfaaSdNm0aPXv2pEKFClStWpWFCxcWeP1x48bh6OiIgYEB9vb2TJo0SVnILiUlhXLlynHs2DGNc+bMmUP16tXJysp64f3lLNinp6eHl5cXERERGt9Y37hxg549e1K1alUMDAxwdXVl7dq1Gnl4enoybNgwRo4cSeXKlfHx8VG++d69ezf16tVDX1+fVq1ace3aNXbu3ImzszPGxsb06tVLY6Xv57t42dnZ8fXXX9O/f3+MjIywtbXl+++/f+F95dSPSqVi06ZNeHl5YWBggLu7O4cPH1bS5PVN+5w5c7CzswNgz5496Onp5foGf8SIEcpDfVG6eM2ZM4exY8fSqFEjHBwc+Prrr3FwcODXX3/VSFe+fHmsrKyUrXLlyrnyMjAw0EjzbJ9LLy8vYmJiePLkCQDp6emcOHGCcePGaQQohw8f5uHDh3h5eRWq/NOnT8fCwgIjIyMGDhxIYGCgRv35+/vj6+tLcHCw0ko0dOhQjaB1w4YNuLq6oq+vj5mZGd7e3ty7dy/XtVJSUpRyVaxYEZVKhb+/P9evX8fKykpj9rFDhw6ho6NDZGQk4eHhBAcHk5CQoLQu5axsL4QQQoh3V5kJUMaMGcP+/fvZunUre/bsITo6muPHj+eZduPGjcyePZulS5eSlJTEli1bcHV11Ugza9Ys3N3dOXHiBIGBgYwYMYK9e/fme30jIyPCw8M5e/Ysc+fOZdmyZcyePRvIfnj39vZmxYoVGuesWLECf3//F64Af+nSJT799FN8fX1JSEhgyJAhygrgOR48eECDBg3YsWMHZ86cYfDgwfTu3ZujR49qpIuIiEBHR4eYmBiWLFmi7A8KCmLBggUcOnSIK1eu0K1bN+bMmcOaNWvYsWMHe/bsYf78+QWWMywsjIYNG3LixAm++OILPv/8cxITEws851kTJkxg9OjRnDx5EkdHR3r27Kk8uL9I69atMTU1ZePGjcq+p0+fsn79evz8/ApdhvxkZWWRnp5OpUqVNPYnJSVRpUoV7O3t8fPzIzU1Nde5q1evpnLlyrz33nuMHz9eI9Dz8vIiIyODuLg4IHsqZkdHR7p06UJsbCwPHjwAsltV7OzslICsIKtXr2bGjBl8++23xMfHY2try+LFi3Oli4yM5Ny5c0RHR7N27Vo2bdpEcHAwAGlpafTs2ZP+/fsraT755BPymlPDxsZGqffExETS0tKYO3cu5ubmLF++nKCgII4dO0Z6ejq9e/dm2LBhtG7dmu7duxMQEKDRCtW9e/cX3p8QQgghyrbinz/1NcjIyODHH3/kp59+onXr1kD2g3i1atXyTJ+amoqVlRXe3t5oa2tja2tL48aNNdJ4eHgQGBgIgKOjIzExMcyePZs2bdrkmefEiROVn+3s7Bg9ejTr1q1j7NixAAwcOJChQ4fy3Xffoaury/Hjxzl9+jRbt2594f0tXboUJycnZs2aBYCTkxNnzpxhxowZSpqqVasyevRo5fXw4cPZvXs3P//8s8a9OTg4aHQxSktLA7K/cffw8ABgwIABjB8/nuTkZOzt7QH49NNPiYqKYty4cfmWs3379nzxxRdAdovS7NmziYqKwsnJ6YX3CDB69Gg6dOgAQHBwMC4uLly8eDHXuI68aGlp0aNHD9asWcOAAQOA7Afw27dv06VLl0JdvyChoaFkZGTQrVs3ZV+TJk0IDw/HycmJtLQ0goODad68OWfOnFG6v/Xq1Yvq1atTpUoVTp06xbhx40hMTGTTpk1A9u+jatWqREdH07RpU6Kjo2nZsiVWVlbY2tpy+PBhvLy8iI6OLnTryfz58xkwYAD9+vUDYPLkyezZsyfXOjM6OjosX74cAwMDXFxcmDp1KmPGjGHatGmkpaXx5MkTPvnkE6pXrw6QK4jPoaWlpQRuFhYWGq1U7du3Z9CgQfj5+dGwYUMqVKjAN998A2R3uTM0NFRaoQry8OFDHj58qLy+e/duoepCCCGEEKVPmWhBSU5O5tGjRzRp0kTZV6lSpXwfjLt27cr9+/ext7dn0KBBbN68Odc39U2bNs31+ty5c/mWYf369Xh4eGBlZYWhoSETJ07U+Dbd19cXLS0tNm/eDGR3N/Ly8irUN+KJiYk0atRIY9/zAdXTp0+ZNm0arq6uVKpUCUNDQ3bv3p3rG/0GDRrkeQ03NzflZ0tLS6Wr2rP7rl27VmA5n81DpVJhZWX1wnPyO9/a2hqgSOf7+fkRHR3N33//DWS3JHTo0OGVZ+5as2YNwcHB/PzzzxpjWNq1a0fXrl1xc3PDx8eH3377jdu3b/Pzzz8raQYPHoyPjw+urq74+fmxcuVKNm/eTHJyspLm2XEo0dHReHp6AtCyZUuio6O5f/8+sbGxhQ5QEhMTc70/nn8N4O7urjEuq2nTpmRkZHDlyhXc3d1p3bo1rq6udO3alWXLlnHr1q1CXf95oaGhPHnyhF9++YXVq1ejq6tb5Dy++eYbTExMlM3GxualyiKEEEKIkq9MBChFZWNjQ2JiIosWLUJfX58vvviCFi1aKGNGiurw4cP4+fnRvn17tm/fzokTJ5gwYYJGf34dHR369OnDihUrePToEWvWrKF///6v65aYNWsWc+fOZdy4cURFRXHy5El8fHxyDYSvUKFCnudra2srP6tUKo3XOfteNFbmZc4pqAyAcn65cuVydS96/vfVqFEjatasybp167h//z6bN29+5e5d69atY+DAgfz88894e3sXmNbU1BRHR0cuXryYb5qcIPrZNDnjUG7cuMGJEydo2bIlkB2gREVFcejQIR49evRWB8hraWmxd+9edu7cSZ06dZg/fz5OTk5cunSpyHklJyfz999/k5WVVeCimAUZP348d+7cUbYrV668VD5CCCGEKPnKRIBSs2ZNtLW1iY2NVfbdunWrwCll9fX16dixI/PmzSM6OprDhw9z+vRp5fiRI0c00h85cgRnZ+c88zp06BDVq1dnwoQJNGzYEAcHBy5fvpwr3cCBA9m3bx+LFi1Sus8UhpOTU64B9jljFnLExMTQqVMnPvvsM9zd3bG3ty/0lLqlgbm5OVevXtUIUk6ePJkrnZ+fH6tXr+bXX3+lXLlySpexl7F27Vr69evH2rVrC5VPRkYGycnJSutPXnLK/GwaLy8v7t27x3fffYeDg4PSStOiRQuOHj3Kzp07la5gheHk5JTr/fH8a4CEhATu37+vvD5y5AiGhoZK64RKpcLDw4Pg4GBOnDiBjo6O0gL4PB0dHSC7Je9Zjx494rPPPqN79+5MmzaNgQMHarSK6ejo5DonL7q6uhgbG2tsQgghhCibykSAYmhoyIABAxgzZgy///47Z86cKXDweXh4OD/++CNnzpzhv//9Lz/99BP6+vpKX3vIfuCfOXMmFy5cYOHChfzyyy+MGDEiz/wcHBxITU1l3bp1JCcnM2/evDwf5JydnXn//fcZN24cPXv2RF+/cCtgDxkyhPPnzzNu3DguXLjAzz//rMx2lNPS4ODgwN69ezl06BDnzp1jyJAh/PPPP4XKvzTw9PTk+vXrzJw5k+TkZBYuXMjOnTtzpfPz8+P48ePMmDGDTz/99KW6E0F2t64+ffoQFhZGkyZNuHr1KlevXuXOnTtKmtGjR7N//35SUlI4dOgQnTt3RktLi549ewLZLQfTpk0jPj6elJQUtm3bRp8+fWjRooVGdzZ7e3tsbW2ZP3++0noC2S19VapU4fvvvy909y7IHn/0448/EhERQVJSEtOnT+fUqVPKeyXHo0ePGDBgAGfPnuW3335jypQpDBs2jHLlyhEbG8vXX3/NsWPHSE1NZdOmTVy/fl0J0jdv3qwxNqh69eqoVCq2b9/O9evXlfEuEyZM4M6dO8ybN0+Z6e7ZlkM7OzsuXbrEyZMn+ffffzXGmQghhBDi3VQmAhTI7uLUvHlzOnbsiLe3Nx988EG+4y1MTU1ZtmwZHh4euLm5sW/fPn799VfMzMyUNAEBARw7dox69eoxffp0vvvuO3x8fPLM7+OPP+Y///kPw4YNo27duhw6dIhJkyblmXbAgAE8evSoSN27atSowYYNG9i0aRNubm4sXrxYmcUr5wF84sSJ1K9fHx8fHzw9PbGyssLX17fQ1yjpnJ2dWbRoEQsXLsTd3Z2jR49qTAqQo1atWjRu3JhTp069Uveu77//nidPnvDll19ibW2tbM8Gqf/73//o2bMnTk5OdOvWDTMzM44cOYK5uTmQ3Tqwb98+PvzwQ2rXrk1AQABdunTJNVUxZLeipKenK+NPcrRs2ZL09PQiBSh+fn6MHz+e0aNHU79+fS5duoS/vz96enoa6Vq3bo2DgwMtWrSge/fufPzxxwQFBQFgbGzMH3/8Qfv27XF0dGTixImEhYXRrl07AO7cuaMxQ1vVqlUJDg4mMDAQS0tLhg0bRnR0NHPmzGHVqlUYGxtTrlw5Vq1axYEDB5RZxbp06ULbtm3x8vLC3Nw819TYQgghhHj3qNR5zRv6jrOzs2PkyJEa63y8LtOmTeOXX37h1KlTr5TPjBkzWLJkifTFF4XSpk0brKysWLVqFZC9Dsrt27fZsmVL8RbsJd29excTExPchy9BS7dwLZFvW/ysPsVdBCGEEKJEyfn7fefOnQK7a5eJaYZLg4yMDFJSUliwYAHTp08v8vmLFi2iUaNGmJmZERMTw6xZsxg2bNgbKKko7TIzM1myZAk+Pj5oaWmxdu1a9u3bV+A6PqXVH9N7yngUIYQQoowpM128Srphw4bRoEEDPD09c3XvGjp0KIaGhnluQ4cOBbIXBOzUqRN16tRh2rRpBAQEKN1xSrqvv/463/vL6TL0trm4uORbptWrVxdLmQrrRWVXqVT89ttvtGjRggYNGvDrr7+ycePGF85CJoQQQghREkgXrxLg2rVr+S48Z2xsrLH2Rml08+ZNbt68mecxfX39Qs9O9Tpdvnw532mlLS0tlYUWS6LSXPbXpbBNxEIIIYQoOQr791sCFCFEqVPSx6DI+BMhhBAit8IGKNLF6yWpVKpSO8D4VQUFBVG3bt3iLkaRpKSkoFKp8lw7RQghhBBClBwSoLyktLS0Yhs/UdxGjx5NZGRkcRejSGxsbEhLS+O99957YdqEhAR69uyJjY0N+vr6ODs7M3fuXI000dHRqFSqXNvVq1eVNEFBQbmOP7t2SI8ePWjbtq1Gvrt27UKlUuUaXxQUFIStre1L3Pnb8TIBe04d3r59+42USQghhBClk8zi9ZKsrKyKuwiv5NGjR8rq30WVMyC7NNHS0ir07yw+Ph4LCwt++uknbGxsOHToEIMHD0ZLSyvXzGmJiYkaTZTPjxdycXFh3759yuvy5f//v5yXlxejR4/myZMnyv6oqChsbGyIjo7WyCcqKqpIa6EIIYQQQpRW72QLyvfff0+VKlXIysrS2N+pUydlhq3FixdTs2ZNdHR0cHJyUtaPyPH8N8Y5i/ZVqlSJChUq0LBhQ2JjY5XjW7dupX79+ujp6WFvb09wcDBPnjwpVHnPnz/PBx98gJ6eHnXq1GHfvn25rp+zSreBgQH29vZMmjRJYyB1TresH374gRo1aiiL9qlUKpYuXcpHH32EgYEBzs7OHD58mIsXL+Lp6UmFChVo1qwZycnJufLK4e/vj6+vL6GhoVhbW2NmZsaXX36Z70Du59nZ2fH111/Tv39/jIyMsLW15fvvv1eO5/VN+8mTJ1GpVKSkpHD37l309fVzrSy/efNmjIyMyMzMLFIXr/79+zN37lxatmyJvb09n332Gf369WPTpk250lpYWGBlZaVs5cpp/pcqX768xvHKlSsrx7y8vMjIyODYsWMa9xoYGEhsbCwPHjwA4MGDB8TGxhY6QNm2bRsODg7o6enh5eVFRESERv2Fh4djamrKli1blHQ+Pj4aa+okJCTg5eWFkZERxsbGNGjQQKOcz7KzswOgc+fOqFQq7OzsUKvVeHt74+PjQ84wt5s3b1KtWjUmT55MSkqKcj8VK1ZEpVLh7+9fqPsTQgghRNn2TgYoXbt25caNG0RFRSn7bt68ya5du/Dz82Pz5s2MGDGCgIAAzpw5w5AhQ+jXr59G+mdlZGTQsmVL/vrrL7Zt20ZCQgJjx45VAqADBw7Qp08fRowYwdmzZ1m6dCnh4eHMmDHjhWV9+vQpvr6+GBgYEBsby/fff6+sIv8sIyMjwsPDOXv2LHPnzmXZsmXMnj1bI83FixfZuHEjmzZt0nhQnzZtGn369OHkyZPUrl2bXr16MWTIEMaPH8+xY8dQq9UvXHMlKiqK5ORkoqKiiIiIIDw8nPDw8BfeX46wsDAaNmzIiRMn+OKLL/j88881VioviLGxMR999BFr1qzR2L969Wql7l7VnTt3qFSpUq79devWxdramjZt2hATE5PreFJSElWqVMHe3h4/Pz9SU1OVY46OjlSpUkV5X6Wnp3P8+HG6du2KnZ0dhw8fBuDQoUM8fPiwUAHKpUuX+PTTT/H19SUhIYEhQ4bk+X7JzMxkxowZrFy5kpiYGG7fvk2PHj2U435+flSrVo24uDji4+MJDAxEW1s7z2vGxcUBsGLFCtLS0oiLi0OlUhEREUFcXBzz5s0DsqfTrlq1KpMnT8bGxoaNGzcC2a1QaWlpubrRCSGEEOLd9E528apYsSLt2rVjzZo1tG7dGoANGzZQuXJlvLy8aN68Of7+/nzxxRcAjBo1iiNHjhAaGprnQ+KaNWu4fv06cXFxykNsrVq1lOPBwcEEBgbSt29fAOzt7Zk2bRpjx45lypQpBZZ17969JCcnEx0drXRRmjFjBm3atNFIN3HiROVnOzs7Ro8ezbp16xg7dqyy/9GjR6xcuRJzc3ONc/v160e3bt2A7JaYpk2bMmnSJHx8fAAYMWIE/fr1K7CcFStWZMGCBWhpaVG7dm06dOhAZGQkgwYNKvC8HO3bt1fqe9y4ccyePZuoqCicnJwKdb6fnx+9e/cmMzMTAwMD7t69y44dO9i8eXOhzi/IoUOHWL9+PTt27FD2WVtbs2TJEho2bMjDhw/54Ycf8PT0JDY2lvr16wPQpEkTwsPDcXJyIi0tjeDgYJo3b86ZM2eUqYC9vLyIjo5m/PjxHDhwAEdHR8zNzWnRogXR0dHK8Ro1alC9evUXlnXp0qU4OTkxa9YsAJycnDhz5kyuYPjx48csWLCAJk2aABAREYGzszNHjx6lcePGpKamMmbMGGXMjIODQ77XzHk/mZqaanSjq1q1KkuXLqVPnz5cvXqV3377jRMnTijd2XL+r1hYWGBqalrgfT18+JCHDx8qr/ObllsIIYQQpd872YIC2Q+0GzduVB56Vq9eTY8ePShXrhznzp3Dw8NDI72Hhwfnzp3LM6+TJ09Sr169PL9hh+zuMlOnTtVYUG/QoEGkpaWRmZlZYDkTExOxsbHRePBr3LhxrnTr16/Hw8MDKysrDA0NmThxosa39QDVq1fPFZwAuLm5KT9bWloC4OrqqrHvwYMHBT4Uuri4oKWlpby2trbm2rVrBd5bfmVQqVRYWVkV6fz27dujra3Ntm3bANi4cSPGxsavvDjhmTNn6NSpE1OmTOHDDz9U9js5OTFkyBAaNGhAs2bNWL58Oc2aNdNotWrXrh1du3bFzc0NHx8ffvvtN27fvs3PP/+spPH09CQmJobHjx8THR2Np6cnAC1btlTGoeQEKoWRmJhIo0aNNPbl9X4pX768RrratWtjamqqvMdHjRrFwIED8fb2JiQkRKOLX1F07dqVzp07ExISQmhoaIGBTkG++eYbTExMlM3Gxual8hFCCCFEyffOBigdO3ZErVazY8cOrly5woEDB/Dz83upvPT1C16HISMjg+DgYE6ePKlsp0+fJikpSRkL8ioOHz6Mn58f7du3Z/v27Zw4cYIJEybw6NEjjXQVKlTI8/xnu+6oVKp89z0/Zie/PHLOKSh9Uc7PGdfx7JI9z49v0dHR4dNPP1W6ea1Zs4bu3btrDEovqrNnz9K6dWsGDx6s0UKVn8aNG3Px4sV8j5uamuLo6KiRxsvLi3v37hEXF0dUVBQtW7YEsgOU2NhYbt68SWxsLK1atXrp+3gZQUFB/Pnnn3To0IHff/+dOnXqvFRrVGZmJvHx8WhpaZGUlPTS5Rk/fjx37txRtmfHywghhBCibHlnAxQ9PT0++eQTVq9ezdq1a3FyclK65jg7O+caTxATE0OdOnXyzMvNzY2TJ0/mu1p6/fr1SUxMpFatWrm25wdVP8/JyYkrV67wzz//KPty+vznOHToENWrV2fChAk0bNgQBwcHLl++/MI6KC1yWn3S0tKUfXkNdvfz82PXrl38+eef/P777y8dcAL8+eefeHl50bdv30KNFcopk7W1db7HMzIySE5O1khTs2ZNbGxs2LZtGydPnlQClKpVq1K1alXCwsJ49OhRoVtQnJyccg1mf/79AvDkyRONdImJidy+fRtnZ2dln6OjI//5z3/Ys2cPn3zyCStWrMj3utra2jx9+jTX/oCAAMqVK8fOnTuZN28ev//+u3IsZxa5vM57nq6uLsbGxhqbEEIIIcqmdzZAgewH2h07drB8+XKNh9kxY8YQHh7O4sWLSUpK4rvvvmPTpk2MHj06z3x69uyJlZUVvr6+xMTE8N///peNGzcqg5wnT57MypUrCQ4O5s8//+TcuXOsW7euUN/Kt2nThpo1a9K3b19OnTpFTEyMcl5Oy4aDgwOpqamsW7eO5ORk5s2b91rGXpQUtWrVwsbGhqCgIJKSktixYwdhYWG50rVo0QIrKyv8/PyoUaOGMr6iqM6cOYOXlxcffvgho0aN4urVq1y9epXr168raebMmcPWrVu5ePEiZ86cYeTIkfz+++98+eWXSprRo0ezf/9+UlJSOHToEJ07d0ZLS4uePXtqXM/Ly4tFixZRq1YtpYsdZLeizJ8/XxlMXxhDhgzh/PnzjBs3jgsXLvDzzz8rkxXkvF8gO6AYPnw4sbGxxMfH4+/vz/vvv0/jxo25f/8+w4YNIzo6msuXLxMTE0NcXJwSvPz111/Url2bo0ePKvnZ2dkRGRnJ1atXuXXrFoDyf2v16tW0adOGMWPG0LdvX+V49erVUalUbN++nevXr5ORkVGoexRCCCFE2fZOByitWrWiUqVKJCYm0qtXL2W/r68vc+fOJTQ0FBcXF5YuXcqKFSuU8QHP09HRYc+ePVhYWNC+fXtcXV0JCQlRxmT4+Piwfft29uzZQ6NGjXj//feZPXt2oQY9a2lpsWXLFjIyMmjUqBEDBw5UZmXK6R728ccf85///Idhw4ZRt25dDh06xKRJk16xdkoObW1t1q5dy/nz53Fzc+Pbb79l+vTpudKpVCp69uxJQkLCK7WebNiwgevXr/PTTz9hbW2tbM+O2Xj06BEBAQG4urrSsmVLEhIS2LdvnzLpAvz/1NNOTk5069YNMzMzjhw5kmsckJeXF+np6bneXy1btiQ9Pb1I65/UqFGDDRs2sGnTJtzc3Fi8eLHyftHV1VXSGRgYMG7cOHr16oWHhweGhoasX78eyH7P3bhxgz59+uDo6Ei3bt1o164dwcHBQHb3usTERI3xU2FhYezduxcbGxvq1avH9evXGTBgAEFBQUrLZHBwMJaWlgwdOhTIbiXKmUDC0tLyhTPFCSGEEOLdoFI/27FflAoxMTF88MEHXLx4kZo1axZ3cUQJN2PGDJYsWaKM2wgPD2fkyJGlegX3u3fvYmJigvvwJWjpFjwGrDjEz+pT3EUQQgghSpycv9937twpsLv2OznNcGmzefNmDA0NcXBw4OLFi4wYMQIPDw8JTkSeFi1aRKNGjTAzMyMmJoZZs2aV2daJP6b3lPEoQgghRBnzTnfxKglWr16tMf3ws5uLiwuQvYDfl19+Se3atfH396dRo0Zs3bq1mEteOAcOHMj3/gwNDYulTEOHDs23PDndj0qqwpQ9KSmJTp06UadOHaZNm0ZAQABBQUHFW3AhhBBCiEKSLl7FLD09XWOGrmdpa2sXapxKSXb//n3++uuvfI8/u6Dl23Lt2rV813QxNjbGwsLiLZeo8Epz2V+nwjYRCyGEEKLkKOzfbwlQhBClztscgyLjSYQQQojXo7ABinTxEkIIIYQQQpQYEqC8Y9RqNYMHD6ZSpUqoVKo8FzwUxSMoKIi6devmezw8PBxTU9NXvo6npycjR45UXtvZ2TFnzpxXzlcIIYQQ4nWQAOUds2vXLsLDw9m+fTtpaWm89957r5znix6sxevRvXt3Lly4UNzFyCUlJeWlgt3XFXAJIYQQomyRaYbfMcnJyVhbW9OsWbPiLoooIn19ffT1S96aH0IIIYQQr5O0oLxD/P39GT58OKmpqahUKuzs7Hj48CFfffUVFhYW6Onp8cEHHxAXF6ecEx0djUqlIjIykoYNG2JgYECzZs1ITEwEsr8FDw4OJiEhAZVKhUqlIjw8HLVaTVBQELa2tujq6lKlShW++uqrQpVz1apVNGzYECMjI6ysrOjVqxfXrl3LVabdu3dTr1499PX1adWqFdeuXWPnzp04OztjbGxMr169NFY737VrFx988AGmpqaYmZnx0UcfkZycrBwPCgpS7uHZLTw8HOCV66qokpOTsbe3Z9iwYajV6lwtDjktV6tWrcLOzg4TExN69OhBenq6kubevXv06dMHQ0NDrK2tCQsLe+F1b9++zcCBAzE3N8fY2JhWrVqRkJCQb/oaNWoAUK9ePVQqFZ6enjx48AAXFxcGDx6scT9GRkYsX76c6Oho+vXrx507d5R6lqmQhRBCCAESoLxT5s6dy9SpU6lWrRppaWnExcUxduxYNm7cSEREBMePH6dWrVr4+Phw8+ZNjXMnTJhAWFgYx44do3z58vTv3x/I7nYUEBCAi4sLaWlppKWl0b17dzZu3Mjs2bNZunQpSUlJbNmyBVdX10KV8/Hjx0ybNo2EhAS2bNlCSkoK/v7+udIFBQWxYMECDh06xJUrV+jWrRtz5sxhzZo17Nixgz179jB//nwl/b179xg1ahTHjh0jMjKScuXK0blzZ7KysgAYPXq0cg9paWmEhoZiYGBAw4YNAV65rori1KlTfPDBB/Tq1YsFCxagUqnyTJecnMyWLVvYvn0727dvZ//+/YSEhCjHx4wZw/79+9m6dSt79uwhOjqa48ePF3jtrl27KsFefHw89evXp3Xr1rnuM8fRo0cB2LdvH2lpaWzatAk9PT1Wr15NREQEW7du5enTp3z22We0adOG/v3706xZM+bMmYOxsbFS36NHj863TA8fPuTu3bsamxBCCCHKJuni9Q4xMTHByMgILS0trKysuHfvHosXLyY8PJx27doBsGzZMvbu3cuPP/7ImDFjlHNnzJhBy5YtAQgMDKRDhw48ePAAfX19DA0NKV++PFZWVkr61NRUrKys8Pb2RltbG1tbWxo3blyocj77QG9vb8+8efNo1KgRGRkZGos7Tp8+HQ8PDwAGDBjA+PHjlVYHgE8//ZSoqCjGjRsHQJcuXTSus3z5cszNzTl79izvvfeexuKRR44cYeLEiURERPDee++9lrrS09Mr1P0fOnSIjz76iAkTJhAQEFBg2qysLMLDwzEyMgKgd+/eREZGMmPGDDIyMvjxxx/56aefaN26NQARERFUq1Yt3/wOHjzI0aNHuXbtGrq6ugCEhoayZcsWNmzYoNEiksPc3BwAMzMzjfdA3bp1mT59OgMHDqRHjx5cvnyZ7du3A6Cjo4OJiQkqlUrjnPx88803BAcHvzCdEEIIIUo/aUF5hyUnJ/P48WPlIR+yF4ds3Lgx586d00jr5uam/GxtbQ2g0e3qeV27duX+/fvY29szaNAgNm/ezJMnTwpVrvj4eDp27IitrS1GRkbKw35qamq+ZbK0tMTAwEAJTnL2PVvGpKQkevbsib29PcbGxtjZ2eWZb2pqKr6+vowePZpu3boBb7aunr92mzZtmDx58guDE8iegSsnOMm5Xs61kpOTefToEU2aNFGOV6pUCScnp3zzS0hIICMjAzMzM41V6i9duqTRHa6wAgICcHR0ZMGCBSxfvhwzM7Mi5wEwfvx47ty5o2xXrlx5qXyEEEIIUfJJC4ooFG1tbeXnnO5GOV2j8mJjY0NiYiL79u1j7969fPHFF8yaNYv9+/dr5PW8e/fu4ePjg4+PD6tXr8bc3JzU1FR8fHx49OhRgWV6Pl+VSqVRxo4dO1K9enWWLVtGlSpVyMrK4r333tPI9969e3z88cc0bdqUqVOnvqBW8lbUunqWubk5VapUYe3atfTv3/+Fq6S/6J6LKiMjA2tra6Kjo3Mde5kZt65du8aFCxfQ0tIiKSmJtm3bvlS5dHV1lRYdIYQQQpRt0oLyDqtZsyY6OjrExMQo+x4/fkxcXBx16tQpdD46Ojo8ffo01359fX06duzIvHnziI6O5vDhw5w+fbrAvM6fP8+NGzcICQmhefPm1K5du9CtDwW5ceMGiYmJTJw4kdatW+Ps7MytW7c00qjVaj777DOysrJYtWqVxriP11VXL6Kvr8/27dvR09PDx8dHY8B7UdWsWRNtbW1iY2OVfbdu3SpwquL69etz9epVypcvT61atTS2ypUr53mOjo4OQJ7vgf79++Pq6kpERATjxo3TaG3K730jhBBCiHebtKC8wypUqMDnn3/OmDFjqFSpEra2tsycOZPMzEwGDBhQ6Hzs7Oy4dOkSJ0+epFq1ahgZGbF27VqePn1KkyZNMDAw4KeffkJfX5/q1asXmJetrS06OjrMnz+foUOHcubMGaZNm/aqt0rFihUxMzPj+++/x9ramtTUVAIDAzXSBAUFsW/fPvbs2UNGRgYZGRlA9tid11VXhVGhQgV27NhBu3btaNeuHbt27dIYe1NYhoaGDBgwgDFjxmBmZoaFhQUTJkygXLn8v5fw9vamadOm+Pr6MnPmTBwdHfn777/ZsWMHnTt3pmHDhhw9epQ+ffoQGRlJ1apVsbCwQF9fn127dlGtWjX09PQwMTFh4cKFHD58mFOnTmFjY8OOHTvw8/PjyJEj6OjoYGdnR0ZGBpGRkbi7u2NgYICBgcGrVJ0QQgghygBpQXnHhYSE0KVLF3r37k39+vW5ePEiu3fvpmLFioXOo0uXLrRt2xYvLy/Mzc1Zu3YtpqamLFu2DA8PD9zc3Ni3bx+//vrrC8cgmJubEx4ezi+//EKdOnUICQkhNDT0VW+TcuXKsW7dOuLj43nvvff4z3/+w6xZszTS7N+/n4yMDJo1a4a1tbWyrV+/Hng9dVVYhoaG7Ny5E7VaTYcOHbh3795L5TNr1iyaN29Ox44d8fb25oMPPqBBgwb5plepVPz222+0aNGCfv364ejoqAxwt7S0BCAzM5PExEQeP34MQPny5Zk3bx5Lly6lSpUqdOrUifPnzzNmzBgWLVqEjY0NAIsWLeLff/9l0qRJADRr1oyhQ4fSvXt3zM3NmTlz5kvdoxBCCCHKFpVarVYXdyGEEKIo7t69i4mJCXfu3HnhOB0hhBBClAyF/fstXbyEEKVOzvcqsh6KEEIIUXrk/N1+UfuIBCjirTpw4ICyjkhecsZ9lEUuLi5cvnw5z2NLly7Fz8/vLZeo9Lpx4waA0n1MCCGEEKVHeno6JiYm+R6XLl7irbp//z5//fVXvsdr1ar1Fkvzdl2+fFkZt/E8S0tLjfVMRMFu375NxYoVSU1NLfADThTN3bt3sbGx4cqVK9J17jWTun1zpG7fHKnbN+ddrVu1Wk16ejpVqlQpcNIeaUERb5W+vn6ZDkIK8qIZzETh5XyomZiYvFMf7G+LsbGx1OsbInX75kjdvjlSt2/Ou1i3hfliUWbxEkIIIYQQQpQYEqAIIYQQQgghSgwJUIQQpY6uri5TpkxBV1e3uItSpki9vjlSt2+O1O2bI3X75kjdFkwGyQshhBBCCCFKDGlBEUIIIYQQQpQYEqAIIYQQQgghSgwJUIQQQgghhBAlhgQoQgghhBBCiBJDAhQhRLFbuHAhdnZ26Onp0aRJE44ePVpg+l9++YXatWujp6eHq6srv/32m8ZxtVrN5MmTsba2Rl9fH29vb5KSkt7kLZRYr7tu/f39UalUGlvbtm3f5C2UWEWp2z///JMuXbpgZ2eHSqVizpw5r5xnWfa66zYoKCjX+7Z27dpv8A5KpqLU67Jly2jevDkVK1akYsWKeHt750ovn7X/73XX7bv+WSsBihCiWK1fv55Ro0YxZcoUjh8/jru7Oz4+Ply7di3P9IcOHaJnz54MGDCAEydO4Ovri6+vL2fOnFHSzJw5k3nz5rFkyRJiY2OpUKECPj4+PHjw4G3dVonwJuoWoG3btqSlpSnb2rVr38btlChFrdvMzEzs7e0JCQnBysrqteRZVr2JugVwcXHReN8ePHjwTd1CiVTUeo2OjqZnz55ERUVx+PBhbGxs+PDDD/nrr7+UNPJZm+1N1C2845+1aiGEKEaNGzdWf/nll8rrp0+fqqtUqaL+5ptv8kzfrVs3dYcOHTT2NWnSRD1kyBC1Wq1WZ2Vlqa2srNSzZs1Sjt++fVutq6urXrt27Ru4g5LrddetWq1W9+3bV92pU6c3Ut7SpKh1+6zq1aurZ8+e/VrzLEveRN1OmTJF7e7u/hpLWfq86vvryZMnaiMjI3VERIRarZbP2me97rpVq+WzVlpQhBDF5tGjR8THx+Pt7a3sK1euHN7e3hw+fDjPcw4fPqyRHsDHx0dJf+nSJa5evaqRxsTEhCZNmuSbZ1n0Juo2R3R0NBYWFjg5OfH5559z48aN138DJdjL1G1x5Fkavcl6SEpKokqVKtjb2+Pn50dqauqrFrfUeB31mpmZyePHj6lUqRIgn7U53kTd5niXP2slQBFCFJt///2Xp0+fYmlpqbHf0tKSq1ev5nnO1atXC0yf829R8iyL3kTdQnaXg5UrVxIZGcm3337L/v37adeuHU+fPn39N1FCvUzdFkeepdGbqocmTZoQHh7Orl27WLx4MZcuXaJ58+akp6e/apFLhddRr+PGjaNKlSrKg7h81mZ7E3UL8llbvrgLIIQQovTo0aOH8rOrqytubm7UrFmT6OhoWrduXYwlEyJ/7dq1U352c3OjSZMmVK9enZ9//pkBAwYUY8lKh5CQENatW0d0dDR6enrFXZwyJb+6fdc/a6UFRQhRbCpXroyWlhb//POPxv5//vkn38GuVlZWBabP+bcoeZZFb6Ju82Jvb0/lypW5ePHiqxe6lHiZui2OPEujt1UPpqamODo6vjPv21ep19DQUEJCQtizZw9ubm7KfvmszfYm6jYv79pnrQQoQohio6OjQ4MGDYiMjFT2ZWVlERkZSdOmTfM8p2nTphrpAfbu3aukr1GjBlZWVhpp7t69S2xsbL55lkVvom7z8r///Y8bN25gbW39egpeCrxM3RZHnqXR26qHjIwMkpOT35n37cvW68yZM5k2bRq7du2iYcOGGsfkszbbm6jbvLxzn7XFPUpfCPFuW7dunVpXV1cdHh6uPnv2rHrw4MFqU1NT9dWrV9VqtVrdu3dvdWBgoJI+JiZGXb58eXVoaKj63Llz6ilTpqi1tbXVp0+fVtKEhISoTU1N1Vu3blWfOnVK3alTJ3WNGjXU9+/ff+v3V5xed92mp6erR48erT58+LD60qVL6n379qnr16+vdnBwUD948KBY7rG4FLVuHz58qD5x4oT6xIkTamtra/Xo0aPVJ06cUCclJRU6z3fFm6jbgIAAdXR0tPrSpUvqmJgYtbe3t7py5crqa9euvfX7Ky5FrdeQkBC1jo6OesOGDeq0tDRlS09P10gjn7Wvv27ls1atlgBFCFHs5s+fr7a1tVXr6OioGzdurD5y5IhyrGXLluq+fftqpP/555/Vjo6Oah0dHbWLi4t6x44dGsezsrLUkyZNUltaWqp1dXXVrVu3VicmJr6NWylxXmfdZmZmqj/88EO1ubm5WltbW129enX1oEGD3rkH6BxFqdtLly6pgVxby5YtC53nu+R112337t3V1tbWah0dHXXVqlXV3bt3V1+8ePEt3lHJUJR6rV69ep71OmXKFCWNfNb+v9dZt/JZq1ar1Gq1+u222QghhBBCCCFE3mQMihBCCCGEEKLEkABFCCGEEEIIUWJIgCKEEEIIIYQoMSRAEUIIIYQQQpQYEqAIIYQQQgghSgwJUIQQQgghhBAlhgQoQgghhBBCiBJDAhQhhBBCFJq/vz++vr6vlEd0dDQqlYrbt28DEB4ejqmp6SuXLSUlBZVKxcmTJ185LyFE8Slf3AUQQgghROkxd+5cXnWN52bNmpGWloaJiclrKlU2Gxsb0tLSqFy5MpAdCHl5eXHr1q3XEgAJId4OCVCEEEIIUWivI6jQ0dHBysrqNZTm/z169OiN5CuEePuki5cQQgghctmwYQOurq7o6+tjZmaGt7c39+7dy9XFy9PTk+HDhzNy5EgqVqyIpaUly5Yt4969e/Tr1w8jIyNq1arFzp07lXOe7+L1vOTkZDp16oSlpSWGhoY0atSIffv2aaSxs7Nj2rRp9OnTB2NjYwYPHqzRxSslJQUvLy8AKlasiEqlwt/fn5UrV2JmZsbDhw818vP19aV3796vp/KEEK9EAhQhhBBCaEhLS6Nnz57079+fc+fOER0dzSeffJJv166IiAgqV67M0aNHGT58OJ9//jldu3alWbNmHD9+nA8//JDevXuTmZlZqOtnZGTQvn17IiMjOXHiBG3btqVjx46kpqZqpAsNDcXd3Z0TJ04wadIkjWM2NjZs3LgRgMTERNLS0pg7dy5du3bl6dOnbNu2TUl77do1duzYQf/+/YtSTUKIN0QCFCGEEEJoSEtL48mTJ3zyySfY2dnh6urKF198gaGhYZ7p3d3dmThxIg4ODowfPx49PT0qV67MoEGDcHBwYPLkydy4cYNTp04V6vru7u4MGTKE9957DwcHB6ZNm0bNmjU1ggqAVq1aERAQQM2aNalZs6bGMS0tLSpVqgSAhYUFVlZWmJiYoK+vT69evVixYoWS9qeffsLW1hZPT88i1JIQ4k2RAEUIIYQQGtzd3WndujWurq507dqVZcuWcevWrXzTu7m5KT9raWlhZmaGq6urss/S0hLIbqkojIyMDEaPHo2zszOmpqYYGhpy7ty5XC0oDRs2LMptKQYNGsSePXv466+/gOxZxPz9/VGpVC+VnxDi9ZIARQghhBAatLS02Lt3Lzt37qROnTrMnz8fJycnLl26lGd6bW1tjdcqlUpjX86Df1ZWVqGuP3r0aDZv3szXX3/NgQMHOHnyJK6urjx69EgjXYUKFYpyW4p69erh7u7OypUriY+P588//8Tf3/+l8hJCvH4yi5cQQgghclGpVHh4eODh4cHkyZOpXr06mzdvfivXjomJwd/fn86dOwPZLSopKSlFzkdHRweAp0+f5jo2cOBA5syZw19//YW3tzc2NjavVGYhxOsjLShCCCGE0BAbG8vXX3/NsWPHSE1NZdOmTVy/fh1nZ+e3cn0HBwc2bdrEyZMnSUhIoFevXoVufXlW9erVUalUbN++nevXr5ORkaEc69WrF//73/9YtmyZDI4XooSRAEUIIYQQGoyNjfnjjz9o3749jo6OTJw4kbCwMNq1a/dWrv/dd99RsWJFmjVrRseOHfHx8aF+/fpFzqdq1aoEBwcTGBiIpaUlw4YNU46ZmJjQpUsXDA0NNaZNFkIUP5X6VZeDFUIIIYQohVq3bo2Liwvz5s0r7qIIIZ4hAYoQQggh3im3bt0iOjqaTz/9lLNnz+Lk5FTcRRJCPEMGyQshhBDinVKvXj1u3brFt99+K8GJECWQtKAIIYQQQgghSgwZJC+EEEIIIYQoMSRAEUIIIYQQQpQYEqAIIYQQQgghSgwJUIQQQgghhBAlhgQoQgghhBBCiBJDAhQhhBBCCCFEiSEBihBCCCGEEKLEkABFCCGEEEIIUWJIgCKEEEIIIYQoMf4PoQu1Qr048CsAAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "code", + "source": [ + "# 한글 텍스트 처리 - 네이버 영화 평점 감상 분석" + ], + "metadata": { + "id": "72INMIRQC-Zx" + }, + "execution_count": null, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "!pip install --upgrade pip\n", + "!pip install JPype1-1.3.0-cp310-cp310-win_amd64.whl" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "TSH1HxmvDJMu", + "outputId": "ddecf5f6-f637-44b2-c2c2-b46c3f5675f0" + }, + "execution_count": 99, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: pip in /usr/local/lib/python3.11/dist-packages (24.1.2)\n", + "Collecting pip\n", + " Downloading pip-25.1.1-py3-none-any.whl.metadata (3.6 kB)\n", + "Downloading pip-25.1.1-py3-none-any.whl (1.8 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.8/1.8 MB\u001b[0m \u001b[31m17.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hInstalling collected packages: pip\n", + " Attempting uninstall: pip\n", + " Found existing installation: pip 24.1.2\n", + " Uninstalling pip-24.1.2:\n", + " Successfully uninstalled pip-24.1.2\n", + "Successfully installed pip-25.1.1\n", + "\u001b[33mWARNING: Requirement 'JPype1-1.3.0-cp310-cp310-win_amd64.whl' looks like a filename, but the file does not exist\u001b[0m\u001b[33m\n", + "\u001b[0m\u001b[31mERROR: JPype1-1.3.0-cp310-cp310-win_amd64.whl is not a supported wheel on this platform.\u001b[0m\u001b[31m\n", + "\u001b[0m" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "!pip install konlpy" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "vwT1q3YuDL_Z", + "outputId": "37f1a4d2-4241-4715-e932-153555d0408b" + }, + "execution_count": 100, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting konlpy\n", + " Downloading konlpy-0.6.0-py2.py3-none-any.whl.metadata (1.9 kB)\n", + "Collecting JPype1>=0.7.0 (from konlpy)\n", + " Downloading jpype1-1.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.9 kB)\n", + "Requirement already satisfied: lxml>=4.1.0 in /usr/local/lib/python3.11/dist-packages (from konlpy) (5.4.0)\n", + "Requirement already satisfied: numpy>=1.6 in /usr/local/lib/python3.11/dist-packages (from konlpy) (2.0.2)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from JPype1>=0.7.0->konlpy) (24.2)\n", + "Downloading konlpy-0.6.0-py2.py3-none-any.whl (19.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m19.4/19.4 MB\u001b[0m \u001b[31m79.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading jpype1-1.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (494 kB)\n", + "Installing collected packages: JPype1, konlpy\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2/2\u001b[0m [konlpy]\n", + "\u001b[1A\u001b[2KSuccessfully installed JPype1-1.5.2 konlpy-0.6.0\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "!pip install konlpy" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "RyKRTAGrEOw0", + "outputId": "ed840e2f-d35d-4ed4-8a19-942b303dc032" + }, + "execution_count": 101, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: konlpy in /usr/local/lib/python3.11/dist-packages (0.6.0)\n", + "Requirement already satisfied: JPype1>=0.7.0 in /usr/local/lib/python3.11/dist-packages (from konlpy) (1.5.2)\n", + "Requirement already satisfied: lxml>=4.1.0 in /usr/local/lib/python3.11/dist-packages (from konlpy) (5.4.0)\n", + "Requirement already satisfied: numpy>=1.6 in /usr/local/lib/python3.11/dist-packages (from konlpy) (2.0.2)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from JPype1>=0.7.0->konlpy) (24.2)\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "from google.colab import drive\n", + "drive.mount('/content/drive')\n", + "\n", + "train_df = pd.read_csv(\"/content/drive/MyDrive/Euron/Data/ratings_train.txt\", sep='\\t')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5A2NUS4WE9_m", + "outputId": "4b163483-f44f-437c-c71f-2d6293aa26f7" + }, + "execution_count": 104, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount(\"/content/drive\", force_remount=True).\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "print(train_df['label'].value_counts())" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "WT1sIyMcEOmS", + "outputId": "eb8c03eb-8f97-4fa8-bf1e-ab16bcbb5863" + }, + "execution_count": 105, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "label\n", + "0 75173\n", + "1 74827\n", + "Name: count, dtype: int64\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import re\n", + "\n", + "train_df = train_df.fillna(' ')\n", + "train_df['document'] = train_df['document'].apply(lambda x: re.sub(r\"\\d+\", \" \", x))\n", + "\n", + "test_df = pd.read_csv(\"/content/drive/MyDrive/Euron/Data/ratings_test.txt\", sep='\\t')\n", + "test_df = test_df.fillna(' ')\n", + "test_df['document'] = test_df['document'].apply(lambda x: re.sub(r\"\\d+\", \" \", x))\n", + "\n", + "train_df.drop('id', axis=1, inplace=True)\n", + "test_df.drop('id', axis=1, inplace=True)" + ], + "metadata": { + "id": "Y_VJBS5sFvDo" + }, + "execution_count": 108, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "from konlpy.tag import Okt\n", + "\n", + "okt = Okt()\n", + "\n", + "def tw_tokenizer(text):\n", + " tokens_ko = okt.morphs(text)\n", + " return tokens_ko" + ], + "metadata": { + "id": "3yIwjpRaGIqI" + }, + "execution_count": 109, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.feature_extraction.text import TfidfVectorizer\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.model_selection import GridSearchCV\n", + "\n", + "tfidf_vect = TfidfVectorizer(tokenizer=tw_tokenizer, ngram_range=(1, 2), min_df=3, max_df=0.9)\n", + "tfidf_vect.fit(train_df['document'])\n", + "tfidf_matrix_train = tfidf_vect.transform(train_df['document'])" + ], + "metadata": { + "id": "oYyC3h7hGLXz" + }, + "execution_count": 110, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.model_selection import GridSearchCV\n", + "\n", + "lg_clf = LogisticRegression(random_state=0, solver='liblinear')\n", + "\n", + "params = {'C': [1, 3.5, 4.5, 5.5, 10]}\n", + "\n", + "grid_cv = GridSearchCV(lg_clf, param_grid=params, cv=3, scoring='accuracy', verbose=1)\n", + "grid_cv.fit(tfidf_matrix_train, train_df['label'])\n", + "\n", + "print(grid_cv.best_params_, round(grid_cv.best_score_, 4))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "VY0p6VbbGOQ8", + "outputId": "f4abaca2-dc79-427b-cf8c-ba8b27773825" + }, + "execution_count": 111, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Fitting 3 folds for each of 5 candidates, totalling 15 fits\n", + "{'C': 3.5} 0.8593\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.metrics import accuracy_score\n", + "\n", + "tfidf_matrix_test = tfidf_vect.transform(test_df['document'])\n", + "best_estimator = grid_cv.best_estimator_\n", + "preds = best_estimator.predict(tfidf_matrix_test)\n", + "\n", + "print('Logistic Regression 정확도:', accuracy_score(test_df['label'], preds))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "Xa7ZCuwZGRyv", + "outputId": "39dd328a-cc9a-4e5a-abbd-747f9a01dd43" + }, + "execution_count": 112, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Logistic Regression 정확도: 0.86172\n" + ] + } + ] + } + ] +} \ No newline at end of file diff --git "a/WEEK13_\341\204\213\341\205\250\341\204\211\341\205\263\341\206\270\341\204\200\341\205\252\341\204\214\341\205\246_\341\204\214\341\205\245\341\206\274\341\204\213\341\205\262\341\206\253\341\204\214\341\205\265.pdf" "b/WEEK13_\341\204\213\341\205\250\341\204\211\341\205\263\341\206\270\341\204\200\341\205\252\341\204\214\341\205\246_\341\204\214\341\205\245\341\206\274\341\204\213\341\205\262\341\206\253\341\204\214\341\205\265.pdf" new file mode 100644 index 0000000..ca0ba14 Binary files /dev/null and "b/WEEK13_\341\204\213\341\205\250\341\204\211\341\205\263\341\206\270\341\204\200\341\205\252\341\204\214\341\205\246_\341\204\214\341\205\245\341\206\274\341\204\213\341\205\262\341\206\253\341\204\214\341\205\265.pdf" differ