{ "cells": [ { "cell_type": "markdown", "id": "c2a396f5", "metadata": {}, "source": [ "# Load the libraries" ] }, { "cell_type": "code", "execution_count": null, "id": "a3fe3fd6", "metadata": {}, "outputs": [], "source": [ "## TRAINING SET : MERGED mRNA DATA , TESTING DATA: (GSE38129) : 60 samples (30 control , 30 ESCC), MODEL: XGBoost" ] }, { "cell_type": "code", "execution_count": 3, "id": "f097ad55", "metadata": {}, "outputs": [], "source": [ "import warnings\n", "warnings.filterwarnings('ignore')\n", "import pandas as pd\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.metrics import RocCurveDisplay\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from imblearn.over_sampling import SMOTE\n", "from sklearn.linear_model import Lasso\n", "import xgboost as xgb\n", "from sklearn.model_selection import GridSearchCV\n", "import pandas as pd\n", "import numpy as np\n", "\n", "np.random.seed(7)" ] }, { "cell_type": "markdown", "id": "73b6611a", "metadata": {}, "source": [ "# Read the data" ] }, { "cell_type": "code", "execution_count": 4, "id": "0eeb7a35", "metadata": {}, "outputs": [], "source": [ "df_train = pd.read_csv(\"DS/mRNA_DS_preprocessed_training_data.csv\") # read the training data" ] }, { "cell_type": "code", "execution_count": 5, "id": "c04fc6bc", "metadata": {}, "outputs": [], "source": [ "df_test = pd.read_csv(\"DS/mRNA_DS_test_data.csv\") # read the test data" ] }, { "cell_type": "markdown", "id": "5c60a7a5", "metadata": {}, "source": [ "# Data Preprocessing" ] }, { "cell_type": "code", "execution_count": 6, "id": "683b63ce", "metadata": {}, "outputs": [], "source": [ "df_train = df_train.T # transpose the data\n", "df_test = df_test.T" ] }, { "cell_type": "code", "execution_count": 7, "id": "6ecc5606", "metadata": {}, "outputs": [], "source": [ "#df_test = df_test[:-1]" ] }, { "cell_type": "code", "execution_count": 8, "id": "d9b0088e", "metadata": {}, "outputs": [], "source": [ "#Transform the input data\n", "df_train.rename(columns=df_train.iloc[0], inplace = True)\n", "df_train.drop(df_train.index[0], inplace = True)\n", "df_train=df_train.reset_index()" ] }, { "cell_type": "code", "execution_count": 9, "id": "2e78017d", "metadata": {}, "outputs": [], "source": [ "#Transform the input data\n", "df_test.rename(columns=df_test.iloc[-1], inplace = True)\n", "df_test.drop(df_test.index[-1], inplace = True)\n", "df_test=df_test.reset_index()" ] }, { "cell_type": "code", "execution_count": 10, "id": "7168825e", "metadata": {}, "outputs": [], "source": [ "metadata_test = pd.read_csv(\"DS/mRNA_DS_metadata_col_test_info.csv\") # read the column information (cancer/non cancer)" ] }, { "cell_type": "code", "execution_count": 11, "id": "26c98c3e", "metadata": {}, "outputs": [], "source": [ "df_test= df_test.merge(metadata_test, left_on=\"index\", right_on= \"Unnamed: 0\")" ] }, { "cell_type": "code", "execution_count": 12, "id": "b42beaa4", "metadata": {}, "outputs": [], "source": [ "df_test['title0'] = df_test['title0'].replace('(?i)mucosa|normal|healthy', 0, regex=True) # replace the names to 0 \n", " " ] }, { "cell_type": "code", "execution_count": 13, "id": "515cd9fc", "metadata": {}, "outputs": [], "source": [ "df_test['title0'] = df_test['title0'].replace('(?i)Tumor|Cancer|carcinoma', 1, regex=True)" ] }, { "cell_type": "code", "execution_count": 14, "id": "b4f38f66", "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "title0\n", "0 30\n", "1 30\n", "Name: count, dtype: int64" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_test['title0'].value_counts()" ] }, { "cell_type": "code", "execution_count": 15, "id": "dcdefec2", "metadata": {}, "outputs": [], "source": [ "df_test = df_test[pd.to_numeric(df_test['title0'], errors='coerce').notnull()]#remove all non-numeric data from the column." ] }, { "cell_type": "code", "execution_count": 16, "id": "ca48568a", "metadata": {}, "outputs": [], "source": [ "df_test= df_test.drop(['index', 'Unnamed: 0'], axis=1)" ] }, { "cell_type": "code", "execution_count": 17, "id": "d4b7e8b7", "metadata": {}, "outputs": [], "source": [ "df_test= df_test.rename(columns={\"title0\": \"index\"})" ] }, { "cell_type": "code", "execution_count": 18, "id": "299ca65d", "metadata": {}, "outputs": [], "source": [ "X_test=df_test.drop(\"index\",axis=1)\n", "y_test=df_test['index']" ] }, { "cell_type": "code", "execution_count": 19, "id": "4c50c510", "metadata": {}, "outputs": [], "source": [ "metadata_train = pd.read_csv(\"DS/mRNA_DS_metadata_col_info.csv\")" ] }, { "cell_type": "code", "execution_count": 20, "id": "6730cf89", "metadata": {}, "outputs": [], "source": [ "df_train= df_train.merge(metadata_train, left_on=\"index\", right_on= \"Unnamed: 0\")" ] }, { "cell_type": "code", "execution_count": 21, "id": "7a8ad8ad", "metadata": {}, "outputs": [], "source": [ "df_train['title0'] = df_train['title0'].replace('(?i)mucosa|normal|healthy', 0, regex=True)\n" ] }, { "cell_type": "code", "execution_count": 22, "id": "a8cf8643", "metadata": {}, "outputs": [], "source": [ "df_train['title0'] = df_train['title0'].replace('(?i)Tumor|Cancer|carcinoma', 1, regex=True)" ] }, { "cell_type": "code", "execution_count": 23, "id": "f5d203aa", "metadata": {}, "outputs": [], "source": [ "df_train = df_train[pd.to_numeric(df_train['title0'], errors='coerce').notnull()]#remove all non-numeric data from the column." ] }, { "cell_type": "code", "execution_count": 24, "id": "523bdaa6", "metadata": {}, "outputs": [], "source": [ "df_train= df_train.drop(['index', 'Unnamed: 0'], axis=1)" ] }, { "cell_type": "code", "execution_count": 25, "id": "46a6fb36", "metadata": {}, "outputs": [], "source": [ "df_train= df_train.rename(columns={\"title0\": \"index\"})" ] }, { "cell_type": "code", "execution_count": 26, "id": "e26f88c5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "index\n", "0 111\n", "1 108\n", "Name: count, dtype: int64" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_train['index'].value_counts()" ] }, { "cell_type": "code", "execution_count": 27, "id": "fbaf2507", "metadata": {}, "outputs": [], "source": [ "df_train= df_train.apply(pd.to_numeric)" ] }, { "cell_type": "markdown", "id": "1c45ed10", "metadata": {}, "source": [ "# t-SNE" ] }, { "cell_type": "code", "execution_count": 28, "id": "38a993d9", "metadata": {}, "outputs": [ { "data": { "image/png": "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Hqz+m519fvjIbgc2bgRefx247z7fAY2zkpIgNJgoejCosYi6deviueeew8mTJ0P+3BMnTsSdd96Jzp0744MPPsD27dsxZ84cfPfdd3j99ddD3h49mDdDumg9L57yYiZMOB/w/PWvQHm5vv1zxh1RQEwT1OzatQv9+/dHSkoKEhIS8Je//AWFhYXhblZN2llaXp76b4jGyHv16oUmTZogNzfX4zb5+flo164dYmNjkZ2djTlz5rjcn52djZkzZ+L+++9HgwYNcMEFF2DJkiVen/eLL77AzJkzMWfOHMyePRvXXHMNsrOzccMNNyA/Px9DhgwBAOzZswf9+/dH48aNER8fj86dO2P9+vW6n//QoUMYNGgQkpKSUL9+fXTq1Amff/654/61a9fi8ssvR926ddGiRQtMmzYNlZWVjvsVRcHixYtxyy23oH79+njmmWe8v7FEGrtdnbnkrudFCPUye3bNgEeGogCZmeowFhH5T5jEhRdeKG666Sbx3XffiV27dolhw4aJevXqiZKSEul9lJWVCQCirKysxn1nzpwRP/74ozhz5oz/jczPFyIjQzu8qZeMDPX2IBoyZIjo37+/KCgoEHXr1hUHDx4UQgjxzjvvCO1P/NVXX4mYmBgxffp0sXPnTrFs2TIRFxcnli1b5thPVlaWSEpKEgsXLhRFRUUiNzdXxMTEiJ9++snjc48YMULEx8eLc+fOeW3jtm3bxMsvvyy+//57sWvXLjFp0iRRt25d8fPPP0s//2+//SZatGghunXrJjZt2iSKiorEqlWrxJYtW4QQQnzyySciISFBLF++XOzZs0d89NFHIjs7W0ydOtXxHABEWlqaeO2118SePXtcnl9jyGeBrKew0PW7beRFUYJ+nCAyM2+/385MEdQcO3ZMABCffPKJ47by8nIBQKxbt056P0ENavLz1QOTu4NVkA9YWlAjhBBXXXWVuP/++4UQrkHN4MGDxQ033ODyuPHjx4u2bds6rmdlZYl77rnHcb2qqkqkpaWJxYsXe3zuPn36iA4dOvjV7nbt2okXX3xR+vlfeeUV0aBBA/HLL7+43d/1118vZs6c6XLb66+/LtLT0x3XAYhRo0Z5bReDGnJr1KjgBDQhOPEhMjvZoMYUw0/Jycm46KKL8M9//hO///47Kisr8corryAtLQ1XXHGFx8dVVFSgvLzc5RIUvrql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", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.manifold import TSNE\n", "# t-SNE\n", "tsne = TSNE(n_components=2,perplexity=40)\n", "embedded_data = tsne.fit_transform(df_train)\n", "\n", "# Step 2: Separate data points by class\n", "class_1_indices = np.where(df_train['index'] == 0)[0]\n", "class_2_indices = np.where(df_train['index'] == 1)[0]\n", "\n", "class_1_data = embedded_data[class_1_indices]\n", "class_2_data = embedded_data[class_2_indices]\n", "\n", "# Step 3: Plot the t-SNE plot with different colors for each class\n", "plt.scatter(class_1_data[:, 0], class_1_data[:, 1], color='red', label='Non-Cancer')\n", "plt.scatter(class_2_data[:, 0], class_2_data[:, 1], color='blue', label='Cancer')\n", "\n", "plt.title('t-SNE Plot')\n", "plt.xlabel('Dimension 1')\n", "plt.ylabel('Dimension 2')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "a295f3ad", "metadata": {}, "source": [ "#### t-distributed stochastic neighbor embedding (t-SNE) is a statistical method for visualizing high-dimensional data by giving each datapoint a location in a two dimensional map. In the plot above we used perplexity of 40 for visualizing the t-SNE, but we didnt do any dimensionality reduction with it. Blue points are Cancer and the red are non-cancer." ] }, { "cell_type": "code", "execution_count": 29, "id": "8c0011ea", "metadata": {}, "outputs": [], "source": [ "X=df_train.drop(\"index\",axis=1)\n", "y=df_train['index']" ] }, { "cell_type": "code", "execution_count": 30, "id": "a10804ed", "metadata": {}, "outputs": [], "source": [ "X=X.astype('int')" ] }, { "cell_type": "code", "execution_count": 31, "id": "93e28118", "metadata": {}, "outputs": [], "source": [ "y=y.astype('int')" ] }, { "cell_type": "markdown", "id": "e9830b6c", "metadata": {}, "source": [ "# Feature Selection (LASSO)" ] }, { "cell_type": "code", "execution_count": 32, "id": "1cc528fb", "metadata": {}, "outputs": [], "source": [ "# LASSO model:\n", "lasso = Lasso(alpha=1)\n", "# fitting the model:\n", "lasso.fit(X, y)\n", "# select all coefficients and the feature names\n", "lasso_coefs = lasso.coef_\n", "feature_names = X.columns\n", "\n", "# collect the selected features:\n", "selected_feature_indices = np.nonzero(lasso_coefs)[0]\n", "selected_features = [feature_names[i] for i in selected_feature_indices]\n", "X_selected = X.iloc[:, selected_feature_indices]" ] }, { "cell_type": "code", "execution_count": 33, "id": "8afa29ae", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "98" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(selected_features)" ] }, { "cell_type": "markdown", "id": "6cee6462", "metadata": {}, "source": [ "# Test train split" ] }, { "cell_type": "code", "execution_count": 34, "id": "cff9bd67", "metadata": {}, "outputs": [], "source": [ "X_train = X_selected\n", "y_train = y" ] }, { "cell_type": "code", "execution_count": 35, "id": "129430e6", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(index\n", " 0 30\n", " 1 30\n", " Name: count, dtype: int64,\n", " index\n", " 0 111\n", " 1 108\n", " Name: count, dtype: int64)" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_test.value_counts(),y_train.value_counts()" ] }, { "cell_type": "markdown", "id": "1cfe2a06", "metadata": {}, "source": [ "# Cross validation" ] }, { "cell_type": "code", "execution_count": 36, "id": "059bf577", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fitting 5 folds for each of 72 candidates, totalling 360 fits\n", "[CV 1/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=0.8;, score=0.864 total time= 0.3s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=0.8;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.2s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=0.8;, score=0.953 total time= 0.1s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=1;, score=0.886 total time= 0.1s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=1;, score=0.955 total time= 0.1s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=1;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=1;, score=0.955 total time= 0.1s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=1;, score=0.953 total time= 0.4s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=0.8;, score=0.795 total time= 0.4s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.2s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=0.8;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=0.8;, score=0.953 total time= 0.1s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=1;, score=0.886 total time= 0.3s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=1;, score=0.955 total time= 0.1s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=1;, score=0.977 total time= 0.3s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=1;, score=0.955 total time= 0.1s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=1;, score=0.953 total time= 0.1s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=0.8;, score=0.886 total time= 0.1s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=0.8;, score=0.977 total time= 0.7s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=0.8;, score=0.953 total time= 0.1s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=1;, score=0.864 total time= 0.1s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=1;, score=0.977 total time= 0.1s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=1;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=1;, score=0.932 total time= 0.1s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=1;, score=0.930 total time= 0.1s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=0.8;, score=0.886 total time= 0.2s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=0.8;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=0.8;, score=0.953 total time= 0.2s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=1;, score=0.864 total time= 0.1s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=1;, score=0.977 total time= 0.1s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=1;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=1;, score=0.932 total time= 0.2s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=1;, score=0.930 total time= 0.2s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=0.8;, score=0.795 total time= 0.1s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=0.8;, score=0.955 total time= 0.2s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=0.8;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=0.8;, score=0.909 total time= 0.1s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=0.8;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=1;, score=0.773 total time= 0.1s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=1;, score=0.636 total time= 0.1s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=1;, score=0.955 total time= 0.1s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=1;, score=0.909 total time= 0.1s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=1;, score=0.860 total time= 0.1s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=0.8;, score=0.886 total time= 0.1s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=0.8;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=0.8;, score=0.909 total time= 0.2s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=0.8;, score=0.884 total time= 0.2s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=1;, score=0.864 total time= 0.1s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=1;, score=0.932 total time= 0.2s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=1;, score=0.955 total time= 0.3s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=1;, score=0.909 total time= 0.2s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=1;, score=0.907 total time= 0.2s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=0.8;, score=0.773 total time= 0.1s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=0.8;, score=0.977 total time= 0.1s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=0.8;, score=0.955 total time= 0.1s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=0.8;, score=0.909 total time= 0.1s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=0.8;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=1;, score=0.659 total time= 0.1s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=1;, score=0.750 total time= 0.1s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=1;, score=0.955 total time= 0.1s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=1;, score=0.932 total time= 0.1s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=1;, score=0.884 total time= 0.1s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[CV 1/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=0.8;, score=0.818 total time= 0.2s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=0.8;, score=0.955 total time= 0.2s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=0.8;, score=0.977 total time= 0.2s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.2s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=0.8;, score=0.884 total time= 0.2s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=1;, score=0.841 total time= 0.2s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=1;, score=0.773 total time= 0.2s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=1;, score=0.955 total time= 0.2s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=1;, score=0.909 total time= 0.3s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=1;, score=0.884 total time= 0.2s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=0.8;, score=0.659 total time= 0.1s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=0.8;, score=0.886 total time= 0.1s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=0.8;, score=0.886 total time= 0.1s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=0.8;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=1;, score=0.659 total time= 0.1s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=1;, score=0.614 total time= 0.1s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=1;, score=0.955 total time= 0.1s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=1;, score=0.864 total time= 0.1s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=1;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=0.8;, score=0.659 total time= 0.2s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=0.8;, score=0.886 total time= 0.1s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=0.8;, score=0.886 total time= 0.1s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=0.8;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=1;, score=0.659 total time= 0.2s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=1;, score=0.636 total time= 0.1s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=1;, score=0.955 total time= 0.1s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=1;, score=0.886 total time= 0.1s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=1;, score=0.884 total time= 1.4s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=0.8;, score=0.659 total time= 2.0s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=0.8;, score=0.864 total time= 0.9s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=0.8;, score=0.932 total time= 1.6s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=0.8;, score=0.909 total time= 0.1s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=0.8;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=1;, score=0.659 total time= 0.1s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=1;, score=0.614 total time= 0.1s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=1;, score=0.955 total time= 0.1s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=1;, score=0.864 total time= 0.1s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=1;, score=0.930 total time= 0.2s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=0.8;, score=0.659 total time= 0.4s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=0.8;, score=0.909 total time= 0.2s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.3s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=0.8;, score=0.909 total time= 0.2s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=0.8;, score=0.884 total time= 0.3s\n", "[CV 1/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=1;, score=0.659 total time= 0.5s\n", "[CV 2/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=1;, score=0.614 total time= 0.2s\n", "[CV 3/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=1;, score=0.955 total time= 0.5s\n", "[CV 4/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=1;, score=0.886 total time= 0.4s\n", "[CV 5/5] END gamma=0.1, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=1;, score=0.930 total time= 1.1s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=0.8;, score=0.750 total time= 0.2s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.2s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=0.8;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=0.8;, score=0.930 total time= 0.2s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=1;, score=0.886 total time= 0.1s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=1;, score=0.955 total time= 0.2s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=1;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=1;, score=0.977 total time= 0.2s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=1;, score=0.953 total time= 0.1s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=0.8;, score=0.727 total time= 0.2s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=0.8;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=0.8;, score=0.955 total time= 0.1s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=0.8;, score=0.953 total time= 0.1s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=1;, score=0.886 total time= 0.1s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=1;, score=0.955 total time= 0.2s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=1;, score=0.977 total time= 0.2s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=1;, score=0.955 total time= 0.1s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[CV 5/5] END gamma=0.01, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=1;, score=0.953 total time= 0.2s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=0.8;, score=0.909 total time= 0.1s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.2s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=0.8;, score=0.977 total time= 0.2s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=0.8;, score=0.953 total time= 0.1s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=1;, score=0.886 total time= 0.1s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=1;, score=0.977 total time= 0.1s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=1;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=1;, score=0.909 total time= 0.1s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=1;, score=0.930 total time= 0.1s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=0.8;, score=0.841 total time= 0.3s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=0.8;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=0.8;, score=0.909 total time= 0.1s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=0.8;, score=0.953 total time= 0.1s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=1;, score=0.886 total time= 0.1s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=1;, score=0.977 total time= 0.6s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=1;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=1;, score=0.909 total time= 0.1s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=1;, score=0.953 total time= 0.1s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=0.8;, score=0.795 total time= 0.1s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=0.8;, score=0.955 total time= 0.1s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=0.8;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=0.8;, score=0.909 total time= 0.2s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=0.8;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=1;, score=0.773 total time= 0.1s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=1;, score=0.636 total time= 0.1s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=1;, score=0.955 total time= 0.2s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=1;, score=0.909 total time= 0.2s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=1;, score=0.860 total time= 0.1s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=0.8;, score=0.886 total time= 0.2s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.2s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=0.8;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=0.8;, score=0.909 total time= 0.2s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=0.8;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=1;, score=0.864 total time= 0.1s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=1;, score=0.932 total time= 0.1s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=1;, score=0.955 total time= 0.2s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=1;, score=0.909 total time= 0.5s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=1;, score=0.907 total time= 0.8s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=0.8;, score=0.773 total time= 1.1s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=0.8;, score=0.977 total time= 0.1s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=0.8;, score=0.955 total time= 0.1s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=0.8;, score=0.909 total time= 0.1s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=0.8;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=1;, score=0.659 total time= 0.4s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=1;, score=0.750 total time= 0.7s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=1;, score=0.955 total time= 1.8s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=1;, score=0.932 total time= 3.4s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=1;, score=0.884 total time= 3.2s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=0.8;, score=0.818 total time= 1.7s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=0.8;, score=0.955 total time= 1.9s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=0.8;, score=0.977 total time= 0.2s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.2s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=0.8;, score=0.884 total time= 0.7s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=1;, score=0.841 total time= 0.2s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=1;, score=0.773 total time= 0.2s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=1;, score=0.955 total time= 0.3s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=1;, score=0.909 total time= 0.2s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=1;, score=0.884 total time= 0.2s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=0.8;, score=0.659 total time= 0.1s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=0.8;, score=0.886 total time= 0.1s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=0.8;, score=0.886 total time= 0.1s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=0.8;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=1;, score=0.659 total time= 0.1s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=1;, score=0.614 total time= 0.1s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=1;, score=0.955 total time= 0.1s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[CV 4/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=1;, score=0.864 total time= 0.1s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=1;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=0.8;, score=0.659 total time= 0.2s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=0.8;, score=0.886 total time= 0.2s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.2s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=0.8;, score=0.886 total time= 0.2s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=0.8;, score=0.884 total time= 0.3s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=1;, score=0.659 total time= 0.3s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=1;, score=0.636 total time= 0.2s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=1;, score=0.955 total time= 0.2s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=1;, score=0.886 total time= 0.2s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=1;, score=0.884 total time= 0.2s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=0.8;, score=0.659 total time= 0.1s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=0.8;, score=0.864 total time= 0.1s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=0.8;, score=0.909 total time= 0.1s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=0.8;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=1;, score=0.659 total time= 0.1s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=1;, score=0.614 total time= 0.2s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=1;, score=0.955 total time= 0.2s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=1;, score=0.864 total time= 0.2s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=1;, score=0.930 total time= 0.2s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=0.8;, score=0.659 total time= 0.1s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=0.8;, score=0.909 total time= 0.2s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.2s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=0.8;, score=0.909 total time= 0.2s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=0.8;, score=0.884 total time= 0.2s\n", "[CV 1/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=1;, score=0.659 total time= 0.2s\n", "[CV 2/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=1;, score=0.614 total time= 0.2s\n", "[CV 3/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=1;, score=0.955 total time= 0.3s\n", "[CV 4/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=1;, score=0.886 total time= 0.2s\n", "[CV 5/5] END gamma=0.01, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=1;, score=0.930 total time= 0.3s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=0.8;, score=0.750 total time= 0.1s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=0.8;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=0.8;, score=0.930 total time= 0.1s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=1;, score=0.886 total time= 0.1s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=1;, score=0.955 total time= 0.1s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=1;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=1;, score=1.000 total time= 0.1s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=100, subsample=1;, score=0.953 total time= 0.1s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=0.8;, score=0.727 total time= 0.1s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=0.8;, score=0.977 total time= 0.2s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=0.8;, score=0.955 total time= 0.1s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=0.8;, score=0.953 total time= 0.2s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=1;, score=0.886 total time= 0.2s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=1;, score=0.955 total time= 0.4s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=1;, score=0.977 total time= 0.3s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=1;, score=0.955 total time= 0.1s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.1, max_depth=3, n_estimators=200, subsample=1;, score=0.953 total time= 0.1s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=0.8;, score=0.864 total time= 0.1s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=0.8;, score=0.977 total time= 0.2s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=0.8;, score=0.953 total time= 0.1s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=1;, score=0.886 total time= 0.5s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=1;, score=0.977 total time= 0.5s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=1;, score=0.977 total time= 0.6s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=1;, score=0.932 total time= 0.4s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=100, subsample=1;, score=0.930 total time= 0.9s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=0.8;, score=0.864 total time= 1.2s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=0.8;, score=0.932 total time= 1.4s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=0.8;, score=0.977 total time= 0.2s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.2s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=0.8;, score=0.953 total time= 0.1s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[CV 1/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=1;, score=0.886 total time= 0.1s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=1;, score=0.977 total time= 0.1s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=1;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=1;, score=0.909 total time= 0.1s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.1, max_depth=5, n_estimators=200, subsample=1;, score=0.953 total time= 0.1s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=0.8;, score=0.795 total time= 0.1s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=0.8;, score=0.955 total time= 0.2s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=0.8;, score=0.977 total time= 0.1s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=0.8;, score=0.909 total time= 0.1s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=0.8;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=1;, score=0.773 total time= 0.1s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=1;, score=0.636 total time= 0.1s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=1;, score=0.955 total time= 0.1s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=1;, score=0.909 total time= 0.1s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=100, subsample=1;, score=0.860 total time= 0.1s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=0.8;, score=0.886 total time= 0.2s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.2s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=0.8;, score=0.977 total time= 0.2s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=0.8;, score=0.909 total time= 0.2s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=0.8;, score=0.884 total time= 0.2s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=1;, score=0.864 total time= 0.2s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=1;, score=0.932 total time= 0.2s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=1;, score=0.955 total time= 0.2s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=1;, score=0.909 total time= 0.2s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.01, max_depth=3, n_estimators=200, subsample=1;, score=0.907 total time= 0.2s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=0.8;, score=0.773 total time= 0.1s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=0.8;, score=0.977 total time= 0.1s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=0.8;, score=0.955 total time= 0.2s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=0.8;, score=0.909 total time= 0.1s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=0.8;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=1;, score=0.659 total time= 0.1s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=1;, score=0.750 total time= 0.1s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=1;, score=0.955 total time= 0.1s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=1;, score=0.932 total time= 0.2s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=100, subsample=1;, score=0.884 total time= 0.2s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=0.8;, score=0.818 total time= 0.3s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=0.8;, score=0.955 total time= 0.2s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=0.8;, score=0.977 total time= 0.2s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.3s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=0.8;, score=0.884 total time= 0.2s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=1;, score=0.841 total time= 0.2s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=1;, score=0.773 total time= 0.2s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=1;, score=0.955 total time= 0.2s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=1;, score=0.909 total time= 0.2s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.01, max_depth=5, n_estimators=200, subsample=1;, score=0.884 total time= 0.3s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=0.8;, score=0.659 total time= 0.1s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=0.8;, score=0.886 total time= 0.1s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=0.8;, score=0.886 total time= 0.1s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=0.8;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=1;, score=0.659 total time= 0.1s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=1;, score=0.614 total time= 0.1s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=1;, score=0.955 total time= 0.1s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=1;, score=0.864 total time= 0.1s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=100, subsample=1;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=0.8;, score=0.659 total time= 0.2s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=0.8;, score=0.886 total time= 0.3s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.3s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=0.8;, score=0.886 total time= 0.2s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=0.8;, score=0.884 total time= 0.2s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=1;, score=0.659 total time= 0.2s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=1;, score=0.636 total time= 0.2s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=1;, score=0.955 total time= 0.3s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=1;, score=0.886 total time= 0.2s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.001, max_depth=3, n_estimators=200, subsample=1;, score=0.884 total time= 0.2s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=0.8;, score=0.659 total time= 0.1s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=0.8;, score=0.864 total time= 0.1s\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "[CV 3/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=0.8;, score=0.932 total time= 0.1s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=0.8;, score=0.909 total time= 0.1s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=0.8;, score=0.884 total time= 0.1s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=1;, score=0.659 total time= 0.1s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=1;, score=0.614 total time= 0.1s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=1;, score=0.955 total time= 0.1s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=1;, score=0.864 total time= 0.2s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=100, subsample=1;, score=0.930 total time= 0.2s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=0.8;, score=0.659 total time= 0.3s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=0.8;, score=0.909 total time= 0.3s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=0.8;, score=0.932 total time= 0.3s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=0.8;, score=0.909 total time= 0.3s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=0.8;, score=0.884 total time= 0.2s\n", "[CV 1/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=1;, score=0.659 total time= 0.2s\n", "[CV 2/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=1;, score=0.614 total time= 0.2s\n", "[CV 3/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=1;, score=0.955 total time= 0.3s\n", "[CV 4/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=1;, score=0.886 total time= 0.3s\n", "[CV 5/5] END gamma=0.001, learning_rate=0.001, max_depth=5, n_estimators=200, subsample=1;, score=0.930 total time= 0.2s\n" ] }, { "data": { "text/html": [ "<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"â–¸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"â–¾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GridSearchCV(estimator=XGBClassifier(base_score=None, booster=None,\n", " callbacks=None, colsample_bylevel=None,\n", " colsample_bynode=None,\n", " colsample_bytree=None,\n", " early_stopping_rounds=None,\n", " enable_categorical=False, eval_metric=None,\n", " feature_types=None, gamma=None,\n", " gpu_id=None, grow_policy=None,\n", " importance_type=None,\n", " interaction_constraints=None,\n", " learning_rate=None, max_b...\n", " max_cat_to_onehot=None,\n", " max_delta_step=None, max_depth=None,\n", " max_leaves=None, min_child_weight=None,\n", " missing=nan, monotone_constraints=None,\n", " n_estimators=100, n_jobs=None,\n", " num_parallel_tree=None, predictor=None,\n", " random_state=42, ...),\n", " param_grid={'gamma': [0.1, 0.01, 0.001],\n", " 'learning_rate': [0.1, 0.01, 0.001],\n", " 'max_depth': [3, 5], 'n_estimators': [100, 200],\n", " 'subsample': [0.8, 1]},\n", " verbose=3)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" ><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">GridSearchCV</label><div class=\"sk-toggleable__content\"><pre>GridSearchCV(estimator=XGBClassifier(base_score=None, booster=None,\n", " callbacks=None, colsample_bylevel=None,\n", " colsample_bynode=None,\n", " colsample_bytree=None,\n", " early_stopping_rounds=None,\n", " enable_categorical=False, eval_metric=None,\n", " feature_types=None, gamma=None,\n", " gpu_id=None, grow_policy=None,\n", " importance_type=None,\n", " interaction_constraints=None,\n", " learning_rate=None, max_b...\n", " max_cat_to_onehot=None,\n", " max_delta_step=None, max_depth=None,\n", " max_leaves=None, min_child_weight=None,\n", " missing=nan, monotone_constraints=None,\n", " n_estimators=100, n_jobs=None,\n", " num_parallel_tree=None, predictor=None,\n", " random_state=42, ...),\n", " param_grid={'gamma': [0.1, 0.01, 0.001],\n", " 'learning_rate': [0.1, 0.01, 0.001],\n", " 'max_depth': [3, 5], 'n_estimators': [100, 200],\n", " 'subsample': [0.8, 1]},\n", " verbose=3)</pre></div></div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" ><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">estimator: XGBClassifier</label><div class=\"sk-toggleable__content\"><pre>XGBClassifier(base_score=None, booster=None, callbacks=None,\n", " colsample_bylevel=None, colsample_bynode=None,\n", " colsample_bytree=None, early_stopping_rounds=None,\n", " enable_categorical=False, eval_metric=None, feature_types=None,\n", " gamma=None, gpu_id=None, grow_policy=None, importance_type=None,\n", " interaction_constraints=None, learning_rate=None, max_bin=None,\n", " max_cat_threshold=None, max_cat_to_onehot=None,\n", " max_delta_step=None, max_depth=None, max_leaves=None,\n", " min_child_weight=None, missing=nan, monotone_constraints=None,\n", " n_estimators=100, n_jobs=None, num_parallel_tree=None,\n", " predictor=None, random_state=42, ...)</pre></div></div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" ><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">XGBClassifier</label><div class=\"sk-toggleable__content\"><pre>XGBClassifier(base_score=None, booster=None, callbacks=None,\n", " colsample_bylevel=None, colsample_bynode=None,\n", " colsample_bytree=None, early_stopping_rounds=None,\n", " enable_categorical=False, eval_metric=None, feature_types=None,\n", " gamma=None, gpu_id=None, grow_policy=None, importance_type=None,\n", " interaction_constraints=None, learning_rate=None, max_bin=None,\n", " max_cat_threshold=None, max_cat_to_onehot=None,\n", " max_delta_step=None, max_depth=None, max_leaves=None,\n", " min_child_weight=None, missing=nan, monotone_constraints=None,\n", " n_estimators=100, n_jobs=None, num_parallel_tree=None,\n", " predictor=None, random_state=42, ...)</pre></div></div></div></div></div></div></div></div></div></div>" ], "text/plain": [ "GridSearchCV(estimator=XGBClassifier(base_score=None, booster=None,\n", " callbacks=None, colsample_bylevel=None,\n", " colsample_bynode=None,\n", " colsample_bytree=None,\n", " early_stopping_rounds=None,\n", " enable_categorical=False, eval_metric=None,\n", " feature_types=None, gamma=None,\n", " gpu_id=None, grow_policy=None,\n", " importance_type=None,\n", " interaction_constraints=None,\n", " learning_rate=None, max_b...\n", " max_cat_to_onehot=None,\n", " max_delta_step=None, max_depth=None,\n", " max_leaves=None, min_child_weight=None,\n", " missing=nan, monotone_constraints=None,\n", " n_estimators=100, n_jobs=None,\n", " num_parallel_tree=None, predictor=None,\n", " random_state=42, ...),\n", " param_grid={'gamma': [0.1, 0.01, 0.001],\n", " 'learning_rate': [0.1, 0.01, 0.001],\n", " 'max_depth': [3, 5], 'n_estimators': [100, 200],\n", " 'subsample': [0.8, 1]},\n", " verbose=3)" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = xgb.XGBClassifier(random_state=42)\n", "\n", "# Defining parameter range\n", "param_grid = {\n", " 'max_depth': [3,5],\n", " 'learning_rate': [0.1 ,0.01, 0.001],\n", " 'n_estimators': [100,200],\n", " 'gamma': [ 0.1,0.01,0.001],\n", " 'subsample': [0.8,1]\n", "}\n", "\n", "grid = GridSearchCV(model, param_grid, refit=True, verbose=3)\n", "\n", "# Fitting the model for grid search\n", "grid.fit(X_train, y_train)" ] }, { "cell_type": "markdown", "id": "6476d825", "metadata": {}, "source": [ "# choose the best hyperparameters" ] }, { "cell_type": "code", "execution_count": 37, "id": "5d327876", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'gamma': 0.001, 'learning_rate': 0.1, 'max_depth': 3, 'n_estimators': 100, 'subsample': 1}\n", "XGBClassifier(base_score=None, booster=None, callbacks=None,\n", " colsample_bylevel=None, colsample_bynode=None,\n", " colsample_bytree=None, early_stopping_rounds=None,\n", " enable_categorical=False, eval_metric=None, feature_types=None,\n", " gamma=0.001, gpu_id=None, grow_policy=None, importance_type=None,\n", " interaction_constraints=None, learning_rate=0.1, max_bin=None,\n", " max_cat_threshold=None, max_cat_to_onehot=None,\n", " max_delta_step=None, max_depth=3, max_leaves=None,\n", " min_child_weight=None, missing=nan, monotone_constraints=None,\n", " n_estimators=100, n_jobs=None, num_parallel_tree=None,\n", " predictor=None, random_state=42, ...)\n" ] } ], "source": [ "# print best parameter after tuning\n", "print(grid.best_params_)\n", " \n", "# print how our model looks after hyper-parameter tuning\n", "print(grid.best_estimator_)" ] }, { "cell_type": "code", "execution_count": 38, "id": "29da15ed", "metadata": { "scrolled": true }, "outputs": [], "source": [ "# Select columns in df1 based on columns in df2\n", "X_test = X_test.loc[:, X_train.columns]" ] }, { "cell_type": "code", "execution_count": 39, "id": "d77bf449", "metadata": {}, "outputs": [], "source": [ "X_test = X_test.astype('int')" ] }, { "cell_type": "code", "execution_count": 40, "id": "3b2776c0", "metadata": {}, "outputs": [ { "data": { "text/html": [ "<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"â–¸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"â–¾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>XGBClassifier(base_score=None, booster=None, callbacks=None,\n", " colsample_bylevel=None, colsample_bynode=None,\n", " colsample_bytree=None, early_stopping_rounds=None,\n", " enable_categorical=False, eval_metric=None, feature_types=None,\n", " gamma=0.001, gpu_id=None, grow_policy=None, importance_type=None,\n", " interaction_constraints=None, learning_rate=0.1, max_bin=None,\n", " max_cat_threshold=None, max_cat_to_onehot=None,\n", " max_delta_step=None, max_depth=3, max_leaves=None,\n", " min_child_weight=None, missing=nan, monotone_constraints=None,\n", " n_estimators=100, n_jobs=None, num_parallel_tree=None,\n", " predictor=None, random_state=42, ...)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-4\" type=\"checkbox\" checked><label for=\"sk-estimator-id-4\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">XGBClassifier</label><div class=\"sk-toggleable__content\"><pre>XGBClassifier(base_score=None, booster=None, callbacks=None,\n", " colsample_bylevel=None, colsample_bynode=None,\n", " colsample_bytree=None, early_stopping_rounds=None,\n", " enable_categorical=False, eval_metric=None, feature_types=None,\n", " gamma=0.001, gpu_id=None, grow_policy=None, importance_type=None,\n", " interaction_constraints=None, learning_rate=0.1, max_bin=None,\n", " max_cat_threshold=None, max_cat_to_onehot=None,\n", " max_delta_step=None, max_depth=3, max_leaves=None,\n", " min_child_weight=None, missing=nan, monotone_constraints=None,\n", " n_estimators=100, n_jobs=None, num_parallel_tree=None,\n", " predictor=None, random_state=42, ...)</pre></div></div></div></div></div>" ], "text/plain": [ "XGBClassifier(base_score=None, booster=None, callbacks=None,\n", " colsample_bylevel=None, colsample_bynode=None,\n", " colsample_bytree=None, early_stopping_rounds=None,\n", " enable_categorical=False, eval_metric=None, feature_types=None,\n", " gamma=0.001, gpu_id=None, grow_policy=None, importance_type=None,\n", " interaction_constraints=None, learning_rate=0.1, max_bin=None,\n", " max_cat_threshold=None, max_cat_to_onehot=None,\n", " max_delta_step=None, max_depth=3, max_leaves=None,\n", " min_child_weight=None, missing=nan, monotone_constraints=None,\n", " n_estimators=100, n_jobs=None, num_parallel_tree=None,\n", " predictor=None, random_state=42, ...)" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model_xgb = grid.best_estimator_\n", "model_xgb.fit(X_train,y_train)" ] }, { "cell_type": "code", "execution_count": 41, "id": "94871ada", "metadata": {}, "outputs": [], "source": [ "y_proba = model_xgb.fit(X_train, y_train).predict_proba(X_test)[:,1]" ] }, { "cell_type": "markdown", "id": "d1c59b26", "metadata": {}, "source": [ "# ROC Curve and Classification report" ] }, { "cell_type": "code", "execution_count": 42, "id": "fddf8856", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAr4AAAIjCAYAAADlfxjoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABta0lEQVR4nO3de3zO9f/H8ce12ZFtCLMxDRE5H5dUSitUEn0jhFSUc5bKKSuKIqUcUsohEemgHCKHyDE5zPmQUw6ZQ9jY7Hh9fn98fi4tI9dc22fb9bzfbtfN3u/r8/lcr8vFPL33/rzfNsMwDERERERE8jkPqwsQEREREckJCr4iIiIi4hYUfEVERETELSj4ioiIiIhbUPAVEREREbeg4CsiIiIibkHBV0RERETcgoKviIiIiLgFBV8RERERcQsKviIiIiLiFhR8RURuwtNPP42vry/79u276rl33nkHm83G/PnzHX3JycmMHTuWu+++myJFiuDt7U1oaCiPPfYYX331Fenp6Y5jDx8+jM1my/AIDAykZs2ajBs3LsOxVpkwYQJTp061ugwRkRtiMwzDsLoIEZG86tSpU1SqVImaNWuyfPlyR/+hQ4eoUqUKDz/8MN988w0Ap0+fplmzZmzatIkmTZrw4IMPUrRoUWJjY1m6dCnLly9n6NChvP7664AZfMuWLUvbtm15+OGHAYiLi2PhwoUsXLiQfv36MWrUqJx/0/9QtWpVihUrxooVKyytQ0TkRij4iojcpEmTJtG1a1emTp1Kp06dAGjWrBlr165l165dlCpVCoCmTZuyZMkS5syZQ6tWra66zsaNG9m7dy/t27cHrgTfUaNG0a9fP8dxhmEQERHB8ePHOX78eA68w2tT8BWRvERTHUREbtLzzz9Pw4YN6devH3///TezZs1i0aJFvPXWW47Qu27dOhYvXkzXrl0zDb0AdevWdYTe67HZbAQHB1OgQIGrnpswYQJVqlTBx8eH0NBQevTowfnz5686bs6cOdSpUwc/Pz+KFSvG008/fVWIjo2NpXPnzpQuXRofHx9CQkJo0aIFhw8fBiA8PJydO3eycuVKx1SM++677z/rFxGxytXfNUVExCk2m41PPvmEWrVq0a1bN1atWkXdunXp0aOH45h58+YB5pxgZyUmJnLmzBkA4uPj+emnn1i0aBEDBgzIcNwbb7zBm2++SWRkJN26dWPv3r18/PHH/P7776xZswYvLy8Apk6dSufOnalXrx4jRozg5MmTfPjhh6xZs4YtW7ZQuHBhAJ544gl27txJr169CA8P59SpUyxZsoQjR44QHh7OmDFj6NWrF4UKFWLQoEEABAcHO/3+RERyjCEiIi4xYMAAAzA8PT2NTZs2ZXiuZcuWBmCcP38+Q/+lS5eM06dPOx7nzp1zPHfo0CEDyPTRrVs3w263O449deqU4e3tbTz00ENGenq6o3/cuHEGYEyePNkwDMNISUkxSpQoYVStWtW4dOmS47j58+cbgDFkyBDDMAzj3LlzBmCMGjXquu+5SpUqRqNGjZz6fRIRsYqmOoiIuEixYsUACA0NpWrVqhmei4+PB6BQoUIZ+idOnEjx4sUdj7vvvvuq63bt2pUlS5awZMkSvv32W3r06MEnn3xCVFSU45ilS5eSkpLCSy+9hIfHlW/tXbp0ITAwkAULFgDmPOJTp07RvXt3fH19Hcc98sgjVKpUyXGcn58f3t7erFixgnPnzt3Mb4uISK6h4Csi4gJHjx4lOjqaqlWrcvToUUaOHJnh+YCAAAAuXryYof+JJ55whNrq1atneu0KFSoQGRlJZGQkrVq1Yty4cXTv3p0xY8awfft2AP78808Abr/99gznent7U65cOcfz1zoOoFKlSo7nfXx8ePfdd/npp58IDg7m3nvvZeTIkcTGxjr1+yIikpso+IqIuEDPnj0B+Omnn3jyySd5++23OXjwoOP5SpUqAbBjx44M54WFhTlCbZEiRW749R544AEAfv3115st/Zpeeukl9u3bx4gRI/D19eX111+ncuXKbNmyJdteU0QkOyn4iojcpO+//54ff/yRYcOGUbp0acaMGYO3t3eGm9seffRRAGbMmOGS10xLSwOujCDfeuutAOzduzfDcSkpKRw6dMjx/LWOu9x3+fnLypcvz8svv8zPP//Mjh07SElJYfTo0Y7nbTabS96PiEhOUPAVEbkJFy5coHfv3tSqVYtevXoB5hzfYcOGsWjRIubMmQNAw4YNefDBB/n000/54YcfMr2W4cSy6pdXiahRowYAkZGReHt789FHH2W4zueff05cXByPPPIIYC6ZVqJECSZOnEhycrLjuJ9++ondu3c7jktMTCQpKSnDa5YvX56AgIAM5xUsWDDT5dJERHIjbWAhInIT+vTpw7hx41i/fj316tVz9Kenp1O/fn1iY2PZs2cPAQEBnDp1iqZNm7JlyxaaNWvmmN7wz53bmjVrxsKFC4HMd267cOECy5Yt49tvv+Wuu+5i1apVjpvZLi9n9tBDD/HYY4+xd+9eJkyYQO3atTNdziwiIoK2bds6ljMrUaKEYzmzmJgYHnjgAVq3bs0dd9xBgQIF+P7771myZAnffPMNTzzxBAA9evTg448/ZujQodx2222UKFGCxo0b5+RHICJy46xdVEJEJO/auHGj4enpafTs2TPT5zds2GB4eHgYvXv3dvRdunTJGDNmjNGgQQMjMDDQKFCggFGyZEnj0UcfNWbMmGGkpaU5js1sObMCBQoY5cqVM1555RXjwoULV73muHHjjEqVKhleXl5GcHCw0a1btwxLpF02e/Zso1atWoaPj49RtGhRo3379saxY8ccz585c8bo0aOHUalSJaNgwYJGUFCQERERYXz99dcZrhMbG2s88sgjRkBAgAFoaTMRydU04isiIiIibkFzfEVERETELSj4ioiIiIhbUPAVEREREbeg4CsiIiIibkHBV0RERETcgoKviIiIiLiFAlYXkNPsdjt//fUXAQEB2mpTREREJBcyDIMLFy4QGhrq2KTHFdwu+P7111+EhYVZXYaIiIiI/IejR49SunRpl13P7YJvQEAAYP5GBgYGWlyNiIiIiPxbfHw8YWFhjtzmKm4XfC9PbwgMDFTwFREREcnFXD0tVTe3iYiIiIhbUPAVEREREbeg4CsiIiIibkHBV0RERETcgoKviIiIiLgFBV8RERERcQsKviIiIiLiFhR8RURERMQtKPiKiIiIiFtQ8BURERERt6DgKyIiIiJuQcFXRERERNyCgq+IiIiIuAUFXxERERFxCwq+IiIiIuIWLA2+v/76K82bNyc0NBSbzcbcuXP/85wVK1ZQu3ZtfHx8uO2225g6dWq21ykiIiIieZ+lwTchIYEaNWowfvz4Gzr+0KFDPPLII9x///3ExMTw0ksv8fzzz7N48eJsrlRERERE8roCVr54s2bNaNas2Q0fP3HiRMqWLcvo0aMBqFy5MqtXr+aDDz6gSZMm2VWmJQwDEhOtrkJEREQk5yUkZM91LQ2+zlq3bh2RkZEZ+po0acJLL710zXOSk5NJTk52tOPj47OrPJcxDLj7bli71upKRERERHJWAVJJ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E3Pdx7WmOnh7e1OnTh2WLVvm6LPb7SxbtswxJeR6fH19KVWqFGlpaXz77be0aNHiqmOmTJlCiRIleOSRRzK9xo4dO6476p7TFHxd4cIFePZZaN0azp0zb177/280IiIiVnjyySfx9PRk/PjxAJQpU4aRI0cyZswYBg0axJ49ezhw4ADvv/8+r776Ki+//DIREREAREREOPpeffVV1q1bx59//smyZct48sknmTZtWqav2bZtW0qWLMnjjz/OmjVrOHjwIN9++63jRqrGjRuzceNGvvjiC/744w+io6PZsWPHDb+ndu3aMXHiRJYsWUL79u0d/QEBAfTr14++ffsybdo0Dhw4wObNmxk7duw1awVzLuu6desyzF2tUKECS5YsYe3atezevZsXXnjhqhHTzPTo0YOzZ8/Stm1bfv/9dw4cOMDixYvp3Lkz6enpFClShFtuuYVPP/2U/fv3s3z5cqKiov7zukWLFr0qSP/7UaDAtX+AHxUVxaRJk5g2bRq7d++mW7duJCQk0LlzZ8cxHTt2ZMCAAY72b7/9xnfffcfBgwdZtWoVTZs2xW638+qrr2a4tt1uZ8qUKXTq1OmaNaxatYqHHnroP99njnHpGhF5gMuXM1u3zjDKlzeXKbPZDGPQIMNISXHNtUVEJMdcb2ml3C6zZcIMwzBGjBhhFC9e3Lh48aKj74cffjDuueceo2DBgoavr69Rp04dY/LkyZled/bs2ca9995rBAQEGAULFjSqV69uDB069LrLmR0+fNh44oknjMDAQMPf39+oW7eu8dtvvzmeHzJkiBEcHGwEBQUZffv2NXr27HnVcmZ9+vTJ9Nq7du0yAOPWW2+9atksu91ujBkzxrj99tsNLy8vo3jx4kaTJk2MlStXXrPW1NRUIzQ01Fi0aJGj7++//zZatGhhFCpUyChRooQxePBgo2PHjhl+f69V4759+4yWLVsahQsXNvz8/IxKlSoZL730kqPWJUuWGJUrVzZ8fHyM6tWrGytWrDAA4/vvv79mja4wduxYo0yZMoa3t7dRv359x/Jy/3w/nTp1crRXrFjhqPOWW24xOnToYBw/fvyq6y5evNgAjL1792b6umvXrjUKFy5sJCYmZvq8FcuZ2QwjizPY86j4+HiCgoL46684QkICs36htDRzhYahQyE9HcqUgenT4d57XVesiIjkmKSkJA4d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viKSrxQsWJDbbrstQ9/hw4d59NFH6datG2+//TZFixZl9erVPPfcc6SkpGQa4N544w3atWvHggUL+Omnn4iOjmbWrFm0bNmSixcv8sILL9C7d++rzitTpsw1awsICGDz5s14eHgQEhKCn58fAPHx8f/5vmrXrs2hQ4f46aefWLp0Ka1btyYyMpJvvvnmP8+9lubNm2MYBgsWLKBevXqsWrWKDz74wPH8xYsXefPNN2nVqtVV5/r6+l7zut7e3o7P4J133uGRRx7hzTffZNiwYQDMmjWLfv36MXr0aBo0aEBAQACjRo3it99+u269Fy9epE6dOhn+w3FZbrmBUURyNwVfEcn3Nm3ahN1uZ/To0Y7RzMvzSa+nYsWKVKxYkb59+9K2bVumTJlCy5YtqV27Nrt27boqYP8XDw+PTM8JDAwkNDSUNWvW0KhRI0f/mjVrqF+/fobj2rRpQ5s2bfjf//5H06ZNOXv2LEWLFs1wvcvzadPT069bj6+vL61atWLGjBns37+f22+/ndq1azuer127Nnv37nX6ff7b4MGDady4Md26dXO8z7vuuovu3bs7jvn3iK23t/dV9deuXZvZs2dTokQJAgMDb6omEXFPurlNRPK92267jdTUVMaOHcvBgweZPn06EydOvObxly5domfPnqxYsYI///yTNWvW8PvvvzumMLz22musXbuWnj17EhMTwx9//MEPP/zg9M1t//TKK6/w7rvvMnv2bPbu3Uv//v2JiYmhT58+ALz//vt89dVX7Nmzh3379jFnzhxKliyZ6aYbJUqUwM/Pj0WLFnHy5Eni4uKu+brt27dnwYIFTJ482XFT22VDhgzhiy++4M0332Tnzp3s3r2bWbNmMXjwYKfeW4MGDahevTrDhw8HoEKFCmzcuJHFixezb98+Xn/9dX7//fcM54SHh7Nt2zb27t3LmTNnSE1NpX379hQrVowWLVqwatUqDh06xIoVK+jduzfHjh1zqiYRcU8KviKS79WoUYP333+fd999l6pVqzJjxowMS4H9m6enJ3///TcdO3akYsWKtG7dmmbNmvHmm28CUL16dVauXMm+ffu45557qFWrFkOGDCE0NDTLNfbu3ZuoqChefvllqlWrxqJFi/jxxx+pUKECYE6TGDlyJHXr1qVevXocPnyYhQsXOkaw/6lAgQJ89NFHfPLJJ4SGhtKiRYtrvm7jxo0pWrQoe/fupV27dhmea9KkCfPnz+fnn3+mXr163HnnnXzwwQfceuutTr+/vn378tlnn3H06FFeeOEFWrVqRZs2bYiIiODvv//OMPoL0KVLF26//Xbq1q1L8eLFWbNmDf7+/vz666+UKVOGVq1aUblyZZ577jmSkpI0AiwiN8RmGIZhdREiIiIiItlNI74iIiIi4hYUfEVERETELSj4ioiIiIhbUPAVEREREbeg4CsiIiIibkHBV0RERETcgoKviIiIiLgFBV8RERERcQsKviIiIiLiFhR8RURERMQtKPiKiIiIiFv4Px5hpIdiv4VJAAAAAElFTkSuQmCC", "text/plain": [ "<Figure size 800x600 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.metrics import roc_curve, auc\n", "# Calculate the false positive rate (FPR), true positive rate (TPR), and thresholds\n", "fpr, tpr, thresholds = roc_curve(y_test, y_proba)\n", "\n", "# Calculate the area under the ROC curve (AUC)\n", "roc_auc = auc(fpr, tpr)\n", "\n", "# Plot the ROC curve\n", "plt.figure(figsize=(8, 6))\n", "plt.plot(fpr, tpr, color='blue', label='ROC curve (area = %0.2f)' % roc_auc)\n", "plt.plot([0, 1], [0, 1], color='red', linestyle='--')\n", "plt.xlim([0.0, 1.0])\n", "plt.ylim([0.0, 1.05])\n", "plt.xlabel('False Positive Rate')\n", "plt.ylabel('True Positive Rate')\n", "plt.title('XGBoost')\n", "plt.legend(loc='lower right')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "2ed2e4bf", "metadata": {}, "source": [ "### The ROC curve above shows that the XGBoost model has an AUC of 0.97 which indicates that the model preformed good in classification of non cancer and cancer." ] }, { "cell_type": "code", "execution_count": 43, "id": "603f38e9", "metadata": {}, "outputs": [ { "data": { "image/png": "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19eEhISY119/PdVrOnz4sGnTpo3x8/MzgYGB5plnnjHLly9PV8C/VvA1xpgxY8YYwEybNs3Zlp73JK3P+d/vz4wZM8zdd99tAgMDjZeXl6lcubKZMmXKNWsVyYkKZHWPskh+4ubmxvvvv0+tWrXo3bs3P/30E3Xr1qVv374p9luyZAlgjQvOqNjYWM6cOQNATEwM33zzDcuXL2fw4MEp9nv55Zd55ZVXCA8Pp3fv3uzdu5f33nuPjRs3sm7dOjw9PYF/vjqtV68eY8eO5eTJk7zzzjusW7eOrVu3UqRIEQAeeOABdu3aRf/+/QkLC+PUqVOsXLmSI0eOEBYWxoQJE+jfvz+FChVi6NChAAQFBWX49WVEYmIix44do2jRoinalyxZgo+PDx07dkzzuLJly9KkSRNWr17N5cuX8fX1ZfHixfj6+vK///0vU7XExsayatUq7rzzTsqUKZOpc1xLYmIiERERNGnShDfffBM/Pz/CwsKYPHkyS5cu5cEHH0xRy5IlS3jkkUfw8PAAYM6cOfTo0YOIiAhef/11YmNjee+992jSpAlbt2696lfbHTp0oEiRIgwcONA5zKZQoUIA7Nq1izvuuAN/f3+ef/55PD09ef/997nrrrv44YcfaNCgQYpz9enTh8DAQIYPH86lS5du+D158MEHqVChAmPGjMH8/6i9lStXcvDgQXr27EnJkiXZtWsX06ZNY9euXfz888/XHdawf/9+/ve///HYY4/Ro0cPZsyYwSOPPEKdOnWoUqXKNY89d+4cLVq0oEOHDnTs2JHPPvuMF154gWrVqtGyZUsALl26RLNmzThx4gQDBgygZMmSzJs3j++///6G3w+Abt26MWTIEFasWOEc/pOe96RDhw7s27ePTz75hLfffpvixYsDEBgYCMB7771HlSpVuP/++ylQoABLliyhT58+OByOVH+/ieRodidvkbxo8ODBBjAeHh5m8+bNqZ5v3769Acz58+dTtF++fNmcPn3a+fh372xyT2Baj969exuHw+Hc99SpU8bLy8s0b97cJCUlOdsnTZpkADNjxgxjjDHx8fGmRIkSpmrVquby5cvO/b7++msDmOHDhxtjrGEApOOr7qwe6tC8eXPne7Njxw7TrVs3A5i+ffum2LdIkSKmRo0a1zzf008/bQDz22+/GWOMKVq06HWPuZbt27cbwAwYMCBd+2e0xxcwL774Yop9HQ6HKVWqlHnggQdStH/66acGMD/++KMxxpgLFy6YIkWKmF69eqXYLyoqygQEBKRq/6+rfdvQrl074+XlZQ4cOOBsO378uClcuLC58847nW3JvZRNmjRJ0QOdHtfq8e3cuXOq/dP6ij/5m5fk9+PfNf23x/e/+506dcp4e3ubZ5991tl2tR5f/vMtQ1xcnClZsmSKz2f8+PEGMIsWLXK2Xb582VSqVMklPb7GGBMQEGBq1arl3E7ve3KtoQ5pnSMiIsKUK1fumvWK5DSa1UEkCyT3loSEhFC1atVUz8fExAA4e86STZ06lcDAQOejSZMmqY594oknWLlyJStXruTzzz+nb9++vP/++0RGRjr3+e6774iPj+eZZ55JcfNNr1698Pf3Z+nSpYB109apU6fo06cPPj4+zv1at25NpUqVnPv5+vri5eXFmjVrOHfuXGbflhu2YsUK53tTrVo15syZQ8+ePVPd1HfhwgUKFy58zXMlP5/8WcTExFz3mGtJPs+NnON6evfunWLbzc2NBx98kGXLlnHx4kVn+4IFCyhVqpTz52flypWcP3+ezp07c+bMGefDw8ODBg0aZKq3MSkpiRUrVtCuXTvKlSvnbA8ODqZLly6sXbvW+Z4k69Wrl7MH2hWeeuqpVG2+vr7O31+5coUzZ85w++23A7Bly5brnvO2227jjjvucG4HBgZy6623cvDgweseW6hQoRTf4nh5eVG/fv0Uxy5fvpxSpUpx//33O9t8fHxS3Zx5IwoVKpRidocbfU/+e47o6GjOnDlD06ZNOXjwINHR0S6qXCTrKfiKuNjRo0cZMWIEVatW5ejRo7zxxhup9kkOR/8OK2ANJ0gOtVe7K7tChQqEh4cTHh5Ohw4dmDRpEn369GHChAns2LEDgD///BOAW2+9NcWxXl5elCtXzvn81fYDqFSpkvN5b29vXn/9db755huCgoK48847eeONN4iKikr3+/Jfp0+fJioqyvn473uRlgYNGrBy5UqWL1/Om2++SZEiRTh37hxeXl4p9itcuPB1p3VKfj75s/D397+hqaD8/f1TnNfVChQoQOnSpVO1d+rUicuXL7N48WLA+platmwZDz74oPNr/T/++AOAZs2apfiPVWBgICtWrODUqVMZruf06dPExsam+bNTuXJlHA4HR48eTdFetmzZDF/n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REREJJu4GZN8W7s9GjRoQL169Zg0aRIADoeD0NBQ+vfvz4svvnjd45OSkihatCiTJk2ie/fu190/JiaGgIAAjh+PJjjY/4brl1xk1CjYsAFmzoSgILurERERkatIzmvR0dH4+7sur9k6nVl8fDybN29m8ODBzjZ3d3fCw8PZsGFDus4RGxtLQkICxYoVS/P5uLg44uLinNsxWnY2/1iyBMqWhapVre0hQ8Dd3Zq6TERERPIdW4c6nDlzhqSkJIL+0/sWFBREVFRUus7xwgsvEBISQnh4eJrPjx07loCAAOcjNDT0huuWHC42Fnr3hvvvh65drRvawFp+WKFXREQk37J9jO+NeO2115g/fz5ffvklPj4+ae4zePBgoqOjnY+jR49mc5WSrbZsgdq1YepUazs8XGFXREREAJuHOhQvXhwPDw9OnjyZov3kyZOULFnymse++eabvPbaa3z33XdUr179qvt5e3vj7e3tknolB3M44M03YdgwSEiA4GD46CMr+IqIiIhgc4+vl5cXderUYdWqVc42h8PBqlWraNiw4VWPe+ONNxg1ahTLly+nbt262VGq5GTnzlkB94UXrNDbvr01e4NCr4iIiPyLrT2+AJGRkfTo0YO6detSv359JkyYwKVLl+jZsycA3bt3p1SpUowdOxaA119/neHDhzNv3jzCwsKcY4ELFSpEoUKFbHsdYiN/fyvw+vnBu+/Co49qeIOIiIikYnvw7dSpE6dPn2b48OFERUVRs2ZNli9f7rzh7ciRI7i7/9Mx/d577xEfH8///ve/FOcZMWIEL7/8cnaWLna6cAE8PcHHx7ppbe5ciIuDChXsrkxERERyKNvn8c1umsc3D/j5Z2u2hjZt/lmFTURERPKMrJrHN1fP6iD5TGIijBwJTZrAwYOwaBFoXmYRERFJJwVfyR0OHYKmTWHECEhKgi5dYNs2a3yviIiISDoo+ErOZgzMmQM1asD69VbQ/fhja0xvkSJ2VyciIiK5iO03t4lc099/Q//+1s1sjRtboTcszO6qREREJBdS8JWcrXhxeP99+OMPePFFKKAfWREREckcpQjJWeLj4eWXrRvYWrWy2jp1srUkERERyRsUfCXn2LvXmqZs82YoUQL274fChe2uSkRERPII3dwm9jMGpk+H2rWt0Fu0KEyZotArIiIiLqUeX7HXmTPQq5c1Jy9A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mxIlSpjRo0fb9RIkAzL6eY8YMcIULlzYfPLJJ+bgwYNmxYoVpnz58qZjx452vQTJgAsXLpitW7earVu3GsC89dZbZuvWrebPP/80xhjz4osvmm7dujn3T57O7LnnnjO7d+82kydP1nRmySZOnGjKlCljvLy8TP369c3PP//sfK5p06amR48eKfb/9NNPTcWKFY2Xl5epUqWKWbp0aTZXLDciI5/3zTffbIBUjxEjRmR/4ZIpGf3z/W8KvrlPRj/v9evXmwYNGhhvb29Trlw58+qrr5rExMRsrloyKyOfd0JCgnn55ZdN+fLljY+PjwkNDTV9+vQx586dy/7CJcO+//77NP89Tv6Me/ToYZo2bZrqmJo1axovLy9Trlw5M3PmzAxf180YfR8gIiIiInlfnhrjKyIiIiJyNQq+IiIiIpIvKPiKiIiISL6g4CsiIiIi+YKCr4iIiIjkCwq+IiIiIpIvKPiKiIiISL6g4CsiIiIi+YKCr4gIMGvWLIoUKWJ3GZnm5ubGokWLrrnPI488Qrt27bKlHhGRnEjBV0TyjEceeQQ3N7dUj/3799tdGrNmzXLW4+7uTunSpenZsyenTp1yyflPnDhBy5YtATh8+DBubm5s27YtxT7vvPMOs2bNcsn1rubll192vk4PDw9CQ0N54oknOHv2bIbOo5AuIlmhgN0FiIi4UosWLZg5c2aKtsDAQJuqScnf35+9e/ficDjYvn07PXv25Pjx43z77bc3fO6SJUted5+AgIAbvk56VKlShe+++46kpCR2797No48+SnR0NAsWLMiW64uIXI16fEUkT/H29qZkyZIpHh4eHrz11ltUq1aNggULEhoaSp8+fbh48eJVz7N9+3buvvtuChcujL+/P3Xq1GHTpk3O59euXcsdd9yBr68voaGhPP3001y6dOmatbm5uVGyZElCQkJo2bIlTz/9NN999x2XL1/G4XAwcuRISpcujbe3NzVr1mT58uXOY+Pj4+nXrx/BwcH4+Phw8803M3bs2BTnTh7qULZsWQBq1aqFm5sbd911F5CyF3XatGmEhITgcDhS1Ni2bVseffRR5/ZXX31F7dq18fHxoVy5crzyyiskJiZe83UWKFCAkiVLUqpUKcLDw3nwwQdZuXKl8/mkpCQee+wxypYti6+vL7feeivvvPOO8/mXX36Z2bNn89VXXzl7j9esWQPA0aNH6dixI0WKFKFYsWK0bduWw4cPX7MeEZFkCr4iki+4u7vz7rvvsmvXLmbPns3q1at5/vnnr7p/165dKV26NBs3bmTz5s28+OKLeHp6AnDgwAFatGjBAw88wG+//caCBQtYu3Yt/fr1y1BNvr6+OBwOEhMTeeeddxg/fjxvvvkmv/32GxEREdx///388ccfALz77rssXryYTz/9lL179zJ37lzCwsLSPO+vv/4KwHfffceJEyf44osvUu3z4IMP8vfff/P99987286ePcvy5cvp2rUrAD/99BPdu3dnwIAB/P7777z//vvMmjWLV199Nd2v8fDhw3z77bd4eXk52xwOB6VLl2bhwoX8/vvvDB8+nCFDhvDpp58CMGjQIDp27EiLFi04ceIEJ06coFGjRiQkJBAREUHhwoX56aefWLduHYUKFaJFixbEx8enuyYRyceMiEge0aNHD+Ph4WEKFizofPzvf/9Lc9+FCxeam266ybk9c+ZMExAQ4NwuXLiwmTVrVprHPvbYY+aJJ55I0fbTTz8Zd3d3c/ny5TSP+e/59+3bZypWrGjq1q1rjDEmJCTEvPrqqymOqVevnunTp48xxpj+/fubZs2aGYfDkeb5AfPll18aY4w5dOiQAczWrVtT7NOjRw/Ttm1b53bbtm3No48+6tx+//33TUhIiElKSjLGGHPPPfeYMWPGpDjHnDlzTHBwcJo1GGPMiBEjjLu7uylYsKDx8fExgAHMW2+9ddVjjDGmb9++5oEHHrhqrcnXvvXWW1O8B3FxccbX19d8++231zy/iIgxxmiMr4jkKXfffTfvvfeec7tgwYKA1fs5duxY9uzZQ0xMDImJiVy5coXY2Fj8/PxSnScyMpLHH3+cOXPmOL+uL1++PGANg/jtt9+YO3euc39jDA6Hg0OHDlG5cuU0a4uOjqZQoUI4HA6uXLlCkyZN+OCDD4iJieH48eM0btw4xf6NGzdm+/btgDVM4d577+XWW2+lRYsW3HfffTRv3vyG3quuXbvSq1cvpkyZgre3N3PnzuWhhx7C3d3d+TrXrVuXooc3KSnpmu8bwK233srixYu5cuUKH3/8Mdu2baN///4p9pk8eTIzZszgyJEjXL58mfj4eGrWrHnNerdv387+/fspXLhwivYrV65w4MCBTLwDIpLfKPiKSJ5SsGBBbrnllhRthw8f5r777qN37968+uqrFCtWjLVr1/LYY48RHx+fZoB7+eWX6dKlC0uXLuWbb75hxIgRzJ8/n/bt23Px4kWefPJJnn766VTHlSlT5qq1FS5cmC1btuDu7k5wcDC+vr4AxMTEXPd11a5dm0OHDvHNN9/w3Xff0bFjR8LDw/nss8+ue+zVtGnTBmMMS5cupV69evz000+8/fbbzucvXrzIK6+8QocOHVId6+Pjc9Xzenl5OT+D1157jdatW/PKK68watQoAObPn8+gQYMYP348DRs2pHDhwowbN45ffvnlmvVevHiROnXqpPgPR7KccgOjiORsCr4ikudt3rwZh8PB+PHjnb2ZyeNJr6VixYpUrFiRgQMH0rlzZ2bOnEn79u2pXbs2v//+e6qAfT3u7u5pHuPv709ISAjr1q2jadOmzvZ169ZRv379FPt16tSJTp068b///Y8WLVpw9uxZihUrluJ8yeNpk5KSrlmPj48PHTp0YO7cuezfv59bb72V2rVrO5+vXbs2e/fuzfDr/K9hw4bRrFkzevfu7XydjRo1ok+fPs59/ttj6+Xllar+2rVrs2DBAkqUKIG/v/8N1SQi+ZNubhORPO+WW24hISGBiRMncvDgQebMmcPUqVOvuv/ly5fp168fa9as4c8//2TdunVs3LjROYThhRdeYP369fTr149t27bxxx9/8NVXX2X45rZ/e+6553j99ddZsGABe/fu5cUXX2Tbtm0MGDAAgLfeeotPPvmEPXv2sG/fPhYuXEjJkiXTXHSjRIkS+Pr6snz5ck6ePEl0dPRVr9u1a1eWLl3KjBkznDe1JRs+fDgfffQRr7zyCrt27WL37t3Mnz+fYcOGZei1NWzYkOrVqzNmzBgAKlSowKZNm/j222/Zt28fL730Ehs3bkxxTFhYGL/99ht79+7lzJkzJCQk0LVrV4oXL07btm356aefOHToEGvWrOHpp5/m2LFjGapJRPInBV8RyfNq1KjBW2+9xeuvv07VqlWZO3duiqnA/svDw4O///6b7t27U7FiRTp27EjLli155ZVXAKhevTo//PAD+/bt44477qBWrVoMHz6ckJCQTNf49NNPExkZybPPPku1atVYvnw5ixcvpkKFCoA1TOKNN96gbt261KtXj8OHD7Ns2TJnD/a/FShQgHfffZf333+fkJAQ2rZte9XrNmvWjGLFirF37166dOmS4rmIiAi+/vprVqxYQb169bj99tt5++23ufnmmzP8+gYOHMgHH3zA0aNHefLJJ+nQoQOdOnWiQYMG/P333yl6fwF69erFrbfeSt26dQkMDGTdunX4+fnx448/UqZMGTp06EDlypV57LHHuHLlinqARSRd3Iwxxu4iRERERESymnp8RURERCRfUPAVERERkXxBwVdERERE8gUFXxERERHJFxR8RURERCRfUPAVERERkXxBwVdERERE8gUFXxERERHJFxR8RURERCRfUPAVERERkXxBwVdERERE8oX/A8lTrErJuNg/AAAAAElFTkSuQmCC", "text/plain": [ "<Figure size 800x600 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Predict probabilities for the training data\n", "y_train_proba = model_xgb.predict_proba(X_train)[:, 1]\n", "\n", "# Calculate the false positive rate (FPR), true positive rate (TPR), and thresholds\n", "fpr_train, tpr_train, thresholds_train = roc_curve(y_train, y_train_proba)\n", "\n", "# Calculate the area under the ROC curve (AUC) for training data\n", "roc_auc_train = auc(fpr_train, tpr_train)\n", "\n", "# Plot the ROC curve for training data\n", "plt.figure(figsize=(8, 6))\n", "plt.plot(fpr_train, tpr_train, color='blue', label='ROC curve (area = %0.2f)' % roc_auc_train)\n", "plt.plot([0, 1], [0, 1], color='red', linestyle='--')\n", "plt.xlim([0.0, 1.0])\n", "plt.ylim([0.0, 1.05])\n", "plt.xlabel('False Positive Rate')\n", "plt.ylabel('True Positive Rate')\n", "plt.title('XGBoost - ROC Curve for Training Data')\n", "plt.legend(loc='lower right')\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "942e1a1f", "metadata": {}, "source": [ "#### In the ROC curve above we can see that the AUC value of 1 for the train set which indicates the model's flawless ability to distinguish between positive and negative classes during training, showcasing excellent performance on the training data." ] }, { "cell_type": "code", "execution_count": 45, "id": "169beac5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " precision recall f1-score support\n", "\n", " 0 1.00 0.87 0.93 30\n", " 1 0.88 1.00 0.94 30\n", "\n", " accuracy 0.93 60\n", " macro avg 0.94 0.93 0.93 60\n", "weighted avg 0.94 0.93 0.93 60\n", "\n" ] } ], "source": [ "from sklearn.metrics import classification_report, confusion_matrix\n", "grid_predictions = grid.predict(X_test)\n", "print(classification_report(y_test, grid_predictions))" ] }, { "cell_type": "markdown", "id": "ce1b8ee7", "metadata": {}, "source": [ "### The model displayed high precision and recall for both classes, resulting in an overall F1-score of 0.93, indicating its strong performance on the test dataset." ] }, { "cell_type": "code", "execution_count": 46, "id": "aeeb0b36", "metadata": {}, "outputs": [ { "data": { "image/png": "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q6++Wl988YVHUgLUBPHx8dqzZ4/HtqysLPf8nHbt2slut+vw4cO0HxAwmPSIKpOSkqLS0lK9+OKLOnDggF5//XXNnz//kvt///33Sk9P16ZNm/Tll1/qo48+0ieffOJuNUyaNElbt25Venq6srKytH//fr3zzjtMekTAu+GGG7Rjxw4tXrxY+/fv1/Tp0z0SiJiYGI0fP15jx47VokWLlJubq08//VQvvviiFi1aVI2R43JGwoAq06lTJz377LP6wx/+oPbt22vJkiVyOp2X3D80NFTfffedhg4dqlatWumOO+5Qv379NHPmTElSx44dtXnzZv373/9W165dddVVV2natGlKTEysqksCKqVPnz6aOnWqJk6cqGuvvVZnzpzR0KFDPfaZPXu2pk6dKqfTqbZt26pv375au3atkpOTqylqXO54vTUAAPCKCgMAAPCKhAEAAHhFwgAAALwiYQAAAF6RMAAAAK9IGAAAgFckDAAAwCsSBqCGGD58uPr37+9e79Gjh/tNnVVp06ZNstlsOnXq1CX3sdlsWrVqVYWPOWPGDF155ZWm4jp06JBsNpuysrJMHQfAxZEwACYMHz5cNptNNptNYWFhSklJ0axZs3Tu3Dm/n/utt97S7NmzK7RvRb7kAeCn8PIpwKS+ffsqIyNDxcXF+tvf/qZRo0apdu3amjJlygX7lpSUKCwszJLzxsXFWXIcAKgIKgyASXa7XQkJCWrWrJkeeugh9erVS++++66k/7URnnjiCSUmJqp169aSpLy8PN1xxx2qU6eO4uLidNttt+nQoUPuY5aVlWncuHGqU6eO6tWrp4kTJ17wOuQftySKi4s1adIkJSUlyW63KyUlRa+++qoOHTqknj17SpLq1q0rm82m4cOHS5JcLpecTqeSk5MVERGhTp06aeXKlR7n+dvf/qZWrVopIiJCPXv29IizoiZNmqRWrVopMjJSzZs319SpUz1e53zeggULlJSUpMjISN1xxx06ffq0x+evvPKK2rZtq/DwcLVp00YvvfSSz7EAqBwSBsBiERERKikpca+///77ys7O1oYNG7RmzRqVlpaqT58+iomJ0YcffqiPPvpI0dHR6tu3r3vcM888o4ULF+q1115TZmamTp48qbfffvsnzzt06FD99a9/1Zw5c7R3714tWLBA0dHRSkpK0ptvvilJys7O1rFjx/TCCy9IkpxOpxYvXqz58+fr888/19ixY3XPPfdo8+bNksoTm4EDB+qWW25RVlaWRo4cqcmTJ/v8v0lMTIwWLlyoL774Qi+88IJefvllPffccx775OTkaMWKFVq9erXWr1+vXbt26eGHH3Z/vmTJEk2bNk1PPPGE9u7dqyeffFJTp07l7Y1AVTEAVNqwYcOM2267zTAMw3C5XMaGDRsMu91ujB8/3v15w4YNjeLiYveY119/3WjdurXhcrnc24qLi42IiAjjvffeMwzDMBo1amQ89dRT7s9LS0uNJk2auM9lGIbRvXt349FHHzUMwzCys7MNScaGDRsuGuc//vEPQ5Lxn//8x72tqKjIiIyMNLZu3eqx74gRI4zBgwcbhmEYU6ZMMdq1a+fx+aRJky441o9JMt5+++1Lfv70008bqamp7vXp06cboaGhxpEjR9zb1q1bZ4SEhBjHjh0zDMMwWrRoYSxdutTjOLNnzzbS0tIMwzCMgwcPGpKMXbt2XfK8ACqPOQyASWvWrFF0dLRKS0vlcrl09913a8aMGe7PO3To4DFv4bPPPlNOTo5iYmI8jlNUVKTc3FydPn1ax44dU+fOnd2f1apVS9dcc80FbYnzsrKyFBoaqu7du1c47pycHJ09e1Y33XSTx/aSkhJdddVVkqS9e/d6xCFJaWlpFT7HecuXL9ecOXOUm5urgoICnTt3Tg6Hw2Ofpk2bqnHjxh7ncblcys7OVkxMjHJzczVixAjdf//97n3OnTun2NhYn+MB4DsSBsCknj17at68eQoLC1NiYqJq1fL8zyoqKspjvaCgQKmpqVqyZMkFx4qPj69UDBERET6PKSgokCStXbvW44taKp+XYZVt27ZpyJAhmjlzpvr06aPY2FgtW7ZMzzzzjM+xvvzyyxckMKGhoZbFCuDSSBgAk6KiopSSklLh/a+++motX75cDRo0uOBf2ec1atRIH3/8sbp16yap/F/SO3fu1NVXX33R/Tt06CCXy6XNmzerV69eF3x+vsJRVlbm3tauXTvZ7XYdPnz4kpWJtm3buidwnrd9+3bvF/kDW7duVbNmzfTYY4+5t3355ZcX7Hf48GEdPXpUiYmJ7vOEhISodevWatiwoRITE3XgwAENGTLEp/MDsAaTHoEqNmTIENWvX1+33XabPvzwQx08eFCbNm3S6NGjdeTIEUnSo48+qt///vdatWqV9u3bp4cffvgnn6FwxRVXaNiwYbrvvvu0atUq9zFXrFghSWrWrJlsNpvWrFmjb775RgUFBYqJidH48eM1duxYLVq0SLm5ufr000/14osvuicSPvjgg9q/f78mTJig7OxsLV26VAsXLvTpelu2bKnDhw9r2bJlys3N1Zw5cy46gTM8PFzDhg3TZ599pg8//FCjR4/WHXfcoYSEBEnSzJkz5XQ6NWfOHP373//Wv/71L2VkZOjZZ5/1KR4AlUPCAFSxyMhIbdmyRU2bNtXAgQPVtm1bjRgxQkVFRe6Kw29+8xv96le/0rBhw5SWlqaYmBgNGDDgJ487b9483X777Xr44YfVpk0b3X///SosLJQkNW7cWDNnztTkyZPVsGFDpaenS5Jmz56tqVOnyul0qm3bturbt6/Wrl2r5ORkSeXzCt58802tWrVKnTp10vz58/Xkk0/6dL233nqrxo4dq/T0dF155ZXaunWrpk6desF+KSkpGjhwoG6++Wb17t1bHTt29LhtcuTIkXrllVeUkZGhDh06qHv37lq4cKE7VgD+ZTMuNYsKAADgv6gwAAAAr0gYAACAVyQMAADAKxIGAADgFQkDAADwioQBAAB4RcIAAAC8ImEAAABekTAAAACvSBgAAIBXJAwAAMArEgYAAODV/wcPNKzp3WrpfwAAAABJRU5ErkJggg==", "text/plain": [ "<Figure size 640x480 with 2 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#######CONFUSION MATRIX ###########\n", "from sklearn import metrics\n", "y_test_pred_xgb = model_xgb.predict(X_test)\n", "confusion_matrix_test = metrics.confusion_matrix(y_test, y_test_pred_xgb)\n", "cm_display = metrics.ConfusionMatrixDisplay(confusion_matrix = confusion_matrix_test, display_labels = [False, True])\n", "cm_display.plot()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "74e5f71e", "metadata": {}, "source": [ "### The XGBoost model achieved 26 true positive predictions and 30 true negative predictions, with only 4 false positives and no false negatives, indicating strong overall performance in correctly classifying positive and negative samples." ] }, { "cell_type": "code", "execution_count": 47, "id": "ca09e716", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy : 0.9333333333333333\n", "Sensitivity : 0.8666666666666667\n", "Specificity : 1.0\n" ] } ], "source": [ "total1=sum(sum(confusion_matrix_test))\n", "#####from confusion matrix calculate accuracy\n", "accuracy1=(confusion_matrix_test[0,0]+confusion_matrix_test[1,1])/total1\n", "print ('Accuracy : ', accuracy1)\n", "\n", "sensitivity1 = confusion_matrix_test[0,0]/(confusion_matrix_test[0,0]+confusion_matrix_test[0,1])\n", "print('Sensitivity : ', sensitivity1 )\n", "\n", "specificity1 = confusion_matrix_test[1,1]/(confusion_matrix_test[1,0]+confusion_matrix_test[1,1])\n", "print('Specificity : ', specificity1)" ] }, { "cell_type": "markdown", "id": "a8ae087b", "metadata": {}, "source": [ "### The XGBoost model demonstrated strong performance with an accuracy of 93.3%, correctly identifying all negative samples with a specificity of 100% and achieving a high sensitivity of 86.7% for positive samples." ] }, { "cell_type": "markdown", "id": "4c85b645", "metadata": {}, "source": [ "# Feature importance:" ] }, { "cell_type": "code", "execution_count": 48, "id": "c1095af0", "metadata": {}, "outputs": [], "source": [ "# for important features:\n", "important_feat = model_xgb.feature_importances_\n", "#get indices of those important features\n", "idx = important_feat.argsort(kind= \"quicksort\")\n", "idx= idx[::-1][:50]" ] }, { "cell_type": "code", "execution_count": 49, "id": "ae7e0162", "metadata": {}, "outputs": [], "source": [ "df1 = X_selected.T" ] }, { "cell_type": "code", "execution_count": 50, "id": "1d97f818", "metadata": {}, "outputs": [], "source": [ "top_met = df1.iloc[idx]" ] }, { "cell_type": "code", "execution_count": 51, "id": "4cd4227b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['CRISP3', 'TRIP13', 'RPN1', 'CRNN', 'ALDH9A1', 'ECT2', 'HSPB8', 'MCM2',\n", " 'EMP1', 'SIM2', 'RAB11FIP1', 'COL1A1', 'EFNA1', 'IGFBP3', 'KANK1',\n", " 'CFD', 'CLIC3', 'ID4', 'CH25H', 'LCN2', 'DHRS1', 'IGF2BP2', 'MMP10',\n", " 'ANO1', 'MYH10', 'LAMC2', 'SLK', 'ZBTB16', 'AIM2', 'AQP3', 'COL5A2',\n", " 'UCHL1', 'ENTPD6', 'GALE', 'ATP6V1D', 'HSPBAP1', 'GPX3', 'LEPROTL1',\n", " 'NT5C2', 'SCNN1A', 'FSCN1', 'ERCC3', 'TMPRSS11D', 'RHCG', 'PTN',\n", " 'CRABP2', 'DHRS2', 'GABRP', 'FLG', 'TMF1'],\n", " dtype='object')" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "top_met.index" ] }, { "cell_type": "code", "execution_count": 52, "id": "8f6d88bb", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['ACLY', 'ACPP', 'AIM2', 'ALDH9A1', 'ALOX12', 'ANO1', 'AQP3', 'ATP6V1D',\n", " 'CCNG2', 'CES2', 'CFD', 'CH25H', 'CLIC3', 'COL1A1', 'COL5A2', 'CRABP2',\n", " 'CRISP3', 'CRNN', 'CYP4B1', 'DHRS1', 'DHRS2', 'DUOX1', 'DUSP5', 'ECM1',\n", " 'ECT2', 'EFNA1', 'EMP1', 'ENTPD6', 'ERCC3', 'FLG', 'FSCN1', 'GABRP',\n", " 'GALE', 'GALNT1', 'GPX3', 'HOPX', 'HSPB8', 'HSPBAP1', 'HSPD1', 'ID4',\n", " 'IFI35', 'IGF2BP2', 'IGFBP3', 'IL1RN', 'INPP1', 'KANK1', 'KLK13',\n", " 'KRT4', 'LAMC2', 'LCN2', 'LEPROTL1', 'LYPD3', 'MAL', 'MCM2', 'MMP10',\n", " 'MUC1', 'MYH10', 'NDRG2', 'NT5C2', 'PCSK5', 'PHLDA1', 'PITX1',\n", " 'PPP1R3C', 'PSMB9', 'PTN', 'RAB11FIP1', 'RANBP9', 'RHCG', 'RND3',\n", " 'RPN1', 'RUVBL1', 'SCNN1A', 'SERPINB13', 'SERPINB2', 'SIM2', 'SLC2A1',\n", " 'SLK', 'SLURP1', 'SPINK5', 'SPRR3', 'SSRP1', 'STK24', 'SYNPO2L',\n", " 'TAPBP', 'TFAP2B', 'TGIF1', 'TIAM1', 'TJP1', 'TMF1', 'TMPRSS11D',\n", " 'TMPRSS11E', 'TRIP13', 'TSPAN6', 'TST', 'TYMP', 'UCHL1', 'ZBTB16',\n", " 'ZNF185'],\n", " dtype='object')" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_selected.columns" ] }, { "cell_type": "code", "execution_count": 53, "id": "cf86e1f2", "metadata": {}, "outputs": [], "source": [ "from matplotlib import pyplot as plt" ] }, { "cell_type": "code", "execution_count": 54, "id": "6353bd9e", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 0, 'Xgboost Feature Importance')" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmIAAAGwCAYAAAAKSAlfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAACtx0lEQVR4nOzdZ1QVV9fA8f+lI1dAQQUUQURAQVFjb8HeosQYOxEsUaNRiTVYUaPYEo2xJEZaEnuvsYuxlyiWxBrFEsFGE6Uz7wcW83oDGM2TQtm/tWaFe+bMuTM3H9zrzDl7axRFURBCCCGEEP86vf/6BoQQQgghiisJxIQQQggh/iMSiAkhhBBC/EckEBNCCCGE+I9IICaEEEII8R+RQEwIIYQQ4j8igZgQQgghxH/E4L++AZG/rKwsHjx4QMmSJdFoNP/17QghhBDiNSiKwrNnz7Czs0NP79VzXhKIFWAPHjzA3t7+v74NIYQQQvwF9+7do0KFCq/sI4FYAVayZEkg+3+kubn5f3w3QgghhHgdiYmJ2Nvbq/+Ov4oEYgVYzutIc3NzCcSEEEKIQuZ1lhXJYn0hhBBCiP+IBGJCCCGEEP8RCcSEEEIIIf4jEogJIYQQQvxHJBATQgghhPiPSCAmhBBCCPEfkUBMCCGEEOI/IoGYEEIIIcR/RAIxIYQQQoj/iARiQgghhBD/EQnEhBBCCCH+IxKICSGEEEL8RyQQE0IIIYT4jxSLQEyj0bzyCAwMJCoqCo1Gg76+Pr///rvO9dHR0RgYGKDRaIiKigJQ+//x8PHxUa8bMWIEb731FsbGxtSsWfNffGIhhBBCFAYG//UN/Buio6PVv9euXcuUKVO4du2a2qbVanny5AkA5cuX57vvviMgIEA9Hx4eTvny5bl7926usffv34+7u7v62dTUVOd8//79OXXqFBcvXvzbnkcIIYQQRUOxmBGzsbFRDwsLCzQajU6bVqtV+/r6+hIaGqpzfWhoKL6+vnmObWVllWv8HIsWLWLYsGE4OTn9Mw8mhBBCiEKtWARib6Jz587ExcVx9OhRAI4ePUpcXBydOnX6x787NTWVxMREnUMIIYQQRZcEYn9gaGiIj48PISEhAISEhODj44OhoWGe/Rs1aoRWq1WP8+fP/+XvDgoKwsLCQj3s7e3/8lhCCCGEKPgkEMtD//79Wb9+PTExMaxfv57+/fvn23ft2rVERkaqR7Vq1f7y9wYEBJCQkKAe9+7d+8tjCSGEEKLgKxaL9d9U9erVcXNzo1evXlStWhUPDw8iIyPz7Gtvb4+zs/Pf8r3GxsYYGxv/LWMJIYQQouCTQCwPfn5+nD17Vv2s0WjUv8eMGUNGRgYLFy7M9/rz588ze/ZsfvrpJ2JjYzExMQFg+/btvPPOOzrjCSGEEKL4kleT+WjTpg2XL1/m3r17REdHs2/fvte6buvWrTRo0ICkpCRmzZrFxo0badeuHaampowePZqjR4+Slpb2D9+9EEIIIQoDmRHLh6mpqU5+sJiYmD+95vnz5wwYMICOHTuyadMmvLy8OHz4sHr+4cOHNGvWjNu3b+Po6Jjr+tTUVFJTU9XPsmtSCCGEKNqK3YyYn58f8fHxudodHR1RFCXfDPg1a9ZEURQ151he/ffu3cvTp08ZN24cABERESiKkuvIKwgD2TUphBBCFDfFLhB7XTt27NBJS9GtW7c/veb69esAuLq6qm1nzpzRGWfHjh35Xi+7JoUQQojiRV5N5qN58+YsW7ZM/WxmZvaXxqlRo4a647JKlSpkZGTk21d2TQohhBDFS5GYEYuJiWHkyJE4OztjYmJCuXLlaNy4McuWLePFixc6fYOCgtDX12fevHm5xgkLC0Oj0RAeHs7+/fupWbMmPXr04OLFi9ja2qr9jh49qhb5NjExwcXFhaCgIDWNxbVr19Si4CYmJlSpUoX69esDcOvWrX/wlxBCCCFEYVLoA7Fbt25Rq1Yt9u7dy6xZszh//jwnTpxg3Lhx7Nixg/379+v0DwkJYdy4cWrm/D8yNzene/futG3blvPnz9O2bVu6d++uUyQc4MMPPyQ6Oppr164REBDAlClTuHv3LqVLl2bOnDlqv/379xMdHc2ePXsAmD59ep5r1IQQQghR/BT6QGzo0KEYGBhw9uxZunfvTtWqVXFycsLb25udO3fq1Ig8fPgwycnJTJ8+ncTERI4fP55rPI1Gg6mpqTqT9dlnn6Gnp8fFixfVPhkZGTx//pyYmBji4uKoVasWbm5uHDlyhBUrVrBz5041G39ycjKPHj3i4MGDACQkJHDq1Kl/+FcRQgghRGFQqAOxp0+fsnfvXoYNG5bvGq6Xk6cGBwfTq1cvDA0N6dWrF8HBwa8cPzMzk/DwcABq166ttickJLBq1Spq1aqlHleuXMHIyIguXbpw/PhxNYlrly5daNGiBQcPHiQoKAgg3zxiUvRbCCGEKF4KdSB28+ZNFEXR2aUIYG1tre5SHD9+PJCdk2vDhg34+PgA4OPjw7p160hKStK5NiEhgQ0bNrB//36MjIz46KOPWL58OZUrVway15G9/fbbGBoaYmZmphYDNzQ0ZMSIEQDUqVOHpUuXAtm7Jp88ecKaNWs4ffo0Wq2WevXq5fk8kr5CCCGEKF4KdSCWn9OnTxMZGYm7u7uaIHX16tVUrlwZT09PIDsvmIODA2vXrtW5tmTJkmoB7/PnzzNr1iyGDBnC9u3bdfr16dOHyMhIjh07Rvv27Zk4cSKNGjXKdS+NGjVCq9VSqlQpLly4wNq1aylXrlye9y3pK4QQQojipVCnr3B2dkaj0eRaSO/k5ARkZ8fPERwczC+//IKBwf8/clZWFiEhIQwYMEBt09PT0yniXaNGDfbu3cucOXN01ptZWFio/datW4ezszMNGjSgVatWOveydu1aqlWrhpWVFZaWlq98HklfIYQQQhQvhXpGzMrKCltbWwICAtBoNBgaGlKuXDlat26tsyvy0qVLnDlzhmHDhqmzXZGRkURERHD8+HHc3NzUvikpKWpqCn19fezt7fn1119zvcJ8/PgxnTt3pmzZslhbW5Oamkq3bt14+PAhAL/++isAAwcOxMPDg4YNG/Lll1/+C7+KEEIIIQqLQh2IAdSvXx8jIyOcnZ1ZtGgRS5cuxcPDg6FDh3LixAk0Gg3BwcEYGRlRuXJlPDw81KNZs2aUL1+e2NhYnTFdXFy4cOECR48e5f333+fevXs6iVjT09PZtGkTpUuXZs+ePVy5coWwsDCSkpLYsGEDAJcvXwZg5syZ/PLLL0ycOJGAgAAWL1787/04QgghhCjQCvWrScjO+9W8eXOqVKnCvHnzuH//PsbGxlSqVImrV6/i5OTEtGnTKFGiRJ7XV61alYiICNLT04HsnYvXr1/H09MTY2NjHBwcaNy4Mb/88ot6TUJCAqmpqaxYsUJ91VmpUiUGDBjAsmXL+Oijj+jevTvjx4+nTp06ODk54eTkxIkTJ9i0aRMff/zxP//DCCGEEKLAK/QzYgAmJiZ89dVX3Lp1i7S0NJ49e8aVK1fw9PTkxx9/5MmTJ1hYWOR5bePGjXF3d8fQ0BA/Pz+mTp2Kp6cniqKQkpLCnj17iI+P11m7tWLFChRFYfPmzSiKorZ//fXXXL58GT09vTyLgickJFC6dOl8n0PSVwghhBDFS5EIxPLj5uZGVFSU+nn8+PE6Bbi1Wi2zZs3Kdd2lS5fQarWYmppSqVIlfvnlFzUNBkCDBg2YMGECvXv3xtramvbt2zNv3jx1fVhejh8/ztq1axk0aFC+fSR9hRBCCFG8FOlATFEUnYSuY8eO1VmsHxkZyZAhQ3Jd5+rqSmRkJGfOnGH8+PG0bduW4cOH6/SZOXMmMTExfP3117i7u/P111/j5ubGpUuXco13+fJlvL29mTp1Km3atMn3fiV9hRBCCFG8FOlA7MqVK1SqVEn9bG1tjbOzs86R16vCnMX/Hh4ezJ49G319faZNm5arn5WVFd26dWP+/PlcuXIFOzs75s+fr9Pn119/pWXLlgwaNIhJkya98n6NjY0xNzfXOYQQQghRdBWaQCwmJobhw4fj5OSEsbEx9vb2dOrUiejoaAAcHR3VtBMlSpSgUqVKXLp0ia5du+Yaa/Xq1ejr6zNs2LBc56Kiorhw4YI6lqmpKb/++itz5szhwYMHaj8/Pz+1j5GREdWqVSMzM1NNcxEREUHz5s2pXr06sbGx7Ny5k5UrV/5Dv44QQgghCqNCEYhFRUXx1ltvcfDgQebNm8elS5fYvXs3zZs35+TJk6SmppKZmcmYMWPYs2cPQ4cOVYOmMmXK5BovODiYcePGsXr1ap20FC+7du0a0dHR/Prrr3zyySekp6czdOhQAHbs2MGRI0eoXbs2R48eZffu3dSoUYNr166hr68PwObNmzl9+jStW7fmyJEjdO3alQ8++ECCMSGEEEKoNMrL2/4KqA4dOnDx4kWuXbuWq7h37969Wb16NZCdFd/KygpPT0969+7N6NGj8fPz44svvsDR0RF/f3+8vb1xd3cnOjqatm3bUr58eX777TciIyOB7Jmu8PBw4uLidDLhlytXjtjYWG7dukV6ejrt2rXjwYMHZGVlYWxsTJUqVXjx4gUlS5bkxIkTBAYG5vk6U6vV8uzZs9d67sTERCwsLEhISJDXlEIIIUQh8Sb/fhf4GbHY2Fh2797NsGHDcgVhAKtWrUJRFBwcHPj888959OgRe/bswdzcnPj4eIyMjIDsWTV/f39CQ0Pp2LEjFhYW+Pj4EB8frwZhkB2IvUxRFHbv3k1cXBwHDhzA3t4eJycnGjVqRKtWrXjx4gVxcXGcPn2aypUrk5aWBkBgYCCKougcjRs3ZvDgwfk+q6SvEEIIIYqXAh+I3bx5E0VRdMoQ5ScnPYWxsTHvv/8+pUqVYuDAger5rKwswsLC8PHxAaBnz54cPXqU27dv5xqrQoUKaLVajIyM6NixI1OnTqVZs2Z5fq+iKOzfv589e/bQokWLPPusW7eOM2fO0K9fv3zvX9JXCCGEEMVLgQ/E3uTNaU56ioMHD1K/fn0WLFigU8B73759PH/+nA4dOgDZuyj/WJcyx5EjR9QUFytWrGDWrFksW7ZMp8+OHTvQarWYmJjQvn17evToQWBgYK6xDh06RL9+/fj2229xd3fP9/4lfYUQQghRvBT4EkdVqlRBo9Fw9erVP+37cnqK9evXU716derUqUO1atWA7EX6sbGxmJqaqtdkZWVx8eJFpk2bhp7e/8ellSpVUteIubu7c+rUKWbOnMlHH32k9mnevDnLli3DyMgIOzs7tdzRyw4fPkynTp1YsGABffv2feX9Gxsb62TwF0IIIUTRVuBnxEqXLk3btm1ZsmQJz58/z3U+Pj4+z+vs7e3p0aMHAQEBADx9+pStW7eyZs0anYSu58+fJy4ujr179+pcX6pUKTU1hbOzM+fOnePx48dqyorw8HD2799PlSpVcHBwwNDQEEdHRwC8vLzQaDRMmTKFjh07MmfOHAYNGsTChQvVPkIIIYQQBT4QA1iyZAmZmZnUq1ePjRs3cuPGDa5cucKiRYto2LBhvteNHDmS7du3c/bsWb7//nusrKzo3r07Hh4e6uHp6UmHDh0IDg7WubZp06ZcuHCBQ4cO0bx5c86cOUO1atWIjo4mOjqa7t27AxAaGqq2nTlzRr3e0NCQzz77jGHDhtG1a1diYmJITEwkMzPzn/mRhBBCCFHoFPhXkwBOTk6cO3eOmTNnMnr0aKKjoylTpgxvvfVWrnVbL6tWrRpt2rRhypQp3L9/ny5duuiUPMqRk+PryZMnatuRI0fw9PTEwMAAe3t7ddbLxsYGQH29aWlpqba9zMHBgZs3bzJ37lzmzp2rtr/q1WNqaiqpqanqZ9k1KYQQQhRthSKP2L/Nz8+P+Ph4tmzZorZ5e3tz//59fv75Z7VNo9GwefNm3n33XZ3rvby8qFmzJg4ODsyZM4fffvsNMzMzFi5cyMKFC3UKkb8sv9xjkkdMCCGEKDyKVB6x/9rrpKbIz9ChQzExMeGLL754rf6ya1IIIYQoXgrFq8n/Qk5qivT0dLKysujdu3eeqSlexdjYmOnTpzN8+HCd3Zav6i+7JoUQQojio0jPiL1cmNvQ0JBKlSoxbtw4UlJS1D4ajUbnFWSOsmXL0qBBA27cuEFycjLh4eE8e/ZMp/A4wMyZMzlw4IDOtUlJSezatQtbW1sGDhxIcnIydevW5fLly//o8wohhBCicCnSgRhAu3btiI6O5tatWyxYsIBvvvmGqVOn/ul1BgYGaLVaKlasiIGBQZ6FxwE8PDwYNmyYet3WrVs5d+4c6enphIeHc/XqVRYtWsT9+/fZunUrWVlZb/wMHlP3vPE1QgghhCj4inwgZmxsjI2NDfb29rz77ru0atWKffv2vfE4Q4cORaPRcPr0abp27YqLiwuQvYj/5MmTADx//pwBAwZgZWWFt7c3bdq0wcnJiSFDhtCwYUOSkpJ0ksYKIYQQongrVlHB5cuXOX78uFoI/HX9WeHxnAz8e/fu5enTp3nWiJwzZ47OK9G8SNFvIYQQongp8ov1cxbdZ2RkkJqaip6eHosXL9bp06tXL/T19XXaXs7nlV/h8T9m/rh+/ToABw4coFSpUgCcOXOG5s2bA2BmZpbru18WFBSUZ/oKIYQQQhRNRT4Qy6kH+fz5cxYsWICBgQFdu3bV6bNgwQJatWql0zZ+/Hg1C/7/kmqtRo0aREZGAtl1MzMyMvLtGxAQwKhRo9TPiYmJec6uCSGEEKJoKPKBmJmZGc7OzgCEhITg6elJcHAwAwYMUPvY2NiofXKULFlSrWP5uoXHq1SpAsC1a9do0KABkL1G7Y9j50fSVwghhBDFy2uvEctJA5HfERgYSFRUFBqNBn19fX7//Xed66OjozEwMECj0aiZ5XP65xxWVla0adOG8+fPq9flFNDWaDSYmJjg4uJCUFBQrlmqzZs306BBAywsLChZsiTu7u6cPn1aPZ+ZmcncuXN5+vQpAwcOpFSpUtSvX19njJ9++olOnTphZ2dHeHg40dHRgG7h8VWrVtGmTRusrKzQaDRERkaqAVubNm0oXbo0LVq0UO/Z1NQUR0dHtTblX3F5Wtu/fK0QQgghCq7XDsRyCltHR0ezcOFCzM3NddrGjBmj9i1fvjzfffedzvXh4eGUL18+z7H3799PdHQ0e/bsISkpifbt26vBDcCHH35IdHQ0165dIyAggClTpvD111+r5w8cOECPHj3o2rUrp0+f5ueff2bmzJk6qSKmTZvGggUL+OKLL7CxsaFfv34MGjRI5z6eP3+Op6cnS5YsyXWPOYXHx40bR+nSpdVXiKtWrVILj2u1WlasWEFycjJVqlRh1apV7Nu3j6lTp3Lnzh0ANm7c+Do/tw5JXyGEEEIUUcpfEBoaqlhYWORqv337tgIokyZNUqpUqaJzzsXFRZk8ebICKLdv39bpf/78ebXfsWPHFEDZvXu3oiiK8vbbbysjR47UGat27dpKly5d1M8jR45UvLy8ct2Pr6+v4u3trSiKonh6eiqBgYGKoihKUFCQUqZMGSUpKUkBlM2bN+e6FlDq1aun0/bgwQNl2LBhioODg2JkZKQAyttvv60cOnRIp5+NjY3i6emplC1bVjEwMFCsrKyUtm3bKl27dlU0Go1y9erVXN+Xl4SEBAVQ7P3XvVZ/IYQQQvz3cv79TkhI+NO+/0j6is6dOxMXF8fRo0cBOHr0KHFxcXTq1OlPrzU1NQUgLS0t1zlFUThy5AhXr17VSUFhY2PDL7/8kitzfVhYmJo138bGhoMHD/L48WM+/fRTHj16hJmZGYqi5CranSMgIEDns62tLYsXLyYqKopr164BsHDhQry8vHT6GRsb4+fnx8OHD0lPT+fJkyfs3r2b5cuXA9lJX/Mi6SuEEEKI4uUfCcQMDQ3x8fEhJCQEyF4k7+Pjg6Gh4Suvi4+PZ8aMGWi1WurVq6e2L126FK1Wi7GxMc2aNSMrK4sRI0ao54cPH07dunWpXr06jo6O9OzZk5CQEJ0UFF988QWPHz/GxsaGGjVqMGTIEH788ce/+clfrXTp0pQtW1ZdI/dHQUFBWFhYqIfsmBRCCCGKtn8soWv//v1Zv349MTExrF+/nv79++fbt1GjRmi1WkqVKsWFCxdYu3Yt5cqVU8/36dOHyMhIjh07Rvv27Zk4cSKNGjVSz5uZmbFz505u3rzJpEmT0Gq1jB49mnr16vHixQsAqlWrxuXLlzl58iT9+/fn0aNHdOrUiYEDB/5TP0GeFEVBo9HkeS4gIICEhAT1uHfv3r96b0IIIYT4d/1jgVj16tVxc3OjV69eVK1aFQ8Pj3z7rl27lgsXLhAXF8dvv/1Ghw4ddM5bWFjg7OxM3bp1WbduHYsXL2b//v25xqlcuTIDBw5kxYoVnDt3jl9//ZW1a9eq5/X09Khbty7+/v5s2rSJsLAwgoODuX379t/34K/w9OlTHj9+TKVKlfI8b2xsjLm5uc4hhBBCiKLrHy1x1L9/fyIiIl45GwZgb29P5cqV1VJBr6LVahk5ciRjxozRSWHh5+enkwrDycmJjIwM5s6dC4Cjo6N6rkSJElSvXl1d5/X8+XN1nEOHDqmBYI8ePahWrRqjR4/WScehKAqrVq0CoGHDhlhaWlKnTh0WLlyozsBdvHiROnXqYGlpiZmZGTVr1mTAgAHo6enluyYtP5K+QgghhCia/tFA7MMPP+Tx48d/++u/wYMHc/36dTUVRGBgIGfPnqVu3bqcOnWKvXv30qNHD0xMTAgPDwfg8ePHtGvXjp07d7Jnzx4aNmzIZ599Rvny5dXSRV9++SUtW7ZU17KNGzdODcI+//xzILvuZMeOHdVSRJMnT2bVqlV8/PHHbN26lb1796r3OXToUDZt2sSKFSsoUaIEW7duxdfX97UTvOaQ9BVCCCFE0fSPZtY3MDDA2tr6bx+3dOnS9O3bl8DAQN577z3efvttwsLCuHXrFk2bNqVUqVLUqlWLffv2qYv+TUxMuHnzJn5+fiQkJGBjY4ORkRHt2rXDwMCA+/fvq7Ns27ZtA+Czzz4DwNfXlylTpgAwadIknUX+EydOBGDq1KkcPHhQ3ekYGhpKaGgoRkZG2NjY0KBBAx4/foydnd3f/nsIIYQQonD6S4GYn58ffn5+udodHR1fWZexZs2aOuf/rD9AREREnu0vJ3Rt3rw5Xl5exMfHq+kq/qhkyZIMGzYMf39/srKy2Lx5M926dVMDxfXr15ORkcGDBw+wtbXN935+//13XF1d8y13ZGFhkWtXpKIoHDx4kM6dO9OsWbN8x05NTdXZ6SnpK4QQQoii7R99Nflv27FjB1qtVueYNWuWen78+PFqGoz333+fUqVKqa9Nb9y4gbm5+SuDsJx+rq6ur3U/CQkJaLVajIyM6NixI1999RWtW7fOt7+krxBCCCGKlyJV9Lt58+YsW7ZMp6106dLq32PHjsXPz4/o6GjGjh3L0KFD1fVar0or8bI/m8F7WcmSJYmMjCQpKYkDBw4watQonJycciWAzREQEKCWToLsGTEJxoQQQoiiq0gFYmZmZq9cCG9tbY2zszPOzs6sX7+e6tWrU6dOHapVq4aLiwsJCQlER0e/clbMxcUl39eSf6Snp6feT82aNbly5QpBQUH5BmLGxsYYGxvnapddk0IIIUTRVGReTR49epStW7fqpLDQaDTcvHmTCxcu8OjRIyZNmoSJiQmOjo6MGTOGzp07q2WM3n//fQwMDKhbty4WFhZotVpq1KjB9OnTiY2NJT4+nrCwMLZt28b169d1yhTFx8ej0Wg4dOgQCQkJAMycOZNGjRpRokQJNS1HVlaWzhowIYQQQhRvRSYQg+wZrwsXLugcaWlptGzZEj09PYYMGcKVK1cIDQ3Fzs4OHx8ftm/fztmzZ/n666/JzMzk999/p1mzZqxYsYJx48Zx8OBB3nnnHWbMmAGAvr4+Go2GHj16MGvWLM6ePcvdu3cBGD16NIcOHQLg4MGD1KhRg169epGZmcnnn3/O999/j4+Pzxs/l6SvEEIIIYqmIvVq8smTJ3h6euq0lS9fnoSEBMqXL0+FChWoVKkSlSpVonnz5gC0adOGESNGcOLECRYuXIi7uzvz589n6NChJCcn4+joSKtWrRgzZgx79uxBq9XSrVs39u/fz5YtW5g5cyb6+voANG7cmLZts18jNmzYkLVr13Lnzh0yMjLYuHEjP/zwAz169Mj3/mXXpBBCCFHMKEWEr6+v4u3tnav9xIkTCqCsW7dOycrKyvPaESNGKFqtVklLS3vld4SGhioWFhbK77//rpiamirr169XFEVR4uLiFEA5dOhQvte8jqlTpypArsPef91rXS+EEEKI/15CQoICKAkJCX/at0i9mvxj+opu3brRoEEDJkyYQO/evbG2tqZ9+/bMmzePhw8fqtfduHEDJycnNaP+n7Gzs2PkyJFMnDiRjIyMv+3+pei3EEIIUbwUqUCsefPmREZGqseiRYuA7IXzMTExfP3117i7u/P111/j5ubGpUuXgDdLSZFj/PjxPH78mJCQkL/t/qXotxBCCFG8FOhA7PHjx3z00UdUrFgRY2NjbGxsaNu2LceOHVP7nD9/nm7durF27VoOHjxI+/btmTNnDllZWdja2hIVFYVGo6Fq1aq0a9eO+fPnc+XKFezs7Hj77bcJDAzExcWFW7du0axZMzQaDWvWrNG5j4ULF+Lo6Kh+jo6OZujQoejr6zN48GDGjBmT7zPExsaSkJCAh4fHX/4dJH2FEEIIUTQV6ECsa9eunD9/nvDwcK5fv862bdvw8vLi6dOnQParyAYNGpCamkrTpk1p2bIlP/zwAxYWFkyePFlnrGfPnjF//nwAjIyMqFy5MllZWQD07t2bpKQkHjx4gImJCZMmTSI9PV29Njk5WWes1NRUypQpQ1BQEIaGhkRGRub7DEePHsXQ0JDExEROnTr1l34H2TUphBBCFE0FdtdkfHw8R44cISIigrfffhsABwcHtYj3ixcv6NevHx06dGDz5s34+fkRHx9P/fr1qV+/PvHx8QAcOHAAgA4dOjB//nzatm3L8ePH2bVrl1qAu379+owbN465c+fi4eHB3bt3mT17No0aNeLrr7/OtQ7M0dGRL7/8EoB58+blGYjdvXuXp0+fEhERgYGBAS1btmTu3LmEh4ej1Wr/iZ9MCCGEEIVMgZ0Ry1lwv2XLljyToO7Zs4cnT54wbty4PK/PSaJapUoVAH7++WeSk5Np0aIF69atY8WKFTrlj+bMmUPVqlWJi4sjNTWVqVOn4u/vT40aNdTgLy82NjZYWFjkap8yZQq1a9cmLi6O5ORkwsLC2LRpE0eOHMl3rNTUVBITE3UOIYQQQhRdBTYQMzAwICwsjPDwcCwtLWncuDETJkzg4sWLQPZORwA3NzcAwsLC2LJlS65xKlasCMCWLVv48ccfycrKYvXq1fj5+eXqW7ZsWd5//30SEhKoWLEi3bt3Z/LkyZiamgKos24v02g0fPDBByiKolO6KCwsjN69e+Pv74+iKCiKgqenp85uzT+Sot9CCCFE8VJgAzHIXiP24MEDtm3bRrt27YiIiKB27dqEhYX9pZ2Obdu2pUmTJrnWj/2RsbEx06dPZ/78+Tx58uQv3Xt8fDybNm3SyaTv4+NDcHBwvtdI+gohhBCieCnQgRiAiYkJrVu3ZvLkyRw/fhw/Pz+mTp2Ki4sLwGsX4M4xe/Zs1q5dy/nz51/Zz8fHBwcHBz777LO/dN+rVq0iJSWF+vXrY2BggIGBAePHj+fo0aNcv349z2skfYUQQghRvBT4QOyPqlWrxvPnz2nTpg3W1tbMnTsXyH5tqNFomD17NoD6CnHv3r1A9potjUZD/fr1ycrKonbt2ly4cIFp06ah0WjU9BR79+5Fo9Ggr6/PpUuX+PLLL1mwYEGu+zh06BAdOnTg2LFjLF68mGrVqjF69Gh+//13IDvlReXKlbG0tMTQ0JDKlSszc+ZMmjZt+sa5xyR9hRBCCFE0FdhA7OnTp7Ro0YIffviBixcvcvv2bdavX8/cuXPx9vbGzMyMFStWsHPnTjp37syDBw8wMjJi5syZjBgxgiFDhuiMN3bsWKKjo4mOjubo0aMAGBoaMnr0aKKjozlz5ozat127dmrf+vXr8+jRI52xvvnmG1q2bImhoSFOTk688847jB49mqioKD7//HMiIyO5ceMGrVu3Ztu2bVy+fJmhQ4cyceJEPDw8CA8Pf6OM/B5T9+D46c7/4dcUQgghREFUYNNXaLVa6tevz4IFC/jtt99IT0/H3t6eDz/8kAkTJgDg7e3N8ePHCQoKYt++fWRkZKAoCocPH2bjxo0645UsWRIbGxsA9b/p6elotVr1c46c5LEACxYsoFGjRuq5+/fvM2LECBRFYdu2bQBcv36drVu34uDgQHBwMJMnT6ZatWosW7ZMvW7kyJHs3buX2NhYHj16xK5du+jcufPf/KsJIYQQojApsIGYsbExQUFBBAUFvbJfnTp12Lhxo7qj0dfXl969e2NiYgJk74QEqFmzZq5rN2/ezLvvvqt+joiIwM/Pjy1btlC2bFlKlSpFixYtePLkCVZWVgCsX7+etLQ0Hjx4gK2tbZ739NVXX+XZnpCQQNWqVcnMzMzzfGpqqk6qDklfIYQQQhRtBfbV5F/VpUsXatasydSpU//S9e3ateO7777jwIEDzJkzh8OHD9O+fXs1eLpx4wbm5ub5BmH5WbduHWfOnKFfv3759pH0FUIIIUTxUmBnxP4Xc+bMoUWLFq+sAZmfnj17qn9Xr16dGjVqULlyZSIiImjZsiWKoqDRaN5ozEOHDtGvXz++/fZb3N3d8+0XEBDAqFGj1M+JiYkSjAkhhBBFWJGbEQNo1qwZbdu2JSAg4H8ey8nJCWtra27evAmAi4sLCQkJREdHv9b1hw8fplOnTixYsIC+ffu+sq+krxBCCCGKl38lEPPz89NZi/UyR0dHNBpNriMnDUVUVJROu5WVFW3atNHJA+bl5UV4eDhbt27FxMQEFxcXnJ2d2b59OydOnND5vvDwcOrWrQtAr169ePvtt9mxY4fOvf7xXp48ecKQIUPQaDR8/vnnGBkZUbduXfz9/XM9T07ajJkzZ+Lu7o6XlxeZmZkMGjToL/9+l6e1JWp2x798vRBCCCEKpgIxIzZ9+nQ1XUTOMXz4cJ0++/fvJzo6mj179pCUlET79u11yg1VqVKFtm3bcu3aNQICAli6dCl16tRh0aJFap8xY8YwePBgevToAcDcuXNp0qQJ3t7eLF68mKSkJMzNzdmxYwenT59m3bp1AJQrV46oqCiio6M5f/48CxYs4Pfff2ffvn0cPnyYO3fucOzYMQYPHsyMGTMAuHbtGjdv3qRevXoYGhoSExNDTEwMsbGxb/z7SPoKIYQQomgqEGvEXk4tkR8rKytsbGywsbFh/vz5NG7cmFOnTtG2bXayUwMDA0xMTHBwcKBfv34sXrwYS0tLsrKyADh58iSff/45ixYtYvjw4YwdOxZ7e3uGDx9OSkoKo0aNUgO5NWvWEB8fj52dHZCdjd/BwUG9l6FDh/LNN9+QkJBAly5dSE5OxtHRkXfeeUdd46Wnp0daWhqnT58GUBf3v/3220RERPytv58QQgghCqcCMSP2pnKKcKelpaltbdq0YcuWLSiKwpEjR7h69SqlSpUiNTUVRVFYvXo1Wq2WwYMHA6Aoivq6dPTo0aSnp7Nz50727NnDo0ePSEtLIyoqCgBLS8tc91CqVCneffddYmNjSU5O5sqVK8ybN08NuHLqYYaGhmJhYaEW/n5VEJaamkpiYqLOIYQQQoiiq0AEYuPHj0er1eocR44cybNvfHw8M2bMQKvVUq9ePbV96dKlaLVajI2NadasGVlZWYwYMUI9f/36dSpXroyRkVGuMe3s7DA3N8+3BuS/RdJXCCGEEMVLgXg1OXbsWPz8/HTaypcvr/O5UaNG6Onp8fz5c5ycnFi7di3lypVTz/fp04eJEycSFxfH1KlTadSokU5GfMieBSvIJH2FEEIIUbwUiEDM2toaZ2fnV/ZZu3Yt1apVw8rKKs9XhRYWFuoY69atw9nZmQYNGtCqVSsgO+3E0aNHSUtLyzUr9uDBAxITE3Fxcfl7HugvMjY2xtjYOFf75WltJZWFEEIIUQQViFeTr8Pe3p7KlSvnGYT9kVarZeTIkYwZM0adBevZsydJSUnMmzePkSNH4uzsjImJCeXKlaNOnTro6+vToUMHQDelBsCoUaNYv369On6PHj04d+6czgxbeno6b731Fn369FHbOnfuzOjRo0lISMDW1pYPPviABw8e/B0/hxBCCCGKgH8tEEtISCAyMlLnuHfvHgDPnj1T0zvkHP/rQvXBgwdz/fp1tfh3w4YN8fPzY9KkSaxevZoRI0awceNG3n//fR4+fIirqytXr15Vr89JqQHZqTF69OjB8ePHgez1aCkpKURERKjPMmzYMO7evcuUKVMAuHv3Li4uLrz33nuYmZkRFBTExYsX6dKlyxs/i6SvEEIIIYqmf+3VZEREBLVq1dJpGzBgAABTpkxRA5gcgwcP5uuvv/7L31e6dGn69u1LYGAg7733Hnp6ekRHR1OqVCkqVKjA+PHj0dfXp3bt2mzZsoVOnTrpzHC9nFJj0KBBHD16lO3bt9OoUSOsrKxwdXXl4sWLuZ5p/fr1TJo0iSlTphAeHq62v1xjMj09HUNDw1z3LEW/hRBCiOJFoxT0Fex/k6dPn1KmTBlmzZrFp59++sq+jo6O+Pv762TOt7S0ZMCAAXz++edqm6+vLxcuXCA9PZ2GDRuyYsWKfMeMjY3lo48+4vfff+fo0aN59gkMDGTatGm52u3916FnXEKy6wshhBCFQGJiIhYWFiQkJPzpGu9Cs0bsf3Xz5k0URcHV1VWn3draWk2ZMX78+FzXpaWlERQUREJCAi1atNA5t3DhQq5fv87Tp0/54osv8vze8ePHY2ZmhpWVFXfv3mXr1q353mNAQAAJCQnqkfPqVgghhBBFU7EJxPJz+vRpIiMjcXd313ktmJPbrESJEsyZM4fZs2fTsaPujNTq1avVWpQvry972dixYzl//jx79+5FX1+fvn375ptGQ4p+CyGEEMXLfx6I5VcQPCIiAo1Go9aT/Pbbb/H09ESr1WJpaUmtWrUICgpS+wcGBqo7HQ0MDHB0dOSTTz4hKSkJQE1Z8d5776HRaDAyMsLZ2ZlVq1ZRuXJlNVt/jsGDB5OamkrlypWJi4vLNVum0WgYNmwYL168QE9PDy8vL3bv3q2e/+mnn+jUqRM1atTA1dWV58+fs2bNGnbt2sXJkyff6DeSot9CCCFE0fSfB2KvIyQkBH9/f0aMGEFkZCTHjh1j3LhxapCVw93dnejoaKKiopgzZw7Lly9n9OjRQHZJIsh+Ffnbb79x48YNpk2bxsyZMwkJCcn1nTdv3qRHjx4kJyer9SJz5NSvrFmzJtHR0Rw+fBhFUejUqRO3bt0C4Pnz53h6erJkyZJc17088/Y6ZNekEEIIUTQVikBs27ZtdO/enQEDBuDs7Iy7uzu9evVi5syZOv0MDAywsbGhQoUK9OjRgz59+rBt2zadPoqi0LFjR06ePEnt2rWpWbMmq1ev5urVq+jr66v9Tp8+zQcffEDv3r0JDg7WGePLL78EYMSIEdjY2NCwYUOCg4PJyMhg+fLlQPauTRsbGypVqgTAxYsX6dWrF5UrV6Zhw4Z/+28khBBCiMKnUARiNjY2nDx5kjt37rzRdaampjqFwSF7XVerVq0ICAigRo0anDx5ktu3bzNmzBhmzJgBQEpKCmlpabRq1QofHx/WrFnD8+fPgeyalRMnTgT+f5YNoH379kB2se/U1FRKlCjBpk2baNmyJQBLliyhRo0aHD58OM/s+SBFv4UQQojipkCUONqxYwdarVanLTMzU/176tSpvPfeezg6OuLi4kLDhg3p0KED77//Pnp6eceSP//8M6tWrcq109Hb2xs9PT3S0tLIyMhg0KBBfPPNNzp9WrZsSdmyZdHX18fDwwMnJyfWr1+Pn58fLi4uvHjxQs26D/DixQsmTZqEvr4+e/fuxdjYmOrVq3Pw4EEgez3ZN998k+dauJcFBQXlmb5CCCGEEEVTgZgRa968ea6s+y/n5LK1teXEiRNcunSJkSNHkpGRga+vL+3atVPXXQFcunQJrVaLqakp9erVo2HDhixevFjnu9auXUtkZCQXLlxg3bp1bN26VSevWHx8PJs2bcLHx0dt8/HxyfV6EqBXr15otVpKlizJxo0bCQ4OpkaNGn/5d5D0FUIIIUTxUiBmxMzMzHIV/b5//36ufh4eHnh4eDB06FCGDBlC06ZNOXz4MM2bNwfA1dWVbdu2YWBggJ2dXa7i3pBdszLnu6pWrcpvv/3G5MmTCQwMxMTEhFWrVpGSkkL9+vXVaxRFISsri+vXr+sUBl+wYAGtWrXCwsKCMmXK/M+/Q35Fv4UQQghRNBWIGTGAEydOoK+vr+bqmj17NpC9DisnLcXLR69evYDsBfMajYZp06Zx9epVOnfuzK5du3SCsNTUVObNmwdA3bp1cXR0VHdKbt++nYyMDHUtWXBwMKNHjyYyMpIff/yRrKwsFi5cSNOmTRk4cCCNGjWiRIkSQPbaNWdnZzUIi4qK0rnHkiVL4u7uDvA/FfuW9BVCCCFE0VRgArHg4GCGDx/OTz/9xIMHD/j4448BuHr1Kn379gVgwoQJnD59mh07dlC1alXKlCmDubk5H374IaNHj8bNzY3u3bszbNgwVq9erY7dvXt3tWB3WFgYixcvplSpUvz444/cvHkTgMuXLxMZGcm5c+cYOHAgHh4enDhxgnLlyvHRRx/Rq1cvzp8/z3vvvcdHH330ymfZv38/N2/eZPXq1QwcOBAAf39/vvnmG+7evfvGv01O+gpJYSGEEEIULQUiEMvIyGDt2rV89NFHdOzYkbCwMHXxfrly5ejcuTMAy5Yto0mTJgwaNAhzc3MOHDiAoaEhJUqUQKvVYmRkRGBgIFWqVFHTVuzevZvDhw8TGhoKZK/36tSpE926dWPQoEF4e3tTvXp1QkJCCA4Oplq1ari5uaEoCmFhYfj6+mJgYECXLl148eIFLi4uVK9e/ZXPY2Vlxb179+jUqROjRo0Csgt9DxkyhMmTJ/9TP6MQQgghCpn/fI1YWFgYISEhPHz4EFdXV3x8fPD39ycgIEAtBdS1a1cgO7FrfjsPAwMDCQwMBHTTVmzbto06deqwZs0a7OzsMDMzo3PnzsyYMUPNpr906VI+/fRToqOjMTMzA7Iz+9++fZv+/fsD2a8hc3ZyhoWFYWFh8cpdkF5eXjqljLZs2UKXLl0YNmxYvtekpqbqJHuV9BVCCCFE0VYgZsSCg4PVXYrt2rUjISGBw4cPv/E4mZmZ/PDDD1y8eFFNW3Hr1i2OHj3K5cuX2bx5MwsXLmTDhg0MHTpUva53796kp6ezfv16tS00NJQmTZroLM7/X7i5uQHZ68jyExQUhIWFhXrY29v/Ld8thBBCiILpPw/Erl27xunTp9XF9wYGBvTo0SPPdBH5Wbp0qZq24sMPP+STTz5R13FlZWWh0WhYuXIl9erVo0OHDnzxxReEh4eTnJwMgKWlJe+99566gD8xMZGNGzcyYMCAv+05c2bHXs4/9keSvkIIIYQoXv7zV5M5pYHs7OzUNkVRMDY2ZvHixVhYWPzpGH369GHixImYmppia2urk+TV1taW8uXL64xTtWpVFEXh/v37VKlSBYABAwbQsmVLbt68yaFDh9DX16dbt25/23NeuXIFQC15lBdJXyGEEEIUL//pjFhGRgbfffcdn3/+uU4y1wsXLmBnZ6ez8/FVLCwscHZ2pnz58rky7Tdu3JgHDx6oBcJjYmIYO3YskJ2XrFy5cjRu3JirV6/i6OhIaGgooaGh9OzZk0WLFqGvr6+mvnhZWloalpaW+d6Tn5+fTiqLnHVuOeWR3kRO+gpJYSGEEEIULf9pILZjxw7i4uIYMGCAmqw15+jatesbvZ7MT+/evbGysqJfv37s2bMHd3d39u7dS4sWLYiMjOTEiROMGzeOnTt30rhxY5YtW8aJEycYMGAAISEhjBs3Tn1leffuXSIjI7l79y6KopCZmUlkZKQa5OV4+vQpycnJNGvWjLCwMBo3boyJiQkbNmxgzZo1b/wMkr5CCCGEKJr+01eTwcHBamb6P+ratStz587l4sWL/1PZIK1Wy759+xg+fDgdOnRAo9EwdOhQ5syZo+6adHJywtvbm3v37rF69Wrc3d1JSUkhOTmZ6dOn891333H8+HGWL19OeHi4zvi1atXi0KFDeHl5qW2tWrUCQF9fn8ePH9O8eXPCwsJyVQ8QQgghRPGmUV7OsVCEPX36lDJlyjBr1iyd2pL56du3L+XKlWPevHmMGTOGuLg4nRm6sLAw/P39iY+Pz/N6Pz8/4uPj2bJly2vfY17pK+zt7bH3X4eecXY2f3k9KYQQQhRsiYmJWFhYkJCQgLm5+Sv7/ue7Jv8tN2/eRFEUXF1dddqtra3RarVotVrGjx8PZP+AGzZsUFNq+Pj4sG7dulyvIP/Mjh071LFzjlmzZuXbX9JXCCGEEMVLsQnE8nP69GkiIyNxd3dXZ6NWr15N5cqV8fT0BKBmzZo4ODiwdu3aNxq7efPmOpsQIiMjGTJkSL79JX2FEEIIUbz85+kr/i3Ozs5oNBquXbum0+7k5ASgrheD7LVrv/zyCwYG///zZGVlERIS8ka5xczMzN5oXVh+6SsuT2v7p1ObQgghhCh8CvyM2B/TQOQc7dq1A8DR0RGNRsPJkyd1rvP391cX0Ds6OmJtbY2iKAQEBOQay8/PD4Avv/wSjUbDmTNnMDU1xcPDg2+++YbIyEgiIiI4fvy4es2AAQNITEykdevWhISEkJWVleveY2NjadGiBWZmZpibm9OsWTM1iawQQgghRIEPxCC77FF0dLTO8XKOMRMTE3V9V17OnDlDdHQ0J06cUHN/LViwgMOHD3PkyBEaNWrE1atXAWjdujW1a9fm1KlTODg4MHz4cEqUKEGzZs2wtrbG0dGR6Oho5s+fj6mpKa6urnz88cc0a9aMs2fPqolbHz9+zPHjx2nYsCG7du1i165d+Pj4EBsb+8bPL+krhBBCiKKpUARixsbG2NjY6BylSpVSzw8aNIiTJ0+ya9euPK8vU6YMNjY2NGjQgBUrVgCwcOFCWrVqRfv27QkODmbMmDEAnDx5kp49e+Lh4cGyZctITk5m3759ADg4OBAdHY2VlRWlSpXixYsXLFmyhOTkZI4dO0bdunXp1KkTkL32LDMzk1mzZuHl5UXTpk0ZPHgwLVu2zPc5U1NTSUxM1DmEEEIIUXQVikDsz1SqVIkhQ4YQEBCQ5yvCl1lZWQEQGRlJWloaz54949SpU2og9t1336mZ93PWjaWlpQHZmfjbtWuHoaEhfn5+KIqiHp6enrRv356bN2/y6NEjnjx5wqJFi2jYsCFly5alWbNmHDlyRJ15y4vsmhRCCCGKl0IRiL1OGohJkyZx+/ZtVq5c+bd854sXL5g0aRL6+vq8/fbbf9rfzc2NqKgoAG7dugVAYGAgH374Ibt376Z27dq0bNmSGzdu5DuG7JoUQgghipdCsWuyefPmLFu2TKetdOnSOp/LlCnDmDFjmDJlCj169PjL39WrVy/09fVJTk6mTJkyBAcHv1Zmf0VR0Gg0AOqs3ODBg+nXrx+QnYH/wIEDhISEEBQUlOcYUvRbCCGEKF4KxYxYThqIl4+XA7HFixfj7+/PqFGjSE5OZunSpUB2ge+XC3MnJiaqa8TKlSuHjY0NrVq1YtOmTeQUGLC3t+f9998nJiaGmJgYfH19gexM+qtWrVLHCgsL0xn7ypUrVKpUCQBbW1sAfvzxR+zs7NBoNGzZsoWqVaty9+7dN35+KfothBBCFE2FIhB7XVqtlsmTJzNz5kyePXumcy4+Pp5GjRqxZ88eAA4fPsxPP/1Ejx49GDduHAkJCQAYGRlhaWlJmTJlXvt7Dx48yKVLl+jatSuQnS7DysoKMzMzlixZova7fv06Dg4Ob/xcsmtSCCGEKJoKRSCWmpqqzlDlHE+ePMmz76BBg7CwsNCZvQKYMGECUVFR6itONzc3XFxc+PDDD4mMjESr1b7RvcTFxam7Ir29vXnnnXfo27cvABqNhkmTJnHp0iUyMzMBWLVqFVevXn2jhLBCCCGEKNoKxRqx3bt3q6/7cri6uua5A9HQ0JAZM2bQu3dvtS0rK4s1a9bQp08frK2tc13zukHYy/eir69PVlYWhw4dYtGiRfj6+qKn9/9xrb+/PykpKXzyyScAXLx4kX379lG5cuV8x86r6LcQQgghiq4CPyMWFhamkyYi58gJwqKioqhQoYLONb169UJRFD799FMAnjx5QlxcHG5ubnh5eaEois76rhyKomBtbc3SpUtz7dIcMmQIJUqUUL9/xYoVmJubs2/fPvr166cThOX49NNP1Z2Ps2fPpkmTJq98VklfIYQQQhQvBT4Q+zvkLMR/XX369MlVrHv69On/0N39P0lfIYQQQhQvheLV5J8xNzdXF9u/LD4+HgsLC8qUKYOlpeUrk6m+zMLCIlex7rJly/4t9/oqkr5CCCGEKF4KzYxYTEwMw4cPx8nJCWNjY+zt7enUqRMHDhzA1dWVc+fOcfz4cTp06ECpUqUwMTFh2rRpGBsboygKPXv2ZOXKlTx48EBNJ5EjKSmJjIwMAFJSUtTi3y8fv/32W657UhQFIyMjPDw8cp2LiopiwIABakqLIUOGMHXqVDVL/5uQ9BVCCCFE0VQoArGoqCjeeustDh48yLx587h06RK7d++mefPmDBs2jI8++oirV6/SpEkTTE1NCQ0NZcyYMTx79ozo6Gh69uzJZ599hr29PfXr1wfg3r173Lhxg5CQEGrVqkVSUpLOd+7fv1+nyLijo2Ou+0pJSaFVq1Y8efKE77//nsjISLXo9/nz53n8+DHjxo0DoGPHjnz11Vd8/PHHb/z8kr5CCCGEKJoKxavJoUOHotFoOH36NGZmZmq7u7s7/fv3x9DQEFNTUywtLTly5AgHDhzAzc2NDRs2oK+vT+fOnXn//fc5efIks2fPZvbs2YwaNYqZM2dSvXp15s2bh4WFhc53WllZYWNjo37W19fXOa8oCmlpafz4448AauqKypUrc/PmTUqVKsX27dvZvn07ACEhIQCsXr2a5cuX//0/khBCCCEKnQI/IxYbG8vu3bsZNmyYThCWw9LSkr1795KQkMCWLVt49OgR8fHxnDx5knfffZdOnTrh4uLC6tWrsbCwUMsLrV+/npiYGPbt28e7776rlidas2YNAJ07d6Zs2bI0adKEbdu24efnR3x8vPq9Dg4O2NjYkJGRwaVLlyhZsiRJSUncvHkTQN2d+fIxceJEXF1d833W1NRUEhMTdQ4hhBBCFF0FPhC7efMmiqLg5uaWb5/r168DULVq1TzPu7m5qX3+jFar5fPPP2f9+vXs3LmTJk2a8O6777Jt2zadfsHBwfTs2RN9fX08PDxwcnJi/fr1r3yOr776isGDB+fbR9JXCCGEEMVLgX81+SapJ940TUVerK2tGTVqlPq5bt26PHjwgHnz5tG5c2cgezfmpk2bOHr0qNrPx8eH4OBg/Pz8co35+++/065dO7p168aHH36Y73cHBATofHdiYqIEY0IIIUQRVuADsSpVqqDRaF6ZesLFxQXILrzdqFGjXOevXLlCtWrV/vI91K9fn3379qmfV61aRUpKirrwH7KDwKysLK5fv67eD8CDBw9o3rw5jRo1+tO1YZK+QgghhCheCvyrydKlS9O2bVuWLFnC8+fPc52Pj4+nTZs2lC5dms8//zzX+W3btnHjxg169eoFwIkTJwCYMWNGrr7JyclMnToVFxcXjI2Nsba2plu3bhw6dEinxNJnn30GQGZmJoqiULZsWXr37k2jRo0ICQnh6dOntGvXjnLlylG+fHnu37+PVqvNtTPzdUn6CiGEEKJoKvCBGMCSJUvIzMykXr16bNy4kRs3bnDlyhUWLVpEw4YNMTMz45tvvmHr1q0MGjSIixcvEhUVpb4qfP/99+nevTuQvbYL4PLly+zdu1fNnH/69GmaN2/OV199Rfv27dm1axdLly7ll19+YePGjXTo0AGAyMhIoqOjcXZ2Jjo6mjt37rBgwQI2bdqEnp4e4eHhZGVl8fbbb2NsbEzjxo0JDQ1l7969+Pr6EhMT88bP/3L6CklhIYQQQhQdGuXvWFj1L4iOjmbmzJns2LGD6OhoypQpw1tvvcUnn3yCl5cXAEeOHGHmzJmcOHGClJQUqlSpQr9+/fD390dfX5+kpCRsbW1fOTM1ffp0Vq9ezZ07dzAwMMDNzY0nT55gYmLC5cuXGTFiBGvXrsXOzo7IyEj1ukGDBrFlyxaePn3K5s2biY2NpV+/fnl+x+v+5ImJidmL9v3XoWdcQm2XmTEhhBCi4Mr59zshIQFzc/NX9i00gdjfISQkhGXLlnHmzBl27NiBv78/N27cQKPR4OnpiY2NDXv27Ml13apVq+jTpw/nz5+nZs2aBAYGsmXLFp1AbOTIkfzwww88ffo01/UPHjygd+/eVKhQgR9++CHf+0tNTSU1NVX9nLNYXwIxIYQQovB4k0CsULya/LsEBwfj4+MDQLt27UhISODw4cNAdgqM/NJf5LTnlwLj559/ZtWqVbRo0UKnvVevXpQoUYLy5ctjbm7OihUrXnl/kr5CCCGEKF6KTSB27do1Tp8+rS7aNzAwoEePHuqaMfjzV4ZGRkbq35cuXUKr1WJqakq9evVo2LAhixcv1um/YMECzp07x9atW/ntt990UlPkJSAggISEBPW4d+/emz6mEEIIIQqRAp++4u8SHBxMRkYGdnZ2apuiKBgbG7N48WKqVKmi1on8o5z2l9NSuLq6sm3bNgwMDLCzs9MJ0nLY2NhgY2ODm5sbpUuXpmnTpkyePFlnB+bL8ktfcXla2z+d2hRCCCFE4VMsZsQyMjL47rvv+Pzzz9VdkpGRkYSHh5OcnEzjxo3p1asX+/fv58KFC0RFRaHRaIiMjCQrK4s5c+YAUL16dX7//Xcge3bM2dkZY2NjSpQogUajISoqCoALFy7Qq1cv7O3tMTU1pWrVqqxbtw5AZw2YEEIIIYq3YjEjtmPHDuLi4hgwYIBOce+FCxfy1ltvcf78eXr06MHWrVvp1KkT48ePB+CXX35h2rRp3L59G4Dy5cvz3Xff6YwdHh5O+fLluXv3rtoWGhrKkydPmD59OpUrV2bbtm188cUXODk54ejo+Mb37zF1j85ifZAF+0IIIURRUCxmxIKDg2nVqpVOEJaUlMTatWsZP348WVlZLFy4kAMHDtC3b1/mzZsHZJctunz5srqT0tfXl9DQUJ2xQ0ND8fX11Wnz9vbm+fPnfPLJJ7Rt25Zt27ZRs2ZNndeieZGi30IIIUTxUiwCse3bt7Nzp24i1HXr1uHm5ka3bt3Yvn07u3btokSJEnz22WdEREQA8NVXX3Hv3j327t0LQOfOnYmLi6NVq1ZERkZy9OhR4uLi6NSpk87YzZs35/jx48THx5OcnMz169epVq0a5cqVe+V9yq5JIYQQongpFoFYXl6VyiJHkyZN+PHHH0lISADA0NAQHx8fQkJCgOy8ZD4+PhgaGr7yu44fP87atWsZNGjQK/vJrkkhhBCieCmWgdjrpLLI0bx5c0aMGKF+7t+/P+vXrycmJob169fTv3//V37X5cuX8fb2ZurUqbRp0+aVfY2NjTE3N9c5hBBCCFF0FfjM+hERETRv3jzf815eXoSGhlKpUiW1zdDQkIoVK+Ln58fEiRPRaDQ4Ojpy586dfMfRaDSYmJiQnJystunp6VG+fHlat25NSEiImlm/Zs2aREdHk5CQQFpaGr169WLVqlXcvn1bZzH+yZMnadGiBXp6eqSnp+Pg4MDChQvVupV/5k0y8wohhBCiYHiTf78L/K7JRo0aER0dnat927ZtDBkyhKFDh6pt+/fvx93dndTUVI4ePcrAgQOxtbVlwIABnDlzhszMTDIyMqhevTrx8fFs374drVYLZM9GffDBB/z222/MmzePsWPHsnPnTjIyMujbt6/Od7///vtMnjwZX19fLly4kOd9R0ZG0rRpUypWrMh3331H+fLluXPnDpaWlm/8G8iuSSGEEKJoKvCvJo2MjNTEqDlHXFwcY8aMYcKECXTr1k3ta2VlhY2NDQ4ODvTp04fGjRtz7tw5AMqUKYONjQ1nz57l+fPnQPYaMC8vL7y8vGjYsCFdu3YFUKNXGxsb3nnnHVq3bq1zT59++imPHz9mxYoVOjsxc1y+fJmmTZtiYmJCREQElStXxsTEhGrVquHp6fmP/E5CCCGEKHwKfCD2R/Hx8Xh7e+Pl5cWMGTPy7Xf27Fl+/vln6tevr9MeHBxM7dq187wmJxB78eKF2nb9+nWOHz+u08/AwABra2sMDPKeUNywYQNJSUkkJSVRsWJFbG1tsbW1xcXFhczMzHzvWdJXCCGEEMVLoQrEsrKy6N27NwYGBqxcuRKNRqNzvlGjRmi1WoyMjKhbty7du3fP9Vpx+/btzJ49O8/x69WrB2TvXjQzM6NBgwa4urpSs2ZN0tLSqFmzZp7XlSlTBkVR1PVhgYGBuLq6YmxsTP/+/Tl79ixr1qxBT0+Pzz77LN/nk/QVQgghRPFSqAKxCRMmcOLECbZu3UrJkiVznV+7di2RkZFcuHCBdevWsXXrVj799NM3/p4FCxao4+zYsYPr16/zwQcfvNEYWVlZlC1bluXLl/PWW2/Ro0cPJk6cyNdff53vNZK+QgghhCheCvxi/Rxr1qxh/vz57Ny5kypVquTZx97eHmdnZwCqVq3Kb7/9xuTJkwkMDMTExOS1v8vGxkYdx9XVlWfPntGrVy8+++wztf3P2NraYmhoiL6+vtpWtWpVYmJiSEtLy7NIeH5Fv4UQQghRNBWKGbHIyEgGDBjA7Nmzadu27Wtfp6+vT0ZGBmlpaX/pex8/fsxHH33Exx9/DED9+vVp27Ytx44dA8DR0ZH79+/nea2HhwcHDhxQNwsAXLx4ESMjI2rWrJnvdXm5PK0tUbM76hxCCCGEKPwK/IzYkydPePfdd/Hy8sLHx4eYmBid8y/POD19+pSYmBgyMjK4dOkSX375Jc2bN3/jHFzx8fHExMTg7e3Ns2fPMDc3x8LCgu+//57Dhw/z9OlTIiMjSUtLIzMzk8ePHxMZGYmRkRHVqlUDoE+fPixdupS5c+cyffp0zp49y6RJkyhXrhxHjhzBysrqte8nr/QVICkshBBCiMKuwAdiO3fu5M6dO9y5cwdbW9tc5x0cHNTakK1atQKygzNbW1s6dOjAzJkz3/g7+/Xrp/5tZWVFq1atmDVrFk5OTjRq1AhAZ6PAqlWrWLVqFQ4ODkRFRQGoBb5//fVXatSoQVZWFhUrVuTcuXN5prwQQgghRPFT4F9N+vr6oihKvkdUVBSOjo46bRkZGdy7d4/ly5dTpkyZXGN6eXmhKEqeyVVzxkhPT0er1fLBBx8QHh6Ok5NTrn4ODg4sWLBA517+aOLEiZQtW5Z33nmHX3/99ZVBmKSvEEIIIYqXAh+I/VcMDAwICwsjPDwcS0tLGjduzIQJE7h48eIbjdO3b1+cnZ1Zv379ny7El/QVQgghRPEigdgrdO3alQcPHrBt2zbatWtHREQEtWvXJiws7LXH6Ny5M0eOHGHTpk1/2lfSVwghhBDFS4FfI/ZfMzExoXXr1rRu3ZrJkyczcOBApk6dip+f32tdP3HiRGrUqEHv3r1RFIXu3bvn21fSVwghhBDFS6EPxPz8/IiPj2fLli359rl//z5OTk64uLhw+fLlXOdzFt6fOHGCBg0aqO2pqanY2dkRGxvLoUOH8PLyolq1amzZsoVDhw7x6NEjJk6cyIQJE3B0dKR9+/aMGjWK8uXLc/LkSSB7A0FycjLW1tZqMNajR483esbL09q+8c5PIYQQQhR8hT4Qex1hYWF0796dn376iVOnTuWqPwnZyWBDQ0PVQOzp06c0a9ZMDdKio6NZv349c+fOxdXVlVatWlGiRAk6duxI3759iY6OZseOHYwfP56vvvqKn3/+GYD58+fTtGlTduzYwSeffELv3r3JysqiV69er33/+aWvAElhIYQQQhRmGkVRlP/6Jv4XfzYjpigKzs7OLF26lEOHDhEbG8vy5ct1+mg0GiZNmsSiRYuIiYnB1NSU1NRU3NzcSElJISYmBhMTExwcHGjbti3Lli1j2LBhbN68mTt37uT6zu+//54mTZpQqVIlzp8/r9ao7NixI48ePeL8+fN899139O7d+5XPlpiYmL1o33+dBGJCCCFEIZHz73dCQsKfvtEq8ov1Dx06xIsXL2jVqhU+Pj6sWbOG58+f5+r31ltv4ejoyMaNGwF4+PAh0dHR/PTTTwD8+OOPXL16FUdHR9LT0xk3bhxRUVF5ptTw8fFRU2q8XCg8ISGBt99+m4yMjDyDMElfIYQQQhQvRT4QCw4OpmfPnujr6+Ph4YGTkxPr16/Ps2///v0JCQkBsl9ndujQIVceshs3bmBubp5nctlXWbduHWfOnNFJFvtHkr5CCCGEKF6KdCAWHx/Ppk2b8PHxUdt8fHwIDg7Os7+Pjw8nTpzg1q1bhIWF0b9//1x9FEXRyar/Og4dOkS/fv349ttvcXd3z7efpK8QQgghipcivVh/1apVpKSk6CzOVxSFrKwsrl+/jouLi05/Kysr3nnnHQYMGEBKSgrt27fn2bNnOn1cXFxISEggOjr6tWbFDh8+TKdOnViwYAF9+/Z9Zd/80lfIrkkhhBCiaCr0M2JHjx5l69atDBkyJNe5wMBAADp06ECdOnWoV68eFy5coGnTpuoryKVLlwLZxcUjIiLYsGEDERER9O3bV6egeM+ePVm4cCHvv/8+RkZGfPDBB3h5eWFubo5GoyE+Ph5A/S/Atm3baNWqFRkZGYwbN44BAwaQlJT0z/wQQgghhCh0isSMmLGxMStXrsTPzw8TExMgO7B6/Pgxtra2lC5dmiVLllC9enWOHTtGr169mD59OgMGDGDcuHEAWFtbq+PdvHkz3/VZ9vb2LFiwgI8//pi33nqLnj178u2333Ly5Ek2b96MVqvl888/59ChQ7z33ntYWVkRGhpKeno6/v7++Pr6qhsCXpekrxBCCCGKpiIRiKWmppKamkrDhg3VtmbNmmFsbEy9evWA7ADqyy+/5OOPP+bAgQM8evSIrl270qZNGzZv3qwznpWVFUZGRvl+39ChQ3FxcWH+/PmsWbMGgJEjR9K5c2dGjRoFwKJFi8jMzOTRo0d07Pj/wVJUVBQPHjzAzs4u3+fIIbsmhRBCiKKt0L+abNKkCd7e3nzxxRe0bNlSTSFhaGjI7Nmzdfr6+vrSsmVLxo8fz8KFC4mJieGbb75BURTefffdPMe3tLREURR1pi1Hq1at2L17N9u2bQPg1KlTzJs3T1031qlTJ/XanCM9PR19fX1OnTqV53fJrkkhhBCieCn0gVgOHx8fjh49yp07d7hz5w7Hjh3T2S2ZY/ny5Vy+fBl/f3+WL1+eKz0FQIUKFdBqtTrH3bt33+h+YmJiKFu2rE6bgYEBpUuXJiYmJs9rZNekEEIIUbwUiVeTAGXKlKFjx46EhYWhKAodO3bUWfeVo2zZsgwePJgtW7bkOwt25MgRSpYsqdPm5eX1D9y1Lin6LYQQQhQvRSYQg+yErB9//DEAS5Ys0Tl34sQJmjRpQrt27ahbty4GBtmPHhUVRaVKlShTpgxhYWEAVKpUCUtLS2rWrMm7775LYGCg2v+XX35h2rRpHDp0iMTERHVG7cWLF1haWqrfd+3aNW7duoW5uTnPnj0jLi4OrVZLbGwsNjY2b/Rckr5CCCGEKJqKVCDWrl070tLS0Gg0tG3bVudccHAww4cPJzg4GDc3t1zXPnv2jLVr175y/KioKOrXr0+rVq3YuXMn5cqVIzQ0lGnTptGlSxeOHDmiLvK3s7MjIyMDX19fFi9eDMDBgwfJysrKs+j4q7xq1yTIzkkhhBCisCpSgZi+vj5XrlxR/86Rnp7Oxo0bOXv2LDExMURGRua6dvjw4Xz11VevHH/NmjVUrVqVTZs28ejRI2JiYqhQoQIAp0+fZuzYsUydOpXSpUsTFBREZGQke/bsAeDkyZOMGDGCnj175rljUgghhBDFT5FZrJ/D3Nw812u8qKgo3NzccHV1xcfHh/Pnz+e6rlevXpQvXz7fcdPS0nj48CGjRo1CT0+Pr7/+mlq1avHhhx+qfRYtWqTuogRYuXKluvOxe/fuNGnShOXLl+f7HVL0WwghhCheCn0gFhYWxpYtW/I9n3MuZwdlu3bt0NfXZ+HChTr9NBoNS5YswdDQkKdPn+YaZ8GCBQBUrVoVyM7a/3JqihEjRmBqaoqfn596TenSpZk8eTIAd+/eJSQkBK1Wm++9SvoKIYQQongp9IHYn7l27RqnT5+mV69eQHYKiR49euRZ+Ltt27Y0adJEDZ7yoijKP3avkr5CCCGEKF6K1BqxvAQHB5ORkaGzLktRFIyNjdVF9C+bPXs2DRs2ZOzYsTrtOQXCr1y5Qq1atXJdd+XKlVxFxN+UpK8QQgghihmlkPL19VUAZfDgwbnODR06VAGUDz74QClXrpxSp04dBVC6deumXLp0Sbl06ZJSuXJlZdmyZYqPj48CKJ06dVKvd3BwUAAFUPT09JTKlSsrgYGBipubm1KnTh3l+fPniq+vr+Lh4aHo6+srXl5eikajUWbPnq1zH4cOHVKcnZ0VQHF0dFRCQ0Pf6BkTEhIUQElISPhLv5EQQggh/n1v8u93oZ4Rs7e3Z82aNSxYsABTU1MAUlJSWLVqFRUrVuT+/fvExcXRokULHj58yN69ewkPD8fU1JSuXbvy7bffcuPGjVzj1qpVi7t372JsbMzgwYNxdXVl2LBhDBo0iO+//54ePXpgaGhInz59WLNmDadOnaJhw4b4+/urY5w+fZr27dvTtGlTbt68ibe3NwMGDECr1fL++++/0XNK+gohhBCiaCrUa8Rq166Nvb09mzZtUts2bdpExYoVqVWrFjdu3KBVq1YYGRnl6tu1a1fOnTuXZ3JVCwsLKlasSEpKCpaWlnz00Ue0atWKCxcucPLkSYyNjTl8+DBTpkzh1q1b2Nvbs2/fPp3Xip988gkpKSns27cPgC+//JKsrCymTZv2D/8qQgghhCgsCnUgBtnZ9ENDQ9XPISEh9OvXD4CWLVuyc+fOPPvWq1ePli1bMnToULy9vSldurTOuDVr1kRRFAIDAwEwNTUlLS2N6tWrs2HDBp4+fUpaWhrvvfceVatWpUQJ3RkrfX19Ro4cqbOzMiQk5JU1KyV9hRBCCFG8FPpA7HWLfb9p3xyKorB//3727NlDixYtXvu+YmJiKFeunE5buXLlSExMJDk5Oc9rJH2FEEIIUbwU6jVi8PrFvt+0744dO9BqtaSnp5OVlUXv3r3V2bF/SkBAAKNGjVI/JyYmSjAmhBBCFGGFPhCDVxf7/qt9mzdvzrJlyzAyMsLOzk4t+v26bGxsePjwoU7bw4cPMTc3VzcW/FF+6Suk6LcQQghRNBXYQMzPz4/4+Hg1M35MTAxBQUHs3LmT+/fvo9FoKFGiBMuWLcPHx0ct9v3RRx/prMMKDw+nRIkStG7dmtjYWHbt2sW9e/fIzMxk8ODBdOnShfT0dLV/VFQU4eHhAFSpUgVDQ0MqVqyIn58fEydORKPRANmZ9V9eeO/o6EiXLl2YMWMGWq2WypUrExYWxsaNG3ny5AmOjo6UKFGChg0b/gu/nhBCCCEKgwIbiL3s1q1bNG7cGEtLS2bNmkX16tWZNGkS9+/fZ8eOHZQvX14t9l2jRg2mT5/OsWPHsLCw4Msvv8Tf35+UlBQePHhATEwMK1euxNXVldjYWIYMGUJSUhJt2rTR+c5GjRqxceNGUlNTOXr0KAMHDsTW1pYBAwYA8PjxY5ycnHB2dubZs2d4e3sTGBjIixcv+Oabb3Bzc+P58+e0b9+e/v37s3LlSsLDwxk6dOgbP/+fpa8ASWEhhBBCFEaFIhAbOnQoBgYGnD17FjMzMwBKliyJra0tW7ZsQVEUdaYq55yJiQmmpqbY2NhgYmJCSkoKHh4ebNy4UWfsmTNn0qNHD7KysnTajYyM1NQWDg4OhIaGcu7cOTUQW7lyJQkJCdy6dQuAEydOALBt2za++eYbxo8fT/369fnkk0945513qFChAi1atFADRiGEEEKIAh+IPX36lL179zJr1iw1CIPsYt85Xg7CcrxcCPzlvn+UkJCAlZUV3333nU57TpFvgLNnz/Lzzz/Tt29ftc3f358tW7YQGRmpto0cOZIffvhB/ezl5cX58+fVzz4+PqSkpOR7L6mpqaSmpqqfJX2FEEIIUbQV+PQVN2/eRFEUXF1dddqtra3RarVotVrGjx+vc278+PHqOa1Wy6JFi/Ic+8mTJ8yYMYNBgwblOteoUSO0Wi1GRkbUrVuX7t276wRif/Tzzz+zatWqfFNcHD9+nLVr1+b5XTkkfYUQQghRvBT4GbH8nD59mqysLPr06aMziwQwduxY/Pz81M95pahITEykY8eOVKtWLc+0FGvXrqVq1aqkp6dz+fJlhg8fTqlSpZg9e7ba59KlS2i1WjIzM0lLS6Njx455FhK/fPky3t7eTJ06NddatJdJ+gohhBCieCnwgZizszMajYZr167ptDs5OQHkmQrC2toaZ2fnfMd89uwZ7dq1o2TJkmzevBlDQ8Ncfezt7dUxqlatym+//cbkyZMJDAzExMQEAFdXV7Zt24aBgQF2dnYYGRnlGufXX3+lZcuWDBo0iEmTJr3yWSV9hRBCCFG8FPhXk1ZWVrRu3ZrFixfz/PnzXOevXr3Kl19+iUajwdDQkHv37rFs2TJCQkJ0FuA7OjqycOFCEhMTadOmDUZGRmzbto3Zs2dTs2ZNtd/ChQuB7MLf+vr62NvbM2jQIFJTU8nIyCAtLQ3ITqfx+++/06hRI9zc3HBxcaFHjx48evRIHatPnz54enry5MkTnVJLQgghhBBQCGbEAJYuXUrjxo2pU6cOgYGB1KhRAz09Pc6cOUNCQgKOjo6cOHGCzMxM6tati7OzMyNHjmTDhg3qjBVASkoKbdq04cWLF/zwww8kJiaSlJREeno6mZmZ6Ovrq9+5bt06nJ2duXr1KiNGjOD58+c0b94cc3NzHj9+zHfffYeJiQl79uzB0tKSqKgotm3bpgaLly9fZvPmzdSqVQsHBwd+/fVXYmJi0NfXp0yZMm/0/K+TviKHpLEQQgghCo9CEYhVrlyZ8+fPM2vWLAICArh//z7GxsZUq1YNd3d3bGxs1FQTRkZGtG7dmtGjR9OyZUvCwsIYOHAgAPfv3+fUqVMAuV5d3rt3D0dHR/Vz9+7dgezi3aampmRmZrJ27VoAjh07RkpKClWqVKFWrVoAVKpUiebNm6vXb9iwgeTkZM6cOcOZM2cAsLW1xcHBgaioqDyfU3ZNCiGEEMVLgX01GRYWppOCwtbWlq+++opbt26RlpbGs2fPOHXqFB4eHjrlh6KiovD396dFixZ4enqyadMm9ZyzszOKougcU6dOxdPTUw3CLC0t8fT0VM/fvHkTBwcHSpUqpc5k2djYoCgKkyZNQlGUPO8/MDAw13coipJvEAaya1IIIYQobgpsIPZ3cHNz0wl8/pjWQqvVMmvWrFzX5eyGNDU1pVKlSvzyyy86KTIaNGjAhAkT6N27N9bW1rRv35558+blqi35pgICAkhISFCPe/fu/U/jCSGEEKJgK9KB2B8z7o8dO5bIyEidY8iQIbmuc3V1JTIykjNnzjB+/Hjatm3L8OHDdfrMnDmTmJgYvv76a9zd3fn6669xc3Pj0qVLf/l+jY2NMTc31zmEEEIIUXQVijVif9WVK1eoVKmS+nnv3r1cvnxZ55Vn6dKl1b/Pnz/PunXruHHjBh4eHtjb2+Pl5UVKSgrTpk1jwIABVKpUiTJlyvDbb79hZWVFt27d6NatG3v37uXZs2fMnz+fFStWMGnSJHbt2sWtW7fQ09PD0NCQBw8eYGdn98bPIekrhBBCiKKpyAZiBw8e5NKlS3zyySev1X/Hjh107doVR0dHKlasyP79+3n06BHr169HX1+f+fPn88477wCoAde0adPU6/X09ChVqhTPnz/nxYsXnDt3jsmTJ+Pp6cm8efNYvXo1nTt35uzZs2/8LLJrUgghhCiaikQglpqaSkxMDJmZmTx8+JDdu3cTFBTEO++888qyRDmysrLo168fHTp0wNPTky1btlCpUiUqVapE/fr1iY+Pp23btixZsgSADh06MGvWLKpUqUK9evVQFIVHjx4RExPDpEmTsLCwYN++fdy8eZOkpCQMDAywtrbm559/5scff6Rly5Z5Jn8VQgghRPFSJAKx3bt3Y2tri4GBAaVKlcLT05NFixbh6+uLnt6fL4N79uwZT548Ydy4cezZsyfXeUtLSz755BN8fX0B8PPz4/DhwwwfPpzU1FSMjY1JTU2lc+fOfPDBB+p1AwcO5PDhwzpjdejQgdu3b+ukysgh6SuEEEKI4qXQL9YPCwtT00Skp6fz6NEj9u3bR79+/XSCsKioKKpVq5br+sDAQD766CMge5dlYGAgkZGRufr17NlTLbNkb2/PypUref78OZcuXSIuLg4XFxedDP0AERERKIpCcnIytWvXpnfv3iiKkmcQBpK+QgghhChuCn0g9nfILxfYq7Rt25YmTZowefLkV/ZLT0+ne/fuKIrCsmXLXtlX0lcIIYQQxYsEYoCLiwuQXbfyTcyePZu1a9dy/vz5PM/nBGF37txh3759f7rzUdJXCCGEEMVLkVgjFhMTw8yZM9m5cye///47ZcuWpWbNmvj7+9OyZUscHR3x9/fPdV1gYCBbtmzh2LFjWFtbM3ToULRaLZcvXwbgrbfeYtasWbi4uGBpaalel1PWKEfr1q2pUKGC+lmj0bB+/XpWrlzJjRs3OHToEFZWVvj5+REfH6+TPuN1SPoKIYQQomgq9IFYVFQUjRs3xtLSknnz5lG9enXS09PZs2cPw4YNyzXLlZCQoK4Bi4mJITk5mdjYWFasWMF7772Hu7s7QUFBVKlShYULF9K0aVPatWvH1q1b1TEaNWrExo0bAfjtt9/w8vJSi33nmDt3LtHR0ezYsYPMzEz1u7Kyst74Gd8kfQVICgshhBCisCj0gdjQoUPRaDScPn0aMzMztd3d3Z3+/fvn6h8REZFrRmvatGmsWLGCU6dOERQUxJQpU0hMTMTe3h5FUWjSpIlOfyMjI7XIuI2NDf3792f58uU6fXIKff9xAX/jxo3/8rMKIYQQomgp1GvEYmNj2b17N8OGDdMJwnK8/DoRdHdYvlyMe8WKFQDUqVOHjRs38ujRI1JSUjh37hz6+vpUrVoVAEdHR3x9fTl//jxly5bF1dWVjz76iFmzZqEoCoGBgep3bd68OVeBcV9fX6ytrfN9ntTUVBITE3UOIYQQQhRdhXpG7ObNmyiKgpub25/2HT9+PJMmTdJpS0tLyzOlxcvX2NnZ0apVK7WtXbt2vPfee1SqVInffvuNCRMm0L59e06cOIG+vr7ar1evXjqfITvQ6tgx/9eGQUFBOtn6hRBCCFG0FepA7E3STowdOxY/Pz+dtkWLFvHTTz/l2X/27NmsWbOGiIgITExM1PaePXuqf1evXp0aNWpQuXJlIiIiaNmypXpuwYIFOgEcZAd2mZmZ+d5jQEAAo0aNUj/nvB4VQgghRNFUqAOxKlWqoNFoXivthLW1Nc7OzjptLxf8ftn8+fOZPXs2+/fvp0aNGq8c18nJCWtra27evKkTiNnY2OT6vpIlSxIfH5/vWMbGxhgbG+dql12TQgghRNFUqNeIlS5dWq0B+cddi8Arg578zJ07lxkzZrB7927q1KmDn58f7777LpBd2kij0aDRaDA0NKRcuXI0bdqUp0+fUq5cuTzHUxSF9u3bo9FouHv37hvfjxBCCCGKrkI9IwawZMkSGjduTL169Zg+fTo1atQgIyODffv2sWzZMq5cufLaY82ZM4cpU6awatUqHB0d1ZQTGRkZQHaCVkdHRxYvXoyVlRWRkZHMmDEDgGXLlvHOO+9gYKD7ky5cuBCNRvM/PaOkrxBCCCGKpkIfiDk5OXHu3DlmzpzJ6NGjiY6OpkyZMrz11lt/WlLoj5YtW0ZaWhrvv/++TrurqyuQnaj1+fPn9OvXj/j4eOzs7OjYsSNt2rShW7duhIWFMXDgQPW6yMhIPv/8c86ePYutre3//rBCCCGEKFI0yl8ptFiMvJwN/1WZ8WvWrImdnR27du0C4MWLF9SpU4egoCC8vb3RaDRs3rxZfc2Zl9TUVFJTU9XPOYv17f3XyYyYEEIIUUgkJiZiYWFBQkLCn67xLtRrxAoSNzc3oqKi1M+ffPIJjRo1wtvb+7XHCAoKwsLCQj1kx6QQQghRtEkg9jdRFEVdC7Zt2zYOHjzIwoUL32iMgIAAEhIS1OPevXv/wJ0KIYQQoqAo9GvECoorV65QqVIlAA4ePMhvv/2WK7N/165dadq0KREREXmOIekrhBBCiOKlWMyIxcTEMHz4cJycnDA2Nsbe3p5OnTpx4MABILt0UX6zV0lJSWzdulUtFJ5j48aNeHl5YWFhgampKZcuXcLQ0JDY2Fg+/fRTwsLC8PDwwMzMTM2w37lzZ0JDQ//JRxVCCCFEIVLkZ8SioqJo3LgxlpaWzJs3j+rVq5Oens6ePXsYNmzYayWDfVlqaiojR45k8eLF9OnTB1dXV1auXEn9+vXRaDR8//33jBw5kurVqzN+/Hhq1KiBmZkZlSpVYteuXbRv355Bgwa90Xe+afqKHLJoXwghhCjYinwgNnToUDQaDadPn9YpDO7u7k7//v3feLzdu3eze/du9PT02L17N56ennz11Vf4+vqip6enJpGtVasWtWrV0rm2Vq1aHDlyJN9ALK9dk0IIIYQouor0q8nY2Fh2797NsGHDdIKwHH9cw5WX+fPnq3+HhYUxYsQItFotKSkpPHr0iH379tGvXz/09PReOea5c+eIiori7bffzve7ZNekEEIIUbwU6UDs5s2bKIqCm5vb3zbmjRs3cHJywtDQ8LX6V6hQAWNjY+rUqcOwYcN0Er7+keyaFEIIIYqXIv1q8p/IVfumYx45coSkpCROnjzJp59+irOzM7169cqzb367JoUQQghRNBXpQKxKlSpoNJo3XpAfExPDzJkz2blzJ/fv3wdgxIgRTJ06FRcXF/bs2ZOrfmT58uXVvo6Ojty5cwcAExMTypUrR7169fD29iYwMDDfQCw/kr5CCCGEKJqKdCBWunRp2rZty5IlSxgxYkSudWLx8fG51nT9cZdlqVKlaNmyJXXr1mXYsGGEh4ezaNEi2rdvT0hIiHpdToqKnMX606dP58MPPyQtLY2oqCh++OEHvv3229dal/ZHf3XXZF5kJ6UQQghRcBTpNWIAS5YsITMzk3r16rFx40Zu3LjBlStXWLRoEQ0bNlT7/f7770RGRuLj40N6ejorVqygRYsWODk5AfDBBx9w8uRJ6tevj7m5OXv27OGLL77g9u3bpKamcvHiRbp160Z4eDgAFy5c4MyZM6SmpmJra0v9+vUxMjIiPj6ea9eu/Se/hRBCCCEKliIfiDk5OXHu3DmaN2/O6NGj8fDwoHXr1hw4cIBly5ap/ebPn0+tWrU4duwYjx8/plGjRuzcuVNnrJzZrFKlSuHj48OpU6do27Yt7u7ujBo1iho1auDr6wtAVlYWAQEB1KxZkzp16rBkyRJmzpwJwNatW/O819TUVBITE3UOIYQQQhRdRfrVZA5bW1sWL17M4sWL8zyfU6z79OnT1K9fn02bNtGlSxf1fF4L9NesWaOzc3LAgAGMGDFC/dysWTM2bdqU67r58+frFAd/WVBQENOmTXudRxJCCCFEEVAsArHX9SY7IseOHYufn5/62dra+rW/448L/XMEBAQwatQo9XNiYqLkEhNCCCGKMAnEXvImuyytra1xdnZ+o/GfPn3K48eP1eLgfyTpK4QQQohiRikCfH19FW9vb5229evXK8bGxsr8+fPVtlmzZil6enrK3Llzc40RGhqqAIq1tbVSvnx5JSkpSVEURYmLi1MA5dChQ0pcXJyiKIoCKP3791evTUtLU3r27KnY2dkply5dUhwcHJQOHTooDRs2VExNTRULCwtFURRl8uTJir6+vnLjxo3Xeq6EhAQFUBISEt7g1xBCCCHEf+lN/v0ukjNiK1asYNiwYXz99df069dPbQ8JCWHcuHGEhIQwduzYXNcZGBgQGxuLpaUl9erVY/r06Tg6OgKwceNGPvroI65cuaJzzYsXL+jatSs3btzg6NGj6mzXixcvaNu2LR4eHqxatYpBgwaxYsUKgoKC3ngmTdJXCCGEEEVTkQvE5s6dy9SpU1mzZo3OgvvDhw+TnJzM9OnT+e677zh+/DiNGjXSudbMzIzu3btz5swZGjduzOjRo4mOjgaya0W+vMsSsnOGdezYkaSkJI4ePYqNjY16LiIigoiICAwMDMjMzCQhIYEDBw7QvHnzf/DphRBCCFGYFKn0FePHj2fGjBns2LFDJwgDCA4OplevXhgaGtKrVy+Cg4PzHCMwMJBr167h5eVFVFQUDx8+BGDmzJl4eXmp/erWrasW8D58+LBOEBYVFYWiKCiKwrfffou5uTlr16790yBM0lcIIYQQxUuRCcR+/PFH5s6dy9atW2nZsqXOucTERDZs2ICPjw8APj4+rFu3jqSkpFzj2NnZMXLkSCZOnEhGRka+3zdy5EjS0tLYt2/fX8qWn5egoCAsLCzUQ3ZMCiGEEEVbkQnEatSogaOjI1OnTs0VYK1evZrKlSvj6ekJQM2aNXFwcGDt2rV5jjV+/HgeP36sU8Loj9555x2uX7/ON99887c9Q0BAAAkJCepx7969v21sIYQQQhQ8RWaNWPny5dmwYQPNmzenXbt2/Pjjj5QsWRLIfi35yy+/YGDw/4+blZVFSEgIAwYMyDWWpaUlAQEBTJs2jXfeeSfP7/vggw/o3Lkz/fv3R1EUnfxff1V+6Suk6LcQQghRNBXaGTE/Pz/effdd9XNKSgpffPEFWVlZHDt2DCsrKxo0aMCkSZM4e/YsERERREZGUrZsWTIzM1EUhePHj6PRaKhQoYI6jqOjIxqNhnHjxvHgwQNcXFwAePbsmc73d+nSBT8/P7Kyshg9ejTVq1fn1q1b6vnBgwdTuXJlPvzwQxITE/H29n6t/GRCCCGEKD6KxIzYs2fPiIiI4M6dO8ydO5cyZcrQr18/4uPjCQ8Pp0qVKjRr1gwAIyMjpk+fzocffkiHDh1o0KAB06ZN06krmXN+5cqVTJgwAYBFixbRqVMnne+9du0aJUuWZOnSpXz22Wc0bNiQBw8eoK+vT6VKlZgwYQK//PIL33zzDfHx8Xh5eXHt2jUsLCze6Pn+zvQVOSSNhRBCCPHfK7QzYi87efIkGo2Gs2fP0r17d5o3b86xY8dIS0sjKSmJXr166fQvWbIkNjY29OzZk40bN+ZabJ9z3t/fX835dePGjVzfW7ZsWWxtbZkxYwbDhg3j0aNHjB8/HoCrV68ycOBAFixYwIsXL/jpp594+PAhO3bs+Gd+BCGEEEIUOoU+EHv69CnR0dFMnToVMzMztb18+fLcunWLuLg4AgMD87x23LhxPHz4EENDQ/z8/IiPj9c5r6+vz969e6lXrx4tWrRQ2w8dOpRrrJydmr6+vgCEhYWpKSySkpLw9/enUqVKdOvWLd9nkfQVQgghRPFS6AOxmzdvoigKrq6uOu3W1tZotVq0Wq06S5Vj/Pjx6jmtVsuiRYvyPG9qakqFChXQaDR88cUX+d5DdHQ08+fPp3z58jr3sXTpUvU7fvzxR/bt24eRkVG+40j6CiGEEKJ4KfSBWH5Onz5NZGQk7u7upKam6pwbO3YskZGR6tG3b988z1+8eJEDBw4A0LFjRzIzM3X6VahQATMzM+zs7Hj+/DkbN27UCbT69OnD+fPnOXz4MC4uLnTv3p2UlJR871nSVwghhBDFS6FfrO/s7IxGo+HatWs67U5OTgCYmprmusba2vqV9R5fPl+lShUWLlxIw4YNOXToEK1atVL7HTlyBHNzc8qWLaumynhZzsxWlSpVaNCgAaVKlWLz5s251qzlkPQVQgghRPFS6GfErKysaN26NTNmzECj0eQ6Ll68CPx/Woo7d+7wySef5Ju24o+zZ/7+/gwdOhSA5ORknXP16tXD29s7zyBs5syZNGrUiBIlSmBpaamuF/vj+EIIIYQovgr9jBhkr8Xy8PDAzMyMzz//nKpVq6Knp0dkZCQzZsxAX18fyE5LsXz5cj788EMGDRqktucwMTEhLi6OZ8+eERMTg6IoxMTEcOvWLcqUKZOrSHiXLl04efIkp06don79+mr7rVu3OHjwIA0aNMDd3Z3Vq1fTrVs3TE1N6dChwxs/3z+RviKHpLEQQggh/jtFIhCrXLkynTp14uzZs8yZM4f79+9jbGxMtWrVGDt2LEOHDmXjxo2ULFkSfX19zM3NdYp05xg0aBCLFi1iypQpTJkyBch+tWlqasrevXuxsrICQFEUAHr06IGTkxPBwcE6gZiJiQnGxsasXLmSp0+fkpWVRcmSJTl+/Dhly5bN9zlSU1N1Zsxk16QQQghRtBXaQCwsLEznc4kSJahRowZbtmx55XVRUVH5nqtUqRIjRowgIiKC8+fPo6enh7+/P5GRkdSsWVPtpygKNjY2vPvuu7i6utKoUSMWLFigps+ws7Nj165d6n36+/uzcuXKP32moKAgpk2b9qf9hBBCCFE0FPo1Yi/bsWOHTloKrVbLrFmz1PN/lrYCYNKkSdy+ffuVgVNwcDA9e/ZEX18fDw8PnJycWL9+/f98/7JrUgghhCheCu2MWF6aN2/OsmXLdNpKly6t/j127Fj8/PzUz9bW1rnGKFOmDGPGjGHKlCn06NEj1/n4+Hg2bdrE0aNH1TYfHx+Cg4N1xv4r8ts1KYQQQoiiqdAEYjExMcycOZOdO3fy+++/U7ZsWWrWrIm/v7+a1T41NZURI0Zw4sQJkpOTqVKlCv369WPkyJHA/6el0Gg0bN68WadoeI6UlBSuXbvG/fv3MTExoVKlSjqJVVetWkVKSoq6Juzl3GLXr19Xi4QDLF++nC+++IKEhAQ0Gg1xcXG5yim9DklfIYQQQhRNhSIQi4qKonHjxlhaWjJv3jyqV69Oeno6e/bsYdiwYVy9epW7d+9y9OhRBg4cyKFDh7C0tGT//v2MGzeOEydOvPZ3ZWZmYm5uTrdu3diwYQMZGRk654ODgxk9ejR+fn5s376d9evXoygKKSkphISEMHv2bLXvixcvqF69Onfu3HllItc/80/umgTZOSmEEEL8VwpFIDZ06FA0Gg2nT5/WqSfp7u5O//79ef78ubojcfr06er5d955B1NTU3x8fPJ8DZkXMzMzli1bRnp6Ojt27OD+/ftUqlQJgMjISM6dO8fKlStxc3Nj+PDhDB48GEVR+PLLLwkPD+ezzz7DwMCAu3fv4uXlRWJiIjt37gTg0qVL1KpVC61W+zf+OkIIIYQorAp8IBYbG8vu3buZOXOmThCWw9LSks2bN5OamsrDhw+xtbXVOe/q6oqLi8sbL3w3NDSkZs2aHDlyRG0LDg6mWrVquLm58dtvv3HixAk2bdqEoij4+/uTnp7Orl276Ny5M1OmTCE8PFxnzGbNmnHo0CG8vLzy/E5JXyGEEEIULwU+EMsp6u3m5pZvn+vXrwPkuwbL29sbfX19/P398x0jr7QWTk5OlC5dWk2J8dVXX6nnQkJCaN++PaVKlQKgXbt21KxZk86dOwPZaStyUmxERETQvHnzP10jJukrhBBCiOKlwKevyEme+nf3/V9kZmYSHh6Oj4+P2ubj40NYWBhZWVl/eVxJXyGEEEIULwV+RqxKlSpoNBquXr2ab5+cnYpXrlzJVYYop71atWp/2z3t2bOH33//PVd6i8zMTA4cOEDr1q3/0riSvkIIIYQoZpR/gK+vrwIogGJgYKA4OjoqY8eOVZKTk3X63bt3TzE0NFTc3d3zHCdnjJyjfPnyyieffKKkpKSofa5cuaJ069ZN0dPTUwBl5MiROmNs3bpVAZR69eopDg4O6libN2/O955fPlq1aqWe9/b2VhRFUd577z3F0dFR5xkrVKigeHh4KN27d1cURVGSk5MVX19fxcPDQ723uLi4N/odExISFEBJSEh4o+uEEEII8d95k3+//7EZsXbt2hEaGkp6ejo///wzvr6+aDQa5syZo/YJCwuje/fu/PTTT7kKZ+cIDQ2latWqdOrUCT09PVasWEFqaioff/wx+/btY9GiRXTs2JGhQ4eyePFiDhw4wMWLFzE3N+fAgQOMHTuWFi1aUKtWLerUqcMnn3xCTEwMt2/fJjIyUv2e2NhYWrVqxffff8+1a9dIT09n3rx5pKamEhkZSWxsLHp6ejx+/Jjt27fz9ttv4+bmRmhoKKmpqezatYuhQ4dy9epVYmNjMTY2RlEUunTpgqIo/PLLL1y6dImSJUtSsWJFnUSzf+afTl/xJiTVhRBCCPH30SjK37+wys/Pj/j4eJ26j127duX27ducO3cOyF7P5ezszNKlSzl06BCxsbEsX75c9+ZeSrwaHR3NzJkzCQ8P58WLF9ja2vLWW2/xySefqLsQa9asSXx8PHFxcaSkpKgJXf39/dHX1wfA0dGRO3fu5HnfTZo04ciRI/n28fb2pmnTpnz22Wd06tSJxMREnWds1aoVERERfPHFF4wYMYLAwMA8F9+Hhoa+Vhb+xMRELCwssPdfJ4GYEEIIUUjk/PudkJDwpwnZ/5XF+pcvX+b48eMYGRmpbYcOHeLFixe0atUKHx8f1qxZw/Pnz/Mdw9bWlhEjRlCmTBmmTp3K/fv32bp1q04qCEtLS959910SEhJITU3l8uXLjB49Wg3CcixYsABFUXQOX19frKysgOwdlHmdBxg9ejRxcXHo6eX+6czMzPD09GTEiBEABAYGqtd6e3urY+UXhKWmppKYmKhzCCGEEKLo+scCsZwC3CYmJlSvXp1Hjx4xduxY9fzrFs7u1auXOo6rqyvu7u4EBAT8o/ecc3Tr1u21rlMUhf3797Nnzx5atGjxl78/KCgICwsL9Xi5tJIQQgghip5/bI1YTgHu58+fs2DBAgwMDOjatSvwZoWzFyxYQKtWrcjMzOTmzZuMGjWKDz74gDVr1vxj95wjrwSyL8sJ3NLT08nKyqJ3794EBgb+5e8PCAhg1KhR6ufExEQJxoQQQogi7B8LxMzMzHB2dgayk596enoSHBzMgAEDchXOhuxZpaysrFyFs21sbNRxXF1defbsGb169eKzzz5T2/+Je34dOYGbkZERdnZ2GBj8bz9nfukrpOi3EEIIUTT9K2vE9PT0mDBhApMmTSI5OVktnB0ZGakeFy5coGnTpoSEhLxyrJz1XsnJyf/zfT1+/JiPPvqIihUr8v3337N7927atm3LsWPHgOyF/QsXLlT77927F41Go87G5QRuFStWxNPTE41Go2bTj42NZfjw4bi6uvL999+zd+9eRowYQUJCwv9830IIIYQoGv61hK7dunVj7NixLFmyRKdw9st69erF9OnT1cLZkP0aMyYmhqysLG7cuMH06dNxcXGhatWq6nU5aSiSkpJ4/PgxkZGRGBkZqUlc09LS+PXXX9W/f//9dyIjI/nwww/R19cnPDycJUuW8PjxY7y8vHj69Gm+z2Fvb09oaKhOTcuTJ08SExOj8yrzwYMHXL16laFDh7Jt2zaePn3K1q1b+fXXX9m/f/8b/XYFKX3FXyW7LYUQQojc/rVAzMDAgI8//piAgAAcHR3zrB3ZpUsXPv74Y7VwNkC/fv2A7FQWNjY2NGvWjFmzZum8BqxVq5b6988//8yqVatwcHBQ60c+ePBAp8/8+fOZP38+kF0H8u233yY8PJyMjIw/3QjQp08fFixYQKdOndS2kJAQ+vTpw3fffae2eXh4cOPGjVz1Le/evUtGRsb//BpTCCGEEIXfPxIN5Lye+6NPP/2UTz/9NN/rbGxsyMzMVD+/boqzP+vn6OiYq09GRgalSpViy5YtNGjQIN97zhEWFkZERATlypWjbdu2eHp6MmnSJF68eMHatWs5fPiwTiAGuQuJr1ixgoCAgHyDsNTUVFJTU9XPkr5CCCGEKNoKfNHvf4qBgQFhYWGEh4djaWlJ48aNmTBhAhcvXvzTa/v3709YWBiKorBhwwYqV65MzZo1X3nNkydPmDFjBoMGDcq3j6SvEEIIIYqXYhuIQXa2/wcPHrBt2zbatWtHREQEtWvX/tPZsY4dO5KUlMRPP/1ESEgI/fv3f2X/xMREOnbsSLVq1V6Z3iIgIICEhAT1uHfv3l94KiGEEEIUFsV+oZKJiQmtW7emdevWTJ48mYEDBzJ16tRXliAyMDDggw8+YOrUqZw6dYrNmzfn2/fZs2e0a9eOkiVLsnnzZgwNDfPtK+krhBBCiOKl2MyI+fn5odFoch3t2rUDsteRaTQaUlNTc5Vacnd3R6PRkJSUpLatWrWKw4cPk5KSQoUKFahduzbp6enq+V9++YXOnTtjbW3NiRMnaNOmDSYmJv/OwwohhBCiUChWM2Lt2rUjNDQUyM7zNWjQILp06cLFixdJT0/HysqKdevW4ePjo14TFRWVKzUFgKGhIZ9++imDBg0iPT2dzz//nPPnz3Pjxg0AHj16xNmzZylXrhzJycmkpKQQExMDQJkyZXLVv3yVopC+4o8knYUQQghRjGbEIPvVn42NDTY2NlSuXJmmTZuyfPlymjVrRnR0NIqikJmZqbOz89SpU/Tp0yfPnY7lypWjUqVKuLi4sGTJEuD/c5ppNBqio6O5d+8eT548YerUqdja2mJra5vv2i8p+i2EEEIUL8UqEHuZsbExQUFB/Pzzz8THx1OxYkUmT55Mx44dWbt2LQC//vorv/76q7oYf/78+bnyguUwMDDAwsJCzY/m5eWFoigoioKDgwMLFixQPzs6OuY5huyaFEIIIYqXYhWI5RTpfvmYNWuWTp+/kpoiLS2NoKAgEhISaNGixV++P9k1KYQQQhQvxWqNWE6R7peVLl1a53PHjh0ZPHjwa6WmGD9+PJMmTSIlJQWtVsvs2bPp2PGvr33Kb9ekEEIIIYoopQjy9fVVAGXw4ME6bd7e3srQoUMVQPH19VXPRUdHKyVLllRKly6tGBkZKVqtVv07NjZWURRF0Wg0CqCsXr1aURRFcXBwUCZOnKjcuHFDcXFxUQAlNDRUURRFefr0qfLxxx8rLi4uiomJiaKvr680bdpUiY+Pf6PnSEhIUAAlISHhf/tBhBBCCPGveZN/v4vsjJi9vT1r1qxhwYIFmJqaApCZmcmqVauoWLGi2i8qKorGjRuTkpJC165dCQgI4OrVq3h7e1OyZElKlSql9i1dujShoaH07NkTAGtra548ecKTJ09yFfx+8OAB8+fPp1q1ajRu3JgrV64wYMAANmzY8MbPUhR3TYLsnBRCCCGK7Bqx2rVrY29vz6ZNm9S2u3fvYmtrS9WqVUlOTiYmJoaBAwei0WiwtbXF09MTFxcXOnfuzJMnT7h27ZrOmA0aNODw4cM6a7dyCn6/vKvSw8OD1atXY29vz7Nnz9DT06Nhw4Zs3bqVq1ev/vMPL4QQQohCocgGYpC98D4nbxjAxYsXuXLlCnv27GHdunXY2tpy4MABhg0bhkaj0bnWysoKW1tbnTYLCwvatm1LeHg4kL1If+3atXmuI3vw4AG1atWiVq1aREdHs337djIyMhgyZEi+9yvpK4QQQojipUgHYj4+Phw9epQ7d+4wbdo0TExMePz4Md7e3vj6+nLq1CkA3NzciIqKyjc1BUDFihWpV6+euqvy9u3baj6yvHZVOjo6qukqHj9+TMWKFZkwYQIRERH5foekrxBCCCGKlyIdiJUpU4aOHTsSFhZGaGgoHTt2xNraWj2vKMobj/lPFfwGSV8hhBBCFDdFdrF+jv79+/Pxxx8DqNnvc1SpUgWNRvNG67b+qYLfIOkrhBBCiOKmyARifn5+xMfHs2XLFp12ExMToqKisLOzo23btnz77bccOnSIFy9esGXLFjX/14gRIzAzMyMwMJBp06YBoKenh729PV26dPm/9u48Koor+wP4twFZpGk2ZVOkQTZlUaOBoBJAUTSJu9G4BRyjxh1XYkQhbrjlh44Lk0EUNHGNJhrNIErESQBXwIAiIBEVI6IIAi4ocH9/eKixBBRQaIH7OadP7KpXr17d7jT3VL26JZw9y8rKwrp164T+DQ0N0a5dO5SUlIjOsBUWFsLR0RG5ubkoLy+HlZUVhg8fjqCgoFo//DvlGy/IZLI6RoYxxhhj76omk4hVp+Lh2vHx8YiIiICvry+sra1hbm6OZcuW4fjx4/D394eTkxOWLl2KvLw8WFpawtvbGxEREVi+fDn+8Y9/QElJfBX3wIED6NKlC5SUlPDHH39g7Nix+P333zF+/HgUFhbivffew40bN/Dtt9+iZ8+eyMzMxKxZs0BEWL9+fa2OoamWr3hbuAwGY4yxxqrJJ2IVZDIZDh8+jBEjRiA/Px8ymQx2dnaws7PDyJEjsWLFCsydOxfZ2dlQUlLCuXPnEBoaCnd3d0RHRyMsLEzUn4WFBczNzQEAZmZm8PHxwfXr1wEACQkJyMzMBADMmTNHtN0ff/zRAEfLGGOMscagSU7WDw8Pr3SJEgCMjIxw+vRpbNiwAeHh4cJyY2NjbNq0CVlZWfD390fHjh1x6NAhuLu7AwA0NDSgo6NT7V2V58+fh1Qqhbe3N4DnD/z+4YcfoK2tjTNnzoCIkJmZCVtbWwwdOrTacXP5CsYYY6x5aVJnxCoe6v2isrIy4d8BAQEYOnQo5HI5rK2t4eLigo8++gjDhw+vdOmxwoULF7Br165KD/Pu3r07lJSU8PTpUzx79gyTJk3C559/LqwfPXo07t27h549e4KIhBpiX3/9dbXjDwoKEuanMcYYY6zpa1JnxDw8PJCUlCR6bd26VVhvbGyM+Ph4JCcnY9asWSgtLYW3tzf69euH8vJyoV1ycjKkUik0NDTg5OQEFxcXbNq0SbSvvXv3IikpCRcvXsS+fftw6NAhfPXVV8L6mJgYrFy5Elu2bEFCQgIOHjyIo0ePYtmyZdWOn8tXMMYYY81LkzojpqmpCUtLS9Gy7OzsSu3s7e1hb2+PqVOn4ssvv4SrqytOnToFDw8PAICNjQ0OHz4MFRUVmJiYQFVVtVIfpqamwr46dOiAzMxMLF68GIGBgVBXV8fixYsxbtw4fPHFFwAABwcHPHz4EJMmTcKiRYuqPANXXfkKvmuSMcYYa5qa1BmxmvDx8YFEIhFerq6uAIC5c+cKbcrKyrBw4UI4OztDJpPBysoKEydORHp6unDHY5cuXUT9LFy4EKWlpcIDxv/66y98//330NLSgoGBAQYPHow7d+4AqFshWcYYY4w1PU3qjNjrTJkyBRcvXoSzszM2btyI3NxcrF+/HomJidi/fz8AID09HRkZGbCxscEPP/yA9u3bIzc3F/v378fixYuxZMkSbNiwAfv27YONjQ28vLzg6emJ6OhoWFhY4McffwTwfIL/rVu3sHTpUtjZ2SEwMBBfffUVBg4cKJTUqCkuX9GwuBwGY4yxhtKsEjFPT0/88ssvwiT6Vq1awcXFBSdPnkT79u2FIq9aWlo4fPiwsJ25uTmcnZ1RUFCAgoICAMCIESOE9UeOHMGnn36KFStWoHXr1gCAK1euYMWKFfjuu+9w69Yt6Ovro7S09JWPRCopKUFJSYnwnu+aZIwxxpo2CTWz62TVVeAHgJ9++glDhw5FXFwcXFxcatSfXC6Hr6/vKx8YDgBXr16FlZUVkpOTYW9vX2WbF6v6v8jUdx+fEWtAfEaMMcbYmygsLIS2tjYePHjw2jnezW6OGPC/MhcvvlauXImMjAwAgK2t7VvdX3l5OXx9fdGjR49qkzCA75pkjDHGmptmdWmygoeHB0JCQkTL9PT0EBoaWi/7mzZtGlJSUl5bVZ8f+s0YY4w1L80yEauqzAUAWFtbA3g+v6umlyZfZ/r06Thy5Aj++9//om3btnXqg8tXMMYYY02Twi9NxsfHQ1lZGR9/LJ6Xk5WVBYlEgqSkpCq3Cw8PF0pHKCsrQ1dXF87Ozli6dCkePHggauvj44PBgwdX6iMmJgYSiUSYgN+3b19oaWmhX79+aNmyJczMzLB27VqhfUU7AHj8+DH09PRw8+ZNlJaWVur7u+++Q5s2bbBlyxZkZ2dDV1e3ZgFhjDHGWLOh8DNiYWFhmDFjBsLCwvD333/DxMSkxtvKZDKkpaWBiFBQUIC4uDgEBQVh+/btiI2NrbavkpIS5OTk4P79+wCAO3fuoLS0FOfOncPDhw8hkUjg7u4ODw8PrF27Fnfv3gUA3LhxA3v27AEAHDhwAHZ2djh37hySk5Mr7WPnzp24f/8+vvjiC4SGhuLOnTt48uQJtLW1hVpjNcXlKxSDJ+0zxhirbwo9I1ZcXIy9e/diypQp+Pjjj0UP4q4JiUQCIyMjGBsbo0OHDpgwYQLi4uJQXFyMBQsWVLtdZGQkjI2NMWzYMADPJ+f37NkTO3fuxNChQ3H69Gloa2tjw4YNyM/PR3BwMAoKCrB8+XKhj7CwMIwdOxaampo4ffp0pX3ExsbiyZMnwrwzW1tbGBsbY+/evdWOix/6zRhjjDUvCk3E9u3bB1tbW9jY2GDs2LHYtm3bG1edNzAwwJgxY3D48GHRA78rhIeHg4hARDh58iQAID8/H1euXEFJSQnU1dXRrVs3HDhwALm5uQgJCUFpaSm+/vprYV5ZZmYm4uPjMWLECGRkZODGjRu4fv26aD9V7YOI4OPjU+3Yg4KCoK2tLbxMTU3fKBaMMcYYe7cpNBGrOKsEAP369cODBw9w6tSpN+7X1tYWRUVFyMvLE5ZVVbKif//+ou28vLxw8OBBREdHo7y8HOnp6fj2228BALdv3xbabdu2Df3794euri709PTg5eWF7du3v/G4uXwFY4wx1rwoLBFLS0vD2bNnMWrUKACAiooKRo4cibCwsDfuu+KsmkQiEZZ5eHggKSlJ9Nq6datou4kTJ2L69On45JNPoKqqig8++ACfffYZAAgP6S4rK0NERISQQALA2LFjER4ejvLy8jcat5qaGmQymejFGGOMsaZLYZP1w8LCUFpaKppQT0RQU1PDpk2b3qjv1NRUyGQy6OvrA3h+h2NmZib69u2LW7duwcDAAJ07d4a7uzsAwNHRUTj7pKGhgfbt28Pb2xuzZs1CdHQ0gOdnxCQSCUxNTXHr1i2MHDlS2F/FJdDo6Gj06dMHcrkc169fR3x8vGhcvr6+SEpKQkxMTK2Oh8tXMMYYY02TQhKx0tJS7NixA99++y369u0rWjd48GDs3r0b/fr1q1Pfubm52LVrFwYPHgwlJSVkZWXhl19+gYqKCrZv3w4HBwc8e/YMx44dw/r164Xtli5diokTJ+LRo0fYv38/FixYAHt7e+zevRsuLi7Q0dEBANy6dQtOTk6iM3cuLi6ws7NDWFgY+vTpAwBQV1eHn59flY8sqi2+a/Ldw3dUMsYYexsUkogdOXIE+fn5mDBhArS1tUXrhg0bhrCwMCERS0tLq7S9nZ0dgOdn0HJycoTyFfHx8Vi5ciW0tbWxatUqAMDUqVMhkUjg5uYm3CVZ0Ye1tTUGDBgAANDS0oKKigqioqIwaNAgrFy5El9//TWuXLmCU6dO4dGjR8K2f/31F6ysrIQq+MrKyujevTu2bNkilMQYM2YMIiIi8NNPPwEAkpOTcffuXTx79uytxJAxxhhjjZ9CErGwsDB4enpWSsKA54nYmjVrhNINFXO0XlRxGbGwsBDGxsaQSCSQyWSwsbERLinKZDLcv38fkZGR6NKlC5SVlSv1I5VKKy2LiIjA7Nmz8eTJE+Tn5yMmJgZOTk7C5cSKhG3jxo2YN2+esF3Hjh2hoaGB77//HgCQnZ2N0tJS/POf/wQAfPjhhwAAGxubauNSUlKCkpIS4T2Xr2CMMcaaNoVM1v/ll19w9OjRKtc5OTmBiODo6CiUgHj51bZtW/j4+Ajvy8vLUVBQgDNnzmDx4sXCfKqrV6+CiODv74+ff/650r7c3d1BRFBSUoKfnx/kcjnOnz+PJ0+eQE9PDydOnICzs7Nom6ysLAQGBiIoKEhUwV9FRQX5+fmYOXMmgOd3gebm5kJLSws7duwAEWHWrFkwMjKqNi5cvoIxxhhrXhT+iKP6VJuaZPPnz0dSUhJ+++03ODs7Izg4uMrnUQLAhAkToK+vj9WrV7+yz9atW2PevHlYsmQJnj59+toxcPkKxhhjrHlp0omYlZUVJBIJrly58tq2rVq1gqWlJVxdXbF//37MnDkTly9frrKtiooKVqxYgQ0bNuDvv/9+Zb9z5szB48ePsWXLlteOgctXMMYYY82Lwp81WZ8qiq1u3rwZM2fOxLRp0xAREQHgeTJlbGyMzz77THTm7MXaY506dYKTkxOWLVsm1BGbOnUqdu/ejaCgINjZ2Ql3RSYkJGD8+PFCX8+ePYOPjw8uXLiA3Nxc+Pn5iWqP1QaXr2CMMcaapiadiAHA5s2b0aNHDzg5OcHAwACurq5Yvnw5Tp48idDQUHz33XeVttm+fTvMzc3h4eEBFRUVfPLJJ6Lir+rq6li9ejXCw8MxfPjwKvdLRNDQ0MDMmTOxf/9+xMXFYdeuXZXmnNUEl69oPLisBWOMsdpo0pcmAcDCwgIJCQnw8PDAuXPnEBsbi9GjRyMhIQHff/89PD098eTJE9E2Ojo6cHNzQ9++faGiooLHjx/j/PnzwnpPT08YGRkhNjYWvXr1QmlpaaX9qqqqIiQkBBMnToSJiQlsbW0r7YcxxhhjzVuTPyMGAMbGxti0aROKi4tRUFAg3EGZkpKCuLg4dOnSBb6+vpW2i4yMRH5+PvT09GBubi48tFtZWRkrV67E6NGjkZGRgbZt2+Lnn3/Gxo0bATy/s/Jlbdu2FSVzVeHyFYwxxljz0uTPiL2s4uHf6urqcHBwQG5uLubPn19l20ePHsHf3x/Kyspwc3MTrRsyZAg6d+6MgICAtzY2Ll/BGGOMNS/N4ozYizw8PBASEoKHDx8iODgYKioqoor7ADBq1CgoKyvj8ePHaN26NcLCwuDo6Fipr9WrV6NXr16iwq5vYuHChZgzZ47wvrCwkJMxxhhjrAlrdomYpqamUB9s27Zt6NSpE8LCwjBhwgShTXBwsFD5v3Xr1tX29eGHH8LLywsLFy6Ej4/PG49NTU1NeGzSi/iuScYYY6xparSXJiUSyStfgYGByMrKEi3bvXs3/vjjD/z+++8AACUlJXz99dfw9fUVnfGKiYmBlZUVDAwMoKKiArlcjtmzZ6O4uFhoM3PmTHTt2hVRUVE4dOgQ4uPjReNLS0uDh4cHDA0NsXPnThw/fhz+/v78rEnGGGOMCSRUm/Lz75CcnBzh33v37sWSJUtEDwiXSqW4d+8ezM3NceLECdjZ2WHy5Mm4cOECioqKkJ6eDkNDQ5SWlkJPTw9SqRR///03JBIJRo4ciZSUFJw4cQKlpaWIjY3FP/7xD4wdOxYlJSUoKChAu3btYGNjgzNnzuDIkSN4/Pgxnjx5ItQR++uvv7Br1y5YWVlh69atyMnJwa1btzBkyBCEhYXV6BgLCwufzxXz3cflK1itcSkNxhhTjIq/3w8ePHjtFa1Ge2nyxWc2amtrQyKRVHqO47179wAA+vr6MDIygq6uLqytrXHy5EmcOXMGAwcOhIqKCpycnHDq1Ck8fPhQ2FZFRUXob+TIkYiOjsbhw4fh5eUFAMLDvO/evQsjIyNkZmaK9m1hYYGtW7fi+vXrouXbtm2rNhHjuyYZY4yx5qXRXpqsi5CQEHTt2hXA8zpfFXr27Ak7OztoamqCiGBra1tpWw0NDTx9+hTh4eGVHiCuqqqKkpKSSs+2zMrKEh5MnpGRgQ4dOmDRokXVjo/vmmSMMcaal2aRiHXv3h1SqRSamppYt24dunbtit69e9d4+wsXLmDXrl3o1atXnfatrq4OKysruLq6YunSpdW25Yd+M8YYY81Ls0jE9u7di8TERBw4cACWlpYIDw9HixYtXrlNcnIypFIpNDQ04OTkBBcXF2zatKlO+05ISMCuXbtw9OhRrFu3rtq2/NBvxhhjrHlptHPEasPU1BRWVlawsrJCaWkphgwZgpSUlCpLRVSwsbHB4cOHoaKiAhMTE9GlzNruGwA6duyIsrIyTJo0CXPnzoWysnKN++DyFYwxxljT1OjPiOXk5OD7779HUVER1NTUYGpqigEDBiA6Olpo06VLF0gkErRs2RLffPMNiouLsWXLFmF9VlYWLl68iIKCAmFZUVERhg0bBnt7exgYGKBLly4ICgoS1gcGBkIikeCbb77BxYsXK5W4yMvLQ79+/WBiYiKMKzw8HM+ePUN5eXn9B4Yxxhhj77xGfUYsKysLPXr0AACoq6sjMTERz549w7FjxzBt2jRERkYCAKZMmYIlS5bg0aNH2L9/P7766issXboUkydPRsuWlctCJCYm4tatWwgMDISbmxtKSkrw559/IiUlRWhz//59WFhYoEePHoiNjcWkSZMQGBiIoqIibN26FQcOHEDbtm0xYcIEGBkZISoqCqtWrUKbNm1ee1n0ZfYBx7h8BWOMMfaWvQtlfhptHTEA+Oijj/Dnn39i8eLF8PPzE53RKigoQEFBAczNzTFv3jysXbtWWKenp4dHjx5h6dKlWLBgAXx8fBAREYH8/Hzo6OjA1tYWubm5uH//frX7lsvllUpTAECrVq1w9+5d7N27F2vWrEF6ejqICGZmZrCwsEBiYiKys7Or7LOq8hWmpqZcR4wxxhirB/WViNWmjlijvTR5//59REZGYtq0aZg8ebIoCQMAHR0dyOVymJmZoU2bNgCA8vJyHDhwAAUFBfD19cWCBQsAoNLjidzd3WFoaFhlolXBx8cHnTp1EspTEBFmzpwpXHYcOXKkUDy2uLgYx48fR1FREdzd3avtk8tXMMYYY81Lo03Erl69Wm3Nr5f5+flBKpVCTU0Nw4cPh66uLr744otq2wcEBAiJnI2NDXx8fLBv375Xzu2qrsTFqFGj0LJlS7Rp0wYymQxbt26ttg8uX8EYY4w1L402EavNFdX58+cjKSkJv/32G5ydnREcHCw8+LsqxsbGiI+PR3JyMmbNmoXS0lJ4e3ujX79+omSsJiUugoODkZCQgEOHDiEzMxNz5sypdr9cvoIxxhhrXhrtZH0rKytIJBJcuXLltW1btWoFS0tLWFpaYv/+/XBwcEC3bt3QsWPHV25nb28Pe3t7TJ06FV9++SVcXV1x6tQpeHh4AKhZiQsjIyMYGRnB1tYWenp6cHV1xeLFi2FsbFzjY+XyFYwxxljT1GjPiOnp6cHLywubN28WPSOywstzxiqYmppi5MiRWLhwYa32V5G0vbgvVVVVWFpaQi6X16jOWMXZtBcn5DPGGGOs+Wq0Z8QAYPPmzejRowecnJywdOlSODo6orS0FMePH0dISAhSU1Or3G7WrFmwt7fH+fPn0a1bt0rrp0yZAhMTE/Tq1Qtt27bF7du3sXz5crRu3RouLi41Gtuvv/6KO3fu4P3334dUKsWlS5cwf/589OjRA3K5/E0OmzHGGGNNRKM9IwYAFhYWSEhIgIeHB+bOnQt7e3v06dMH0dHRCAkJqXa7jh07om/fvliyZEmV6z09PXH69Gl8+umnsLa2xrBhw6Curo7o6Gjo6+vXaGwaGhoIDQ1Fz5490aFDB8yePRsDBw7EkSNH6nSsjDHGGGt6GnUdsaauNnVIGGOMMfZuaBZ1xBhjjDHGGjtOxBhjjDHGFIQTMcYYY4wxBeFEjDHGGGNMQTgRY4wxxhhTEE7EGGOMMcYUhBMxxhhjjDEF4USMMcYYY0xBOBFjjDHGGFMQTsQYY4wxxhSEEzHGGGOMMQVRUfQAWPUqHgNaWFio4JEwxhhjrKYq/m7X5HHenIi9w/Ly8gAApqamCh4JY4wxxmqrqKgI2trar2zDidg7TE9PDwBw48aN136Q7H8KCwthamqKmzdvvvap9+x/OG51w3GrG45b3XDc6qah40ZEKCoqgomJyWvbciL2DlNSej6FT1tbm/+HqwOZTMZxqwOOW91w3OqG41Y3HLe6aci41fQECk/WZ4wxxhhTEE7EGGOMMcYUhBOxd5iamhoCAgKgpqam6KE0Khy3uuG41Q3HrW44bnXDcaubdzluEqrJvZWMMcYYY+yt4zNijDHGGGMKwokYY4wxxpiCcCLGGGOMMaYgnIgxxhhjjCkIJ2INbPPmzZDL5VBXV4ezszPOnj37yvb79++Hra0t1NXV4eDggF9//VW0noiwZMkSGBsbQ0NDA56ensjIyKjPQ1CItx03Hx8fSCQS0atfv371eQgKUZu4Xbp0CcOGDYNcLodEIsH69evfuM/G6G3HLDAwsNJ3zdbWth6PQDFqE7fQ0FC4urpCV1cXurq68PT0rNSef9sqq0nc+LetsoMHD6Jbt27Q0dGBpqYmOnfujJ07d4raKPT7RqzB7Nmzh1RVVWnbtm106dIlmjhxIuno6NCdO3eqbB8bG0vKysq0Zs0aunz5Mvn7+1OLFi0oOTlZaLNq1SrS1tamn3/+mS5evEgDBw4kc3Nzevz4cUMdVr2rj7h5e3tTv3796Pbt28Lr/v37DXVIDaK2cTt79izNmzePdu/eTUZGRhQcHPzGfTY29RGzgIAAsrOzE33X7t69W89H0rBqG7fRo0fT5s2bKTExkVJTU8nHx4e0tbUpOztbaMO/bZXVJG7821bZyZMn6eDBg3T58mW6evUqrV+/npSVlSkyMlJoo8jvGydiDcjJyYmmTZsmvC8rKyMTExMKCgqqsv2IESPo448/Fi1zdnamyZMnExFReXk5GRkZ0dq1a4X1BQUFpKamRrt3766HI1CMtx03ouc/VoMGDaqX8b4rahu3F5mZmVWZVLxJn41BfcQsICCAOnXq9BZH+e550+9FaWkpaWlpUUREBBHxb1td40bEv2011aVLF/L39ycixX/f+NJkA3n69CkuXLgAT09PYZmSkhI8PT0RHx9f5Tbx8fGi9gDg5eUltL927RpycnJEbbS1teHs7Fxtn41NfcStQkxMDAwMDGBjY4MpU6YgLy/v7R+AgtQlboro811Sn8eXkZEBExMTWFhYYMyYMbhx48abDved8Tbi9ujRIzx79gx6enoA+LetrnGrwL9t1SMiREdHIy0tDR9++CEAxX/fOBFrIPfu3UNZWRkMDQ1Fyw0NDZGTk1PlNjk5Oa9sX/Hf2vTZ2NRH3ACgX79+2LFjB6Kjo7F69WqcOnUK/fv3R1lZ2ds/CAWoS9wU0ee7pL6Oz9nZGeHh4YiMjERISAiuXbsGV1dXFBUVvemQ3wlvI25+fn4wMTER/hDyb1vd4gbwb1t1Hjx4AKlUClVVVXz88cfYuHEj+vTpA0Dx3zeVet8DY++gzz77TPi3g4MDHB0d0b59e8TExKB3794KHBlravr37y/829HREc7OzjAzM8O+ffswYcIEBY7s3bBq1Srs2bMHMTExUFdXV/RwGo3q4sa/bVXT0tJCUlISiouLER0djTlz5sDCwgLu7u6KHhqfEWsorVq1grKyMu7cuSNafufOHRgZGVW5jZGR0SvbV/y3Nn02NvURt6pYWFigVatWuHr16psP+h1Ql7gpos93SUMdn46ODqytrfm7BmDdunVYtWoVoqKi4OjoKCzn37a6xa0q/Nv2nJKSEiwtLdG5c2fMnTsXw4cPR1BQEADFf984EWsgqqqq6Nq1K6Kjo4Vl5eXliI6OhouLS5XbuLi4iNoDwPHjx4X25ubmMDIyErUpLCzEmTNnqu2zsamPuFUlOzsbeXl5MDY2fjsDV7C6xE0Rfb5LGur4iouLkZmZ2ey/a2vWrMGyZcsQGRmJbt26idbxb1vd4lYV/m2rWnl5OUpKSgC8A9+3er8dgAn27NlDampqFB4eTpcvX6ZJkyaRjo4O5eTkEBHRuHHj6KuvvhLax8bGkoqKCq1bt45SU1MpICCgyvIVOjo6dOjQIfrzzz9p0KBBTfIW77cZt6KiIpo3bx7Fx8fTtWvX6MSJE/Tee++RlZUVPXnyRCHHWB9qG7eSkhJKTEykxMREMjY2pnnz5lFiYiJlZGTUuM/Grj5iNnfuXIqJiaFr165RbGwseXp6UqtWrSg3N7fBj6++1DZuq1atIlVVVfrxxx9FZRaKiopEbfi3rXZx49+2quO2cuVKioqKoszMTLp8+TKtW7eOVFRUKDQ0VGijyO8bJ2INbOPGjdSuXTtSVVUlJycnOn36tLDOzc2NvL29Re337dtH1tbWpKqqSnZ2dnT06FHR+vLyclq8eDEZGhqSmpoa9e7dm9LS0hriUBrU24zbo0ePqG/fvtS6dWtq0aIFmZmZ0cSJE5tMMvGi2sTt2rVrBKDSy83NrcZ9NgVvO2YjR44kY2NjUlVVpTZt2tDIkSPp6tWrDXhEDaM2cTMzM6sybgEBAUIb/m2rfdz4t+25l+O2aNEisrS0JHV1ddLV1SUXFxfas2ePqD9Fft8kRET1f96NMcYYY4y9jOeIMcYYY4wpCCdijDHGGGMKwokYY4wxxpiCcCLGGGOMMaYgnIgxxhhjjCkIJ2KMMcYYYwrCiRhjjDHGmIJwIsYYY4wxpiCciDHG6iw8PBw6OjqKHgZjjDVanIgx1syUlZWhe/fuGDp0qGj5gwcPYGpqikWLFiloZHVT02QwPDwcEomk0mvr1q1vZRxZWVmQSCRISkp6K/3VRWNIjOVyOdavX6/oYTD2zlBR9AAYYw1LWVkZ4eHh6Ny5M3744QeMGTMGADBjxgzo6ekhICBAwSOsPzKZDGlpaaJl2traChpN9Z4+fQpVVVVFD+OtaorHxNjbwGfEGGuGrK2tsWrVKsyYMQO3b9/GoUOHsGfPHuzYsUP0x/Lw4cOwsrKCuro6PDw8EBERAYlEgoKCAlF/P//8s9DOy8sLN2/eFK0PCQlB+/btoaqqChsbG+zcuVO0/saNGxg0aBCkUilkMhlGjBiBO3fuCOsvXrwIDw8PaGlpQSaToWvXrjh//jxiYmIwfvx4PHjwQDjDFRgYWO1xSyQSGBkZiV4aGhoAgJSUFPTv3x9SqRSGhoYYN24c7t27J2wbGRmJnj17QkdHB/r6+vjkk0+QmZkprDc3NwcAdOnSBRKJBO7u7gAAd3d3+Pr6isYxePBg+Pj4CO/lcjmWLVuGzz//HDKZDJMmTQIA/PHHH3B1dYWGhgZMTU0xc+ZMPHz4sNrje1lgYCA6d+6Mbdu2oV27dpBKpZg6dSrKysqwZs0aGBkZwcDAACtWrKgUp5CQEPTv3x8aGhqwsLDAjz/+KGqTnJyMXr16QUNDA/r6+pg0aRKKi4uF9T4+Phg8eDBWrFgBExMT2NjYwN3dHdevX8fs2bOFzwsA8vLyMGrUKLRp0wYtW7aEg4MDdu/eLdqfu7s7Zs6ciQULFkBPTw9GRkaVPuuCggJMnjwZhoaGUFdXh729PY4cOSKsf9N4MlYvGuTR4oyxd055eTm5u7tT7969ycDAgJYtWyZa/9dff1GLFi1o3rx5dOXKFdq9eze1adOGAFB+fj4REW3fvp1atGhB3bp1o7i4ODp//jw5OTlR9+7dhX4OHjxILVq0oM2bN1NaWhp9++23pKysTL/99hsREZWVlVHnzp2pZ8+edP78eTp9+jR17dqV3NzchD7s7Oxo7NixlJqaSunp6bRv3z5KSkqikpISWr9+PclkMrp9+zbdvn2bioqKqjze7du3k7a2dpXr8vPzqXXr1rRw4UJKTU2lhIQE6tOnD3l4eAhtfvzxRzpw4ABlZGRQYmIiDRgwgBwcHKisrIyIiM6ePUsA6MSJE3T79m3Ky8sjIiI3NzeaNWuWaH+DBg0ib29v4b2ZmRnJZDJat24dXb16VXhpampScHAwpaenU2xsLHXp0oV8fHyq/UxfPsaAgACSSqU0fPhwunTpEh0+fJhUVVXJy8uLZsyYQVeuXKFt27YRADp9+rSwHQDS19en0NBQSktLI39/f1JWVqbLly8TEVFxcTEZGxvT0KFDKTk5maKjo8nc3Fx0TN7e3iSVSmncuHGUkpJCKSkplJeXR23btqWlS5cKnxcRUXZ2Nq1du5YSExMpMzOT/vnPf5KysjKdOXNG6M/NzY1kMhkFBgZSeno6RUREkEQioaioKCJ6/j364IMPyM7OjqKioigzM5N++eUX+vXXX4mI6hRPxhoCJ2KMNWOpqakEgBwcHOjZs2eidX5+fmRvby9atmjRokqJ2Mt/xCv6rPgj2r17d5o4caKon08//ZQ++ugjIiKKiooiZWVlunHjhrD+0qVLBIDOnj1LRERaWloUHh5e5TG8KsF6uR0A0tTUFF6GhoZERLRs2TLq27evqP3NmzcJAKWlpVXZ3927dwkAJScnExHRtWvXCAAlJiaK2tU0ERs8eLCozYQJE2jSpEmiZb///jspKSnR48ePqz3GlxOxli1bUmFhobDMy8uL5HK5kEASEdnY2FBQUJDwHgB9+eWXor6dnZ1pypQpRET073//m3R1dam4uFhYf/ToUVJSUqKcnBwiep6IGRoaUklJiagfMzMzCg4OrnL8L/r4449p7ty5wns3Nzfq2bOnqM37779Pfn5+RER07NgxUlJSqvbzqks8GWsIfGmSsWZs27ZtaNmyJa5du4bs7GzRurS0NLz//vuiZU5OTpX6UFFREbWztbWFjo4OUlNTAQCpqano0aOHaJsePXqI1puamsLU1FRY37FjR1Efc+bMwRdffAFPT0+sWrVKdEmwNrS0tJCUlCS84uLiADy/9Hny5ElIpVLhZWtrCwDCvjIyMjBq1ChYWFhAJpNBLpcDeH5Z9W3o1q2b6P3FixcRHh4uGpOXlxfKy8tx7dq1Gvcrl8uhpaUlvDc0NETHjh2hpKQkWpabmyvazsXFpdL7Fz+zTp06QVNTU1jfo0cPlJeXi+bgOTg41GheWFlZGZYtWwYHBwfo6elBKpXi2LFjlWLr6Ogoem9sbCyMOykpCW3btoW1tXWV+3hb8WTsbePJ+ow1U3FxcQgODkZUVBSWL1+OCRMm4MSJE8K8nXdJYGAgRo8ejaNHj+I///kPAgICsGfPHgwZMqRW/SgpKcHS0rLS8uLiYgwYMACrV6+utM7Y2BgAMGDAAJiZmSE0NBQmJiYoLy+Hvb09nj59+tp9EpFo2bNnzyq1ezGpqRjT5MmTMXPmzEpt27Vr98p9vqhFixai9xKJpMpl5eXlNe6zpl4+puqsXbsWGzZswPr16+Hg4ABNTU34+vpWiu2rxl0x1686byuejL1tfEaMsWbo0aNH8PHxwZQpU+Dh4YGwsDCcPXsW//rXv4Q2NjY2OH/+vGi7c+fOVeqrtLRU1C4tLQ0FBQXo0KEDAKBDhw6IjY0VbRMbG4uOHTsK62/evCma4H/58mUUFBQIbYDnNxjMnj0bUVFRGDp0KLZv3w4AUFVVRVlZWV1DAQB47733cOnSJcjlclhaWopempqayMvLQ1paGvz9/dG7d2906NAB+fn5oj4qzvy8PJbWrVvj9u3bwvuysjKkpKTUaEyXL1+uNB5LS8sGufvw9OnTld6/+JlevHhRNNE9NjYWSkpKsLGxeWW/VX1esbGxGDRoEMaOHYtOnTrBwsIC6enptRqvo6MjsrOzq91O0fFkrDqciDHWDC1cuBBEhFWrVgF4fvlq3bp1WLBgAbKysgAAkydPxpUrV+Dn54f09HTs27cP4eHhACA6a9aiRQvMmDEDZ86cwYULF+Dj44MPPvhAuIw5f/58hIeHIyQkBBkZGfi///s/HDx4EPPmzQMAeHp6wsHBAWPGjEFCQgLOnj2Lzz//HG5ubujWrRseP36M6dOnIyYmBtevX0dsbCzOnTsnJAVyuRzFxcWIjo7GvXv38OjRo1rHY9q0abh//z5GjRqFc+fOITMzE8eOHcP48eNRVlYGXV1d6Ovr49///jeuXr2K3377DXPmzBH1YWBgAA0NDURGRuLOnTt48OABAKBXr144evQojh49iitXrmDKlCmV7jqtip+fH+Li4jB9+nQkJSUhIyMDhw4dwvTp02t9fHWxf/9+bNu2Denp6QgICMDZs2eFfY8ZMwbq6urw9vZGSkoKTp48iRkzZmDcuHEwNDR8Zb9yuRz//e9/cevWLeGuVCsrKxw/fhxxcXFITU3F5MmTRXfN1oSbmxs+/PBDDBs2DMePH8e1a9fwn//8B5GRkQAUH0/GqqXoSWqMsYYVExNDysrK9Pvvv1da17dvX+rVqxeVl5cTEdGhQ4fI0tKS1NTUyN3dnUJCQgiAMLm5YnL4gQMHyMLCgtTU1MjT05OuX78u6nfLli1kYWFBLVq0IGtra9qxY4do/fXr12ngwIGkqalJWlpa9OmnnwqTvktKSuizzz4jU1NTUlVVJRMTE5o+fbpogvWXX35J+vr6BIACAgKqPO7XTepPT0+nIUOGkI6ODmloaJCtrS35+voKsTh+/Dh16NCB1NTUyNHRkWJiYggA/fTTT0IfoaGhZGpqSkpKSsJdn0+fPqUpU6aQnp4eGRgYUFBQUJWT9auawH727Fnq06cPSaVS0tTUJEdHR1qxYkW1x1DVZP1OnTqJ2nh7e9OgQYNEy16+oQAAbd68mfr06UNqamokl8tp7969om3+/PNP8vDwIHV1ddLT06OJEyeK7litaj9ERPHx8eTo6EhqampU8ScoLy+PBg0aRFKplAwMDMjf358+//xz0fY1uekhLy+Pxo8fT/r6+qSurk729vZ05MgRYX1t48lYQ5AQvTR5gTHGqrFixQr861//qlQnjDUtEokEP/30EwYPHqzooTDW5PFkfcZYtbZs2YL3338f+vr6iI2Nxdq1a/lSDmOMvUWciDHGqpWRkYHly5fj/v37aNeuHebOnYuFCxcqeliMMdZk8KVJxhhjjDEF4bsmGWOMMcYUhBMxxhhjjDEF4USMMcYYY0xBOBFjjDHGGFMQTsQYY4wxxhSEEzHGGGOMMQXhRIwxxhhjTEE4EWOMMcYYU5D/BzlUXQGmG8eYAAAAAElFTkSuQmCC", "text/plain": [ "<Figure size 640x480 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sorted_idx = model_xgb.feature_importances_.argsort()\n", "plt.barh(top_met.index, model_xgb.feature_importances_[idx])[::-1]\n", "plt.xlabel(\"Xgboost Feature Importance\")" ] }, { "cell_type": "markdown", "id": "29a668b0", "metadata": { "scrolled": true }, "source": [ "#### The above plot shows the feature importance from low importance to high importance found by the model." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.16" } }, "nbformat": 4, "nbformat_minor": 5 }