From ff1017873072185f78275c12c7d6107b5b89d002 Mon Sep 17 00:00:00 2001 From: rakeshreddy06 Date: Thu, 10 Oct 2024 14:39:29 -0500 Subject: [PATCH 01/31] commit 1 --- Final_LDA.ipynb | 308 ++++++++++++++++++ README.md | 73 ++++- finalLDA.py | 162 ++++++++++ generated_data.csv | 750 +++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 5 +- testDataGenerator.py | 37 +++ 6 files changed, 1327 insertions(+), 8 deletions(-) create mode 100644 Final_LDA.ipynb create mode 100644 finalLDA.py create mode 100644 generated_data.csv create mode 100644 testDataGenerator.py diff --git a/Final_LDA.ipynb b/Final_LDA.ipynb new file mode 100644 index 0000000..58446b1 --- /dev/null +++ b/Final_LDA.ipynb @@ -0,0 +1,308 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import argparse\n", + "from matplotlib import pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "class LDAModel:\n", + " def __init__(self, nComponents=2, regularization=0.01, solver=\"eigh\"):\n", + " self.nComponents = nComponents\n", + " self.regularization = regularization\n", + " self.solver = solver\n", + " self.Eigens = None \n", + " self.classes_ = None\n", + " self.classMeans = None\n", + " def fit(self, X, y):\n", + " \n", + " # this will find all the unique classes in the dataset\n", + " self.classes_ = np.unique(y)\n", + " # this will get the number of features in the dataset\n", + " n_features = X.shape[1]\n", + " \n", + " # this will calculate the scatter and matrices\n", + " WithinScatterMtrx, BetweenScatterMtrx = self.calculate_scatter_matrices(X, y)\n", + " WithinScatterMtrx +=self.regularization * np.identity(n_features)\n", + " if self.solver == \"eigh\":\n", + " # this will calculate the eigens\n", + " eigenValues, eigenVectors = np.linalg.eigh(np.linalg.inv(WithinScatterMtrx).dot(BetweenScatterMtrx))\n", + " else:\n", + " eigenValues, eigenVectors = np.linalg.eig(np.linalg.inv(WithinScatterMtrx).dot(BetweenScatterMtrx))\n", + " \n", + " \n", + " # this will sort the eigens\n", + " \n", + " \n", + " sorted_indices = np.argsort(-eigenValues.real)\n", + " #decending order\n", + " eigenValues = eigenValues.real[sorted_indices]\n", + " eigenVectors = eigenVectors.real[:, sorted_indices]\n", + " \n", + " # this will select the top nComponents eigenvectors\n", + " if self.nComponents is not None:\n", + " eigenVectors = eigenVectors[:, :self.nComponents]\n", + " else:\n", + " self.nComponents = len(self.classes_) - 1\n", + " eigenVectors = eigenVectors[:, :self.nComponents]\n", + " \n", + " self.Eigens = eigenVectors\n", + " \n", + " # this will calculate the class means\n", + " XLDA = X.dot(self.Eigens)\n", + " # this will calculate mean of the class\n", + " self.classMeans = {cls: XLDA[y == cls].mean(axis=0) for cls in self.classes_}\n", + " \n", + " return self\n", + " #this will calculate the scatter matrices\n", + " def calculate_scatter_matrices(self,X_train, y_train):\n", + " speciesData = {label: X_train[y_train == label] for label in np.unique(y_train)}\n", + " dataMeanValues = {label: np.mean(speciesData[label], axis=0) for label in speciesData}\n", + "\n", + " \n", + " MeanOverall = np.mean(X_train, axis=0).reshape(-1, 1)\n", + "\n", + "\n", + " n_features = X_train.shape[1]\n", + " WithinScatterMtrx = np.zeros((n_features, n_features))\n", + " BetweenScatterMtrx = np.zeros((n_features, n_features))\n", + "\n", + "\n", + " \n", + " for label, class_data in speciesData.items():\n", + " n_i = class_data.shape[0]\n", + " class_mean = dataMeanValues[label].reshape(n_features, 1)\n", + " \n", + " \n", + " for sample in class_data:\n", + " sample = sample.reshape(n_features, 1)\n", + " WithinScatterMtrx += (sample - class_mean).dot((sample - class_mean).T)\n", + " \n", + " \n", + " mean_diff = class_mean - MeanOverall\n", + " BetweenScatterMtrx += n_i * mean_diff.dot(mean_diff.T)\n", + "\n", + " return WithinScatterMtrx, BetweenScatterMtrx\n", + " \n", + " def transform(self, X):\n", + " #this will transform the data to the LDA space\n", + " if self.Eigens is None:\n", + " raise ValueError(\"Model has not been fitted yet.\")\n", + " return X.dot(self.Eigens)\n", + " def get_params(self):\n", + " # this will return the parameters of the model\n", + " return {\n", + " 'nComponents': self.nComponents,\n", + " 'classes_': self.classes_,\n", + " 'Eigens': self.Eigens,\n", + " 'classMeans': self.classMeans\n", + " }" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "class RDAModelResults:\n", + " #this is a class to handle the predictions\n", + " def __init__(self, model):\n", + " # this will initialize the model\n", + " self.model = model\n", + "\n", + " def predict(self, X):\n", + " # this will transform the data to the LDA space\n", + " XLDA = self.model.transform(X)\n", + " predictions = []\n", + " # this will compute the distances to each class mean\n", + " for sample in XLDA:\n", + " distances = {cls: np.linalg.norm(sample - mean) for cls, mean in self.model.classMeans.items()}\n", + " # this will assign to the class with the nearest mean\n", + " predicted_class = min(distances, key=lambda k: distances[k])\n", + " predictions.append(predicted_class)\n", + " return np.array(predictions)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "#this will plot the LDA projection\n", + "def plot_lda_projection(XLDA, y, title):\n", + "\n", + " plt.figure(figsize=(8, 6))\n", + " for label in np.unique(y):\n", + " plt.scatter(XLDA[y == label, 0], XLDA[y == label, 1], label=f'Class {label}')\n", + " plt.title(title)\n", + " plt.xlabel('LD1')\n", + " if XLDA.shape[1] > 1:\n", + " plt.ylabel('LD2')\n", + " plt.legend()\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "def manual_train_test_split(X, y, test_size=0.2, random_state=None):\n", + " if random_state is not None:\n", + " np.random.seed(random_state)\n", + " \n", + " indices = np.random.permutation(len(X))\n", + " test_size = int(len(X) * test_size)\n", + " train_indices = indices[test_size:]\n", + " test_indices = indices[:test_size]\n", + " \n", + " return X[train_indices], X[test_indices], y[train_indices], y[test_indices]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 0.88389311 0.19586502 0.35753652 ... 0.55969629 0.93946935\n", + " -0.97848104]\n", + " [ 0.50309684 0.40641447 0.32346101 ... -0.84236793 -1.27950266\n", + " 0.24571517]\n", + " [-0.0441948 1.56763255 1.05110868 ... -3.18970279 1.12013226\n", + " 1.33277821]\n", + " ...\n", + " [ 8.9530117 6.45568569 9.15746661 ... 7.73010469 7.29285848\n", + " 8.33342744]\n", + " [ 7.69252773 9.14447362 7.36241476 ... 8.55549506 6.4758956\n", + " 7.28877739]\n", + " [ 7.67724183 7.35172242 6.5933604 ... 6.95932099 7.39514765\n", + " 6.89892766]]\n", + "[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n", + " 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n", + " 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n", + " 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n", + " 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1\n", + " 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2\n", + " 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2\n", + " 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2\n", + " 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2\n", + " 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3\n", + " 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3\n", + " 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3\n", + " 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3\n", + " 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4\n", + " 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4\n", + " 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4\n", + " 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4\n", + " 4 4 4 4 4 4 4 4 4 4]\n" + ] + } + ], + "source": [ + "df = pd.read_csv(\"generated_data.csv\", header=None)\n", + "\n", + "X_features = df.iloc[:, :-1].values #this is the training data\n", + "y_labels= df .iloc[:, -1].values #this is the training labels\n", + "print(X_features)\n", + "print(y_labels)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "X_train, X_test, y_train, y_test = manual_train_test_split(X_features, y_labels, test_size=0.2, random_state=42)\n", + "model = LDAModel(nComponents=5, regularization=0.05, solver=\"eigen\") \n", + "model.fit(X_train, y_train)\n", + "\n", + "X_test_lda = model.transform(X_test)\n", + "\n", + "model_results = RDAModelResults(model)\n", + "y_pred = model_results.predict(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Test Accuracy Evaluation: 100.00%\n" + ] + } + ], + "source": [ + "accuracy = np.mean(y_pred == y_test)\n", + "print(f\"Test Accuracy Evaluation: {accuracy * 100:.2f}%\")" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAArEAAAIjCAYAAAAUdENlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACJJElEQVR4nO3de3iT9fk/8PeTFFp7SA/QJoXV0mILlCJSoMhpF50VKgzmTxTcFPCsiAcoYstpiBMo0yHqGGNOAaebMFGHyEo5yMQvaAulSq24Ukur0LQd0AZaKZA8vz9CImkOTdokT57k/bouLsyTT5K7jcDdT+7PfQuiKIogIiIiIpIRhdQBEBERERG5ikksEREREckOk1giIiIikh0msUREREQkO0xiiYiIiEh2mMQSERERkewwiSUiIiIi2WESS0RERESywySWiIiIiGSHSSwRkR/atGkTBEHAyZMnvf7affr0wX333ef11yWiwMIkloj8jimBO3z4sN01J0+ehCAI5l/dunVDz549MWrUKCxatAi1tbUOX+PZZ5+FIAiYPn26S7H16dPH4nXj4uIwduxYfPDBBy49j9QOHjyI5557Dk1NTVKHQkQBShBFUZQ6CCIid9q0aRPuv/9+lJSUYNiwYTbXnDx5EklJSfj1r3+NiRMnwmAw4Ny5cygpKcH7778PQRDwxhtv4O6777Z6rCiKuP766xEUFIT6+nrU19cjIiLCqdj69OmD6OhozJ8/HwBw+vRpbNiwAd999x3Wr1+Pxx57rPNf+DX0ej0uX76M4OBgCILglue81ksvvYQFCxaguroaffr0sbivra0NCoUC3bp1c/vrEhGZBEkdABGRlDIyMnDvvfdaXKupqcH48eMxa9YsDBgwAIMHD7a4f//+/fjhhx+wb98+TJgwAe+//z5mzZrl9Gv27t3b4jVnzpyJG264AS+//LLdJPbKlSswGAzo3r27U6+hVCqhVCqdjsmdgoODJXldIgosLCcgImonMTERmzZtwqVLl/D73//e6v533nkHaWlpyMrKQnZ2Nt55550uvZ5Go8GAAQNQXV0N4KdSh5deeglr165F3759ERwcjIqKCgDAvn37MHbsWISFhSEqKgq/+tWv8M0331g8p72a2H//+9/mx0ZERGDSpEn4+uuvrWI6fvw4pk2bhtjYWFx33XXo168fFi9eDAB47rnn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0qXm+5VKJc6cOYOZM2ciNTUV06ZNw2233Ybly5cDAPR6PebMmYMBAwYgJycHqamp+NOf/mTztZRKJY4fP25u/zV58mScOXMGBw4cwMCBA93/DQk0Bj1QmAfAVn301WuF+SwtoIAgiF05KSAzOp0OkZGRaG5uhkqlkjocIpLQxYsXUV1djaSkJISEhHT6eUS93titoLERQbGxCB021CM7sP7OXe+H36s+YCwd6MisHUDSWM/HQ+QBzuZrbLFFRNQFglLp1jZaRA5dqHfvOiIZYzkBERGRXISrO17jyjoiGZNNErtq1SoMHz4cERERiIuLw+23345vv/1W6rCIiIi8J3EUoOoFwE5nDAiAqrdxHZGfk00S+5///Adz5szB559/jt27d+Py5csYP368zTYzREREfkmhBHJWX73RPpG9ejunwLiOyM/Jpia2sLDQ4vamTZsQFxeHI0eO4Oc//7lEUREREXlZ2hRg2lvGLgXXttlS9TImsGlTpIuNyItkk8S219zcDMDY/NuetrY2i+baOp3O43ERERF5XNoUoP8koOag8RBXuNpYQsAdWAogskxiDQYD5s6di9GjRyM9Pd3uulWrVpn7HBIREfkVhZJttCigyaYm9lpz5sxBeXk53n33XYfrFi5ciObmZvOv77//3ksREhEREZEnyW4n9oknnsCOHTvw6aef4mc/+5nDtcHBwQgODvZSZERERD7IoGfZAfkl2SSxoijiySefxAcffID9+/cjKSlJ6pCIiHyWIAj44IMPcPvtt0sdCrnKnUlnxXY7B8BW8wAYyZ5sygnmzJmDt99+G3//+98REREBrVYLrVaLH3/8UerQiCiAGQwiTn17Dv8t0eLUt+dgMHh+krdWq8WTTz6J5ORkBAcHIyEhAZMnT8bevXs9/tqueuyxxyAIAtauXSt1KPJQsR1Ym24cLbvtQePva9ON1zvzXFtnWiawAKCrM17vzHMS+RDZ7MSuX78eADBu3DiL6xs3bsR9993n/YCIKOBVHW3AgS2VaGn6qQtKWFQwxk5PQd8hcR55zZMnT2L06NGIiorCiy++iEGDBuHy5cvYtWsX5syZg+PHj3vkdTvjgw8+wOeff45evXpJHYo8mJJOtPtByJR0TnvL+d1Tg964A9v+uYCr1wSgMN/Y4YClBSRTstmJFUXR5i8msEQkhaqjDSjcUG6RwAJAS1MbCjeUo+pog0de9/HHH4cgCCguLsbUqVORmpqKgQMHIjc3F59//rndx+Xl5SE1NRWhoaFITk7G0qVLcfnyZfP9X375JbKyshAREQGVSoWhQ4fi8OHDAICamhpMnjwZ0dHRCAsLw8CBA7Fz506HcZ46dQpPPvkk3nnnHXTr1s09X7w/6zDphDHpNOide76ag9Y7sO2fU3fKuI5IpmSzE0tE5CsMBhEHtlQ6XPPZ1kokDY6FQmFvPKjrzp49i8LCQqxYsQJhYWFW90dFRdl9bEREBDZt2oRevXrh2LFjePjhhxEREYFnn30WAHDPPfdgyJAhWL9+PZRKJcrKyszJ55w5c3Dp0iV8+umnCAsLQ0VFBcLDw+2+lsFgwIwZM7BgwQIMHDiwa190oHAl6XSmrdaFeude19l1RD6ISSwRkYvqKpusdmDbu3CuDXWVTejdL9ptr3vixAmIooj+/fu7/NglS5aY/7tPnz545pln8O6775qT2NraWixYsMD83CkpKeb1tbW1mDp1KgYNGgQASE5Odvhaq1evRlBQEJ566imX4wxY7k46w9XuXUfkg5jEEhG5qEXnOIF1dZ2zRLHzh8a2bNmCV199FVVVVbhw4QKuXLkClUplvj83NxcPPfQQ/va3vyE7Oxt33XUX+vbtCwB46qmnMHv2bBQVFSE7OxtTp07FjTfeaPN1jhw5gldeeQWlpaUQBPftQvs9dyediaOMXQh0dbBdoiAY708c5WyERD5HNjWxRES+IkzlXP9pZ9c5KyUlBYIguHx469ChQ7jnnnswceJE7NixA0ePHsXixYtx6dIl85rnnnsOX3/9NSZNmoR9+/YhLS0NH3zwAQDgoYcewnfffYcZM2bg2LFjGDZsGF577TWbr3XgwAE0NDTg+uuvR1BQEIKCglBTU4P58+ejT58+nf7a/Z4p6YS9xF8AVL2dTzoVSmMbLdNj2z8XAOQU8FAXyRqT2AAlRVsgIn8RnxKFsCjHCWp4dDDiU6Lc+roxMTGYMGEC1q1bh5aWFqv7m5qabD7u4MGDSExMxOLFizFs2DCkpKSgpqbGal1qairmzZuHoqIi3HHHHdi4caP5voSEBDz22GN4//33MX/+fLz++us2X2vGjBn46quvUFZWZv7Vq1cvLFiwALt27ercFx4IPJF0pk0xdjRQxVteV/VyrdMBkY9iOUEAkqItEJE/USgEjJ2egsIN5XbXjJmW4tZDXSbr1q3D6NGjkZmZieeffx433ngjrly5gt27d2P9+vX45ptvrB6TkpKC2tpavPvuuxg+fDg+/vhj8y4rAPz4449YsGAB7rzzTiQlJeGHH35ASUkJpk6dCgCYO3cubrvtNqSmpuLcuXP45JNPMGDAAJvx9ejRAz169LC41q1bN2g0GvTr18+N3wk/ZEo6bQ4nKOhc0pk2xdhGixO7yA8xiQ0wprZA7ZnaAuU8ms5ElsgJfYfEIefRdKsfCMOjgzFmmud+IExOTkZpaSlWrFiB+fPno66uDrGxsRg6dKi5n3Z7U6ZMwbx58/DEE0+gra0NkyZNwtKlS/Hcc88BAJRKJc6cOYOZM2eivr4ePXv2xB133IHly5cDAPR6PebMmYMffvgBKpUKOTk5ePnllz3y9QU8TySdCqVzHQ2IZEYQu3JSQGZ0Oh0iIyPR3NxscaAhUBgMIt5adNDhqerw6GDMWDHKIztIRL7k4sWLqK6uRlJSEkJCQjr9PAaDaOxWoGtDmMpYQsA/P65z1/tBRPLnbL7GndgAIlVbICJ/plAI/PNCRCQBHuwKIFK1BSIiIiJyNyaxAUSqtkBERERE7sYkNoBI1RaIiIiIyN2YxAYQU1sgRzzVFojIVwXQ2VafxveBiFzFJDbAmNoCtd+RDY8OZnstCijdunUDALS2tkocCQE/vQ+m94WIqCPsThCA+g6JQ9LgWLYFooCmVCoRFRWFhoYGAEBoaCgEgX8GvE0URbS2tqKhoQFRUVFQKtmEn4icwyQ2QLEtEBGg0WgAwJzIknSioqLM7wcRkTOYxBJRwBIEAfHx8YiLi8Ply5elDidgdevWjTuwROQyJrFEFPCUSiWTKCIimeHBLiIiIiKSHSaxRERERCQ7TGKJiIiISHaYxBIRERGR7DCJJSIiIiLZYXcCIiIiTzPogZqDwIV6IFwNJI4CFOyIQdQVTGKJiIg8qWI7UJgH6E7/dE3VC8hZDaRNkS4uIpljOQEREZGnVGwHts60TGABQFdnvF6xXZq4iPwAk1giIiJPMOiNO7AQbdx59VphvnEdEbmMSSwREZEn1By03oG1IAK6U8Z1ROQyJrFERESecKHeveuIyAIPdsmQwSCirrIJLbo2hKmCEZ8SBYVCkDosIiK6VrjaveuIyAKTWJmpOtqAA1sq0dLUZr4WFhWMsdNT0HdInISRERGRhcRRxi4EujrYrosVjPcnjvJ2ZER+geUEMlJ1tAGFG8otElgAaGlqQ+GGclQdbZAoMiIisqJQGttoAQDaf1p29XZOAfvFEnUSk1iZMBhEHNhS6XDNZ1srYTDY+mmfiOREb9CjRFuCnd/tRIm2BHqeXpevtCnAtLcAVbzldVUv43X2iSXqNJYTyERdZZPVDmx7F861oa6yCb37RXspKiJytz01e1BQXID61p8O+6hD1cjPzEd2YraEkdmmN+hR2lCKxtZGxIbGIiMuA0ruLFpKmwL0n8SJXURuxiRWJlp0jhNYV9cRke/ZU7MHuftzIbarn2xobUDu/lysGbfGpxJZuSXcklIogaSxUkdB5FdYTiATYapgt64jIt+iN+hRUFxglcACMF9bXbzaZ0oLTAn3tQks8FPCvadmj0SREVGgYBIrE/EpUQiLcpyghkcb220RkfyUNpRaJYTXEiFC26pFaUOpF6OyTW4JNxH5JyaxMqFQCBg7PcXhmjHTUtgvlkimGlsb3brOk+SUcBOR/2ISKyN9h8Qh59F0qx3Z8Ohg5Dyazj6xPkLU69HyRTGad3yMli+KIeq5G0Udiw2Ndes6T5JTwk1E/osHu2Sm75A4JA2O5cQuH6UrKkL9ylW4otWarwVpNFAvWgjV+PESRka+LiMuA+pQNRpaG2x+TC9AgDpUjYy4DAmisySnhJuI/Bd3YmVIoRDQu180Uodr0LtfNBNYH6ErKsKpp+daJLAAcKW+HqeengtdUZFEkZEcKBVK5GfmAzAmrNcy3c7LzPOJ9lWmhLt9nCYCBGhCNT6RcAckgx6oPgAce8/4O2uTyU8xiSUrBoOIU9+ew39LtDj17TkOUHCCqNejfuUqQLTxvbp6rX7lKpYWkEPZidlYM24N4kItS4PUoWqfaq8lp4Q74FRsB9amA5t/CWx70Pj72nTjdSI/I4iirX91/ZNOp0NkZCSam5uhUqmkDscnVR1twIEtlRaDFcKigjF2egprbh1o+aIYtbNmdbju+s2bETYi0wsRkZzJZYCArT6xmlAN8jLzfCbhDigV24GtMwGrcpSrP2hwQhjJhLP5GmtiyazqaAMKN5RbXW9pakPhhnIeHnPgSqNzB1icXUeBTalQYrhmuNRhdCg7MRtZCVmySLj9nkEPFObBOoHF1WsCUJhvnBzG94f8BJNYAmAsITiwpdLhms+2ViJpcCxrcG0IinXuAIuz64jkQi4Jt9+rOQjoTjtYIAK6U8Z1nBxGfoI1sQQAxm4HTY5H1l4414a6yibvBCQzocOGIkijAQQ7Cb4gIEijQeiwod4NjDxCb9CjRFuCnd/tRIm2hE39SXoX7Pft7dQ6IhngTqwXGQyiz7bGatE5TmBdXRdoBKUS6kULcerpucZE9tpS86uJrXrRQghKfownd7bqQNWhauRn5rMOlKQTrnbvOnJIbxBRXH0WDecvIi4iBJlJMVD6yL/ngYRJrJf4+oGpMJXjkbaurvPlhN1TVOPHA6+ste4Tq1azT6yf2FOzB7n7c636uDa0NiB3f65PdRCgAJM4ClD1AnR1sF0XKxjvTxzl7cj8TmF5HZZ/VIG65ovma/GRIVg2OQ056fESRhZ42J3AC+wdmDLxhQNTBoOItxYddFhSEB4djBkrRnWYjPp6wu5pol6P1sNHcKWxEUGxsQgdNpQ7sH5Ab9BjwrYJdsetmoYRFE4t5MEmkoa5OwFgmciyO4G7FJbXYfbbpfb6P2D9vRlMZN3A2XyNNbEe5uyBKal7sSoUAsZOT3G4Zsy0FKcS2MIN5VbJsKnDQdXRhi7H6usEpRJhIzIR+ctJCBuRyQTWT5Q2lNpNYAFAhAhtqxalDaVejIroGmlTjImqql0SperFBNYN9AYRyz+qsNv/AQCWf1QBPXurew3LCTzMlQNTvftFeykq2/oOiUPOo+lWu6jh0cEYM63jXVR2OCB/1tjqXHs0Z9cReUTaFGMbrZqDxkNc4WpjCQE/Heiy4uqzFiUE7YkA6povorj6LEb27eG9wAIYk1gPk9uBqb5D4pA0OLZT9axyStiJXBUb6lx7NGfXEXmMQsk2Wh7QcN5+AtuZddR1TGI9zN0HprxBoRA6lWTKLWEnckVGXAbUoWo0tDZYHewCfqqJzYjLkCA6IvK0uIgQt66jrmNNrIfFp0QhLMpxghoebdztlDs5Juz+QtTr0fJFMZp3fIyWL4oh6tm31N2UCiXyM/MBGBPWa5lu52Xm8VAXkZ/KTIpBfGQI7H0uKcDYpSAzKcabYQU0JrEe5q4DU3IQSAm7L9EVFeHELdmonTULp595BrWzZuHELdnQFRVJHZrfyU7MxppxaxAXalkfrg5V+2x7LQ5mIHIPpULAsslpAGCVyJpuL5ucxn6xXsQWW15iq+2Uswem5EQO7cT8ia6oyDhgof0f46sDFnq/spb9aT1Ab9CjtKEUja2NiA2NRUZchk/uwHIwA5H7sU+s5zmbrzGJ9aJAGQAQKAm71ES9HiduybYYrGBBEBCkVuOGvXvY5isA2RvMYCp98NWdYyI54MQuz2ISa4PUSWwgCZSEXUotXxSjdtasDtddv3kzwkZkeiEi8hUczEBEcuZsvsbuBOQRne1wQM670uhcP1Jn15H/cGUww3DNcC9GRkTkPjzYRSRTQbHO9SN1dh35Dw5mIKJAwJ1YIpkKHTYUQRoNrtTXWx/sAsw1saHDhno/OJIUBzMQSYs1s97BJJb8QiDW4ApKJdSLFhq7EwiCZSJ7tTuBetFCHuoKQBzMQAAAg57jZyXA7gXew4NdJHu2uiGERQVj7PTA6IagKypC/cpVFl0KgjQaqBctZHutAGbqTgDAIpFld4IAUbEdKMwDdKd/uqbqBeSsBtKmSBeXnyssr8Pst0utfnQ0bamsvzeDiawT2J3ABiax/od9aY1EvR6th4/gSmMjgmJjETpsKHdgyWafWE2oBnmZeUxg5c7RLmvFdmDrTMBeKjXtLSayHqA3iBizep/FDuy1BACayBB8lvcLlhZ0gN0JyO8ZDCIObKl0uOazrZVIGhwbEKUFbKNF7WUnZiMrIUsWgxl8kq9+HO9ol7X/JON9NspIjNcEoDDfuM4XvhY/Ulx91m4CCxi/+3XNF1FcfRYj+/bwXmB+jEksyVZdZZNFCYEtF861oa6yie2+KGApFUq20eoMX/043t4uq67OeH3cQsuYrYiA7pQxOU8a68lIA07DefsJbGfWUcfYYotkq0XnOIF1dR0REYCfEsX2yaApUazY7vkYDHqg+gBw7D3j7wa98ZfDXVYAX/zZuee/YL+PMHVOXESIW9dRx2SVxH766aeYPHkyevXqBUEQ8OGHH0odEkkoTBXs1nVERE4lioX5xnWeUrEdWJsObP4lsO1B4+9r04FPX+p4l/XHs869RrjaLaHSTzKTYhAfGQJ7xWsCjF0KMpNivBmWX5NVEtvS0oLBgwdj3bp1UodCPiA+JQphUY4T1PBoY7stIrnTG/Qo0ZZg53c7UaItgd6TSVQgqzno/MfxnuBoF3j/Suee47oowFEqpeptrO8lt1IqBCybnAbA+rtvur1schoPdbmRrGpib7vtNtx2221Sh0E+QqEQMHZ6isPuBGOmpfj9oS7yf7a6DKhD1cjPzGeXAXdz9mN2T3wc78wusDNGPA7sXwVj6nTt467+XZhTwENdHpKTHo/192ZY9YnVsE+sR8gqiXVVW1sb2tp+qofU6XQSRkOe0HdIHHIeTbfqExseHYwx0wKjTyz5N1O/1/ZDCxpaG5C7P5f9Xt3N2Y/ZPfFxfIe7wB0RjIfPfv4MEDfAzsG0ArbX8rCc9HjcmqbhxC4v8OskdtWqVVi+fLnUYZCH9R0Sh6TBsQE3sYv8n96gR0Fxgc2pWyJECBCwung1shKyvNo2S2/Q+2/brsRRxmRPVwfbu59XE0VPfBzv0u5uB7usaVOMbbR8sUVYAFAqBLbR8gK/TmIXLlyI3Nxc822dToeEhAQJIyJPUSgEttEiv1PaUGpRQtCeCBHaVi1KG0q91kbL70sbFEpjG62tM+H1j+Od3d0dtwgo3dTxLqtCyTZa5Nf8OokNDg5GcDBPphORPDW2Nrp1XVcFTGlD2hTjVCtvfxzvzC5wRDxw/c1ATBLQ0giExRqvcZeVApBfJ7FERHIWGxrr1nVd4aulDR4jxcfxHe4Ci8CVi8Bb1yTRpgEM/vA9J3KRrFpsXbhwAWVlZSgrKwMAVFdXo6ysDLW1tdIGRkTkARlxGVCHqiHYaZckQIAmVIOMuAyPx+JKaYPfMH0cP+hO4+/eSBRNu8CqdqfYr7taLtW+D6w3BzDIiN4g4lDVGfyr7BQOVZ2B3uBCdweSDVntxB4+fBhZWVnm26Z611mzZmHTpk0SRUVEZFtXD0ApFUrkZ+Yjd38uBAgWu6CmxDYvM88rO5++Vtrg19rvAof2BP41G/jR1mIRgGAcwNB/EndkARSW11m1uIpniyu/JKskdty4cRBF/jRFRL7PXQegshOzsWbcGpvPlZeZ57UaVF8qbQgI1x7Kqj7g/ACGAD/IVVheh9lvl1oVvWibL2L226VYf29GwCeyeoPoN+2/ZJXEEhHJgbsPQGUnZiMrIUvStlam0oaG1gabdbECBKhD1V4pbQg4Ug5gkBG9QcTyjyrsjooQACz/qAK3pmlkm7R1lb/tUsuqJpaIyNd1dAAKAFYXr3Z5bKxSocRwzXBMTJ6I4ZrhXj88ZSptAGBVo+vt0oaA42zrrcbjxl3bAB1JXFx91iI5a08EUNd8EcXVZ+2u8WemXer23yPTLnVheZ1EkXUek1giIjfy1QNQeoMeJdoS7PxuJ0q0JS4n0cBPpQ1xoZaT8NShav9pr+WLTK237BzwM/v0RWDzL4G16QF50KvhvP0EtjPr/ElHu9SAcZdabgfgWE5ARORGvngAyp0DCnyhtCHgOGy9ZYOpY8G0twJqxGxcRIhb1/kTV3ap5TRpjDuxRERu5GsHoEz1ue13h031uXtq9rj8nFKXNgQke623bLqa5BbmB1RpQWZSDOIjQ+zuVwsw1n9mJsV4Myyf4K+71ExiiYjcyJd6u3qqPpckkjYFmFsOzNoBjF3QweJrOhYECKVCwLLJaQCsCy9Mt5dNTgvIQ13+ukvNJJaIyI1cOQDljjpVwH69q6/W51IXmFpvxfV3bn2AdSzISY/H+nszoIm0TMY0kSEB3V7LX3epWRNLRORmzvR2dVedqqPnuaS/5NRzcECBDDnbscDZdX4kJz0et6Zp/KYXqjuYdqlnv11qc6AxIM9dakEMoOkBOp0OkZGRaG5uhkqlkjocIvJz9iZ22esja9qpdfakf0fP8/jgx7Huy3UdPs+bE97EcM1wZ78s8gUGvbELga4Otg96CcaOBnOPcYoXmcmlT6yz+RqTWCIiL9Ib9JiwbYLdj/lNQwMKpxY6PDDlzPPEXRcHCOhwQEFHr0U+qmL71Y4FgM29tQDrTkDOkcPELmfzNdbEEhF5kbvqVJ15nvof63Fn6p0AOKDAL9nrWKDqxQSW7FIqBIzs2wO/uqk3Rvbt4XMJrCtYE0tE5EXu6iPr7PNcH3F9h/W5JGNpU4D+k4xdCC7UG2tgE0exhIACApNYIiIvclcfWVeeZ7hmOAcU+DNTxwKiAMMklojIi0x9ZDuqU+2oj6yrz2MaUEBkwaDnLq6fk0MNbGcxiSUi8iJTH9nc/bkQIFgkoK7UqbrreSiAVWwHCvMA3emfrql6GUfcsp7WL8ilG0Fn8WAXkZ8T9Xq0fFGM5h0fo+WLYoh6TmeSmqmPbFxonMV1daja6fZa7nweCkCmzgbXJrCAsWXX1pnG+0nWCsvrMPvtUosEFgC0zRcx++1SFJbXSRSZ+7DFFpEf0xUVoX7lKlzRas3XgjQaqBcthGr8eAkjI8B+H1mpnocChLnH7Gk7C9hjVu70BhFjVu+zSmBNBBinmH2W9wufLC1wNl9jOQGRn9IVFeHU03OBdj+nXqmvN15/Za3HE1lRr0fr4SO40tiIoNhYhA4bCkHJfxRN3FWnynpXcknNQQcJLACIgO6UcR0PjMlScfVZuwksYOwqXNd8EcXVZzGybw/vBeZmTGKJ/JCo16N+5SqrBNZ4pwgIAupXrkLELbd4LKnkLjCRj7pgv79wp9aRz2k4bz+B7cw6X8WaWCI/1Hr4iEXyaEUUcUWrRevhIx55fdMucPsYTLvAuqIij7wuETkhXO3edeRz4iJCnFp38n+tHo7Es5jEEvmhK43ONcJ3dp0rOtwFBlC/chUPmBFJJXGUseYV9mohBUDV27iOZCkzKQYaVXCH694tqYXeIN+jUUxiifxQUKxzjfCdXecKqXeBiagDCqWxjRYA60T26u2cAh7qkjGlQsCvM6/vcJ2pLlaumMQS+aHQYUMRpNEAgp2dFkFAkEaD0GFD3f7aUu4CE/ktgx6oPgAce8/4u6GLn2SkTQGmvQWo2vUKVfUyXmefWNnr0zPMqXVyrovlwS4iPyQolVAvWmjsQiAIlh/tX01s1YsWeuRQl5S7wER+yVNDCdKmAP0ncWKXjLgyfcvZulhn1/kiJrFEfko1fjzwylrrDgFqtUc7BJh2ga/U19uuixUEBKnVHtkFJvI7pqEE7UcLm4YSdHXXVKFkGy2ZcHX6VmZSDOIjQ6BtvmhjMPVPvWIzk2I8F7SHcdgBkZ+ToleruUctYHMXuLcXetQSyR6HEtBVpulb7RM20x7s+nszbCaypscBlj8GdfQ4qTmbr7EmlsjPCUolwkZkIvKXkxA2ItMrwwZU48ej9ytrEaS2bNETpFYzgSVylitDCchv6Q0iln9UYXM31XRt+UcVNrsM5KTHY/29GdBEWpYMaCJDfDaBdQXLCYjII1TjxyPills4sYuosziUwK+4Us96ra5O38pJj8etaZpOvbavYxJLTjMYRNRVNqFF14YwVTDiU6Kg8IM/BOQ5pl1gIuoEDiXwG7bqWWPCuuGFX6Vj4o29HD7WHdO3lApB1uNl7WESS06pOtqAA1sq0dLUZr4WFhWMsdNT0HdInISRERH5KdNQAl0drA52ATDXxHIogU+zV896tuUyHv/7UTz6QxMWTkyz+/hA6DLQWayJpQ5VHW1A4YZyiwQWAFqa2lC4oRxVRxskioyIyI9xKIHsOapnNdnwaTV2flVn935TlwEH89UQL/MuA53FJJYcMhhEHNhS6XDNZ1srYZDx2DoiIp/FoQSy1lE9q8nSf5XbHf+qVAhYNtm4U2vnRxksm5zmFzWurmI5ATlUV9lktQPb3oVzbairbELvftFeikqepGh1Rf5Fb9CjtKEUja2NiA2NRUZcBpTchfN/HEogW87Ws55puWT3YBbwU5eB9nW1Ggd9YgMBk1hyqEXnOIF1dV2g0hUVWQ8d0Gg8OnSA/Muemj0oKC5AfetPJ9HVoWrkZ+YjOzFbwsjIKziUQJZcqVO1lfC272jwnwVZOFJzzu+6DHQWk1hyKEwV7NZ1gcjc+L/dXJEr9fXG6+ybSh3YU7MHuftzIbarrGtobUDu/lysGbeGiay/Mui5AytjmUkxiAnrhrMtlztc2z7hdTSh61c39XZ7rHLEmlhyKD4lCmFRjhPU8Ghjuy2yJur1qF+5yvb41avX6leugqjXezkykgu9QY+C4gKrBBaA+drq4tXQG/j/kN+p2G6c2LX5l8C2B42/r003XidZUCoEvPCr9A7XtT+YZepo0L6eVtt8EbPfLkVhuf2DYIGESSw5pFAIGDs9xeGaMdNS2C/WjtbDRyxKCKyIIq5otWg9fMR7QZGslDaUWpQQtCdChLZVi9KGUi9GRR5XsR3YOtN6YpeuznidiaxsTLyxFx79eZLd+wVYHszqyoSuQMMkljrUd0gcch5Nt9qRDY8ORs6j6ewT68CVxka3rqPA09jq3P8bzq4jGTDogcI82O4Ne/VaYb5xHcnCwolp+NNvMhAT1t3ieryN8a+uTOgKdKyJJaf0HRKHpMGxnNjloqDYWLeuo8ATG+rc/xvOriMZqDlovQNrQQR0p4zreNhLNibeGI8J6R2Pf91d4eDTu2s42/nAnzGJJacpFALbaLkodNhQBGk0uFJfb7suVhAQpFYjdNhQ7wdHbueJFlgZcRlQh6rR0Npgsy5WgAB1qBoZcRldeh3yIRfsl490ah35jI7Gv+oNIj4sc/QDzE8CcUJXe0xiiTxIUCqhXrTQ2IVAECwTWcH407d60UKP9ItlX1rv8lQLLKVCifzMfOTuz4UAwSKRFa62Os/LzGO/WH8SrnbvOpIFvUHEpv+rxtmWSx2ujQnrFpATutpjTSyRh6nGj0fvV9YiSG35D06QWo3eHmqvpSsqwolbslE7axZOP/MMamfNwolbsqErKnL7a9FPLbDaH8AytcDaU7OnS8+fnZiNNePWIC7Usv5cHapmey1/lDjKOJHL0aBRVW/jOvILheV1GLN6H3738TdOrf9/N/UO6P6wJoIo2vqM0z/pdDpERkaiubkZKpVK6nAowHhrZ9ReX1rTzq+nEudApTfoMWHbBLsdBEwf9xdOLezybikndgUQU3cCAJYHvK4mLhw56zdM7bRcScb+8fDNDssS5M7ZfM3lndg//elPyM7OxrRp07B3716L+/73v/8hOTnZ9WiJAoCgVCJsRCYifzkJYSMyPVZCwL603uXNFlhKhRLDNcMxMXkihmuGM4H1Z2lTjImqqt04UVUvJrB+xFE7LVsEWPeUDWQuJbGvvvoqFixYgP79+yM4OBgTJ07EqlWrzPfr9XrU1NS4PUgicg770nofW2CRx6RNAeaWA7N2AFPfMP4+9xgTWD/SUTut9kQASycNYCnBVS4d7NqwYQNef/11/OY3vwEAzJ49G7fffjt+/PFHPP/88x4JkIicx7603scWWK5hSYSLFEq20fJjnWmT9buPv4FCIVj0lg1ULiWx1dXVGDXqp0LyUaNGYd++fcjOzsbly5cxd+5cd8dHRC5gX1rvYwss53mqgwORXHWmTZZp9Gz7IQmByKVygp49e+L777+3uJaeno59+/Zh48aNePbZZ90aHFkzGESc+vYc/luixalvz8HAsXN0DVNfWtMhLiuCgCCNhn1p3cjUAgv4qeWVCVtg/cTTHRyI5CgzKQbxkSF2+1DYwtGzP3EpiR0zZgzef/99q+tpaWnYu3cv/v3vf7stMLJWdbQBby06iA9fPordb1Tgw5eP4q1FB1F1tEHq0MhHmPrSGm+0+2vRw31pAxlbYDmmN+hRUFxgc6fadG118WroOUaVAoxSIWDZ5DQA9huq2cLRs0YulRPk5+fjyBHbB0IGDhyIffv2Ydu2bW4JjCxVHW1A4YZyq+stTW0o3FCOnEfT0XdInI1HUqBRjR8PvLIW9StXWRzyClKroV60kO21PCQ7MRtZCVms97TBlQ4OwzXDvRgZkfRy0uOx/t4M5L9/DE2tl116bKCPnnUpib3xxhtx44032r0/PT0d6enpXQ7KHxgMIuoqm9Cia0OYKhjxKVFQdPI0ocEg4sCWSodrPttaiaTBsZ1+DfIvqvHjEXHLLZzY5WWmFlhkiR0ciDrW7GICC3D0bKfGzlZWVuJf//oXTp48CUEQkJSUhNtvv509Yq+qOtqAA1sq0dLUZr4WFhWMsdNTOrVbWlfZZPFctlw414a6yib07hft8vOTfzL1pSWSWsB3cDDogZqDwIV646jYxFHGrgNEcL1XLGAsPdCwX6zrSeyqVavw29/+FgaDAXFxcRBFEY2NjcjPz8fKlSvxzDPPeCJO2fDEx/4tOscJrKvryHd4a4oXkZQCuoNDxXagMA/Qnf7pmqoXkLOa/V4JgOu9Yk2fty6bnBbw/WJdOtj1ySefYMmSJVi8eDH+97//oa6uDlqt1pzE5ufn49NPP/VUrD7P2Y/9Xe0oEKYKdus68g26oiKcuCUbtbNm4fQzz6B21iycuCUbuqIiqUMjD9Mb9CjRlmDndztRoi2R7ECTt+II2A4OptGx1yawAKCrM16v2C5NXORTXK1r1USGsL3WVYIo2ppPadv06dMRFRWFDRs22Lz/kUcewfnz5/GPf/zDbQG6k7OzeDvr1Lfn8OHLRztcd/u8IS597G8wiHhr0UGHJQXh0cGYsWIUa2JlQldUhFNPz7UeD3u1g0DvV9byAJaf8pVeqVLEYes1NaEa5GXm+V8HB4MeWJtuncBeS9XbOIHL35J3csmhqjP49eufO7V26aQBuG90kt/vwDqbr7m0E1tcXIwZM2bYvX/GjBn4/HPn3gh/5KmP/RUKAWOnpzhcM2ZaChNYmRD1etSvXGWdwALma/UrV0HUs92Qv/GVXqlSxZGdmI1dU3fhzQlvYvXY1XhzwpsonFrofwksYKyBdZTAAoDulHEdBbTMpBhEXdfNqbU9I4L9PoF1hUtJbH19Pfr06WP3/qSkJGgdzW33c5782L/vkDjkPJqOsCjLx4ZHB7O9lsy0Hj5i0frKiijiilaL1sO229mRPPlKr1Sp4zB1cJiYPBHDNcP9r4TA5Hyde9eR31IqBNw/uo9TawO9G0F7Lh3sunjxIrp37273/m7duuHSpUtdDkqu4lOiEBYV3OHH/vEpUZ16/r5D4pA0ONZtrbtIGlcanWsj5Ow6kgdf6ZXqK3H4vRYn//w6u478it4gorj6LBrOX0RcRAhmj7sBGw+etNsnlt0IbHO5O8Ff//pXhIeH27zv/PnzXQ5Izkwf+9vqTmDS1Y/9FQqBbbRkLijWuTZCzq4jefCVXqm+EoffC3Pyz6+z6+SIrcVsKiyvw/KPKiw6EsRHhmD6sJ/hL59WW31Gwm4E9rmUxF5//fV4/fXXHa5JTEzsUkByZ/rYv32f2PDoYIyZ1rk+seRfQocNRZBGgyv19bbrYgUBQWo1QocN9X5w1CG9Qd+pqVy+0ivVV+LwexFOnhx3dt215JAcsrWYTYXldZj9dqlVoqptvoi/fFqNR36ehO1f1lkkuJrIECybnMZuBDa4lMSePHnS4f0//PADnn/++a7E4xf4sT85IiiVUC9aaOxOIAiWiezV7gTqRQvZL9YHdeVEv6/0SnU1js4m7QEvcZQxaeuoO0HiKNeeVw7Joam1WPv/v0ytxaa95TuxepGjoQYijDuu27+sw38WZOFIzTlzqUFmUgx3YO1w6WBXR86cOYM33njDnU8pW6aP/VOHa9C7XzQTWLKgGj8evV9ZiyC12uJ6kFrN9lo+qqsn+n2lV6orceyp2YMJ2ybggV0PIO9AHh7Y9QAmbJvgtS4KsqZQGhNL2Pu7XwByClzbQZVD31mD3phk203VABTmG9cFmI6GGogA6pov4kjNOYzs2wO/uqk3RvbtwQTWAbcmsUTkPNX48bhh7x5cv3kzer30Eq7fvBk37N3DBNYHuetEf3ZiNtaMW4O4UMuyInWoGmvGrfFaqyln4vCVdmCyljbFuOuo6mV5XdXb9d1IuSSHHbYWEwO2tZizQw1cHX4QyFw+2EVE7iMolQgbkSl1GNQBd57oz07MRlZCluQf0TuKo6OkXYCA1cWrkZWQxdKCjqRNAfpP6noNqyvJYdLYLoXcJRfs/znp1Do/4mx7LLbRch6TWCKiDrj7RL+pV6rU7MXBNlxuplB2PbGUS3IYru54jSvr/EhmUgziI0Ogbb5ocz+dbbRc51ISe8cddzi8v6mpqSuxEBH5pEA70c82XD5ILsmh+UBbHWyXPgjG+1090OYHlAoByyanYfbbpRBg+d1hG63OcakmNjIy0uGvxMREzJw501OxEhFJwnSiv/1BKBMBAjShGo93FvCWQEvaZcGUHDo6KNaZbgfuZj7QBljHevW2qwfa/EhOejzW35sBTaRlyYAmMgTr781gGy0XCaJoq1Glf9LpdIiMjERzczNUKpXU4RCRjJgOOgGwqBU1JbbePJjlaXqDHhO2TeiwDVfh1ELWxHqTuXUVYHMfz5daV9lsBdbbmMD6SowSaj+xi220LDmbr8muO8G6devQp08fhISEYMSIESguLpY6JJ9gMIg49e05/LdEi1PfnoPBEDA/mxB5ha90FvAGX2kHRu2Yux20261T9fKtBBYwxjK3HJi1A5j6hvH3ucd8K0YJKRUC22i5gax2Yrds2YKZM2fiz3/+M0aMGIG1a9fin//8J7799lvExXU8Cctfd2KrjjZYTQgLiwrG2OldmxBmMIgc2CAxUa9H6+EjuNLYiKDYWIQOG2oxBKGj+8n9Aqn5v63hDppQDfIy8/wqaZcdOUzsIuoCZ/M1WSWxI0aMwPDhw/HHP/4RAGAwGJCQkIAnn3wS+fn5HT7eH5PYqqMNKNxQbvf+nEfTO5XIeioxJufpiopQv3IVrmi15mtBGg3UixZCNX58h/cTuUMgJe1E5Bv8Lom9dOkSQkND8d577+H22283X581axaamprwr3/9y+oxbW1taGv7KQnT6XRISEjwmyTWYBDx1qKDFolme+HRwZixYpRLO6ieSozJebqiIuNY2vZ/PK+OpY154H6cfXOj3fs59YuIiK4lpzpcZ5NY2fSJ/d///ge9Xg91uzGdarUax48ft/mYVatWYfny5d4ITxJ1lU0OE1gAuHCuDXWVTejdL9qp5zQYRBzYUulwzWdbK5E0OJalBR4i6vWoX7nKOkEFzNfObtxk/35BQP3KVYi45RaWFhAREQrL67D8owqLsbfxkSFYNjlN1h0RZHewyxULFy5Ec3Oz+df3338vdUhu1aJznMC6ug5wLTEmz2g9fMSiRMAmg8H+faKIK1otWg8fcW9gREQkO4XldZj9dqlFAgsA2uaLmP12KQrL6ySKrOtksxPbs2dPKJVK1NdbTiOpr6+HRqOx+Zjg4GAEBwd7IzxJhKmc+9qcXQd4JjEm11xpdE8DeXc9D8kH61eJ6Fp6g4jlH1XYHDshwticbflHFbg1TeOzpQWOyCaJ7d69O4YOHYq9e/eaa2INBgP27t2LJ554QtrgJBKfEoWwqOAOa2LjU6Kcfk5PJMbkmqBY9zSQd9fzkDzY6iQQHRyNJTcvwfg+rI8mCkTF1WetdmCvJQKoa76I4uqzGNm3h/cCcxNZlRPk5ubi9ddfx+bNm/HNN99g9uzZaGlpwf333y91aJJQKASMnZ7icM2YaSku1a6aEmNHXE2MyTWhw4YiSKMxH9KySaGwf78gIEijQeiwoZ4JkHyOaRDDtQksAJxrO4f5/5mPNYfXSBQZEXVEbxBxqOoM/lV2CoeqzkDvxj7vDeftJ7CdWedrZLMTCwDTp09HY2Mjfvvb30Kr1eKmm25CYWGh1WGvQNJ3SBxyHk23aocVHh2MMdNcb4dlSowddSdwNTEm1whKJdSLFhq7EwiC5QEuU3eC++8zdiewc7960UK3HupiP1rfpTfoUVBcYHOylsnGrzcivWc6d2SJfIynD1zFRYR0vMiFdb5GNi223MEf+8SauHMwgcEg4vC/q/HV3h/Q1nrFfL2ziTF1jq/0iWU/Wt9Woi3BA7se6HBddHA0Ppn2CWtkiXyE6cBV+yTM9C/3+nszupzI6g0ixqzeB23zRZs/5goANJEh+CzvFz5VE+t3fWLdwZ+TWHexNeQgOCwIg7MSMHRiH+7AepnUE7s66lfLfrTS2/ndTuQdyHNq7ZsT3sRwzXAPR0REHTEll/bqVd2ZXJqSZQAWiaw7k2V387s+seR59oYctLVcQfGOasT0DuMurJcJSiXCRmR2+v6u6LBfLfvR+oTYUOcP8DW2smMFkS/w5oGrnPR4rL83w6psQeMHfWKZxAY4UxnChaaL+OyfJxyu5ZCDwNJhv9pr+tF6KpGmjmXEZSA6OBrn2s51uNaVhJeIPMfbB65y0uNxa5pGNhO7nMUkNoDZKh1wxNXpXyRvzvaZZT9aaSkVSiy5eQnm/2e+w3WaUA0y4jK8FBUROSLFgSulQpBlGy1HZNViS64MBhGnvj2H/5ZocerbczC4sX1GZ5lKB5xNYE045CBwONtnlv1opTe+z3jcP9B+q0EBAvIy83ioy5cY9ED1AeDYe8bfDXqpIyIvykyKQXxkCOztgwowdinITIqx+xyebM0lF9yJ9TBbu51hUcEYO126U/4Gg4gDWyo79VgOOQgcpn61V+rrbdfFCgKC1Gr2o/URucNykd4zHS98/oJFaYEmVIO8zDxkJ2ZLGB1ZqNgOFOYButM/XVP1AnJWA2lTXHsugx6oOQhcqAfC1UDiKIA/rHSa3iB65SN3pULAsslpmP12KQTYPnC1bHKa3df2dGsuuWB3Ag+yd1DKJOfRdEkS2VPfnsOHLx91+XHh0cGYsWIUa2IDiLk7AWCzHy27E/gejp71IHckjBXbga0zAXuNlaa95Xwi685kmCRJDDvzmt5ozSU1ttiywZtJrMEg4q1FBzscCStFUvjfEi12v1Hh8uOkSrpJWuwT6/tcTVyZ6HaCOxJGgx5Ym275HBYE43POPdZxcuzOZJgkTQxd2f31ZmsuKbHFlsTqKps6rDeV6qCUqyUBHHIgH57oG6saPx4Rt9zCiV0+ak/NHhQUF1iMnFWHqpGfmW+zhMDV9QT7CaOuznjd2YSx5qCDBBbG59edMq5LGmt/mUFvTKhttq8XAQhAYT7QfxJLC5ygN4hY/lGFo+8mln9UgVvTNB4rLXD2wJU3W3PJAZNYD3H2AJQUB6XiU6IQFhXsMMkOCe+GMXelIDyqa9O/yHs8uWPqyX601Hl7avYgd3+u1cjZhtYG5O7PxZpxaywSU1fXE9ybMF6od3y/s+vclQwTAHklht5uzeXr2J3AQ5zd7XTXQSlXOiAoFALGTk9x+Hzj7umHfiM06N0vmgmsDJhqV9v3db1SX49TT8+FrqjIo68v6vVo+aIYzTs+RssXxRD1PGntaXqDHgXFBVYJKQDztdXFq6G/eurd1fV0lSsJY0fC1c69Zkfr3JUMEwB5JYZStObyZdyJ9RBndjvDo427nF3VmQ4IfYfEIefRdKvHsXRAfqSerMWaWWmUNpRalAS0J0KEtlWL0oZSDNcMd3k9XeXOhDFxlLHmVVcH2zu7V2tiE0c5fh53JcMEQF6Joak1l7b5or3/g6DpoDWXP+FOrIc4s9s5ZlpKl3c57fV7bWlqQ+GGclQdbbD72L5D4jBz5SjcPm8Ibn0wDbfPG4IZK0YxgZUZVyZruZvUO8CBzNkRsqZ1rq6nq9yZMCqUxoNgAGDVIfTq7ZyCjssSTMmwoy6jqt4dJ8MEwD09W73F1JoLsPt/kMPWXP6GSawHmXY7w6IsSwbCo4PdctLfmX6vn22t7LC0oHe/aKQOZ+mAXEk1WavDHWAA9StXsbTAQ2JCnPsH1bTO2ZGzHE3bjrsTxrQpxoNgqnYn3VW9nD8g5q5kmADILzHMSY/H+nszoIm03BnWRIb4RXstV7CcwMP6DolD0uBYY7cCXRvCVO47KOXLHRDIe6SarOXKDjAPhbmfIDj3d4hpXUZcBtShajS0NtisixUgQB2q5mja9kwJ49aZgL229K4mjGlTjAfButJz1pQM22z7VcD2Wi4yJYbte7ZqfHSAQE56PG5N03hlMIMvYxLrBabdTnfz5Q4I5D1STdaSageYjM78eMaldUqFEvmZ+cjdnwsBgkUiK1xNxjia1g5PJIwKZdc7B7gjGSYzuSWGrrTm8ldMYmXM2x0QyDO62ttVUCqhXrTQOFlLEGxO1lIvWuj2Q11S7QCTUWfKA7ITs7Fm3BqbfWI5mrYDvpowuiMZJjMmhvLCJFbGvNkBgTzDXSf7VePHA6+stX4utdpjXQKk2gEmo86WB2QnZiMrIYsTuzqDCSORT+HYWZkzdSewh6NifZfpZL9VAnh197T3K2tdTj49MbHLEfPXANjcAe7M10DOMw0vAGCzPIDDC4hIjpzN15jE+gFbfWJ9od+rwSC6fKCtM4+RI1Gvx4lbsu0fjLq6i3nD3j0+P96VfWKt6Q16r+102hojqwnVsDyAiGSLSawN/prEAr6X/HVmAENnHiNXLV8Uo3bWrA7XJWzciPCRN1tc8/ZuqzN8MSZ3czYxtZVUqkPVyM/M91hS6c2kmYjI05jE2uDPSawv6UyJQ6CVRTTv+Binn3mmw3WKyEjE/+55844mdz2l4Wxiavp4v32NKj/eJyJynrP5GocdkFt1ZgCDO4Y2yI2zJ/YNzc3myVecjiUNU2LafmRrQ2sDcvfnYk/NHgDG3dCC4gKbh6xM11YXr4bewOEPRETuwCSW3MqVAQxdeYzcmU72w8mG9fUrV0G7YqVL07FEvR4tXxSjecfHaPmimJOzOsGVxLS0odQq0W2/XtuqRWlDqUfiLNGWYOd3O1GiLWGiTEQBgS22yK06M4AhEIc2WPR27cjVyVfOrDFNx2LZgXu4kpg2tjo31MHZdc6SogaXiMgXcCeW3KozAxgCdWiDavx49H5lLRSRkW57ziuNjSw7cCNXEtPODB/oKmdLHYiI/BGTWHIr0wAGR9oPYOjMY/yFavx49F77stueT9kjBvUrV7lUdkD2uZKYmoYPmA5xtSdAgCZUYzV8oLNYg9sJBj1QfQA49p7xd35viGSNSSy5lUIhYOz0FIdrxkxLsWj/1ZnH+JOwzEzH9bGCgCCNBkq1usM1gOC49OCasgPqmCuJqVKhRH5mvvl6+3UAkJeZ57bWV1LW4MpSxXZgbTqw+ZfAtgeNv69NN14nIlliEktu13dIHHIeTbfaXQ2PDrbbKqszj/EXpvpY4412ydLV2+pFC6FZvKjDNfozZ5x6zSuN7q3L9FeuJqbZidlYM24N4kIt/39Vh6rd3l5LqhpcWarYDmydCehOW17X1RmvM5ElkiUe7CKP6DskDkmDY10awNCZx/gL1fjxwCtrrQ9jqdWWh7E6WNPyRbFTr+dsiy/6KTG1dXjK1lSs7MRsZCVkeXz4gBQ1uLJk0AOFeYCNsgvjNQEozAf6TwI4IIJIVjjsgBzytUlg/s40+epyfT30Z88iKCYGQWq1xQQsR9OxzONs6+tt18XKaJytr/G1qVh6gx4Ttk1AQ2uDzbpYAQLUoWoUTi10e5y+9r1wqPqAsXSgI7N2AEljPR8PEXXI2XyNO7FkVyCNgfUVglIJfXMTGtessdseS1AqETYi0+7jza27BMEykb2m7IAJrOuUCiWGa4ZLHYaZqdQhd38uBAgWiawnanBNZNfS64L9uuFOrSMin8GaWLLJNAa2/RCClqY2FG4oR9XRBoki82/uaI9lat0VpFZbXA9Sq9H7lbXsE+tHvFmDC8i0pVe4uuM1rqwjIp/BcgKyYjCIeGvRQYdTtMKjgzFjxSiWFriRuRTAXncBF0sBHJUdkH/xxsf7pvIFex0RPFm+0CUGvbELga4OtutiBUDVC5h7jDWxRD6C5QTUaa6Mge3dL9pLUfm/1sNHnG6PZa+c4FqOyg7Iv3ij1MGVll6+VHYBhRLIWW3sQgABlons1R/CcwqYwBLJEMsJyEogjoH1Bc62vWJ7LJKCrFt6pU0Bpr0FqOItr6t6Ga+nTZEmLiLqEu7E+jgpugME6hhYqTnb9ortsUgKsm/plTbF2Ear5qDxEFe4GkgcxR1YIhljEuvDpOoOYBoD21FNrD+OgZVS6LChCNJoOmyPFTpsqPeDo4Bnml7WUUsvd43V9QiFkm20iPwIywl8lJTdAQJ9DKxUnJ3c1dXDWaJej5YvitG842O0fFEMUc/58XKlN+hRoi3Bzu92okRbAr3Bc++lt8fqEpFv0BtEHKo6g3+VncKhqjPQG3ynHwC7E/ggX+kOYGsnODw6GGOm+UafWH8dxKArKrKeynVNn1hffW7yLqn6tdp6XU2oxub0MiKSt8LyOiz/qAJ1zRfN1+IjQ7Bschpy0uMdPLJrnM3XmMT6oFPfnsOHLx/tcN3t84Z4vDuAryaK/j6IwRPtsUw9aK1KFa4ORYieNQsRv/gFW3HJgKlfa/uP9U07op7oEXstWU3sIvJDeoOI4uqzaDh/EXERIchMioHSzf82F5bXYfbbpVbFQ6ZXWX9vhscSWSaxNsglif1viRa736jocN2tD6YhdbjGCxH5FlOphT05j6b7RSLrTh32oL0Gd2Z9m2z7tRL5KW8klNfyxu6o3iBizOp9Fq9xLQGAJjIEn+X9wiNfq7P5GmtifRC7A9hnMIg4sKXS4ZrPtlbC4EM1O76gwx6013BlOhh5nyv9WonIswrL6zBm9T78+vXP8fS7Zfj1659jzOp9KCyv89jrzX671Cq51DZfxOy3S932usXVZ+0msICx23Jd80UUV591y+t1FpNYH2TqDuBIoHYHcGUQA/3Epd6yVz+cqV+5ioe+fJCs+7US+RFvJZQmeoOI5R9V2Jw7Z7q2/KMKtxy8ajhvP4HtzDpPYRLrg9gdwD4OYugcl3vLXjMdjHyL7Pu1ypVBD1QfAI69Z/zdg50gyPd5M6E08ebuaFxEiFvXeQr7xPoAW4en+g6JQ86j6T7dHUAKLLXonA570NrB6WDu19VDUX7Rr1VuKrYDhXmA7vRP11S9jONsOe0rILmSUI7s28Mtr+nN3dHMpBjER4ZA23zRZqJuqonNTIrp8mt1BZNYiXV0yj5pcKxPdgeQCgcxdI6pB+2pp+eauxE4g9PB3MsdbbFM/Vpz9+dCgGCRyLJfqwdUbAe2zgTa/1OuqzNe59jagCTFx+3e3B1VKgQsm5yG2W+XQoDl//2mDGTZ5DSPHmBzBssJJCTlQAO5YqlF56nGj0fvV9YiSK3ueLEgIEij4XQwNzK1xWp/KKuhtQG5+3Oxp2aP08+VnZiNNePWIC7U8hMZdaja4+21AopBb9yBdfShcWE+SwsCkBQft5t2R+396ybA2KXAXbujOenxWH9vBjSRll+DJjLEo+21XMEWWxJxZqBBSFg3KIIEtDZfMl/zp16oXeHrgxh8makH7fl9e3Fu81vWC65OB+v9ylq22XITT7XFYr9WD6s+AGz+ZcfrZu3gONsAY2pB1dHH7e5uQWU6TAbY3h31RHLp7RZigPP5GssJJOLMKfuLLZetrpl2aQO9FypLLTpPUCoRNiITYSMyETp0qPUEL7WafWLdzJW2WMM1w51+XqVC6dJ6ctEF++9Zp9aR35Dq43bT7mj7PrEaD07RUioEt9X1uhuTWIl09fT8Z1srkTQ4NqCTNoVC8PjEMk/xxESuzlCNH4+IW27xiVj8GdtiyVS4E6U3rqwjvyJFQml63VvTNF7fHfVFTGIl0tXT86ZeqHJN4gKZrqjIevdTwilZpp1Z8hy2xZKpxFHGLgS6OtiuixWM9yeO8nZk5COkSih9eXfUm3iwSyLODDToCHuhyo+uqAinnp5rNT2LU7L8m6ktlmDnSIYAAZpQDdti+RqF0thGCwCs3rurt3MKjOsoYJkSyl/d1Bsj+/YIyB1RqTCJlYgzp+w7wl6o8iLq9ahfucp2eytOyfJrprZYAKwSWbbF8nFpU4xttFTtPhpW9WJ7LSKJMYmVkGmgQfsd2fDoYASHOq70YC9U+Wk9fMRqB9YCp2T5NbbFkrG0KcDccmMXgqlvGH+fe4wJLJHEWBMrMXun7Ku/bEThhnK7j2MvVPlxdvoVp2T5r+zEbGQlZHW5LRZba0lAoWQbLSIfwyTWB9g6Ze8PY2dtjdMN5MTb2elXnJLl37raFssdU7+IiPwBhx34OLkmgh2N0w1Eol6PE7dk40p9ve26WEFAkFqNG/buYYsrssk09Utsd1LeVFfLsgQi8gfO5musifVxpl3a1OEa9O4XLZsEluN0rQlKJdSLFl690e59vHpbvWghE1iySW/Qo6C4wCqBBWC+trp4NfQcgUpEAYJJLLmVwSDiwJZKh2s+21oJgyFgPgCwoBo/Hr1fWYsgtWVz9CC1mmNeySFXpn4REQUC1sSSWzkzTjfQBzVwShZ1Bqd+ERFZYhLrJ3yldtbZAQyBPqiBU7LIVZz6RURkiUmsH/ClQ1TODmDgoAYi15imfjW0NtisixUgQB2q5tQvIgoYrImVOV87ROXMOF0OaiByHad+ERFZYhIrY754iMqZcboc1EDUOZz6RUT0E5YTyJivHqLyh0ENRL7KXVO/iIjkjkmsjPnyISp743S5A0vUdV2d+kUyZtADNQeBC/VAuBpIHGUciUsUgGSTxK5YsQIff/wxysrK0L17dzQ1NUkdkuR8/RCVrXG6RETUSRXbgcI8QHf6p2uqXkDOaiBtinRxEUlENjWxly5dwl133YXZs2dLHYrP4CEqIqIAUbEd2DrTMoEFAF2d8XrFdmniIpKQbJLY5cuXY968eRg0aJDUofgMHqIiIgoABr1xB9ZGazXztcJ84zqiACKbJLYz2traoNPpLH75G9MhqvY7suHRwch5NJ2HqIiI5K7moPUOrAUR0J0yriMKILKpie2MVatWYfny5VKH4XE8REVSE/V6jtEl8pQL9e5dR7KiN4gorj6LhvMXERcRgsykGCj57zsAiZPY/Px8rF692uGab775Bv379+/U8y9cuBC5ubnm2zqdDgkJCZ16Ll/HQ1QkFV1REepXrsIVrdZ8LUijgXrRQqjGj5cwMmnpDXq2wSL3CFe7dx3JRmF5HZZ/VIG65ovma/GRIVg2OQ056fESRuYbJE1i58+fj/vuu8/hmuTk5E4/f3BwMIKDOd6UyFN0RUU49fRcQLSs1btSX2+8/sragExk99TsQUFxAepbf9oZU4eqkZ+Zz4EE5LrEUcYuBLo62K6LFYz3J47ydmTkQYXldZj9dqnVO65tvojZb5di/b0ZAZ/ISprExsbGIjY2VsoQiKiTRL0e9StXWSWwxjtFQBBQv3IVIm65JaBKC/bU7EHu/lyI7f7paWhtQO7+XE7WItcplMY2WltnAhBgmche/Vg5p4D9Yv2I3iBi+UcVdo/yCQCWf1SBW9M0AV1aIJuDXbW1tSgrK0NtbS30ej3KyspQVlaGCxcuSB0awTgC99S35/DfEi1OfXvOq6NuSRqth49YlBBYEUVc0WrReviI94KSmN6gR0FxgVUCC8B8bXXxauh5ipxclTYFmPYWoGq386bqZbzOPrF+pbj6rEUJQXsigLrmiyiuPuu9oHyQbA52/fa3v8XmzZvNt4cMGQIA+OSTTzBu3DiJoiIAqDraYDViNiwqGGOnc8SsK+R2OOpKY6Nb1/mD0oZSixKC9kSI0LZqUdpQyolb5Lq0KUD/SZzYFQAazttPYDuzzl/JJondtGkTNm3aJHUY1E7V0QYUbii3ut7S1IbCDeVs8+UkOR6OCnKyFMjZdf6gsdW5hN3ZdURWFEogaazUUZCHxUWEuHWdv5JNOQH5HoNBxIEtlQ7XfLa1kqUFHTAdjmr/0bzpcJSuqEiiyBwLHTYUQRoNINipxxIEBGk0CB021LuBSSg21LmE3dl1rtAb9CjRlmDndztRoi1hyQKRjGUmxSA+MgT2ql0FGLsUZCbFeDMsn8MkljqtrrLJooTAlgvn2lBX2eSdgGSow8NRAOpXroKo972ERFAqoV608OqNdn/VXr2tXrTQp0si3C0jLgPqUDUEO//0CBCgCdUgIy7Dra+7p2YPJmybgAd2PYC8A3l4YNcDmLBtAvbU7HHr6xCRdygVApZNTgMAq79NTLeXTU4L6ENdAJNY6oIWneME1tV1gUjuh6NU48ej9ytrEaS27E8ZpFajdwC211IqlMjPzAcAq0TWdDsvM8+t/WJN3RDa1+KauiEwkSWSp5z0eKy/NwOaSMuSAU1kCNtrXSWbmljyPWEq53rwOrsuEPnD4SjV+PGIuOUWWR1K86TsxGysGbfGZp/YvMw8t7bX6qgbggABq4tXIyshi4MWKGDJeeJVTno8bk3TyDZ+T2MSS50WnxKFsKhghyUF4dHGEbhkm1SHo9zdCUFQKhE2ItONEcpbdmI2shKyPD6xi90QiBzzh4lXSoWAkX17SB2GT2ISS52mUAgYOz3FZncCkzHTUqDgT4x2mQ5HXamvt10XKwgIUqvdejhKjp0Q5EipUHo8cWQ3BCL7OPHK/7Emlrqk75A45DyajrAoy5KB8OhgttdygrcPR8m1EwLZJmU3BCJf1tHEK8A48UrP7jmyxp1Y6rK+Q+KQNDjW2K1A14YwlbGEgDuwzlGNHw+8stZ6d1StduvuKMfE+h9TN4SG1gabdbECBKhD1W7vhkBdYNBzWIEXuDLxih/VyxeTWHILhUJA737RUochW944HOVKJwTWt8qDqRtC7v5cCBAsEllPdUOgLqjYDhTmAbrTP11T9QJyVnNsrJtx4lVgYDkBkY8wHY6K/OUkhI3IdPtuqD90QiBrpm4IcaGWpTvqUDXWjFvj1m4I1AUV24GtMy0TWADQ1RmvV2yXJi4/5SsTr/QGEYeqzuBfZadwqOoMyxfcjDuxRAGCY2L9l7e6IVAnGfTGHVi7FZoCUJgP9J/E0gI3MU280jZftPldF2Dst+rJiVf+0BnB13EnlihAcEysfzN1Q5iYPBHDNcOZwPqSmoPWO7AWREB3yriO3ELqiVemzgjt63JNnREKy+s88rqBhkksUYDgmFgiiVyw38u3U+vIKVJNvGJnBO9hOQFRAPFWJwQiuka4uuM1rqwjp+Wkx+MX/dX426GTqDnbisSYUMwY2Qfdgzy3h8fOCN7DJJYowHBMLJGXJY4ydiHQ1cF2XaxgvD9xlLcj83u26lL/+lm1R+tS2RnBe5jEBiCDQWRP1wDHMbHS0Bv0PHwViBRKYxutrTNhrMi8NpG9+ndvTgEPdbmZVBO7fKUzQiBgEhtgqo424MCWSrQ0tZmvhUUFY+z0FE7XIvKgPTV7UFBcgPrWn+oe1aFq5Gfmsw1WIEibAkx7y06f2AL2iXWzjupSBRjrUm9N07j9cJcvdEYIFIIo2hrf4590Oh0iIyPR3NwMlUoldTheV3W0AYUbyu3ezzGxvk3U61kCIFN7avYgd3+u1VQt00AC9nMNIJzY5RWHqs7g169/3uG6fzx8c5fqUvUGEcXVZ9Fw/iLiIoyJqVIhmHeBAZv77h49WOYPnM3XuBMbIAwGEQe2VDpc89nWSiQNjmVpgQ/SFRVZH8bSaHgYSwb0Bj0KigtsjoUVIUKAgNXFq5GVkMXSgkCgUAJJY6WOwu95oy61oz6w6+/NsLpfwz6xbsUkNkDUVTZZlBDYcuFcG+oqmzg+1sfoiopw6um5QLsPTa7U1xuvv7KWiawPK20otSghaE+ECG2rFqUNpRiuGe7FyIj8l6frUp2tt701TWNzp5bcg31iA0SLznEC6+o68g5Rr0f9ylVWCazxTuO1+pWrIOr1Xo6MnNXY6twYX2fXEVHHTHWp9tJFAcZd087UpbrSB1apEDCybw/86qbeGNm3BxNYN2MSGyDCVMFuXUfe0Xr4iEUJgRVRxBWtFq2Hj3gvKHJJbKhzY3ydXUdEHfPkxC5X+sCSZzGJDRDxKVEIi3KcoIZHG9ttke+40ujc7pyz68j7MuIyoA5Vmw9xtSdAgCZUg4y4DC9HRuTfPDWxi31gfQdrYgOEQiFg7PQUh90JxkxL4aEuHxMU69zunLPryPuUCiXyM/ORuz8XAgSLA16mxDYvM4+Huog8wBN1qewD6zu4ExtA+g6JQ86j6VY7suHRwWyv5aNChw1FkEYDCHb+whUEBGk0CB021LuBkUuyE7OxZtwaxIVa/hlTh6rZXovIw9xdl+pMvW2PsO7QNv+IQ1VnoDcETCdTr2Of2ADEiV3yYu5OAFge8Lqa2PZmdwLZ4MSuAOVLvWF9KRYZs9cH1pZ4ttVymbP5GpNYIhlgn1gimarYbmdK12rvT+nypVj8gK0+sbZwwIHrmMTa4ItJLHdFyVmc2EXewh1jN6nYDmydCeu9uqt/x097y3vJoy/F4kdME7u0uov43Y6vcbblss11plGzn+X9gm22nMCJXTJQdbQBB7ZUWgwhCIsKxtjpKaxPJSuCUomwEZlSh0F+bk/NHhQUF1gMaFCHqpGfmc/aXVcY9MZdT7vdRAWgMB/oP8nzH+f7Uix+xlRve6jqjN0EFrBsu9WVMbdkiQe7JFJ1tAGFG8qtpmi1NLWhcEM5qo42SBQZEQWqPTV7kLs/12rCWENrA3L352JPzR6JIpOhmoOWH9tbEQHdKeO6QIrFT7HtljSYxErAYBBxYEulwzWfba2EgScaichL9AY9CooLLFqAmZiurS5eDb2B0+GccsH+qGGX1hn0QPUB4Nh7xt878/13VyxkF9tuSYPlBBKoq2yy2oFt78K5NtRVNqF3v2gvRUVEvkKKmtTShlKrHdhriRChbdWitKEUwzXDPRqLXwhXd32duw5iuSMWcsjUdkvbfNFm0YapJrYzY27JPiaxEmjROU5gXV1HRP5DqprUxlbnpr45uy7gJY4yJpy6OtiuRRWM9yeOsv14ewexdHXG664cxOpqLNQh05jb2W+XQoDld7mrY27JPpYTSCBM5Xj8q6vriMg/SFmTGhvq3NQ3Z9cFPIXSuGMKAFZt8a/ezimwfZCqw4NYMB7Ecra0oCuxkNM8NeaW7ONOrATiU6IQFhXssKQgPNrYbouIAkNHNakCBKwuXo2shCyPlBZkxGVAHapGQ2uDzRgECFCHqpERl+H21/ZbaVOMO6Y2SwIK7O+kunIQK2msZ2Mhl3hizC3ZxyRWAgqFgLHTU1C4odzumjHTUtgvliiASF2TqlQokZ+Zj9z9uRAgWCSywtXdurzMPPaLdVXaFGPrKlemZHnqIFZnYiGXmdpukecxiZVI3yFxyHk03apPbHh0MMZMY59YokDjCzWp2YnZWDNujc2a3LzMPPaJ7SyF0vkdU8CzB7FcjYXIhzGJlVDfIXFIGhzLiV1E5DM1qdmJ2chKyOLELinxIBaRU5jESkyhENhGi4h8qiZVqVCyjZaUTAexts4E7J1150EsInYnICLyBaaaVOCnGlQT1qQGINNBLFW7E+2qXq611yLyY4IoigEzFkqn0yEyMhLNzc1QqVRSh+MXDAaR5RBEbmSrT6wmVMOa1EBl0PMgFgUcZ/M1JrHUaVVHG6wOpoVFBWPsdB5MI+oKKSZ2ERH5CiaxNjCJdZ+qow0OW4TlPJrORJaIiIhc5my+xppYcpnBIOLAlkqHaz7bWgmDIWB+PiIiInIrvUHEoaoz+FfZKRyqOgM9/021wu4E5LK6yiaH08YA4MK5NtRVNrHzAhERkYsKy+uw/KMK1DVfNF+LjwzBsslpHF97De7EkstadI4TWFfXERERkVFheR1mv11qkcACgLb5Ima/XYrC8jqJIvM9TGLJZWGqYLeuIyIiImMJwfKPKmyOuDBdW/5RBUsLrmISSy6LT4lCWJTjBDU82thui4iIiJxTXH3Wagf2WiKAuuaLKK4+672gfBiTWHKZQiFg7PQUh2vGTEthv1giomsZ9ED1AeDYe8bfDXqpIyIf03DefgLbmXX+jge7qFP6DolDzqPpVn1iw6ODMWYa+8QSEVmo2A4U5gG60z9dU/Uyjpfl9C26Ki4ixK3r/B2TWOq0vkPikDQ4lhO7iIgcqdgObJ0JtK901NUZr3OMLF2VmRSD+MgQaJsv2qyLFQBoIkOQmRTj7dB8EssJqEsUCgG9+0UjdbgGvftFM4ElIrqWQW/cgXV0VKcwn6UFBABQKgQsm5wGwJiwXst0e9nkNCj5by0AJrFERESeU3PQsoTAigjoThnXEQHISY/H+nszoIm0LBnQRIZg/b0Z7BN7DZYTEBERecqFeveukwOD3piUX6gHwtVA4ihAoZQ6KlnJSY/HrWkaFFefRcP5i4iLMJYQcAfWEpNYIiIiTwlXu3edr+MBNrdRKgSM7NtD6jB8GssJiIiIPCVxlDGJs6pwNBEAVW/jOrkzHWBrXz5hOsBWsV2auMhvMYklIiLyFIXSuAsJwO5RnZwC+X/czgNsJAEmsV5gMIg49e05/LdEi1PfnoOB4+KIiAJH2hRjGy1VuwM5ql7+016LB9hIAqyJ9bCqow1WAwHCooIxdjoHAhARBYy0KUD/Sf574CkQD7CR5JjEelDV0QYUbii3ut7S1IbCDeXIeTSdiSwRUaBQKIGksVJH4RmBdoCNfALLCTzEYBBxYEulwzWfba1kaQEREclfIB1gI5/BJNZD6iqbLEoIbLlwrg11lU3eCYiIiMhTAuUAG/kUJrEe0qJznMC6uo6IiMinBcIBNvIprIn1kDBVsFvXERER+Tx/P8BGPoVJrIfEp0QhLCrYYUlBeHQw4lOivBcUERGRp/nzATbyKSwn8BCFQsDY6SkO14yZlgIF5yATERERuYxJrAf1HRKHnEfTERZlWTIQHh3M9lpEREREXSCLcoKTJ0/id7/7Hfbt2wetVotevXrh3nvvxeLFi9G9e3epw3Oo75A4JA2ONXYr0LUhTGUsIeAOLBEREVHnySKJPX78OAwGAzZs2IAbbrgB5eXlePjhh9HS0oKXXnpJ6vA6pFAI6N0vWuowiIiIiPyGIIqiLLvtv/jii1i/fj2+++47px+j0+kQGRmJ5uZmqFQqD0ZHRERERJ3hbL4mi51YW5qbmxETE+NwTVtbG9rafuoOoNPpPB0WEREREXmBLA92nThxAq+99hoeffRRh+tWrVqFyMhI86+EhAQvRUhEREREniRpEpufnw9BEBz+On78uMVjTp06hZycHNx11114+OGHHT7/woUL0dzcbP71/fffe/LLISIiIiIvkbQmtrGxEWfOnHG4Jjk52dyB4PTp0xg3bhxuvvlmbNq0CQqFazk4a2KJiIiIfJssamJjY2MRGxvr1NpTp04hKysLQ4cOxcaNG11OYImIiIjIf8jiYNepU6cwbtw4JCYm4qWXXkJjY6P5Po1GI2FkRERERCQFWSSxu3fvxokTJ3DixAn87Gc/s7hPph3CiIiIiKgLZPGZ/H333QdRFG3+IiIiIqLAI4skloiIiIjoWkxiiYiIiEh2mMQSERERkewwiSUiIiIi2WESS0RERESywySWiIiIiGSHSSwRERERyQ6TWCIiIiKSHSaxRERERCQ7TGKJiIiISHaYxBIRERGR7DCJJSIiIiLZYRJLRERERLLDJJaIiIiIZIdJLBERERHJDpNYIiIiIpIdJrFEREREJDtBUgdAPzEYRNRVNqFF14YwVTDiU6KgUAhSh0VERETkc5jE+oiqow04sKUSLU1t5mthUcEYOz0FfYfESRgZERERke9hOYEPqDragMIN5RYJLAC0NLWhcEM5qo42SBQZERERkW9iEisxg0HEgS2VDtd8trUSBoPopYiIiIiIfB+TWInVVTZZ7cC2d+FcG+oqm7wTEBEREZEMsCZWYi06xwmsq+uIiIio8/QGEcXVZ9Fw/iLiIkKQmRQDJQ9Z+yQmsRILUwW7dR0RERF1TmF5HZZ/VIG65ovma/GRIVg2OQ056fESRka2sJxAYvEpUQiLcpyghkcb220RERGRZxSW12H226UWCSwAaJsvYvbbpSgsr5MoMrKHSazEFAoBY6enOFwzZloK+8USERF5iN4gYvlHFbB1hNp0bflHFdDzkLVPYRLrA/oOiUPOo+lWO7Lh0cHIeTSdfWKJiIg8qLj6rNUO7LVEAHXNF1FcfdZ7QVGHWBPrI/oOiUPS4FhO7CIiIvKyhvP2E9jOrCPvYBLrQxQKAb37RUsdBhERUUCJiwhx6zryDpYTEBERUUDLTIpBfGQI7H32KcDYpSAzKcabYVEHmMQSERFRQFMqBCybnAYAVoms6fayyWnsF+tjmMQSERFRwMtJj8f6ezOgibQsGdBEhmD9vRnsE+uDWBNLREREBGMie2uahhO7ZIJJLBEREdFVSoWAkX17SB0GOYHlBEREREQkO0xiiYiIiEh2mMQSERERkewwiSUiIiIi2WESS0RERESywySWiIiIiGSHSSwRERERyQ6TWCIiIiKSHSaxRERERCQ7TGKJiIiISHaYxBIRERGR7DCJJSIiIiLZYRJLRERERLITJHUA3iSKIgBAp9NJHAkRERER2WLK00x5mz0BlcSeP38eAJCQkCBxJERERETkyPnz5xEZGWn3fkHsKM31IwaDAadPn0ZERAQEQXDpsTqdDgkJCfj++++hUqk8FCG5A98r+eB7JR98r+SD75V88L2yTRRFnD9/Hr169YJCYb/yNaB2YhUKBX72s5916TlUKhX/R5MJvlfywfdKPvheyQffK/nge2XN0Q6sCQ92EREREZHsMIklIiIiItlhEuuk4OBgLFu2DMHBwVKHQh3geyUffK/kg++VfPC9kg++V10TUAe7iIiIiMg/cCeWiIiIiGSHSSwRERERyQ6TWCIiIiKSHSaxRERERCQ7TGI7cPLkSTz44INISkrCddddh759+2LZsmW4dOmSxRpBEKx+ff755xJGHnicea8A4KuvvsLYsWMREhKChIQE/P73v5co4sC2YsUKjBo1CqGhoYiKirK5xtafq3fffde7gZJT71VtbS0mTZqE0NBQxMXFYcGCBbhy5Yp3AyWb+vTpY/XnqKCgQOqwCMC6devQp08fhISEYMSIESguLpY6JFkJqIldnXH8+HEYDAZs2LABN9xwA8rLy/Hwww+jpaUFL730ksXaPXv2YODAgebbPXr08Ha4Ac2Z90qn02H8+PHIzs7Gn//8Zxw7dgwPPPAAoqKi8Mgjj0j8FQSWS5cu4a677sLIkSPxxhtv2F23ceNG5OTkmG/bS6LIczp6r/R6PSZNmgSNRoODBw+irq4OM2fORLdu3bBy5UoJIqb2nn/+eTz88MPm2xERERJGQwCwZcsW5Obm4s9//jNGjBiBtWvXYsKECfj2228RFxcndXjyIJLLfv/734tJ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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_lda_projection(X_test_lda, y_test, \"LDA Projection\")\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/README.md b/README.md index c1e8359..ea0dbce 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,69 @@ -# Project 1 +# README -Put your README here. Answer the following questions. +## Overview -* What does the model you have implemented do and when should it be used? -* How did you test your model to determine if it is working reasonably correctly? -* What parameters have you exposed to users of your implementation in order to tune performance? (Also perhaps provide some basic usage examples.) -* Are there specific inputs that your implementation has trouble with? Given more time, could you work around these or is it fundamental? +This project implements a Linear Discriminant Analysis (LDA) model for dimensionality reduction and classification. The model projects high-dimensional data into a lower-dimensional space, maximizing the distance between classes. It is particularly useful for visualizing data with a reduced number of features. + +### When to Use the Model + +- **Classification Tasks**: Suitable for classifying data into different classes. +- **Multivariate Normal Distribution Assumption**: Effective when data for each class follows a normal distribution. +- **Dimensionality Reduction**: Reduces data to lower dimensions while maintaining class separability. + +## Running the Program + +### Step 1: Generate the Data + +To generate synthetic data, use the following command: +bash +py .\testDataGenerator.py -N -f -c -seed 10000 -output_file generated_data.csv + + +Example: + +bash +py .\testDataGenerator.py -N 150 -f 8 -c 5 -seed 10000 -output_file generated_data.csv + + +### Step 2: Run the Program + +Execute the final LDA model with: + +bash +python final + + +## Model Testing + +### Step 1: Training on Available Dataset (Iris) + +- Initially, the model was built using the Iris dataset, a common classification problem involving classifying flowers into one of three different iris species. + +### Step 2: Generated Data + +- The model was tested using synthetic data generated from `data_generator.py`, allowing for testing under various conditions with variable classes, samples, and features. + +### Step 3: Manual Train-Test Split + +- Data is split into training and test sets to evaluate performance, preventing overfitting and ensuring accurate training. + +### Step 4: Accuracy Calculation + +- The model’s predicted classes are compared against the true classes to calculate accuracy. + +## User-Exposed Parameters + +Users can adjust the following parameters to tune model performance: + +- **nComponents**: Number of components to keep in LDA, controlling dimensionality reduction. +- **Regularization**: Adds regularization to the within-scatter matrix, preventing overfitting in high-dimensional data. +- **Solver**: Allows choice of eigenvalue computation method, introducing flexibility. +- **Test Size**: Determines the percentage of data allocated for testing. +- **Random State**: Ensures reproducibility of train-test splits and generated data. + +## Known Limitations + +The implementation may encounter difficulties with: + +1. **Highly Imbalanced Data**: Struggles when class sizes are noticeably imbalanced. +2. **High Dimensionality with Few Samples**: May exhibit irregular behavior when the number of features exceeds the number of samples. Dimensionality reduction using PCA can be a solution. diff --git a/finalLDA.py b/finalLDA.py new file mode 100644 index 0000000..348a1e4 --- /dev/null +++ b/finalLDA.py @@ -0,0 +1,162 @@ +import argparse +from matplotlib import pyplot as plt +import numpy as np +import pandas as pd +#This is a linear discriminant analysis model +class LDAModel: + def __init__(self, nComponents=2, regularization=0.01, solver="eigh"): + self.nComponents = nComponents + self.regularization = regularization + self.solver = solver + self.Eigens = None + self.classes_ = None + self.classMeans = None + def fit(self, X, y): + + # this will find all the unique classes in the dataset + self.classes_ = np.unique(y) + # this will get the number of features in the dataset + n_features = X.shape[1] + + # this will calculate the scatter and matrices + WithinScatterMtrx, BetweenScatterMtrx = self.calculate_scatter_matrices(X, y) + WithinScatterMtrx +=self.regularization * np.identity(n_features) + if self.solver == "eigh": + # this will calculate the eigens + eigenValues, eigenVectors = np.linalg.eigh(np.linalg.inv(WithinScatterMtrx).dot(BetweenScatterMtrx)) + else: + eigenValues, eigenVectors = np.linalg.eig(np.linalg.inv(WithinScatterMtrx).dot(BetweenScatterMtrx)) + + + # this will sort the eigens + + + sorted_indices = np.argsort(-eigenValues.real) + #decending order + eigenValues = eigenValues.real[sorted_indices] + eigenVectors = eigenVectors.real[:, sorted_indices] + + # this will select the top nComponents eigenvectors + if self.nComponents is not None: + eigenVectors = eigenVectors[:, :self.nComponents] + else: + self.nComponents = len(self.classes_) - 1 + eigenVectors = eigenVectors[:, :self.nComponents] + + self.Eigens = eigenVectors + + # this will calculate the class means + XLDA = X.dot(self.Eigens) + # this will calculate mean of the class + self.classMeans = {cls: XLDA[y == cls].mean(axis=0) for cls in self.classes_} + + return self + #this will calculate the scatter matrices + def calculate_scatter_matrices(self,X_train, y_train): + speciesData = {label: X_train[y_train == label] for label in np.unique(y_train)} + dataMeanValues = {label: np.mean(speciesData[label], axis=0) for label in speciesData} + + + MeanOverall = np.mean(X_train, axis=0).reshape(-1, 1) + + + n_features = X_train.shape[1] + WithinScatterMtrx = np.zeros((n_features, n_features)) + BetweenScatterMtrx = np.zeros((n_features, n_features)) + + + + for label, class_data in speciesData.items(): + n_i = class_data.shape[0] + class_mean = dataMeanValues[label].reshape(n_features, 1) + + + for sample in class_data: + sample = sample.reshape(n_features, 1) + WithinScatterMtrx += (sample - class_mean).dot((sample - class_mean).T) + + + mean_diff = class_mean - MeanOverall + BetweenScatterMtrx += n_i * mean_diff.dot(mean_diff.T) + + return WithinScatterMtrx, BetweenScatterMtrx + + def transform(self, X): + #this will transform the data to the LDA space + if self.Eigens is None: + raise ValueError("Model has not been fitted yet.") + return X.dot(self.Eigens) + def get_params(self): + # this will return the parameters of the model + return { + 'nComponents': self.nComponents, + 'classes_': self.classes_, + 'Eigens': self.Eigens, + 'classMeans': self.classMeans + } +class RDAModelResults: + #this is a class to handle the predictions + def __init__(self, model): + # this will initialize the model + self.model = model + + def predict(self, X): + # this will transform the data to the LDA space + XLDA = self.model.transform(X) + predictions = [] + # this will compute the distances to each class mean + for sample in XLDA: + distances = {cls: np.linalg.norm(sample - mean) for cls, mean in self.model.classMeans.items()} + # this will assign to the class with the nearest mean + predicted_class = min(distances, key=lambda k: distances[k]) + predictions.append(predicted_class) + return np.array(predictions) + +def plot_lda_projection(XLDA, y, title): + # plot it + plt.figure(figsize=(8, 6)) + for label in np.unique(y): + plt.scatter(XLDA[y == label, 0], XLDA[y == label, 1], label=f'Class {label}') + plt.title(title) + plt.xlabel('LD1') + if XLDA.shape[1] > 1: + plt.ylabel('LD2') + plt.legend() + plt.show() + + + + + +def manual_train_test_split(X, y, test_size=0.2, random_state=None): + if random_state is not None: + np.random.seed(random_state) + + indices = np.random.permutation(len(X)) + test_size = int(len(X) * test_size) + train_indices = indices[test_size:] + test_indices = indices[:test_size] + + return X[train_indices], X[test_indices], y[train_indices], y[test_indices] + +df = pd.read_csv("generated_data.csv", header=None) + +X_features = df.iloc[:, :-1].values #this is the training data +y_labels= df .iloc[:, -1].values #this is the training labels + +X_train, X_test, y_train, y_test = manual_train_test_split(X_features, y_labels, test_size=0.2, random_state=42) + + +model = LDAModel(nComponents=5, regularization=0.05, solver="eigen") +model.fit(X_train, y_train) + +X_test_lda = model.transform(X_test) + +model_results = RDAModelResults(model) +y_pred = model_results.predict(X_test) +accuracy = np.mean(y_pred == y_test) +print(f"Test Accuracy: {accuracy * 100:.2f}%") + +plot_lda_projection(X_test_lda, y_test, "LDA Projection") + + diff --git a/generated_data.csv b/generated_data.csv new file mode 100644 index 0000000..04eeea2 --- /dev/null +++ b/generated_data.csv @@ -0,0 +1,750 @@ +0.8838931126173458,0.1958650220376449,0.3575365158852867,-2.3432619056402113,-1.0848325873173328,0.5596962894039177,0.9394693498560777,-0.9784810421186954,0 +0.5030968401091914,0.4064144688948009,0.3234610099156434,-0.4934108819088803,-0.7920167907771816,-0.842367934138484,-1.2795026616706042,0.24571516951123312,0 +-0.04419480068361748,1.5676325528903083,1.0511086796131768,0.40636842563171444,-0.16864610124128443,-3.1897027892252625,1.12013225923654,1.3327782081335766,0 +-0.24333876611630206,-0.13003071130989,-0.10901737133730471,1.556186439264636,0.12877835273019408,-2.066948722655315,-0.885493154616703,-1.1045794834534277,0 +0.932866346610091,2.0598380015281683,-0.9349379580809319,-1.6129902180842572,0.5270697180962234,-1.5511007353068422,0.32961333921197766,-1.1365265400974658,0 +-0.3384906045519245,0.32097078441973265,-0.6023080180595345,1.5447283608763946,0.6470340836498365,0.5932172125782157,0.43802449701914753,1.3577890150479748,0 +1.204511275020844,1.3517961871393613,0.4934372360278101,-2.7043652475259967,-0.5551857968857017,0.0015085602585323294,0.8570938168891852,1.4811436466626788,0 +-0.21966112236298194,1.5033981564928736,-1.482385050134975,-0.8561642180677683,-0.8286927702344518,0.11404760330098948,0.5277284702696486,0.15583822209143852,0 +1.3014293986554235,-0.9948019075832217,2.094665338082445,0.3594289939554043,0.691002118590122,-1.4857196083622273,0.09878861473099068,-0.2283210306835901,0 +-0.854775487342927,-0.5131451059514202,-0.9622159843780511,-0.48245091128279366,-0.23946975731280126,0.45974422690161787,0.6464301659040527,0.4874029609137859,0 +0.03819246874812981,0.9894865586579343,0.1436226349585432,0.7502979284867325,-0.40957142515378353,1.4474070464881408,-0.4045340239622074,1.14892501369591,0 +-0.9389104909640118,-1.9014640517184773,1.095433351342401,-0.3335437866327996,-1.4418485745457146,-1.4166667484045508,-1.6295015181180854,-1.8152558081043626,0 +-1.0561690000183723,0.5542749330320416,-0.9500180100254156,0.8579993511102255,-0.5320792474553208,1.125758855836237,0.21865771977812515,-0.39288195768217343,0 +-0.2286972650807645,-1.5762548779641914,0.1658330092370238,0.7887968149252417,-1.961892242675055,-1.8520382433428222,1.0918866127160918,0.9345908551179352,0 +-0.7117855567080416,1.443083008740605,0.7523133206959416,-1.334920766826471,0.6766396723306617,0.8311057781317684,-0.3650574440908685,0.4967702450892603,0 +0.2895591503361211,-0.47020934305691686,1.6059926396210291,-0.1536618307247823,-1.7861686341240965,-0.11165729875416829,1.5376439733847305,-1.031632521323364,0 +-0.1058130523703925,2.00990161224299,0.01123134145342559,-1.0894294683309023,-1.5145109657050797,-0.5597613073905006,0.8416225188285681,0.25155289067650305,0 +0.8251846237263087,1.8222054351276777,0.3381263483970462,0.10906277935431352,0.34848886375046007,0.4491181494744204,-1.1147406232415242,-0.9232073579131264,0 +0.02136903923401978,0.5944154325470795,1.8271415277179883,-1.0865037733845933,1.058442092609689,0.747165091729134,0.6099178020944761,-0.07722775367035856,0 +-1.9412662910561154,0.34143470998675635,1.8628551351223697,-0.29523047478727005,0.47831650582147917,-0.7151904957409182,1.237292927160557,0.8403886468450849,0 +0.7241272794310375,-0.18015930523162355,0.15257918672208845,1.2299429378606759,0.27207688822695014,0.07507401007744499,0.08681927006536326,-2.5153542762884533,0 +1.8500438785729347,-0.17580645673226966,0.9034630003902674,-1.545159349411475,1.4414778960070702,0.2688322271564248,0.4290540360918662,0.43638840024571685,0 +-0.4382601962147403,1.4204984520414792,1.9554321006834305,-0.39157541669177737,0.12072220793889916,0.4140250968447056,1.3665057256711728,-1.3632199842629613,0 +0.015653659985217002,0.9046602101137592,-0.806901090380598,-0.7063103537686168,1.0528919170355409,-0.09347128651554495,-1.4389505404207306,-0.31126891022505165,0 +0.8056692388759787,-0.012550938984415044,-0.26082290929071567,-0.8894777340366425,-1.6158992125782383,-0.8519646026261832,-0.041180143766047554,-0.27032690176153606,0 +-1.5039778238561405,1.313967830857757,-0.03012610576957469,0.6350130762254161,0.502435230630459,1.1619659136208502,-0.30574829012047444,1.7122827669227452,0 +1.1694369957089614,-0.2758148731607233,-2.5117807077003387,-0.41727181491994675,0.5415724540299603,-0.14510730175217484,-1.0215827316575077,0.47227797067332505,0 +-0.7081235031603792,1.4141394799499578,-0.4905331589716589,1.1811708688102756,-0.04692511385216678,-1.4601061755714524,-0.5081914987468069,-0.4952157620012345,0 +0.7617860957213675,-1.6468437457664888,0.8539263560084511,-0.007959929156210802,-0.8894751801852641,0.35350763375391486,-0.5394307626406479,0.5911327453164446,0 +-0.11829349164730663,-0.3604729716559968,-1.068632116564072,0.8907173875904303,0.2352515996854383,-0.0925597906394988,-0.5110631825259574,0.59382267559677,0 +-0.7740748327638539,-1.0709224027307107,-0.6269373373395746,-1.0773631364596319,1.2769798386772069,0.3464613307889435,-0.122315939901835,0.21916957008996207,0 +0.14346707728625135,1.4348447621997378,1.055364394383209,1.1152929302168257,1.8010063972721235,-0.19441882727705964,-0.8421870365260722,-1.1481746800640757,0 +-0.8315439431891614,-0.6727466028002431,0.6701164577350086,-1.148872688310003,-0.2679074087564409,-0.951562610772135,-1.5700686335461729,0.9859800963973488,0 +0.9239781543019754,-1.6013808577698323,-0.29677534752428475,1.189367897170757,-0.33330092818234236,0.9283619883589289,-0.722238413326392,2.1217128609126763,0 +-0.6916241897094678,0.39553830718990923,-0.37190787091472144,-1.0394173465086036,0.49184058998337715,1.0037085890775872,-0.2655737509607294,-1.0405931019994223,0 +-0.16430128756655013,0.3940625248695538,-0.23167982904969273,-0.24762589178271124,-0.3866323095104712,0.02290180158234664,-0.7125441135282226,0.32352159299122635,0 +-0.9586865863664576,-0.3336646869211666,-1.1630661074955175,0.7597753778218825,0.9097566859357606,1.446521594541811,-0.37685847010241014,-0.12847425324180264,0 +-0.47753268615963773,-0.12220247969770033,0.2076550075850339,-0.14926589409714264,1.0208650286890024,1.9719218921689727,1.1407990966464558,0.12975500218917993,0 +2.0400517490376875,0.41602742720602087,0.430900702712729,1.4749863585091865,1.4567777892218337,-1.0470882952809415,-1.542664412865657,1.0040804776514891,0 +-0.898307497209568,0.7352021778089574,1.524773210933687,1.2067875420368142,1.0956318078277478,0.5794449328057345,0.371400946267365,0.4395854072274665,0 +1.0908448128814345,0.03692613357091319,1.1188367533878416,-0.3084641147785133,0.8042947530731696,1.4013915932555556,-0.34676464136892465,0.9234054590076161,0 +-0.1152541836697891,-0.34664707560648444,-0.743533099909734,-0.9240385759108211,-0.657647079645054,-0.22696359396577828,-0.7535313637534381,0.08949334734261842,0 +-0.6547437769479376,0.17083179733905413,1.4144911683006147,-1.6097973411231303,1.2514958475694054,-0.3914653786142557,0.0967610819097579,1.087483901836548,0 +1.1465317920305227,0.5270561988451719,-1.9472098661136545,-0.10788922342797214,0.566639603958831,-0.7763938291482462,0.2653915289607453,1.9149116430357331,0 +-0.1933685157086208,0.35631269474330796,-1.0487511432128103,-1.0594562203703703,1.3308304218751097,-1.0195043338632288,0.3524322305826219,-0.9018159633657002,0 +-0.6327013683008658,-0.35952668114815434,0.6374081664217502,-1.6094296123284917,1.3876626381450248,1.5375527217507483,-0.982569112106374,-1.3736363597950005,0 +-2.0684934995945583,1.3335425330753503,0.19305745131040544,-0.8448337348620389,1.3048382232302593,0.649228173125619,0.9424295040385698,0.8798225360378422,0 +0.11923003401838438,-0.9446115413102955,-0.9774655314098105,0.9217363638755027,-0.8754999434433722,-1.3424564039596512,-1.340577339664525,-0.31125584116024374,0 +-0.01477903462135528,1.1264461060836972,-1.4171894505781544,1.0004732025595127,-0.18480126979569356,2.192341133000062,0.15582362262659008,0.5556113996055615,0 +0.015368639894608455,-0.0006442826601729482,-0.06675959570625042,-0.9339718350066835,0.47092110825203626,1.647485071908067,-0.4068579123707171,-1.2312132780358729,0 +-0.23404304051340852,-0.25537296163245204,0.29558637074849214,-0.41226900652571397,-0.4701325347103191,1.9447475005653951,0.6490264516280401,1.1693731009735466,0 +0.14555047238867436,1.338459854250772,-0.8201205916274803,-0.5242009297292396,-1.7176898199609196,-0.13496670868541463,1.230278181684644,-1.2937183017069276,0 +-1.50898131523164,0.5456555946586372,-1.9107080899318925,0.4454269363068002,-0.7569550409823999,-0.8551033907323947,-0.10405745168296564,0.1258165981474253,0 +-0.20079855701739602,-0.5344903196609171,-0.7682518832153911,1.8447845526781832,-1.1770281748000802,-0.46354583119901066,0.02480595353158847,0.46665114537905106,0 +0.35357155132727863,0.7887072321921669,-0.6600866156584213,0.009020258951327556,-1.6258532818324654,0.21159254186563414,-0.6493009709899229,1.1990647562475154,0 +0.4371679931584182,-0.6887305737977152,0.5335330409382317,0.29295634152258276,-0.07271142670657767,-0.013516438314268794,-1.4576864211047462,-0.8755813989067697,0 +0.36769644465156426,-0.4941041999561105,-0.10866997499964459,1.9206306510251638,0.3637034574639644,-1.0154179701677464,0.20131821312276807,1.25754407220329,0 +-0.6713629222234583,-0.8978374516159481,0.3372355972153875,0.23763559521556324,-1.0453826149100598,-0.9521588903644851,-0.8049608691161796,-0.28260292140517074,0 +0.03144107283205245,-1.1540674101013038,0.0879612847034627,-0.10664351050827497,-0.2625411738074502,0.13994974703299737,-1.5387217192166571,1.297108346776032,0 +0.7381183458121997,1.4432480150702538,0.046958680358681934,-0.4457369147013638,0.6318865639749252,-1.4259915477247695,-0.21543211038174553,-0.590314674939793,0 +1.9050878530584454,0.9526704619464872,-0.4329734240280363,-0.7305688553737385,-1.0937249627683698,0.43759905214616646,-0.7618832227501251,-1.029683489838573,0 +-0.8540155558019278,1.6340995202050332,0.11534153745733075,1.1108251680379584,-0.33768856300790084,1.2887424831521364,-0.002974417464920049,-0.10125548946604226,0 +-1.7630360957886058,1.007295527671601,1.169334205570615,-0.06091489314794168,1.156502682409707,0.7399560714608988,-1.7473604980607809,-1.5447106167298144,0 +-1.0718062149910164,1.4916799226542075,-0.4120077327890296,1.1255301554819959,0.29859715422061206,0.3804159839718837,-0.3608273407006341,-0.3909246876321675,0 +0.11715025251160383,-0.047391916816901976,-1.1709619523965595,1.0839523776644926,0.33121703404547415,-0.9597745102827581,0.2570125771676126,0.7614199572968887,0 +0.2625289342311894,0.7819914586497986,0.25874633701328287,-0.201181169327462,-0.59056392396512,-0.15754229826625715,0.5881633943662544,-0.9843810991552088,0 +0.5089889620695094,-0.9034870413510576,0.509443151362378,-0.9227792823289825,0.1958835731181117,0.10315450171117999,-1.0496738900741227,1.3621106122340612,0 +-0.28032887222392994,1.0262868542875294,1.283022098556597,-0.8545232309191942,0.2251680988973904,-1.0924455086673268,-1.3237538540000438,-2.286398167657233,0 +-0.851020537694771,0.3827102026593706,-2.104250824670424,0.6112962059558436,0.3343140286160145,1.881420879966189,-0.9244255591788487,-0.4573727764831537,0 +-1.3205817579421362,-0.5593495710975953,1.8664231085757161,-1.9786964683399855,-0.29761451565879216,0.15363120683280598,-0.2970379040225088,0.9657041805884066,0 +0.653445556508801,0.024785479672217493,0.5878605250064424,1.5592827806332639,0.8429940646977514,-0.5383822658144574,-0.404439653654813,0.9541341653374956,0 +0.820551398981353,0.3051557986923959,-1.2358981814464893,0.8322165369671238,0.38217153090277434,-0.7329782789169657,0.5060597119402284,-0.26025985033982585,0 +0.7042722073288928,-0.8209742936536496,-0.17555505803176844,1.109713406811062,0.09184128043898435,-0.1949102040102756,-0.3650204422271794,-0.3019886922345698,0 +2.148540719607677,0.4070040619404339,0.9652738679936681,-1.6574539291046313,0.13801112473623162,-1.0528659059590828,1.2398001358090163,0.49139048095793286,0 +-0.44164583219243947,0.43972648022329264,0.19051316341676985,1.4328130401888604,-0.07811423698295766,-0.731968430236827,-0.5819114296145883,0.7120251789813915,0 +2.344198740830126,0.45871407694701327,-2.7663344860040797,0.20585437903700002,1.17136415193063,-1.1756998944141859,-0.1283041186746317,-0.024339442224466427,0 +0.2876466179122786,1.6356914987736704,0.11494969421517078,0.1766758962916238,-0.27133817575397245,-0.7483321216359717,-0.8120467281548392,0.7597768890690438,0 +1.0261454244876846,-0.330697759927302,-1.61040677325884,-1.3791231563208974,0.9147811615292661,-0.4622505566361702,-0.32962882479085687,-1.3267881597955993,0 +-0.4046738311517917,-0.7629311908032939,0.3591954560449924,-1.5929111185524762,0.6182936084313935,0.6846649466669441,0.21337260248195788,2.302177193827913,0 +0.1491822335641173,-0.0362937780788009,0.1975485484737393,0.5267561180871134,-1.8696188206108517,0.46993586075705757,-0.38690164269151384,1.5745205776016526,0 +0.40631504967502824,-0.36899844481962857,-1.3975969338857699,0.8875929864527539,-1.2425771255349518,1.267288574385149,-0.04762832733987017,0.11810662916255035,0 +-1.0249369475532506,-1.4441408082322296,-1.5562162856343438,0.852230685998586,-0.4648029256193852,-1.6553705785167918,1.1142010436819993,-0.420795635790614,0 +2.131549578734257,-0.5444398508104547,1.2668259984349186,1.0751085291207068,0.6135895058325957,0.2615806870934877,-0.5020653730093495,1.3767391035018588,0 +0.16322725250531353,-1.6277909608178545,0.4992593319339219,0.6408577531243761,1.5235864899417033,-0.19553520537877855,-0.34710084306301353,-0.48156585531891366,0 +-0.04297154249048262,-0.16042638402923684,-1.1530205371349196,-0.46418005235288723,-0.5319688086241466,0.11977295273433437,0.33979629446882526,-1.7535181625478058,0 +-0.12261165443550483,-0.7994392402021717,-0.5806219611220284,-0.04014045712986196,0.11324448342832802,1.1384925413856146,-0.8876740667316415,-0.6127739996661806,0 +1.8567298778246837,0.17145788662664396,-1.9874735467013913,0.6528292069606302,-0.21224644664716563,-0.3785331968679066,-1.154844673642954,-0.15348520127165022,0 +-0.4392116853371466,0.46313639100966464,0.9762943252336795,0.2312489408636511,0.655024014008057,0.9243033861834187,0.3801861654392823,0.7014177089707351,0 +-0.08514029090246436,-0.7001172468317638,-2.318298790953055,-0.9382013598727752,0.16906215531548638,-0.5106382134664932,-0.20607087191116824,0.7722802396205715,0 +-0.09036789586302857,-0.6500365924448187,-1.2555932679698159,0.43175995900049663,-2.063710002483496,0.6855094000065509,-0.8712320101601077,1.0225406270154396,0 +1.3917193890016828,-0.002208713478819913,-2.6597928141984832,1.4785892821080293,-1.6991785937004704,2.0695297925189937,1.3545044372695483,1.11251656347303,0 +-0.8662360818795904,0.560557012542859,-0.8848579704632443,-1.176515101934332,-0.2577681307645193,0.1553321925211992,0.12962048412755003,-0.5292553471865282,0 +0.5254892326040485,1.0647281163457043,-0.7037363918799042,0.9005026840318275,0.6064169188474898,-0.01792098901569381,-0.577394613197653,-0.5458383078571367,0 +-0.3065268017155336,-0.5465662634778347,-1.316981981707946,0.43061488924755614,-0.7403318392394158,0.09456765387105226,-0.9350753693146795,0.2207573682215156,0 +-1.1704331093721174,-0.23853912774499406,0.5433335650889815,-0.2440984555168677,-0.303009004742183,-0.36867252472538753,-1.4367024287692811,2.8878198632752996,0 +-0.9449025851818987,-0.6952728080419496,-1.4524223710844404,1.0853357548692755,0.4227876942375318,0.5175420202199041,-0.808968213043654,1.031434457113636,0 +0.5298050113283103,1.4760668483892003,-0.22355430609415172,-0.9004790971659937,0.5157635620515597,-1.6256220067624754,0.7474300955455246,-1.0210833955068233,0 +0.6081694792261432,1.7437828001463707,-1.956502689026599,-0.6080016596790213,-1.8082530887119106,-0.8806878223357334,-1.553351645251398,-0.8658526828953959,0 +-0.6723517076552893,-0.23057576815461966,0.8910279087965369,0.5788000901502823,-0.706968285272678,-1.428377807387328,-0.14608364962014286,0.922384604808989,0 +0.19251669254908213,0.18703048965603197,-1.1401845985988972,0.11084929061991772,-0.7542621763801308,-0.38496232315794576,-0.47006481284359813,0.047452867076501946,0 +0.563624248597565,-0.2036043817811077,1.850097486524959,1.021170133693846,-1.8286021074288807,0.5431253795722862,0.2918395912696462,0.43383886706363917,0 +0.7514119455637641,-1.264668702027948,0.02371053640938355,-1.0634979399400715,0.5348449198248831,-0.6707054514472633,-1.6865552622644402,-0.043274765716689714,0 +-1.0018268152255863,-0.7626432969947573,-0.1997195859278033,1.1958064011929233,-0.6218222782064365,0.2318130003070748,0.5705200940086177,1.6571907468966283,0 +-1.5444114714436195,0.479704016383983,0.49614111842074027,-0.9442126788744317,0.5609226084315204,-0.8049656425901573,0.7133274147745936,0.7752662496381627,0 +-1.6903943320979324,0.5572013376475113,0.2344161808499928,-0.8957479245521986,-0.8414244748333863,0.3833691135692838,-0.09381166336532262,-0.4094298564540957,0 +-0.5228327982170599,-1.3861131468599623,0.1493964099183348,-1.4289416377781559,-0.466414076209718,-0.1607690640023948,-2.236178973257428,-0.40939557170856694,0 +0.698835364786331,2.2413102005811387,-0.4149451824301243,1.5295602617307302,-0.06439018153960473,0.006824782163432411,-0.9894374675566683,-0.039822239708779544,0 +0.4982773435729061,1.5077547188706473,-1.6250304576072052,-0.430974814264929,1.0370388711918654,0.13907212041841677,-0.3066118082514247,-0.061275308283254365,0 +1.0129464874085148,0.7431772982827767,0.9066007963168424,0.25286880193059313,-1.079601940814109,1.4975104226785834,-0.8608699456392673,-0.08284401306092869,0 +-0.9745440997268442,-0.021143286909308445,0.1687652036684652,1.6204693011816138,0.4220769626771023,2.6157067815899495,-0.5654802862288791,-1.6544820241370644,0 +0.6840879834601468,0.7877580716583129,1.2872452051203989,-0.647441368556113,0.8437698709539719,-0.1361780578404978,0.49526906368221096,0.7527326491966859,0 +-0.5794557131512171,-0.014956233246044968,1.534874978656993,-0.23840822982407228,0.1259599121346865,-0.6841888317006621,-1.7757404633361322,-1.4775715544996628,0 +-0.4138959044658328,0.7429568390537766,-0.13626856894471892,0.4842329022726548,-0.7269352946893177,-0.2484038102002347,0.9044904059502893,0.7759633263050225,0 +0.34997962615604294,0.3010904590019906,-0.6058656030835531,-0.14236938577829364,-1.2053369712289888,-0.5181986541793373,-0.20201625592538994,0.3746783488786501,0 +-1.1490259173653927,0.037259014785182516,1.3948195663795295,-1.700507779351282,2.02960340226811,1.632423823833253,0.523751338259541,-0.62415579882112,0 +0.5654945257355587,-0.1883604431847369,-0.40613406826874504,-1.1243558157050197,1.3428616656281913,-1.1342727310667653,-0.054374155994906796,-1.1690454364935627,0 +0.7431501892718955,0.9104989449725361,-0.914556924529488,1.063757375395489,0.6770500263615504,-1.313409516519555,1.655235885880252,0.08348779135582705,0 +0.26425106777430424,-0.2099255215546659,1.43664968990339,0.7942812165768327,-1.0685966282790749,-0.511981938013239,1.4888757220579343,0.6012757652491943,0 +-0.6976692843559605,1.3759540346937862,0.383598595721904,-0.7258365099939034,0.5899499749453588,-0.4135254729521523,-0.9172906164726028,-0.4742426019684067,0 +0.009013721202522402,-1.5149132322024053,0.41730618578091727,-1.173123756336885,0.9060534384130662,0.39853826103407824,-1.094092352070488,-0.2878058308398227,0 +0.13478381957602822,-2.274307671466167,-0.59418559892953,0.49681493085110334,2.1620558232856517,-0.9634024149439181,-0.5209754606168973,1.485731193382147,0 +0.9360872517504086,-0.8684349492540614,0.6604288699914331,0.20429681624972826,-0.7917169514587826,1.1868089502946861,2.672840258152374,-0.9944467475688058,0 +0.5449519027565989,-0.1095919270979062,2.698410960988141,-2.294638726206415,-0.4407349925624898,0.18385711342444638,-0.24534132115491641,1.4228870296896607,0 +0.9021944017438603,0.020851105673074855,1.5570119538544784,1.119447629064242,1.3146419100637057,0.4034688045583402,0.5439367491425428,-0.8402400248776841,0 +-2.2280577072750214,-0.893625446837922,1.1781974581844266,-0.7716578098996993,-0.8384565525546029,-0.014125870054098738,2.07735209036106,0.4566344726827797,0 +0.1416021523135291,-0.5499474402632397,1.134293272772233,0.7915424745955475,-0.035390826919003186,-0.19502139279623026,-1.0381882803775495,0.44388096113429387,0 +0.9606600306324522,-0.430363453132603,1.6967733369846894,0.5750677429830575,-0.5250033966605889,-1.731877986185952,-0.38108387150960743,-0.571725467249187,0 +-0.7826068534484084,0.4386878617862437,0.15419257992832103,-0.33454544893633353,0.13091785450295976,0.32752303788400644,0.3234199480000669,0.40308765199171576,0 +0.9425657682515493,-0.21689698683229477,-0.01300927891590564,-0.20463234843431202,0.5922049837211271,-1.4927634698784868,-0.6790165573277347,0.4714419484291411,0 +-0.22526817933800622,0.46831490175669854,0.2569219867547813,-1.7524224409057496,-0.002983406984425503,-0.7215001359409494,-1.3424787336074195,2.723769216283926,0 +-1.2119655678154837,-0.8887661568691401,-0.18320844911067372,-0.19023789937284458,-0.1797363195407225,-0.021609424694862104,-0.6743068464115805,-1.4495716735510311,0 +0.1230977319021158,0.995141374929161,-0.3889093797230683,0.43228996384725543,1.5233761870081777,-0.7126815363242786,-1.4601337410361062,-1.0027172966473514,0 +0.2754514335088486,-0.1703124132045451,0.5834896783595218,-1.527437490974266,0.7593493661648388,0.18157707684284963,0.4538152321248871,0.026895436876389393,0 +-0.11090238162376062,0.9817396512195041,0.5874183698733543,0.5609002778295635,2.6774447324038553,1.5727889983250172,0.20474858158303924,-1.6468786137684144,0 +-0.5445399486076962,-0.7886846838652335,1.1565069785707507,1.3531443438462145,-0.41116739026528687,1.120624363009133,-1.3921964441544799,-0.2812499613489592,0 +0.2572655237878564,0.19679967511024934,-0.5370284499533972,-1.9234451407544793,0.5227367330935229,-2.1750493192804705,0.781033347380252,1.1615963125623552,0 +-1.0291620707639564,1.1409126594718968,-0.7017079125095678,-0.05446195028888975,-0.3414049228097463,-1.5053979137628641,-0.7036664032493729,1.3850280381934807,0 +-1.5274305742941394,0.10962986749389049,-0.3784088135546748,-1.8263292091252743,0.7066533738610695,-0.6555693899079243,0.05352553722008417,-0.4879480272217801,0 +-0.1301514466318604,0.12643226045054531,0.10962103944192243,-0.24369086430943682,1.4047835731472345,-0.02629884874701653,-1.0678104840238734,0.5526397530533581,0 +-2.0671579386167203,1.3758845900222691,-1.0240039152590839,-1.6292244483978024,-0.9674954640183698,0.11364583110585298,0.2185663236051352,-0.4830111662502289,0 +1.0549179707169154,-2.6918076704799896,0.45370381552364497,0.1407058264513319,-0.4314613323375029,1.5372177202818733,-1.8316251279869702,-0.6966609852046719,0 +0.38673208910918017,-0.3106118650498091,-0.4852410029006377,1.959243704009691,-0.43176223583129064,-2.0895761588772404,-0.8660724299396918,1.0378484567796975,0 +0.9245886243602122,-0.11422133877648459,-0.2676459029699891,0.20513174092516548,1.0529508593936099,0.05033595387979827,-1.1691051979334235,-0.028602117251140986,0 +1.8568968276646929,1.3571593193282934,1.7181814568256921,-0.2580998613070168,-0.4129859156635337,0.1600218071288574,0.3629708436427635,1.4202012485672721,0 +-1.5732303596058277,-0.24135783828087104,-1.0468062908214717,2.4004656468430654,0.9216810812779903,-1.7461633029047052,-1.1988111485752193,1.4169897707202668,0 +-0.2593181992355875,-0.8044825460780427,0.24805694908089715,1.91115019395029,-0.44033268125703867,0.7815680923348226,0.016475639239772674,0.4103185764635153,0 +-0.2001416264272586,-0.6753578662429406,2.0402010014814174,-1.5739482978317814,0.4268258284949677,0.4946547336774858,-0.3351361969640775,2.2396139348162496,0 +1.1498552387234482,0.9711305957442736,1.8451306091266908,0.22256307328139674,-0.07155924575960122,-1.0745407334382304,0.6310291187361974,-0.5963640382973715,0 +2.3344120982468217,-1.2750332010150005,-0.6950739986074671,1.9368262638647293,1.6922778365342077,0.49541103785953317,-0.4494816128152497,0.9356902542075124,0 +-0.09369889784336466,-1.4282403050908037,0.7188312222977792,-0.8341550093084907,0.05899129646289269,1.2139614743581648,-0.10317857719549557,-0.5912151538153118,0 +1.7483033286124687,0.027163233680741916,1.296876171512726,2.2647069423008968,2.352644599690555,2.2556739687477196,2.4333841362683,3.986770188721395,1 +2.601410847485229,1.8887217202687268,1.9843657747473749,0.6987260749074651,1.8220640447536949,-0.8124229147950897,2.1673610562636108,1.0873686199030752,1 +2.398230591344113,2.4267062448976753,2.73587940946113,1.8791068070633539,2.710777529403608,2.8775105472552704,1.4848126000039112,3.367037400929722,1 +2.384502639618944,3.138925919895466,1.7289109286876982,2.664993907173053,1.1289053206203827,2.300952897229172,1.5858413351768887,2.999218736004375,1 +2.765652270358626,1.1973327591084235,2.899790989970108,1.2846952783975167,3.4633056865630545,1.3099655342408343,1.8121205608326454,1.0525519110712702,1 +0.7143021145037378,3.028631938423106,0.4699708119956292,1.505619833705032,1.0890361513739517,1.1677857814749686,-1.1489453000540073,2.9947471596668023,1 +1.171605420229917,2.2246257564296754,1.4364854786140095,3.253843690436207,0.729286777732868,2.0615583390267975,2.246730207749372,1.6136695497421107,1 +3.5499587110507287,2.0195467188743046,2.283631187850723,2.893596376370177,1.6933237840894964,3.3007272241034045,1.6239744049236413,1.2523659486816592,1 +1.9063449541499362,1.5136756894424162,3.5170884954639527,2.374710739672362,1.1840884215930343,2.163342354864808,2.440403217490287,3.0585375928707705,1 +-0.5969729090420199,2.3748107749820204,1.5768578203888826,1.8930165066810565,1.897200308135639,1.8720154566914862,1.2459555828871518,4.383923560367738,1 +2.1197504009544765,1.4152096872794453,2.6383853405442235,1.548769392575484,3.4736537552818594,1.45400957138577,1.0681434573576987,2.834532165799902,1 +2.6917162977446587,1.0351364343832057,2.060516884317458,3.125102470409425,1.5308983012312978,3.943448077322871,1.845766316683597,1.9847479940674537,1 +1.5513528201234135,2.7191993976651916,3.3778775808385726,1.1402090230734114,3.331950698775932,2.219254663338199,1.2220185402368902,0.4468635340560434,1 +2.3737205587234143,3.200703641453072,1.9141456404721207,2.6910171881232503,2.3951171995880625,1.0536837408930297,-0.20243002364345886,2.5954306144013146,1 +1.1481358800985433,0.741058771484344,2.093583659647955,1.581520925657569,1.6528773462841144,2.710502807468902,2.4590596718967968,2.7030870070699544,1 +1.507882121182769,0.8112967359317318,-0.28228683768379037,2.5083462971357333,2.0536063477750983,4.420972752717661,1.9378072188073951,2.797678525536809,1 +1.378730577696779,1.3409882702201719,0.8783291328917842,1.3578245946357006,0.3795038946384808,0.8091713879938289,1.2428299440122488,1.2970414333073252,1 +3.009778793849299,1.2336250982752706,2.3555031603429124,2.0104348980708937,1.0162519729435062,2.377110815696387,1.4262841257337289,2.223466179438586,1 +3.189392657120691,0.9106455673708465,2.806462494674056,3.3295814212138457,2.251248824291765,4.511629804251621,2.54865760254426,0.9952967621633837,1 +2.755902078078357,0.07912159744145053,-1.8038530722876422,2.2475438561498753,1.7341464828363977,0.5741839061986966,1.3384024521681703,1.163061380679443,1 +2.7901508529480243,1.680220560288816,0.7947221658737773,0.5359061366606914,2.4785445320226818,3.204491041440412,2.157373467079061,1.2182063879671094,1 +3.29635253014791,2.4234794305154708,2.45882522024472,1.4257499548836245,2.0038222240040824,2.558148904301267,3.3337130364595415,0.2555642754966896,1 +2.4155512943337003,1.385867597190812,1.8277883511224746,1.0635360320087104,0.8162232711710506,2.8525866573831875,3.643640597084719,2.73154572461943,1 +2.9699318210214534,1.0641705228911689,2.4975333184625708,3.213261858114414,2.0595337185279154,1.2110803915738892,1.0405967604082225,2.975765935312538,1 +3.493146421042016,1.3708367785601652,2.7456940010284208,0.3418739173632155,1.7573799769155845,2.6840636939643043,1.4194183988623328,2.196819450225246,1 +0.989811964844574,1.7490474682950023,1.8556503068897223,1.890265634030671,2.392271510478632,3.1480329173575994,1.6452284820392813,2.6788581916680503,1 +2.2390176316721355,1.1315486703497584,2.9179864831061235,1.5851043694673779,2.0719071336818593,2.83989313186631,1.6806462023452378,0.732496505928375,1 +2.358521160205701,2.687847249779743,3.3225489063439593,2.451151077165399,0.31647487959492815,1.5694890249837516,2.5433620140503455,3.930365451533033,1 +2.564955100274118,0.8677949861859566,3.0491289373433883,2.605601936594337,2.6235151889115045,-0.198107483434125,1.6007403980642096,1.990374382455663,1 +2.423852866146248,2.490984202539583,1.0724959654435577,1.7966965682915206,2.0298040637668953,0.4879810770130042,3.6042424543290403,2.808837288716483,1 +2.677418662403344,1.570501889452232,1.7165965788687998,2.357564711933253,2.5233344755932534,1.1661105409686623,1.9143028388839318,0.3019291192235336,1 +0.6532288011403715,1.4147509977005566,3.3350902657521004,2.7110180222643896,3.233688017216578,2.720805834793299,1.3899884620386693,1.8270545086814654,1 +0.8315024695173754,0.10192036088474743,2.0145381696122238,-0.46369795526522317,1.7205933289064212,1.304775938045431,3.2191976664079327,1.9217510996833171,1 +2.3295319854755907,2.8245651419747024,2.016691761312436,1.4911679847524693,0.5667326132455304,2.917415303052555,2.4137351655959804,1.4829887053753037,1 +2.864827531439849,-0.06739741748504136,3.3858624763898364,1.4956761458533185,1.3177519238251962,0.4622055150734252,2.204285366573192,1.7159888518467412,1 +0.868349870105424,1.6166137393055116,3.7107827826446655,0.7803609673905212,2.0182435428643273,1.397173215962261,2.174037020780692,-0.02353650262115181,1 +2.7102129330903724,3.1286362792566242,2.4073446381007257,1.8301515865925686,4.007790352416683,1.0526233887978584,2.591423815223127,0.8420106768813977,1 +1.7637455504387598,0.4116040584527614,1.6964309937146949,1.2935812136400369,3.229428211370659,1.2721138986561,1.1390134879742462,2.8203522723056507,1 +1.9743592053828782,1.3241325057865745,-0.06625828478834261,2.1846115441787046,2.464898432574251,1.0152823074291342,2.00641599541315,-0.787322957226313,1 +1.1579760245325414,3.1085914758057154,2.2511400183574786,3.2059013842983584,0.5952951817505139,2.1329170255863215,1.1760757942993718,4.422135392186943,1 +2.7044884387891512,2.9644294936508846,3.4146539086423013,2.4557978876074613,0.5999306834699281,0.5949173179430156,2.0806727656733757,2.581368889038795,1 +2.7133695870962606,3.251364973690254,0.7718103386306325,2.4419964615729666,1.8589886598481067,2.7057270023203084,0.9111262402924327,2.4706211882184377,1 +2.2139143172703224,2.3725661701084872,3.1828961490562184,2.7603080913385747,2.989561681931576,2.559141947282498,2.844890752854635,2.4005402523427675,1 +2.235582873168493,3.5404967385200994,1.6517116297175793,3.257460329895542,0.22179157743442146,0.9550463581993434,2.119810209191505,3.7894885740799644,1 +2.3988334244008653,1.4763746184713238,1.4171222441197366,2.658099505637919,1.2511904244989382,3.750981638668408,2.050330879102536,3.467199282619718,1 +3.0561401595707904,1.9728282902741194,3.1239912290276504,1.0534713773557443,3.1187631106496747,2.5050041974647694,3.0373627738249045,1.4568045630644608,1 +2.594074039919567,2.3868250035538265,4.05821716274532,2.3150897821171994,2.2952887229409717,0.7515501041157477,1.534404551513006,2.2686138775387232,1 +2.2182627919635642,2.4749250720929408,2.996220284950729,2.9926839155844216,2.9856589017503152,1.7624058345918079,1.8053353571447404,1.5785374915103647,1 +0.9552692752736662,0.9034281043442729,2.409909681611447,1.3891745927663233,4.066853954069765,4.228030310359657,0.997209042812284,2.343878777998967,1 +2.2514313902971876,2.4770925910287294,2.2977337100219324,2.909408332371621,1.0629584143122908,3.3161186738621566,1.4503344526714683,1.9427420171479592,1 +1.1953296694900957,1.0988930564772867,0.33069935637779646,1.4008452870699446,1.4505376505733865,1.0100565820058933,1.216664682942087,3.1842442758270684,1 +2.343188861038781,2.8796564901822297,2.240004264585324,2.334608523761145,-0.03196727611671246,-0.9778543958920607,2.0525344648016364,3.3091797896767083,1 +0.879474512933089,2.7805224001111863,-0.6921872864703928,-0.2065111645099007,2.043809919239565,2.914514878241931,-0.053133623530534635,1.5994629701395757,1 +2.593976649897794,1.0032119076772492,2.7296818872599657,2.2261014391326306,2.564170094177247,2.6586517006442074,2.5058022018913686,3.7279673912806848,1 +1.2211137946803723,1.389077939101429,2.7528567207222925,2.7383480290326574,2.2949717695740715,2.701904678656685,0.8217524656626767,1.4494734100232085,1 +0.10496742409043591,3.158600118757902,2.8082738876022453,1.5497400421349001,2.5349513704841966,4.663298470272453,4.655004388430488,0.05689413316968772,1 +-0.49164781157123505,2.6634169034571733,2.5491149787602314,1.1765838878819401,1.2145315965367254,2.2799637467374665,2.6460613570541955,2.400830901446085,1 +0.9736472940992371,2.9707059910541695,3.0742584613767443,1.7587635051899269,1.5708798371161048,0.5819336062018341,3.0614250321455714,2.4704385142701697,1 +2.764253464770314,1.7632002094359525,1.2003253604791075,2.4015592221517936,2.4999322364493577,2.739117515636851,1.260329604397147,1.5921752148948094,1 +1.517381216554006,0.43330056960142804,1.6660650941165587,1.6410842441527973,3.63855868990606,2.0078928358887644,1.410576829058336,3.012389367047989,1 +1.2076538945635007,3.010694370821265,2.6183462874808225,3.4585886647721775,3.0301485925431386,2.7126468311286036,3.8735121767872123,1.649100465688158,1 +0.9835153654393416,2.272952088072356,2.9022445990534216,2.0017677370849283,1.8235424233693693,0.8813223584587775,3.40187477135441,3.000789058170109,1 +0.9845701154609448,0.21513442017919715,0.817292458340731,2.1899028958644196,1.1145892627147997,3.101711292015106,2.92672618801363,1.9329796298118807,1 +1.3783904478176816,1.5441610246984752,0.8808603277093712,1.7071448179356374,0.6026721262591628,1.381105147972038,1.7434232639691147,3.3275975063253025,1 +2.2053670415286644,2.9619678102776192,1.8492602520531964,1.055541073805435,1.9017587854150106,4.791624923282523,3.094495991417979,1.5812344951121813,1 +1.4000959924775804,2.230463700962075,2.400106670451627,2.9880335995430554,1.9912062588202792,2.2496624993773477,0.2505798773714425,2.242669891725679,1 +1.436359702327274,2.0293072304692874,1.9725540763660059,1.1611000965550777,3.0614641504692512,1.4360285708017166,2.4156505610440226,2.743196261262736,1 +1.081493880617524,2.5812006399266805,2.898497812843992,1.6271985579402652,0.9844779888816206,1.2796211435118128,2.4736458038014906,1.8100528995153684,1 +0.5944775497602761,2.3686855310621215,0.8371209193242404,1.1407136274557823,-0.03458503591968931,1.4178532988027097,2.0097580438345166,1.3112965180082443,1 +3.121124395108488,1.1585907258679478,0.31415522380619576,3.3824530998046543,2.059650798144702,3.0512103916204927,1.1959589368802086,4.517043580816745,1 +1.503467317505003,1.279591268612092,0.10717148709020008,1.854651371105383,1.963845043871161,3.0208447538105867,4.16142577221404,0.5588874116306954,1 +2.216603585947366,1.9965727015149006,1.9420298023074098,1.5010239994870738,1.065127464973949,2.820712156867552,2.6911797994773337,0.44196878695603625,1 +2.5136288113636986,2.198158261655324,1.3979487289127492,2.768323243736022,3.2393712443150804,2.7682730550220978,3.6086379422121997,2.1227302824335053,1 +1.0699591062875706,2.412913845250105,1.025998446191068,-0.16580622919363597,2.0481865395822068,3.2759142203892297,1.6281575345005228,4.8914238054784995,1 +0.9808888013941321,1.6262226345466868,2.6725756925497954,1.0268222355840975,2.6627843734542047,1.543456952400224,0.794428603348087,0.834255223475572,1 +1.7561914266235465,2.7490593167248103,1.6238606664773103,1.8888968348788637,2.394042607340328,2.8160983574214624,1.6955621156199938,5.352834657097896,1 +2.3803080142184636,3.1282970046122753,2.743823605944935,2.9649611783222443,1.2054651470204358,3.731171120259172,1.3791230110929589,2.645189085936336,1 +1.6100048108341762,2.470758437072442,1.4823139558032197,1.3747953259149652,1.607619734612836,1.7478837585831233,2.574321990903124,2.961204279359444,1 +1.202047499487561,3.924715532554041,2.273473983637973,1.3557959347686699,0.6450075417046781,3.2106400155791848,2.227104123353493,3.3794646281238476,1 +2.7560426386513237,2.247502798875466,2.047134506096542,1.0441403751941973,1.4399816593328034,0.7936277225227903,2.452061746883375,1.3047540499311294,1 +1.711092097851746,2.5368076333915632,1.1070052687215326,1.122259707646026,2.730600302289777,3.1630619252137784,1.2360188208093725,2.3840452497107765,1 +0.45653391807359633,0.6310845473639732,1.3462064059830117,1.1966167286947536,1.8163999233098926,3.245008001778383,2.5728670821123076,2.2002924683734486,1 +0.20255752788687809,1.29711783353563,0.532014262715395,1.1532611086268783,2.7982767223332736,2.1228395243263525,2.133208996755501,2.8788673774911957,1 +3.4449150049849404,2.9882669685367933,2.2684722934841792,1.2440655702547236,1.6984621624285294,1.9434366693604157,0.9717439739535485,2.8256941723115965,1 +2.6523109825843223,1.583149695589622,2.7380896578044767,1.7636056610084134,1.1806137211926715,1.7002881665497498,2.632540848977176,1.7034575919061328,1 +1.2611847717078488,2.5851572428387284,0.36005589983176733,1.9675848236466045,1.6999926359579987,3.212814474371337,4.1322507138784,1.5246424088945894,1 +2.158120535200955,2.2759818597472643,2.0935604193281874,2.535778608666398,3.5701058986870997,4.334710977205157,2.711595832211896,1.8465618058672744,1 +1.4508793247891334,0.6477886152037462,2.327973132942111,3.4585902971942613,1.3750601351051308,1.7020761686287194,2.424331914271769,3.7570595350388,1 +0.8227952641078733,1.261739306859072,3.571646293677337,0.9069880837343625,4.04337936578523,2.0641160576612054,1.793580810125735,1.0841068769291855,1 +1.5643297683775135,3.2075446927981677,1.3997496547521528,5.373232308699949,1.3120558097520358,1.7131424886239852,1.5359687119719387,0.8774672639760597,1 +1.8794335320084792,-0.12685555942170978,2.275345127848561,2.2750250839891426,1.689416376893982,0.33465764297209577,1.2478258915161144,2.5478521367566174,1 +1.7837846888841613,3.194607451163165,1.3196865984971655,2.1644325351830846,0.5929166122321903,1.0853736659809359,0.4573925562494596,0.469712757716378,1 +0.47343938397160024,1.952631329588076,3.1973244968442507,3.01523968148092,1.2529276461862675,1.9462100167219898,1.2624488917472192,3.2711912582644196,1 +1.6652772137392458,3.413413582324276,2.9930116285591044,1.4565039133651605,0.9544264861497531,2.4306772717771232,1.2944273423924835,1.6337717638764273,1 +1.5894288077637413,1.710600446441384,1.6196857886377027,0.5355400817587643,3.4528552586494996,0.979083952012588,1.3471422481769022,1.4905452442250278,1 +2.3039902750639656,2.882722694294075,1.2820269615105724,2.0234881980872528,1.7917178742697413,1.1659044370492162,2.093784855127863,1.7235186061340153,1 +0.7538025891991844,3.716021238763729,4.439286695112208,0.033257354574928844,1.4313744153241894,0.6855591983836304,1.6701851103141914,0.48536079627126627,1 +2.262148267627659,3.4099902851650707,0.9847224314319356,2.6238908184984657,1.401857586276508,1.7346069329530391,2.9821037808500552,2.3156484450663903,1 +1.301917509010202,1.3692053088719685,1.9605316692822585,2.7655591284073417,2.3063478408513465,2.16967831287856,2.3566990368678873,0.3769519008668809,1 +3.459530497286404,2.3983651718500125,1.9290592951995669,0.36809049387751047,1.6857263974875414,1.791299375440254,1.9136417359896416,0.9456875704561698,1 +3.222901058501424,1.5036908427381979,0.17092356341989312,2.1208202050276737,2.3010853234194144,4.264689546765187,1.195164605883936,2.7437372741050368,1 +3.393991071012908,1.6751337680861307,2.7053086029196147,1.3808248245499173,2.278397963700055,0.6988480635922723,0.09413861647481947,0.5631299370185934,1 +0.33471273479223385,3.0060271515175594,1.6632865254807971,2.6546743145169476,3.9086081041182164,2.215045516183463,1.6261503157458777,1.5551672059424315,1 +2.4685184847063684,2.1187640140042148,2.8474435646906047,-0.09998313065584297,-0.11767788768521337,1.2556629232145178,2.799299857575281,2.2504551669432513,1 +3.7815200643881983,0.6841477076528508,1.7426901835530457,0.991079042286785,1.5001793060947548,2.7108543775524967,0.8337839679191354,2.3246388125357744,1 +1.8971610805991703,3.7846718446935435,1.9565908123333162,1.2454073098682494,1.1687485381313856,1.6590052315841,0.7252746927734743,2.2391517513272468,1 +2.508321090999473,2.74719721327968,2.4990526215577518,1.9849716149770746,4.18448102565357,0.10878189273935401,2.249025293752674,2.7578463120392462,1 +3.623690870599913,2.6738444935189585,2.191238045082652,3.978390174918384,2.855163444279371,3.5055379061902117,2.5562151958419355,2.3698148813083124,1 +1.9294329101351948,2.0524075093926473,2.6254993950873655,2.4292444922256884,3.14642704453622,3.1705227105698874,2.6217716809986915,2.428544580201538,1 +2.525815318880183,2.0353000190881976,1.626780356940213,1.5283468975546899,6.035028904870507,1.5121815649188677,3.260786247765564,0.6817948272883136,1 +0.9978392689683315,2.6052014717936056,2.4007920156697553,1.393530572061115,2.6539705599835566,1.965532205923283,1.4215958906222697,-0.09372732554771979,1 +2.8125596116462632,3.1761054471854187,1.8531274448560382,1.4462735032580525,2.2931645604124973,0.976099980345688,1.7131753137842514,3.9560493931656184,1 +1.2691825649513153,1.2897418932423925,2.3488060157261295,1.614201506658556,0.3219493896183596,2.105047831144024,0.7825262149129342,3.0194009030476456,1 +2.5300203669406534,1.7978023099492346,2.9007326561236813,2.353715679213177,1.7957983525077434,2.9906765268484454,1.774306369188809,2.7935542208203836,1 +1.5221185664492947,1.8932354992008258,1.5069774481548985,2.6876957165983972,2.5247554182665257,2.5815660697154312,2.5534061257533356,2.528709327544558,1 +2.2724822843595143,2.318036545312295,2.385158249438885,1.5490854816547317,1.7534560833768662,4.056186504078281,2.344835757911062,3.86267334760902,1 +1.6070123952928927,0.5615996858603269,2.697885832604901,1.7048203099553607,1.9395781995004302,1.6973279453968257,3.17677566061476,1.413808165977891,1 +2.7689453716523618,0.44698995520802853,1.8044188036610749,2.1797482241406048,2.6215354765700347,2.8415572562548226,2.860366592616697,1.4057678159315259,1 +3.2974229409741405,2.233204273615367,1.4946417929360631,2.2558558944546165,2.7080288130409764,1.7968439245729622,1.9586927708854176,1.7341067696235903,1 +0.6443532310375533,2.1945775158066447,2.363697006056631,1.055962164948875,2.1791653838632197,2.0998672450042424,2.834701099665728,1.582603822950392,1 +2.37493807834467,2.0464815283198003,2.0461447218566393,2.6464357203713478,3.5434239968243073,2.833403606784148,1.8876888070786568,1.7176695977776781,1 +0.3128392371823303,2.796612587576766,1.98813453866134,0.2567783712071394,3.2145165829864206,1.0878368861744645,2.5124240718400257,1.8986315746195195,1 +1.3054783600886273,3.163325888190119,0.9334418763501224,0.5042458126749454,2.252200183157221,0.8873810514256706,1.2528589133086974,2.229455118017505,1 +3.088770690931499,2.7539481967545223,1.259073340837118,0.8518331232277168,1.9281540390547856,1.7793120711282817,1.3011243919556117,1.307315834141519,1 +1.2147756431485472,1.3619330535080942,2.016015393961889,2.5146089228062536,2.797874168298992,2.2301224537602975,2.6073758135468386,0.7180592140865851,1 +0.942857488833382,2.456596258974771,0.46985313580948995,1.8344416034896285,2.0683918927508187,-0.0005997611320180951,2.4157948841263486,3.2769625249307484,1 +1.9099209797378458,0.5967826400832468,0.8606951851888327,2.4331700025043115,3.1064373621518606,3.0786850884505923,2.0341499766394024,1.2433322416802863,1 +2.018584824073049,1.677299175481617,2.5534692141617845,2.0405690700855774,2.5846495838477237,2.2016686379793686,2.914957705671227,0.08690410791438397,1 +0.8567690842922016,0.8814924375571471,2.5817789527793327,2.046795229692898,0.4220069736192258,2.3399814979919724,4.632264799611576,2.066788219617638,1 +1.5934650146767924,1.3506224599898506,2.8122705810343396,2.3460723387856572,3.7659158453870054,3.4395133832383085,3.333895819558618,1.5933940148940646,1 +1.7555551744657887,3.9352203832620556,2.124795501538597,2.6020381961144543,1.5474828326399612,3.079643796257732,3.2650569108971146,1.4853640596716198,1 +1.8962571652717244,1.3073256662951045,1.3697364496885347,0.9243968788906947,0.8728128925046208,3.931721944730259,0.5418588549580121,3.3809370723776793,1 +1.3707233505047687,3.1333369685274164,3.618864356978375,3.237722718341782,3.2083067317654823,0.5025100548191936,2.7647697598605534,2.287337414138537,1 +1.6685304361624407,2.209260590725996,0.0037122464281000855,0.34787880636453394,2.689513350296155,1.8478044386638603,1.4344197618595964,2.054524088094385,1 +3.979064366542419,1.2775182994843242,1.8782983812926215,2.3791221815366055,2.997504032842548,3.0284584330307753,2.9862676131926205,1.1349232905477962,1 +2.4221194444246326,0.11847164228541818,0.1553547541901119,2.1063386849812,1.3805518859391106,2.862348342623314,2.3813006511647834,2.8959497167843917,1 +2.122651826836804,1.9900703225103489,0.30759192071022756,1.4762071216741868,2.485782708653833,1.9148263898063917,2.389518012921622,3.12572567418949,1 +0.6499229653617773,0.49779740815307316,2.0199999304759184,2.2949871303078035,1.6228720394042329,2.048915586072308,2.372137010278248,1.2626145910190372,1 +2.7793565885309484,2.569764840100301,0.716061110540096,2.796747657836065,1.6830317021972339,3.3132682741727884,1.4932619462571237,1.6646897309154545,1 +1.2011667505233006,1.335426242938718,2.577596654800634,2.321162331083852,2.6822306050075695,0.6165505641018647,2.7905952812183337,1.930035886757183,1 +0.7227412458271445,0.4573959676889918,2.5176794712246915,2.0724569980046113,2.7627439362253976,3.0300556544637063,1.7951858485137064,1.6943040924902029,1 +2.6558921989912485,1.2367565311554303,4.541454356985844,1.0167013363804327,2.8266975023993304,2.607398345154269,2.371470648174074,2.934576386680728,1 +1.916305046021933,1.5605945313694431,1.3319901959399623,1.9274691722626793,2.440640867134719,2.28092293752735,1.2778137703991135,1.628962119608976,1 +1.7690516159638179,1.0099688557636557,2.6227657175621273,0.3190590426475288,2.3725500567783206,3.0307789722738017,0.751981337661765,2.3048346201129597,1 +1.2120415232758996,2.8618230467070447,2.610684260102643,2.067502509326702,1.598236257984476,3.0607187046392834,2.3268124719052086,3.421659775112242,1 +1.0599400002857648,2.2351364428664633,3.409057654877949,0.4046914914832498,1.9786927098266913,1.0450265728015378,0.9228160743678275,2.556362209018332,1 +3.638274565392795,1.237785644766327,3.85625030891862,1.674478970067426,2.5547324600100296,3.1985263697789192,1.8094604232626064,4.396878880078347,1 +1.6740285111817081,4.379564457739871,1.3515932323848645,1.0340996232779496,4.179627926277961,2.6154074183980898,3.153292501937744,2.741462274520061,1 +2.792723325572856,0.8915326432422623,2.2751287161950824,0.6287713928035819,0.7280985483937235,4.30582437495648,2.065174907416693,1.3773779563249595,1 +1.8401669341942668,2.0378972960674164,4.360579312912332,2.436054268689239,2.6290571659499333,1.4447744815082693,3.1417891736928034,2.2395556998458916,1 +4.310857281965759,5.329115238583052,3.634529472397341,5.738268987665299,3.940282644064549,4.972696670163209,3.123525788707655,4.048633757401474,2 +3.750202146438367,4.347633992168278,4.232967766819165,3.801820533160707,3.813987507740797,3.7590923265778486,3.196437725550263,5.063417684450945,2 +3.488557806988239,4.296114316514786,4.790523386597821,4.106640033376049,3.8257352058404708,4.17068633715199,3.063392555675024,1.5584731966589636,2 +5.071115695633775,3.7111332970957096,5.70016764969801,3.5158251232708437,4.75163274201752,5.22255480021593,4.36940453930555,4.828317584332087,2 +3.5825384043192283,3.99137580586903,4.227975156330722,2.9587143699624763,4.295303457072095,3.9563003399971635,3.8835773727359655,6.1320945519073025,2 +3.172093553289444,5.33542560477347,2.6760055187854075,4.200528581882996,4.908032140580376,3.554806518616483,3.8824281199561486,4.735432353399091,2 +3.9266541268594635,2.065303171171748,2.6636524724287542,5.271867093812837,5.1485025841725,3.7355888239956947,5.200055630729257,4.460812018235301,2 +2.447771238968072,3.9602198136748967,2.7038705664238303,2.8700872795965044,3.4726903056106178,3.6447417277760734,3.662088197941573,3.49892462137143,2 +4.557564334803392,2.5192489349893226,5.481935999198516,4.569032708123377,4.805732487755117,4.219222819836097,4.170152990431727,3.906630958898509,2 +4.596116249942367,2.937870058520544,2.8186027733679557,3.875832538480887,3.8176842474255173,4.644204082522721,3.4833407397129315,5.183521753806303,2 +3.5992302375382477,4.413945238310851,4.384074598233404,5.127196685309827,4.255248089952376,3.620940360794185,5.459394525340059,2.734901322145493,2 +3.925100240641786,3.713642528072506,4.178766092723858,3.9507664915499396,3.1889037298176857,4.493043139016562,4.138980774724594,5.139156873249872,2 +4.02809123603643,4.081414049789189,3.2925023215609333,5.123463325752912,4.06148426215384,1.7836226117625755,2.8225488807440016,4.590004533754901,2 +4.123174542906755,3.1610101043794914,4.058736987329945,4.725840347511519,4.560336017724891,2.264810713023661,4.765812109511273,4.458491609933842,2 +3.726572176391744,3.904644401189271,3.6656698590623735,5.22619316159712,2.2567836655053717,4.274182786050375,6.032757663128443,4.362529090790647,2 +5.235218724255492,2.1885480076645667,4.010399152586735,3.6095059061716004,4.211193656087735,3.3158205277820914,4.953957695332119,5.197627826079193,2 +4.246657654311696,5.570339517020263,4.449997000801381,3.2689968625240264,3.6712503849583613,5.45483130924296,6.833347132626924,5.319593183831515,2 +5.516706618319186,5.94385032071564,3.5110588854422753,2.814737525734129,4.312831593073834,4.447347747555759,4.672898575205059,3.627136282998592,2 +1.8757388770676582,4.563621490222199,4.71388062619558,3.8166338440236753,3.1318419481298374,3.135122291448214,2.6564398101054847,3.7961771524173455,2 +3.5088150686339925,4.04690802968231,2.874933855205412,3.483576466951264,4.572265473668891,3.997379616849391,5.300218302170075,3.6306504637022603,2 +4.210546671706348,3.507930788107721,4.473868493111783,3.2071611629180583,4.352812945041583,3.325426498964398,4.858358545639281,4.538044523388274,2 +4.6337127483679135,4.573373680094757,4.211360837329645,3.7652589134913663,3.739743127014285,3.512145630825882,5.729634680092088,2.292430905408194,2 +5.242244169621991,2.92149639153614,4.416944125019466,3.945736185617274,0.9043370062645231,3.3864771340710056,6.083662555805231,4.5402873857738495,2 +4.310807588067772,3.9273319222252034,4.069275131708337,5.034373440437887,4.212027355807535,4.499402821603079,3.5439089143395863,3.0310289319204338,2 +4.159337206689632,4.399238987183723,4.501313935655158,3.887262795312534,3.109057166610796,6.507290522744746,4.40196566044875,4.515182339759371,2 +4.844000166743929,2.3402540298471637,4.202520054382986,5.316583485727572,4.841840000677934,2.8081440560374915,4.172359811933706,5.803921264787738,2 +4.461796754390731,4.481977402610106,3.8526116055883786,4.032672913114881,3.943315112067708,5.665479062309252,4.0409213067615095,3.1703510728718043,2 +4.325389792924715,3.596609701029571,4.989088356655269,2.8243422261250433,3.5727135890969337,3.990857729568197,3.882349010104552,4.631779290099674,2 +3.8827096618606936,4.299328992599328,4.248985213064282,4.773628508089758,4.272657244095116,5.075567601705854,5.26147089922238,3.7818428864845224,2 +4.4987466545124075,4.5599938923789365,3.332985550424576,5.670586134928154,4.068951053363644,3.9745016686147854,4.337957668856429,5.7518824757490785,2 +4.204216254135914,3.1165778486081486,4.530696002249897,4.13481969317906,6.9440700505523285,3.734120174455402,3.319320552847738,4.820487957764171,2 +4.0920694311150445,5.023323350459244,3.283340206429387,5.4706139068059345,2.5090300040536224,2.8565979139073003,6.026669357306902,4.325590017855662,2 +4.805224477540666,3.4530364217215785,3.638687717725852,4.355691751847188,4.501888115691395,4.9673927575030365,5.2242690702244,3.029193187211085,2 +4.967247609134649,3.500231241968865,3.561695604868011,4.724911387336268,5.342801222023692,3.8663226274168867,2.8526153947560706,2.8339230991055895,2 +2.9153080014692003,3.055148131167715,3.5082765713271993,3.2345015465743523,4.532445939503916,4.6768414116388435,3.632086486802173,1.8557368259454194,2 +4.185989237595376,3.4076824677173065,3.121950470856617,4.2593381379913975,4.31862228010127,3.670398738597099,2.7808142001197824,4.057430827529217,2 +4.832091389057326,1.1686964311940558,3.4915333117390857,5.095708864057677,3.735922738002035,3.6837705141183377,3.4376092104364915,2.2447300411201065,2 +2.8542243073174163,4.9049422931211915,3.9042776104140815,1.849635544707811,4.497636647077131,3.61512134866246,4.025581868464663,3.6313981351342193,2 +3.87698291953612,4.383960886151787,3.4183584529940587,3.4741110455518456,2.652148866517381,4.74133942724956,2.863043298206263,3.1258205465219935,2 +4.38716832087436,4.458205172927289,4.092715781282708,2.573458089271026,3.28978088557847,4.75206946468325,3.251438562580259,4.902526456807795,2 +3.323230555584239,4.436324800530038,1.0177365441792183,3.1606387814213397,3.3659207093449597,3.3244113541210214,5.117929509029949,2.9402299534255514,2 +4.300784311647801,5.054948720313061,4.373253781591084,4.266296133642977,4.156130165608135,4.505055717924474,6.945110730071376,2.855757697060578,2 +3.1937608644714457,3.8554626108055463,3.596239176144614,3.5498894354874952,4.772219482840821,3.1341604416831452,4.460730754712273,4.463778826687504,2 +4.352521122737392,2.5667764291317745,3.981230016680775,2.3326911959424113,4.790258408738597,4.203769472606193,4.076123917511956,4.327208302325552,2 +3.9319652936062024,2.683567286989921,3.3391423117693297,5.355537052066247,4.966524363634078,4.541251258238247,4.122671662546953,5.718812363803473,2 +5.477370993125054,2.836701713111007,4.145426557396872,4.234859167906285,4.47878507885003,4.530707651414465,2.4242279371163553,3.9973405799629305,2 +4.752559714272604,5.04321855533637,2.852399963087337,4.262413474525515,3.535257269592878,5.107036114683394,4.208795257800086,5.195685887651411,2 +4.247925660772395,4.489069218510915,4.713872798472555,6.05163657804113,2.59480610694924,3.6881263111558305,4.739707828565905,5.445806811283221,2 +2.944943383624443,4.3770837441010215,3.7104012527620958,2.7166088432038205,3.5276439910528277,3.1443996707871174,4.908249800498991,4.6780763915459955,2 +4.164019232730916,4.25184183674646,1.8505820975916514,4.448365116304664,5.54027373453742,4.4005653726997105,4.293509707298692,4.741420273964428,2 +4.131649802997276,4.026087981363425,4.163513926387616,5.203115079152999,1.7118281883631967,4.326318395746059,4.932454550331232,2.4571923150623225,2 +4.532166338632827,4.301681486944229,2.3261520464412992,3.574225722686904,4.03489221634877,3.925579309815437,3.7955561959294144,2.6940967811003222,2 +3.594807106555764,3.0048593483467863,2.697911161696201,4.369549299226581,4.201730378482986,3.395984873343061,1.970173176161468,4.3582912403460465,2 +5.385397483305482,5.160396234407086,3.007451925954666,4.336439851865048,5.132595787557864,4.945478205716244,3.659608367328909,2.9727483383269875,2 +4.027893614452784,5.386179999929274,2.155059793044702,2.3993115693772182,4.600479261069544,4.010871592387989,2.475003535841715,4.694048049854235,2 +4.552877700034456,1.6924629347339804,3.9619535664686727,4.855189533074348,4.022006708706166,3.993224705276129,3.5767280905753673,3.6987773746744046,2 +4.016712228197204,4.481235786077027,3.7860962479540925,3.1873490360267605,5.264017110860378,5.124571355511712,3.444882066632402,4.697918470947344,2 +5.279670037178253,4.558823921297528,4.293225889415382,3.4580384001462465,3.9675559910255167,2.4649146777016124,4.117396856582367,3.8513808979683883,2 +4.905893970940737,3.0112788817334497,6.015879335176274,2.727803842506205,4.966572488904589,1.8472280326354742,4.970626454638022,5.239025653708001,2 +1.9022737871076747,3.457538932688448,3.9887393361815318,2.186254573768897,4.736388716204504,3.5049516979952378,4.743581873372682,2.9824317009773997,2 +5.193428423728137,3.1709358118068596,4.374875656874948,3.0527556734065966,3.9423223705471533,4.2187001018555295,2.7756980900350867,3.9449561145246435,2 +5.11547720535093,5.292133800389214,2.7646128341120138,2.5385733136587083,3.4485860025285744,1.8239218689435353,4.202801094521358,4.762144405016007,2 +5.544634232341083,3.4734553725125608,4.871327546010489,5.764416966089465,4.257807334395984,1.9823668739046938,3.618221954999788,4.826456576446958,2 +2.8542866561153923,4.341180376950893,5.394394686311477,4.707645638720071,3.2368918202682067,2.497165534147275,4.388474419015959,4.192510463646025,2 +3.0187361243409248,2.9629882265487186,4.1230831343126555,4.735711287726796,3.198795591255795,3.141582120645161,4.859751153504018,2.7831557587618336,2 +4.388189599152913,5.155830104910858,4.306939875068949,4.181497477930624,3.554018603703555,4.749055837252685,4.539087114104889,4.5291496906780555,2 +3.3387368806381175,4.598107867143353,2.723518781543335,5.014827942479793,4.762742373528478,3.426572093492046,3.698868818717528,5.262284003889759,2 +3.5113576244088933,4.358062241235478,2.910592863205468,2.464053377097726,4.3564378081654,4.739038057244879,4.0028007442907345,3.201463484568571,2 +3.062292899286025,5.074279940717903,2.731972650046212,4.639968756796382,4.209979427157773,2.327048288129097,5.448929386268625,3.6848392699811447,2 +4.33162058970211,1.99112770767656,2.4646867816474503,5.550877428326304,5.40973346631621,3.312285719979232,4.374725442559641,4.341790595741453,2 +4.522055874822545,2.482540909082654,3.4887072739818232,4.5829331134353435,2.2903781651358077,4.361361420818447,2.6599813805775145,3.2835392193963453,2 +3.996169646949889,3.4642537814221805,4.271060430248709,4.619881040234853,5.139877724784413,4.325192251060622,4.913472803341644,3.3535751546831287,2 +1.6172278877708308,5.315549745638544,2.533930871515804,3.4304759739796817,3.726223554443039,3.6542653172756623,3.755675783811058,4.054335604648194,2 +3.791953748261598,4.360009301426262,5.036495884215176,2.708281655027368,5.3118786203454595,3.123624396806016,4.380486200288819,2.113995532475553,2 +4.240687028687408,5.993457298050843,5.32475000335516,4.451522659069306,5.039033698063499,3.097887548460954,3.4665655373604376,4.685303493177682,2 +4.0270211462625225,3.481396875959087,4.580708775862863,4.700445897997595,3.549653837710653,4.590352799989452,6.181189452287427,3.6243394209167876,2 +6.213764248951701,5.293780390435973,4.527840778906126,2.647904345057829,4.206737274514558,4.086066657965845,5.167646926716628,5.169428150603633,2 +4.648468409890032,2.5951562704884967,3.684407077463158,2.46962721646459,4.429678820132224,5.327415630493938,3.4620251268863367,3.7034745180494992,2 +4.358753584573153,4.872626329330143,3.6770287796418755,2.8902959921818923,3.781110328655067,3.6340713941533584,3.1838996238823754,5.70639704034772,2 +4.2785081915748515,4.45367062648196,3.570965700561171,5.716075285747049,1.9877867587953957,2.4602604030985704,3.7363126441576098,4.441385448403031,2 +5.157343932044223,3.0233914369922785,3.4593674126361904,3.8306739553873506,3.2563972108866777,4.100849380942219,2.2653227880841564,5.9859959586464955,2 +3.9382256853158957,4.699462115684722,4.493495862103822,4.564611921443044,5.148930660316811,4.845031350036261,2.881674956025937,3.9669594768435226,2 +5.425680621893747,3.8147791059803415,2.842341422525007,3.1104132820826687,4.325532958082659,3.9560194817987653,3.7014038046736597,3.365315560489163,2 +4.0632601143252955,4.8207168413912145,3.576062003123384,3.833737391694612,3.248365732811426,4.497646922858741,2.781982859874822,5.00872810661755,2 +2.4862936703586627,3.926684295481387,4.665220558001427,6.3555077489155005,4.844563414731964,3.418212604059899,5.156898011556299,4.1628104064587435,2 +2.7393969253538493,3.8954867751073374,2.4831733369082265,4.964154990336217,5.132097786221331,4.695862428755652,3.0862987043675743,4.635872617914673,2 +4.673570547013142,6.087031189976555,4.175391256265411,4.385081306297352,4.899248373456833,3.7908255178567543,2.6566292664337405,3.4763327247255225,2 +4.041541816736777,3.4674674556371814,3.2415053423054707,4.046534225251021,4.319176589637437,5.543311056443953,3.914184276950346,4.722419384284277,2 +3.319404376927955,2.670075771609698,4.356664856213094,2.1994813436218545,2.81030252061529,5.2180506499449075,2.3295821771372793,4.567423709221379,2 +3.003185098850972,3.12075949344234,2.684456712266663,2.354624001286571,4.183364280407595,4.086167195887653,5.504178543822849,3.879755949094895,2 +3.2224541260385076,2.4725006913439884,2.7751280475313953,4.522923340160478,3.4289634518631233,3.760004984091621,3.8842727873020366,4.114218791286514,2 +3.5429050493311536,3.670912830137463,4.2334946868673295,3.850313049610421,2.6973601100494644,3.91078248702221,2.2630029677374646,4.2651587335884615,2 +6.354382004149176,4.283289810108087,3.5493582485837676,4.430587411285116,2.2523085447079305,3.5926170217770306,3.0384052585360597,3.416539793622767,2 +3.1855440604222722,3.507932235538895,2.3770585698251385,3.362115851592903,2.673921764095444,2.7500163665516997,3.128560700840867,4.8830347746693565,2 +3.6113432852066865,4.439438386688746,4.622928600994847,3.0799919693967053,4.600134429680604,4.307826460999382,2.957820675638628,4.835979791178647,2 +3.8314036887725633,1.497392832612011,4.835079227947644,4.882719943739025,4.293858568338875,2.174934582815138,2.704508977210481,1.704094666803229,2 +5.982217613069345,6.488174888129221,3.841506183344821,4.953906854465765,2.4996440061765224,4.166925288940456,3.1772840998914487,4.596526856561837,2 +3.7565752445937783,1.687885256069201,1.842862361347148,2.6774173833250137,2.481982055397751,1.8670486348193562,6.436005530943678,4.053898059908754,2 +3.5405257195349917,3.454220068856292,3.577193058106963,5.9831643759133835,3.248979094320761,6.845852156089148,4.018094465060165,2.773788415644937,2 +3.170548505210396,3.762257549788728,3.62053756182737,1.9658591504353184,5.030579560182305,3.8700959428055786,5.037855079546252,2.9197480131458793,2 +4.055124331595011,5.417835683134772,5.708087026245078,3.661878692886964,3.893051138617003,3.3185800800405154,5.915523139956534,2.469099828503335,2 +3.4903351411409673,3.8274772174407676,3.7962739114865305,4.798470617879113,4.60261793479705,5.373006962726251,4.287656807981909,4.148738800379185,2 +3.2814153342351045,3.4270010911864026,4.217754238189935,3.6254455972090383,4.578889120853543,5.0175809921643175,3.942272738368812,3.296865501618232,2 +5.394826859890886,1.859316122747018,2.958062080550668,4.858148893467245,3.8321914613465045,4.125223012492046,5.292415731166228,4.139027627857323,2 +4.053295297926488,5.035661300972635,5.486405334327003,3.7801749099017066,3.536135973183639,6.356601129367563,3.6901370840681227,4.064101200937513,2 +3.3480362242819637,5.332934157010531,3.578959506816171,3.4338079708178224,3.0041565428683334,3.510867651446952,5.771261821579297,4.598975666491824,2 +5.404421423148216,1.9444979409114662,3.2390454324138296,3.401511196755507,4.810538052582157,6.257157071724645,3.6532305415766486,4.30414414687763,2 +4.426782173870827,2.87400778049755,4.13529635925076,2.880254297418843,4.152824136887357,3.614235932164412,2.561095519798319,3.288642786257208,2 +5.126860651796484,2.914280410718309,2.0464977608917936,4.231607992822354,5.449203661931029,3.708963607521962,4.318940653992117,4.9597993972452405,2 +3.4750458688410033,3.882680044068791,4.325746783701322,3.087029208811271,5.347633844944896,3.7798822999983415,3.771292739900197,3.642352963481598,2 +4.7635062146942255,5.692394311441786,2.714031114362568,2.8771613724856606,4.980057416639106,4.924446453529576,4.963658598237731,2.8657354233506873,2 +5.436479758596159,3.5660238071446306,3.60356602592127,4.211876988170414,4.986193227762375,4.965651250037764,2.6015484402788713,3.535891128538976,2 +4.219775108074842,4.696053048834725,2.5374464218068535,3.4249835143947838,2.931304335437317,4.133881010493962,3.141883454669236,3.5843798320049,2 +3.5958769123016374,3.492207074155947,5.776907082393378,3.6539942643924817,1.475777548961009,3.157257923358367,3.9102081410705414,4.126990165190835,2 +4.905576174968368,3.9297315563818165,3.201857826511038,4.943558185568464,4.108229210177549,4.54139242625934,3.7158673469842354,3.618076256342839,2 +4.623003752948496,3.0569877974412734,4.548250864502124,2.448567517717178,3.748157782068428,3.5524179375316534,4.774777847334794,3.6656006385316635,2 +4.067209185098848,2.256743199258362,3.702364584057214,2.1695316543923706,4.60555670417059,5.354100170544358,3.6128302115089084,4.83806902383313,2 +3.1342849105979895,4.485987939792899,4.184374214656565,2.868370564620042,5.177595108744398,3.6657710063586437,4.447488001094762,4.614172636372705,2 +5.693226810361224,3.388992054253524,4.798899383192365,4.033276365480452,4.544849172280596,4.654378477559208,3.4210621820750675,4.741597806809197,2 +5.604674938691125,2.678152104028946,5.089083675390311,4.809505989536849,3.4779643744274535,6.4182415549473095,4.153532014586132,3.7774947604724747,2 +4.151784797071509,2.846501461738346,1.8363984633535049,5.805938752345101,4.12134773560157,5.468323597648429,4.367086214499405,4.585889080664225,2 +4.859317885672155,3.526281829548308,5.030155105301074,5.4287554726951335,3.416505647167028,4.117147622300925,2.240017889044994,3.71407787529158,2 +4.429834764374719,5.186263995566849,4.9155860356769905,3.388671486917819,3.493776629026925,4.594005120302785,2.830678804219236,3.18851854588201,2 +4.7951117635774745,3.794897223170431,3.8498138873108645,3.8195070808187843,3.9969002268820097,2.479852505541113,2.9571213259201636,5.976439887661803,2 +3.353158747645745,4.08346856380456,4.436787237648784,3.9739633694680476,2.6185401720978922,3.671082905334547,3.664941434444369,3.020075512341892,2 +3.4393679879802814,3.4974987024564332,3.5623433655313015,4.076921828118948,3.0855028203453494,4.948766844191347,3.440790181219502,4.062956663717381,2 +4.194402149265007,3.255974850794362,2.8355863664789966,2.732834477650958,4.426124485662966,3.5411200688610474,3.968775626823671,5.740514936571766,2 +5.698710087885886,2.0645858126768117,4.545947868720135,3.9487630640486397,3.36631426631462,4.55633796107213,3.3113466090134387,3.649176563181361,2 +4.330463753759133,4.25566017752446,4.632108733928863,4.724064604771469,5.440112292812597,3.796024937645347,4.540057404300769,4.970666848898531,2 +2.5868094391830994,3.7025327123243983,5.873204322154223,3.6839721438319146,5.116365918588017,4.268853707829763,3.3055435015682786,6.749299393603353,2 +4.192053614901292,2.9735143120848955,6.621462072969582,3.168032742017974,5.135981577916985,4.440666186922427,3.9615138446236684,4.5757482109244005,2 +4.198336802381721,3.1204639263323006,4.313971161184544,4.6883347981694605,4.110937744053181,4.199039320014654,4.9609212608380675,4.38834182834772,2 +4.429243253541804,4.072428137305687,4.231891024499311,4.0044477378002,4.711315286828678,4.731786543265162,6.466507077188694,3.7815731094269096,2 +3.939205670977175,4.245124677332139,3.2205801366019142,2.214763950641264,4.208157630569736,4.166240951435885,5.345220894931721,3.2006946446463393,2 +4.117815546282498,3.9762490422932357,2.2519914050525074,4.481880699813361,2.3568303739836054,3.255732095907235,6.135972686955744,3.4182577891423422,2 +4.206002929324607,3.029971267539066,5.44031306507695,2.3189748571861535,3.1057902416467567,3.6010388806942726,3.8410677304976577,2.381006901432967,2 +3.870388152738188,3.540159716377456,2.325100606339225,3.7935638522543225,3.461209675308752,4.248736971975882,6.021364212876774,4.188113725457062,2 +2.50379983478026,4.346904388363106,4.730604186806336,4.230408591114142,3.3763939636005027,3.969594780054122,3.22495800609615,4.83874329262302,2 +5.366756196851076,4.706659888610936,4.280638016575979,2.95350759574658,4.070481953458058,4.385905101514988,5.8917617344544455,6.052786130035176,2 +4.923069523679732,3.536421432380677,2.921526654058037,1.0775619244002543,3.9061761417778813,5.901950042382958,2.9566723934217505,2.8308774313999905,2 +4.32071638221458,5.972805918863934,4.080661918807559,3.141748904586127,5.5354661694505545,4.299071923227653,3.4316689377780527,2.663572447785805,2 +2.2842064774923116,3.9839657875295735,4.100229830061808,4.542917931497187,2.6068146621686266,4.9060419931626695,6.146834938162945,3.125752161894917,2 +4.364341454422638,2.5159896645650783,4.297175346296519,3.4172484914534094,4.402963468586451,3.838210621000138,3.679405000495275,5.498332546884786,2 +2.9868836081209373,4.22800609949535,5.137697530364959,2.331161335821523,4.805843453265049,4.418924429155386,4.830053246232844,3.2314774785945795,2 +5.332449691555157,2.151660053326549,4.437997406839569,4.438384729593773,2.9843401485086933,4.757875862881912,5.005091960405136,4.519720950820359,2 +3.5232004960308605,5.101610369418319,2.9455734567507292,4.758453990516219,3.060777342989283,5.3746551515549275,5.03697589346602,3.849935440342106,2 +3.5777561571899326,3.83557131342508,4.828667933393274,3.0599756674540877,4.688867823157304,2.2889886222556353,5.524170920082574,3.6885761319426114,2 +4.560584809256847,3.2988592777528982,3.6168559564962814,5.732694791873458,4.840806594723944,1.998614792684211,2.940860833460783,3.8368968878037593,2 +4.891033080754017,3.452553945407396,3.443938868664614,3.957330466542748,3.9006405328250495,3.8785036639668387,3.264343348407053,3.7770221917262083,2 +3.9666963565628435,3.4177121119109497,2.561650256461972,5.310302564305525,2.0392194733666296,2.0641591285275993,4.011565260755036,2.732222517490249,2 +5.59697148817048,5.891745645344825,6.898241996092384,4.822735454412507,5.205581446476013,5.087633313435653,7.256052816281395,6.190186545000299,3 +6.811738076775029,5.8360829340346365,6.469020691823868,5.966590255749882,4.033926145561931,3.9413223190034827,7.332971566673527,5.666467847322992,3 +6.204566484367836,6.440268799251442,7.371764397513338,6.039934790803776,5.22879127261375,5.533336343786485,5.274676361262708,6.823886810685174,3 +6.207378196155037,6.528347144092705,5.3555953059126296,5.331775670941594,4.74518491491094,6.92407237922672,6.590509087139269,7.203856960347007,3 +7.940650209840396,5.294143627054091,5.738817521453582,5.2207201178168114,5.126805136895168,5.280891150900074,6.7432396229160005,6.0234669311499855,3 +5.765171847247118,6.5951469884292075,5.493123148557757,8.394651311494883,5.914860841149211,4.709724090730997,9.284868854756553,4.209525972968418,3 +5.297743826309146,5.931081212320365,5.5482945389918275,5.216599206592198,4.718161933582711,7.202109880418144,5.1464824183335525,6.688734907211476,3 +6.569898051288225,6.174687033845818,6.123304974100798,6.349352573851377,6.554777780692275,5.9216566490191775,5.740433365727919,5.886565135578821,3 +6.988063267065312,6.6021925056231785,6.749737297744258,4.322933513127584,8.039943771294558,5.399195603691472,4.747687722805656,5.961192201485879,3 +5.842331770164682,7.068659355979985,7.018776096713617,5.926306270088637,5.888994208202518,5.046336887894639,5.84260390892873,6.987524680626197,3 +4.474365109993667,5.667507170171321,3.9963549265004983,7.7585470406556665,5.377934089475507,5.325022825975064,4.986836937845153,5.135853000251648,3 +4.44370392998136,6.4204199500156305,5.866854433505149,7.089184084735173,5.040905307582671,7.659884593470986,7.419191673173456,5.976753419077867,3 +5.394752687064243,6.795177268545873,6.526313847915001,4.338260118008636,6.3128140248001285,2.8715324408925036,6.909255234220919,5.49749448970326,3 +6.269856241991542,4.647656678764218,4.546063992729522,6.538862901664078,3.84113005129544,5.269781383352505,6.045553693388547,4.42695659592871,3 +8.095447303083702,6.429480770739465,6.466635077818389,5.811561965398898,6.423912111442849,6.604505095169122,6.479996647469084,6.490747943053717,3 +7.505765135565465,7.445478630989465,6.525304663367912,6.844475489291038,4.773852432683498,5.007912493663779,6.002308320397097,6.199517471243993,3 +5.084971896313026,3.343691908085674,5.078912247255194,6.242884033151516,4.389976235582044,5.125092405343561,6.00860584783779,5.210939684610082,3 +4.998011367976556,7.057306599610139,6.279301338860468,6.097569353978786,6.054877585324603,6.857775198309199,8.471286887307997,3.1392950274735014,3 +5.807917303328151,6.229899542080099,6.149980571277755,5.722508784993245,5.014239904127363,6.419047618672667,6.135467477098929,4.267867900605596,3 +5.303553114109439,6.2517400202700175,5.085461937640911,5.239019847993725,5.403359099019585,7.206650416889848,6.28913995084855,7.205465259349242,3 +4.988326624180386,4.572131505812846,5.435843115609283,6.9916612799043465,5.788204928261197,6.235262682356899,3.7971981532901373,5.146839551390904,3 +5.611247424552599,4.820719059322996,4.449178000399005,6.046634965669702,8.454711028107317,6.572199525900476,5.001686863995204,4.6470287797402845,3 +5.540390624568698,5.842241463344126,4.7802695703454425,5.307519062397459,6.922835665809468,6.329313526763298,6.026439525795975,4.876757797442178,3 +5.72777672488151,5.4935257433055344,5.632051513202262,6.788505665858746,6.146238962562622,7.421094193477622,6.555358825912665,5.274340586165497,3 +4.7389065093038445,5.336369173118959,6.155024753674562,5.314325959606361,7.5498605100464005,6.755283766697658,5.417762527228393,5.149611993260064,3 +6.257746565552917,8.02540557174648,6.778731513013546,7.451936072296259,6.4171324885229115,6.623518014466791,6.585425824076412,7.291955761810382,3 +7.35599349883083,6.5983495838192745,6.041629264879673,7.591249283856836,6.3233236063923,6.076473994948357,5.943254370564173,6.807245832749334,3 +5.138210038267688,5.497715922894273,6.154646958306523,6.666742058302489,7.125990055407536,6.4040324872016665,7.321480462876923,5.409432242346102,3 +7.485753944307804,5.866497353824306,6.330737805864184,5.767422044683031,6.647025281796314,7.458088735005397,5.0462162832449735,7.086912720229179,3 +5.661958256055811,6.298738819995024,6.586540833970594,3.627873786042019,5.087326776061231,7.232464209892826,7.083327562033608,4.885636266835694,3 +5.934147393854211,4.201627655705742,3.9589220263256095,6.201641379762715,5.029028589457488,5.468933346287963,5.363543840495088,5.138410562424282,3 +6.2354196351515085,5.260472090086427,6.056022114677165,6.140451187100568,7.136343807440779,6.663639635195041,5.115748653434721,4.843924582930908,3 +4.09279288197244,5.050877497744037,5.420132643906175,6.7339026146398915,5.112284233277735,6.166694877610514,6.362849660492802,7.3658762344191775,3 +5.17438191227162,6.459918017080379,6.060848423375773,6.08568747591468,7.015835293038518,6.204501327505799,5.745439628336759,4.80516271163849,3 +4.953666164578123,5.964784373396758,6.589227973653148,5.920542334014289,5.686492706650429,6.99642385095625,5.732069632424561,6.287586387199175,3 +6.911514069463399,7.685639965820196,5.7740804105660954,6.0844433027323905,5.098542039365698,5.755418331060302,7.294859389010181,7.268877771403455,3 +5.853385035221917,6.7853194310550675,6.11037922562661,5.785009513226839,6.7853350900625236,6.5052538089069705,7.578791893043828,6.4766788162942115,3 +5.010428127228316,3.905097973942343,6.164756496705134,5.451956281041021,6.379349539130273,6.828101891085621,4.9328864790757665,5.531925653102116,3 +7.13982972221517,5.931128331012887,6.884353246747401,6.64890130706752,5.001520135940611,5.552443725817744,7.096830999424052,5.867207030074242,3 +6.058993822631158,7.564540302411409,7.211488980336566,4.797189846513112,5.4049810351835506,6.399654449455553,5.875148925664284,5.249057211079892,3 +5.0145700694736535,7.971315783367805,6.32111018578056,5.840451726292474,6.610302093187256,7.474602768831446,7.049468691445552,5.108473610733808,3 +7.832105746480389,7.18457494485089,6.77431097701912,5.935125875967405,4.609964753426444,5.961376811747846,6.330990798376398,6.116452367860471,3 +7.027231611564622,6.7995779391958395,5.639403667553557,6.2113895667167816,5.88005967088797,3.8577735427868887,5.743936157946825,3.6293245109275163,3 +4.913610444695394,5.900538761639756,5.057835411010721,8.383346818318824,5.921426592995555,4.468440598232617,5.8204147921383536,5.841172332418553,3 +6.26400072374974,4.4550450056423205,5.436920164879764,6.325471032619691,6.928065255474021,5.164960444459258,6.218866219113025,6.542889451901572,3 +6.214517574970527,7.919362150902851,7.1084006254693515,5.921822832587282,6.143278392667197,6.973661186757481,5.684452144339742,5.631817714337703,3 +4.136871241258337,6.147139814973158,6.744762106472046,7.158834266820179,6.401459464086157,6.022446537378225,6.007727761813892,5.322264554640164,3 +7.18286210130847,7.384690196200596,5.538804567744025,7.845982819191166,5.838484164817818,5.817073344434677,5.095395061213325,4.827354475020365,3 +5.082102922250937,5.062674672182591,6.135903675641655,6.210447377081896,7.298716403527043,5.880032290176862,7.505680811987247,5.394015117479174,3 +5.250111107789168,6.122524829443407,4.593636433410634,5.604750815230703,6.810730253953251,6.527678663618465,6.092255911878556,6.689395102293107,3 +7.077869549102097,7.296688659598018,5.332292630870022,7.352514846396563,5.56721542793159,5.632651646334526,6.10595651411272,6.483173280867246,3 +7.887902608799591,4.90207467330629,5.740304050594768,6.052988926820562,5.12334915696489,5.390791953034229,6.360920602294475,3.983260218640524,3 +6.620759388167062,4.347833126389651,6.626722039515641,5.2316111317297125,5.958494730392113,6.356367513826135,4.891323151436702,5.687039164639721,3 +5.794992045040095,5.394017388926157,7.8065156872878685,6.123898043301816,5.420329533721963,5.787705063135634,4.392791368932301,4.3305276086934335,3 +5.872772057637201,5.691588906382825,5.6850788641874646,6.427397703367661,5.5657268099319,5.754536318359865,6.7335956282700185,7.074522107802015,3 +5.782313646702781,5.84892605111199,4.953689193748763,5.334074600477992,6.87903212407647,6.982124534754006,5.320551462726238,5.36336410788528,3 +4.728847991376377,5.356185691577872,6.251228754122312,6.22858318219273,7.00134838733257,6.6986052417552076,5.945326645689822,5.593691113867363,3 +6.243166918399859,8.867346068924547,7.710939525668547,6.722650824646633,7.431494050297074,5.003293002298487,6.631129382603766,6.897100952417721,3 +5.88015799274584,7.4999331445697015,6.789836684416926,7.243035501977709,4.144927909867677,5.707659346174038,7.497261764596144,4.904019270004307,3 +5.109956496441673,5.921850003655273,6.475625777848605,6.047238260072008,6.829161518645893,4.912634040333997,7.731374811322792,3.512120644834091,3 +6.67481739956272,6.122108511280631,6.1303859777869745,6.130073903915974,6.6863401980846024,5.1924721534910425,5.458481961776604,6.394875122870577,3 +6.364507294376854,4.25690593023233,5.3324230722607595,6.392506660291389,5.509079249403806,7.054121513372387,5.279393781736018,7.4661149163613345,3 +5.430015109479103,4.829017384536009,4.682247768374412,4.720057218843428,5.535450254961154,5.847658014892902,5.3952905625770615,5.288102324290981,3 +6.419991254304971,7.039382271846871,7.790841955782647,5.035102705814928,5.955019184218466,7.336966840182804,6.325734389031296,5.37521328013007,3 +6.391410308994998,6.798216786954523,5.249974101054427,6.001523719079793,6.138443528493662,5.93851284352534,6.822195215768443,5.81858225203817,3 +5.6142736047206405,6.218471721247023,3.7580562471421457,5.059803337687781,6.338963276987094,7.500802485462696,4.240661433065044,5.9297213567641585,3 +5.695751020193782,6.484222240578631,6.006671823072859,5.349850713299109,6.721963815061241,4.710163898740394,6.523269201629682,6.330224306201421,3 +4.5733721637655185,7.302795353481454,5.976243327666429,5.764220968003997,5.2080761603158,8.001783217124594,4.735092479676563,6.249962115624958,3 +6.223346789759075,6.18212540713625,6.016074414790871,6.538149459513082,5.791396088688229,6.0308179051517525,5.983703655124529,5.605343005213106,3 +4.3085777891881225,5.424352894068686,6.33765806164189,5.586412045569441,7.053012162680858,5.046344886580793,4.818973747731272,6.4419606707275054,3 +7.678832909152071,7.1762487966235,6.210637967018677,6.582713500551089,6.8374710043763995,5.906161804909059,4.917203522863655,6.629790195915854,3 +7.309005193281025,5.895134743435071,5.634236824892285,6.123679463662694,6.504936477009118,5.565315943818425,3.612964418520074,6.180440443065782,3 +6.013496510092571,5.814569853411764,6.963882808988516,6.5998411571476945,5.844694707266488,6.7186547398764205,6.406422069806894,6.822591958083134,3 +7.028439336554252,5.809679441883331,4.982149885982256,6.108876078942898,7.227786101119949,5.503862014939278,7.051021824232454,5.193365309206683,3 +5.219271975179134,5.804937837551657,5.127382021422393,4.4530099376454455,5.273748400397933,7.37641078315579,7.463300302092928,6.110922208067315,3 +6.95875211347037,5.025658414791226,5.769426710321337,4.279509298231522,6.525605926267414,5.80354441165045,5.336908452523877,8.243507091366475,3 +4.372886507509202,6.0541799607680105,6.816227587952046,5.188326883221441,8.169286620516326,6.7944497927853735,7.078277421835012,5.350075516262568,3 +6.4922446884049965,6.496002835586439,6.744796951081689,5.683564389024358,6.774954951416083,6.890230786095286,7.522997823027712,4.738340650594336,3 +4.816204421121065,6.178168443966764,6.341756589173002,6.369238924306246,5.06710220705847,4.789572624091741,6.223299582055102,6.872646760269761,3 +6.1291876921565525,5.89705597437711,5.291553990811433,6.275554102208843,7.032547169075298,5.428212286328574,7.135752466902483,5.754311887396102,3 +4.907991123438128,7.357328578818769,6.3079598155838,5.870881320755775,5.488852972753035,6.403226624314329,7.450074766551129,5.8813855900085175,3 +5.360922652745306,5.6073939498372,7.153311387863272,4.709435340541001,8.507207662569735,7.1104969279644825,6.0075631789639905,3.825769542603759,3 +4.951740229456503,5.741040865288841,3.482119013595818,5.927226820115065,6.5399100230156435,5.21256653349417,4.356119725847318,6.096856452109719,3 +7.061223416430078,4.414303905575326,6.10254657678151,7.131689343861642,5.4661334280367635,6.714904257534916,7.195431236922472,5.738748698366214,3 +3.96829430885576,7.328678925000247,7.702568648674751,6.554157242281237,4.319396996015689,5.545446868095166,5.140996502386494,6.388905212956002,3 +5.857041299493673,6.1772650642146445,6.711432596977801,4.752920342814441,7.022792451563806,6.366859185002153,6.748848740899279,6.411206879239945,3 +5.465228846801784,5.246245030693169,3.9387228631648585,4.432268718060038,7.004981176060485,4.445616417968335,5.298699639329783,5.448610956939863,3 +6.487879842297397,5.613377241312349,7.7507256352666225,6.660129226123915,6.690605632182049,7.387929902316033,6.506283548803353,6.669797640477138,3 +6.187565482156866,4.64319981444753,7.885966191215997,6.042170568476287,6.491706376249612,4.073426735215429,6.118614887193642,5.942750857982544,3 +6.953138766863684,6.924764329504425,5.378971559398785,6.667581856112797,5.852974804911396,4.658297660626587,7.9872830276736355,5.5265196559507705,3 +7.169185495815665,7.004208464772524,7.3661333501144775,5.640196434123298,5.936968014589874,4.80236465883737,7.272340794706074,6.691286818212811,3 +5.168856708631729,6.5825362436326955,5.327958060084559,6.741238691259919,5.67474295910339,6.729398179337279,4.2626255534224775,5.3271540821603445,3 +3.8286768771611084,5.159609653409569,7.061970330955152,8.16297676135678,6.736746792546899,6.996051304266508,5.981352449732207,6.338600792575928,3 +5.234257028666611,5.947664289698273,6.823474603093009,3.90706626273889,5.247397559111125,4.62862110069584,5.496914508258392,6.909610993563073,3 +6.15606119396541,6.317304228622562,5.677887647180334,5.974307306979432,4.946548950864265,4.7527327757275595,5.9675518986627205,5.382730127150071,3 +4.844026009849111,6.475945722069833,5.17158056668615,5.2393875569106845,7.072738144797413,5.32114562651829,4.965894272643831,4.480956418516844,3 +5.277563610531608,5.083048340969091,5.490611098079083,5.955478620697062,6.292935279907227,7.950548931694809,6.231617645174213,6.077753818239958,3 +5.78113081612407,6.490481967961527,5.595806462565897,6.078310673069564,6.86776526598291,5.891812673228063,6.515657762590782,5.221012569585371,3 +7.1593262387891325,4.660298872856721,6.116523919049864,4.582322635923557,5.526841194040675,6.343323218491769,4.329819444385755,6.335618211913246,3 +8.071328104569018,4.633604300910903,5.734564653184286,6.271085306869734,6.5842951332306034,5.423457421923738,5.153416291850217,5.193693046096406,3 +5.842790420267091,5.25427583147846,5.827379895246307,7.586288322903347,7.578791429340309,5.878141914151435,4.045541582057207,6.6290377927160575,3 +7.145776554775281,6.783992749781292,6.025233187962184,5.37918995069598,5.795059652079482,8.561576770106289,6.899574493085765,6.2985930725770745,3 +4.428606152695557,5.282711156290873,6.894510184169908,6.076838386295677,5.651407026966757,5.226380091574834,4.81322710227864,5.178472072491617,3 +4.5070896146833554,6.031174300218454,5.839607258992479,7.5720446098490255,6.796877798334628,5.008614226981802,6.257366567419993,7.027532013317512,3 +4.468904035259509,6.09887813964862,6.89687384140916,6.390862285295556,8.046897489880338,4.094552692777536,4.5577623534638505,5.727699675428932,3 +7.092542016790687,6.05179432516062,6.746531209709402,6.735852011727946,7.362474250399961,6.465147411283013,6.769885851750083,6.456524323055376,3 +5.452884530467868,7.562995127685937,5.807370421025813,4.085302286579087,4.717614936230524,4.1202069854097605,5.160717308339849,5.770546922143554,3 +4.909413271050907,4.7655213160669785,5.997684976869645,6.61811095635618,6.08344491551362,7.319659083040311,5.210310241114626,5.711849942064071,3 +3.644476146320697,5.165686549515389,5.965267134983896,4.961468369928746,6.089474836555205,5.590634813374745,5.6335334307695355,7.377641674740808,3 +4.957529315405653,6.580947185598621,8.167950555431645,5.482565438637529,5.797130948228798,6.549171092164523,6.51034549832026,6.834718720949702,3 +6.377656771246201,5.465028904778423,6.513855727831558,6.176420091995054,5.382600266182438,6.275718803552335,5.377646295246119,6.011996445921449,3 +6.505332065893509,5.020231860586019,4.956313528766647,6.555333779523399,5.082413536437966,5.924179843348917,4.947939425132458,5.48476341854612,3 +5.553872598952379,4.585836373878762,5.277322275598638,5.188577733118768,5.950497529607906,4.900562014927472,4.397538090424088,6.587648973006038,3 +7.139190723391561,4.568878511190461,5.9797370580332005,5.800031248919934,6.342241296827576,4.592265783006702,5.980265745159685,7.222592688901271,3 +5.163174095690345,5.6103029511060765,6.481436001620682,6.226728270388607,6.1846065106968355,5.182378613703138,5.934374392422893,5.763285618170544,3 +6.61924421459473,5.831147567602645,5.507146917864456,5.1710129164591265,5.394847946828541,6.7749776325516855,5.30440893648365,7.184298885743175,3 +7.241558093436851,5.450996623552535,6.117191680882289,5.4616363649018504,4.809562819835665,6.623579313298938,6.863841781898436,6.330557036716402,3 +5.743614660282076,6.439605914420768,3.951310358116534,5.754850292609276,7.073766034329324,4.0877613243856725,5.967923215037263,5.019882061658586,3 +6.1107662286814035,4.628662026294922,8.329499789632365,5.117316574281338,6.620968283594195,6.222443683673244,5.984187039627779,4.751003191956014,3 +6.3086206523139445,6.907478065562745,7.385612367170743,6.509884391272451,5.435842692542071,6.6724350648473765,5.833389316149375,5.286380736407181,3 +6.82401761487133,6.482374163188039,5.348519442389293,6.558471479392829,6.089555838072871,6.187873321559419,5.5263321484013,6.838508218147229,3 +6.34514517511721,6.812504135142536,6.891076583919693,6.172437949239501,7.864375027825124,4.671915829881547,6.126058963880911,7.94017104557223,3 +5.9414051035837625,5.4100022572651225,8.993229039211688,4.851967356069333,6.299861782954622,6.96647794092364,6.958848506292744,6.332129234619476,3 +5.451554497490053,6.401984904476318,6.3487211690012675,4.65012768721542,5.852055128377578,5.720124534241241,6.175842735244875,5.259396453757502,3 +6.395348963879238,6.0959727522177865,7.596772480308935,4.925815313463591,6.646889987909408,4.92175394407822,7.5581578600248545,8.090008376269349,3 +5.35533248896863,6.787038034662788,4.9866717652157,5.779349520857254,5.197941236411327,5.211578952876919,6.432349393290529,4.5969218936387835,3 +7.321822797815057,8.06128591057699,7.71046172309379,4.92852163613606,6.485057199276876,4.24912752547829,6.3410318999911555,5.741470637018079,3 +4.815022350777216,4.72488936314874,6.3372785137276,5.708501407541773,6.236272136511576,6.40623616412495,5.961119045490704,7.218743742462477,3 +8.220609102805073,8.582124014180781,7.117979929850242,4.959499735356122,5.098928677922723,6.559612701569859,6.038284880257709,6.324258400964769,3 +7.257774975566713,5.537275919607353,5.86800457135698,6.171508933721574,6.702564458880682,8.240161800694697,6.75261500475582,4.873492116186011,3 +4.708211153515344,5.05084384329706,6.038635358895006,4.190796753407415,4.812116566828143,7.130299438310374,6.0961349997793315,5.473902233130168,3 +6.925281201272728,5.790321992858078,3.976541947711928,4.439858854511074,6.08102504619805,4.932334094216686,4.90801629216845,6.586980198462309,3 +7.980889553435993,6.851898319224534,6.185091532500565,6.193653263594504,6.211686219967859,5.6056222594176335,5.094625474252049,6.39773337230025,3 +6.621705678694932,6.017306787982608,6.11285396454381,6.770734355589907,6.247159929044225,6.4756606245316926,5.164554408576566,3.9787415396930625,3 +4.57074562305333,7.2561742248709695,6.584360322373509,5.288451357695409,7.296636934836454,6.6933840075988,4.2962510973361425,6.069169288190781,3 +6.481161009888556,4.152774107416548,4.823645607072795,4.3753676567564,6.4104757931476035,6.496817577624187,7.22975003391538,3.750181491844465,3 +5.440810907699667,4.083821462062207,6.74933834631967,6.56884461671688,5.578134514561811,5.74233557449471,6.186710042915392,6.067983175293555,3 +5.469407915692863,6.28025050840089,6.6541733544566215,6.651230179794825,5.0216294503406935,7.593876992650555,5.675164830133572,6.442986975980765,3 +4.660424981153801,5.4502558837128685,4.118355185065607,3.7661745688538275,5.244781153248756,6.393757484734317,6.47054754525259,5.6474209326061935,3 +6.619663334237202,6.637294479048975,7.748867580093839,6.084636171094272,6.173248378668855,5.775339322577857,5.656025173800348,6.333561872683077,3 +5.138517163678192,6.672451054374887,5.688356972393206,4.75881723334242,4.701576107270072,5.889085237596949,6.020102508652409,6.2904766085113835,3 +5.064438918784638,6.035418137611446,4.820140547886896,4.002297696525367,7.556140264372087,5.4783730627498874,4.893834219264279,6.562300116869952,3 +7.308874427724656,5.432926464237811,4.515729720868926,6.1499224975065365,5.1268682606674645,5.110832307506011,5.223375507676795,5.8072240350517985,3 +6.91459552042513,5.393597298679165,4.996885424932789,7.049026658050128,5.198594346333696,5.645105025523564,4.358097871516511,6.230496925158918,3 +5.574869529017711,6.783651462489255,6.752755082232153,5.053818365204932,6.6062911490074825,5.632418242301948,6.3657527235516564,4.0692994410414105,3 +6.546822159513664,6.533499904613615,3.8478267108826723,6.229824404457616,7.593946674125802,5.359337466650315,5.43048073665283,7.09982429841579,3 +6.68375091237857,6.116642679570946,5.388215352526994,6.722304019831491,5.904110014366303,7.066493898353034,5.84516998113941,7.136306419818061,3 +6.077282645003194,5.781113689075636,6.665779758546435,5.688576885136179,5.053918486279983,6.2810048353849535,6.601079022898203,5.797597880200659,3 +5.018851436413167,5.508616062561642,6.770012941274533,6.130989185276041,6.738319629699719,2.845804381522189,5.3788261718683925,4.149283827649223,3 +5.10808137089239,7.055207626791558,4.3349130659603405,5.110371197266846,5.560445512490083,4.418054485022678,6.267712487848684,6.329916888405993,3 +7.610866538590893,8.366666863555679,7.94851479912095,8.797333645478302,7.876571059520736,8.063519343642652,7.38659828359562,9.033501109230164,4 +8.653146139132355,9.921742817423185,7.457164727274195,8.36997210995647,7.482289676217203,8.836534862430101,8.255961260418033,6.680424049632508,4 +8.208148956493837,9.341993573895431,8.439166989128974,8.787668715787444,9.43819458531066,7.418781703116362,8.86332363087458,8.42860905510322,4 +7.505101679128052,5.942043744613423,7.823955388865744,9.188553761583966,9.404014561165104,8.563545903242797,8.942473030873536,8.609300307002444,4 +9.126546809453878,7.981725709197867,8.182405242954859,9.596574849446297,8.657555092595924,8.457937349884844,7.632262339751766,9.12692556436128,4 +8.095999213631089,6.750345028190898,7.685566851106753,8.654168991261635,8.544554802838984,8.89120370496328,9.670668087106566,7.7904062167061845,4 +8.814502422865985,7.487295076319567,7.4451584366812105,8.544631622980994,6.996963757396587,7.70580791563661,8.304697105823399,7.487697328251954,4 +6.375489532981887,8.28786477586457,6.282332847565071,10.0847541159817,9.008403978398228,9.166082465500637,5.861756216782272,7.119941070013018,4 +8.449720530531406,8.534147118482814,7.83634699425108,9.911945685942838,9.058363336163094,9.0157464902622,8.78130032998067,6.933611413206877,4 +7.790699053554334,8.437725679735282,7.55686835590438,9.363967438908197,8.206848807021686,8.310522707496505,8.645146682886706,8.605271153723061,4 +7.405520125684631,8.30775434457878,9.062788586249983,6.0696733780087255,8.096511599322454,8.57898150798755,8.312885185459805,7.86592325924332,4 +7.512196065926938,6.629293309651884,8.334792018581814,7.373392679246348,8.44301915540379,8.04681578052252,7.074277719949241,9.213209149411263,4 +6.980082400059296,10.374684081159902,9.5721707455246,9.652830643421566,7.357665982500465,7.552566438616355,6.836784961714015,5.791245600248063,4 +8.638716880465594,8.922339234093043,9.468802636033042,8.635738851771817,8.321268593959255,10.03050043052275,8.563731899698118,7.315761310923433,4 +7.226435886008649,7.905368683790784,8.798558851841964,8.620138545127872,8.797843846226968,8.125777742079213,10.459922379013673,7.082532918503457,4 +6.473501176904911,9.319947979376456,6.431819931155713,7.014698262034301,7.592811589398278,7.1990521524959785,6.830792135544571,9.231870343080042,4 +8.592266014131136,9.368235227426204,7.260240624353391,8.371849448533876,7.679012578319896,8.20027052002802,10.658405887335576,7.9151981507091005,4 +7.808478914809462,8.994355317731266,6.722186597714352,8.44184204111132,6.8707708103512495,9.536344356036182,9.101083810272193,7.200210366129104,4 +7.220289732095423,8.680731965025874,8.568845296297214,7.229150674781697,7.019932723790847,9.028304182060102,7.3696683717869185,8.031017164813719,4 +7.737521889871433,6.147934059377189,7.488469169037733,7.90519479995425,7.1483461485069615,8.537361490241706,8.50832979389493,8.37016179401823,4 +7.929210095469269,7.543271026194034,7.382698651619153,8.951592119672723,9.125699494122435,7.289381278316367,8.581894829401152,8.400694587237568,4 +7.321391135455145,7.5715533124609,8.16689189579777,8.55105558680328,7.83050884704714,8.107238209076465,8.016137132543882,6.565467567772415,4 +7.430029777403995,7.026727283789926,7.043462615920927,8.17579928341357,7.322060004907648,8.064778795377352,8.998161793622684,8.833294204358584,4 +8.492312614468565,6.708989891610869,8.914251912344454,8.448241396699725,8.13888465987705,9.36969067962397,8.225447465647033,7.877181847979786,4 +6.8198076482113885,6.466065722098548,7.522299421592272,9.073626303085497,8.223765026889188,6.03829424432974,7.260813694106562,8.179486352783066,4 +7.595731074127348,8.012137830243471,6.451248342182035,5.428148700476303,7.600946863647863,8.131840709916307,8.959629818852353,7.727397651567436,4 +8.626056130418405,7.882223937460641,6.280387364206655,6.889277416537664,9.630906868112795,9.306321215392447,7.514757626640319,6.881047364877554,4 +8.068385998876545,8.96987108654303,7.6896505072440045,7.415476476467862,6.129677196330345,8.042627505845845,7.663331798508348,7.412817140689634,4 +8.030550882211816,8.349561091590108,8.366390911040334,9.514799362020158,7.487895736159539,6.940652399684979,8.888267564141971,8.142367536330688,4 +7.664907397762248,9.368812078012176,7.965754862731516,8.602397894025518,8.563837772895958,7.446896816457691,8.566416093005007,6.912172706840586,4 +7.968848348692389,6.532533262941652,7.382090147317673,7.603121249177597,7.780935454321537,9.034321622217973,8.585404089997962,9.194541549573877,4 +9.000194460811276,8.265077314142296,9.027541948087901,6.793549682649603,6.415974425771762,6.221826999078724,8.43407764789432,8.207096640799238,4 +8.923828254943977,9.617768264401167,7.83263378616469,9.391365547642454,5.816383239605768,6.639347201452837,8.222563121787045,8.471083874925663,4 +7.641286287388404,8.731546456346424,6.510116403006752,7.6758319562661494,7.834863262337262,9.332730708217893,8.43864286031492,7.521120485018734,4 +7.245952027137459,7.960586809551719,7.941537448640658,8.391701289193248,7.244445463570246,8.165415009727194,8.607995294137094,6.740251930553232,4 +7.12042890168007,9.103655897790064,7.656013320653076,8.899086954187725,8.09652462381598,7.587880656936678,9.973012790576522,4.960887221141172,4 +7.708479175252286,8.319527561118264,7.635362933647997,7.242808355206568,7.162923735762482,9.146923142787127,8.118427333848643,7.196681713192102,4 +8.562496221208757,9.58320200795969,7.085193316401696,7.444477695070872,9.533759458170234,8.670337748012596,8.712183878102874,8.7253837440694,4 +8.161567336494569,8.536146837369348,7.748918660351427,6.5856054070966525,7.516973807058843,7.832643234972346,7.446034137217614,8.686341277639741,4 +8.009085780513082,8.354960471132207,8.249660567804257,7.209273053268452,7.323157405438707,10.011256541777753,7.998206711517424,7.8714900988053405,4 +6.667935097201961,9.628791033738365,6.923943296748004,8.019352226040876,7.443895442278104,9.85070530382544,8.731282798594263,8.64793234650386,4 +8.167859036048391,8.553395779383907,7.297052278081497,9.216584743325027,9.528876459049203,7.755062564069486,9.782517407161418,8.536245678709838,4 +9.19684314262698,8.57499430006156,7.734809029105138,8.233346615115245,7.7894898510281605,7.90081719361212,6.804766631011237,6.699278593087075,4 +6.607967348496939,9.058422379804497,9.686187563387936,9.262419657483296,8.238056011276282,8.154927439973656,9.118657716555106,7.821407716842754,4 +7.7396931776128035,7.7438086715871846,8.532309973671817,7.16330306730686,7.844710061879075,8.509897091767188,7.241247155266157,8.72304016695693,4 +7.140785111914655,7.440715002108536,6.205703453377754,6.91491789279843,6.875557544410154,7.412467565170032,7.829058749327787,8.48954594817037,4 +7.956380600701026,7.249780195449638,7.434989577698458,7.168885068015802,8.974434534899824,7.364301407478436,8.218192894689539,6.9794584003472755,4 +9.755135183947559,7.755114640026191,6.009823329167377,8.729757894884877,7.5031228020136576,8.173305817026343,7.478335778602558,9.487978318392686,4 +7.729703028554837,9.448367371960364,6.238190101589938,9.560815871255976,9.100571572475905,7.570049134885086,6.982483903969732,8.964197188212705,4 +8.19629396453443,6.399396456329155,8.969310764567789,9.413835240270247,7.718945912048784,5.212967258217901,7.039737234890985,8.422412683886655,4 +7.947328471827018,9.904233808523275,7.742591012821009,7.56774226368626,7.130568803518155,6.389447883916513,6.997415130637605,8.249690957192698,4 +7.481332636939984,5.7563925186582345,7.287080182149746,8.870675203992427,7.406464410032589,8.161247730499008,8.593140943069177,8.14673354730998,4 +8.309432305717232,7.530556870268082,8.635621809433111,6.517503948157362,9.685494624839004,7.527054621052481,6.029682238005918,7.654019118112599,4 +9.64760788456451,8.32572507092034,7.974899128966612,9.31948742164421,7.574880324642299,8.465918738957198,8.89795667961173,7.284682203264234,4 +9.122553404298323,7.2402123777808525,8.104996402305758,8.936292835234639,6.112578855465183,7.976992905717975,7.92435424602537,9.559606906926623,4 +7.620722916401508,10.681700180405018,9.067651997800047,7.4905257997706265,8.90967539725492,8.94547135386884,7.45238729803994,9.137830012508777,4 +9.408469467817236,8.070153228145212,8.928006037159644,9.032380251431183,9.41281764970495,7.656752676829934,7.816667675306103,8.493382691362452,4 +8.886503181984509,6.49285729623613,9.358420718470516,8.257058201602094,10.08634847529741,6.908680544972269,9.22239183816564,6.8812968483594625,4 +8.21378277312463,6.536779236009015,6.360409009735111,7.325399632001474,9.023943575764932,7.490967070456012,8.459162583951155,9.619006743192083,4 +5.6528809749803495,7.984175362465112,7.821228600140929,8.871306179450318,9.615309852102639,8.503288534682865,8.512061540872107,7.041884629126906,4 +7.848650966908172,8.509271507735672,6.748610719015265,9.638070207779482,6.6406401961538295,10.78368638447176,6.295424258160072,7.803085210924694,4 +7.919722811431924,7.7925822006348735,7.270782705525846,7.805348781204006,7.134133568837943,8.280978335787626,8.812299253982628,7.75504907625869,4 +11.50362818978903,8.44934732854934,8.643366473530877,7.524651092954484,9.608420838023589,9.77808456342828,11.32469269589692,8.642578445263668,4 +7.0172019356505455,7.025875428917532,9.89526404495033,7.7978790466892685,7.77035425823394,7.870736830688073,7.596065129014108,8.323890675322724,4 +8.309409706402871,8.508289826944976,8.883122772423052,7.567969954894559,7.396519693381895,7.161941151783962,8.384309505286208,8.623600140196578,4 +7.186978813035381,7.1287897257210675,9.070299532140949,9.01600478805538,6.617724456749185,7.685691062213182,9.148212466340784,7.245986205671763,4 +7.076240196056674,8.511537289593265,8.287134592947485,9.539046324086726,10.173255793491004,7.303361829566684,7.089765889860479,8.880428291761321,4 +7.607428586514518,7.94449064774299,9.957969511028754,8.386181298460373,8.181145269987718,7.886442561941855,9.203941812758032,8.606921119545994,4 +10.056552489488903,8.803400224198372,7.889148827790243,8.768375817025888,8.315131490856661,7.322947551778546,6.7698684754354765,7.8250987932611435,4 +7.452577933347507,8.088624812029899,8.385447645771283,6.109528626838371,7.371612622531289,8.649102675745402,9.137316649930728,10.276352141647928,4 +6.794565731443591,10.086732671511754,7.7139214503402265,8.316876579221617,7.792679949378787,6.701882493437915,9.685069330356074,7.757401040215014,4 +10.320688066999075,9.651285312185177,7.714038060536888,8.125870841866451,10.488316862796513,7.259954659395832,8.419174946783244,9.596667326333165,4 +7.832950330665042,7.5430983715461375,5.6005707183159945,6.809045348181731,7.141110946464083,7.249550772910945,7.393215693193882,7.605171676310764,4 +6.648958886523241,9.012690607712289,6.56113470113156,8.515703657866654,7.01885636768958,8.334827807876037,7.329379324247011,7.1549098157277236,4 +7.2068221334894105,7.832711980160183,8.720511304482033,5.967420297021453,8.57857378858113,8.460888772452252,8.997075710608442,9.437949927896394,4 +8.674978275339262,7.990523565796866,7.570584499168801,8.929999214724177,9.51627791287536,5.828424128742236,7.461633820213428,8.907661879095436,4 +9.11854362780077,8.590270106344448,7.014038187281152,8.315500182777015,9.087211459569593,8.297053786485446,8.46694394427812,7.818011115670783,4 +7.6672620776028095,9.42043012766745,7.765914349030482,8.838805221659863,7.528060465096369,9.916665520438974,7.481064893024454,8.349105395586399,4 +9.684360475515682,8.353969656157744,8.5442572610219,7.571329934194255,7.513352468878567,7.28418775175457,7.640748682792839,6.934183306498178,4 +6.996956669100856,7.181851109290888,6.627892428393893,9.952116178480331,6.0412993075341825,7.48218746692703,7.1709481398753745,8.334040431204418,4 +5.687434028214211,7.889570631523219,7.704605967566818,7.561025658778632,8.467064290915687,8.621238224515956,9.125189470558576,7.547884488021099,4 +8.548969010957203,7.168320289585811,9.819588896284428,7.926238934606955,7.898625755351173,8.722159243215264,8.594102827596775,8.623513091549079,4 +8.324278827962189,7.840261972811963,6.102882171670947,6.217745007104219,7.539454856805597,7.976982507418201,7.4629847354392975,9.476514534082446,4 +6.879209125640625,8.17159442202988,6.844562930577987,7.053170652115467,6.351954837411392,8.3944815065863,6.378721495337405,9.370108705716223,4 +8.012437436398372,7.994554241985033,9.95301261938762,9.054881988982352,8.830665975518732,7.5647845416681285,8.021593337973952,9.523011215495075,4 +9.186244074550006,8.113676086310976,7.105014491162286,7.792350183493123,7.5579129667757154,6.938688320768941,6.673083365184036,7.529156411139206,4 +6.682193189618937,7.67191649098913,8.551587537204785,8.589736757723458,7.821381634313335,8.501361780725057,7.1281834747201644,9.281566955040251,4 +7.600734230841693,6.717801737196023,5.9677501165022715,7.873641658957585,6.4173322107558235,7.497796015179787,9.468300340799866,9.39899335854658,4 +8.925797122516189,8.840216793365938,7.475318717347182,8.79618699695625,7.313010981881481,7.785029862294588,7.388361856128026,9.14660072501892,4 +9.78710070752098,8.155044093982006,6.1673496652606765,8.431448322048135,9.29624879444009,7.442091037938994,9.293664337920719,7.809067688596905,4 +7.369358512777738,6.049518272172845,8.39220893612427,8.236935303048773,8.35802150452027,8.455225582410984,7.444751393234969,10.471635581934766,4 +7.025152615871521,6.630072032308184,9.142108671598464,8.743440390669624,9.2533080785959,6.414026279637889,7.269735238556889,7.288805326243455,4 +9.097118363030647,7.761250979040605,8.57698494807881,8.12048480226503,9.194874128912556,8.92395799339209,7.666508678029705,8.728238757389237,4 +7.584837387132849,6.792286713561664,8.09548999760384,8.317295441245752,6.683770080432527,6.779736869738166,6.639617665191494,8.704624433509343,4 +6.918540859058013,9.633580224273457,7.01538342158884,8.526530808337197,8.393942853583406,6.977302359128605,6.23190106136486,7.591772425759094,4 +9.13744770410413,7.611540842106767,8.439806122825463,5.205156052056038,7.409330030754226,9.076837277402303,7.361307519021506,8.108067606706546,4 +7.56314538321684,8.340700702179268,10.354570481952898,8.749060858440714,9.36260868952341,8.610197748878214,8.56600934286846,6.7445899555846385,4 +6.686964725751038,6.855488513444785,9.013756345079432,8.72912139333686,10.161154311350792,7.863870956918254,7.559592941739661,7.331200645490569,4 +7.950723554856314,8.10949168317964,7.306927447940292,7.616356010590288,9.498859217454019,8.70574879170178,7.438434500412107,10.032772011872073,4 +10.235978991461632,7.87093478972752,6.834619200114104,9.036630510525834,9.618626180022057,9.371219410847456,7.772791752649776,9.277447287243579,4 +7.176211524750262,8.680879042819436,8.470229402694494,9.446581765780833,7.504604683756919,7.097635282993748,9.160371726545849,7.623465305856904,4 +6.7225213456857595,9.233261561251167,8.51491956701463,8.487012432964665,8.33116549890687,7.843566202724992,7.753192584187099,8.59835940515815,4 +8.338719009710733,9.644348087361054,5.961499611759911,8.281511944466587,8.64205538274806,6.527083265823848,9.582303245395257,7.489849956167207,4 +7.905815945603765,8.377755191939324,7.670229196659825,9.44665353437091,9.456788446377782,8.77010410545617,7.897998712934194,8.032524910651992,4 +8.485761588758951,7.0598058288527765,8.202689990266224,7.140656436105534,8.127797301299813,7.143977196572578,8.70496787070752,4.5156073024637875,4 +8.531586940624045,6.365728550707762,6.507025896988944,7.314831260190792,7.0822264851240115,8.320862005457787,8.040268358730167,7.156384759552805,4 +8.813575510825624,9.30221211352141,7.239357805503657,6.896019822293845,6.9089252745942,8.527293946413222,7.750125908392084,8.484208217278235,4 +9.484433703508948,7.528199864933189,8.775462484552826,8.769027638208817,8.109884989115447,8.275760027370355,10.053340006571789,7.8729230771948835,4 +7.965117511184642,7.443540342934657,7.632204248882981,9.977474448786934,8.023761535930303,7.732941659222634,8.946932344099451,8.28628636512494,4 +7.65918196764307,5.826043199253856,8.377648483914747,8.321110128841655,7.7186338485367925,9.418533666570312,6.626226480972628,8.412375055607935,4 +8.373915168282357,7.340574406951697,7.577624819902179,8.600321489994963,8.8555222271292,8.76403273648358,8.306137321733852,8.150928530790644,4 +8.845196697779524,7.0067004355728315,6.292164224817384,7.883153319964723,7.4426756578895334,11.132515179959844,8.818288607731603,7.482191407711657,4 +7.693990856448941,8.873012691111622,7.771420779679663,7.920527570478171,9.430369197648037,7.553372409741314,7.419410348347351,8.569530706678735,4 +8.262526200337897,7.859857452088999,8.359536890643703,6.527988953207078,8.923772705907965,8.348934075149831,8.34173231023244,7.6783172011950125,4 +6.999283375655704,6.764258902601458,7.91158044791592,8.140060729638103,6.962047677295598,8.489452596456825,7.38995062183034,8.680178547337695,4 +7.604026930238573,9.163723688067448,8.383950136704922,9.374532635633303,7.564501829929246,8.697569434565642,8.14885500206347,8.617828074046217,4 +7.299005039755646,7.927466902398313,8.029915341135371,9.48690172689944,8.501266656768111,6.805318430157834,7.528232195937394,8.32003725463152,4 +9.8416741975217,8.431941705770587,8.874972952759329,8.45679255333656,8.274041751153117,8.867278216902395,9.402382917923354,8.654771637644613,4 +9.114177065541355,7.8238171170430775,7.403764037087904,8.144611331821743,7.714234579178518,7.275682447181963,6.738252752082452,9.196612227957345,4 +7.418436021546524,9.524416954666673,8.796329413331962,7.021513963987153,7.623386489668224,8.53272956371439,8.088466254038455,7.708091648641743,4 +7.1444685245942745,9.366012483799059,8.650729197936363,8.944823116413579,8.241843124552162,8.932126709737501,6.622708508500363,8.353529013770144,4 +9.16484977220398,6.5678098287084,7.648092478031411,8.05022233812042,8.595784448679332,6.907721481116377,7.982385005271656,8.10724819262556,4 +8.324638566371046,7.266777790616955,9.095718677248247,8.033102448548261,9.388098636393002,8.56074666171504,7.6283348907464035,8.103632390406812,4 +8.26216658832487,8.232810271440112,9.10328277558963,7.198791890589844,8.245250669745527,7.448256764630588,8.320338983447709,8.3007350182738,4 +7.903884722768795,8.003002167262663,5.859436397838108,8.520129193463385,9.30155658550916,8.861867013405178,8.679601926363771,7.66758227318534,4 +8.39582902345239,9.009340804862791,9.376290222322393,6.936918046707389,10.15355463801965,7.5484484114437205,7.760648254343488,8.277256163742226,4 +6.955391716412171,9.32338334552667,9.331068033450208,7.404708691972974,6.335594205787918,8.73340336907854,9.109990615750073,7.632903256071649,4 +7.084024735030457,6.79970776955915,6.02038662018034,6.383252557336435,7.407723830504466,7.922815839097498,7.365205434481254,8.041873400873703,4 +8.400441813478121,8.681121880827272,8.947444110511409,7.410814397589542,9.439956420119728,7.045323541203501,7.908640188567523,8.387199552240938,4 +8.386971910610066,7.779593321697302,7.245770370401674,7.956480866471283,7.4051858877531025,7.861936055426802,8.197580671340885,7.626858438356734,4 +9.453734641233524,10.419105031099273,9.127426701276628,8.761561682608532,6.491964284075351,8.328312709480791,9.159587343494607,8.5009350446314,4 +8.715698788769439,8.737512270717874,8.22888154304269,9.246903368072218,7.447552621146138,5.35567090929597,9.083564272600741,7.411034677843971,4 +8.943737586568213,8.3067895104498,6.746869771878195,8.043918403299697,8.809082494504484,7.460026270368019,8.017658215731876,7.919276713780547,4 +6.454011828778309,6.336320158237081,9.48742779834324,8.25779856478776,7.174218375671631,6.962115917556337,7.822699329788121,8.263076421454139,4 +8.397782715973598,6.625241714553331,8.782897833992639,9.048296107943125,8.322787165599557,8.562838839818891,8.256213143299712,8.10989968779101,4 +8.588667078520388,7.893305084246835,7.7601608406739215,8.00825630770569,7.921026011728783,7.252866718340539,9.708947392529437,7.983558856486692,4 +5.27567104076528,7.541974043592378,6.2209038519586395,6.863689268826296,8.292344072542644,7.09077372128926,6.840734555589048,8.956172419983307,4 +8.240814356573106,9.034706573772201,8.692260152674933,6.060541090858876,6.107933469936233,7.244689598857322,7.938236711016007,6.581947984529313,4 +7.008327448982622,8.525084069684848,9.002196612578961,7.579930259481558,8.122281889013275,7.79174637467286,9.207768213590287,8.235761060756726,4 +8.028969541875442,8.80136615849157,7.249710781333432,8.248224588992404,6.440383954321204,7.057574818416286,9.807246016192845,7.807219149254989,4 +7.340538787059549,8.724284841989226,8.979420001703494,7.256312271613992,9.441100904335896,6.876668652721902,9.00254743166358,9.400253101963381,4 +6.5034516289287625,8.763836556164325,6.616098548574885,8.444474817936914,6.607637196995622,7.641144751805416,7.7590474055393654,8.294351730299976,4 +8.332515313258208,7.5488475137302276,9.000962943816631,8.818243101526633,8.177903664990328,7.309790331218739,7.879825807503352,8.636020197005772,4 +8.245112265874836,8.734512818002203,7.978465946088113,8.035998434191795,7.187000423619523,7.397754217485831,6.973005111153455,7.929312507958019,4 +7.310416963160492,7.216799300460552,8.547330745692395,9.151716833218583,6.270854641826629,9.154484074740703,8.369613571242281,9.726108599974086,4 +6.963297765194259,7.501886059546516,8.68680399861276,7.832131559710227,8.175851776251056,7.742357025761996,8.544908192343694,8.336173875021215,4 +7.702947895257793,10.638917649141089,9.0362293932744,7.856621211509963,9.314280190030084,6.386012597448176,8.428128578766346,8.426161467277083,4 +8.953011700506508,6.455685692203172,9.157466608695906,8.924218644842819,6.806579017705171,7.7301046881009485,7.2928584793596825,8.333427438525472,4 +7.692527732449592,9.144473617042038,7.362414760440154,7.799427285510108,9.938378285314487,8.555495059552586,6.475895595007244,7.288777387296844,4 +7.677241831859459,7.351722417896979,6.593360397893875,7.553905303472652,7.79550169475631,6.9593209873523465,7.395147651318571,6.898927664778979,4 diff --git a/requirements.txt b/requirements.txt index 18af45d..eba6b88 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,4 @@ numpy -pytest -ipython +matplotlib +pandas + diff --git a/testDataGenerator.py b/testDataGenerator.py new file mode 100644 index 0000000..ed3f5a7 --- /dev/null +++ b/testDataGenerator.py @@ -0,0 +1,37 @@ +import argparse +import numpy as np + +def generate_random_data(n_samples_per_class=50, n_features=4, n_classes=3, seed=20): + np.random.seed(20) + X = [] + y = [] + for class_label in range(n_classes): + class_data = np.random.randn(n_samples_per_class, n_features) + class_label * 2 + X.append(class_data) + y.extend([class_label] * n_samples_per_class) + + X = np.vstack(X) + y = np.array(y) + + return X, y + +def write_data(output_file, X, y): + with open(output_file, 'w') as file: + for i in range(len(X)): + line = ','.join(map(str, X[i])) + ',' + str(y[i]) + '\n' + file.write(line) + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("-N", type = int, help="Number of samples") + parser.add_argument("-f", type = int, help="Number of features") + parser.add_argument("-c", type = int, help="Number of classes") + parser.add_argument("-seed", type=int, help="A seed to control randomnes") + parser.add_argument("-output_file", type=str, help="Path to output file") + args = parser.parse_args() + X, y = generate_random_data(args.N, args.f, args.c, args.seed) + write_data(args.output_file, X,y) + +if __name__=="__main__": + main() + From 2a5b258786ae6c76ea3cf772eba4d9eef5e59b38 Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 14:41:18 -0500 Subject: [PATCH 02/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ea0dbce..60e7102 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ python final ### Step 2: Generated Data -- The model was tested using synthetic data generated from `data_generator.py`, allowing for testing under various conditions with variable classes, samples, and features. +- The model was tested using synthetic data generated from `generated_data.py`, allowing for testing under various conditions with variable classes, samples, and features. ### Step 3: Manual Train-Test Split From 1e5ac73fb08d4221f05004281918fc29e9fc1c90 Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 14:45:03 -0500 Subject: [PATCH 03/31] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 60e7102..5496e63 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,6 @@ py .\testDataGenerator.py -N 150 -f 8 -c 5 -seed 10000 -output_file generated_da ### Step 2: Run the Program Execute the final LDA model with: - bash python final From a043a7bdbba2b0ad1dfe76baab4c9bfbdc4d3dd8 Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 14:46:41 -0500 Subject: [PATCH 04/31] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 5496e63..f99bede 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # README +RakeshReddy - A20525389 + ## Overview This project implements a Linear Discriminant Analysis (LDA) model for dimensionality reduction and classification. The model projects high-dimensional data into a lower-dimensional space, maximizing the distance between classes. It is particularly useful for visualizing data with a reduced number of features. From 70a2126872f617d0159d6f178e63ce7ac8f27e73 Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 14:47:23 -0500 Subject: [PATCH 05/31] Update README.md --- README.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index f99bede..923ceb1 100644 --- a/README.md +++ b/README.md @@ -17,21 +17,17 @@ This project implements a Linear Discriminant Analysis (LDA) model for dimension ### Step 1: Generate the Data To generate synthetic data, use the following command: -bash py .\testDataGenerator.py -N -f -c -seed 10000 -output_file generated_data.csv - Example: - -bash py .\testDataGenerator.py -N 150 -f 8 -c 5 -seed 10000 -output_file generated_data.csv ### Step 2: Run the Program Execute the final LDA model with: -bash -python final + +py finalLDA ## Model Testing From 6020b093d4f27c86f9c57b693f2df59002b765c5 Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 14:57:10 -0500 Subject: [PATCH 06/31] Update README.md --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index 923ceb1..767fa47 100644 --- a/README.md +++ b/README.md @@ -17,18 +17,29 @@ This project implements a Linear Discriminant Analysis (LDA) model for dimension ### Step 1: Generate the Data To generate synthetic data, use the following command: + ```bash py .\testDataGenerator.py -N -f -c -seed 10000 -output_file generated_data.csv + ``` + + Example: + ```bash py .\testDataGenerator.py -N 150 -f 8 -c 5 -seed 10000 -output_file generated_data.csv + ``` + ### Step 2: Run the Program Execute the final LDA model with: + ```bash py finalLDA + ``` + + ## Model Testing From c0248df8cbe689a9914d6066c212caa104d1be7a Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 14:59:50 -0500 Subject: [PATCH 07/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 767fa47..f7edf44 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ py .\testDataGenerator.py -N 150 -f 8 -c 5 -seed 10000 -output_file generated_da Execute the final LDA model with: ```bash -py finalLDA +py .\finalLDA.py ``` From 46c8a268ef35cfbc5272adb17e361d3d2b314cc7 Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 15:01:05 -0500 Subject: [PATCH 08/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f7edf44..0f36c55 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ py .\finalLDA.py ### Step 2: Generated Data -- The model was tested using synthetic data generated from `generated_data.py`, allowing for testing under various conditions with variable classes, samples, and features. +- The model was tested using synthetic data generated from `testDataGenerator.py`, allowing for testing under various conditions with variable classes, samples, and features. ### Step 3: Manual Train-Test Split From 6ab5664a3f19f43df65dfb205a2dea844c892529 Mon Sep 17 00:00:00 2001 From: rakeshreddy06 Date: Thu, 10 Oct 2024 15:14:04 -0500 Subject: [PATCH 09/31] next commit --- generate_regression_data.py | 40 ------------------- .../models/RegularizedDiscriminantAnalysis.py | 17 -------- .../models/finalLDA.py | 0 3 files changed, 57 deletions(-) delete mode 100644 generate_regression_data.py delete mode 100644 regularized_discriminant_analysis/models/RegularizedDiscriminantAnalysis.py rename finalLDA.py => regularized_discriminant_analysis/models/finalLDA.py (100%) diff --git a/generate_regression_data.py b/generate_regression_data.py deleted file mode 100644 index bca2108..0000000 --- a/generate_regression_data.py +++ /dev/null @@ -1,40 +0,0 @@ -import argparse -import csv - -import numpy - -def linear_data_generator(m, b, rnge, N, scale, seed): - rng = numpy.random.default_rng(seed=seed) - sample = rng.uniform(low=rnge[0], high=rnge[1], size=(N, m.shape[0])) - ys = numpy.dot(sample, numpy.reshape(m, (-1,1))) + b - noise = rng.normal(loc=0., scale=scale, size=ys.shape) - return (sample, ys+noise) - -def write_data(filename, X, y): - with open(filename, "w") as file: - # X column for every x - xs = [f"x_{n}" for n in range(X.shape[1])] - header = xs + ["y"] - writer = csv.writer(file) - writer.writerow(header) - for row in numpy.hstack((X,y)): - writer.writerow(row) - -def main(): - parser = argparse.ArgumentParser() - parser.add_argument("-N", type = int, help="Number of samples.") - parser.add_argument("-m", nargs='*', type = float, help="Expected regression coefficients") - parser.add_argument("-b", type= float, help="Offset") - parser.add_argument("-scale", type=float, help="Scale of noise") - parser.add_argument("-rnge", nargs=2, type=float, help="Range of Xs") - parser.add_argument("-seed", type=int, help="A seed to control randomness") - parser.add_argument("-output_file", type=str, help="Path to output file") - args = parser.parse_args() - m = numpy.array(args.m) - X, y = linear_data_generator(m, args.b, args.rnge, args.N, args.scale, args.seed) - write_data(args.output_file, X,y) - -if __name__=="__main__": - main() - - diff --git a/regularized_discriminant_analysis/models/RegularizedDiscriminantAnalysis.py b/regularized_discriminant_analysis/models/RegularizedDiscriminantAnalysis.py deleted file mode 100644 index 089f9ad..0000000 --- a/regularized_discriminant_analysis/models/RegularizedDiscriminantAnalysis.py +++ /dev/null @@ -1,17 +0,0 @@ - - -class RDAModel(): - def __init__(self): - pass - - - def fit(self, X, y): - return RDAModelResults() - - -class RDAModelResults(): - def __init__(self): - pass - - def predict(self, x): - return 0.5 diff --git a/finalLDA.py b/regularized_discriminant_analysis/models/finalLDA.py similarity index 100% rename from finalLDA.py rename to regularized_discriminant_analysis/models/finalLDA.py From fc6585c50e5684f8a737c48bfddee3e33b2f7d8b Mon Sep 17 00:00:00 2001 From: rakeshreddy06 Date: Thu, 10 Oct 2024 15:15:30 -0500 Subject: [PATCH 10/31] removed elasticnet --- elasticnet/__init__.py | 0 elasticnet/models/ElasticNet.py | 17 -------- elasticnet/models/__init__.py | 0 elasticnet/tests/small_test.csv | 51 ------------------------ elasticnet/tests/test_ElasticNetModel.py | 19 --------- 5 files changed, 87 deletions(-) delete mode 100644 elasticnet/__init__.py delete mode 100644 elasticnet/models/ElasticNet.py delete mode 100644 elasticnet/models/__init__.py delete mode 100644 elasticnet/tests/small_test.csv delete mode 100644 elasticnet/tests/test_ElasticNetModel.py diff --git a/elasticnet/__init__.py b/elasticnet/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/elasticnet/models/ElasticNet.py b/elasticnet/models/ElasticNet.py deleted file mode 100644 index 017e925..0000000 --- a/elasticnet/models/ElasticNet.py +++ /dev/null @@ -1,17 +0,0 @@ - - -class ElasticNetModel(): - def __init__(self): - pass - - - def fit(self, X, y): - return ElasticNetModelResults() - - -class ElasticNetModelResults(): - def __init__(self): - pass - - def predict(self, x): - return 0.5 diff --git a/elasticnet/models/__init__.py b/elasticnet/models/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/elasticnet/tests/small_test.csv b/elasticnet/tests/small_test.csv deleted file mode 100644 index bf8442e..0000000 --- a/elasticnet/tests/small_test.csv +++ /dev/null @@ -1,51 +0,0 @@ -x_0,x_1,x_2,y --2.421348566501347,6.290215260063935,2.516304163087373,10.240119830146476 -8.13465811997068,-6.975968662410185,-3.2810945459842866,-6.8962940548446845 --0.4531238994261493,0.05889462611191654,-3.592293253611172,14.10428803155231 -3.979832584128687,-8.129001764124755,9.202914789330517,-43.788867687445624 --4.354231825431758,2.4724749171156333,8.45972163584499,-12.067617018047834 -8.726620980175113,-9.607722575405269,-5.092837184080405,-8.265643240683891 --0.29136484802189955,8.224663789274086,-3.8193339707565555,32.98185595386334 -1.4118708853910462,6.003042800612462,3.9968255952773095,0.7267789346532836 -0.21525181834957507,-3.321041549359367,-5.352746248495515,11.93444109619503 -4.80226153299567,9.818246112545182,4.936296097738831,3.5995719453822046 -9.71733974143089,0.1440918710436101,8.74993701189404,-34.917122745540794 -4.098687611436789,-9.75205878861841,7.980744101999381,-43.32805584620358 --2.398060521804659,2.8278192128541733,-1.626174948927721,16.91539285950553 -5.398272903061114,7.583046908728093,2.758295974535457,4.437457748228852 -3.371527871466675,-5.430064318728407,2.1915998058530857,-16.03565826569788 -2.0863644528269365,0.10824916542728857,8.144465640869694,-25.094326089867696 -2.8255940202840684,-2.286321234798363,4.771241059098381,-18.000440202657604 --8.150227640024978,-4.259315052105519,1.8923353680502952,-1.3930242667026356 --6.067265316809651,3.6776254617776942,8.4817269440159,-10.278522746897893 -8.64017362219969,9.717801217085075,4.980672567111553,-0.9266647796977245 --4.636910653452324,0.9373715699813872,4.978170771263397,-3.8217233698137143 --7.940395120999431,2.953441321061362,-0.9370552302607145,21.291726783530805 -7.692709298116139,-5.485844206553388,-6.019643260327971,2.1873435652525455 --6.485086441297707,7.06589989184231,-8.842925435171665,50.35981404591074 -5.036321300769028,2.0420739888497152,-4.368234397412891,15.435100617505809 --2.203566631709222,-6.141030616852454,-1.822186931753599,-0.5890454529472771 -3.2620868350599768,7.851306022896178,-4.479265977335616,27.896949611024628 -6.402611257683294,-4.018677430646336,0.48600102750762986,-12.289355696825485 -5.378501224056757,4.355667003325474,-7.565417868242747,31.017195148404717 -2.0486633392332614,8.253411759540757,-3.966950647644751,29.555547834722987 -2.626017326894857,3.314924154867276,9.810418858378235,-22.85112181951592 --0.04750452520510429,5.935777040113393,-0.3470621837504506,16.516617979443822 --6.775500897482147,-0.8747563332852692,-2.758815934335188,16.55155644731519 --5.130765599150095,8.959898235120185,1.1701541118251235,22.753375944830324 -9.607901921761815,-9.108821424255002,5.524296399378377,-41.93781490943017 --2.9201254899877434,5.134928295361929,-9.896226148902585,43.58829658171542 -6.956501039100711,0.8359369151964895,-6.1636372998431295,16.225403196517274 -7.725179239543149,-4.913104095867496,-1.110476120153832,-9.936035489824537 --6.142683379729563,1.4244393989902058,1.8529074318076262,5.554396424524908 --2.0474061706133977,-1.2170618863263076,8.899325908803291,-23.596187786238964 -9.359523403637155,3.4124788823300065,-1.4222946765509725,2.4507844709064064 --8.642800876507275,-9.508822574677566,2.9901775243378577,-16.775543378589024 --2.470992582133973,5.1672327675732195,-8.753045094764744,40.855147394263106 --7.756097982925145,5.227601844332813,-3.179199348468109,30.739018818654756 -5.393783291304004,-1.5186710515725927,-7.469139234639499,17.503383657767756 --7.644671911438172,1.8115363641056241,-6.167155079348694,33.57677356652164 -6.557442460132911,-4.44188855380612,-6.368621306151785,7.435670420087931 -0.21009363927752744,-2.719754693698011,1.0885820356480096,-6.289562485886653 --8.571672299069252,8.890348599509473,5.468260371802332,15.412904086362603 -7.872454219630789,-3.9905860234116357,0.9068940749874717,-16.017543419998542 diff --git a/elasticnet/tests/test_ElasticNetModel.py b/elasticnet/tests/test_ElasticNetModel.py deleted file mode 100644 index 5022c3c..0000000 --- a/elasticnet/tests/test_ElasticNetModel.py +++ /dev/null @@ -1,19 +0,0 @@ -import csv - -import numpy - -from elasticnet.models.ElasticNet import ElasticNetModel - -def test_predict(): - model = ElasticNetModel() - data = [] - with open("small_test.csv", "r") as file: - reader = csv.DictReader(file) - for row in reader: - data.append(row) - - X = numpy.array([[v for k,v in datum.items() if k.startswith('x')] for datum in data]) - y = numpy.array([[v for k,v in datum.items() if k=='y'] for datum in data]) - results = model.fit(X,y) - preds = results.predict(X) - assert preds == 0.5 From 13fe88780335d4a61cfd1b625e849b692675f8be Mon Sep 17 00:00:00 2001 From: rakeshreddy06 Date: Thu, 10 Oct 2024 15:27:38 -0500 Subject: [PATCH 11/31] tree --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index 0f36c55..52a612e 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ RakeshReddy - A20525389 ## Overview + This project implements a Linear Discriminant Analysis (LDA) model for dimensionality reduction and classification. The model projects high-dimensional data into a lower-dimensional space, maximizing the distance between classes. It is particularly useful for visualizing data with a reduced number of features. ### When to Use the Model @@ -12,6 +13,23 @@ This project implements a Linear Discriminant Analysis (LDA) model for dimension - **Multivariate Normal Distribution Assumption**: Effective when data for each class follows a normal distribution. - **Dimensionality Reduction**: Reduces data to lower dimensions while maintaining class separability. +### Folder Structure +root: +│ .gitignore +│ Final_LDA.ipynb +│ generated_data.csv +│ README.md +│ requirements.txt +│ testDataGenerator.py +│ +└───regularized_discriminant_analysis + │ test_rdamodel.py + │ + ├───models + │ finalLDA.py + │ + └───tests + ## Running the Program ### Step 1: Generate the Data From 6bdb751334b97cbabcab47317053c43ba9d457f9 Mon Sep 17 00:00:00 2001 From: rakeshreddy06 Date: Thu, 10 Oct 2024 15:30:25 -0500 Subject: [PATCH 12/31] reverse --- README.md | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/README.md b/README.md index 52a612e..8c0a494 100644 --- a/README.md +++ b/README.md @@ -13,22 +13,6 @@ This project implements a Linear Discriminant Analysis (LDA) model for dimension - **Multivariate Normal Distribution Assumption**: Effective when data for each class follows a normal distribution. - **Dimensionality Reduction**: Reduces data to lower dimensions while maintaining class separability. -### Folder Structure -root: -│ .gitignore -│ Final_LDA.ipynb -│ generated_data.csv -│ README.md -│ requirements.txt -│ testDataGenerator.py -│ -└───regularized_discriminant_analysis - │ test_rdamodel.py - │ - ├───models - │ finalLDA.py - │ - └───tests ## Running the Program From 86e8d6eb10bd027b54dba2598fd6571454fe800b Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 15:31:11 -0500 Subject: [PATCH 13/31] Update README.md --- README.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/README.md b/README.md index 8c0a494..0337aa3 100644 --- a/README.md +++ b/README.md @@ -77,3 +77,24 @@ The implementation may encounter difficulties with: 1. **Highly Imbalanced Data**: Struggles when class sizes are noticeably imbalanced. 2. **High Dimensionality with Few Samples**: May exhibit irregular behavior when the number of features exceeds the number of samples. Dimensionality reduction using PCA can be a solution. + +3. # Project Title + +A brief description of what this project does and who it's for. + +## Project Structure +C:. +│ .gitignore +│ Final_LDA.ipynb +│ generated_data.csv +│ README.md +│ requirements.txt +│ testDataGenerator.py +│ +└───regularized_discriminant_analysis +│ test_rdamodel.py +│ +├───models +│ finalLDA.py +│ +└───tests From 72f9eea43de21c358d88ecfb351c63752f45e57c Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 15:31:44 -0500 Subject: [PATCH 14/31] Update README.md --- README.md | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-) diff --git a/README.md b/README.md index 0337aa3..98cfb49 100644 --- a/README.md +++ b/README.md @@ -78,23 +78,4 @@ The implementation may encounter difficulties with: 1. **Highly Imbalanced Data**: Struggles when class sizes are noticeably imbalanced. 2. **High Dimensionality with Few Samples**: May exhibit irregular behavior when the number of features exceeds the number of samples. Dimensionality reduction using PCA can be a solution. -3. # Project Title - -A brief description of what this project does and who it's for. - -## Project Structure -C:. -│ .gitignore -│ Final_LDA.ipynb -│ generated_data.csv -│ README.md -│ requirements.txt -│ testDataGenerator.py -│ -└───regularized_discriminant_analysis -│ test_rdamodel.py -│ -├───models -│ finalLDA.py -│ -└───tests + From 0630446982daf8950b64db1fb67169de96791e2e Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 16:07:15 -0500 Subject: [PATCH 15/31] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 98cfb49..2d7b18f 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ RakeshReddy - A20525389 This project implements a Linear Discriminant Analysis (LDA) model for dimensionality reduction and classification. The model projects high-dimensional data into a lower-dimensional space, maximizing the distance between classes. It is particularly useful for visualizing data with a reduced number of features. +### The program execution steps is shown in final_LDA.ipynb notebook + ### When to Use the Model - **Classification Tasks**: Suitable for classifying data into different classes. From 7f2915679c6be2c2375fe5f86b9c3aa0d9af8407 Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 16:08:14 -0500 Subject: [PATCH 16/31] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 2d7b18f..ff24c4f 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,12 @@ Execute the final LDA model with: py .\finalLDA.py ``` +The program execution steps are shown in the notebook file + ```bash +final_LDA.ipynb + + ``` + From 898ce9d249426c31d6fd8b2e1eea53874a5d7158 Mon Sep 17 00:00:00 2001 From: Nishant Date: Thu, 10 Oct 2024 17:27:21 -0500 Subject: [PATCH 17/31] add: pytest testing file added --- testing.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 testing.py diff --git a/testing.py b/testing.py new file mode 100644 index 0000000..7538bb8 --- /dev/null +++ b/testing.py @@ -0,0 +1,54 @@ +import pytest +import numpy as np +from Final_LDA import LDAModel, RDAModelResults, manual_train_test_split + + +# Sample data for testing +@pytest.fixture +def sample_data(): + # Create a small dataset + X = np.array([[0.1, 0.2], [0.2, 0.3], [0.1, 0.4], [0.5, 0.6]]) + y = np.array([0, 0, 1, 1]) + return X, y + + +def test_lda_model_fit(sample_data): + X, y = sample_data + model = LDAModel(nComponents=1) + model.fit(X, y) + + assert model.Eigens is not None + assert model.classMeans is not None + assert len(model.classMeans) == len(np.unique(y)) + + +def test_lda_model_transform(sample_data): + X, y = sample_data + model = LDAModel(nComponents=1) + model.fit(X, y) + transformed_X = model.transform(X) + + assert transformed_X.shape[1] == model.nComponents + + +def test_rda_model_results_predict(sample_data): + X, y = sample_data + model = LDAModel(nComponents=1) + model.fit(X, y) + model_results = RDAModelResults(model) + y_pred = model_results.predict(X) + + assert y_pred.shape == y.shape + assert np.all(np.isin(y_pred, np.unique(y))) # Predictions should be within the classes + + +def test_manual_train_test_split(sample_data): + X, y = sample_data + X_train, X_test, y_train, y_test = manual_train_test_split(X, y, test_size=0.5, random_state=42) + + assert X_train.shape[0] + X_test.shape[0] == X.shape[0] + assert y_train.shape[0] + y_test.shape[0] == y.shape[0] + + +if __name__ == "__main__": + pytest.main() From e62d613751e5066fd6061ed8b1a66fd9eacb0b8b Mon Sep 17 00:00:00 2001 From: Nishant Date: Thu, 10 Oct 2024 17:36:55 -0500 Subject: [PATCH 18/31] add: README Updated with names --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ff24c4f..47a8534 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ # README -RakeshReddy - A20525389 +Rakesh Reddy - A20525389 +Geeta Hade - A20580824 +Nishant Khandhar - A20581012 +Amogh Vastrad - A20588808 ## Overview From ce3dbfe34c3696a69630767c5b79dca8aa7ad3ea Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 17:38:55 -0500 Subject: [PATCH 19/31] Update README.md I formatted --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 47a8534..910974a 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # README -Rakesh Reddy - A20525389 -Geeta Hade - A20580824 -Nishant Khandhar - A20581012 -Amogh Vastrad - A20588808 +##Rakesh Reddy - A20525389 +##Geeta Hade - A20580824 +##Nishant Khandhar - A20581012 +##Amogh Vastrad - A20588808 ## Overview From 6e68e9cf85180f890cf91a14e46bfc9c198d9693 Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 17:39:16 -0500 Subject: [PATCH 20/31] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 910974a..30c4b90 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # README -##Rakesh Reddy - A20525389 -##Geeta Hade - A20580824 -##Nishant Khandhar - A20581012 -##Amogh Vastrad - A20588808 +###Rakesh Reddy - A20525389 +###Geeta Hade - A20580824 +###Nishant Khandhar - A20581012 +###Amogh Vastrad - A20588808 ## Overview From 48c7167d98248c61952a48205bbceed40d5b8deb Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 17:39:38 -0500 Subject: [PATCH 21/31] Update README.md --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 30c4b90..07e7385 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ # README -###Rakesh Reddy - A20525389 -###Geeta Hade - A20580824 -###Nishant Khandhar - A20581012 -###Amogh Vastrad - A20588808 + ## Overview This project implements a Linear Discriminant Analysis (LDA) model for dimensionality reduction and classification. The model projects high-dimensional data into a lower-dimensional space, maximizing the distance between classes. It is particularly useful for visualizing data with a reduced number of features. -### The program execution steps is shown in final_LDA.ipynb notebook +###Rakesh Reddy - A20525389 +###Geeta Hade - A20580824 +###Nishant Khandhar - A20581012 +###Amogh Vastrad - A20588808 ### When to Use the Model From 006a480b3ed48e93ed11785b1c9c3e333ecd2e01 Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 17:40:09 -0500 Subject: [PATCH 22/31] Update README.md --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 07e7385..f9c3a02 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ # README - +Rakesh Reddy - A20525389 +Geeta Hade - A20580824 +Nishant Khandhar - A20581012 +Amogh Vastrad - A20588808 ## Overview This project implements a Linear Discriminant Analysis (LDA) model for dimensionality reduction and classification. The model projects high-dimensional data into a lower-dimensional space, maximizing the distance between classes. It is particularly useful for visualizing data with a reduced number of features. -###Rakesh Reddy - A20525389 -###Geeta Hade - A20580824 -###Nishant Khandhar - A20581012 -###Amogh Vastrad - A20588808 + ### When to Use the Model From e7cf6a043197cf98b2bee0b91a5cefd046d03b75 Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 17:42:30 -0500 Subject: [PATCH 23/31] Update README.md --- README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f9c3a02..fe119c1 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,13 @@ # README +**Course:** CS584 - Machine Learning
+**Instructor:** Steve Avsec
+**Group Members:** +- Rakesh Reddy - A20525389 +- Geeta Hade - A20580824 +- Nishant Khandhar - A20581012 +- Amogh Vastrad - A20588808 + -Rakesh Reddy - A20525389 -Geeta Hade - A20580824 -Nishant Khandhar - A20581012 -Amogh Vastrad - A20588808 ## Overview From 6bdb5c4dd18f875e3a7b13c33577d8e617205863 Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 17:42:54 -0500 Subject: [PATCH 24/31] Update README.md --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index fe119c1..1950238 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,6 @@ # README -**Course:** CS584 - Machine Learning
-**Instructor:** Steve Avsec
-**Group Members:** + +**TEAM:** - Rakesh Reddy - A20525389 - Geeta Hade - A20580824 - Nishant Khandhar - A20581012 From 7a313cf22f09df647a904f0188b7787cd38fee4f Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Thu, 10 Oct 2024 20:50:55 -0500 Subject: [PATCH 25/31] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1950238..e80bca1 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ py .\testDataGenerator.py -N 150 -f 8 -c 5 -seed 10000 -output_file generated_da ### Step 2: Run the Program -Execute the final LDA model with: +Execute the final LDA model which is model folder: ```bash py .\finalLDA.py From 82dcefa0ea3b9ad59dce7cf1aca5a066ae62e4b5 Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Fri, 11 Oct 2024 10:36:36 -0500 Subject: [PATCH 26/31] added a note to the read me --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e80bca1..bdcc2fb 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ py .\testDataGenerator.py -N 150 -f 8 -c 5 -seed 10000 -output_file generated_da ### Step 2: Run the Program Execute the final LDA model which is model folder: +Note: Place the generated_data.csv(the data you want to train and test ) in the models folder to run this program else you can run Final_LDA.ipynb directly without any changes by placing the training data named as generated_data.csv. ```bash py .\finalLDA.py From 3ba962193ec15943e732ea63dd3181d70b5f0233 Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Mon, 14 Oct 2024 18:44:10 -0500 Subject: [PATCH 27/31] making improvement --- regularized_discriminant_analysis/models/finalLDA.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regularized_discriminant_analysis/models/finalLDA.py b/regularized_discriminant_analysis/models/finalLDA.py index 348a1e4..31cbf84 100644 --- a/regularized_discriminant_analysis/models/finalLDA.py +++ b/regularized_discriminant_analysis/models/finalLDA.py @@ -139,7 +139,7 @@ def manual_train_test_split(X, y, test_size=0.2, random_state=None): return X[train_indices], X[test_indices], y[train_indices], y[test_indices] -df = pd.read_csv("generated_data.csv", header=None) +df = pd.read_csv("../../generated_data.csv", header=None) X_features = df.iloc[:, :-1].values #this is the training data y_labels= df .iloc[:, -1].values #this is the training labels From 2e347d449c2a289a1980d01802ea9a2468ad0585 Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Mon, 14 Oct 2024 18:48:42 -0500 Subject: [PATCH 28/31] Update finalLDA.py --- regularized_discriminant_analysis/models/finalLDA.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/regularized_discriminant_analysis/models/finalLDA.py b/regularized_discriminant_analysis/models/finalLDA.py index 31cbf84..348a1e4 100644 --- a/regularized_discriminant_analysis/models/finalLDA.py +++ b/regularized_discriminant_analysis/models/finalLDA.py @@ -139,7 +139,7 @@ def manual_train_test_split(X, y, test_size=0.2, random_state=None): return X[train_indices], X[test_indices], y[train_indices], y[test_indices] -df = pd.read_csv("../../generated_data.csv", header=None) +df = pd.read_csv("generated_data.csv", header=None) X_features = df.iloc[:, :-1].values #this is the training data y_labels= df .iloc[:, -1].values #this is the training labels From 819833aa9143b9b2220e39cb58d4064c79324f14 Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Mon, 14 Oct 2024 18:49:51 -0500 Subject: [PATCH 29/31] added generated_data to test on more data --- .../models/generated_data.csv | 750 ++++++++++++++++++ 1 file changed, 750 insertions(+) create mode 100644 regularized_discriminant_analysis/models/generated_data.csv diff --git a/regularized_discriminant_analysis/models/generated_data.csv b/regularized_discriminant_analysis/models/generated_data.csv new file mode 100644 index 0000000..24c4346 --- /dev/null +++ b/regularized_discriminant_analysis/models/generated_data.csv @@ -0,0 +1,750 @@ +0.8838931126173458,0.1958650220376449,0.3575365158852867,-2.3432619056402113,-1.0848325873173328,0.5596962894039177,0.9394693498560777,-0.9784810421186954,0 +0.5030968401091914,0.4064144688948009,0.3234610099156434,-0.4934108819088803,-0.7920167907771816,-0.842367934138484,-1.2795026616706042,0.24571516951123312,0 +-0.04419480068361748,1.5676325528903083,1.0511086796131768,0.40636842563171444,-0.16864610124128443,-3.1897027892252625,1.12013225923654,1.3327782081335766,0 +-0.24333876611630206,-0.13003071130989,-0.10901737133730471,1.556186439264636,0.12877835273019408,-2.066948722655315,-0.885493154616703,-1.1045794834534277,0 +0.932866346610091,2.0598380015281683,-0.9349379580809319,-1.6129902180842572,0.5270697180962234,-1.5511007353068422,0.32961333921197766,-1.1365265400974658,0 +-0.3384906045519245,0.32097078441973265,-0.6023080180595345,1.5447283608763946,0.6470340836498365,0.5932172125782157,0.43802449701914753,1.3577890150479748,0 +1.204511275020844,1.3517961871393613,0.4934372360278101,-2.7043652475259967,-0.5551857968857017,0.0015085602585323294,0.8570938168891852,1.4811436466626788,0 +-0.21966112236298194,1.5033981564928736,-1.482385050134975,-0.8561642180677683,-0.8286927702344518,0.11404760330098948,0.5277284702696486,0.15583822209143852,0 +1.3014293986554235,-0.9948019075832217,2.094665338082445,0.3594289939554043,0.691002118590122,-1.4857196083622273,0.09878861473099068,-0.2283210306835901,0 +-0.854775487342927,-0.5131451059514202,-0.9622159843780511,-0.48245091128279366,-0.23946975731280126,0.45974422690161787,0.6464301659040527,0.4874029609137859,0 +0.03819246874812981,0.9894865586579343,0.1436226349585432,0.7502979284867325,-0.40957142515378353,1.4474070464881408,-0.4045340239622074,1.14892501369591,0 +-0.9389104909640118,-1.9014640517184773,1.095433351342401,-0.3335437866327996,-1.4418485745457146,-1.4166667484045508,-1.6295015181180854,-1.8152558081043626,0 +-1.0561690000183723,0.5542749330320416,-0.9500180100254156,0.8579993511102255,-0.5320792474553208,1.125758855836237,0.21865771977812515,-0.39288195768217343,0 +-0.2286972650807645,-1.5762548779641914,0.1658330092370238,0.7887968149252417,-1.961892242675055,-1.8520382433428222,1.0918866127160918,0.9345908551179352,0 +-0.7117855567080416,1.443083008740605,0.7523133206959416,-1.334920766826471,0.6766396723306617,0.8311057781317684,-0.3650574440908685,0.4967702450892603,0 +0.2895591503361211,-0.47020934305691686,1.6059926396210291,-0.1536618307247823,-1.7861686341240965,-0.11165729875416829,1.5376439733847305,-1.031632521323364,0 +-0.1058130523703925,2.00990161224299,0.01123134145342559,-1.0894294683309023,-1.5145109657050797,-0.5597613073905006,0.8416225188285681,0.25155289067650305,0 +0.8251846237263087,1.8222054351276777,0.3381263483970462,0.10906277935431352,0.34848886375046007,0.4491181494744204,-1.1147406232415242,-0.9232073579131264,0 +0.02136903923401978,0.5944154325470795,1.8271415277179883,-1.0865037733845933,1.058442092609689,0.747165091729134,0.6099178020944761,-0.07722775367035856,0 +-1.9412662910561154,0.34143470998675635,1.8628551351223697,-0.29523047478727005,0.47831650582147917,-0.7151904957409182,1.237292927160557,0.8403886468450849,0 +0.7241272794310375,-0.18015930523162355,0.15257918672208845,1.2299429378606759,0.27207688822695014,0.07507401007744499,0.08681927006536326,-2.5153542762884533,0 +1.8500438785729347,-0.17580645673226966,0.9034630003902674,-1.545159349411475,1.4414778960070702,0.2688322271564248,0.4290540360918662,0.43638840024571685,0 +-0.4382601962147403,1.4204984520414792,1.9554321006834305,-0.39157541669177737,0.12072220793889916,0.4140250968447056,1.3665057256711728,-1.3632199842629613,0 +0.015653659985217002,0.9046602101137592,-0.806901090380598,-0.7063103537686168,1.0528919170355409,-0.09347128651554495,-1.4389505404207306,-0.31126891022505165,0 +0.8056692388759787,-0.012550938984415044,-0.26082290929071567,-0.8894777340366425,-1.6158992125782383,-0.8519646026261832,-0.041180143766047554,-0.27032690176153606,0 +-1.5039778238561405,1.313967830857757,-0.03012610576957469,0.6350130762254161,0.502435230630459,1.1619659136208502,-0.30574829012047444,1.7122827669227452,0 +1.1694369957089614,-0.2758148731607233,-2.5117807077003387,-0.41727181491994675,0.5415724540299603,-0.14510730175217484,-1.0215827316575077,0.47227797067332505,0 +-0.7081235031603792,1.4141394799499578,-0.4905331589716589,1.1811708688102756,-0.04692511385216678,-1.4601061755714524,-0.5081914987468069,-0.4952157620012345,0 +0.7617860957213675,-1.6468437457664888,0.8539263560084511,-0.007959929156210802,-0.8894751801852641,0.35350763375391486,-0.5394307626406479,0.5911327453164446,0 +-0.11829349164730663,-0.3604729716559968,-1.068632116564072,0.8907173875904303,0.2352515996854383,-0.0925597906394988,-0.5110631825259574,0.59382267559677,0 +-0.7740748327638539,-1.0709224027307107,-0.6269373373395746,-1.0773631364596319,1.2769798386772069,0.3464613307889435,-0.122315939901835,0.21916957008996207,0 +0.14346707728625135,1.4348447621997378,1.055364394383209,1.1152929302168257,1.8010063972721235,-0.19441882727705964,-0.8421870365260722,-1.1481746800640757,0 +-0.8315439431891614,-0.6727466028002431,0.6701164577350086,-1.148872688310003,-0.2679074087564409,-0.951562610772135,-1.5700686335461729,0.9859800963973488,0 +0.9239781543019754,-1.6013808577698323,-0.29677534752428475,1.189367897170757,-0.33330092818234236,0.9283619883589289,-0.722238413326392,2.1217128609126763,0 +-0.6916241897094678,0.39553830718990923,-0.37190787091472144,-1.0394173465086036,0.49184058998337715,1.0037085890775872,-0.2655737509607294,-1.0405931019994223,0 +-0.16430128756655013,0.3940625248695538,-0.23167982904969273,-0.24762589178271124,-0.3866323095104712,0.02290180158234664,-0.7125441135282226,0.32352159299122635,0 +-0.9586865863664576,-0.3336646869211666,-1.1630661074955175,0.7597753778218825,0.9097566859357606,1.446521594541811,-0.37685847010241014,-0.12847425324180264,0 +-0.47753268615963773,-0.12220247969770033,0.2076550075850339,-0.14926589409714264,1.0208650286890024,1.9719218921689727,1.1407990966464558,0.12975500218917993,0 +2.0400517490376875,0.41602742720602087,0.430900702712729,1.4749863585091865,1.4567777892218337,-1.0470882952809415,-1.542664412865657,1.0040804776514891,0 +-0.898307497209568,0.7352021778089574,1.524773210933687,1.2067875420368142,1.0956318078277478,0.5794449328057345,0.371400946267365,0.4395854072274665,0 +1.0908448128814345,0.03692613357091319,1.1188367533878416,-0.3084641147785133,0.8042947530731696,1.4013915932555556,-0.34676464136892465,0.9234054590076161,0 +-0.1152541836697891,-0.34664707560648444,-0.743533099909734,-0.9240385759108211,-0.657647079645054,-0.22696359396577828,-0.7535313637534381,0.08949334734261842,0 +-0.6547437769479376,0.17083179733905413,1.4144911683006147,-1.6097973411231303,1.2514958475694054,-0.3914653786142557,0.0967610819097579,1.087483901836548,0 +1.1465317920305227,0.5270561988451719,-1.9472098661136545,-0.10788922342797214,0.566639603958831,-0.7763938291482462,0.2653915289607453,1.9149116430357331,0 +-0.1933685157086208,0.35631269474330796,-1.0487511432128103,-1.0594562203703703,1.3308304218751097,-1.0195043338632288,0.3524322305826219,-0.9018159633657002,0 +-0.6327013683008658,-0.35952668114815434,0.6374081664217502,-1.6094296123284917,1.3876626381450248,1.5375527217507483,-0.982569112106374,-1.3736363597950005,0 +-2.0684934995945583,1.3335425330753503,0.19305745131040544,-0.8448337348620389,1.3048382232302593,0.649228173125619,0.9424295040385698,0.8798225360378422,0 +0.11923003401838438,-0.9446115413102955,-0.9774655314098105,0.9217363638755027,-0.8754999434433722,-1.3424564039596512,-1.340577339664525,-0.31125584116024374,0 +-0.01477903462135528,1.1264461060836972,-1.4171894505781544,1.0004732025595127,-0.18480126979569356,2.192341133000062,0.15582362262659008,0.5556113996055615,0 +0.015368639894608455,-0.0006442826601729482,-0.06675959570625042,-0.9339718350066835,0.47092110825203626,1.647485071908067,-0.4068579123707171,-1.2312132780358729,0 +-0.23404304051340852,-0.25537296163245204,0.29558637074849214,-0.41226900652571397,-0.4701325347103191,1.9447475005653951,0.6490264516280401,1.1693731009735466,0 +0.14555047238867436,1.338459854250772,-0.8201205916274803,-0.5242009297292396,-1.7176898199609196,-0.13496670868541463,1.230278181684644,-1.2937183017069276,0 +-1.50898131523164,0.5456555946586372,-1.9107080899318925,0.4454269363068002,-0.7569550409823999,-0.8551033907323947,-0.10405745168296564,0.1258165981474253,0 +-0.20079855701739602,-0.5344903196609171,-0.7682518832153911,1.8447845526781832,-1.1770281748000802,-0.46354583119901066,0.02480595353158847,0.46665114537905106,0 +0.35357155132727863,0.7887072321921669,-0.6600866156584213,0.009020258951327556,-1.6258532818324654,0.21159254186563414,-0.6493009709899229,1.1990647562475154,0 +0.4371679931584182,-0.6887305737977152,0.5335330409382317,0.29295634152258276,-0.07271142670657767,-0.013516438314268794,-1.4576864211047462,-0.8755813989067697,0 +0.36769644465156426,-0.4941041999561105,-0.10866997499964459,1.9206306510251638,0.3637034574639644,-1.0154179701677464,0.20131821312276807,1.25754407220329,0 +-0.6713629222234583,-0.8978374516159481,0.3372355972153875,0.23763559521556324,-1.0453826149100598,-0.9521588903644851,-0.8049608691161796,-0.28260292140517074,0 +0.03144107283205245,-1.1540674101013038,0.0879612847034627,-0.10664351050827497,-0.2625411738074502,0.13994974703299737,-1.5387217192166571,1.297108346776032,0 +0.7381183458121997,1.4432480150702538,0.046958680358681934,-0.4457369147013638,0.6318865639749252,-1.4259915477247695,-0.21543211038174553,-0.590314674939793,0 +1.9050878530584454,0.9526704619464872,-0.4329734240280363,-0.7305688553737385,-1.0937249627683698,0.43759905214616646,-0.7618832227501251,-1.029683489838573,0 +-0.8540155558019278,1.6340995202050332,0.11534153745733075,1.1108251680379584,-0.33768856300790084,1.2887424831521364,-0.002974417464920049,-0.10125548946604226,0 +-1.7630360957886058,1.007295527671601,1.169334205570615,-0.06091489314794168,1.156502682409707,0.7399560714608988,-1.7473604980607809,-1.5447106167298144,0 +-1.0718062149910164,1.4916799226542075,-0.4120077327890296,1.1255301554819959,0.29859715422061206,0.3804159839718837,-0.3608273407006341,-0.3909246876321675,0 +0.11715025251160383,-0.047391916816901976,-1.1709619523965595,1.0839523776644926,0.33121703404547415,-0.9597745102827581,0.2570125771676126,0.7614199572968887,0 +0.2625289342311894,0.7819914586497986,0.25874633701328287,-0.201181169327462,-0.59056392396512,-0.15754229826625715,0.5881633943662544,-0.9843810991552088,0 +0.5089889620695094,-0.9034870413510576,0.509443151362378,-0.9227792823289825,0.1958835731181117,0.10315450171117999,-1.0496738900741227,1.3621106122340612,0 +-0.28032887222392994,1.0262868542875294,1.283022098556597,-0.8545232309191942,0.2251680988973904,-1.0924455086673268,-1.3237538540000438,-2.286398167657233,0 +-0.851020537694771,0.3827102026593706,-2.104250824670424,0.6112962059558436,0.3343140286160145,1.881420879966189,-0.9244255591788487,-0.4573727764831537,0 +-1.3205817579421362,-0.5593495710975953,1.8664231085757161,-1.9786964683399855,-0.29761451565879216,0.15363120683280598,-0.2970379040225088,0.9657041805884066,0 +0.653445556508801,0.024785479672217493,0.5878605250064424,1.5592827806332639,0.8429940646977514,-0.5383822658144574,-0.404439653654813,0.9541341653374956,0 +0.820551398981353,0.3051557986923959,-1.2358981814464893,0.8322165369671238,0.38217153090277434,-0.7329782789169657,0.5060597119402284,-0.26025985033982585,0 +0.7042722073288928,-0.8209742936536496,-0.17555505803176844,1.109713406811062,0.09184128043898435,-0.1949102040102756,-0.3650204422271794,-0.3019886922345698,0 +2.148540719607677,0.4070040619404339,0.9652738679936681,-1.6574539291046313,0.13801112473623162,-1.0528659059590828,1.2398001358090163,0.49139048095793286,0 +-0.44164583219243947,0.43972648022329264,0.19051316341676985,1.4328130401888604,-0.07811423698295766,-0.731968430236827,-0.5819114296145883,0.7120251789813915,0 +2.344198740830126,0.45871407694701327,-2.7663344860040797,0.20585437903700002,1.17136415193063,-1.1756998944141859,-0.1283041186746317,-0.024339442224466427,0 +0.2876466179122786,1.6356914987736704,0.11494969421517078,0.1766758962916238,-0.27133817575397245,-0.7483321216359717,-0.8120467281548392,0.7597768890690438,0 +1.0261454244876846,-0.330697759927302,-1.61040677325884,-1.3791231563208974,0.9147811615292661,-0.4622505566361702,-0.32962882479085687,-1.3267881597955993,0 +-0.4046738311517917,-0.7629311908032939,0.3591954560449924,-1.5929111185524762,0.6182936084313935,0.6846649466669441,0.21337260248195788,2.302177193827913,0 +0.1491822335641173,-0.0362937780788009,0.1975485484737393,0.5267561180871134,-1.8696188206108517,0.46993586075705757,-0.38690164269151384,1.5745205776016526,0 +0.40631504967502824,-0.36899844481962857,-1.3975969338857699,0.8875929864527539,-1.2425771255349518,1.267288574385149,-0.04762832733987017,0.11810662916255035,0 +-1.0249369475532506,-1.4441408082322296,-1.5562162856343438,0.852230685998586,-0.4648029256193852,-1.6553705785167918,1.1142010436819993,-0.420795635790614,0 +2.131549578734257,-0.5444398508104547,1.2668259984349186,1.0751085291207068,0.6135895058325957,0.2615806870934877,-0.5020653730093495,1.3767391035018588,0 +0.16322725250531353,-1.6277909608178545,0.4992593319339219,0.6408577531243761,1.5235864899417033,-0.19553520537877855,-0.34710084306301353,-0.48156585531891366,0 +-0.04297154249048262,-0.16042638402923684,-1.1530205371349196,-0.46418005235288723,-0.5319688086241466,0.11977295273433437,0.33979629446882526,-1.7535181625478058,0 +-0.12261165443550483,-0.7994392402021717,-0.5806219611220284,-0.04014045712986196,0.11324448342832802,1.1384925413856146,-0.8876740667316415,-0.6127739996661806,0 +1.8567298778246837,0.17145788662664396,-1.9874735467013913,0.6528292069606302,-0.21224644664716563,-0.3785331968679066,-1.154844673642954,-0.15348520127165022,0 +-0.4392116853371466,0.46313639100966464,0.9762943252336795,0.2312489408636511,0.655024014008057,0.9243033861834187,0.3801861654392823,0.7014177089707351,0 +-0.08514029090246436,-0.7001172468317638,-2.318298790953055,-0.9382013598727752,0.16906215531548638,-0.5106382134664932,-0.20607087191116824,0.7722802396205715,0 +-0.09036789586302857,-0.6500365924448187,-1.2555932679698159,0.43175995900049663,-2.063710002483496,0.6855094000065509,-0.8712320101601077,1.0225406270154396,0 +1.3917193890016828,-0.002208713478819913,-2.6597928141984832,1.4785892821080293,-1.6991785937004704,2.0695297925189937,1.3545044372695483,1.11251656347303,0 +-0.8662360818795904,0.560557012542859,-0.8848579704632443,-1.176515101934332,-0.2577681307645193,0.1553321925211992,0.12962048412755003,-0.5292553471865282,0 +0.5254892326040485,1.0647281163457043,-0.7037363918799042,0.9005026840318275,0.6064169188474898,-0.01792098901569381,-0.577394613197653,-0.5458383078571367,0 +-0.3065268017155336,-0.5465662634778347,-1.316981981707946,0.43061488924755614,-0.7403318392394158,0.09456765387105226,-0.9350753693146795,0.2207573682215156,0 +-1.1704331093721174,-0.23853912774499406,0.5433335650889815,-0.2440984555168677,-0.303009004742183,-0.36867252472538753,-1.4367024287692811,2.8878198632752996,0 +-0.9449025851818987,-0.6952728080419496,-1.4524223710844404,1.0853357548692755,0.4227876942375318,0.5175420202199041,-0.808968213043654,1.031434457113636,0 +0.5298050113283103,1.4760668483892003,-0.22355430609415172,-0.9004790971659937,0.5157635620515597,-1.6256220067624754,0.7474300955455246,-1.0210833955068233,0 +0.6081694792261432,1.7437828001463707,-1.956502689026599,-0.6080016596790213,-1.8082530887119106,-0.8806878223357334,-1.553351645251398,-0.8658526828953959,0 +-0.6723517076552893,-0.23057576815461966,0.8910279087965369,0.5788000901502823,-0.706968285272678,-1.428377807387328,-0.14608364962014286,0.922384604808989,0 +0.19251669254908213,0.18703048965603197,-1.1401845985988972,0.11084929061991772,-0.7542621763801308,-0.38496232315794576,-0.47006481284359813,0.047452867076501946,0 +0.563624248597565,-0.2036043817811077,1.850097486524959,1.021170133693846,-1.8286021074288807,0.5431253795722862,0.2918395912696462,0.43383886706363917,0 +0.7514119455637641,-1.264668702027948,0.02371053640938355,-1.0634979399400715,0.5348449198248831,-0.6707054514472633,-1.6865552622644402,-0.043274765716689714,0 +-1.0018268152255863,-0.7626432969947573,-0.1997195859278033,1.1958064011929233,-0.6218222782064365,0.2318130003070748,0.5705200940086177,1.6571907468966283,0 +-1.5444114714436195,0.479704016383983,0.49614111842074027,-0.9442126788744317,0.5609226084315204,-0.8049656425901573,0.7133274147745936,0.7752662496381627,0 +-1.6903943320979324,0.5572013376475113,0.2344161808499928,-0.8957479245521986,-0.8414244748333863,0.3833691135692838,-0.09381166336532262,-0.4094298564540957,0 +-0.5228327982170599,-1.3861131468599623,0.1493964099183348,-1.4289416377781559,-0.466414076209718,-0.1607690640023948,-2.236178973257428,-0.40939557170856694,0 +0.698835364786331,2.2413102005811387,-0.4149451824301243,1.5295602617307302,-0.06439018153960473,0.006824782163432411,-0.9894374675566683,-0.039822239708779544,0 +0.4982773435729061,1.5077547188706473,-1.6250304576072052,-0.430974814264929,1.0370388711918654,0.13907212041841677,-0.3066118082514247,-0.061275308283254365,0 +1.0129464874085148,0.7431772982827767,0.9066007963168424,0.25286880193059313,-1.079601940814109,1.4975104226785834,-0.8608699456392673,-0.08284401306092869,0 +-0.9745440997268442,-0.021143286909308445,0.1687652036684652,1.6204693011816138,0.4220769626771023,2.6157067815899495,-0.5654802862288791,-1.6544820241370644,0 +0.6840879834601468,0.7877580716583129,1.2872452051203989,-0.647441368556113,0.8437698709539719,-0.1361780578404978,0.49526906368221096,0.7527326491966859,0 +-0.5794557131512171,-0.014956233246044968,1.534874978656993,-0.23840822982407228,0.1259599121346865,-0.6841888317006621,-1.7757404633361322,-1.4775715544996628,0 +-0.4138959044658328,0.7429568390537766,-0.13626856894471892,0.4842329022726548,-0.7269352946893177,-0.2484038102002347,0.9044904059502893,0.7759633263050225,0 +0.34997962615604294,0.3010904590019906,-0.6058656030835531,-0.14236938577829364,-1.2053369712289888,-0.5181986541793373,-0.20201625592538994,0.3746783488786501,0 +-1.1490259173653927,0.037259014785182516,1.3948195663795295,-1.700507779351282,2.02960340226811,1.632423823833253,0.523751338259541,-0.62415579882112,0 +0.5654945257355587,-0.1883604431847369,-0.40613406826874504,-1.1243558157050197,1.3428616656281913,-1.1342727310667653,-0.054374155994906796,-1.1690454364935627,0 +0.7431501892718955,0.9104989449725361,-0.914556924529488,1.063757375395489,0.6770500263615504,-1.313409516519555,1.655235885880252,0.08348779135582705,0 +0.26425106777430424,-0.2099255215546659,1.43664968990339,0.7942812165768327,-1.0685966282790749,-0.511981938013239,1.4888757220579343,0.6012757652491943,0 +-0.6976692843559605,1.3759540346937862,0.383598595721904,-0.7258365099939034,0.5899499749453588,-0.4135254729521523,-0.9172906164726028,-0.4742426019684067,0 +0.009013721202522402,-1.5149132322024053,0.41730618578091727,-1.173123756336885,0.9060534384130662,0.39853826103407824,-1.094092352070488,-0.2878058308398227,0 +0.13478381957602822,-2.274307671466167,-0.59418559892953,0.49681493085110334,2.1620558232856517,-0.9634024149439181,-0.5209754606168973,1.485731193382147,0 +0.9360872517504086,-0.8684349492540614,0.6604288699914331,0.20429681624972826,-0.7917169514587826,1.1868089502946861,2.672840258152374,-0.9944467475688058,0 +0.5449519027565989,-0.1095919270979062,2.698410960988141,-2.294638726206415,-0.4407349925624898,0.18385711342444638,-0.24534132115491641,1.4228870296896607,0 +0.9021944017438603,0.020851105673074855,1.5570119538544784,1.119447629064242,1.3146419100637057,0.4034688045583402,0.5439367491425428,-0.8402400248776841,0 +-2.2280577072750214,-0.893625446837922,1.1781974581844266,-0.7716578098996993,-0.8384565525546029,-0.014125870054098738,2.07735209036106,0.4566344726827797,0 +0.1416021523135291,-0.5499474402632397,1.134293272772233,0.7915424745955475,-0.035390826919003186,-0.19502139279623026,-1.0381882803775495,0.44388096113429387,0 +0.9606600306324522,-0.430363453132603,1.6967733369846894,0.5750677429830575,-0.5250033966605889,-1.731877986185952,-0.38108387150960743,-0.571725467249187,0 +-0.7826068534484084,0.4386878617862437,0.15419257992832103,-0.33454544893633353,0.13091785450295976,0.32752303788400644,0.3234199480000669,0.40308765199171576,0 +0.9425657682515493,-0.21689698683229477,-0.01300927891590564,-0.20463234843431202,0.5922049837211271,-1.4927634698784868,-0.6790165573277347,0.4714419484291411,0 +-0.22526817933800622,0.46831490175669854,0.2569219867547813,-1.7524224409057496,-0.002983406984425503,-0.7215001359409494,-1.3424787336074195,2.723769216283926,0 +-1.2119655678154837,-0.8887661568691401,-0.18320844911067372,-0.19023789937284458,-0.1797363195407225,-0.021609424694862104,-0.6743068464115805,-1.4495716735510311,0 +0.1230977319021158,0.995141374929161,-0.3889093797230683,0.43228996384725543,1.5233761870081777,-0.7126815363242786,-1.4601337410361062,-1.0027172966473514,0 +0.2754514335088486,-0.1703124132045451,0.5834896783595218,-1.527437490974266,0.7593493661648388,0.18157707684284963,0.4538152321248871,0.026895436876389393,0 +-0.11090238162376062,0.9817396512195041,0.5874183698733543,0.5609002778295635,2.6774447324038553,1.5727889983250172,0.20474858158303924,-1.6468786137684144,0 +-0.5445399486076962,-0.7886846838652335,1.1565069785707507,1.3531443438462145,-0.41116739026528687,1.120624363009133,-1.3921964441544799,-0.2812499613489592,0 +0.2572655237878564,0.19679967511024934,-0.5370284499533972,-1.9234451407544793,0.5227367330935229,-2.1750493192804705,0.781033347380252,1.1615963125623552,0 +-1.0291620707639564,1.1409126594718968,-0.7017079125095678,-0.05446195028888975,-0.3414049228097463,-1.5053979137628641,-0.7036664032493729,1.3850280381934807,0 +-1.5274305742941394,0.10962986749389049,-0.3784088135546748,-1.8263292091252743,0.7066533738610695,-0.6555693899079243,0.05352553722008417,-0.4879480272217801,0 +-0.1301514466318604,0.12643226045054531,0.10962103944192243,-0.24369086430943682,1.4047835731472345,-0.02629884874701653,-1.0678104840238734,0.5526397530533581,0 +-2.0671579386167203,1.3758845900222691,-1.0240039152590839,-1.6292244483978024,-0.9674954640183698,0.11364583110585298,0.2185663236051352,-0.4830111662502289,0 +1.0549179707169154,-2.6918076704799896,0.45370381552364497,0.1407058264513319,-0.4314613323375029,1.5372177202818733,-1.8316251279869702,-0.6966609852046719,0 +0.38673208910918017,-0.3106118650498091,-0.4852410029006377,1.959243704009691,-0.43176223583129064,-2.0895761588772404,-0.8660724299396918,1.0378484567796975,0 +0.9245886243602122,-0.11422133877648459,-0.2676459029699891,0.20513174092516548,1.0529508593936099,0.05033595387979827,-1.1691051979334235,-0.028602117251140986,0 +1.8568968276646929,1.3571593193282934,1.7181814568256921,-0.2580998613070168,-0.4129859156635337,0.1600218071288574,0.3629708436427635,1.4202012485672721,0 +-1.5732303596058277,-0.24135783828087104,-1.0468062908214717,2.4004656468430654,0.9216810812779903,-1.7461633029047052,-1.1988111485752193,1.4169897707202668,0 +-0.2593181992355875,-0.8044825460780427,0.24805694908089715,1.91115019395029,-0.44033268125703867,0.7815680923348226,0.016475639239772674,0.4103185764635153,0 +-0.2001416264272586,-0.6753578662429406,2.0402010014814174,-1.5739482978317814,0.4268258284949677,0.4946547336774858,-0.3351361969640775,2.2396139348162496,0 +1.1498552387234482,0.9711305957442736,1.8451306091266908,0.22256307328139674,-0.07155924575960122,-1.0745407334382304,0.6310291187361974,-0.5963640382973715,0 +2.3344120982468217,-1.2750332010150005,-0.6950739986074671,1.9368262638647293,1.6922778365342077,0.49541103785953317,-0.4494816128152497,0.9356902542075124,0 +-0.09369889784336466,-1.4282403050908037,0.7188312222977792,-0.8341550093084907,0.05899129646289269,1.2139614743581648,-0.10317857719549557,-0.5912151538153118,0 +1.7483033286124687,0.027163233680741916,1.296876171512726,2.2647069423008968,2.352644599690555,2.2556739687477196,2.4333841362683,3.986770188721395,1 +2.601410847485229,1.8887217202687268,1.9843657747473749,0.6987260749074651,1.8220640447536949,-0.8124229147950897,2.1673610562636108,1.0873686199030752,1 +2.398230591344113,2.4267062448976753,2.73587940946113,1.8791068070633539,2.710777529403608,2.8775105472552704,1.4848126000039112,3.367037400929722,1 +2.384502639618944,3.138925919895466,1.7289109286876982,2.664993907173053,1.1289053206203827,2.300952897229172,1.5858413351768887,2.999218736004375,1 +2.765652270358626,1.1973327591084235,2.899790989970108,1.2846952783975167,3.4633056865630545,1.3099655342408343,1.8121205608326454,1.0525519110712702,1 +0.7143021145037378,3.028631938423106,0.4699708119956292,1.505619833705032,1.0890361513739517,1.1677857814749686,-1.1489453000540073,2.9947471596668023,1 +1.171605420229917,2.2246257564296754,1.4364854786140095,3.253843690436207,0.729286777732868,2.0615583390267975,2.246730207749372,1.6136695497421107,1 +3.5499587110507287,2.0195467188743046,2.283631187850723,2.893596376370177,1.6933237840894964,3.3007272241034045,1.6239744049236413,1.2523659486816592,1 +1.9063449541499362,1.5136756894424162,3.5170884954639527,2.374710739672362,1.1840884215930343,2.163342354864808,2.440403217490287,3.0585375928707705,1 +-0.5969729090420199,2.3748107749820204,1.5768578203888826,1.8930165066810565,1.897200308135639,1.8720154566914862,1.2459555828871518,4.383923560367738,1 +2.1197504009544765,1.4152096872794453,2.6383853405442235,1.548769392575484,3.4736537552818594,1.45400957138577,1.0681434573576987,2.834532165799902,1 +2.6917162977446587,1.0351364343832057,2.060516884317458,3.125102470409425,1.5308983012312978,3.943448077322871,1.845766316683597,1.9847479940674537,1 +1.5513528201234135,2.7191993976651916,3.3778775808385726,1.1402090230734114,3.331950698775932,2.219254663338199,1.2220185402368902,0.4468635340560434,1 +2.3737205587234143,3.200703641453072,1.9141456404721207,2.6910171881232503,2.3951171995880625,1.0536837408930297,-0.20243002364345886,2.5954306144013146,1 +1.1481358800985433,0.741058771484344,2.093583659647955,1.581520925657569,1.6528773462841144,2.710502807468902,2.4590596718967968,2.7030870070699544,1 +1.507882121182769,0.8112967359317318,-0.28228683768379037,2.5083462971357333,2.0536063477750983,4.420972752717661,1.9378072188073951,2.797678525536809,1 +1.378730577696779,1.3409882702201719,0.8783291328917842,1.3578245946357006,0.3795038946384808,0.8091713879938289,1.2428299440122488,1.2970414333073252,1 +3.009778793849299,1.2336250982752706,2.3555031603429124,2.0104348980708937,1.0162519729435062,2.377110815696387,1.4262841257337289,2.223466179438586,1 +3.189392657120691,0.9106455673708465,2.806462494674056,3.3295814212138457,2.251248824291765,4.511629804251621,2.54865760254426,0.9952967621633837,1 +2.755902078078357,0.07912159744145053,-1.8038530722876422,2.2475438561498753,1.7341464828363977,0.5741839061986966,1.3384024521681703,1.163061380679443,1 +2.7901508529480243,1.680220560288816,0.7947221658737773,0.5359061366606914,2.4785445320226818,3.204491041440412,2.157373467079061,1.2182063879671094,1 +3.29635253014791,2.4234794305154708,2.45882522024472,1.4257499548836245,2.0038222240040824,2.558148904301267,3.3337130364595415,0.2555642754966896,1 +2.4155512943337003,1.385867597190812,1.8277883511224746,1.0635360320087104,0.8162232711710506,2.8525866573831875,3.643640597084719,2.73154572461943,1 +2.9699318210214534,1.0641705228911689,2.4975333184625708,3.213261858114414,2.0595337185279154,1.2110803915738892,1.0405967604082225,2.975765935312538,1 +3.493146421042016,1.3708367785601652,2.7456940010284208,0.3418739173632155,1.7573799769155845,2.6840636939643043,1.4194183988623328,2.196819450225246,1 +0.989811964844574,1.7490474682950023,1.8556503068897223,1.890265634030671,2.392271510478632,3.1480329173575994,1.6452284820392813,2.6788581916680503,1 +2.2390176316721355,1.1315486703497584,2.9179864831061235,1.5851043694673779,2.0719071336818593,2.83989313186631,1.6806462023452378,0.732496505928375,1 +2.358521160205701,2.687847249779743,3.3225489063439593,2.451151077165399,0.31647487959492815,1.5694890249837516,2.5433620140503455,3.930365451533033,1 +2.564955100274118,0.8677949861859566,3.0491289373433883,2.605601936594337,2.6235151889115045,-0.198107483434125,1.6007403980642096,1.990374382455663,1 +2.423852866146248,2.490984202539583,1.0724959654435577,1.7966965682915206,2.0298040637668953,0.4879810770130042,3.6042424543290403,2.808837288716483,1 +2.677418662403344,1.570501889452232,1.7165965788687998,2.357564711933253,2.5233344755932534,1.1661105409686623,1.9143028388839318,0.3019291192235336,1 +0.6532288011403715,1.4147509977005566,3.3350902657521004,2.7110180222643896,3.233688017216578,2.720805834793299,1.3899884620386693,1.8270545086814654,1 +0.8315024695173754,0.10192036088474743,2.0145381696122238,-0.46369795526522317,1.7205933289064212,1.304775938045431,3.2191976664079327,1.9217510996833171,1 +2.3295319854755907,2.8245651419747024,2.016691761312436,1.4911679847524693,0.5667326132455304,2.917415303052555,2.4137351655959804,1.4829887053753037,1 +2.864827531439849,-0.06739741748504136,3.3858624763898364,1.4956761458533185,1.3177519238251962,0.4622055150734252,2.204285366573192,1.7159888518467412,1 +0.868349870105424,1.6166137393055116,3.7107827826446655,0.7803609673905212,2.0182435428643273,1.397173215962261,2.174037020780692,-0.02353650262115181,1 +2.7102129330903724,3.1286362792566242,2.4073446381007257,1.8301515865925686,4.007790352416683,1.0526233887978584,2.591423815223127,0.8420106768813977,1 +1.7637455504387598,0.4116040584527614,1.6964309937146949,1.2935812136400369,3.229428211370659,1.2721138986561,1.1390134879742462,2.8203522723056507,1 +1.9743592053828782,1.3241325057865745,-0.06625828478834261,2.1846115441787046,2.464898432574251,1.0152823074291342,2.00641599541315,-0.787322957226313,1 +1.1579760245325414,3.1085914758057154,2.2511400183574786,3.2059013842983584,0.5952951817505139,2.1329170255863215,1.1760757942993718,4.422135392186943,1 +2.7044884387891512,2.9644294936508846,3.4146539086423013,2.4557978876074613,0.5999306834699281,0.5949173179430156,2.0806727656733757,2.581368889038795,1 +2.7133695870962606,3.251364973690254,0.7718103386306325,2.4419964615729666,1.8589886598481067,2.7057270023203084,0.9111262402924327,2.4706211882184377,1 +2.2139143172703224,2.3725661701084872,3.1828961490562184,2.7603080913385747,2.989561681931576,2.559141947282498,2.844890752854635,2.4005402523427675,1 +2.235582873168493,3.5404967385200994,1.6517116297175793,3.257460329895542,0.22179157743442146,0.9550463581993434,2.119810209191505,3.7894885740799644,1 +2.3988334244008653,1.4763746184713238,1.4171222441197366,2.658099505637919,1.2511904244989382,3.750981638668408,2.050330879102536,3.467199282619718,1 +3.0561401595707904,1.9728282902741194,3.1239912290276504,1.0534713773557443,3.1187631106496747,2.5050041974647694,3.0373627738249045,1.4568045630644608,1 +2.594074039919567,2.3868250035538265,4.05821716274532,2.3150897821171994,2.2952887229409717,0.7515501041157477,1.534404551513006,2.2686138775387232,1 +2.2182627919635642,2.4749250720929408,2.996220284950729,2.9926839155844216,2.9856589017503152,1.7624058345918079,1.8053353571447404,1.5785374915103647,1 +0.9552692752736662,0.9034281043442729,2.409909681611447,1.3891745927663233,4.066853954069765,4.228030310359657,0.997209042812284,2.343878777998967,1 +2.2514313902971876,2.4770925910287294,2.2977337100219324,2.909408332371621,1.0629584143122908,3.3161186738621566,1.4503344526714683,1.9427420171479592,1 +1.1953296694900957,1.0988930564772867,0.33069935637779646,1.4008452870699446,1.4505376505733865,1.0100565820058933,1.216664682942087,3.1842442758270684,1 +2.343188861038781,2.8796564901822297,2.240004264585324,2.334608523761145,-0.03196727611671246,-0.9778543958920607,2.0525344648016364,3.3091797896767083,1 +0.879474512933089,2.7805224001111863,-0.6921872864703928,-0.2065111645099007,2.043809919239565,2.914514878241931,-0.053133623530534635,1.5994629701395757,1 +2.593976649897794,1.0032119076772492,2.7296818872599657,2.2261014391326306,2.564170094177247,2.6586517006442074,2.5058022018913686,3.7279673912806848,1 +1.2211137946803723,1.389077939101429,2.7528567207222925,2.7383480290326574,2.2949717695740715,2.701904678656685,0.8217524656626767,1.4494734100232085,1 +0.10496742409043591,3.158600118757902,2.8082738876022453,1.5497400421349001,2.5349513704841966,4.663298470272453,4.655004388430488,0.05689413316968772,1 +-0.49164781157123505,2.6634169034571733,2.5491149787602314,1.1765838878819401,1.2145315965367254,2.2799637467374665,2.6460613570541955,2.400830901446085,1 +0.9736472940992371,2.9707059910541695,3.0742584613767443,1.7587635051899269,1.5708798371161048,0.5819336062018341,3.0614250321455714,2.4704385142701697,1 +2.764253464770314,1.7632002094359525,1.2003253604791075,2.4015592221517936,2.4999322364493577,2.739117515636851,1.260329604397147,1.5921752148948094,1 +1.517381216554006,0.43330056960142804,1.6660650941165587,1.6410842441527973,3.63855868990606,2.0078928358887644,1.410576829058336,3.012389367047989,1 +1.2076538945635007,3.010694370821265,2.6183462874808225,3.4585886647721775,3.0301485925431386,2.7126468311286036,3.8735121767872123,1.649100465688158,1 +0.9835153654393416,2.272952088072356,2.9022445990534216,2.0017677370849283,1.8235424233693693,0.8813223584587775,3.40187477135441,3.000789058170109,1 +0.9845701154609448,0.21513442017919715,0.817292458340731,2.1899028958644196,1.1145892627147997,3.101711292015106,2.92672618801363,1.9329796298118807,1 +1.3783904478176816,1.5441610246984752,0.8808603277093712,1.7071448179356374,0.6026721262591628,1.381105147972038,1.7434232639691147,3.3275975063253025,1 +2.2053670415286644,2.9619678102776192,1.8492602520531964,1.055541073805435,1.9017587854150106,4.791624923282523,3.094495991417979,1.5812344951121813,1 +1.4000959924775804,2.230463700962075,2.400106670451627,2.9880335995430554,1.9912062588202792,2.2496624993773477,0.2505798773714425,2.242669891725679,1 +1.436359702327274,2.0293072304692874,1.9725540763660059,1.1611000965550777,3.0614641504692512,1.4360285708017166,2.4156505610440226,2.743196261262736,1 +1.081493880617524,2.5812006399266805,2.898497812843992,1.6271985579402652,0.9844779888816206,1.2796211435118128,2.4736458038014906,1.8100528995153684,1 +0.5944775497602761,2.3686855310621215,0.8371209193242404,1.1407136274557823,-0.03458503591968931,1.4178532988027097,2.0097580438345166,1.3112965180082443,1 +3.121124395108488,1.1585907258679478,0.31415522380619576,3.3824530998046543,2.059650798144702,3.0512103916204927,1.1959589368802086,4.517043580816745,1 +1.503467317505003,1.279591268612092,0.10717148709020008,1.854651371105383,1.963845043871161,3.0208447538105867,4.16142577221404,0.5588874116306954,1 +2.216603585947366,1.9965727015149006,1.9420298023074098,1.5010239994870738,1.065127464973949,2.820712156867552,2.6911797994773337,0.44196878695603625,1 +2.5136288113636986,2.198158261655324,1.3979487289127492,2.768323243736022,3.2393712443150804,2.7682730550220978,3.6086379422121997,2.1227302824335053,1 +1.0699591062875706,2.412913845250105,1.025998446191068,-0.16580622919363597,2.0481865395822068,3.2759142203892297,1.6281575345005228,4.8914238054784995,1 +0.9808888013941321,1.6262226345466868,2.6725756925497954,1.0268222355840975,2.6627843734542047,1.543456952400224,0.794428603348087,0.834255223475572,1 +1.7561914266235465,2.7490593167248103,1.6238606664773103,1.8888968348788637,2.394042607340328,2.8160983574214624,1.6955621156199938,5.352834657097896,1 +2.3803080142184636,3.1282970046122753,2.743823605944935,2.9649611783222443,1.2054651470204358,3.731171120259172,1.3791230110929589,2.645189085936336,1 +1.6100048108341762,2.470758437072442,1.4823139558032197,1.3747953259149652,1.607619734612836,1.7478837585831233,2.574321990903124,2.961204279359444,1 +1.202047499487561,3.924715532554041,2.273473983637973,1.3557959347686699,0.6450075417046781,3.2106400155791848,2.227104123353493,3.3794646281238476,1 +2.7560426386513237,2.247502798875466,2.047134506096542,1.0441403751941973,1.4399816593328034,0.7936277225227903,2.452061746883375,1.3047540499311294,1 +1.711092097851746,2.5368076333915632,1.1070052687215326,1.122259707646026,2.730600302289777,3.1630619252137784,1.2360188208093725,2.3840452497107765,1 +0.45653391807359633,0.6310845473639732,1.3462064059830117,1.1966167286947536,1.8163999233098926,3.245008001778383,2.5728670821123076,2.2002924683734486,1 +0.20255752788687809,1.29711783353563,0.532014262715395,1.1532611086268783,2.7982767223332736,2.1228395243263525,2.133208996755501,2.8788673774911957,1 +3.4449150049849404,2.9882669685367933,2.2684722934841792,1.2440655702547236,1.6984621624285294,1.9434366693604157,0.9717439739535485,2.8256941723115965,1 +2.6523109825843223,1.583149695589622,2.7380896578044767,1.7636056610084134,1.1806137211926715,1.7002881665497498,2.632540848977176,1.7034575919061328,1 +1.2611847717078488,2.5851572428387284,0.36005589983176733,1.9675848236466045,1.6999926359579987,3.212814474371337,4.1322507138784,1.5246424088945894,1 +2.158120535200955,2.2759818597472643,2.0935604193281874,2.535778608666398,3.5701058986870997,4.334710977205157,2.711595832211896,1.8465618058672744,1 +1.4508793247891334,0.6477886152037462,2.327973132942111,3.4585902971942613,1.3750601351051308,1.7020761686287194,2.424331914271769,3.7570595350388,1 +0.8227952641078733,1.261739306859072,3.571646293677337,0.9069880837343625,4.04337936578523,2.0641160576612054,1.793580810125735,1.0841068769291855,1 +1.5643297683775135,3.2075446927981677,1.3997496547521528,5.373232308699949,1.3120558097520358,1.7131424886239852,1.5359687119719387,0.8774672639760597,1 +1.8794335320084792,-0.12685555942170978,2.275345127848561,2.2750250839891426,1.689416376893982,0.33465764297209577,1.2478258915161144,2.5478521367566174,1 +1.7837846888841613,3.194607451163165,1.3196865984971655,2.1644325351830846,0.5929166122321903,1.0853736659809359,0.4573925562494596,0.469712757716378,1 +0.47343938397160024,1.952631329588076,3.1973244968442507,3.01523968148092,1.2529276461862675,1.9462100167219898,1.2624488917472192,3.2711912582644196,1 +1.6652772137392458,3.413413582324276,2.9930116285591044,1.4565039133651605,0.9544264861497531,2.4306772717771232,1.2944273423924835,1.6337717638764273,1 +1.5894288077637413,1.710600446441384,1.6196857886377027,0.5355400817587643,3.4528552586494996,0.979083952012588,1.3471422481769022,1.4905452442250278,1 +2.3039902750639656,2.882722694294075,1.2820269615105724,2.0234881980872528,1.7917178742697413,1.1659044370492162,2.093784855127863,1.7235186061340153,1 +0.7538025891991844,3.716021238763729,4.439286695112208,0.033257354574928844,1.4313744153241894,0.6855591983836304,1.6701851103141914,0.48536079627126627,1 +2.262148267627659,3.4099902851650707,0.9847224314319356,2.6238908184984657,1.401857586276508,1.7346069329530391,2.9821037808500552,2.3156484450663903,1 +1.301917509010202,1.3692053088719685,1.9605316692822585,2.7655591284073417,2.3063478408513465,2.16967831287856,2.3566990368678873,0.3769519008668809,1 +3.459530497286404,2.3983651718500125,1.9290592951995669,0.36809049387751047,1.6857263974875414,1.791299375440254,1.9136417359896416,0.9456875704561698,1 +3.222901058501424,1.5036908427381979,0.17092356341989312,2.1208202050276737,2.3010853234194144,4.264689546765187,1.195164605883936,2.7437372741050368,1 +3.393991071012908,1.6751337680861307,2.7053086029196147,1.3808248245499173,2.278397963700055,0.6988480635922723,0.09413861647481947,0.5631299370185934,1 +0.33471273479223385,3.0060271515175594,1.6632865254807971,2.6546743145169476,3.9086081041182164,2.215045516183463,1.6261503157458777,1.5551672059424315,1 +2.4685184847063684,2.1187640140042148,2.8474435646906047,-0.09998313065584297,-0.11767788768521337,1.2556629232145178,2.799299857575281,2.2504551669432513,1 +3.7815200643881983,0.6841477076528508,1.7426901835530457,0.991079042286785,1.5001793060947548,2.7108543775524967,0.8337839679191354,2.3246388125357744,1 +1.8971610805991703,3.7846718446935435,1.9565908123333162,1.2454073098682494,1.1687485381313856,1.6590052315841,0.7252746927734743,2.2391517513272468,1 +2.508321090999473,2.74719721327968,2.4990526215577518,1.9849716149770746,4.18448102565357,0.10878189273935401,2.249025293752674,2.7578463120392462,1 +3.623690870599913,2.6738444935189585,2.191238045082652,3.978390174918384,2.855163444279371,3.5055379061902117,2.5562151958419355,2.3698148813083124,1 +1.9294329101351948,2.0524075093926473,2.6254993950873655,2.4292444922256884,3.14642704453622,3.1705227105698874,2.6217716809986915,2.428544580201538,1 +2.525815318880183,2.0353000190881976,1.626780356940213,1.5283468975546899,6.035028904870507,1.5121815649188677,3.260786247765564,0.6817948272883136,1 +0.9978392689683315,2.6052014717936056,2.4007920156697553,1.393530572061115,2.6539705599835566,1.965532205923283,1.4215958906222697,-0.09372732554771979,1 +2.8125596116462632,3.1761054471854187,1.8531274448560382,1.4462735032580525,2.2931645604124973,0.976099980345688,1.7131753137842514,3.9560493931656184,1 +1.2691825649513153,1.2897418932423925,2.3488060157261295,1.614201506658556,0.3219493896183596,2.105047831144024,0.7825262149129342,3.0194009030476456,1 +2.5300203669406534,1.7978023099492346,2.9007326561236813,2.353715679213177,1.7957983525077434,2.9906765268484454,1.774306369188809,2.7935542208203836,1 +1.5221185664492947,1.8932354992008258,1.5069774481548985,2.6876957165983972,2.5247554182665257,2.5815660697154312,2.5534061257533356,2.528709327544558,1 +2.2724822843595143,2.318036545312295,2.385158249438885,1.5490854816547317,1.7534560833768662,4.056186504078281,2.344835757911062,3.86267334760902,1 +1.6070123952928927,0.5615996858603269,2.697885832604901,1.7048203099553607,1.9395781995004302,1.6973279453968257,3.17677566061476,1.413808165977891,1 +2.7689453716523618,0.44698995520802853,1.8044188036610749,2.1797482241406048,2.6215354765700347,2.8415572562548226,2.860366592616697,1.4057678159315259,1 +3.2974229409741405,2.233204273615367,1.4946417929360631,2.2558558944546165,2.7080288130409764,1.7968439245729622,1.9586927708854176,1.7341067696235903,1 +0.6443532310375533,2.1945775158066447,2.363697006056631,1.055962164948875,2.1791653838632197,2.0998672450042424,2.834701099665728,1.582603822950392,1 +2.37493807834467,2.0464815283198003,2.0461447218566393,2.6464357203713478,3.5434239968243073,2.833403606784148,1.8876888070786568,1.7176695977776781,1 +0.3128392371823303,2.796612587576766,1.98813453866134,0.2567783712071394,3.2145165829864206,1.0878368861744645,2.5124240718400257,1.8986315746195195,1 +1.3054783600886273,3.163325888190119,0.9334418763501224,0.5042458126749454,2.252200183157221,0.8873810514256706,1.2528589133086974,2.229455118017505,1 +3.088770690931499,2.7539481967545223,1.259073340837118,0.8518331232277168,1.9281540390547856,1.7793120711282817,1.3011243919556117,1.307315834141519,1 +1.2147756431485472,1.3619330535080942,2.016015393961889,2.5146089228062536,2.797874168298992,2.2301224537602975,2.6073758135468386,0.7180592140865851,1 +0.942857488833382,2.456596258974771,0.46985313580948995,1.8344416034896285,2.0683918927508187,-0.0005997611320180951,2.4157948841263486,3.2769625249307484,1 +1.9099209797378458,0.5967826400832468,0.8606951851888327,2.4331700025043115,3.1064373621518606,3.0786850884505923,2.0341499766394024,1.2433322416802863,1 +2.018584824073049,1.677299175481617,2.5534692141617845,2.0405690700855774,2.5846495838477237,2.2016686379793686,2.914957705671227,0.08690410791438397,1 +0.8567690842922016,0.8814924375571471,2.5817789527793327,2.046795229692898,0.4220069736192258,2.3399814979919724,4.632264799611576,2.066788219617638,1 +1.5934650146767924,1.3506224599898506,2.8122705810343396,2.3460723387856572,3.7659158453870054,3.4395133832383085,3.333895819558618,1.5933940148940646,1 +1.7555551744657887,3.9352203832620556,2.124795501538597,2.6020381961144543,1.5474828326399612,3.079643796257732,3.2650569108971146,1.4853640596716198,1 +1.8962571652717244,1.3073256662951045,1.3697364496885347,0.9243968788906947,0.8728128925046208,3.931721944730259,0.5418588549580121,3.3809370723776793,1 +1.3707233505047687,3.1333369685274164,3.618864356978375,3.237722718341782,3.2083067317654823,0.5025100548191936,2.7647697598605534,2.287337414138537,1 +1.6685304361624407,2.209260590725996,0.0037122464281000855,0.34787880636453394,2.689513350296155,1.8478044386638603,1.4344197618595964,2.054524088094385,1 +3.979064366542419,1.2775182994843242,1.8782983812926215,2.3791221815366055,2.997504032842548,3.0284584330307753,2.9862676131926205,1.1349232905477962,1 +2.4221194444246326,0.11847164228541818,0.1553547541901119,2.1063386849812,1.3805518859391106,2.862348342623314,2.3813006511647834,2.8959497167843917,1 +2.122651826836804,1.9900703225103489,0.30759192071022756,1.4762071216741868,2.485782708653833,1.9148263898063917,2.389518012921622,3.12572567418949,1 +0.6499229653617773,0.49779740815307316,2.0199999304759184,2.2949871303078035,1.6228720394042329,2.048915586072308,2.372137010278248,1.2626145910190372,1 +2.7793565885309484,2.569764840100301,0.716061110540096,2.796747657836065,1.6830317021972339,3.3132682741727884,1.4932619462571237,1.6646897309154545,1 +1.2011667505233006,1.335426242938718,2.577596654800634,2.321162331083852,2.6822306050075695,0.6165505641018647,2.7905952812183337,1.930035886757183,1 +0.7227412458271445,0.4573959676889918,2.5176794712246915,2.0724569980046113,2.7627439362253976,3.0300556544637063,1.7951858485137064,1.6943040924902029,1 +2.6558921989912485,1.2367565311554303,4.541454356985844,1.0167013363804327,2.8266975023993304,2.607398345154269,2.371470648174074,2.934576386680728,1 +1.916305046021933,1.5605945313694431,1.3319901959399623,1.9274691722626793,2.440640867134719,2.28092293752735,1.2778137703991135,1.628962119608976,1 +1.7690516159638179,1.0099688557636557,2.6227657175621273,0.3190590426475288,2.3725500567783206,3.0307789722738017,0.751981337661765,2.3048346201129597,1 +1.2120415232758996,2.8618230467070447,2.610684260102643,2.067502509326702,1.598236257984476,3.0607187046392834,2.3268124719052086,3.421659775112242,1 +1.0599400002857648,2.2351364428664633,3.409057654877949,0.4046914914832498,1.9786927098266913,1.0450265728015378,0.9228160743678275,2.556362209018332,1 +3.638274565392795,1.237785644766327,3.85625030891862,1.674478970067426,2.5547324600100296,3.1985263697789192,1.8094604232626064,4.396878880078347,1 +1.6740285111817081,4.379564457739871,1.3515932323848645,1.0340996232779496,4.179627926277961,2.6154074183980898,3.153292501937744,2.741462274520061,1 +2.792723325572856,0.8915326432422623,2.2751287161950824,0.6287713928035819,0.7280985483937235,4.30582437495648,2.065174907416693,1.3773779563249595,1 +1.8401669341942668,2.0378972960674164,4.360579312912332,2.436054268689239,2.6290571659499333,1.4447744815082693,3.1417891736928034,2.2395556998458916,1 +4.310857281965759,5.329115238583052,3.634529472397341,5.738268987665299,3.940282644064549,4.972696670163209,3.123525788707655,4.048633757401474,2 +3.750202146438367,4.347633992168278,4.232967766819165,3.801820533160707,3.813987507740797,3.7590923265778486,3.196437725550263,5.063417684450945,2 +3.488557806988239,4.296114316514786,4.790523386597821,4.106640033376049,3.8257352058404708,4.17068633715199,3.063392555675024,1.5584731966589636,2 +5.071115695633775,3.7111332970957096,5.70016764969801,3.5158251232708437,4.75163274201752,5.22255480021593,4.36940453930555,4.828317584332087,2 +3.5825384043192283,3.99137580586903,4.227975156330722,2.9587143699624763,4.295303457072095,3.9563003399971635,3.8835773727359655,6.1320945519073025,2 +3.172093553289444,5.33542560477347,2.6760055187854075,4.200528581882996,4.908032140580376,3.554806518616483,3.8824281199561486,4.735432353399091,2 +3.9266541268594635,2.065303171171748,2.6636524724287542,5.271867093812837,5.1485025841725,3.7355888239956947,5.200055630729257,4.460812018235301,2 +2.447771238968072,3.9602198136748967,2.7038705664238303,2.8700872795965044,3.4726903056106178,3.6447417277760734,3.662088197941573,3.49892462137143,2 +4.557564334803392,2.5192489349893226,5.481935999198516,4.569032708123377,4.805732487755117,4.219222819836097,4.170152990431727,3.906630958898509,2 +4.596116249942367,2.937870058520544,2.8186027733679557,3.875832538480887,3.8176842474255173,4.644204082522721,3.4833407397129315,5.183521753806303,2 +3.5992302375382477,4.413945238310851,4.384074598233404,5.127196685309827,4.255248089952376,3.620940360794185,5.459394525340059,2.734901322145493,2 +3.925100240641786,3.713642528072506,4.178766092723858,3.9507664915499396,3.1889037298176857,4.493043139016562,4.138980774724594,5.139156873249872,2 +4.02809123603643,4.081414049789189,3.2925023215609333,5.123463325752912,4.06148426215384,1.7836226117625755,2.8225488807440016,4.590004533754901,2 +4.123174542906755,3.1610101043794914,4.058736987329945,4.725840347511519,4.560336017724891,2.264810713023661,4.765812109511273,4.458491609933842,2 +3.726572176391744,3.904644401189271,3.6656698590623735,5.22619316159712,2.2567836655053717,4.274182786050375,6.032757663128443,4.362529090790647,2 +5.235218724255492,2.1885480076645667,4.010399152586735,3.6095059061716004,4.211193656087735,3.3158205277820914,4.953957695332119,5.197627826079193,2 +4.246657654311696,5.570339517020263,4.449997000801381,3.2689968625240264,3.6712503849583613,5.45483130924296,6.833347132626924,5.319593183831515,2 +5.516706618319186,5.94385032071564,3.5110588854422753,2.814737525734129,4.312831593073834,4.447347747555759,4.672898575205059,3.627136282998592,2 +1.8757388770676582,4.563621490222199,4.71388062619558,3.8166338440236753,3.1318419481298374,3.135122291448214,2.6564398101054847,3.7961771524173455,2 +3.5088150686339925,4.04690802968231,2.874933855205412,3.483576466951264,4.572265473668891,3.997379616849391,5.300218302170075,3.6306504637022603,2 +4.210546671706348,3.507930788107721,4.473868493111783,3.2071611629180583,4.352812945041583,3.325426498964398,4.858358545639281,4.538044523388274,2 +4.6337127483679135,4.573373680094757,4.211360837329645,3.7652589134913663,3.739743127014285,3.512145630825882,5.729634680092088,2.292430905408194,2 +5.242244169621991,2.92149639153614,4.416944125019466,3.945736185617274,0.9043370062645231,3.3864771340710056,6.083662555805231,4.5402873857738495,2 +4.310807588067772,3.9273319222252034,4.069275131708337,5.034373440437887,4.212027355807535,4.499402821603079,3.5439089143395863,3.0310289319204338,2 +4.159337206689632,4.399238987183723,4.501313935655158,3.887262795312534,3.109057166610796,6.507290522744746,4.40196566044875,4.515182339759371,2 +4.844000166743929,2.3402540298471637,4.202520054382986,5.316583485727572,4.841840000677934,2.8081440560374915,4.172359811933706,5.803921264787738,2 +4.461796754390731,4.481977402610106,3.8526116055883786,4.032672913114881,3.943315112067708,5.665479062309252,4.0409213067615095,3.1703510728718043,2 +4.325389792924715,3.596609701029571,4.989088356655269,2.8243422261250433,3.5727135890969337,3.990857729568197,3.882349010104552,4.631779290099674,2 +3.8827096618606936,4.299328992599328,4.248985213064282,4.773628508089758,4.272657244095116,5.075567601705854,5.26147089922238,3.7818428864845224,2 +4.4987466545124075,4.5599938923789365,3.332985550424576,5.670586134928154,4.068951053363644,3.9745016686147854,4.337957668856429,5.7518824757490785,2 +4.204216254135914,3.1165778486081486,4.530696002249897,4.13481969317906,6.9440700505523285,3.734120174455402,3.319320552847738,4.820487957764171,2 +4.0920694311150445,5.023323350459244,3.283340206429387,5.4706139068059345,2.5090300040536224,2.8565979139073003,6.026669357306902,4.325590017855662,2 +4.805224477540666,3.4530364217215785,3.638687717725852,4.355691751847188,4.501888115691395,4.9673927575030365,5.2242690702244,3.029193187211085,2 +4.967247609134649,3.500231241968865,3.561695604868011,4.724911387336268,5.342801222023692,3.8663226274168867,2.8526153947560706,2.8339230991055895,2 +2.9153080014692003,3.055148131167715,3.5082765713271993,3.2345015465743523,4.532445939503916,4.6768414116388435,3.632086486802173,1.8557368259454194,2 +4.185989237595376,3.4076824677173065,3.121950470856617,4.2593381379913975,4.31862228010127,3.670398738597099,2.7808142001197824,4.057430827529217,2 +4.832091389057326,1.1686964311940558,3.4915333117390857,5.095708864057677,3.735922738002035,3.6837705141183377,3.4376092104364915,2.2447300411201065,2 +2.8542243073174163,4.9049422931211915,3.9042776104140815,1.849635544707811,4.497636647077131,3.61512134866246,4.025581868464663,3.6313981351342193,2 +3.87698291953612,4.383960886151787,3.4183584529940587,3.4741110455518456,2.652148866517381,4.74133942724956,2.863043298206263,3.1258205465219935,2 +4.38716832087436,4.458205172927289,4.092715781282708,2.573458089271026,3.28978088557847,4.75206946468325,3.251438562580259,4.902526456807795,2 +3.323230555584239,4.436324800530038,1.0177365441792183,3.1606387814213397,3.3659207093449597,3.3244113541210214,5.117929509029949,2.9402299534255514,2 +4.300784311647801,5.054948720313061,4.373253781591084,4.266296133642977,4.156130165608135,4.505055717924474,6.945110730071376,2.855757697060578,2 +3.1937608644714457,3.8554626108055463,3.596239176144614,3.5498894354874952,4.772219482840821,3.1341604416831452,4.460730754712273,4.463778826687504,2 +4.352521122737392,2.5667764291317745,3.981230016680775,2.3326911959424113,4.790258408738597,4.203769472606193,4.076123917511956,4.327208302325552,2 +3.9319652936062024,2.683567286989921,3.3391423117693297,5.355537052066247,4.966524363634078,4.541251258238247,4.122671662546953,5.718812363803473,2 +5.477370993125054,2.836701713111007,4.145426557396872,4.234859167906285,4.47878507885003,4.530707651414465,2.4242279371163553,3.9973405799629305,2 +4.752559714272604,5.04321855533637,2.852399963087337,4.262413474525515,3.535257269592878,5.107036114683394,4.208795257800086,5.195685887651411,2 +4.247925660772395,4.489069218510915,4.713872798472555,6.05163657804113,2.59480610694924,3.6881263111558305,4.739707828565905,5.445806811283221,2 +2.944943383624443,4.3770837441010215,3.7104012527620958,2.7166088432038205,3.5276439910528277,3.1443996707871174,4.908249800498991,4.6780763915459955,2 +4.164019232730916,4.25184183674646,1.8505820975916514,4.448365116304664,5.54027373453742,4.4005653726997105,4.293509707298692,4.741420273964428,2 +4.131649802997276,4.026087981363425,4.163513926387616,5.203115079152999,1.7118281883631967,4.326318395746059,4.932454550331232,2.4571923150623225,2 +4.532166338632827,4.301681486944229,2.3261520464412992,3.574225722686904,4.03489221634877,3.925579309815437,3.7955561959294144,2.6940967811003222,2 +3.594807106555764,3.0048593483467863,2.697911161696201,4.369549299226581,4.201730378482986,3.395984873343061,1.970173176161468,4.3582912403460465,2 +5.385397483305482,5.160396234407086,3.007451925954666,4.336439851865048,5.132595787557864,4.945478205716244,3.659608367328909,2.9727483383269875,2 +4.027893614452784,5.386179999929274,2.155059793044702,2.3993115693772182,4.600479261069544,4.010871592387989,2.475003535841715,4.694048049854235,2 +4.552877700034456,1.6924629347339804,3.9619535664686727,4.855189533074348,4.022006708706166,3.993224705276129,3.5767280905753673,3.6987773746744046,2 +4.016712228197204,4.481235786077027,3.7860962479540925,3.1873490360267605,5.264017110860378,5.124571355511712,3.444882066632402,4.697918470947344,2 +5.279670037178253,4.558823921297528,4.293225889415382,3.4580384001462465,3.9675559910255167,2.4649146777016124,4.117396856582367,3.8513808979683883,2 +4.905893970940737,3.0112788817334497,6.015879335176274,2.727803842506205,4.966572488904589,1.8472280326354742,4.970626454638022,5.239025653708001,2 +1.9022737871076747,3.457538932688448,3.9887393361815318,2.186254573768897,4.736388716204504,3.5049516979952378,4.743581873372682,2.9824317009773997,2 +5.193428423728137,3.1709358118068596,4.374875656874948,3.0527556734065966,3.9423223705471533,4.2187001018555295,2.7756980900350867,3.9449561145246435,2 +5.11547720535093,5.292133800389214,2.7646128341120138,2.5385733136587083,3.4485860025285744,1.8239218689435353,4.202801094521358,4.762144405016007,2 +5.544634232341083,3.4734553725125608,4.871327546010489,5.764416966089465,4.257807334395984,1.9823668739046938,3.618221954999788,4.826456576446958,2 +2.8542866561153923,4.341180376950893,5.394394686311477,4.707645638720071,3.2368918202682067,2.497165534147275,4.388474419015959,4.192510463646025,2 +3.0187361243409248,2.9629882265487186,4.1230831343126555,4.735711287726796,3.198795591255795,3.141582120645161,4.859751153504018,2.7831557587618336,2 +4.388189599152913,5.155830104910858,4.306939875068949,4.181497477930624,3.554018603703555,4.749055837252685,4.539087114104889,4.5291496906780555,2 +3.3387368806381175,4.598107867143353,2.723518781543335,5.014827942479793,4.762742373528478,3.426572093492046,3.698868818717528,5.262284003889759,2 +3.5113576244088933,4.358062241235478,2.910592863205468,2.464053377097726,4.3564378081654,4.739038057244879,4.0028007442907345,3.201463484568571,2 +3.062292899286025,5.074279940717903,2.731972650046212,4.639968756796382,4.209979427157773,2.327048288129097,5.448929386268625,3.6848392699811447,2 +4.33162058970211,1.99112770767656,2.4646867816474503,5.550877428326304,5.40973346631621,3.312285719979232,4.374725442559641,4.341790595741453,2 +4.522055874822545,2.482540909082654,3.4887072739818232,4.5829331134353435,2.2903781651358077,4.361361420818447,2.6599813805775145,3.2835392193963453,2 +3.996169646949889,3.4642537814221805,4.271060430248709,4.619881040234853,5.139877724784413,4.325192251060622,4.913472803341644,3.3535751546831287,2 +1.6172278877708308,5.315549745638544,2.533930871515804,3.4304759739796817,3.726223554443039,3.6542653172756623,3.755675783811058,4.054335604648194,2 +3.791953748261598,4.360009301426262,5.036495884215176,2.708281655027368,5.3118786203454595,3.123624396806016,4.380486200288819,2.113995532475553,2 +4.240687028687408,5.993457298050843,5.32475000335516,4.451522659069306,5.039033698063499,3.097887548460954,3.4665655373604376,4.685303493177682,2 +4.0270211462625225,3.481396875959087,4.580708775862863,4.700445897997595,3.549653837710653,4.590352799989452,6.181189452287427,3.6243394209167876,2 +6.213764248951701,5.293780390435973,4.527840778906126,2.647904345057829,4.206737274514558,4.086066657965845,5.167646926716628,5.169428150603633,2 +4.648468409890032,2.5951562704884967,3.684407077463158,2.46962721646459,4.429678820132224,5.327415630493938,3.4620251268863367,3.7034745180494992,2 +4.358753584573153,4.872626329330143,3.6770287796418755,2.8902959921818923,3.781110328655067,3.6340713941533584,3.1838996238823754,5.70639704034772,2 +4.2785081915748515,4.45367062648196,3.570965700561171,5.716075285747049,1.9877867587953957,2.4602604030985704,3.7363126441576098,4.441385448403031,2 +5.157343932044223,3.0233914369922785,3.4593674126361904,3.8306739553873506,3.2563972108866777,4.100849380942219,2.2653227880841564,5.9859959586464955,2 +3.9382256853158957,4.699462115684722,4.493495862103822,4.564611921443044,5.148930660316811,4.845031350036261,2.881674956025937,3.9669594768435226,2 +5.425680621893747,3.8147791059803415,2.842341422525007,3.1104132820826687,4.325532958082659,3.9560194817987653,3.7014038046736597,3.365315560489163,2 +4.0632601143252955,4.8207168413912145,3.576062003123384,3.833737391694612,3.248365732811426,4.497646922858741,2.781982859874822,5.00872810661755,2 +2.4862936703586627,3.926684295481387,4.665220558001427,6.3555077489155005,4.844563414731964,3.418212604059899,5.156898011556299,4.1628104064587435,2 +2.7393969253538493,3.8954867751073374,2.4831733369082265,4.964154990336217,5.132097786221331,4.695862428755652,3.0862987043675743,4.635872617914673,2 +4.673570547013142,6.087031189976555,4.175391256265411,4.385081306297352,4.899248373456833,3.7908255178567543,2.6566292664337405,3.4763327247255225,2 +4.041541816736777,3.4674674556371814,3.2415053423054707,4.046534225251021,4.319176589637437,5.543311056443953,3.914184276950346,4.722419384284277,2 +3.319404376927955,2.670075771609698,4.356664856213094,2.1994813436218545,2.81030252061529,5.2180506499449075,2.3295821771372793,4.567423709221379,2 +3.003185098850972,3.12075949344234,2.684456712266663,2.354624001286571,4.183364280407595,4.086167195887653,5.504178543822849,3.879755949094895,2 +3.2224541260385076,2.4725006913439884,2.7751280475313953,4.522923340160478,3.4289634518631233,3.760004984091621,3.8842727873020366,4.114218791286514,2 +3.5429050493311536,3.670912830137463,4.2334946868673295,3.850313049610421,2.6973601100494644,3.91078248702221,2.2630029677374646,4.2651587335884615,2 +6.354382004149176,4.283289810108087,3.5493582485837676,4.430587411285116,2.2523085447079305,3.5926170217770306,3.0384052585360597,3.416539793622767,2 +3.1855440604222722,3.507932235538895,2.3770585698251385,3.362115851592903,2.673921764095444,2.7500163665516997,3.128560700840867,4.8830347746693565,2 +3.6113432852066865,4.439438386688746,4.622928600994847,3.0799919693967053,4.600134429680604,4.307826460999382,2.957820675638628,4.835979791178647,2 +3.8314036887725633,1.497392832612011,4.835079227947644,4.882719943739025,4.293858568338875,2.174934582815138,2.704508977210481,1.704094666803229,2 +5.982217613069345,6.488174888129221,3.841506183344821,4.953906854465765,2.4996440061765224,4.166925288940456,3.1772840998914487,4.596526856561837,2 +3.7565752445937783,1.687885256069201,1.842862361347148,2.6774173833250137,2.481982055397751,1.8670486348193562,6.436005530943678,4.053898059908754,2 +3.5405257195349917,3.454220068856292,3.577193058106963,5.9831643759133835,3.248979094320761,6.845852156089148,4.018094465060165,2.773788415644937,2 +3.170548505210396,3.762257549788728,3.62053756182737,1.9658591504353184,5.030579560182305,3.8700959428055786,5.037855079546252,2.9197480131458793,2 +4.055124331595011,5.417835683134772,5.708087026245078,3.661878692886964,3.893051138617003,3.3185800800405154,5.915523139956534,2.469099828503335,2 +3.4903351411409673,3.8274772174407676,3.7962739114865305,4.798470617879113,4.60261793479705,5.373006962726251,4.287656807981909,4.148738800379185,2 +3.2814153342351045,3.4270010911864026,4.217754238189935,3.6254455972090383,4.578889120853543,5.0175809921643175,3.942272738368812,3.296865501618232,2 +5.394826859890886,1.859316122747018,2.958062080550668,4.858148893467245,3.8321914613465045,4.125223012492046,5.292415731166228,4.139027627857323,2 +4.053295297926488,5.035661300972635,5.486405334327003,3.7801749099017066,3.536135973183639,6.356601129367563,3.6901370840681227,4.064101200937513,2 +3.3480362242819637,5.332934157010531,3.578959506816171,3.4338079708178224,3.0041565428683334,3.510867651446952,5.771261821579297,4.598975666491824,2 +5.404421423148216,1.9444979409114662,3.2390454324138296,3.401511196755507,4.810538052582157,6.257157071724645,3.6532305415766486,4.30414414687763,2 +4.426782173870827,2.87400778049755,4.13529635925076,2.880254297418843,4.152824136887357,3.614235932164412,2.561095519798319,3.288642786257208,2 +5.126860651796484,2.914280410718309,2.0464977608917936,4.231607992822354,5.449203661931029,3.708963607521962,4.318940653992117,4.9597993972452405,2 +3.4750458688410033,3.882680044068791,4.325746783701322,3.087029208811271,5.347633844944896,3.7798822999983415,3.771292739900197,3.642352963481598,2 +4.7635062146942255,5.692394311441786,2.714031114362568,2.8771613724856606,4.980057416639106,4.924446453529576,4.963658598237731,2.8657354233506873,2 +5.436479758596159,3.5660238071446306,3.60356602592127,4.211876988170414,4.986193227762375,4.965651250037764,2.6015484402788713,3.535891128538976,2 +4.219775108074842,4.696053048834725,2.5374464218068535,3.4249835143947838,2.931304335437317,4.133881010493962,3.141883454669236,3.5843798320049,2 +3.5958769123016374,3.492207074155947,5.776907082393378,3.6539942643924817,1.475777548961009,3.157257923358367,3.9102081410705414,4.126990165190835,2 +4.905576174968368,3.9297315563818165,3.201857826511038,4.943558185568464,4.108229210177549,4.54139242625934,3.7158673469842354,3.618076256342839,2 +4.623003752948496,3.0569877974412734,4.548250864502124,2.448567517717178,3.748157782068428,3.5524179375316534,4.774777847334794,3.6656006385316635,2 +4.067209185098848,2.256743199258362,3.702364584057214,2.1695316543923706,4.60555670417059,5.354100170544358,3.6128302115089084,4.83806902383313,2 +3.1342849105979895,4.485987939792899,4.184374214656565,2.868370564620042,5.177595108744398,3.6657710063586437,4.447488001094762,4.614172636372705,2 +5.693226810361224,3.388992054253524,4.798899383192365,4.033276365480452,4.544849172280596,4.654378477559208,3.4210621820750675,4.741597806809197,2 +5.604674938691125,2.678152104028946,5.089083675390311,4.809505989536849,3.4779643744274535,6.4182415549473095,4.153532014586132,3.7774947604724747,2 +4.151784797071509,2.846501461738346,1.8363984633535049,5.805938752345101,4.12134773560157,5.468323597648429,4.367086214499405,4.585889080664225,2 +4.859317885672155,3.526281829548308,5.030155105301074,5.4287554726951335,3.416505647167028,4.117147622300925,2.240017889044994,3.71407787529158,2 +4.429834764374719,5.186263995566849,4.9155860356769905,3.388671486917819,3.493776629026925,4.594005120302785,2.830678804219236,3.18851854588201,2 +4.7951117635774745,3.794897223170431,3.8498138873108645,3.8195070808187843,3.9969002268820097,2.479852505541113,2.9571213259201636,5.976439887661803,2 +3.353158747645745,4.08346856380456,4.436787237648784,3.9739633694680476,2.6185401720978922,3.671082905334547,3.664941434444369,3.020075512341892,2 +3.4393679879802814,3.4974987024564332,3.5623433655313015,4.076921828118948,3.0855028203453494,4.948766844191347,3.440790181219502,4.062956663717381,2 +4.194402149265007,3.255974850794362,2.8355863664789966,2.732834477650958,4.426124485662966,3.5411200688610474,3.968775626823671,5.740514936571766,2 +5.698710087885886,2.0645858126768117,4.545947868720135,3.9487630640486397,3.36631426631462,4.55633796107213,3.3113466090134387,3.649176563181361,2 +4.330463753759133,4.25566017752446,4.632108733928863,4.724064604771469,5.440112292812597,3.796024937645347,4.540057404300769,4.970666848898531,2 +2.5868094391830994,3.7025327123243983,5.873204322154223,3.6839721438319146,5.116365918588017,4.268853707829763,3.3055435015682786,6.749299393603353,2 +4.192053614901292,2.9735143120848955,6.621462072969582,3.168032742017974,5.135981577916985,4.440666186922427,3.9615138446236684,4.5757482109244005,2 +4.198336802381721,3.1204639263323006,4.313971161184544,4.6883347981694605,4.110937744053181,4.199039320014654,4.9609212608380675,4.38834182834772,2 +4.429243253541804,4.072428137305687,4.231891024499311,4.0044477378002,4.711315286828678,4.731786543265162,6.466507077188694,3.7815731094269096,2 +3.939205670977175,4.245124677332139,3.2205801366019142,2.214763950641264,4.208157630569736,4.166240951435885,5.345220894931721,3.2006946446463393,2 +4.117815546282498,3.9762490422932357,2.2519914050525074,4.481880699813361,2.3568303739836054,3.255732095907235,6.135972686955744,3.4182577891423422,2 +4.206002929324607,3.029971267539066,5.44031306507695,2.3189748571861535,3.1057902416467567,3.6010388806942726,3.8410677304976577,2.381006901432967,2 +3.870388152738188,3.540159716377456,2.325100606339225,3.7935638522543225,3.461209675308752,4.248736971975882,6.021364212876774,4.188113725457062,2 +2.50379983478026,4.346904388363106,4.730604186806336,4.230408591114142,3.3763939636005027,3.969594780054122,3.22495800609615,4.83874329262302,2 +5.366756196851076,4.706659888610936,4.280638016575979,2.95350759574658,4.070481953458058,4.385905101514988,5.8917617344544455,6.052786130035176,2 +4.923069523679732,3.536421432380677,2.921526654058037,1.0775619244002543,3.9061761417778813,5.901950042382958,2.9566723934217505,2.8308774313999905,2 +4.32071638221458,5.972805918863934,4.080661918807559,3.141748904586127,5.5354661694505545,4.299071923227653,3.4316689377780527,2.663572447785805,2 +2.2842064774923116,3.9839657875295735,4.100229830061808,4.542917931497187,2.6068146621686266,4.9060419931626695,6.146834938162945,3.125752161894917,2 +4.364341454422638,2.5159896645650783,4.297175346296519,3.4172484914534094,4.402963468586451,3.838210621000138,3.679405000495275,5.498332546884786,2 +2.9868836081209373,4.22800609949535,5.137697530364959,2.331161335821523,4.805843453265049,4.418924429155386,4.830053246232844,3.2314774785945795,2 +5.332449691555157,2.151660053326549,4.437997406839569,4.438384729593773,2.9843401485086933,4.757875862881912,5.005091960405136,4.519720950820359,2 +3.5232004960308605,5.101610369418319,2.9455734567507292,4.758453990516219,3.060777342989283,5.3746551515549275,5.03697589346602,3.849935440342106,2 +3.5777561571899326,3.83557131342508,4.828667933393274,3.0599756674540877,4.688867823157304,2.2889886222556353,5.524170920082574,3.6885761319426114,2 +4.560584809256847,3.2988592777528982,3.6168559564962814,5.732694791873458,4.840806594723944,1.998614792684211,2.940860833460783,3.8368968878037593,2 +4.891033080754017,3.452553945407396,3.443938868664614,3.957330466542748,3.9006405328250495,3.8785036639668387,3.264343348407053,3.7770221917262083,2 +3.9666963565628435,3.4177121119109497,2.561650256461972,5.310302564305525,2.0392194733666296,2.0641591285275993,4.011565260755036,2.732222517490249,2 +5.59697148817048,5.891745645344825,6.898241996092384,4.822735454412507,5.205581446476013,5.087633313435653,7.256052816281395,6.190186545000299,3 +6.811738076775029,5.8360829340346365,6.469020691823868,5.966590255749882,4.033926145561931,3.9413223190034827,7.332971566673527,5.666467847322992,3 +6.204566484367836,6.440268799251442,7.371764397513338,6.039934790803776,5.22879127261375,5.533336343786485,5.274676361262708,6.823886810685174,3 +6.207378196155037,6.528347144092705,5.3555953059126296,5.331775670941594,4.74518491491094,6.92407237922672,6.590509087139269,7.203856960347007,3 +7.940650209840396,5.294143627054091,5.738817521453582,5.2207201178168114,5.126805136895168,5.280891150900074,6.7432396229160005,6.0234669311499855,3 +5.765171847247118,6.5951469884292075,5.493123148557757,8.394651311494883,5.914860841149211,4.709724090730997,9.284868854756553,4.209525972968418,3 +5.297743826309146,5.931081212320365,5.5482945389918275,5.216599206592198,4.718161933582711,7.202109880418144,5.1464824183335525,6.688734907211476,3 +6.569898051288225,6.174687033845818,6.123304974100798,6.349352573851377,6.554777780692275,5.9216566490191775,5.740433365727919,5.886565135578821,3 +6.988063267065312,6.6021925056231785,6.749737297744258,4.322933513127584,8.039943771294558,5.399195603691472,4.747687722805656,5.961192201485879,3 +5.842331770164682,7.068659355979985,7.018776096713617,5.926306270088637,5.888994208202518,5.046336887894639,5.84260390892873,6.987524680626197,3 +4.474365109993667,5.667507170171321,3.9963549265004983,7.7585470406556665,5.377934089475507,5.325022825975064,4.986836937845153,5.135853000251648,3 +4.44370392998136,6.4204199500156305,5.866854433505149,7.089184084735173,5.040905307582671,7.659884593470986,7.419191673173456,5.976753419077867,3 +5.394752687064243,6.795177268545873,6.526313847915001,4.338260118008636,6.3128140248001285,2.8715324408925036,6.909255234220919,5.49749448970326,3 +6.269856241991542,4.647656678764218,4.546063992729522,6.538862901664078,3.84113005129544,5.269781383352505,6.045553693388547,4.42695659592871,3 +8.095447303083702,6.429480770739465,6.466635077818389,5.811561965398898,6.423912111442849,6.604505095169122,6.479996647469084,6.490747943053717,3 +7.505765135565465,7.445478630989465,6.525304663367912,6.844475489291038,4.773852432683498,5.007912493663779,6.002308320397097,6.199517471243993,3 +5.084971896313026,3.343691908085674,5.078912247255194,6.242884033151516,4.389976235582044,5.125092405343561,6.00860584783779,5.210939684610082,3 +4.998011367976556,7.057306599610139,6.279301338860468,6.097569353978786,6.054877585324603,6.857775198309199,8.471286887307997,3.1392950274735014,3 +5.807917303328151,6.229899542080099,6.149980571277755,5.722508784993245,5.014239904127363,6.419047618672667,6.135467477098929,4.267867900605596,3 +5.303553114109439,6.2517400202700175,5.085461937640911,5.239019847993725,5.403359099019585,7.206650416889848,6.28913995084855,7.205465259349242,3 +4.988326624180386,4.572131505812846,5.435843115609283,6.9916612799043465,5.788204928261197,6.235262682356899,3.7971981532901373,5.146839551390904,3 +5.611247424552599,4.820719059322996,4.449178000399005,6.046634965669702,8.454711028107317,6.572199525900476,5.001686863995204,4.6470287797402845,3 +5.540390624568698,5.842241463344126,4.7802695703454425,5.307519062397459,6.922835665809468,6.329313526763298,6.026439525795975,4.876757797442178,3 +5.72777672488151,5.4935257433055344,5.632051513202262,6.788505665858746,6.146238962562622,7.421094193477622,6.555358825912665,5.274340586165497,3 +4.7389065093038445,5.336369173118959,6.155024753674562,5.314325959606361,7.5498605100464005,6.755283766697658,5.417762527228393,5.149611993260064,3 +6.257746565552917,8.02540557174648,6.778731513013546,7.451936072296259,6.4171324885229115,6.623518014466791,6.585425824076412,7.291955761810382,3 +7.35599349883083,6.5983495838192745,6.041629264879673,7.591249283856836,6.3233236063923,6.076473994948357,5.943254370564173,6.807245832749334,3 +5.138210038267688,5.497715922894273,6.154646958306523,6.666742058302489,7.125990055407536,6.4040324872016665,7.321480462876923,5.409432242346102,3 +7.485753944307804,5.866497353824306,6.330737805864184,5.767422044683031,6.647025281796314,7.458088735005397,5.0462162832449735,7.086912720229179,3 +5.661958256055811,6.298738819995024,6.586540833970594,3.627873786042019,5.087326776061231,7.232464209892826,7.083327562033608,4.885636266835694,3 +5.934147393854211,4.201627655705742,3.9589220263256095,6.201641379762715,5.029028589457488,5.468933346287963,5.363543840495088,5.138410562424282,3 +6.2354196351515085,5.260472090086427,6.056022114677165,6.140451187100568,7.136343807440779,6.663639635195041,5.115748653434721,4.843924582930908,3 +4.09279288197244,5.050877497744037,5.420132643906175,6.7339026146398915,5.112284233277735,6.166694877610514,6.362849660492802,7.3658762344191775,3 +5.17438191227162,6.459918017080379,6.060848423375773,6.08568747591468,7.015835293038518,6.204501327505799,5.745439628336759,4.80516271163849,3 +4.953666164578123,5.964784373396758,6.589227973653148,5.920542334014289,5.686492706650429,6.99642385095625,5.732069632424561,6.287586387199175,3 +6.911514069463399,7.685639965820196,5.7740804105660954,6.0844433027323905,5.098542039365698,5.755418331060302,7.294859389010181,7.268877771403455,3 +5.853385035221917,6.7853194310550675,6.11037922562661,5.785009513226839,6.7853350900625236,6.5052538089069705,7.578791893043828,6.4766788162942115,3 +5.010428127228316,3.905097973942343,6.164756496705134,5.451956281041021,6.379349539130273,6.828101891085621,4.9328864790757665,5.531925653102116,3 +7.13982972221517,5.931128331012887,6.884353246747401,6.64890130706752,5.001520135940611,5.552443725817744,7.096830999424052,5.867207030074242,3 +6.058993822631158,7.564540302411409,7.211488980336566,4.797189846513112,5.4049810351835506,6.399654449455553,5.875148925664284,5.249057211079892,3 +5.0145700694736535,7.971315783367805,6.32111018578056,5.840451726292474,6.610302093187256,7.474602768831446,7.049468691445552,5.108473610733808,3 +7.832105746480389,7.18457494485089,6.77431097701912,5.935125875967405,4.609964753426444,5.961376811747846,6.330990798376398,6.116452367860471,3 +7.027231611564622,6.7995779391958395,5.639403667553557,6.2113895667167816,5.88005967088797,3.8577735427868887,5.743936157946825,3.6293245109275163,3 +4.913610444695394,5.900538761639756,5.057835411010721,8.383346818318824,5.921426592995555,4.468440598232617,5.8204147921383536,5.841172332418553,3 +6.26400072374974,4.4550450056423205,5.436920164879764,6.325471032619691,6.928065255474021,5.164960444459258,6.218866219113025,6.542889451901572,3 +6.214517574970527,7.919362150902851,7.1084006254693515,5.921822832587282,6.143278392667197,6.973661186757481,5.684452144339742,5.631817714337703,3 +4.136871241258337,6.147139814973158,6.744762106472046,7.158834266820179,6.401459464086157,6.022446537378225,6.007727761813892,5.322264554640164,3 +7.18286210130847,7.384690196200596,5.538804567744025,7.845982819191166,5.838484164817818,5.817073344434677,5.095395061213325,4.827354475020365,3 +5.082102922250937,5.062674672182591,6.135903675641655,6.210447377081896,7.298716403527043,5.880032290176862,7.505680811987247,5.394015117479174,3 +5.250111107789168,6.122524829443407,4.593636433410634,5.604750815230703,6.810730253953251,6.527678663618465,6.092255911878556,6.689395102293107,3 +7.077869549102097,7.296688659598018,5.332292630870022,7.352514846396563,5.56721542793159,5.632651646334526,6.10595651411272,6.483173280867246,3 +7.887902608799591,4.90207467330629,5.740304050594768,6.052988926820562,5.12334915696489,5.390791953034229,6.360920602294475,3.983260218640524,3 +6.620759388167062,4.347833126389651,6.626722039515641,5.2316111317297125,5.958494730392113,6.356367513826135,4.891323151436702,5.687039164639721,3 +5.794992045040095,5.394017388926157,7.8065156872878685,6.123898043301816,5.420329533721963,5.787705063135634,4.392791368932301,4.3305276086934335,3 +5.872772057637201,5.691588906382825,5.6850788641874646,6.427397703367661,5.5657268099319,5.754536318359865,6.7335956282700185,7.074522107802015,3 +5.782313646702781,5.84892605111199,4.953689193748763,5.334074600477992,6.87903212407647,6.982124534754006,5.320551462726238,5.36336410788528,3 +4.728847991376377,5.356185691577872,6.251228754122312,6.22858318219273,7.00134838733257,6.6986052417552076,5.945326645689822,5.593691113867363,3 +6.243166918399859,8.867346068924547,7.710939525668547,6.722650824646633,7.431494050297074,5.003293002298487,6.631129382603766,6.897100952417721,3 +5.88015799274584,7.4999331445697015,6.789836684416926,7.243035501977709,4.144927909867677,5.707659346174038,7.497261764596144,4.904019270004307,3 +5.109956496441673,5.921850003655273,6.475625777848605,6.047238260072008,6.829161518645893,4.912634040333997,7.731374811322792,3.512120644834091,3 +6.67481739956272,6.122108511280631,6.1303859777869745,6.130073903915974,6.6863401980846024,5.1924721534910425,5.458481961776604,6.394875122870577,3 +6.364507294376854,4.25690593023233,5.3324230722607595,6.392506660291389,5.509079249403806,7.054121513372387,5.279393781736018,7.4661149163613345,3 +5.430015109479103,4.829017384536009,4.682247768374412,4.720057218843428,5.535450254961154,5.847658014892902,5.3952905625770615,5.288102324290981,3 +6.419991254304971,7.039382271846871,7.790841955782647,5.035102705814928,5.955019184218466,7.336966840182804,6.325734389031296,5.37521328013007,3 +6.391410308994998,6.798216786954523,5.249974101054427,6.001523719079793,6.138443528493662,5.93851284352534,6.822195215768443,5.81858225203817,3 +5.6142736047206405,6.218471721247023,3.7580562471421457,5.059803337687781,6.338963276987094,7.500802485462696,4.240661433065044,5.9297213567641585,3 +5.695751020193782,6.484222240578631,6.006671823072859,5.349850713299109,6.721963815061241,4.710163898740394,6.523269201629682,6.330224306201421,3 +4.5733721637655185,7.302795353481454,5.976243327666429,5.764220968003997,5.2080761603158,8.001783217124594,4.735092479676563,6.249962115624958,3 +6.223346789759075,6.18212540713625,6.016074414790871,6.538149459513082,5.791396088688229,6.0308179051517525,5.983703655124529,5.605343005213106,3 +4.3085777891881225,5.424352894068686,6.33765806164189,5.586412045569441,7.053012162680858,5.046344886580793,4.818973747731272,6.4419606707275054,3 +7.678832909152071,7.1762487966235,6.210637967018677,6.582713500551089,6.8374710043763995,5.906161804909059,4.917203522863655,6.629790195915854,3 +7.309005193281025,5.895134743435071,5.634236824892285,6.123679463662694,6.504936477009118,5.565315943818425,3.612964418520074,6.180440443065782,3 +6.013496510092571,5.814569853411764,6.963882808988516,6.5998411571476945,5.844694707266488,6.7186547398764205,6.406422069806894,6.822591958083134,3 +7.028439336554252,5.809679441883331,4.982149885982256,6.108876078942898,7.227786101119949,5.503862014939278,7.051021824232454,5.193365309206683,3 +5.219271975179134,5.804937837551657,5.127382021422393,4.4530099376454455,5.273748400397933,7.37641078315579,7.463300302092928,6.110922208067315,3 +6.95875211347037,5.025658414791226,5.769426710321337,4.279509298231522,6.525605926267414,5.80354441165045,5.336908452523877,8.243507091366475,3 +4.372886507509202,6.0541799607680105,6.816227587952046,5.188326883221441,8.169286620516326,6.7944497927853735,7.078277421835012,5.350075516262568,3 +6.4922446884049965,6.496002835586439,6.744796951081689,5.683564389024358,6.774954951416083,6.890230786095286,7.522997823027712,4.738340650594336,3 +4.816204421121065,6.178168443966764,6.341756589173002,6.369238924306246,5.06710220705847,4.789572624091741,6.223299582055102,6.872646760269761,3 +6.1291876921565525,5.89705597437711,5.291553990811433,6.275554102208843,7.032547169075298,5.428212286328574,7.135752466902483,5.754311887396102,3 +4.907991123438128,7.357328578818769,6.3079598155838,5.870881320755775,5.488852972753035,6.403226624314329,7.450074766551129,5.8813855900085175,3 +5.360922652745306,5.6073939498372,7.153311387863272,4.709435340541001,8.507207662569735,7.1104969279644825,6.0075631789639905,3.825769542603759,3 +4.951740229456503,5.741040865288841,3.482119013595818,5.927226820115065,6.5399100230156435,5.21256653349417,4.356119725847318,6.096856452109719,3 +7.061223416430078,4.414303905575326,6.10254657678151,7.131689343861642,5.4661334280367635,6.714904257534916,7.195431236922472,5.738748698366214,3 +3.96829430885576,7.328678925000247,7.702568648674751,6.554157242281237,4.319396996015689,5.545446868095166,5.140996502386494,6.388905212956002,3 +5.857041299493673,6.1772650642146445,6.711432596977801,4.752920342814441,7.022792451563806,6.366859185002153,6.748848740899279,6.411206879239945,3 +5.465228846801784,5.246245030693169,3.9387228631648585,4.432268718060038,7.004981176060485,4.445616417968335,5.298699639329783,5.448610956939863,3 +6.487879842297397,5.613377241312349,7.7507256352666225,6.660129226123915,6.690605632182049,7.387929902316033,6.506283548803353,6.669797640477138,3 +6.187565482156866,4.64319981444753,7.885966191215997,6.042170568476287,6.491706376249612,4.073426735215429,6.118614887193642,5.942750857982544,3 +6.953138766863684,6.924764329504425,5.378971559398785,6.667581856112797,5.852974804911396,4.658297660626587,7.9872830276736355,5.5265196559507705,3 +7.169185495815665,7.004208464772524,7.3661333501144775,5.640196434123298,5.936968014589874,4.80236465883737,7.272340794706074,6.691286818212811,3 +5.168856708631729,6.5825362436326955,5.327958060084559,6.741238691259919,5.67474295910339,6.729398179337279,4.2626255534224775,5.3271540821603445,3 +3.8286768771611084,5.159609653409569,7.061970330955152,8.16297676135678,6.736746792546899,6.996051304266508,5.981352449732207,6.338600792575928,3 +5.234257028666611,5.947664289698273,6.823474603093009,3.90706626273889,5.247397559111125,4.62862110069584,5.496914508258392,6.909610993563073,3 +6.15606119396541,6.317304228622562,5.677887647180334,5.974307306979432,4.946548950864265,4.7527327757275595,5.9675518986627205,5.382730127150071,3 +4.844026009849111,6.475945722069833,5.17158056668615,5.2393875569106845,7.072738144797413,5.32114562651829,4.965894272643831,4.480956418516844,3 +5.277563610531608,5.083048340969091,5.490611098079083,5.955478620697062,6.292935279907227,7.950548931694809,6.231617645174213,6.077753818239958,3 +5.78113081612407,6.490481967961527,5.595806462565897,6.078310673069564,6.86776526598291,5.891812673228063,6.515657762590782,5.221012569585371,3 +7.1593262387891325,4.660298872856721,6.116523919049864,4.582322635923557,5.526841194040675,6.343323218491769,4.329819444385755,6.335618211913246,3 +8.071328104569018,4.633604300910903,5.734564653184286,6.271085306869734,6.5842951332306034,5.423457421923738,5.153416291850217,5.193693046096406,3 +5.842790420267091,5.25427583147846,5.827379895246307,7.586288322903347,7.578791429340309,5.878141914151435,4.045541582057207,6.6290377927160575,3 +7.145776554775281,6.783992749781292,6.025233187962184,5.37918995069598,5.795059652079482,8.561576770106289,6.899574493085765,6.2985930725770745,3 +4.428606152695557,5.282711156290873,6.894510184169908,6.076838386295677,5.651407026966757,5.226380091574834,4.81322710227864,5.178472072491617,3 +4.5070896146833554,6.031174300218454,5.839607258992479,7.5720446098490255,6.796877798334628,5.008614226981802,6.257366567419993,7.027532013317512,3 +4.468904035259509,6.09887813964862,6.89687384140916,6.390862285295556,8.046897489880338,4.094552692777536,4.5577623534638505,5.727699675428932,3 +7.092542016790687,6.05179432516062,6.746531209709402,6.735852011727946,7.362474250399961,6.465147411283013,6.769885851750083,6.456524323055376,3 +5.452884530467868,7.562995127685937,5.807370421025813,4.085302286579087,4.717614936230524,4.1202069854097605,5.160717308339849,5.770546922143554,3 +4.909413271050907,4.7655213160669785,5.997684976869645,6.61811095635618,6.08344491551362,7.319659083040311,5.210310241114626,5.711849942064071,3 +3.644476146320697,5.165686549515389,5.965267134983896,4.961468369928746,6.089474836555205,5.590634813374745,5.6335334307695355,7.377641674740808,3 +4.957529315405653,6.580947185598621,8.167950555431645,5.482565438637529,5.797130948228798,6.549171092164523,6.51034549832026,6.834718720949702,3 +6.377656771246201,5.465028904778423,6.513855727831558,6.176420091995054,5.382600266182438,6.275718803552335,5.377646295246119,6.011996445921449,3 +6.505332065893509,5.020231860586019,4.956313528766647,6.555333779523399,5.082413536437966,5.924179843348917,4.947939425132458,5.48476341854612,3 +5.553872598952379,4.585836373878762,5.277322275598638,5.188577733118768,5.950497529607906,4.900562014927472,4.397538090424088,6.587648973006038,3 +7.139190723391561,4.568878511190461,5.9797370580332005,5.800031248919934,6.342241296827576,4.592265783006702,5.980265745159685,7.222592688901271,3 +5.163174095690345,5.6103029511060765,6.481436001620682,6.226728270388607,6.1846065106968355,5.182378613703138,5.934374392422893,5.763285618170544,3 +6.61924421459473,5.831147567602645,5.507146917864456,5.1710129164591265,5.394847946828541,6.7749776325516855,5.30440893648365,7.184298885743175,3 +7.241558093436851,5.450996623552535,6.117191680882289,5.4616363649018504,4.809562819835665,6.623579313298938,6.863841781898436,6.330557036716402,3 +5.743614660282076,6.439605914420768,3.951310358116534,5.754850292609276,7.073766034329324,4.0877613243856725,5.967923215037263,5.019882061658586,3 +6.1107662286814035,4.628662026294922,8.329499789632365,5.117316574281338,6.620968283594195,6.222443683673244,5.984187039627779,4.751003191956014,3 +6.3086206523139445,6.907478065562745,7.385612367170743,6.509884391272451,5.435842692542071,6.6724350648473765,5.833389316149375,5.286380736407181,3 +6.82401761487133,6.482374163188039,5.348519442389293,6.558471479392829,6.089555838072871,6.187873321559419,5.5263321484013,6.838508218147229,3 +6.34514517511721,6.812504135142536,6.891076583919693,6.172437949239501,7.864375027825124,4.671915829881547,6.126058963880911,7.94017104557223,3 +5.9414051035837625,5.4100022572651225,8.993229039211688,4.851967356069333,6.299861782954622,6.96647794092364,6.958848506292744,6.332129234619476,3 +5.451554497490053,6.401984904476318,6.3487211690012675,4.65012768721542,5.852055128377578,5.720124534241241,6.175842735244875,5.259396453757502,3 +6.395348963879238,6.0959727522177865,7.596772480308935,4.925815313463591,6.646889987909408,4.92175394407822,7.5581578600248545,8.090008376269349,3 +5.35533248896863,6.787038034662788,4.9866717652157,5.779349520857254,5.197941236411327,5.211578952876919,6.432349393290529,4.5969218936387835,3 +7.321822797815057,8.06128591057699,7.71046172309379,4.92852163613606,6.485057199276876,4.24912752547829,6.3410318999911555,5.741470637018079,3 +4.815022350777216,4.72488936314874,6.3372785137276,5.708501407541773,6.236272136511576,6.40623616412495,5.961119045490704,7.218743742462477,3 +8.220609102805073,8.582124014180781,7.117979929850242,4.959499735356122,5.098928677922723,6.559612701569859,6.038284880257709,6.324258400964769,3 +7.257774975566713,5.537275919607353,5.86800457135698,6.171508933721574,6.702564458880682,8.240161800694697,6.75261500475582,4.873492116186011,3 +4.708211153515344,5.05084384329706,6.038635358895006,4.190796753407415,4.812116566828143,7.130299438310374,6.0961349997793315,5.473902233130168,3 +6.925281201272728,5.790321992858078,3.976541947711928,4.439858854511074,6.08102504619805,4.932334094216686,4.90801629216845,6.586980198462309,3 +7.980889553435993,6.851898319224534,6.185091532500565,6.193653263594504,6.211686219967859,5.6056222594176335,5.094625474252049,6.39773337230025,3 +6.621705678694932,6.017306787982608,6.11285396454381,6.770734355589907,6.247159929044225,6.4756606245316926,5.164554408576566,3.9787415396930625,3 +4.57074562305333,7.2561742248709695,6.584360322373509,5.288451357695409,7.296636934836454,6.6933840075988,4.2962510973361425,6.069169288190781,3 +6.481161009888556,4.152774107416548,4.823645607072795,4.3753676567564,6.4104757931476035,6.496817577624187,7.22975003391538,3.750181491844465,3 +5.440810907699667,4.083821462062207,6.74933834631967,6.56884461671688,5.578134514561811,5.74233557449471,6.186710042915392,6.067983175293555,3 +5.469407915692863,6.28025050840089,6.6541733544566215,6.651230179794825,5.0216294503406935,7.593876992650555,5.675164830133572,6.442986975980765,3 +4.660424981153801,5.4502558837128685,4.118355185065607,3.7661745688538275,5.244781153248756,6.393757484734317,6.47054754525259,5.6474209326061935,3 +6.619663334237202,6.637294479048975,7.748867580093839,6.084636171094272,6.173248378668855,5.775339322577857,5.656025173800348,6.333561872683077,3 +5.138517163678192,6.672451054374887,5.688356972393206,4.75881723334242,4.701576107270072,5.889085237596949,6.020102508652409,6.2904766085113835,3 +5.064438918784638,6.035418137611446,4.820140547886896,4.002297696525367,7.556140264372087,5.4783730627498874,4.893834219264279,6.562300116869952,3 +7.308874427724656,5.432926464237811,4.515729720868926,6.1499224975065365,5.1268682606674645,5.110832307506011,5.223375507676795,5.8072240350517985,3 +6.91459552042513,5.393597298679165,4.996885424932789,7.049026658050128,5.198594346333696,5.645105025523564,4.358097871516511,6.230496925158918,3 +5.574869529017711,6.783651462489255,6.752755082232153,5.053818365204932,6.6062911490074825,5.632418242301948,6.3657527235516564,4.0692994410414105,3 +6.546822159513664,6.533499904613615,3.8478267108826723,6.229824404457616,7.593946674125802,5.359337466650315,5.43048073665283,7.09982429841579,3 +6.68375091237857,6.116642679570946,5.388215352526994,6.722304019831491,5.904110014366303,7.066493898353034,5.84516998113941,7.136306419818061,3 +6.077282645003194,5.781113689075636,6.665779758546435,5.688576885136179,5.053918486279983,6.2810048353849535,6.601079022898203,5.797597880200659,3 +5.018851436413167,5.508616062561642,6.770012941274533,6.130989185276041,6.738319629699719,2.845804381522189,5.3788261718683925,4.149283827649223,3 +5.10808137089239,7.055207626791558,4.3349130659603405,5.110371197266846,5.560445512490083,4.418054485022678,6.267712487848684,6.329916888405993,3 +7.610866538590893,8.366666863555679,7.94851479912095,8.797333645478302,7.876571059520736,8.063519343642652,7.38659828359562,9.033501109230164,4 +8.653146139132355,9.921742817423185,7.457164727274195,8.36997210995647,7.482289676217203,8.836534862430101,8.255961260418033,6.680424049632508,4 +8.208148956493837,9.341993573895431,8.439166989128974,8.787668715787444,9.43819458531066,7.418781703116362,8.86332363087458,8.42860905510322,4 +7.505101679128052,5.942043744613423,7.823955388865744,9.188553761583966,9.404014561165104,8.563545903242797,8.942473030873536,8.609300307002444,4 +9.126546809453878,7.981725709197867,8.182405242954859,9.596574849446297,8.657555092595924,8.457937349884844,7.632262339751766,9.12692556436128,4 +8.095999213631089,6.750345028190898,7.685566851106753,8.654168991261635,8.544554802838984,8.89120370496328,9.670668087106566,7.7904062167061845,4 +8.814502422865985,7.487295076319567,7.4451584366812105,8.544631622980994,6.996963757396587,7.70580791563661,8.304697105823399,7.487697328251954,4 +6.375489532981887,8.28786477586457,6.282332847565071,10.0847541159817,9.008403978398228,9.166082465500637,5.861756216782272,7.119941070013018,4 +8.449720530531406,8.534147118482814,7.83634699425108,9.911945685942838,9.058363336163094,9.0157464902622,8.78130032998067,6.933611413206877,4 +7.790699053554334,8.437725679735282,7.55686835590438,9.363967438908197,8.206848807021686,8.310522707496505,8.645146682886706,8.605271153723061,4 +7.405520125684631,8.30775434457878,9.062788586249983,6.0696733780087255,8.096511599322454,8.57898150798755,8.312885185459805,7.86592325924332,4 +7.512196065926938,6.629293309651884,8.334792018581814,7.373392679246348,8.44301915540379,8.04681578052252,7.074277719949241,9.213209149411263,4 +6.980082400059296,10.374684081159902,9.5721707455246,9.652830643421566,7.357665982500465,7.552566438616355,6.836784961714015,5.791245600248063,4 +8.638716880465594,8.922339234093043,9.468802636033042,8.635738851771817,8.321268593959255,10.03050043052275,8.563731899698118,7.315761310923433,4 +7.226435886008649,7.905368683790784,8.798558851841964,8.620138545127872,8.797843846226968,8.125777742079213,10.459922379013673,7.082532918503457,4 +6.473501176904911,9.319947979376456,6.431819931155713,7.014698262034301,7.592811589398278,7.1990521524959785,6.830792135544571,9.231870343080042,4 +8.592266014131136,9.368235227426204,7.260240624353391,8.371849448533876,7.679012578319896,8.20027052002802,10.658405887335576,7.9151981507091005,4 +7.808478914809462,8.994355317731266,6.722186597714352,8.44184204111132,6.8707708103512495,9.536344356036182,9.101083810272193,7.200210366129104,4 +7.220289732095423,8.680731965025874,8.568845296297214,7.229150674781697,7.019932723790847,9.028304182060102,7.3696683717869185,8.031017164813719,4 +7.737521889871433,6.147934059377189,7.488469169037733,7.90519479995425,7.1483461485069615,8.537361490241706,8.50832979389493,8.37016179401823,4 +7.929210095469269,7.543271026194034,7.382698651619153,8.951592119672723,9.125699494122435,7.289381278316367,8.581894829401152,8.400694587237568,4 +7.321391135455145,7.5715533124609,8.16689189579777,8.55105558680328,7.83050884704714,8.107238209076465,8.016137132543882,6.565467567772415,4 +7.430029777403995,7.026727283789926,7.043462615920927,8.17579928341357,7.322060004907648,8.064778795377352,8.998161793622684,8.833294204358584,4 +8.492312614468565,6.708989891610869,8.914251912344454,8.448241396699725,8.13888465987705,9.36969067962397,8.225447465647033,7.877181847979786,4 +6.8198076482113885,6.466065722098548,7.522299421592272,9.073626303085497,8.223765026889188,6.03829424432974,7.260813694106562,8.179486352783066,4 +7.595731074127348,8.012137830243471,6.451248342182035,5.428148700476303,7.600946863647863,8.131840709916307,8.959629818852353,7.727397651567436,4 +8.626056130418405,7.882223937460641,6.280387364206655,6.889277416537664,9.630906868112795,9.306321215392447,7.514757626640319,6.881047364877554,4 +8.068385998876545,8.96987108654303,7.6896505072440045,7.415476476467862,6.129677196330345,8.042627505845845,7.663331798508348,7.412817140689634,4 +8.030550882211816,8.349561091590108,8.366390911040334,9.514799362020158,7.487895736159539,6.940652399684979,8.888267564141971,8.142367536330688,4 +7.664907397762248,9.368812078012176,7.965754862731516,8.602397894025518,8.563837772895958,7.446896816457691,8.566416093005007,6.912172706840586,4 +7.968848348692389,6.532533262941652,7.382090147317673,7.603121249177597,7.780935454321537,9.034321622217973,8.585404089997962,9.194541549573877,4 +9.000194460811276,8.265077314142296,9.027541948087901,6.793549682649603,6.415974425771762,6.221826999078724,8.43407764789432,8.207096640799238,4 +8.923828254943977,9.617768264401167,7.83263378616469,9.391365547642454,5.816383239605768,6.639347201452837,8.222563121787045,8.471083874925663,4 +7.641286287388404,8.731546456346424,6.510116403006752,7.6758319562661494,7.834863262337262,9.332730708217893,8.43864286031492,7.521120485018734,4 +7.245952027137459,7.960586809551719,7.941537448640658,8.391701289193248,7.244445463570246,8.165415009727194,8.607995294137094,6.740251930553232,4 +7.12042890168007,9.103655897790064,7.656013320653076,8.899086954187725,8.09652462381598,7.587880656936678,9.973012790576522,4.960887221141172,4 +7.708479175252286,8.319527561118264,7.635362933647997,7.242808355206568,7.162923735762482,9.146923142787127,8.118427333848643,7.196681713192102,4 +8.562496221208757,9.58320200795969,7.085193316401696,7.444477695070872,9.533759458170234,8.670337748012596,8.712183878102874,8.7253837440694,4 +8.161567336494569,8.536146837369348,7.748918660351427,6.5856054070966525,7.516973807058843,7.832643234972346,7.446034137217614,8.686341277639741,4 +8.009085780513082,8.354960471132207,8.249660567804257,7.209273053268452,7.323157405438707,10.011256541777753,7.998206711517424,7.8714900988053405,4 +6.667935097201961,9.628791033738365,6.923943296748004,8.019352226040876,7.443895442278104,9.85070530382544,8.731282798594263,8.64793234650386,4 +8.167859036048391,8.553395779383907,7.297052278081497,9.216584743325027,9.528876459049203,7.755062564069486,9.782517407161418,8.536245678709838,4 +9.19684314262698,8.57499430006156,7.734809029105138,8.233346615115245,7.7894898510281605,7.90081719361212,6.804766631011237,6.699278593087075,4 +6.607967348496939,9.058422379804497,9.686187563387936,9.262419657483296,8.238056011276282,8.154927439973656,9.118657716555106,7.821407716842754,4 +7.7396931776128035,7.7438086715871846,8.532309973671817,7.16330306730686,7.844710061879075,8.509897091767188,7.241247155266157,8.72304016695693,4 +7.140785111914655,7.440715002108536,6.205703453377754,6.91491789279843,6.875557544410154,7.412467565170032,7.829058749327787,8.48954594817037,4 +7.956380600701026,7.249780195449638,7.434989577698458,7.168885068015802,8.974434534899824,7.364301407478436,8.218192894689539,6.9794584003472755,4 +9.755135183947559,7.755114640026191,6.009823329167377,8.729757894884877,7.5031228020136576,8.173305817026343,7.478335778602558,9.487978318392686,4 +7.729703028554837,9.448367371960364,6.238190101589938,9.560815871255976,9.100571572475905,7.570049134885086,6.982483903969732,8.964197188212705,4 +8.19629396453443,6.399396456329155,8.969310764567789,9.413835240270247,7.718945912048784,5.212967258217901,7.039737234890985,8.422412683886655,4 +7.947328471827018,9.904233808523275,7.742591012821009,7.56774226368626,7.130568803518155,6.389447883916513,6.997415130637605,8.249690957192698,4 +7.481332636939984,5.7563925186582345,7.287080182149746,8.870675203992427,7.406464410032589,8.161247730499008,8.593140943069177,8.14673354730998,4 +8.309432305717232,7.530556870268082,8.635621809433111,6.517503948157362,9.685494624839004,7.527054621052481,6.029682238005918,7.654019118112599,4 +9.64760788456451,8.32572507092034,7.974899128966612,9.31948742164421,7.574880324642299,8.465918738957198,8.89795667961173,7.284682203264234,4 +9.122553404298323,7.2402123777808525,8.104996402305758,8.936292835234639,6.112578855465183,7.976992905717975,7.92435424602537,9.559606906926623,4 +7.620722916401508,10.681700180405018,9.067651997800047,7.4905257997706265,8.90967539725492,8.94547135386884,7.45238729803994,9.137830012508777,4 +9.408469467817236,8.070153228145212,8.928006037159644,9.032380251431183,9.41281764970495,7.656752676829934,7.816667675306103,8.493382691362452,4 +8.886503181984509,6.49285729623613,9.358420718470516,8.257058201602094,10.08634847529741,6.908680544972269,9.22239183816564,6.8812968483594625,4 +8.21378277312463,6.536779236009015,6.360409009735111,7.325399632001474,9.023943575764932,7.490967070456012,8.459162583951155,9.619006743192083,4 +5.6528809749803495,7.984175362465112,7.821228600140929,8.871306179450318,9.615309852102639,8.503288534682865,8.512061540872107,7.041884629126906,4 +7.848650966908172,8.509271507735672,6.748610719015265,9.638070207779482,6.6406401961538295,10.78368638447176,6.295424258160072,7.803085210924694,4 +7.919722811431924,7.7925822006348735,7.270782705525846,7.805348781204006,7.134133568837943,8.280978335787626,8.812299253982628,7.75504907625869,4 +11.50362818978903,8.44934732854934,8.643366473530877,7.524651092954484,9.608420838023589,9.77808456342828,11.32469269589692,8.642578445263668,4 +7.0172019356505455,7.025875428917532,9.89526404495033,7.7978790466892685,7.77035425823394,7.870736830688073,7.596065129014108,8.323890675322724,4 +8.309409706402871,8.508289826944976,8.883122772423052,7.567969954894559,7.396519693381895,7.161941151783962,8.384309505286208,8.623600140196578,4 +7.186978813035381,7.1287897257210675,9.070299532140949,9.01600478805538,6.617724456749185,7.685691062213182,9.148212466340784,7.245986205671763,4 +7.076240196056674,8.511537289593265,8.287134592947485,9.539046324086726,10.173255793491004,7.303361829566684,7.089765889860479,8.880428291761321,4 +7.607428586514518,7.94449064774299,9.957969511028754,8.386181298460373,8.181145269987718,7.886442561941855,9.203941812758032,8.606921119545994,4 +10.056552489488903,8.803400224198372,7.889148827790243,8.768375817025888,8.315131490856661,7.322947551778546,6.7698684754354765,7.8250987932611435,4 +7.452577933347507,8.088624812029899,8.385447645771283,6.109528626838371,7.371612622531289,8.649102675745402,9.137316649930728,10.276352141647928,4 +6.794565731443591,10.086732671511754,7.7139214503402265,8.316876579221617,7.792679949378787,6.701882493437915,9.685069330356074,7.757401040215014,4 +10.320688066999075,9.651285312185177,7.714038060536888,8.125870841866451,10.488316862796513,7.259954659395832,8.419174946783244,9.596667326333165,4 +7.832950330665042,7.5430983715461375,5.6005707183159945,6.809045348181731,7.141110946464083,7.249550772910945,7.393215693193882,7.605171676310764,4 +6.648958886523241,9.012690607712289,6.56113470113156,8.515703657866654,7.01885636768958,8.334827807876037,7.329379324247011,7.1549098157277236,4 +7.2068221334894105,7.832711980160183,8.720511304482033,5.967420297021453,8.57857378858113,8.460888772452252,8.997075710608442,9.437949927896394,4 +8.674978275339262,7.990523565796866,7.570584499168801,8.929999214724177,9.51627791287536,5.828424128742236,7.461633820213428,8.907661879095436,4 +9.11854362780077,8.590270106344448,7.014038187281152,8.315500182777015,9.087211459569593,8.297053786485446,8.46694394427812,7.818011115670783,4 +7.6672620776028095,9.42043012766745,7.765914349030482,8.838805221659863,7.528060465096369,9.916665520438974,7.481064893024454,8.349105395586399,4 +9.684360475515682,8.353969656157744,8.5442572610219,7.571329934194255,7.513352468878567,7.28418775175457,7.640748682792839,6.934183306498178,4 +6.996956669100856,7.181851109290888,6.627892428393893,9.952116178480331,6.0412993075341825,7.48218746692703,7.1709481398753745,8.334040431204418,4 +5.687434028214211,7.889570631523219,7.704605967566818,7.561025658778632,8.467064290915687,8.621238224515956,9.125189470558576,7.547884488021099,4 +8.548969010957203,7.168320289585811,9.819588896284428,7.926238934606955,7.898625755351173,8.722159243215264,8.594102827596775,8.623513091549079,4 +8.324278827962189,7.840261972811963,6.102882171670947,6.217745007104219,7.539454856805597,7.976982507418201,7.4629847354392975,9.476514534082446,4 +6.879209125640625,8.17159442202988,6.844562930577987,7.053170652115467,6.351954837411392,8.3944815065863,6.378721495337405,9.370108705716223,4 +8.012437436398372,7.994554241985033,9.95301261938762,9.054881988982352,8.830665975518732,7.5647845416681285,8.021593337973952,9.523011215495075,4 +9.186244074550006,8.113676086310976,7.105014491162286,7.792350183493123,7.5579129667757154,6.938688320768941,6.673083365184036,7.529156411139206,4 +6.682193189618937,7.67191649098913,8.551587537204785,8.589736757723458,7.821381634313335,8.501361780725057,7.1281834747201644,9.281566955040251,4 +7.600734230841693,6.717801737196023,5.9677501165022715,7.873641658957585,6.4173322107558235,7.497796015179787,9.468300340799866,9.39899335854658,4 +8.925797122516189,8.840216793365938,7.475318717347182,8.79618699695625,7.313010981881481,7.785029862294588,7.388361856128026,9.14660072501892,4 +9.78710070752098,8.155044093982006,6.1673496652606765,8.431448322048135,9.29624879444009,7.442091037938994,9.293664337920719,7.809067688596905,4 +7.369358512777738,6.049518272172845,8.39220893612427,8.236935303048773,8.35802150452027,8.455225582410984,7.444751393234969,10.471635581934766,4 +7.025152615871521,6.630072032308184,9.142108671598464,8.743440390669624,9.2533080785959,6.414026279637889,7.269735238556889,7.288805326243455,4 +9.097118363030647,7.761250979040605,8.57698494807881,8.12048480226503,9.194874128912556,8.92395799339209,7.666508678029705,8.728238757389237,4 +7.584837387132849,6.792286713561664,8.09548999760384,8.317295441245752,6.683770080432527,6.779736869738166,6.639617665191494,8.704624433509343,4 +6.918540859058013,9.633580224273457,7.01538342158884,8.526530808337197,8.393942853583406,6.977302359128605,6.23190106136486,7.591772425759094,4 +9.13744770410413,7.611540842106767,8.439806122825463,5.205156052056038,7.409330030754226,9.076837277402303,7.361307519021506,8.108067606706546,4 +7.56314538321684,8.340700702179268,10.354570481952898,8.749060858440714,9.36260868952341,8.610197748878214,8.56600934286846,6.7445899555846385,4 +6.686964725751038,6.855488513444785,9.013756345079432,8.72912139333686,10.161154311350792,7.863870956918254,7.559592941739661,7.331200645490569,4 +7.950723554856314,8.10949168317964,7.306927447940292,7.616356010590288,9.498859217454019,8.70574879170178,7.438434500412107,10.032772011872073,4 +10.235978991461632,7.87093478972752,6.834619200114104,9.036630510525834,9.618626180022057,9.371219410847456,7.772791752649776,9.277447287243579,4 +7.176211524750262,8.680879042819436,8.470229402694494,9.446581765780833,7.504604683756919,7.097635282993748,9.160371726545849,7.623465305856904,4 +6.7225213456857595,9.233261561251167,8.51491956701463,8.487012432964665,8.33116549890687,7.843566202724992,7.753192584187099,8.59835940515815,4 +8.338719009710733,9.644348087361054,5.961499611759911,8.281511944466587,8.64205538274806,6.527083265823848,9.582303245395257,7.489849956167207,4 +7.905815945603765,8.377755191939324,7.670229196659825,9.44665353437091,9.456788446377782,8.77010410545617,7.897998712934194,8.032524910651992,4 +8.485761588758951,7.0598058288527765,8.202689990266224,7.140656436105534,8.127797301299813,7.143977196572578,8.70496787070752,4.5156073024637875,4 +8.531586940624045,6.365728550707762,6.507025896988944,7.314831260190792,7.0822264851240115,8.320862005457787,8.040268358730167,7.156384759552805,4 +8.813575510825624,9.30221211352141,7.239357805503657,6.896019822293845,6.9089252745942,8.527293946413222,7.750125908392084,8.484208217278235,4 +9.484433703508948,7.528199864933189,8.775462484552826,8.769027638208817,8.109884989115447,8.275760027370355,10.053340006571789,7.8729230771948835,4 +7.965117511184642,7.443540342934657,7.632204248882981,9.977474448786934,8.023761535930303,7.732941659222634,8.946932344099451,8.28628636512494,4 +7.65918196764307,5.826043199253856,8.377648483914747,8.321110128841655,7.7186338485367925,9.418533666570312,6.626226480972628,8.412375055607935,4 +8.373915168282357,7.340574406951697,7.577624819902179,8.600321489994963,8.8555222271292,8.76403273648358,8.306137321733852,8.150928530790644,4 +8.845196697779524,7.0067004355728315,6.292164224817384,7.883153319964723,7.4426756578895334,11.132515179959844,8.818288607731603,7.482191407711657,4 +7.693990856448941,8.873012691111622,7.771420779679663,7.920527570478171,9.430369197648037,7.553372409741314,7.419410348347351,8.569530706678735,4 +8.262526200337897,7.859857452088999,8.359536890643703,6.527988953207078,8.923772705907965,8.348934075149831,8.34173231023244,7.6783172011950125,4 +6.999283375655704,6.764258902601458,7.91158044791592,8.140060729638103,6.962047677295598,8.489452596456825,7.38995062183034,8.680178547337695,4 +7.604026930238573,9.163723688067448,8.383950136704922,9.374532635633303,7.564501829929246,8.697569434565642,8.14885500206347,8.617828074046217,4 +7.299005039755646,7.927466902398313,8.029915341135371,9.48690172689944,8.501266656768111,6.805318430157834,7.528232195937394,8.32003725463152,4 +9.8416741975217,8.431941705770587,8.874972952759329,8.45679255333656,8.274041751153117,8.867278216902395,9.402382917923354,8.654771637644613,4 +9.114177065541355,7.8238171170430775,7.403764037087904,8.144611331821743,7.714234579178518,7.275682447181963,6.738252752082452,9.196612227957345,4 +7.418436021546524,9.524416954666673,8.796329413331962,7.021513963987153,7.623386489668224,8.53272956371439,8.088466254038455,7.708091648641743,4 +7.1444685245942745,9.366012483799059,8.650729197936363,8.944823116413579,8.241843124552162,8.932126709737501,6.622708508500363,8.353529013770144,4 +9.16484977220398,6.5678098287084,7.648092478031411,8.05022233812042,8.595784448679332,6.907721481116377,7.982385005271656,8.10724819262556,4 +8.324638566371046,7.266777790616955,9.095718677248247,8.033102448548261,9.388098636393002,8.56074666171504,7.6283348907464035,8.103632390406812,4 +8.26216658832487,8.232810271440112,9.10328277558963,7.198791890589844,8.245250669745527,7.448256764630588,8.320338983447709,8.3007350182738,4 +7.903884722768795,8.003002167262663,5.859436397838108,8.520129193463385,9.30155658550916,8.861867013405178,8.679601926363771,7.66758227318534,4 +8.39582902345239,9.009340804862791,9.376290222322393,6.936918046707389,10.15355463801965,7.5484484114437205,7.760648254343488,8.277256163742226,4 +6.955391716412171,9.32338334552667,9.331068033450208,7.404708691972974,6.335594205787918,8.73340336907854,9.109990615750073,7.632903256071649,4 +7.084024735030457,6.79970776955915,6.02038662018034,6.383252557336435,7.407723830504466,7.922815839097498,7.365205434481254,8.041873400873703,4 +8.400441813478121,8.681121880827272,8.947444110511409,7.410814397589542,9.439956420119728,7.045323541203501,7.908640188567523,8.387199552240938,4 +8.386971910610066,7.779593321697302,7.245770370401674,7.956480866471283,7.4051858877531025,7.861936055426802,8.197580671340885,7.626858438356734,4 +9.453734641233524,10.419105031099273,9.127426701276628,8.761561682608532,6.491964284075351,8.328312709480791,9.159587343494607,8.5009350446314,4 +8.715698788769439,8.737512270717874,8.22888154304269,9.246903368072218,7.447552621146138,5.35567090929597,9.083564272600741,7.411034677843971,4 +8.943737586568213,8.3067895104498,6.746869771878195,8.043918403299697,8.809082494504484,7.460026270368019,8.017658215731876,7.919276713780547,4 +6.454011828778309,6.336320158237081,9.48742779834324,8.25779856478776,7.174218375671631,6.962115917556337,7.822699329788121,8.263076421454139,4 +8.397782715973598,6.625241714553331,8.782897833992639,9.048296107943125,8.322787165599557,8.562838839818891,8.256213143299712,8.10989968779101,4 +8.588667078520388,7.893305084246835,7.7601608406739215,8.00825630770569,7.921026011728783,7.252866718340539,9.708947392529437,7.983558856486692,4 +5.27567104076528,7.541974043592378,6.2209038519586395,6.863689268826296,8.292344072542644,7.09077372128926,6.840734555589048,8.956172419983307,4 +8.240814356573106,9.034706573772201,8.692260152674933,6.060541090858876,6.107933469936233,7.244689598857322,7.938236711016007,6.581947984529313,4 +7.008327448982622,8.525084069684848,9.002196612578961,7.579930259481558,8.122281889013275,7.79174637467286,9.207768213590287,8.235761060756726,4 +8.028969541875442,8.80136615849157,7.249710781333432,8.248224588992404,6.440383954321204,7.057574818416286,9.807246016192845,7.807219149254989,4 +7.340538787059549,8.724284841989226,8.979420001703494,7.256312271613992,9.441100904335896,6.876668652721902,9.00254743166358,9.400253101963381,4 +6.5034516289287625,8.763836556164325,6.616098548574885,8.444474817936914,6.607637196995622,7.641144751805416,7.7590474055393654,8.294351730299976,4 +8.332515313258208,7.5488475137302276,9.000962943816631,8.818243101526633,8.177903664990328,7.309790331218739,7.879825807503352,8.636020197005772,4 +8.245112265874836,8.734512818002203,7.978465946088113,8.035998434191795,7.187000423619523,7.397754217485831,6.973005111153455,7.929312507958019,4 +7.310416963160492,7.216799300460552,8.547330745692395,9.151716833218583,6.270854641826629,9.154484074740703,8.369613571242281,9.726108599974086,4 +6.963297765194259,7.501886059546516,8.68680399861276,7.832131559710227,8.175851776251056,7.742357025761996,8.544908192343694,8.336173875021215,4 +7.702947895257793,10.638917649141089,9.0362293932744,7.856621211509963,9.314280190030084,6.386012597448176,8.428128578766346,8.426161467277083,4 +8.953011700506508,6.455685692203172,9.157466608695906,8.924218644842819,6.806579017705171,7.7301046881009485,7.2928584793596825,8.333427438525472,4 +7.692527732449592,9.144473617042038,7.362414760440154,7.799427285510108,9.938378285314487,8.555495059552586,6.475895595007244,7.288777387296844,4 +7.677241831859459,7.351722417896979,6.593360397893875,7.553905303472652,7.79550169475631,6.9593209873523465,7.395147651318571,6.898927664778979,4 From deae62a1c748fd8eabac1450851d2e12b8765a9b Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Mon, 14 Oct 2024 18:54:32 -0500 Subject: [PATCH 30/31] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bdcc2fb..bdfae11 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ py .\testDataGenerator.py -N 150 -f 8 -c 5 -seed 10000 -output_file generated_da ### Step 2: Run the Program Execute the final LDA model which is model folder: -Note: Place the generated_data.csv(the data you want to train and test ) in the models folder to run this program else you can run Final_LDA.ipynb directly without any changes by placing the training data named as generated_data.csv. +Note: Final_LDA.ipynb is our final output and notebook fine ```bash py .\finalLDA.py @@ -51,7 +51,7 @@ py .\finalLDA.py ``` The program execution steps are shown in the notebook file ```bash -final_LDA.ipynb +Final_LDA.ipynb ``` From 41f9506f397ce7644275c43ba7be0dff29d89171 Mon Sep 17 00:00:00 2001 From: Rakesh <40319883+rakeshreddy06@users.noreply.github.com> Date: Mon, 14 Oct 2024 19:37:19 -0500 Subject: [PATCH 31/31] Update README.md --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index bdfae11..966653a 100644 --- a/README.md +++ b/README.md @@ -42,11 +42,11 @@ py .\testDataGenerator.py -N 150 -f 8 -c 5 -seed 10000 -output_file generated_da ### Step 2: Run the Program -Execute the final LDA model which is model folder: -Note: Final_LDA.ipynb is our final output and notebook fine +Execute the final LDA model: +Note: Final_LDA.ipynb is our final code and notebook file to test our program, ```bash -py .\finalLDA.py +Final_LDA.ipynb ``` The program execution steps are shown in the notebook file