master d89871dcdfba cached
62 files
32.9 MB
8.6M tokens
1 requests
Copy disabled (too large) Download .txt
Showing preview only (34,477K chars total). Download the full file to get everything.
Repository: Abdullah-khan0/100-DaysOf-Code-dataScience
Branch: master
Commit: d89871dcdfba
Files: 62
Total size: 32.9 MB

Directory structure:
gitextract_wsbu4mgw/

├── 01. Day 1 - introduction to Python/
│   ├── Dictionaries.ipynb
│   ├── List.ipynb
│   ├── Sets.ipynb
│   └── Touples.ipynb
├── 02. Day 2 - Python Loops and If-else/
│   └── loop-if-else.ipynb
├── 03. Day 3- Python Functions/
│   └── Python Functions .ipynb
├── 04. Day 4 - Python oops/
│   └── Python Oops.ipynb
├── 05. Day 5 - Python Modules/
│   └── Python Modules.ipynb
├── 07. Day 7 - NumPy Random/
│   └── NumPy Random.ipynb
├── 08. Day 8 - Pandas Introduction/
│   └── Pandas Introduction.ipynb
├── 09. Day 9 - Pandas - ipl data analysis/
│   └── Pandas -Analysis of ipl data.ipynb
├── 10. Day 10 - Data Manipulation in Pandas/
│   └── Data Manipulation.ipynb
├── 100. Day 100 - Brain Tumor Classification/
│   └── brain-tumor-classification.ipynb
├── 11. Day 11 - Matplotlib Introduction/
│   └── Matplotlib Introduction.ipynb
├── 12. Day 12 - Matplotlib Line/
│   └── Matplotlib Line.ipynb
├── 13. Day 13 -Matplotlib Bar-pie-Scatter Plot/
│   └── Matplotlib Bar Plot.ipynb
├── 14. Day 14 - Seaborn Introduction/
│   └── Seaborn Introduction.ipynb
├── 15. Day 15 - Seaborn Plots Types/
│   └── Seaborn Plots.ipynb
├── 22. Day 22 - Evaluation Metrics/
│   └── Performance Metrics.ipynb
├── 23. Day 23 - Train-Test-Split/
│   └── Train-Test_Split.ipynb
├── 25. Day 25 - Implementation Cross-Validation Techniques/
│   └── Techniques For cross validation.ipynb
├── 29. Day 29 - Simple Linear Regression/
│   └── simple-linear-regression.ipynb
├── 31. Day 31 - Implementation Of Multiple Linear Regression/
│   └── multiple-linear-regression.ipynb
├── 33. Day 33 - Logistic Regression/
│   └── logistic-regression.ipynb
├── 35. Day 35 - Implementation Of SVM/
│   └── svm-for-classification.ipynb
├── 37. Day 37 - Implementation Of KNN/
│   └── knn-for-classification-mobile-price-prediction.ipynb
├── 39. Day 39 - Implementation Of Decision Tree Algorithm/
│   └── decision-tree-algorithm.ipynb
├── 41. Day 41 - Random Forest Implementation/
│   └── random-forest.ipynb
├── 42. Day 42 - Hyperparameter Tuning Random Forest/
│   └── hyperparameter-tuning.ipynb
├── 43. Day 43 - Ensamble Learning Implementation/
│   └── ensamble-learning.ipynb
├── 45. Day 45 - Implementation of Naive Bayes/
│   └── gaussian-naive-bayes.ipynb
├── 47. Day 47 - Implementation of K Mean Clustering/
│   └── k-mean-clustering.ipynb
├── 49. Day 49 - DBSCAN Clustering Algorithm Implementation/
│   └── dbscan-clustering.ipynb
├── 50. Day 50 - Implementation of Hierarchical Clustering/
│   └── hierarchical-clustering.ipynb
├── 52. Day 52 - implementation of Gaussian Mixture Model/
│   └── gaussian-mixture-model.ipynb
├── 53. Day 53 - Fuzzy C-Mean Clustering implementation/
│   └── fuzzy-c-mean.ipynb
├── 56. Day 56 - Implementation of Apriori Algorithm/
│   └── apriori-algorithm.ipynb
├── 58. Day 58 - PCA Breast Cancer Dataset/
│   └── pca-cancer-dataset.ipynb
├── 60. Day 60 - LDA - WineQuality/
│   └── lda-wine-quality.ipynb
├── 62. Day 62 - Q - Learning BTC Dataset/
│   └── q-learning-bitcoins.ipynb
├── 63. Day 63 - DQN Algorithm Salesforce dataset/
│   └── dqn-algorithm.ipynb
├── 65. Day 65 - Implementation of Genetic Algorithm/
│   └── genetic-algorithm.ipynb
├── 67. Day 67 - Ridge Regression implementation/
│   └── ridge-regression.ipynb
├── 68. Day 68 - Lasso Regression implementation/
│   └── lasso-regression.ipynb
├── 69. Day 69 - ElasticNet Regression/
│   └── elasticnet-regression.ipynb
├── 71. Day 71 - Time Series Analysis implement/
│   └── time-series-analysis.ipynb
├── 72. Day 72 - SimpleTime Series Method/
│   └── simple-time-series-methods.ipynb
├── 73. Day 73 - Exponential smoothing methods/
│   └── exponential-smoothing-methods.ipynb
├── 74. Day 74 - Auto Regressive Methods/
│   └── auto-regressive-methods.ipynb
├── 76. Day 76 - Explainable AI-Shap/
│   └── explainable-ai-shap.ipynb
├── 79. Day 79 - NLP Text Classification/
│   └── nlp-text-classification.ipynb
├── 80. Day 80 - NLP Password Strength/
│   └── nlp-password-strength.ipynb
├── 81. Day 81 - NLP - Spam Detection/
│   └── nlp-spam-detection.ipynb
├── 82. Day 82 - Oversampling - Undersampling/
│   └── oversampling-undersampling.ipynb
├── 83. Day 83 - Twitter Sentiment Analysis/
│   └── twitter-sentiment-analysis.ipynb
├── 84. Day 84 - Emotion Detection - NLP/
│   └── emotion-detection-nlp.ipynb
├── 85. Day 85 - Language Detection - NLP/
│   └── language-detection-nlp.ipynb
├── 95. Day 95 - computer Vision Image processing/
│   └── image-processing.ipynb
├── 96. Day 96 - Image Processing/
│   └── image-processing.ipynb
├── 97. Day 97 - Watermark Using CV/
│   └── watermark-using-cv.ipynb
├── 98. Day 98 - Texture Features Extraction/
│   └── texture-features-extraction.ipynb
└── 99. Day 99 - Lane Detection/
    └── lane-detection-using-cv.ipynb

================================================
FILE CONTENTS
================================================

================================================
FILE: 01. Day 1 - introduction to Python/Dictionaries.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "93ac7a94",
   "metadata": {},
   "source": [
    "# -----------Python Dictionaries------------\n",
    "Dictionaries are used to store data values in key:value pairs.\n",
    "A dictionary is a collection which is ordered*, changeable and do not allow duplicates.\n",
    "Dictionaries are written with curly brackets, and have keys and values:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "db063f31",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'brand': 'Ford', 'model': 'Mustang', 'year': 1964, 'colors': ['red', 'white', 'blue']}\n",
      "4\n",
      "<class 'dict'>\n"
     ]
    }
   ],
   "source": [
    "dictt = {\n",
    "  \"brand\": \"Ford\",\n",
    "  \"model\": \"Mustang\",\n",
    "  \"year\": 1964,\n",
    " \"colors\": [\"red\", \"white\", \"blue\"]\n",
    "}\n",
    "print(dictt)\n",
    "print(len(dictt))\n",
    "print(type(dictt))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "26c30efc",
   "metadata": {},
   "source": [
    "# --------Access Dictionary Items----------\n",
    "You can access the items of a dictionary by referring to its key name, inside square brackets:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "69f847f2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Mustang\n",
      "Mustang\n",
      "dict_keys(['brand', 'model', 'year'])\n",
      "dict_values(['Ford', 'Mustang', 1964])\n",
      "dict_items([('brand', 'Ford'), ('model', 'Mustang'), ('year', 1964)])\n"
     ]
    }
   ],
   "source": [
    "dictt = {\n",
    "  \"brand\": \"Ford\",\n",
    "  \"model\": \"Mustang\",\n",
    "  \"year\": 1964\n",
    "}\n",
    "x = dictt[\"model\"]\n",
    "y = dictt.get(\"model\")\n",
    "z = dictt.keys()\n",
    "a = dictt.values()\n",
    "b = dictt.items()\n",
    "\n",
    "print(x)\n",
    "print(y)\n",
    "print(z)\n",
    "print(a)\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7b4342df",
   "metadata": {},
   "source": [
    "# ----------Change Dictionary Items-----------\n",
    "You can change the value of a specific item by referring to its key name:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "ce633a06",
   "metadata": {},
   "outputs": [],
   "source": [
    "dictt = {\n",
    "  \"brand\": \"Ford\",\n",
    "  \"model\": \"Mustang\",\n",
    "  \"year\": 1964\n",
    "}\n",
    "dictt[\"year\"] = 2018"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "5fd5f790",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'brand': 'Ford', 'model': 'Mustang', 'year': 2018}\n"
     ]
    }
   ],
   "source": [
    "print(dictt)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3bd2f5a6",
   "metadata": {},
   "source": [
    "# --------Adding Items----------\n",
    "Adding an item to the dictionary is done by using a new index key and assigning a value to it"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "a8cc7778",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'brand': 'Ford', 'model': 'Mustang', 'year': 1964, 'color': 'red'}\n"
     ]
    }
   ],
   "source": [
    "dictt = {\n",
    "  \"brand\": \"Ford\",\n",
    "  \"model\": \"Mustang\",\n",
    "  \"year\": 1964\n",
    "}\n",
    "dictt[\"color\"] = \"red\"\n",
    "print(dictt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "e0b8b0c8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'brand': 'Ford', 'model': 'Mustang', 'year': 1964, 'color': 'red'}\n"
     ]
    }
   ],
   "source": [
    "dictt = {\n",
    "  \"brand\": \"Ford\",\n",
    "  \"model\": \"Mustang\",\n",
    "  \"year\": 1964\n",
    "}\n",
    "dictt.update({\"color\": \"red\"})\n",
    "print(dictt)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0edaaf37",
   "metadata": {},
   "source": [
    "# ---------Remove Dictionary Items----------\n",
    "The pop() method removes the item with the specified key name:\n",
    "The popitem() method removes the last inserted item (in versions before 3.7, a random item is removed instead):\n",
    "The del keyword removes the item with the specified key name:\n",
    "The del keyword can also delete the dictionary completely:\n",
    "The clear() method empties the dictionary:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "6c35908b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'brand': 'Ford', 'year': 1964}\n"
     ]
    }
   ],
   "source": [
    "dictt = {\n",
    "  \"brand\": \"Ford\",\n",
    "  \"model\": \"Mustang\",\n",
    "  \"year\": 1964\n",
    "}\n",
    "dictt.pop(\"model\")\n",
    "print(dictt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "658605fc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'brand': 'Ford', 'model': 'Mustang'}\n"
     ]
    }
   ],
   "source": [
    "dictt = {\n",
    "  \"brand\": \"Ford\",\n",
    "  \"model\": \"Mustang\",\n",
    "  \"year\": 1964\n",
    "}\n",
    "dictt.popitem()\n",
    "print(dictt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "65e03d36",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'brand': 'Ford', 'year': 1964}\n"
     ]
    }
   ],
   "source": [
    "dictt = {\n",
    "  \"brand\": \"Ford\",\n",
    "  \"model\": \"Mustang\",\n",
    "  \"year\": 1964\n",
    "}\n",
    "del dictt[\"model\"]\n",
    "print(dictt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "56ffb489",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{}\n"
     ]
    }
   ],
   "source": [
    "dictt = {\n",
    "  \"brand\": \"Ford\",\n",
    "  \"model\": \"Mustang\",\n",
    "  \"year\": 1964\n",
    "}\n",
    "dictt.clear()\n",
    "print(dictt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e8c6f972",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: 01. Day 1 - introduction to Python/List.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "8297fde3",
   "metadata": {},
   "source": [
    "# Python Lists\n",
    "List items are ordered, changeable, and allow duplicate values.\n",
    "Tuples are written with Square brackets.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "5f93ebc3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['apple', 'banana', 'cherry']\n"
     ]
    }
   ],
   "source": [
    "fruits = [\"apple\", \"banana\", \"cherry\"]\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "bdaa51e4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3\n",
      "<class 'list'>\n"
     ]
    }
   ],
   "source": [
    "print(len(fruits))\n",
    "print(type(fruits))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "9cf629df",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "cherry\n",
      "['banana']\n",
      "['banana', 'cherry']\n"
     ]
    }
   ],
   "source": [
    "print(fruits[-1])\n",
    "print(fruits[1:2])\n",
    "print(fruits[1:])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "b19a918b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Yes, 'apple' is in the fruits list\n"
     ]
    }
   ],
   "source": [
    "if \"apple\" in fruits:\n",
    "  print(\"Yes, 'apple' is in the fruits list\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d315ebcf",
   "metadata": {},
   "source": [
    "# ------Add List Items-----\n",
    "append()\n",
    "insert()\n",
    "extend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "f2dfa086",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['apple', 'banana', 'watermelon', 'cherry']\n"
     ]
    }
   ],
   "source": [
    "#Insert \"watermelon\" as the third item:\n",
    "fruits.insert(2, \"watermelon\")\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "fe7a8485",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['apple', 'banana', 'watermelon', 'cherry', 'orange']\n"
     ]
    }
   ],
   "source": [
    "#Using the append() method to append an item:\n",
    "fruits.append(\"orange\")\n",
    "print(fruits)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "83fe72d0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['apple', 'banana', 'cherry', 'mango', 'pineapple', 'papaya']\n"
     ]
    }
   ],
   "source": [
    "#Add the elements of tropical to thislist:\n",
    "fruits = [\"apple\", \"banana\", \"cherry\"]\n",
    "fruits2 = [\"mango\", \"pineapple\", \"papaya\"]\n",
    "fruits.extend(fruits2)\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "25d7c38e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['apple', 'banana', 'cherry', 'kiwi', 'orange']\n"
     ]
    }
   ],
   "source": [
    "#Add elements of a tuple to a list:\n",
    "fruits = [\"apple\", \"banana\", \"cherry\"]\n",
    "fruits2 = (\"kiwi\", \"orange\")\n",
    "fruits.extend(fruits2)\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f5fababe",
   "metadata": {},
   "source": [
    "# ------Remove List Items--------\n",
    "remove(): it removes the specified item.\n",
    "pop():    it removes the specified index.\n",
    "del:      this keyword also removes the specified index:(can also delete the list completely.)\n",
    "clear():  this method empties the list (The list still remains, but it has no content)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "09337ed4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['apple', 'cherry', 'banana', 'kiwi']\n"
     ]
    }
   ],
   "source": [
    "#Remove the first occurance of \"banana\":\n",
    "#Remove Specified Item\n",
    "fruits = [\"apple\", \"banana\", \"cherry\", \"banana\", \"kiwi\"]\n",
    "fruits.remove(\"banana\")\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "57487639",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['apple', 'cherry']\n"
     ]
    }
   ],
   "source": [
    "#Remove Specified Index\n",
    "#The pop() method removes the specified index.\n",
    "\n",
    "fruits = [\"apple\", \"banana\", \"cherry\"]\n",
    "fruits.pop(1)\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "ed219792",
   "metadata": {},
   "outputs": [],
   "source": [
    "#The del keyword also removes the specified index:\n",
    "#The del keyword can also delete the list completely.\n",
    "\n",
    "fruits = [\"apple\", \"banana\", \"cherry\"]\n",
    "del fruits[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "847391c3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['banana', 'cherry']\n"
     ]
    }
   ],
   "source": [
    "print(fruits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "876b3021",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[]\n"
     ]
    }
   ],
   "source": [
    "#The clear() method empties the list.\n",
    "fruits = [\"apple\", \"banana\", \"cherry\"]\n",
    "fruits.clear()\n",
    "print(fruits)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eefe5632",
   "metadata": {},
   "source": [
    "# ------Sort Lists------\n",
    "sort():\n",
    "To sort descending, use the keyword argument reverse = True:\n",
    "\n",
    "reverse(): this method reverses the current sorting order of the elements."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "b8307e7c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['banana', 'kiwi', 'mango', 'orange', 'pineapple']\n"
     ]
    }
   ],
   "source": [
    "fruits = [\"orange\", \"mango\", \"kiwi\", \"pineapple\", \"banana\"]\n",
    "fruits.sort()\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "2a298226",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['pineapple', 'orange', 'mango', 'kiwi', 'banana']\n"
     ]
    }
   ],
   "source": [
    "fruits = [\"orange\", \"mango\", \"kiwi\", \"pineapple\", \"banana\"]\n",
    "fruits.sort(reverse=True)\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "9667d9a2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['cherry', 'Kiwi', 'Orange', 'banana']\n"
     ]
    }
   ],
   "source": [
    "fruits = [\"banana\", \"Orange\", \"Kiwi\", \"cherry\"]\n",
    "fruits.reverse()\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0a5c65af",
   "metadata": {},
   "source": [
    "# ---------Join Two Lists--------\n",
    "using the + operator.\n",
    "Append list2 into list1:\n",
    "Use the extend() method to add list2 at the end of list1:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "bfb34d16",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['a', 'b', 'c', 1, 2, 3]\n"
     ]
    }
   ],
   "source": [
    "list1 = [\"a\", \"b\", \"c\"]\n",
    "list2 = [1, 2, 3]\n",
    "\n",
    "list3 = list1 + list2\n",
    "print(list3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "ab4d80b8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['a', 'b', 'c', 1, 2, 3]\n"
     ]
    }
   ],
   "source": [
    "list1 = [\"a\", \"b\" , \"c\"]\n",
    "list2 = [1, 2, 3]\n",
    "\n",
    "for x in list2:\n",
    "  list1.append(x)\n",
    "\n",
    "print(list1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "ffc7617a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['a', 'b', 'c', 1, 2, 3]\n"
     ]
    }
   ],
   "source": [
    "list1 = [\"a\", \"b\" , \"c\"]\n",
    "list2 = [1, 2, 3]\n",
    "\n",
    "list1.extend(list2)\n",
    "print(list1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5fc519b5",
   "metadata": {},
   "source": [
    "# ---------Copy Lists---------\n",
    "Make a copy of a list with the copy() method:\n",
    "built-in method list()."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "8309521d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['apple', 'banana', 'cherry']\n"
     ]
    }
   ],
   "source": [
    "fruits = [\"apple\", \"banana\", \"cherry\"]\n",
    "Newlist = fruits.copy()\n",
    "print(Newlist)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "41581f52",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['apple', 'banana', 'cherry']\n"
     ]
    }
   ],
   "source": [
    "fruits = [\"apple\", \"banana\", \"cherry\"]\n",
    "Newlist = list(fruits)\n",
    "print(Newlist)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3b420c42",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: 01. Day 1 - introduction to Python/Sets.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "d66abaed",
   "metadata": {},
   "source": [
    "# ---------Python Sets----------\n",
    "A set is a collection which is unordered, unchangeable*, and Duplicates Not Allowed.\n",
    "Sets are used to store multiple items in a single variable.\n",
    "* Note: Set items are unchangeable, but you can remove items and add new items.\n",
    "Sets are written with curly brackets.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "fb261ecc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'cherry', 'apple', 'banana'}\n",
      "3\n",
      "<class 'set'>\n"
     ]
    }
   ],
   "source": [
    "fruits = {\"apple\", \"banana\", \"cherry\", \"apple\"}\n",
    "\n",
    "print(fruits)\n",
    "print(len(fruits))\n",
    "print(type(fruits))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "e9a91847",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{True, 'cherry', 2, 'apple', 'banana'}\n"
     ]
    }
   ],
   "source": [
    "#Note: The values True and 1 are considered the same value in sets, and are treated as duplicates:\n",
    "fruits = {\"apple\", \"banana\", \"cherry\", True, 1, 2}\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ae13b0d5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'banana', 'cherry', 'apple'}\n"
     ]
    }
   ],
   "source": [
    "#Using the set() constructor to make a set:\n",
    "fruits = set((\"apple\", \"banana\", \"cherry\")) # note the double round-brackets\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5cb7db91",
   "metadata": {},
   "source": [
    "# -------Access Set Items----------\n",
    "You cannot access items in a set by referring to an index or a key.\n",
    "\n",
    "But you can loop through the set items using a for loop, or ask if a specified value is present in a set, by using the in keyword."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "71eb3585",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n"
     ]
    }
   ],
   "source": [
    "fruits = {\"apple\", \"banana\", \"cherry\"}\n",
    "print(\"banana\" in fruits)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7d5398f1",
   "metadata": {},
   "source": [
    "# -----Add Set Items-----------\n",
    "Once a set is created, you cannot change its items, but you can add new items.\n",
    "\n",
    "#Add an item to a set, using the add() method:\n",
    "#To add items from another set into the current set, use the update() method."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "b235b595",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'banana', 'cherry', 'orange', 'apple'}\n"
     ]
    }
   ],
   "source": [
    "fruits = {\"apple\", \"banana\", \"cherry\"}\n",
    "fruits.add(\"orange\")\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "4f9f60a7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'cherry', 'pineapple', 'papaya', 'mango', 'apple', 'banana'}\n"
     ]
    }
   ],
   "source": [
    "fruits = {\"apple\", \"banana\", \"cherry\"}\n",
    "fruits2 = {\"pineapple\", \"mango\", \"papaya\"}\n",
    "fruits.update(fruits2)\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "857b5260",
   "metadata": {},
   "source": [
    "# ---------Remove Set Items-----------\n",
    "Remove \"banana\" by using the remove() method:\n",
    "Remove \"banana\" by using the discard() method:\n",
    "Remove a random item by using the pop() method:\n",
    "The clear() method empties the set:\n",
    "The del keyword will delete the set completely:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "02ec77b3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'cherry', 'apple'}\n"
     ]
    }
   ],
   "source": [
    "fruits = {\"apple\", \"banana\", \"cherry\"}\n",
    "fruits.remove(\"banana\")\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "e2808d90",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'cherry', 'apple'}\n"
     ]
    }
   ],
   "source": [
    "fruits = {\"apple\", \"banana\", \"cherry\"}\n",
    "fruits.discard(\"banana\")\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "ab8ecde2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "banana\n",
      "{'cherry', 'apple'}\n"
     ]
    }
   ],
   "source": [
    "fruits = {\"apple\", \"banana\", \"cherry\"}\n",
    "x = fruits.pop()\n",
    "print(x)\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "0de0c3b4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "set()\n"
     ]
    }
   ],
   "source": [
    "fruits = {\"apple\", \"banana\", \"cherry\"}\n",
    "fruits.clear()\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "bb664ac3",
   "metadata": {},
   "outputs": [],
   "source": [
    "fruits = {\"apple\", \"banana\", \"cherry\"}\n",
    "del fruits"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9c1881dd",
   "metadata": {},
   "source": [
    "# --------Join Two Sets--------\n",
    "The union() method returns a new set with all items from both sets:\n",
    "The update() method inserts the items in set2 into set1:\n",
    "(Keep ONLY the Duplicates): The intersection_update() method will keep only the items that are present in both sets.\n",
    "(Keep All, But NOT the Duplicates):The symmetric_difference_update() method will keep only the elements that are NOT present in both sets.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "c2805145",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{1, 'b', 2, 3, 'a', 'c'}\n"
     ]
    }
   ],
   "source": [
    "set1 = {\"a\", \"b\" , \"c\"}\n",
    "set2 = {1, 2, 3}\n",
    "set3 = set1.union(set2)\n",
    "print(set3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "1c0da92a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'apple'}\n"
     ]
    }
   ],
   "source": [
    "x = {\"apple\", \"banana\", \"cherry\"}\n",
    "y = {\"google\", \"microsoft\", \"apple\"}\n",
    "x.intersection_update(y)\n",
    "print(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "a0b400f6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'cherry', 'banana', 'microsoft', 'google'}\n"
     ]
    }
   ],
   "source": [
    "x = {\"apple\", \"banana\", \"cherry\"}\n",
    "y = {\"google\", \"microsoft\", \"apple\"}\n",
    "x.symmetric_difference_update(y)\n",
    "print(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "5ea9560d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{1, 'b', 2, 3, 'a', 'c'}\n"
     ]
    }
   ],
   "source": [
    "set1 = {\"a\", \"b\" , \"c\"}\n",
    "set2 = {1, 2, 3}\n",
    "set1.update(set2)\n",
    "print(set1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "252f3423",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: 01. Day 1 - introduction to Python/Touples.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "4e4a3687",
   "metadata": {},
   "source": [
    "# --------Touples-------\n",
    "Tuple items are ordered, unchangeable, and allow duplicate values.\n",
    "\n",
    "Tuples are written with round brackets."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "5d48e81c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('apple', 'banana', 'cherry', 'apple', 'cherry')\n",
      "5\n",
      "<class 'tuple'>\n"
     ]
    }
   ],
   "source": [
    "fruits = (\"apple\", \"banana\", \"cherry\", \"apple\", \"cherry\")\n",
    "print(fruits)\n",
    "print(len(fruits))\n",
    "print(type(fruits))\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "66d32d29",
   "metadata": {},
   "source": [
    "The tuple() Constructor\n",
    "It is also possible to use the tuple() constructor to make a tuple."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "575340e8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('apple', 'banana', 'cherry')\n"
     ]
    }
   ],
   "source": [
    "fruits = tuple((\"apple\", \"banana\", \"cherry\")) # note the double round-brackets\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "81218e63",
   "metadata": {},
   "source": [
    "# ---------Access Tuple Items---------------"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "6cd4edf0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "banana\n",
      "mango\n",
      "('cherry', 'orange', 'kiwi')\n",
      "('apple', 'banana', 'cherry', 'orange')\n",
      "('cherry', 'orange', 'kiwi', 'melon', 'mango')\n",
      "('orange', 'kiwi', 'melon')\n"
     ]
    }
   ],
   "source": [
    "fruits = (\"apple\", \"banana\", \"cherry\", \"orange\", \"kiwi\", \"melon\", \"mango\")\n",
    "print(fruits[1])\n",
    "print(fruits[-1])\n",
    "print(fruits[2:5])\n",
    "print(fruits[:4])\n",
    "print(fruits[2:])\n",
    "print(fruits[-4:-1])\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "95113540",
   "metadata": {},
   "source": [
    "# -------------Update Tuples-------------\n",
    "Once a tuple is created, you cannot change its values. Tuples are unchangeable, or immutable as it also is called.\n",
    "\n",
    "But there is a workaround. You can convert the tuple into a list, change the list, and convert the list back into a tuple.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "668ae966",
   "metadata": {},
   "outputs": [],
   "source": [
    "#Convert the tuple into a list, add \"orange\", and convert it back into a tuple:\n",
    "fruits = (\"apple\", \"banana\", \"cherry\")\n",
    "y = list(fruits)\n",
    "y.append(\"orange\")\n",
    "fruits= tuple(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "251e140a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('apple', 'banana', 'cherry', 'orange')\n"
     ]
    }
   ],
   "source": [
    "print(fruits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "d4080cb0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "('banana', 'cherry')\n"
     ]
    }
   ],
   "source": [
    "#Convert the tuple into a list, remove \"apple\", and convert it back into a tuple:\n",
    "fruits = (\"apple\", \"banana\", \"cherry\")\n",
    "y = list(fruits)\n",
    "y.remove(\"apple\")\n",
    "fruits = tuple(y)\n",
    "print(fruits)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "7f7b310d",
   "metadata": {},
   "outputs": [],
   "source": [
    "#The del keyword can delete the tuple completely:\n",
    "fruits = (\"apple\", \"banana\", \"cherry\")\n",
    "del fruits"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "09c80463",
   "metadata": {},
   "source": [
    "# --------Unpack Tuples----------------\n",
    "When we create a tuple, we normally assign values to it. This is called \"packing\" a tuple:\n",
    "But, in Python, we are also allowed to extract the values back into variables. This is called \"unpacking\":"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fc7c2c4d",
   "metadata": {},
   "source": [
    "#unpacking\n",
    "fruits = (\"apple\", \"banana\", \"cherry\")#packing\n",
    "\n",
    "(green, yellow, red) = fruits\n",
    "\n",
    "print(green)\n",
    "print(yellow)\n",
    "print(red)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "08779720",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "apple\n",
      "banana\n",
      "['cherry', 'strawberry', 'raspberry']\n"
     ]
    }
   ],
   "source": [
    "#Using Asterisk*\n",
    "#Assign the rest of the values as a list called \"red\":\n",
    "\n",
    "fruits = (\"apple\", \"banana\", \"cherry\", \"strawberry\", \"raspberry\")\n",
    "\n",
    "(green, yellow, *red) = fruits\n",
    "\n",
    "print(green)\n",
    "print(yellow)\n",
    "print(red)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b5097c4b",
   "metadata": {},
   "source": [
    "# ------------Loop Tuples-----------\n",
    "Print all items by referring to their index number:\n",
    "Print all items, using a while loop to go through all the index numbers:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "f14d84ab",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "apple\n",
      "banana\n",
      "cherry\n"
     ]
    }
   ],
   "source": [
    "fruits = (\"apple\", \"banana\", \"cherry\")\n",
    "for i in range(len(fruits)):\n",
    "  print(fruits[i])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "fe5fe838",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "apple\n",
      "banana\n",
      "cherry\n"
     ]
    }
   ],
   "source": [
    "fruits = (\"apple\", \"banana\", \"cherry\")\n",
    "i = 0\n",
    "while i < len(fruits):\n",
    "  print(fruits[i])\n",
    "  i = i + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7a1d691b",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: 02. Day 2 - Python Loops and If-else/loop-if-else.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "5430ac25",
   "metadata": {},
   "source": [
    "#  -----------If ... Else------------"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "5e4d74c8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "b is greater than a\n"
     ]
    }
   ],
   "source": [
    "a = 45\n",
    "b = 100\n",
    "if b > a:\n",
    "  print(\"b is greater than a\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7d673b55",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a and b are equal\n"
     ]
    }
   ],
   "source": [
    "a = 24\n",
    "b = 24\n",
    "if b > a:\n",
    "  print(\"b is greater than a\")\n",
    "elif a == b:\n",
    "  print(\"a and b are equal\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "b358f0d6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a is greater than b\n"
     ]
    }
   ],
   "source": [
    "a = 100\n",
    "b = 45\n",
    "if b > a:\n",
    "  print(\"b is greater than a\")\n",
    "elif a == b:\n",
    "  print(\"a and b are equal\")\n",
    "else:\n",
    "  print(\"a is greater than b\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3b8ce23b",
   "metadata": {},
   "source": [
    "# --------------Python Loops-------------\n",
    "Python has two primitive loop commands:\n",
    "while loops\n",
    "for loops"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "3c266164",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1\n",
      "2\n",
      "3\n"
     ]
    }
   ],
   "source": [
    "x = 1\n",
    "while x < 4:\n",
    "  print(x)\n",
    "  x = x + 1\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "1611b5a4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1\n",
      "2\n",
      "3\n"
     ]
    }
   ],
   "source": [
    "#With the break statement we can stop the loop even if the while condition is true:\n",
    "x = 1\n",
    "while x < 4:\n",
    "  print(x)\n",
    "  if x == 3:\n",
    "    break\n",
    "  x = x + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "261163c9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1\n",
      "2\n",
      "4\n",
      "5\n"
     ]
    }
   ],
   "source": [
    "#With the continue statement we can stop the current iteration, and continue with the next:\n",
    "x = 0\n",
    "while x < 5:\n",
    "  x += 1\n",
    "  if x == 3:\n",
    "    continue\n",
    "  print(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "edec7b3a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "New number: 10\n",
      "Choose Upper Value\n",
      "New number: 15\n",
      "Choose Lower value\n",
      "New number: 12\n",
      "Choose Upper Value\n",
      "New number: 14\n",
      "Congratulations. You made it!\n"
     ]
    }
   ],
   "source": [
    "#Number Guessing Game Program In Python\n",
    "import random\n",
    "Max = 20\n",
    "Min = 1\n",
    "adaptive_Max = Max\n",
    "adaptive_Min = Min\n",
    "guessed = random.randint(Min, Max)\n",
    "guess = 0\n",
    "while guess != guessed:\n",
    "    guess = int(input(\"New number: \"))\n",
    "    if guess == 0:  \n",
    "        print(\"Sorry that you're giving up!\")\n",
    "        break   \n",
    "    elif guess > guessed:\n",
    "        adaptive_Max = guess - 1\n",
    "        print(\"Choose Lower value\")\n",
    "    elif guess < guessed:\n",
    "        adaptive_Max = guess + 1\n",
    "        print(\"Choose Upper Value\")   \n",
    "else:\n",
    "    print(\"Congratulations. You made it!\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c592ffe6",
   "metadata": {},
   "source": [
    "# ------------for Loop--------------"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "9ee0a568",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "apple\n",
      "banana\n",
      "cherry\n"
     ]
    }
   ],
   "source": [
    "fruits = [\"apple\", \"banana\", \"cherry\"]\n",
    "for x in fruits:\n",
    "  print(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "b46e414f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "apple\n",
      "banana\n"
     ]
    }
   ],
   "source": [
    "#With the break statement we can stop the loop before it has looped through all the items:\n",
    "fruits = [\"apple\", \"banana\", \"cherry\"]\n",
    "for x in fruits:\n",
    "  print(x)\n",
    "  if x == \"banana\":\n",
    "    break"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e9cca064",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "apple\n",
      "cherry\n"
     ]
    }
   ],
   "source": [
    "#With the continue statement we can stop the current iteration of the loop, and continue with the next:\n",
    "fruits = [\"apple\", \"banana\", \"cherry\"]\n",
    "for x in fruits:\n",
    "  if x == \"banana\":\n",
    "    continue\n",
    "  print(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "1648f51f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2\n",
      "3\n",
      "4\n",
      "5\n"
     ]
    }
   ],
   "source": [
    "for x in range(2, 6):\n",
    "  print(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "97aab179",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                            *  \n",
      "                           * *  \n",
      "                          * * *  \n",
      "                         * * * *  \n",
      "                        * * * * *  \n",
      "                       * * * * * *  \n",
      "                      * * * * * * *  \n",
      "                     * * * * * * * *  \n",
      "                    * * * * * * * * *  \n",
      "                   * * * * * * * * * *  \n",
      "                  * * * * * * * * * * *  \n",
      "                 * * * * * * * * * * * *  \n",
      "                * * * * * * * * * * * * *  \n",
      "               * * * * * * * * * * * * * *  \n",
      "              * * * * * * * * * * * * * * *  \n"
     ]
    }
   ],
   "source": [
    "#triangle pattern of star\n",
    "def pattern(n):\n",
    "      k = 2 * n - 2\n",
    "      for i in range(0,n):\n",
    "           for j in range(0,k):\n",
    "               print(end=\" \")\n",
    "           k = k - 1\n",
    "           for j in range(0, i+1):\n",
    "                print(\"*\", end=\" \")\n",
    "           print(\" \")\n",
    "  \n",
    "pattern(15)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "096433a7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "* \r\n",
      "* * \r\n",
      "* * * \r\n",
      "* * * * \r\n",
      "* * * * * \r\n",
      "* * * * \r\n",
      "* * * \r\n",
      "* * \r\n",
      "* \r\n",
      "\r\n"
     ]
    }
   ],
   "source": [
    "#Right start pattern of star\n",
    "rows = 5\n",
    "for i in range(0, rows):\n",
    "    for j in range(0, i + 1):\n",
    "        print(\"*\", end=' ')\n",
    "    print(\"\\r\")\n",
    "\n",
    "for i in range(rows, 0, -1):\n",
    "    for j in range(0, i - 1):\n",
    "        print(\"*\", end=' ')\n",
    "    print(\"\\r\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "9bce24f7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "* * * * * \n",
      " * * * * \n",
      "  * * * \n",
      "   * * \n",
      "    * \n",
      "    * \n",
      "   * * \n",
      "  * * * \n",
      " * * * * \n",
      "* * * * * \n"
     ]
    }
   ],
   "source": [
    "#Sandglass pattern of star\n",
    "rows = 5\n",
    "i = 0\n",
    "while i <= rows - 1:\n",
    "    j = 0\n",
    "    while j < i:\n",
    "        # display space\n",
    "        print('', end=' ')\n",
    "        j += 1\n",
    "    k = i\n",
    "    while k <= rows - 1:\n",
    "        print('*', end=' ')\n",
    "        k += 1\n",
    "    print()\n",
    "    i += 1\n",
    "\n",
    "i = rows - 1\n",
    "while i >= 0:\n",
    "    j = 0\n",
    "    while j < i:\n",
    "        print('', end=' ')\n",
    "        j += 1\n",
    "    k = i\n",
    "    while k <= rows - 1:\n",
    "        print('*', end=' ')\n",
    "        k += 1\n",
    "    print('')\n",
    "    i -= 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "acb6ef76",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "**************\n",
      "******__******\n",
      "*****____*****\n",
      "****______****\n",
      "***________***\n",
      "**__________**\n",
      "*____________*\n"
     ]
    }
   ],
   "source": [
    "#Pant style pattern of stars\n",
    "rows = 14\n",
    "print(\"*\" * rows, end=\"\\n\")\n",
    "i = (rows // 2) - 1\n",
    "j = 2\n",
    "while i != 0:\n",
    "    while j <= (rows - 2):\n",
    "        print(\"*\" * i, end=\"\")\n",
    "        print(\"_\" * j, end=\"\")\n",
    "        print(\"*\" * i, end=\"\\n\")\n",
    "        i = i - 1\n",
    "        j = j + 2"
   ]
  }
 ],
 "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.11.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: 03. Day 3- Python Functions/Python Functions .ipynb
================================================
{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "f88e343c",
   "metadata": {},
   "source": [
    "# -----------Python Functions-----------\n",
    "A function is a block of code that performs a specific task whenever it is called. \n",
    "There are two types of functions:\n",
    "built-in functions\n",
    "user-defined functions\n",
    "\n",
    "1. built-in functions:\n",
    "These functions are defined and pre-coded in python.  examples:\n",
    "min(), max(), len(), sum(), type(), range(), dict(), list(), tuple(), set(), print(), etc\n",
    "\n",
    "2. user-defined functions:\n",
    "We can create functions to perform specific tasks as per our needs. Such functions are called user-defined functions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "34333d32",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello, Jack David\n"
     ]
    }
   ],
   "source": [
    "def name(fname, lname):\n",
    "    print(\"Hello,\", fname, lname)\n",
    "\n",
    "name(\"Jack\", \"David\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8f034ccd",
   "metadata": {},
   "source": [
    "# Function Arguments\n",
    "There are four types of arguments that we can provide in a function:\n",
    "1). Default Arguments\n",
    "2). Keyword Arguments\n",
    "3). Required Arguments\n",
    "4). Variable-length Arguments"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c7c03b57",
   "metadata": {},
   "source": [
    "Default arguments:\n",
    "We can provide a default value while creating a function.\n",
    "This way the function assumes a default value even if a value is not provided in the function call for that argument."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "bbc8612e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello, Amy Jack David\n"
     ]
    }
   ],
   "source": [
    "def name(fname, mname = \"Jack\", lname = \"David\"):\n",
    "    print(\"Hello,\", fname, mname, lname)\n",
    "\n",
    "name(\"Amy\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c9f9ddfd",
   "metadata": {},
   "source": [
    "Keyword arguments:\n",
    "We can provide arguments with key = value, this way the interpreter recognizes the arguments by the parameter name. Hence, the the order in which the arguments are passed does not matter."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "36a857c0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello, Jade Peter Wesker\n"
     ]
    }
   ],
   "source": [
    "def name(fname, mname, lname):\n",
    "    print(\"Hello,\", fname, mname, lname)\n",
    "\n",
    "name(mname = \"Peter\", lname = \"Wesker\", fname = \"Jade\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f88909a4",
   "metadata": {},
   "source": [
    "Required arguments:\n",
    "In case we don’t pass the arguments with a key = value syntax, then it is necessary to pass the arguments in the correct positional order and the number of arguments passed should match with actual function definition."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e7fb927b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello, Peter Ego Quill\n"
     ]
    }
   ],
   "source": [
    "def name(fname, mname, lname):\n",
    "    print(\"Hello,\", fname, mname, lname)\n",
    "\n",
    "name(\"Peter\", \"Ego\", \"Quill\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "640c8afa",
   "metadata": {},
   "source": [
    "Variable-length arguments:\n",
    "Sometimes we may need to pass more arguments than those defined in the actual function. This can be done using variable-length arguments.\n",
    "\n",
    "There are two ways to achieve this:\n",
    "Arbitrary Arguments:\n",
    "While creating a function, pass a * before the parameter name while defining the function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "cbf7b9c2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello, James Buchanan Barnes\n"
     ]
    }
   ],
   "source": [
    "def name(*name):\n",
    "    print(\"Hello,\", name[0], name[1], name[2])\n",
    "\n",
    "name(\"James\", \"Buchanan\", \"Barnes\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "487a120b",
   "metadata": {},
   "source": [
    "Keyword Arbitrary Arguments:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "abd12682",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello, James Buchanan Barnes\n"
     ]
    }
   ],
   "source": [
    "def name(**name):\n",
    "    print(\"Hello,\", name[\"fname\"], name[\"mname\"], name[\"lname\"])\n",
    "\n",
    "name(mname = \"Buchanan\", lname = \"Barnes\", fname = \"James\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f1db70d0",
   "metadata": {},
   "source": [
    "# return Statement\n",
    "The return statement is used to return the value of the expression back to the main function."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "446dbd28",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello, James Buchanan Barnes\n"
     ]
    }
   ],
   "source": [
    "def name(fname, mname, lname):\n",
    "    return \"Hello, \" + fname + \" \" + mname + \" \" + lname\n",
    "\n",
    "print(name(\"James\", \"Buchanan\", \"Barnes\"))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c5246f95",
   "metadata": {},
   "source": [
    "# Python Recursion\n",
    "We can let the function call itself, such a process is known as calling a function recursively in python."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "6ce1d916",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Enter The Number5\n",
      "number:  5\n",
      "Factorial:  120\n"
     ]
    }
   ],
   "source": [
    "def factorial(num): \n",
    "    if (num == 1 or num == 0):\n",
    "        return 1\n",
    "    else:\n",
    "        return (num * factorial(num - 1)) \n",
    " \n",
    "num = int(input(\"Enter The Number\"))\n",
    "print(\"number: \",num)\n",
    "print(\"Factorial: \",factorial(num))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "77667ae1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Enter the password length: 10\n",
      "Enter the number of passwords: 5\n",
      "+b]}}%j,.:\n",
      "TJ4x.Ha<t*\n",
      "3P~cN;7326\n",
      "ayEB@HA\"w0\n",
      ".tYpw#3.{R\n"
     ]
    }
   ],
   "source": [
    "#random Password Generator\n",
    "import random\n",
    "import string\n",
    "\n",
    "def generate_password(length=12):\n",
    "    characters = string.ascii_letters + string.digits + string.punctuation\n",
    "    password = ''.join(random.choice(characters) for _ in range(length))\n",
    "\n",
    "    return password\n",
    "try:\n",
    "    password_length = int(input(\"Enter the password length: \"))\n",
    "    num_passwords = int(input(\"Enter the number of passwords: \"))\n",
    "    for _ in range(num_passwords):\n",
    "        password = generate_password(password_length)\n",
    "        print(password)\n",
    "\n",
    "except ValueError:\n",
    "    print(\"Invalid input. Please enter valid numbers for password length and number of passwords.\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "72807bf7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Enter a time in seconds: 10\n",
      "countdown off!\n"
     ]
    }
   ],
   "source": [
    "#Countdown Timer\n",
    "\n",
    "import time\n",
    "def countdown(user_time):\n",
    "   while user_time >= 0:\n",
    "       mins, secs = divmod(user_time, 60)\n",
    "       timer = '{:02d}:{:02d}'.format(mins, secs)\n",
    "       print(timer, end='\\r')\n",
    "       time.sleep(1)\n",
    "       user_time -= 1\n",
    "   print('countdown off!')\n",
    "\n",
    "if __name__ == '__main__':\n",
    "   user_time = int(input(\"Enter a time in seconds: \"))\n",
    "   countdown(user_time)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "1f855326",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "         1 \n",
      "        1 1 \n",
      "       1 2 1 \n",
      "      1 3 3 1 \n",
      "     1 4 6 4 1 \n",
      "    1 5 10 10 5 1 \n",
      "   1 6 15 20 15 6 1 \n",
      "  1 7 21 35 35 21 7 1 \n"
     ]
    }
   ],
   "source": [
    "#Pascal's Triangle\n",
    "from math import factorial\n",
    "def pascal_triangle(n):\n",
    "   for i in range(n):\n",
    "       for j in range(n-i+1):\n",
    "           print(end=' ')\n",
    "       for j in range(i+1):       \n",
    "           print(factorial(i)//(factorial(j)*factorial(i-j)), end=' ')\n",
    "       print()\n",
    "\n",
    "if __name__ == '__main__':\n",
    "   pascal_triangle(8)"
   ]
  }
 ],
 "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.11.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: 04. Day 4 - Python oops/Python Oops.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "406a68cc",
   "metadata": {},
   "source": [
    "# --------------Python Oops---------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7d89771",
   "metadata": {},
   "source": [
    "# Creating a Class:\n",
    "A class is a blueprint or a template for creating objects while an object is an instance or a copy of the class with actual values. \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "711695a7",
   "metadata": {},
   "outputs": [],
   "source": [
    "#Create a class using the class keyword.\n",
    "class Details:\n",
    "    name = \"Aryan\"\n",
    "    address = \"Delhi\"\n",
    "    age = 25"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3d7cdd69",
   "metadata": {},
   "source": [
    "# Creating an Object:\n",
    "create object of the class."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "0b239a61",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Aryan\n",
      "Delhi\n",
      "25\n"
     ]
    }
   ],
   "source": [
    "class Details:\n",
    "    name = \"Aryan\"\n",
    "    address = \"Delhi\"\n",
    "    age = 25\n",
    "\n",
    "obj1 = Details()\n",
    "print(obj1.name)\n",
    "print(obj1.address)\n",
    "print(obj1.age)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8e63c263",
   "metadata": {},
   "source": [
    "# self method\n",
    "The self parameter is a reference to the current instance of the class, and is used to access variables that belong to the class.\n",
    "\n",
    "It must be provided as the extra parameter inside the method definition. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "9a90b671",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "My name is Aryan I'm from Delhi and I'm 25 years old.\n"
     ]
    }
   ],
   "source": [
    "class Details:\n",
    "    name = \"Aryan\"\n",
    "    address = \"Delhi\"\n",
    "    age = 25\n",
    "\n",
    "    def desc(self):\n",
    "        print(\"My name is\", self.name,\n",
    "              \"I'm from\",self.address,\n",
    "              \"and I'm\", self.age, \"years old.\")\n",
    "\n",
    "obj1 = Details()\n",
    "obj1.desc()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "27154158",
   "metadata": {},
   "source": [
    "# __init__ method\n",
    "The __init__ method is used to initialize the object’s state and contains statements that are executed at the time of object creation.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "9ee0df95",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Hello my name is John\n"
     ]
    }
   ],
   "source": [
    "#The string representation of an object WITHOUT the __str__() function:\n",
    "class Details:\n",
    "    def __init__(self, name, age):\n",
    "        self.name = name\n",
    "        self.age = age\n",
    "\n",
    "obj1 = Details(\"John\", 36)\n",
    "print(\"Hello my name is \" + obj1.name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "51cec7fc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "John(36)\n"
     ]
    }
   ],
   "source": [
    "#The string representation of an object WITH the __str__() function:\n",
    "class Details:\n",
    "    def __init__(self, name, age):\n",
    "        self.name = name\n",
    "        self.age = age\n",
    "\n",
    "    def __str__(self):\n",
    "        return f\"{self.name}({self.age})\"\n",
    "\n",
    "obj1 = Details(\"John\", 36)\n",
    "\n",
    "print(obj1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "102b4166",
   "metadata": {},
   "source": [
    "# Python Iterators\n",
    "Iterators in python are used to iterate over iterable objects or container datatypes like lists, tuples, dictionaries, sets, etc.\n",
    "\n",
    "It consists of __iter__() and __next__() methods.\n",
    "\n",
    "__iter__() : to initialize an iterator, use the __iter__() method.\n",
    "\n",
    "__next__() : This method returns the next item of the sequence.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "3bfd9ea2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "H\n",
      "e\n",
      "l\n",
      "l\n",
      "o\n",
      " \n",
      "W\n",
      "o\n",
      "r\n",
      "l\n",
      "d\n"
     ]
    }
   ],
   "source": [
    "#Using inbuilt iterators:\n",
    "string = 'Hello World'\n",
    "iterObj = iter(string)\n",
    "\n",
    "while True:\n",
    "    try:\n",
    "        char1 = next(iterObj)\n",
    "        print(char1)\n",
    "    except StopIteration:\n",
    "        break"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "98e61679",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n",
      "10\n",
      "20\n",
      "30\n",
      "40\n",
      "50\n",
      "60\n",
      "70\n",
      "80\n",
      "90\n",
      "100\n"
     ]
    }
   ],
   "source": [
    "#Creating Custom iterators:\n",
    "class multipleOf4:\n",
    "    def __iter__(self):\n",
    "        self.count = 0\n",
    "        return self\n",
    "\n",
    "    def __next__(self):\n",
    "         if self.count <= 100:\n",
    "            x = self.count\n",
    "            self.count += 10\n",
    "            return x\n",
    "         else:\n",
    "            raise StopIteration\n",
    "\n",
    "obj1 = multipleOf4()\n",
    "number = iter(obj1)\n",
    "\n",
    "for x in number:\n",
    "    print(x)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "024b8953",
   "metadata": {},
   "source": [
    "# --------------Python Try Except----------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a157b92d",
   "metadata": {},
   "source": [
    "The try block lets you test a block of code for errors.\n",
    "\n",
    "The except block lets you handle the error.\n",
    "\n",
    "The else block lets you execute code when there is no error.\n",
    "\n",
    "The finally block lets you execute code, regardless of the result of the try- and except blocks."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "5bde744d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Enter an integer: abcd\n",
      "Number entered is not an integer.\n"
     ]
    }
   ],
   "source": [
    "try:\n",
    "    num = int(input(\"Enter an integer: \"))\n",
    "except ValueError:\n",
    "    print(\"Number entered is not an integer.\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "de4044c3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Enter an integer: 55\n",
      "Integer Accepted.\n"
     ]
    }
   ],
   "source": [
    "try:\n",
    "    num = int(input(\"Enter an integer: \"))\n",
    "except ValueError:\n",
    "    print(\"Number entered is not an integer.\")\n",
    "else:\n",
    "    print(\"Integer Accepted.\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "81b22063",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Enter an integer: -90\n",
      "Integer Accepted.\n",
      "This block is always executed.\n"
     ]
    }
   ],
   "source": [
    "try:\n",
    "    num = int(input(\"Enter an integer: \"))\n",
    "except ValueError:\n",
    "    print(\"Number entered is not an integer.\")\n",
    "else:\n",
    "    print(\"Integer Accepted.\")\n",
    "finally:\n",
    "    print(\"This block is always executed.\")"
   ]
  }
 ],
 "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.11.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: 05. Day 5 - Python Modules/Python Modules.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "7a97688c",
   "metadata": {},
   "source": [
    "# Python Modules\n",
    "There are two types of python modules:\n",
    "\n",
    "**Built-in modules\n",
    "\n",
    "**User-defined modules"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1f6ca2ae",
   "metadata": {},
   "source": [
    "1. Built-in modules:\n",
    "\n",
    "math\n",
    "\n",
    "date\n",
    "\n",
    "os\n",
    "\n",
    "sys"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "e044f553",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Value of cos90 is: -0.4480736161291701\n",
      "Value of sin0 is: 0.0\n",
      "Value of tan45 is: 1.6197751905438615\n",
      "Value of pie is: 3.141592653589793\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "cos90 = math.cos(90)\n",
    "sin0 = math.sin(0)\n",
    "tan45 = math.tan(45)\n",
    "pie = math.pi\n",
    "print(\"Value of cos90 is:\", cos90)\n",
    "print(\"Value of sin0 is:\", sin0)\n",
    "print(\"Value of tan45 is:\", tan45)\n",
    "print(\"Value of pie is:\",pie)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "228f43e7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The value of tau is:  6.283185307179586\n",
      "euler's number is:  2.718281828459045\n"
     ]
    }
   ],
   "source": [
    "from math import e, tau    \n",
    "print( \"The value of tau is: \", tau )    \n",
    "print( \"euler's number is: \", e )  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "d0388ce3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10.0\n",
      "120\n",
      "3.141592653589793\n"
     ]
    }
   ],
   "source": [
    "from math import sqrt, factorial, pi\n",
    "print(sqrt(100))\n",
    "print(factorial(5))\n",
    "print(pi)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "2624b11b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6\n",
      "5\n"
     ]
    }
   ],
   "source": [
    "import math\n",
    "x = math.ceil(5.7) #math.ceil() method rounds a number upwards to its nearest integer.\n",
    "y = math.floor(5.7) #math.floor() method rounds a number downwards to its nearest integer,\n",
    "print(x)\n",
    "print(y) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "d559f025",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4 to the power of 3: 64\n"
     ]
    }
   ],
   "source": [
    "# The pow(x, y) function returns the value of x to the power of y (x^y).\n",
    "import math\n",
    "x = pow(4, 3)\n",
    "print(\"4 to the power of 3:\",x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "2b43a103",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Minimum value in x:  5\n",
      "Maximum value in y: 25\n"
     ]
    }
   ],
   "source": [
    "import math \n",
    "x = min(5, 10, 25)\n",
    "y = max(5, 10, 25)\n",
    "\n",
    "print(\"Minimum value in x: \",x)\n",
    "print('Maximum value in y:',y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "b10dc22e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "49.25\n"
     ]
    }
   ],
   "source": [
    "#The abs() function returns the absolute (positive) value of the specified number:\n",
    "import math\n",
    "x = abs(-49.25)\n",
    "print(x)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b76e42d1",
   "metadata": {},
   "source": [
    "# Data & Time\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "a0608836",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2023-09-27 23:36:08.875430\n",
      "2023\n",
      "9\n",
      "27\n"
     ]
    }
   ],
   "source": [
    "#using the datetime module\n",
    "import datetime\n",
    "now = datetime.datetime.now()\n",
    "print(now)\n",
    "print(now.year)\n",
    "print(now.month)\n",
    "print(now.day)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "59750299",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1695836110.0214937\n"
     ]
    }
   ],
   "source": [
    "import time\n",
    "print(time.time())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "96724317",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Wed Sep 27 23:08:18 2023\n"
     ]
    }
   ],
   "source": [
    "#print the current time in human readable format\n",
    "import time\n",
    "print(time.ctime())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "c6d73b27",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Wed Sep 27 23:09:05 2023\n"
     ]
    }
   ],
   "source": [
    "#the sleep() function inside time module is used to delay execution of current time thread by the given number of seconds.\n",
    "import time\n",
    "time.sleep(10)\n",
    "print(time.ctime())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "2809b70b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time.struct_time(tm_year=2022, tm_mon=7, tm_mday=24, tm_hour=19, tm_min=59, tm_sec=16, tm_wday=6, tm_yday=205, tm_isdst=0)\n"
     ]
    }
   ],
   "source": [
    "#To get the output of local time in struct_time format, use the localtime() function. \n",
    "import time\n",
    "\n",
    "print(time.localtime(1658672956.8853111))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "8c25e37d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time.struct_time(tm_year=2022, tm_mon=7, tm_mday=24, tm_hour=14, tm_min=29, tm_sec=16, tm_wday=6, tm_yday=205, tm_isdst=0)\n"
     ]
    }
   ],
   "source": [
    "#To get the output of Coordinated Universal Time in struct_time format, use the gmtime() function.\n",
    "import time\n",
    "print(time.gmtime(1658672956.8853111))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "9e740fba",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1658673879.0\n"
     ]
    }
   ],
   "source": [
    "#time.mktime():\n",
    "#We also have the reverse of localtime() function that prints seconds passed since epoch in local time. \n",
    "import time\n",
    "local_time = (2022, 7, 24, 20, 14, 39, 6, 205, 0)\n",
    "print(time.mktime(local_time))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "d0038380",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Sun Jul 24 20:14:39 2022\n"
     ]
    }
   ],
   "source": [
    "#The asctime() function takes struct_time and prints a single string representing it.\n",
    "import time\n",
    "local_time = (2022, 7, 24, 20, 14, 39, 6, 205, 0)\n",
    "print(time.asctime(local_time))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "71938a63",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time.struct_time(tm_year=2022, tm_mon=7, tm_mday=24, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=205, tm_isdst=-1)\n"
     ]
    }
   ],
   "source": [
    "#time.strptime():\n",
    "#This function parses string based on given format and returns it in struct_time format.\n",
    "import time\n",
    "local_time = \"24 July, 2022\"\n",
    "print(time.strptime(local_time, \"%d %B, %Y\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "60539943",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "     July 2022\n",
      "Mo Tu We Th Fr Sa Su\n",
      "             1  2  3\n",
      " 4  5  6  7  8  9 10\n",
      "11 12 13 14 15 16 17\n",
      "18 19 20 21 22 23 24\n",
      "25 26 27 28 29 30 31\n",
      "\n"
     ]
    }
   ],
   "source": [
    "#Calendar:\n",
    "#We can even print a calendar for a particular month. This can be done using the calendar module.\n",
    "import calendar\n",
    "print(calendar.month(2022, 7))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "12073630",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "C:\\Users\\ABDULLAH KHAN\n",
      "Khan Abdullah\n"
     ]
    }
   ],
   "source": [
    "import os\n",
    "print(os.getcwd())\n",
    "print(os.getlogin())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "11308b86",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3.11.3 | packaged by Anaconda, Inc. | (main, Apr 19 2023, 23:46:34) [MSC v.1916 64 bit (AMD64)]\n",
      "['C:\\\\Users\\\\ABDULLAH KHAN\\\\anaconda3\\\\Lib\\\\site-packages\\\\ipykernel_launcher.py', '-f', 'C:\\\\Users\\\\ABDULLAH KHAN\\\\AppData\\\\Roaming\\\\jupyter\\\\runtime\\\\kernel-37533992-db44-407b-b2f0-cdb41b923174.json']\n"
     ]
    }
   ],
   "source": [
    "#  using the sys module\n",
    "import sys\n",
    "print(sys.version)\n",
    "print(sys.argv)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "7fea41fd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\"name\": \"John Doe\", \"age\": 30, \"city\": \"New York\"}\n"
     ]
    }
   ],
   "source": [
    "# using the json module\n",
    "import json\n",
    "data = {\n",
    "    \"name\": \"John Doe\",\n",
    "    \"age\": 30,\n",
    "    \"city\": \"New York\"\n",
    "}\n",
    "json_data = json.dumps(data)\n",
    "print(json_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "5ab91b59",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "14\n",
      "1\n"
     ]
    }
   ],
   "source": [
    "#using the random module\n",
    "import random\n",
    "print(random.randint(1, 100))\n",
    "print(random.choice([1, 2, 3, 4, 5]))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4f89d57b",
   "metadata": {},
   "source": [
    "# User-defined modules in Python\n",
    "it is created by the user to simplify their project. These modules can contain functions, classes, variables, and other code that you can reuse across multiple scripts."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "1f0f683d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Enter first number:4\n",
      "Enter second number:2\n",
      "Addition 6\n",
      "Subtraction 2\n",
      "Multiplication 8\n",
      "Division 2.0\n"
     ]
    }
   ],
   "source": [
    "import math \n",
    "\n",
    "num1 = int(input(\"Enter first number:\"))\n",
    "num2 = int(input(\"Enter second number:\"))\n",
    "\n",
    "print(\"Addition\",num1 + num2)\n",
    "print(\"Subtraction\", num1-num2)\n",
    "print(\"Multiplication\",num1 * num2)\n",
    "print(\"Division\", num1/num2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "1c2db554",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The number is: 204\n",
      "The number is: 404\n"
     ]
    }
   ],
   "source": [
    "Number = 204    \n",
    "def AddNumber(): \n",
    "    global Number    \n",
    "    Number = Number + 200    \n",
    "print(\"The number is:\", Number)       \n",
    "# here, we are printing the number after performing the addition  \n",
    "AddNumber()    \n",
    "print(\"The number is:\", Number)   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c89a960c",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}


================================================
FILE: 07. Day 7 - NumPy Random/NumPy Random.ipynb
================================================
{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "bac89c8b",
   "metadata": {},
   "source": [
    "# ------------NumPy Random--------------"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "60cd2caf",
   "metadata": {},
   "source": [
    "Random number does NOT mean a different number every time. Random means something that can not be predicted logically.\n",
    "\n",
    "Example:\n",
    "\n",
    "x1: rand() method returns a random float between 0 and 1.\n",
    "\n",
    "x2: Generate a 1-D array containing 5 random floats:\n",
    "\n",
    "x3: Generate a 2-D array with 3 rows, each row containing 5 random numbers:\n",
    "\n",
    "x4: The choice() method allows you to generate a random value based on an array of values.\n",
    "\n",
    "x5: The choice() method also allows you to return an array of values.Add a size parameter to specify the shape of the array.\n",
    "\n",
    "x6: Generate a random integer from 0 to 100:\n",
    "\n",
    "x7: The randint() method takes a size parameter where you can specify the shape of an array.\n",
    "\n",
    "x8: Generate a 2-D array with 3 rows, each row containing 5 random integers from 0 to 100:\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "a5924994",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.6420626437552102\n",
      "----------***----------\n",
      "[0.14277928 0.51592968 0.03466499 0.32079076 0.81690386]\n",
      "----------***----------\n",
      "[[0.77115377 0.14559649 0.67952816 0.63087458 0.66081908]\n",
      " [0.12365142 0.42673273 0.48259759 0.99800023 0.79003666]\n",
      " [0.14348286 0.71427619 0.69492459 0.40122435 0.96524042]]\n",
      "----------***----------\n",
      "9\n",
      "----------***----------\n",
      "[[3 7 3 7 9]\n",
      " [5 5 9 9 9]\n",
      " [7 9 3 5 3]]\n",
      "----------***----------\n",
      "31\n",
      "----------***----------\n",
      "[23 85 18 48 82]\n",
      "----------***----------\n",
      "[[47 56 48 59  0]\n",
      " [64 88 33 70  8]\n",
      " [ 6 89 31 49 51]]\n"
     ]
    }
   ],
   "source": [
    "from numpy import random\n",
    "x1 = random.rand()\n",
    "x2 = random.rand(5)\n",
    "x3 = random.rand(3, 5)\n",
    "x4 = random.choice([3, 5, 7, 9])\n",
    "x5 = random.choice([3, 5, 7, 9], size=(3, 5))\n",
    "x6 = random.randint(100)\n",
    "x7 = random.randint(100, size=(5))\n",
    "x8 = random.randint(100, size=(3, 5))\n",
    "\n",
    "print(x1)\n",
    "print(\"----------***----------\")\n",
    "print(x2)\n",
    "print(\"----------***----------\")\n",
    "print(x3)\n",
    "print(\"----------***----------\")\n",
    "print(x4)\n",
    "print(\"----------***----------\")\n",
    "print(x5)\n",
    "print(\"----------***----------\")\n",
    "print(x6)\n",
    "print(\"----------***----------\")\n",
    "print(x7)\n",
    "print(\"----------***----------\")\n",
    "print(x8)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "03077a63",
   "metadata": {},
   "source": [
    "# Normal (Gaussian) Distribution\n",
    "It fits the probability distribution of many events, eg. IQ Scores, Heartbeat etc.\n",
    "\n",
    "Binomial Distribution:\n",
    "\n",
    "Poisson Distribution\n",
    "\n",
    "Uniform Distribution\n",
    "\n",
    "Logistic Distribution\n",
    "\n",
    "Multinomial Distribution\n",
    "\n",
    "Exponential Distribution\n",
    "\n",
    "Chi Square Distribution\n",
    "\n",
    "Rayleigh Distribution\n",
    "\n",
    "Pareto Distribution\n",
    "\n",
    "Zipf Distribution\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "daa3f379",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0.46831222 1.85429718 2.32701823]\n",
      " [5.14501762 1.85631046 0.55583493]]\n",
      "----------***----------\n",
      "[6 4 4 4 6 6 6 9 8 5]\n",
      "----------***----------\n",
      "[3 1 2 2 1 1 3 1 0 2]\n",
      "----------***----------\n",
      "[[0.4484118  0.30197194 0.96890467]\n",
      " [0.54854555 0.95066253 0.59543629]]\n",
      "----------***----------\n",
      "[[-1.09051331  0.80187832 -1.78843078]\n",
      " [ 0.54567334 -5.09685903 -1.11567729]]\n",
      "----------***----------\n",
      "[2 1 0 1 0 2]\n",
      "----------***----------\n",
      "[[1.37249255 2.33685167 2.55651578]\n",
      " [0.01356232 0.4687617  1.6651629 ]]\n",
      "----------***----------\n",
      "[[0.14493347 1.0267001  2.44671402]\n",
      " [1.05874351 1.69163538 0.66813062]]\n",
      "----------***----------\n",
      "[[1.20658832 2.5696103  1.63401152]\n",
      " [3.05331025 4.51676379 0.82912664]]\n",
      "----------***----------\n",
      "[[0.51837108 0.60779479 0.33870461]\n",
      " [0.00440749 0.36757406 0.60439129]]\n",
      "----------***----------\n",
      "[[ 1  9 15]\n",
      " [ 2  2  1]]\n"
     ]
    }
   ],
   "source": [
    "from numpy import random\n",
    "\n",
    "y1 = random.normal(loc=1, scale=2, size=(2, 3))\n",
    "y2 = random.binomial(n=10, p=0.5, size=10)\n",
    "y3 = random.poisson(lam=2, size=10)\n",
    "y4 = random.uniform(size=(2, 3))\n",
    "y5 = random.logistic(loc=1, scale=2, size=(2, 3))\n",
    "y6 = random.multinomial(n=6, pvals=[1/6, 1/6, 1/6, 1/6, 1/6, 1/6])\n",
    "y7 = random.exponential(scale=2, size=(2, 3))\n",
    "y8 = random.chisquare(df=2, size=(2, 3))\n",
    "y9 = random.rayleigh(scale=2, size=(2, 3))\n",
    "y10 = random.pareto(a=2, size=(2, 3))\n",
    "y11 = random.zipf(a=2, size=(2, 3))\n",
    "\n",
    "\n",
    "print(y1)\n",
    "print(\"----------***----------\")\n",
    "print(y2)\n",
    "print(\"----------***----------\")\n",
    "print(y3)\n",
    "print(\"----------***----------\")\n",
    "print(y4)\n",
    "print(\"----------***----------\")\n",
    "print(y5)\n",
    "print(\"----------***----------\")\n",
    "print(y6)\n",
    "print(\"----------***----------\")\n",
    "print(y7)\n",
    "print(\"----------***----------\")\n",
    "print(y8)\n",
    "print(\"----------***----------\")\n",
    "print(y9)\n",
    "print(\"----------***----------\")\n",
    "print(y10)\n",
    "print(\"----------***----------\")\n",
    "print(y11)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "36a2f131",
   "metadata": {},
   "source": [
    "# Visualization of Distribution\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "9ae3722f",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:11: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  sns.distplot(random.normal(size=1000), hist=False)\n",
      "C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:16: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  sns.distplot(random.binomial(n=10, p=0.5, size=1000), hist=True, kde=False)\n",
      "C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:22: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  sns.distplot(random.poisson(lam=2, size=1000), kde=False)\n",
      "C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:27: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  sns.distplot(random.uniform(size=1000), hist=False)\n",
      "C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:32: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  sns.distplot(random.logistic(size=1000), hist=False)\n",
      "C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:37: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  sns.distplot(random.multinomial(n=6, pvals=[1/6, 1/6, 1/6, 1/6, 1/6, 1/6]))\n",
      "C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:42: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  sns.distplot(random.exponential(size=1000), hist=False)\n",
      "C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:47: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  sns.distplot(random.chisquare(df=1, size=1000), hist=False)\n",
      "C:\\Users\\ABDULLAH KHAN\\AppData\\Local\\Temp\\ipykernel_13492\\1143792042.py:52: UserWarning: \n",
      "\n",
      "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
      "\n",
      "Please adapt your code to use either `displot` (a figure-level function with\n",
      "similar flexibility) or `kdeplot` (an axes-level function for kernel density plots).\n",
      "\n",
      "For a guide to updating your code to use the new functions, please see\n",
      "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
      "\n",
      "  sns.distplot(random.rayleigh(size=1000), hist=False)\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAASmCAYAAAD/KRjlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeVxU9f4/8NcwwAwgjKwzIIuoICrmgitmYipKrqmpWS6lphf1G5nXQrOwX1du3lJK0+pmohlqt1yvpmLmdkVTFHcNFQSVEUHZYdjO7w+cyZEdBg7L6/l4nMfDOedzPud9FOfMvPl83h+JIAgCiIiIiIiIiIiI6pGR2AEQEREREREREVHzw6QUERERERERERHVOyaliIiIiIiIiIio3jEpRURERERERERE9Y5JKSIiIiIiIiIiqndMShERERERERERUb1jUoqIiIiIiIiIiOodk1JERERERERERFTvmJQiIiIiIiIiIqJ6x6QUGVx4eDgkEgnkcjnu3LlT6rifnx+8vb1FiMwwpk+fjtatW1epnUQi0W0WFhZo3bo1Ro0ahQ0bNkCj0ZQ6x8/PD35+ftWK5+rVqwgJCUF8fHy1znv2WvHx8ZBIJPjss8+q1U9lli9fjp07d5baf+TIEUgkEhw5csSg1yOihkX7THh6s7e3h5+fH/773/+Wai+RSBASElL/gVaD9p6q+75bnXOf/XuTy+VQqVQYOHAgQkNDkZycXOqckJAQSCSSasWTk5ODkJCQar8Xl3Wt1q1bY8SIEdXqpzIREREICwsr81hj+Fkhotp79v3Q2NgYzs7OeOONN3Dv3r1q91eTz9uNQXmf7cPDw6vVT0Xvu+Up61ra50RKSkq1+qpIRd97qvodjRoeY7EDoKZLo9Hggw8+wA8//CB2KKIxMzPD4cOHAQC5ublITEzEr7/+ilmzZuHzzz/H/v374ezsrGu/du3aal/j6tWrWLZsGfz8/Kr1RlyTa9XE8uXLMX78eIwZM0Zvf/fu3REVFYWOHTvWSxxEJK4NGzbAy8sLgiBArVZjzZo1GDlyJHbv3o2RI0fq2kVFRem9LzZEw4cPR1RUFBwdHev8Wtq/t4KCAiQnJ+PEiRP49NNP8dlnn2Hbtm0YPHiwru3MmTMxbNiwavWfk5ODZcuWAUC1vqTV5Fo1ERERgcuXLyMoKKjUscbws0JEhqN9P8zNzcWxY8cQGhqKo0eP4tKlS7CwsKhyP/X1GVhsjo6OiIqKQtu2bat1XkXvu4a+VnVV9L1n6dKlePvtt+v0+lQ3mJSiOjNs2DBERERg4cKF6NKlS51dJzc3F2ZmZnXWf20YGRmhT58+evumTp2KN954AyNGjMD48eNx6tQp3bH6SNDk5OTA3Nxc9GSQlZVVqb8bImq6vL290aNHD93rYcOGwdraGlu2bNFLSjWG9wV7e3vY29vXy7We/XsbN24c3nnnHTz//PMYO3YsYmNjoVQqAQDOzs51nqTRPkPq41qVaQw/K0RkOE+/Hw4cOBBFRUX4f//v/2Hnzp147bXXqtyP2J+B64tMJqvz98mioiIUFhbWy7UqU9cJMao7nL5HdWbRokWwtbXFe++9V2nbvLw8BAcHw93dHaampmjVqhXmzp2LtLQ0vXbaqQHbt29Ht27dIJfLsWzZMt1UsIiICLz33ntwdHREixYtMHLkSDx48ACZmZl46623YGdnBzs7O7zxxhvIysrS6/urr77CCy+8AAcHB1hYWKBz585YsWIFCgoKDPnXAgDw9/fHrFmzcPr0aRw7dky3v6zhxOvWrUOXLl3QokULWFpawsvLC4sXLwZQMpz5lVdeAVDycNYOa9YOndVOlTx27Bh8fX1hbm6ON998s9xrAUBxcTH+8Y9/wNXVFXK5HD169MBvv/2m16a84bHPTueQSCTIzs7Gxo0bdbFpr1ne9L3du3ejb9++MDc3h6WlJYYMGYKoqKgyr3PlyhW8+uqrUCgUUCqVePPNN5Genl7m3zkRNSxyuRympqYwMTHR2//slCzttI3ff/8df/vb32BnZwdbW1uMHTsW9+/f1zu3uLgYK1asgJeXF2QyGRwcHDB16lTcvXtXr532vTEqKgq+vr4wMzND69atsWHDBgDA3r170b17d5ibm6Nz587Yv3+/3vllTcGLjIzE6NGj4ezsDLlcjnbt2mH27NkGnbag5erqis8//xyZmZn45ptvdPvLmlJ3+PBh+Pn5wdbWFmZmZnB1dcW4ceOQk5OD+Ph4XXJt2bJluvfp6dOn6/V37tw5jB8/HtbW1roP/RVNFdyxYweee+45yOVytGnTBl9++aXe8fKmMD77XPDz88PevXtx584dvak7WmVN37t8+TJGjx4Na2tryOVydO3aFRs3bizzOlu2bMGSJUvg5OQEKysrDB48GDdu3Cj/L56IGhRtEkRbLqSq3yeq+3kbKEnIL1y4EO7u7pDL5bCxsUGPHj2wZcsWvX7q43OsIAhYsWIF3NzcIJfL0b17d/z666+l2pU1pe7hw4d466234OLiAplMBnt7e/Tr1w+HDh3S/d2U976r7W/FihX45JNP4O7uDplMht9//73CqYKJiYkYO3YsrKysoFAo8Prrr+Phw4d6bcqbjt26dWvdM6my7z1lfT+p7nfM/fv3o3v37jAzM4OXlxe+//77cv4VyJA4UorqjKWlJT744AO8/fbbOHz4MF588cUy2wmCgDFjxuC3335DcHAw+vfvj4sXL+Kjjz5CVFQUoqKiIJPJdO3PnTuHa9eu4YMPPoC7uzssLCyQnZ0NAFi8eDEGDhyI8PBwxMfHY+HChXj11VdhbGyMLl26YMuWLTh//jwWL14MS0tLvQ/Kt27dwuTJk3VvWhcuXMA//vEPXL9+vU7ekEaNGoW1a9fi2LFjeOGFF8pss3XrVgQGBmL+/Pn47LPPYGRkhJs3b+Lq1asASqaQLF++HIsXL8ZXX32F7t27A9D/TUFSUhJef/11LFq0CMuXL4eRUcW56DVr1sDNzQ1hYWG6L3gBAQE4evQo+vbtW617jIqKwosvvoiBAwdi6dKlAEpGSJUnIiICr732Gvz9/bFlyxZoNBqsWLECfn5++O233/D888/rtR83bhwmTpyIGTNm4NKlSwgODgYAPkCIGiDtb1MFQcCDBw/wr3/9C9nZ2Zg8eXKVzp85cyaGDx+OiIgIJCYm4u9//ztef/113RRpAPjb3/6Gb7/9FvPmzcOIESMQHx+PpUuX4siRIzh37hzs7Ox0bdVqNd544w0sWrQIzs7OWL16Nd58800kJibi559/xuLFi6FQKPDxxx9jzJgxuH37NpycnMqN79atW+jbty9mzpwJhUKB+Ph4rFy5Es8//zwuXbpUKvlWWy+99BKkUqneLzaeFR8fj+HDh6N///74/vvv0bJlS9y7dw/79+9Hfn4+HB0dsX//fgwbNgwzZszAzJkzAaDUKLCxY8di0qRJmDNnju55W56YmBgEBQUhJCQEKpUKP/74I95++23k5+dj4cKF1brHtWvX4q233sKtW7ewY8eOStvfuHEDvr6+cHBwwJdffglbW1ts3rwZ06dPx4MHD7Bo0SK99osXL0a/fv3w3XffISMjA++99x5GjhyJa9euQSqVVitWIqp/N2/eBFDynlXd7xNPq+zzNgAsWLAAP/zwAz755BN069YN2dnZuHz5MlJTU3Vt6utz7LJly7Bs2TLMmDED48ePR2JiImbNmoWioiK0b9++wnOnTJmCc+fO4R//+Ac8PT2RlpaGc+fO6e6jKu+7X375JTw9PfHZZ5/BysoKHh4eFV7z5ZdfxoQJEzBnzhxcuXIFS5cuxdWrV3H69OlqPRur8r3nadX9mbhw4QLeffddvP/++1Aqlfjuu+8wY8YMtGvXrtzvamQgApGBbdiwQQAgnDlzRtBoNEKbNm2EHj16CMXFxYIgCMKAAQOETp066drv379fACCsWLFCr59t27YJAIRvv/1Wt8/NzU2QSqXCjRs39Nr+/vvvAgBh5MiRevuDgoIEAML//d//6e0fM2aMYGNjU+49FBUVCQUFBcKmTZsEqVQqPHr0SHds2rRpgpubW6V/D9OmTRMsLCzKPX7t2jUBgPC3v/1Nt2/AgAHCgAEDdK/nzZsntGzZssLr/Oc//xEACL///nupYwMGDBAACL/99luZx56+VlxcnABAcHJyEnJzc3X7MzIyBBsbG2Hw4MF691bW38FHH30kPPu2YmFhIUybNq1UW+2/mTbuoqIiwcnJSejcubNQVFSka5eZmSk4ODgIvr6+pa7z7M9MYGCgIJfLdT9rRCQ+7TPh2U0mkwlr164t1R6A8NFHH5U6PzAwUK/dihUrBABCUlKSIAh/vac+2+706dMCAGHx4sW6fdr3xrNnz+r2paamClKpVDAzMxPu3bun2x8TEyMAEL788stSMcXFxZV5z8XFxUJBQYFw584dAYCwa9euKp/7bLszZ86U20apVAodOnTQvX72Pfjnn38WAAgxMTHl9vHw4cNSf+fP9vfhhx+We+xpbm5ugkQiKXW9IUOGCFZWVkJ2drbevT37d/Dsc0EQBGH48OHlPnOfjXvSpEmCTCYTEhIS9NoFBAQI5ubmQlpamt51XnrpJb12P/30kwBAiIqKKvN6RCQO7XvGqVOnhIKCAiEzM1P473//K9jb2wuWlpaCWq2u1veJmnze9vb2FsaMGVPu8fr6HPv48WNBLpcLL7/8st7+//3vfwKAMj/bb9iwQbevRYsWQlBQUIX3Wt77rra/tm3bCvn5+WUee/pa2vt855139Nr++OOPAgBh8+bNun3lPYfc3Nz0vkdU9L3n2e8n1f2OKZfLhTt37uj25ebmCjY2NsLs2bNLXYsMi9P3qE6Zmprik08+wdmzZ/HTTz+V2Ub7W27t0EytV155BRYWFqWmjj333HPw9PQss69nV/3p0KEDgJLM+rP7Hz16pDeF7/z58xg1ahRsbW0hlUphYmKCqVOnoqioCH/++WflN1tNgiBU2qZXr15IS0vDq6++il27dtVoGoi1tXW5o9TKMnbsWMjlct1rS0tLjBw5EseOHUNRUVG1r19VN27cwP379zFlyhS90VwtWrTAuHHjcOrUKeTk5OidM2rUKL3Xzz33HPLy8spclYqIxLVp0yacOXMGZ86cwa+//opp06Zh7ty5WLNmTZXOL+v/O/DXtI3ff/8dQOlnSa9evdChQ4dSzxJHR0f4+PjoXtvY2MDBwQFdu3bVGxGlfY6UtZrs05KTkzFnzhy4uLjA2NgYJiYmcHNzAwBcu3atSvdYXZU9R7p27QpTU1O89dZb2LhxI27fvl2j64wbN67KbTt16lSqjuTkyZORkZGBc+fO1ej6VXX48GEMGjQILi4uevunT5+OnJycUlNoKvuZIqKGpU+fPjAxMYGlpSVGjBgBlUqFX3/9FUqlstrfJ55Wlc/bvXr1wq+//or3338fR44cQW5urt7x+vocGxUVhby8vFI1tHx9fXXPnIr06tUL4eHh+OSTT3Dq1KkalSkZNWpUtUY4PRvrhAkTYGxsrHtu15Xq/kx07doVrq6uutdyuRyenp58JtQDJqWozk2aNAndu3fHkiVLynzjS01NhbGxcanpAhKJBCqVSm9YLIAKVzuysbHRe21qalrh/ry8PABAQkIC+vfvj3v37uGLL77A8ePHcebMGXz11VcAUOrBYwjaN7iKpoNMmTIF33//Pe7cuYNx48bBwcEBvXv3RmRkZJWvU93VoVQqVZn78vPzS9XhMiTtv3NZ8To5OaG4uBiPHz/W229ra6v3WjsEty7+vYiodjp06IAePXqgR48eGDZsGL755hv4+/tj0aJFpWo7lKWy/++VvYc8+yx59rkAlDwbKntelKW4uBj+/v7Yvn07Fi1ahN9++w1//PGHbiGLunhPys7ORmpqaoXPkLZt2+LQoUNwcHDA3Llz0bZtW7Rt2xZffPFFta5VnedIec8QAKX+DQwtNTW13H//sq7PZwhR46L95cb58+dx//59XLx4Ef369QNQ/e8TT6vK5+0vv/wS7733Hnbu3ImBAwfCxsYGY8aMQWxsrO76QN1/jtVep6L32ops27YN06ZNw3fffYe+ffvCxsYGU6dOhVqtrvRcrdp+tzA2NoatrW29PBOq8zPx7L8HUPJvwmdC3WNSiuqcRCLBp59+ilu3buHbb78tddzW1haFhYWlCt4JT5YNf7oGiLY/Q9u5cyeys7Oxfft2vP7663j++efRo0cP3ZeRurB7924AlS/B/cYbb+DkyZNIT0/H3r17IQgCRowYUeWsfXX/vsp6KKnVapiamqJFixYASn5zoNFoSrWrTUFf7YMgKSmp1LH79+/DyMgI1tbWNe6fiBqe5557Drm5uQYZjVrZe8izzxJDunz5Mi5cuIB//etfmD9/Pvz8/NCzZ88yP+Aayt69e1FUVFTpM6R///7Ys2cP0tPTcerUKfTt2xdBQUHYunVrla9VnedIec8Q4K9/I+1o3GefI7UtCm9ra1vuvz+AOv0ZIKK6p/3lRteuXUslRqr7feJZlX3etrCwwLJly3D9+nWo1WqsW7cOp06d0q0eW1+fY7XXqei9tiJ2dnYICwtDfHw87ty5g9DQUGzfvr3UaKKK1Pa7RWFhIVJTU/WekTKZrMzvFrVJXNX2Z4LqD5NSVC8GDx6MIUOG4OOPPy412mbQoEEAgM2bN+vt/+WXX5Cdna07Xpe0b65PF7sTBAH//ve/6+R6kZGR+O677+Dr61uq6GF5LCwsEBAQgCVLliA/Px9XrlzRi9lQWfzt27frjQjIzMzEnj170L9/f13h19atWyM5ORkPHjzQtcvPz8eBAwdK9VfV3zC0b98erVq1QkREhN6UlOzsbPzyyy+6lUyIqOmIiYkBULqwdk1opyk/+yw5c+YMrl27VqfPkrKeIQD0VsYzpISEBCxcuBAKhQKzZ8+u0jlSqRS9e/fWjQDWTqUz9DPkypUruHDhgt6+iIgIWFpa6orSaldHunjxol477S9rnlad31IPGjQIhw8fLrUq46ZNm2Bubi76cuVEVHcM9X2ivM/bT1MqlZg+fTpeffVV3LhxAzk5OfX2ObZPnz6Qy+X48ccf9fafPHmy2tPMXF1dMW/ePAwZMkRverWhRwc9G+tPP/2EwsJCvV+qtG7dutQz4fDhw6W+N1bnmdUQvmNS1XD1Pao3n376KXx8fJCcnIxOnTrp9g8ZMgRDhw7Fe++9h4yMDPTr10+3MkK3bt0wZcqUOo9tyJAhMDU1xauvvopFixYhLy8P69atKzXMtrqKi4t10zc0Gg0SEhLw66+/4qeffkKHDh3KrbOlNWvWLJiZmaFfv35wdHSEWq1GaGgoFAoFevbsCQDw9vYGAHz77bewtLSEXC6Hu7t7jX9DL5VKMWTIECxYsADFxcX49NNPkZGRgWXLlunaTJw4ER9++CEmTZqEv//978jLy8OXX35ZZs2pzp0748iRI9izZw8cHR1haWlZ5sogRkZGWLFiBV577TWMGDECs2fPhkajwb/+9S+kpaXhn//8Z43uh4gahsuXL6OwsBBAyW8+t2/fjsjISLz88stwd3evdf/t27fHW2+9hdWrV8PIyAgBAQG61fdcXFzwzjvv1Poa5fHy8kLbtm3x/vvvQxAE2NjYYM+ePdWaal0e7d9bYWEhkpOTcfz4cWzYsAFSqRQ7duyoMKH39ddf4/Dhwxg+fDhcXV2Rl5enW9Vp8ODBAErqBrq5uWHXrl0YNGgQbGxsYGdnV2pZ7apycnLCqFGjEBISAkdHR2zevBmRkZH49NNPdV/Ievbsifbt22PhwoUoLCyEtbU1duzYgRMnTpTqr3Pnzti+fTvWrVsHHx8fGBkZoUePHmVe+6OPPsJ///tfDBw4EB9++CFsbGzw448/Yu/evVixYgUUCkWN7omIGr7afJ+oyuft3r17Y8SIEXjuuedgbW2Na9eu4YcfftBLNtXH51hra2ssXLgQn3zyCWbOnIlXXnkFiYmJuhVPK5Keno6BAwdi8uTJ8PLygqWlJc6cOYP9+/dj7NixunbVed+tiu3bt8PY2BhDhgzRrb7XpUsXTJgwQddmypQpWLp0KT788EMMGDAAV69exZo1a0q9b1fne09D+I5JVcOkFNWbbt264dVXX0VERITefolEgp07dyIkJAQbNmzAP/7xD9jZ2WHKlClYvnx5ucu3GpKXlxd++eUXfPDBBxg7dixsbW0xefJkLFiwAAEBATXuNzc3F3379gUAmJmZwd7eHl26dMG///1vvPbaa5VOD+zfvz/Cw8Px008/4fHjx7Czs8Pzzz+PTZs26b6IuLu7IywsDF988QX8/PxQVFSEDRs2VGsY7tPmzZuHvLw8/N///Z8ugbh3717dnH3tNXft2oXFixdj/PjxcHR0xIIFC/Dw4UO95BUAfPHFF5g7dy4mTZqEnJwcDBgwAEeOHCnz2pMnT4aFhQVCQ0MxceJESKVS9OnTB7///jt8fX1rdD9E1DC88cYbuj8rFAq4u7tj5cqVCAwMNNg11q1bh7Zt22L9+vX46quvoFAoMGzYMISGhtbpVDoTExPs2bMHb7/9NmbPng1jY2MMHjwYhw4d0iuaWhPavzdTU1O0bNkSHTp0wHvvvYeZM2dWOsKsa9euOHjwID766COo1Wq0aNEC3t7e2L17N/z9/XXt1q9fj7///e8YNWoUNBoNpk2bhvDw8BrF27VrV7zxxhv46KOPEBsbCycnJ6xcuVIvKSiVSrFnzx7MmzcPc+bMgUwmw6RJk7BmzZpSC5O8/fbbuHLlChYvXoz09HQIglBugff27dvj5MmTWLx4MebOnYvc3Fx06NChVs9EImocavN9oiqft1988UXs3r0bq1atQk5ODlq1aoWpU6diyZIlun7q63Psxx9/DAsLC6xduxY//PADvLy88PXXX+Ozzz6r8Dy5XI7evXvjhx9+QHx8PAoKCuDq6or33nsPixYt0rWrzvtuVWzfvh0hISFYt24dJBIJRo4cibCwML3vQX//+9+RkZGB8PBwfPbZZ+jVqxd++uknjB49Wq+v6nzvaQjfMalqJEJtfsKIiIiIiIiIiIhqgDWliIiIiIiIiIio3jEpRURERERERERE9Y5JKSIiIiIiIiIiqndMShERERERERERUb1jUoqIiIiIiIiIiOodk1JERERERERERFTvjMUOoCEqLi7G/fv3YWlpCYlEInY4RET1RhAEZGZmwsnJCUZG/L1FRfisIKLmis+KquOzgoiaq6o+K5iUKsP9+/fh4uIidhhERKJJTEyEs7Oz2GE0aHxWEFFzx2dF5fisIKLmrrJnBZNSZbC0tARQ8pdnZWUlcjRERPUnIyMDLi4uuvdBKh+fFUTUXPFZUXV8VhBRc1XVZwWTUmXQDq21srLiw4OImiVOMagcnxVE1NzxWVE5PiuIqLmr7FnBSeBERERERERERFTvmJQiIiIiIiIiIqJ6x6QUERERERERERHVOyaliIiIiIiIiIio3omelFq7di3c3d0hl8vh4+OD48ePV+m8//3vfzA2NkbXrl1LHfvll1/QsWNHyGQydOzYETt27DBw1EREREREREREVBuiJqW2bduGoKAgLFmyBOfPn0f//v0REBCAhISECs9LT0/H1KlTMWjQoFLHoqKiMHHiREyZMgUXLlzAlClTMGHCBJw+fbquboOIiIiIiIiIiKpJIgiCINbFe/fuje7du2PdunW6fR06dMCYMWMQGhpa7nmTJk2Ch4cHpFIpdu7ciZiYGN2xiRMnIiMjA7/++qtu37Bhw2BtbY0tW7ZUKa6MjAwoFAqkp6dz6VYialb4/ld1/LsiouaK739Vx78rImquqvr+J9pIqfz8fERHR8Pf319vv7+/P06ePFnueRs2bMCtW7fw0UcflXk8KiqqVJ9Dhw6tsE+NRoOMjAy9jYiIiIiIiIiI6o5oSamUlBQUFRVBqVTq7VcqlVCr1WWeExsbi/fffx8//vgjjI2Ny2yjVqur1ScAhIaGQqFQ6DYXF5dq3g0REREREREREVWH6IXOJRKJ3mtBEErtA4CioiJMnjwZy5Ytg6enp0H61AoODkZ6erpuS0xMrMYdEBERERERERFRdZU93Kge2NnZQSqVlhrBlJycXGqkEwBkZmbi7NmzOH/+PObNmwcAKC4uhiAIMDY2xsGDB/Hiiy9CpVJVuU8tmUwGmUxmgLsiIiIiIiIiIqKqEG2klKmpKXx8fBAZGam3PzIyEr6+vqXaW1lZ4dKlS4iJidFtc+bMQfv27RETE4PevXsDAPr27Vuqz4MHD5bZJxERERERNT3r1q3Dc889BysrK1hZWaFv3756CyEJgoCQkBA4OTnBzMwMfn5+uHLlil4fGo0G8+fPh52dHSwsLDBq1CjcvXu3vm+FiKhJE22kFAAsWLAAU6ZMQY8ePdC3b198++23SEhIwJw5cwCUTKu7d+8eNm3aBCMjI3h7e+ud7+DgALlcrrf/7bffxgsvvIBPP/0Uo0ePxq5du3Do0CGcOHGiXu+NqDzpOQXYc/E+Tsc9gpfKEqO7OsHZ2lzssIiIiIiaDGdnZ/zzn/9Eu3btAAAbN27E6NGjcf78eXTq1AkrVqzAypUrER4eDk9PT3zyyScYMmQIbty4AUtLSwBAUFAQ9uzZg61bt8LW1hbvvvsuRowYgejoaEilUjFvj4ioyRA1KTVx4kSkpqbi448/RlJSEry9vbFv3z64ubkBAJKSkpCQkFCtPn19fbF161Z88MEHWLp0Kdq2bYtt27bpRlIRienK/XRM33AGDzM1AIA9F4A1h29i04xe6NnaRuToiIioMYk4Xb3PSE+b3NvVgJEQNTwjR47Ue/2Pf/wD69atw6lTp9CxY0eEhYVhyZIlGDt2LICSpJVSqURERARmz56N9PR0rF+/Hj/88AMGDx4MANi8eTNcXFxw6NAhDB06tN7viWqmNu+VAN8vieqa6IXOAwMDER8fD41Gg+joaLzwwgu6Y+Hh4Thy5Ei554aEhCAmJqbU/vHjx+P69evIz8/HtWvXdA8bIjFdSEzDxG9O4WGmBq1tzTH/xXZ4zlmB3IIivLnhDK7ezxA7RCIiIqImp6ioCFu3bkV2djb69u2LuLg4qNVq+Pv769rIZDIMGDAAJ0+eBABER0ejoKBAr42TkxO8vb11bcqi0WiQkZGhtxERUflEHSlF1Fyk5eQj8MdzyNIUok8bG3w7tQes5CYI9GuH6Rv+wOm4R/hg5yX88jffCleKJCKiulXT36jzN+lEDc+lS5fQt29f5OXloUWLFtixYwc6duyoSyo9uxCSUqnEnTt3AABqtRqmpqawtrYu1ebZRZWeFhoaimXLlhn4ToiImi7RR0oRNXWCIGDRzxdxLy0XbrbmuoQUAJiZSvHlq91gZiLFuYQ0/Hq5/A85RERERFR12gWRTp06hb/97W+YNm0arl69qjv+7C8CBUGo9JeDlbUJDg5Genq6bktMTKzdTRARNXFMShHVscirD3Dw6gOYSCX4anJ3XUJKS2klx6wX2gAAVuy/jqJiQYwwiYiIiJoUU1NTtGvXDj169EBoaCi6dOmCL774AiqVCgBKjXhKTk7WjZ5SqVTIz8/H48ePy21TFplMplvxT7sREVH5mJQiqkM5+YVYtqfkN3Kz+reBdytFme1mv9AGVnJjxKfm4Hjsw/oMkYiIiKhZEAQBGo0G7u7uUKlUiIyM1B3Lz8/H0aNH4evrCwDw8fGBiYmJXpukpCRcvnxZ14aIiGqPNaWI6tB3x+NwLy0XrVqaYf6LHuW2s5AZY2x3Z4SfjMe2M4nwa+9Qj1ESERERNS2LFy9GQEAAXFxckJmZia1bt+LIkSPYv38/JBIJgoKCsHz5cnh4eMDDwwPLly+Hubk5Jk+eDABQKBSYMWMG3n33Xdja2sLGxgYLFy5E586ddavxERFR7TEpRVRHHmXn49tjtwEA7wV4wcxUWmH7Sb1cEH4yHpFXH+Bhpgb2lrL6CJOIiIioyXnw4AGmTJmCpKQkKBQKPPfcc9i/fz+GDBkCAFi0aBFyc3MRGBiIx48fo3fv3jh48CAsLS11faxatQrGxsaYMGECcnNzMWjQIISHh0MqrfgzHRERVR2TUkR1ZO3vN5GlKUQnJyuM6OxYaXsvlRW6urRETGIadsXcw8z+beohSiIiIqKmZ/369RUel0gkCAkJQUhISLlt5HI5Vq9ejdWrVxs4OiIi0mJNKaI6kJKlwebTJUsK/31oexgZVbySi9aYrk4AgANXuAofERERERERNW1MShHVge9PxCGvoBhdnBUY4Glf5fP8O5WsBnP2zmM8zNTUVXhEREREREREomNSisjA0nML8ENUySipuQPbQSKp2igpAHBqaYbOrRQQBOC3aw/qKkQiIiIiIiIi0TEpRWRg284kIFNTCE9lCwzuoKz2+f4dS87hFD4iIiIiIiJqypiUIjKgwqJibDxZMkpqxvPuVa4l9TTtFL7/3UpFXkGRQeMjagpCQ0PRs2dPWFpawsHBAWPGjMGNGzf02giCgJCQEDg5OcHMzAx+fn64cuWKXhuNRoP58+fDzs4OFhYWGDVqFO7evVuft0JERERE1KwxKUVkQJFXH+BeWi5sLEwxumurGvXhqWwBpZUM+YXFOBP/yMAREjV+R48exdy5c3Hq1ClERkaisLAQ/v7+yM7O1rVZsWIFVq5ciTVr1uDMmTNQqVQYMmQIMjMzdW2CgoKwY8cObN26FSdOnEBWVhZGjBiBoiImg4mIiIiI6gOTUkQGFH4yHgAwuZcr5CbSGvUhkUjwfLuS4ugnYlMMFRpRk7F//35Mnz4dnTp1QpcuXbBhwwYkJCQgOjoaQMkoqbCwMCxZsgRjx46Ft7c3Nm7ciJycHERERAAA0tPTsX79enz++ecYPHgwunXrhs2bN+PSpUs4dOiQmLdHRERERNRsMClFZCC3H2bhdNwjGEmAyb1da9XXC552AIDjTEoRVSo9PR0AYGNjAwCIi4uDWq2Gv7+/ro1MJsOAAQNw8uRJAEB0dDQKCgr02jg5OcHb21vX5lkajQYZGRl6GxERERER1RyTUkQGsu1sIgBggKc9nFqa1aqvfu1KklJXkzKQkqWpdWxETZUgCFiwYAGef/55eHt7AwDU6pJFApRK/YUGlEql7pharYapqSmsra3LbfOs0NBQKBQK3ebi4mLo2yEiIiIialaYlCIygIKiYvwSXVIgeVKv2o2SAgC7FjJ0cLQCAJy8lVrr/oiaqnnz5uHixYvYsmVLqWMSif5CA4IglNr3rIraBAcHIz09XbclJibWPHAiIiIiImJSisgQjv35EClZ+bBrIcOLXg4G6bNvG1sAwJk4FjsnKsv8+fOxe/du/P7773B2dtbtV6lKVrB8dsRTcnKybvSUSqVCfn4+Hj9+XG6bZ8lkMlhZWeltRERERERUc0xKERnArpj7AICRXRxhIjXMf6uerUumFXEFPiJ9giBg3rx52L59Ow4fPgx3d3e94+7u7lCpVIiMjNTty8/Px9GjR+Hr6wsA8PHxgYmJiV6bpKQkXL58WdeGiIiIiIjqlrHYARA1dtmaQkRefQAAGNO1lcH67dG6pGjzjQeZSM8pgMLcxGB9EzVmc+fORUREBHbt2gVLS0vdiCiFQgEzMzNIJBIEBQVh+fLl8PDwgIeHB5YvXw5zc3NMnjxZ13bGjBl49913YWtrCxsbGyxcuBCdO3fG4MGDxbw9IiIiIqJmg0kpolo6dO0BcguK0NrWHM85KwzWr72lDO52FohLyUZ0wiO86FX2lCKi5mbdunUAAD8/P739GzZswPTp0wEAixYtQm5uLgIDA/H48WP07t0bBw8ehKWlpa79qlWrYGxsjAkTJiA3NxeDBg1CeHg4pFJpfd0KEREREVGzxqQUUS3992ISAGBUF6dKiyhXV8/W1ohLycaZ+MdMShE9IQhCpW0kEglCQkIQEhJSbhu5XI7Vq1dj9erVBoyOiIiIiIiqijWliGohN78Ix2MfAgCGeTsavH/tFD4WOyciIiIiIqKmhkkpolo4FvsQeQXFcLY2QwdHy8pPqKZeT5JSF++mI6+gyOD9ExEREREREYmF0/eIauHglZIC5/4dVQafugcAbrbmsLeU4WGmBhfvpqOXu43Br0FERFRVEacTanzu5N6uBoyEiIiImgKOlCKqocKiYvx2/UlSqlPd1HuSSCTo2doaAHAmnlP4iIiIiIiIqOlgUoqohi7cTUNaTgEUZibo4WZdZ9fpqa0rxaQUERERERERNSFMShHV0NE/UwAAz7ezg7G07v4raZNS0Xceo6i48lXHiIiIiIiIiBoDJqWIaki76t4LnnZ1eh0vlSVayIyRmVeIG+rMOr0WERERERERUX1hUoqoBtJzCnAhMQ0A8IKnfZ1ey1hqhG6uLQEA5xIe1+m1iIiIiIiIiOqL6EmptWvXwt3dHXK5HD4+Pjh+/Hi5bU+cOIF+/frB1tYWZmZm8PLywqpVq/TahIeHQyKRlNry8vLq+laoGTlxMwXFAuDh0AKOCrM6v15Xl5YAgJgniTAiIiIiIiKixs5YzItv27YNQUFBWLt2Lfr164dvvvkGAQEBuHr1KlxdSy8bbGFhgXnz5uG5556DhYUFTpw4gdmzZ8PCwgJvvfWWrp2VlRVu3Lihd65cLq/z+6Hm48TNknpS/T3qdpSUFpNSRERERERE1NSImpRauXIlZsyYgZkzZwIAwsLCcODAAaxbtw6hoaGl2nfr1g3dunXTvW7dujW2b9+O48eP6yWlJBIJVCpV3d8ANVun41IBAH3b2tbL9bRJqVsPs5CRVwAruUm9XJeIiIiIiIiorog2fS8/Px/R0dHw9/fX2+/v74+TJ09WqY/z58/j5MmTGDBggN7+rKwsuLm5wdnZGSNGjMD58+cr7Eej0SAjI0NvIypPcmYebj/MhkQC9HqyMl5ds20hg4uNGQQBuJiYXi/XJCIiIiIiIqpLoiWlUlJSUFRUBKVSqbdfqVRCrVZXeK6zszNkMhl69OiBuXPn6kZaAYCXlxfCw8Oxe/dubNmyBXK5HP369UNsbGy5/YWGhkKhUOg2FxeX2t0cNWl/xD0CAHiprKAwr78RS11drAEAMYksdk5ERERERESNn+iFziUSid5rQRBK7XvW8ePHcfbsWXz99dcICwvDli1bdMf69OmD119/HV26dEH//v3x008/wdPTE6tXry63v+DgYKSnp+u2xMTE2t0UNWmnb5ckpXq7188oKS3WlSIiIiIiIqKmRLSaUnZ2dpBKpaVGRSUnJ5caPfUsd3d3AEDnzp3x4MEDhISE4NVXXy2zrZGREXr27FnhSCmZTAaZTFbNO6DmSltPSsykVFWSt0REREREREQNmWgjpUxNTeHj44PIyEi9/ZGRkfD19a1yP4IgQKPRVHg8JiYGjo6ONY6VSCstJx9/PsgCAPSq56RUJycrmEglSMnKx93HufV6bSIiIiIiIiJDE3X1vQULFmDKlCno0aMH+vbti2+//RYJCQmYM2cOgJJpdffu3cOmTZsAAF999RVcXV3h5eUFADhx4gQ+++wzzJ8/X9fnsmXL0KdPH3h4eCAjIwNffvklYmJi8NVXX9X/DVKTc/7J1Dl3OwvYtqjf0XVyEyk6OFrh4t10xCSmwcXGvF6vT0RERERERGRIoialJk6ciNTUVHz88cdISkqCt7c39u3bBzc3NwBAUlISEhISdO2Li4sRHByMuLg4GBsbo23btvjnP/+J2bNn69qkpaXhrbfeglqthkKhQLdu3XDs2DH06tWr3u+Pmp7zd0qKjHdzbSnK9bu6tNQlpUZ2cRIlBiIiIiIiIiJDEDUpBQCBgYEIDAws81h4eLje6/nz5+uNiirLqlWrsGrVKkOFR6TnXEIaAKCbq7Uo1+/i3BLAHRY7JyIiIqI6F3E6ofJGFZjc29VAkRBRUyX66ntEjUVRsaBLBnUXa6TUk+tevpeOgqJiUWIgIiIiIiIiMgQmpYiq6GZyFrI0hTA3laK90lKUGNxtLWAlN4amsBjXkzJFiYGIiIiIiIjIEJiUIqqicwkl9aS6OLeEsVSc/zpGRhJ0cWkJAIhJfCxKDERERERERESGwKQUURVdupcOALqkkFi6Pbn+edaVIiIiIiIiokaMSSmiKrryJCnVuZVC1Di0daVY7JyIiIiIiIgaMyaliKqgoKgY19QlNZy8W1mJGkvJCnzA7YfZSM8pEDUWIiIiIiIioppiUoqoCm4mZyG/sBiWcmO42piLGottC5kuhgt300SNhYiIiIiIiKimmJQiqoLLT6budXKygkQiETkaoKuu2HmaqHEQieHYsWMYOXIknJycIJFIsHPnTr3jEomkzO1f//qXro2fn1+p45MmTarnOyEiIiIiat6YlCKqgiv3MwAA3k7i1pPS0ialLjApRc1QdnY2unTpgjVr1pR5PCkpSW/7/vvvIZFIMG7cOL12s2bN0mv3zTff1Ef4RERUD0JDQ9GzZ09YWlrCwcEBY8aMwY0bN/TaTJ8+vdQvKPr06aPXRqPRYP78+bCzs4OFhQVGjRqFu3fv1uetEBE1acZiB0DUGGhHSnmLXORcq4tLSRzaFQGJmpOAgAAEBASUe1ylUum93rVrFwYOHIg2bdro7Tc3Ny/VloiImoajR49i7ty56NmzJwoLC7FkyRL4+/vj6tWrsLCw0LUbNmwYNmzYoHttamqq109QUBD27NmDrVu3wtbWFu+++y5GjBiB6OhoSKXSersfIqKmikkpokoUFQu4mvRkpJTIRc61OjoqYCQBkjM1eJCRB6WVXOyQiBqkBw8eYO/evdi4cWOpYz/++CM2b94MpVKJgIAAfPTRR7C0tBQhSiIiMrT9+/frvd6wYQMcHBwQHR2NF154QbdfJpOV+wuK9PR0rF+/Hj/88AMGDx4MANi8eTNcXFxw6NAhDB06tO5ugIiomeD0PaJKxKVkISe/CGYmUrjbtRA7HACAmakUHg4lX54v3uVoKaLybNy4EZaWlhg7dqze/tdeew1btmzBkSNHsHTpUvzyyy+l2jxLo9EgIyNDbyMiosYhPb3k85KNjY3e/iNHjsDBwQGenp6YNWsWkpOTdceio6NRUFAAf39/3T4nJyd4e3vj5MmTZV6HzwoiouphUoqoEpfvlXyY6OhkBamR+EXOtTo7cwofUWW+//57vPbaa5DL9UcTzpo1C4MHD4a3tzcmTZqEn3/+GYcOHcK5c+fK7Ss0NBQKhUK3ubi41HX4RERkAIIgYMGCBXj++efh7e2t2x8QEIAff/wRhw8fxueff44zZ87gxRdfhEajAQCo1WqYmprC2tparz+lUgm1Wl3mtfisICKqHialiCqhqyfl1DCm7mk9p01K3U0TNxCiBur48eO4ceMGZs6cWWnb7t27w8TEBLGxseW2CQ4ORnp6um5LTEw0ZLhERFRH5s2bh4sXL2LLli16+ydOnIjhw4fD29sbI0eOxK+//oo///wTe/furbA/QRDKXY2ZzwoiouphTSmiSly+X5KU6tRAipxraYuuX7qXXuGHI6Lmav369fDx8UGXLl0qbXvlyhUUFBTA0dGx3DYymQwymcyQIRIRUR2bP38+du/ejWPHjsHZ2bnCto6OjnBzc9P9gkKlUiE/Px+PHz/WGy2VnJwMX1/fMvvgs4KIqHo4UoqoAsXFAq48mb7n7dSwklIdHUumE6Zk5UOdkSd2OET1JisrCzExMYiJiQEAxMXFISYmBgkJCbo2GRkZ+M9//lPmKKlbt27h448/xtmzZxEfH499+/bhlVdeQbdu3dCvX7/6ug0iIqpDgiBg3rx52L59Ow4fPgx3d/dKz0lNTUViYqLuFxQ+Pj4wMTFBZGSkrk1SUhIuX75cblKKiIiqhyOliCqQ+DgHmZpCmEqN4KFsGEXOteQmUngqLXEtKQMX76bDUWEmdkhE9eLs2bMYOHCg7vWCBQsAANOmTUN4eDgAYOvWrRAEAa+++mqp801NTfHbb7/hiy++QFZWFlxcXDB8+HB89NFHXN6biKiJmDt3LiIiIrBr1y5YWlrqakApFAqYmZkhKysLISEhGDduHBwdHREfH4/FixfDzs4OL7/8sq7tjBkz8O6778LW1hY2NjZYuHAhOnfurFuNj4iIaodJKaIKaIucezlawkTa8AYWPtdKgWtJGbh0Nx1DO5W9nDFRU+Pn5wdBECps89Zbb+Gtt94q85iLiwuOHj1aF6EREVEDsW7dOgAlz4ynbdiwAdOnT4dUKsWlS5ewadMmpKWlwdHREQMHDsS2bdtgaWmpa79q1SoYGxtjwoQJyM3NxaBBgxAeHs5fYhARGQiTUkQVuKF+kpRSWVbSUhzezgpsO5vIFfiIiIiInlLZLy/MzMxw4MCBSvuRy+VYvXo1Vq9ebajQiIjoKQ1v6AdRA3LjQSYAoL2qYa28p/XcM8XOiYiIiIiIiBoLJqWIKvDngywAQHtlwxwpVTKtUIJH2fm4l5YrdjhEREREREREVcakFFE58gqKcCc1GwDgqWpYRc61ZMYlxc4B4DKn8BEREREREVEjwqQUUTluJmehWACszU1g30Imdjjles65ZArfhbtMShEREREREVHjwaQUUTn+fFJPylNpCYlEInI05evkVJKUunI/Q+RIiIiIiIiIiKqOSSmicvxV5Lxh1pPS6uRUUoT9KpNSRERERERE1IgwKUVUjj/VJUkpjwZa5FzLS2UFIwmQkqVBckae2OEQERERERERVQmTUkTlaOgr72mZmUrRxr6kEPuVJI6WIiIiIiIiosaBSSmiMmTmFeBeWi4AwFPZMFfee1pHR07hIyIiIiIiosaFSSmiMmhHSSmtZGhpbipyNJVjXSkiIiIiIiJqbERPSq1duxbu7u6Qy+Xw8fHB8ePHy2174sQJ9OvXD7a2tjAzM4OXlxdWrVpVqt0vv/yCjh07QiaToWPHjtixY0dd3gI1QbFPrbzXGHR8kpS6cj9d5EiIiIiIiIiIqkbUpNS2bdsQFBSEJUuW4Pz58+jfvz8CAgKQkJBQZnsLCwvMmzcPx44dw7Vr1/DBBx/ggw8+wLfffqtrExUVhYkTJ2LKlCm4cOECpkyZggkTJuD06dP1dVvUBOhW3mssSakn0/fiU3OQpSkUORoiIiIiIiKiyomalFq5ciVmzJiBmTNnokOHDggLC4OLiwvWrVtXZvtu3brh1VdfRadOndC6dWu8/vrrGDp0qN7oqrCwMAwZMgTBwcHw8vJCcHAwBg0ahLCwsHq6K2oK/tSOlFI1jqSUbQsZVFZyAMA1FjsnIiIiIiKiRkC0pFR+fj6io6Ph7++vt9/f3x8nT56sUh/nz5/HyZMnMWDAAN2+qKioUn0OHTq0yn0SAcANdeNYee9prCtFREREREREjYmxWBdOSUlBUVERlEql3n6lUgm1Wl3huc7Oznj48CEKCwsREhKCmTNn6o6p1epq96nRaKDRaHSvMzL4pb45S83SICWr5OehnUPDX3lPq6OTFX67nsy6UkRERERERNQoiF7oXCKR6L0WBKHUvmcdP34cZ8+exddff42wsDBs2bKlVn2GhoZCoVDoNhcXl2reBTUl2pX3XGzMYCETLW9bbbqRUpy+R0RERERERI2AaN+47ezsIJVKS41gSk5OLjXS6Vnu7u4AgM6dO+PBgwcICQnBq6++CgBQqVTV7jM4OBgLFizQvc7IyGBiqhn7s5EVOdfq6KgAAPypzkJBUTFMpKLnnImIiIiIiIjKJdq3VlNTU/j4+CAyMlJvf2RkJHx9favcjyAIelPv+vbtW6rPgwcPVtinTCaDlZWV3kbNl67IeSNLSrnYmMFSZoz8omLcTM4SOxwiIiIiIiKiCok6N2nBggWYMmUKevTogb59++Lbb79FQkIC5syZA6BkBNO9e/ewadMmAMBXX30FV1dXeHl5AQBOnDiBzz77DPPnz9f1+fbbb+OFF17Ap59+itGjR2PXrl04dOgQTpw4Uf83SI2SbqRUI1l5T0sikaCDkxX+iHuEK/cz0MGRyVUiIiIiIiJquERNSk2cOBGpqan4+OOPkZSUBG9vb+zbtw9ubm4AgKSkJCQkJOjaFxcXIzg4GHFxcTA2Nkbbtm3xz3/+E7Nnz9a18fX1xdatW/HBBx9g6dKlaNu2LbZt24bevXvX+/1R4yMIAm6oG+dIKaCkrtQfcY9KVuDzETsaIiIiIiIiovKJXsU5MDAQgYGBZR4LDw/Xez1//ny9UVHlGT9+PMaPH2+I8KiZeZChQUZeIaRGErSxtxA7nGrzejK668YDFjsnIiIiIiKiho2VkImecuPJ1D13OwvIjKUiR1N9XqqSKXva0V5EREREREREDRWTUkRP+VPdOFfe0/JUWkIiAVKy8vEwU1P5CUREREREREQiYVKK6CnakVIeyhYiR1IzZqZSuNmYA+BoKSIiIiIiImrYmJQieopu5b1GOlIK+GsK33U160oRERERERFRw8WkFNETxcUCYh9kAQA8VY03KdVeW+ycI6WIiIiIiIioAWNSiuiJu49zkVtQBFNjI90UuMborxX4mJSipunYsWMYOXIknJycIJFIsHPnTr3j06dPh0Qi0dv69Omj10aj0WD+/Pmws7ODhYUFRo0ahbt379bjXRAREREREZNSRE9okzjt7FvAWNp4/2t4Of61Al9RsSByNESGl52djS5dumDNmjXlthk2bBiSkpJ02759+/SOBwUFYceOHdi6dStOnDiBrKwsjBgxAkVFRXUdPhERERERPWEsdgBEDYWunlQjnroHAK425pCbGCGvoBh3UrPRxr5xFm0nKk9AQAACAgIqbCOTyaBSqco8lp6ejvXr1+OHH37A4MGDAQCbN2+Gi4sLDh06hKFDhxo8ZiIiIiIiKq3xDgchMjBtDSbPRlzkHACkRhLdPbCuFDVXR44cgYODAzw9PTFr1iwkJyfrjkVHR6OgoAD+/v66fU5OTvD29sbJkyfFCJeIiIiIqFliUoroib9GSjX+kUXaulLXmJSiZiggIAA//vgjDh8+jM8//xxnzpzBiy++CI1GAwBQq9UwNTWFtbW13nlKpRJqtbrcfjUaDTIyMvQ2IiIiIiKqOU7fIwJQUFSMWw9LVt7zcGjcI6UAoL1KW1eKX5qp+Zk4caLuz97e3ujRowfc3Nywd+9ejB07ttzzBEGARCIp93hoaCiWLVtm0FiJiIiIiJozjpQiAnAnNRsFRQIsTKVo1dJM7HBqTbcCH0dKEcHR0RFubm6IjY0FAKhUKuTn5+Px48d67ZKTk6FUKsvtJzg4GOnp6botMTGxTuMmIiIiImrqmJQiAnBD/WSUlNISRkblj5RoLLRJqTuPcpCTXyhyNETiSk1NRWJiIhwdHQEAPj4+MDExQWRkpK5NUlISLl++DF9f33L7kclksLKy0tuIiIiIiKjmOH2PCMANbT2pRl7kXMu2hQx2LWRIydLgzwdZ6OrSUuyQiAwmKysLN2/e1L2Oi4tDTEwMbGxsYGNjg5CQEIwbNw6Ojo6Ij4/H4sWLYWdnh5dffhkAoFAoMGPGDLz77ruwtbWFjY0NFi5ciM6dO+tW4yOipiHidEKNzpvc29XAkRAREVFZmJQiAvCnduU9VdNISgElo6VO3NTghjqDSSlqUs6ePYuBAwfqXi9YsAAAMG3aNKxbtw6XLl3Cpk2bkJaWBkdHRwwcOBDbtm2DpeVf/79XrVoFY2NjTJgwAbm5uRg0aBDCw8MhlUrr/X6IiIiIiJorJqWI8NTKe01kpBQAeCotceJmCv58kCV2KEQG5efnB0EQyj1+4MCBSvuQy+VYvXo1Vq9ebcjQiIiIiIioGlhTipq9vIIixKdmAwA8VS1EjsZwPJUl9xKbzKQUERERERERNTxMSlGzdzM5C8UCYG1uAvsWMrHDMRiPJ0mpmw+4Ah8RERERERE1PExKUbMXm1yStPFQWkIiafwr72m1cyiZing/PQ+ZeQUiR0NERERERESkj0kpavZuqEumtzWlelIAoDAzgdKqZOTXTU7hIyIiIiIiogaGSSlq9rRFzpvSyntaHk9GS7GuFBERERERETU0TEpRs3dD3fRW3tNq5/CkrhSTUkRERNSMhIaGomfPnrC0tISDgwPGjBmDGzdu6LURBAEhISFwcnKCmZkZ/Pz8cOXKFb02Go0G8+fPh52dHSwsLDBq1CjcvXu3Pm+FiKhJY1KKmrXMvALcS8sF8NdqdU2Jttj5nyx2TkRERM3I0aNHMXfuXJw6dQqRkZEoLCyEv78/srOzdW1WrFiBlStXYs2aNThz5gxUKhWGDBmCzMy/PjcFBQVhx44d2Lp1K06cOIGsrCyMGDECRUVFYtwWEVGTYyx2AERi0k5rU1rJ0NLcVORoDM/zyeiv2AccKUVERETNx/79+/Veb9iwAQ4ODoiOjsYLL7wAQRAQFhaGJUuWYOzYsQCAjRs3QqlUIiIiArNnz0Z6ejrWr1+PH374AYMHDwYAbN68GS4uLjh06BCGDh1a7/dFRNTUcKQUNWt/Ppm659kEp+4BQDv7kpFS99Jyka0pFDkaIiIiInGkp6cDAGxsbAAAcXFxUKvV8Pf317WRyWQYMGAATp48CQCIjo5GQUGBXhsnJyd4e3vr2jxLo9EgIyNDbyMiovIxKUXN2o0HTbeeFABYW5jCrgVX4CMiIqLmSxAELFiwAM8//zy8vb0BAGq1GgCgVCr12iqVSt0xtVoNU1NTWFtbl9vmWaGhoVAoFLrNxcXF0LdDRNSkMClFzZp2WltTHSkF/FUriyvwERERUXM0b948XLx4EVu2bCl1TCKR6L0WBKHUvmdV1CY4OBjp6em6LTExseaBExE1A0xKUbOmHSnlqWq6SSkPB21SisXOiYiIqHmZP38+du/ejd9//x3Ozs66/SqVCgBKjXhKTk7WjZ5SqVTIz8/H48ePy23zLJlMBisrK72NiIjKx6QUNVuPs/PxMFMD4K/ETVPUjsXOiYiIqJkRBAHz5s3D9u3bcfjwYbi7u+sdd3d3h0qlQmRkpG5ffn4+jh49Cl9fXwCAj48PTExM9NokJSXh8uXLujZERFQ7XH2Pmq1r6pLCky42ZrCQNd3/Cp4cKUVERETNzNy5cxEREYFdu3bB0tJSNyJKoVDAzMwMEokEQUFBWL58OTw8PODh4YHly5fD3NwckydP1rWdMWMG3n33Xdja2sLGxgYLFy5E586ddavxERFR7Yg+Umrt2rVwd3eHXC6Hj48Pjh8/Xm7b7du3Y8iQIbC3t4eVlRX69u2LAwcO6LUJDw+HRCIpteXl5dX1rVAjcz2pJEnTQdW0h1V7PBkpdfdxLnLyuQIfERERNX3r1q1Deno6/Pz84OjoqNu2bduma7No0SIEBQUhMDAQPXr0wL1793Dw4EFYWv5V1mHVqlUYM2YMJkyYgH79+sHc3Bx79uyBVCoV47aIiJocUZNS27ZtQ1BQEJYsWYLz58+jf//+CAgIQEJCQpntjx07hiFDhmDfvn2Ijo7GwIEDMXLkSJw/f16vnZWVFZKSkvQ2uVxeH7dEjci1pJKRUh0cm3ZSysbCFLYWphAE4PbDbLHDISIiIqpzgiCUuU2fPl3XRiKRICQkBElJScjLy8PRo0d1q/NpyeVyrF69GqmpqcjJycGePXu4oh4RkQGJOmdp5cqVmDFjBmbOnAkACAsLw4EDB7Bu3TqEhoaWah8WFqb3evny5di1axf27NmDbt266fZLJBJd8UKi8lxXPxkp5dh0i5xrtXNogdS4R/jzQSa8WynEDoeIiIiIiIhIvJFS+fn5iI6Ohr+/v95+f39/nDx5skp9FBcXIzMzEzY2Nnr7s7Ky4ObmBmdnZ4wYMaLUSKpnaTQaZGRk6G3UtBUWFetW3mvqI6UAwFNb7DyZxc6JiIiIiIioYRAtKZWSkoKioqJSy6kqlcpSS7OW5/PPP0d2djYmTJig2+fl5YXw8HDs3r0bW7ZsgVwuR79+/RAbG1tuP6GhoVAoFLqNQ3KbvvjUbOQXFsPCVAoXa3Oxw6lzHsonxc65Ah8RERERERE1EKIXOpdIJHqvBUEota8sW7ZsQUhICLZt2wYHBwfd/j59+uD1119Hly5d0L9/f/z000/w9PTE6tWry+0rODgY6enpui0xMbHmN0SNwtUnRc7bqyxhZFT5z1tj144r8BEREREREVEDI1pNKTs7O0il0lKjopKTk0uNnnrWtm3bMGPGDPznP/+pdDlWIyMj9OzZs8KRUjKZDDKZrOrBU6N3/UmRc69mMHUP+Gv6XsKjHOQVFEFuwhVjiIiIiIiISFyijZQyNTWFj48PIiMj9fZHRkbC19e33PO2bNmC6dOnIyIiAsOHD6/0OoIgICYmBo6OjrWOmZqO5rLynpathSmszU0gCMCth5zCR0REREREROITdfW9BQsWYMqUKejRowf69u2Lb7/9FgkJCZgzZw6Akml19+7dw6ZNmwCUJKSmTp2KL774An369NGNsjIzM4NCUbKi2LJly9CnTx94eHggIyMDX375JWJiYvDVV1+Jc5PUIOlW3lM1/ZX3gJJpsh4Olvgj/hFiH2ShkxNX4CMiIiIiIiJxiZqUmjhxIlJTU/Hxxx8jKSkJ3t7e2LdvH9zc3AAASUlJSEhI0LX/5ptvUFhYiLlz52Lu3Lm6/dOmTUN4eDgAIC0tDW+99RbUajUUCgW6deuGY8eOoVevXvV6b9RwpeXkIyk9D0BJTanmwkPZoiQpxbpSRERERERE1ACImpQCgMDAQAQGBpZ5TJto0jpy5Eil/a1atQqrVq0yQGTUVF17UuTcxcYMlnITkaOpPx4OXIGPiIiIiIiIGg7RV98jqm/aelJequZRT0rL40mx89hkJqWIiIiIiIhIfExKUbNzXd28ipxrtbUvGSmV8CgH+YXFIkdDREREREREzR2TUtTsaKfvNZci51pKKxksTKUoKhaQ8Chb7HCIauzYsWMYOXIknJycIJFIsHPnTt2xgoICvPfee+jcuTMsLCzg5OSEqVOn4v79+3p9+Pn5QSKR6G2TJk2q5zshIiIiImremJSiZqWwqBh/PniSlGpmI6UkEgnaPqkrdeshk1LUeGVnZ6NLly5Ys2ZNqWM5OTk4d+4cli5dinPnzmH79u34888/MWrUqFJtZ82ahaSkJN32zTff1Ef4RERERET0hOiFzonqU3xqNjSFxTA3lcLVxlzscOpdW/sWuHg3Hbcesq4UNV4BAQEICAgo85hCoUBkZKTevtWrV6NXr15ISEiAq6urbr+5uTlUKlWdxkpEREREROWr0UipuLg4Q8dBVC+0U/faqyxhZCQROZr619beAgBwK5kjpaj5SE9Ph0QiQcuWLfX2//jjj7Czs0OnTp2wcOFCZGZmihMgEREREVEzVaORUu3atcMLL7yAGTNmYPz48ZDL5YaOi6hONNeV97Ta2Gun73GkFDUPeXl5eP/99zF58mRYWf31//61116Du7s7VCoVLl++jODgYFy4cKHUKKunaTQaaDQa3euMjIw6jZ2IiIiIqKmr0UipCxcuoFu3bnj33XehUqkwe/Zs/PHHH4aOjcjgrqtLRkJ0dGxeRc612j6VlBIEQeRoiOpWQUEBJk2ahOLiYqxdu1bv2KxZszB48GB4e3tj0qRJ+Pnnn3Ho0CGcO3eu3P5CQ0OhUCh0m4uLS13fAhERERFRk1ajpJS3tzdWrlyJe/fuYcOGDVCr1Xj++efRqVMnrFy5Eg8fPjR0nEQGoRsp1cyKnGu52ZrDSAJk5hXiYZam8hOIGqmCggJMmDABcXFxiIyM1BslVZbu3bvDxMQEsbGx5bYJDg5Genq6bktMTDR02EREREREzUqtVt8zNjbGyy+/jJ9++gmffvopbt26hYULF8LZ2RlTp05FUlKSoeIkqrW0nHwkpecBKKkp1RzJTaRweVLgnXWlqKnSJqRiY2Nx6NAh2NraVnrOlStXUFBQAEdHx3LbyGQyWFlZ6W1ERERERFRztVp97+zZs/j++++xdetWWFhYYOHChZgxYwbu37+PDz/8EKNHj+a0PmowtEXOna3NYCU3ETka8bS1b4E7qTm49TALfdtW/mWdqKHJysrCzZs3da/j4uIQExMDGxsbODk5Yfz48Th37hz++9//oqioCGq1GgBgY2MDU1NT3Lp1Cz/++CNeeukl2NnZ4erVq3j33XfRrVs39OvXT6zbomdEnE6o8bmTe7tW3oiIiIiIRFejpNTKlSuxYcMG3LhxAy+99BI2bdqEl156CUZGJQOv3N3d8c0338DLy8ugwRLVxnV1ydS9Ds106p5WW3sLHL7OYufUeJ09exYDBw7UvV6wYAEAYNq0aQgJCcHu3bsBAF27dtU77/fff4efnx9MTU3x22+/4YsvvkBWVhZcXFwwfPhwfPTRR5BKpfV2H0REREREzV2NklLr1q3Dm2++iTfeeAMqlarMNq6urli/fn2tgiMyJG09qQ7NdOqelrbY+e2HnL5HjZOfn1+FhforK+Lv4uKCo0ePGjosIiIiIiKqpholpSIjI+Hq6qobGaUlCAISExPh6uoKU1NTTJs2zSBBEhmCduW95j5Sqs1TK/ARERERERERiaVGhc7btm2LlJSUUvsfPXoEd3f3WgdFZGiFRcW48SQp1VxX3tNqa28BALiXlovc/CKRoyEiIiIiIqLmqkZJqfKmRmRlZUEul9cqIKK6EJ+aA01hMcxMpHB7svpcc2VjYYqW5iYQBCAuhVP4iIiIiIiISBzVmr6nLSYrkUjw4Ycfwtz8ry/3RUVFOH36dKnCskQNgbaeVHuVJYyMJCJHIy6JRIK29i0Qfecxbj3MQken5j1yjIiIiIiIiMRRraTU+fPnAZSMlLp06RJMTU11x0xNTdGlSxcsXLjQsBESGQBX3tPX1t5Cl5QiIiIiIiIiEkO1klK///47AOCNN97AF198ASsrfsGnxuFakrbIefNeeU+rra7YOafvERERERERkThqtPrehg0bDB0HUZ26nsSRUk/TrcCXzJFSREREREREJI4qJ6XGjh2L8PBwWFlZYezYsRW23b59e60DIzKUtJx83E/PA1BSU4r+WoHvdkoWiouFZl9ni4iIiIiIiOpflZNSCoUCEolE92eixuK6umTqnrO1GazkJiJH0zC42JjDRCpBXkExkjLy0KqlmdghERERERERUTNT5aTU01P2OH2PGhPtynteKk7d0zKRGsHN1gI3k7NwKzmLSSkiIiIiIiKqdzWqKZWbmwtBEGBubg4AuHPnDnbs2IGOHTvC39/foAES1dZ1FjkvU1v7J0mph1l4wdNe7HCIiIiIiJqciNMJtTp/cm9XA0VC1DAZ1eSk0aNHY9OmTQCAtLQ09OrVC59//jlGjx6NdevWGTRAotq6pmaR87L8tQIfi50TERERERFR/atRUurcuXPo378/AODnn3+GSqXCnTt3sGnTJnz55ZcGDZCoNoqKBdx4UlPKi0XO9eiSUsnZIkdCREREREREzVGNklI5OTmwtCz5gn/w4EGMHTsWRkZG6NOnD+7cuWPQAIlqIy4lG5rCYpiZSOFmayF2OA1Kmycr8HGkFBEREREREYmhRkmpdu3aYefOnUhMTMSBAwd0daSSk5NhZcUpUtRwXH8ydc9TZQmpkUTkaBqWNk9GSiVnapCRVyByNERERERERNTc1Cgp9eGHH2LhwoVo3bo1evfujb59+wIoGTXVrVs3gwZIVBvalfc6ssh5KQozE9hbygAAtx9yCh8RERERERHVrxolpcaPH4+EhAScPXsW+/fv1+0fNGgQVq1aVa2+1q5dC3d3d8jlcvj4+OD48ePltt2+fTuGDBkCe3t7WFlZoW/fvjhw4ECpdr/88gs6duwImUyGjh07YseOHdWKiZoO7cp7XiqO4CuLu13JFL74FCaliIiIiIiIqH7VKCkFACqVCt26dYOR0V9d9OrVC15eXlXuY9u2bQgKCsKSJUtw/vx59O/fHwEBAUhIKHvZzGPHjmHIkCHYt28foqOjMXDgQIwcORLnz5/XtYmKisLEiRMxZcoUXLhwAVOmTMGECRNw+vTpmt4qNWLakVJcea9sbZ4kpW4zKUVERERERET1zLgmJ2VnZ+Of//wnfvvtNyQnJ6O4uFjv+O3bt6vUz8qVKzFjxgzMnDkTABAWFoYDBw5g3bp1CA0NLdU+LCxM7/Xy5cuxa9cu7NmzRzdtMCwsDEOGDEFwcDAAIDg4GEePHkVYWBi2bNlS3VulRiw9pwD30/MAAO258l6ZtCOl4piUIiIiIiIionpWo6TUzJkzcfToUUyZMgWOjo6QSKpfQDo/Px/R0dF4//339fb7+/vj5MmTVeqjuLgYmZmZsLGx0e2LiorCO++8o9du6NChpRJa1PRde1LkvFVLMyjMTESOpmH6KynFFfiIiIiIiIioftUoKfXrr79i79696NevX40vnJKSgqKiIiiVSr39SqUSarW6Sn18/vnnyM7OxoQJE3T71Gp1tfvUaDTQaDS61xkZGVW6PjVs13VT9zhKqjxt7LU1pXIgCEKNEsxEREREDc2xY8fwr3/9C9HR0UhKSsKOHTswZswY3fHp06dj48aNeuf07t0bp06d0r3WaDRYuHAhtmzZgtzcXAwaNAhr166Fs7Nzfd0GEVGTV6OaUtbW1nqjk2rj2S/BVf1ivGXLFoSEhGDbtm1wcHCoVZ+hoaFQKBS6zcXFpRp3QA3VtSdFzllPqnwuNuYwkgBZmkI8zNJUfgIRERFRI5CdnY0uXbpgzZo15bYZNmwYkpKSdNu+ffv0jgcFBWHHjh3YunUrTpw4gaysLIwYMQJFRUV1HT4RUbNRo5FS/+///T98+OGH2LhxI8zNzWt0YTs7O0il0lIjmJKTk0uNdHrWtm3bMGPGDPznP//B4MGD9Y6pVKpq9xkcHIwFCxboXmdkZDAx1QRcfzJ9jyvvlU9mLEUrazMkPspF3MNsOFjKxQ6JiIiIqNYCAgIQEBBQYRuZTAaVSlXmsfT0dKxfvx4//PCD7vvG5s2b4eLigkOHDmHo0KEGj5mIqDmq0Uipzz//HAcOHIBSqUTnzp3RvXt3va0qTE1N4ePjg8jISL39kZGR8PX1Lfe8LVu2YPr06YiIiMDw4cNLHe/bt2+pPg8ePFhhnzKZDFZWVnobNW5FxQJuPNCOlOL0vYq427UAwGLnRERE1LwcOXIEDg4O8PT0xKxZs5CcnKw7Fh0djYKCAvj7++v2OTk5wdvbu8L6txqNBhkZGXobERGVr0YjpZ6ej10bCxYswJQpU9CjRw/07dsX3377LRISEjBnzhwAJSOY7t27h02bNgEoSUhNnToVX3zxBfr06aMbEWVmZgaFQgEAePvtt/HCCy/g008/xejRo7Fr1y4cOnQIJ06cMEjM1DjEp2Yjr6AYchMjuNlaiB1Og9bGzgLH/nzIpBQRERE1GwEBAXjllVfg5uaGuLg4LF26FC+++CKio6Mhk8mgVqthamoKa2trvfMqq1UbGhqKZcuW1XX4RERNRo2SUh999JFBLj5x4kSkpqbi448/RlJSEry9vbFv3z64ubkBAJKSkpCQkKBr/80336CwsBBz587F3LlzdfunTZuG8PBwAICvry+2bt2KDz74AEuXLkXbtm2xbds29O7d2yAxU+Nw7UmR8/YqK0iNWLy7In+twMekFBERETUPEydO1P3Z29sbPXr0gJubG/bu3YuxY8eWe15ltWpZFoSIqHpqlJQCgLS0NPz888+4desW/v73v8PGxgbnzp2DUqlEq1atqtxPYGAgAgMDyzymTTRpHTlypEp9jh8/HuPHj69yDNT0XNcWOVdx6l5lmJQiIiKi5s7R0RFubm6IjY0FUFKnNj8/H48fP9YbLZWcnFxpWRCZTFbn8RIRNRU1qil18eJFeHp64tNPP8Vnn32GtLQ0AMCOHTsQHBxsyPiIakQ7Uoor71VOm5S6k5qDomJB5GiIKnfs2DGMHDkSTk5OkEgk2Llzp95xQRAQEhICJycnmJmZwc/PD1euXNFro9FoMH/+fNjZ2cHCwgKjRo3C3bt36/EuiIioIUlNTUViYiIcHR0BAD4+PjAxMdGrVZuUlITLly9XmJQiIqLqqVFSasGCBZg+fTpiY2Mhl/+1WldAQACOHTtmsOCIauq6umSklBdHSlXKqaUZTKVGyC8qxv20XLHDIapUZct8r1ixAitXrsSaNWtw5swZqFQqDBkyBJmZmbo2XOabiKhpy8rKQkxMDGJiYgAAcXFxiImJQUJCArKysrBw4UJERUUhPj4eR44cwciRI2FnZ4eXX34ZAKBQKDBjxgy8++67+O2333D+/Hm8/vrr6Ny5c6nVv4mIqOZqNH3vzJkz+Oabb0rtb9WqVYWF/4jqQ3pOAe49Sa54caRUpaRGErjZmiM2OQu3U7LhYmMudkhEFapomW9BEBAWFoYlS5boaoJs3LgRSqUSERERmD17Npf5JiJqBs6ePYuBAwfqXmvrPE2bNg3r1q3DpUuXsGnTJqSlpcHR0REDBw7Etm3bYGn51y80V61aBWNjY0yYMAG5ubkYNGgQwsPDIZVK6/1+iIiaqholpeRyeZnLm964cQP29va1DoqoNq6rS342W7U0g8LMRORoGgd3OwvEJmchPiUbAzz5f5gar7i4OKjVar0lvGUyGQYMGICTJ09i9uzZlS7zzaQUEVHj5+fnB0EovyzBgQMHKu1DLpdj9erVWL16tSFDIyKip9Ro+t7o0aPx8ccfo6CgAAAgkUiQkJCA999/H+PGjTNogETV9Vc9KU7dqyp3exY7p6ZBO1pXqVTq7X96Ce+aLvOt0WiQkZGhtxERERERUc3VKCn12Wef4eHDh3BwcEBubi4GDBiAdu3awdLSEv/4xz8MHSNRtfxVT4pT96qqzZNi57eZlKIm4tnluitbwrsqbUJDQ6FQKHQbl/gmIiIiIqqdGk3fs7KywokTJ/D7778jOjoaxcXF6N69O4v+UYNwTZuU4kipKnO3awEAiEvJEjkSotpRqVQASkZDaVdQAkqW8NaOnqrpMt/BwcG6miQAkJGRwcQUEREREVEtVHukVHFxMb7//nuMGDEC8+fPx8aNG3HixAncv3+/wnnbRPWhqFjADbV2+h5HSlWV+5ORUvce50JTyNXHqPFyd3eHSqXSW8I7Pz8fR48e1SWcarrMt0wmg5WVld5GREREREQ1V62RUoIgYNSoUdi3bx+6dOmCzp07QxAEXLt2DdOnT8f27duxc+fOOgqVqHJ3UrORV1AMuYkRWttaiB1Oo2HXwhQtZMbI0hQi8VEO2jlwlBk1XFlZWbh586butXaZbxsbG7i6uiIoKAjLly+Hh4cHPDw8sHz5cpibm2Py5MkA9Jf5trW1hY2NDRYuXMhlvomIiIiI6lm1klLh4eE4duwYfvvtN70lVgHg8OHDGDNmDDZt2oSpU6caNEiiqrqWVDJ1r73SElKjiuvH0F8kEgnc7Sxw6V46bj/MZlKKGrSKlvkODw/HokWLkJubi8DAQDx+/Bi9e/fGwYMHucw3EREREVEDU62k1JYtW7B48eJSCSkAePHFF/H+++/jxx9/ZFKKRHP9ydQ9FjmvPm1SiivwUUNX2TLfEokEISEhCAkJKbcNl/kmIiIiIhJftWpKXbx4EcOGDSv3eEBAAC5cuFDroIhq6lqStp4UR/pUl7auFJNSREREREREVB+qlZR69OiRbvWisiiVSjx+/LjWQRHVlHb6nheLnFdbG/uSpNRtJqWIiIiIiIioHlQrKVVUVARj4/Jn/EmlUhQWFtY6KKKaSMvJx720XABARycmpapLO1IqnkkpIiIiIiIiqgfVXn1v+vTpkMlkZR7XaDQGCYqoJq4+mbrnYmMGK7mJyNE0Pq2fJKWSMzXI0hSihaxabw9ERERERERE1VKtb53Tpk2rtA2LnJNYrt4vSUp15NS9GrGSm8CuhSlSsvIRn5IN71YKsUMiIiIiIiKiJqxaSakNGzbUVRxEtaYdKdXRkcmUmnK3s0BKVj5uMylFREREREREdaxaNaWIGjLdSCnWk6ox3Qp8D1lXioiIiIiIiOoWk1LUJGgKi3AzOQsAk1K14W7XAgAQl5IlciRERERERETU1DEpRU1C7IMsFBYLUJiZwEkhFzucRsvdzhwAEJeaI3IkRERERERE1NQxKUVNwl/1pKwgkUhEjqbx0o2UepgFQRBEjoaIiIiIiIiaMialqElgPSnDcLMtGSmVkVeIxzkFIkdDRERERERETRmTUtQkPD1SimpObiJFq5ZmAFhXioiIiIiIiOoWk1LU6AmCgGscKWUwrbV1pVJYV4qIiIiIiIjqDpNS1OjdfZyLTE0hTKVGaGvfQuxwGj13OwsAHClFREREREREdYtJKWr0rjwZJeWhbAFTY/5I11Zr25KkVDxHShEREREREVEd4jd4avRYT8qw2tiXJKVup2SLHAkRERERERE1ZUxKUaPHlfcM66+RUtkQBEHkaIiIiIiIiKipYlKKGr1rHCllUC425pAaSZBbUIQHGRqxwyEiIiIiIqImikkpatTScvJxLy0XANCBI6UMwkRqBBdrMwBAHKfwERERERERUR0RPSm1du1auLu7Qy6Xw8fHB8ePHy+3bVJSEiZPnoz27dvDyMgIQUFBpdqEh4dDIpGU2vLy8urwLkgs2npSLjZmsJKbiBxN0/HXCnxMShEREREREVHdMBbz4tu2bUNQUBDWrl2Lfv364ZtvvkFAQACuXr0KV1fXUu01Gg3s7e2xZMkSrFq1qtx+rayscOPGDb19crnc4PGT+HT1pDh1z6Ba21kANx4iPpVJKSIiIiKxRJxOqNX5k3uX/k5FRNSQiDpSauXKlZgxYwZmzpyJDh06ICwsDC4uLli3bl2Z7Vu3bo0vvvgCU6dOhUKhKLdfiUQClUqlt1HT9NfKe+X/PFD1tXkyUur2QyaliIiIiIiIqG6IlpTKz89HdHQ0/P399fb7+/vj5MmTteo7KysLbm5ucHZ2xogRI3D+/PkK22s0GmRkZOht1Dhw5b260fpJUoojpYiIiIiIiKiuiJaUSklJQVFREZRKpd5+pVIJtVpd4369vLwQHh6O3bt3Y8uWLZDL5ejXrx9iY2PLPSc0NBQKhUK3ubi41Pj6VH80hUW4mZwFgEkpQ9PWlEpIzUFRsSByNERERERERNQUiV7oXCKR6L0WBKHUvuro06cPXn/9dXTp0gX9+/fHTz/9BE9PT6xevbrcc4KDg5Genq7bEhMTa3x9qj+xD7JQWCxAYWYCJwVrhhmSk8IMpsZGyC8qxv0nqxsSERERERERGZJohc7t7OwglUpLjYpKTk4uNXqqNoyMjNCzZ88KR0rJZDLIZDKDXZPqx6V76QAA71ZWtUpkUmlGRhK0tjXHnw+ycDslGy425mKHRERERERERE2MaCOlTE1N4ePjg8jISL39kZGR8PX1Ndh1BEFATEwMHB0dDdYnNQwX76YBADq3ailqHE1Va9sndaVSWFeKiIiIiIiIDE/U6XsLFizAd999h++//x7Xrl3DO++8g4SEBMyZMwdAybS6qVOn6p0TExODmJgYZGVl4eHDh4iJicHVq1d1x5ctW4YDBw7g9u3biImJwYwZMxATE6Prk5qOi3dLRkp1cebKe3XB3b4kKRXHpBQ1Qq1bt4ZEIim1zZ07FwAwffr0Usf69OkjctRERERERM2LaNP3AGDixIlITU3Fxx9/jKSkJHh7e2Pfvn1wc3MDACQlJSEhIUHvnG7duun+HB0djYiICLi5uSE+Ph4AkJaWhrfeegtqtRoKhQLdunXDsWPH0KtXr3q7L6p7eQVFuKHOBAB0ZlKqTrjbMilFjdeZM2dQVFSke3358mUMGTIEr7zyim7fsGHDsGHDBt1rU1PTeo2RiIiIiKi5EzUpBQCBgYEIDAws81h4eHipfYJQ8Upgq1atwqpVqwwRGjVg15IyUFgswMbCFK1amokdTpOkXYGPSSlqjOzt7fVe//Of/0Tbtm0xYMAA3T6ZTAaVSlXfoRERERER0ROir75HVBPaIufPOStY5LyOaJNSdx/nIL+wWORoiGouPz8fmzdvxptvvqn3fnHkyBE4ODjA09MTs2bNQnJysohREhERERE1P6KPlCKqCW09qedacepeXbG3lMHCVIrs/CIkPMpBO4cWYodEVCM7d+5EWloapk+frtsXEBCAV155BW5uboiLi8PSpUvx4osvIjo6utzVWDUaDTQaje51RkZGXYdORERERNSkcaQUNUq6lfecW4oaR1MmkUjQ2o4r8FHjt379egQEBMDJyUm3b+LEiRg+fDi8vb0xcuRI/Prrr/jzzz+xd+/ecvsJDQ2FQqHQbS4uLvURPhERERFRk8WkFDU62ZpC3EzOAlAyfY/qDutKUWN3584dHDp0CDNnzqywnaOjI9zc3BAbG1tum+DgYKSnp+u2xMREQ4dLRERERNSscPoeNTpX7megWACUVjIoreRih9Ok6ZJSqUxKUeO0YcMGODg4YPjw4RW2S01NRWJiIhwdHcttI5PJyp3aR0RERERE1ceRUtTo6KbutWopahzNgS4p9ZBJKWp8iouLsWHDBkybNg3Gxn/9DiYrKwsLFy5EVFQU4uPjceTIEYwcORJ2dnZ4+eWXRYyYiIgM5dixYxg5ciScnJwgkUiwc+dOveOCICAkJAROTk4wMzODn58frly5otdGo9Fg/vz5sLOzg4WFBUaNGoW7d+/W410QETV9TEpRo6Ndea8Lp+7VOV1NKY6Uokbo0KFDSEhIwJtvvqm3XyqV4tKlSxg9ejQ8PT0xbdo0eHp6IioqCpaWliJFS0REhpSdnY0uXbpgzZo1ZR5fsWIFVq5ciTVr1uDMmTNQqVQYMmQIMjMzdW2CgoKwY8cObN26FSdOnEBWVhZGjBiBoqKi+roNIqImj9P3qNHRrrzXmUmpOtfmSVIqKT0POfmFMDflWwY1Hv7+/hAEodR+MzMzHDhwQISIiIiovgQEBCAgIKDMY4IgICwsDEuWLMHYsWMBABs3boRSqURERARmz56N9PR0rF+/Hj/88AMGDx4MANi8eTNcXFxw6NAhDB06tN7uhYioKeNIKWpU0nMLdEW3n+PKe3WupbkpWpqbAADiU3JEjoaIiIio9uLi4qBWq+Hv76/bJ5PJMGDAAJw8eRIAEB0djYKCAr02Tk5O8Pb21rUpi0ajQUZGht5GRETlY1KKGpWYxDQAgIuNGWwsTMUNpplw5xQ+IiIiakLUajUAQKlU6u1XKpW6Y2q1GqamprC2ti63TVlCQ0OhUCh0m4uLi4GjJyJqWpiUokYlOv4RAKCHm43IkTQf7rZPip2nMClFRERETYdEItF7LQhCqX3PqqxNcHAw0tPTdVtiYqJBYiUiaqqYlKJGJTrhMQDAx826kpZkKLoV+JiUIiIioiZApVIBQKkRT8nJybrRUyqVCvn5+Xj8+HG5bcoik8lgZWWltxERUfmYlKJGo7CoGOcT0gAAPVozKVVfWjMpRURERE2Iu7s7VCoVIiMjdfvy8/Nx9OhR+Pr6AgB8fHxgYmKi1yYpKQmXL1/WtSEiotrjUlrUaFxXZyInvwiWMmN4OHDZ9vqiqynFpBQRERE1EllZWbh586budVxcHGJiYmBjYwNXV1cEBQVh+fLl8PDwgIeHB5YvXw5zc3NMnjwZAKBQKDBjxgy8++67sLW1hY2NDRYuXIjOnTvrVuMjIqLaY1KKGo3oOyXDp7u5WUNqVPF8fzIc7Uip1Ox8pOcWQGFmInJERERERBU7e/YsBg4cqHu9YMECAMC0adMQHh6ORYsWITc3F4GBgXj8+DF69+6NgwcPwtLyr198rlq1CsbGxpgwYQJyc3MxaNAghIeHQyqV1vv9EBE1VUxKUaNx9klSqgfrSdWrFjJjOFjKkJypQXxKNrq4tBQ7JCIiIqIK+fn5QRCEco9LJBKEhIQgJCSk3DZyuRyrV6/G6tWr6yBCIiICWFOKGpG/Vt5jUqq+sa4UERERERERGRqTUtQo3E/Lxf30PEiNJBypI4K29iVJqVsPs0SOhIiIiIiIiJoKJqWoUdDWk+rgaAkLGWed1re29i0AADeTmZQiIiIiIiIiw2BSihqFaF09KRuRI2mePJQlRT9jmZQiIiIiIiIiA+GQE2oUzt4pqSflw3pSovBwKBkpFZ+SjYKiYphImc8mIiIiImrqIk4n1Or8yb1dDRQJNVX8ZkkNXpamENeSMgEAPVozKSUGR4UcFqZSFBYLuJPKYudERERERERUe0xKUYN3Ju4RiooFuNiYwVFhJnY4zZJEIkE7B9aVIiIiIiIiIsNhUooavJO3UgAA/draiRxJ89b2SVIq9gGTUkRERERERFR7TEpRg/e/m6kAgL5tbUWOpHnzcCgpdn7zIZNSREREREREVHtMSlGD9jg7H1eTMgAAvhwpJap2HClFREREREREBsSkFDVoUbdLRkl5KlvA3lImcjTNm3YFvlsPs1BULIgcDRERERERETV2TEpRg6atJ8VRUuJzsTGHqbERNIXFuPc4V+xwiIiIiIiIqJFjUooatJNP6kn5sp6U6KRGErSxswAAxCZnihwNERERERERNXZMSlGDlZSei9sp2TCSAL3bMCnVEGjrSt1MZl0pIiIiIiIiqh3Rk1Jr166Fu7s75HI5fHx8cPz48XLbJiUlYfLkyWjfvj2MjIwQFBRUZrtffvkFHTt2hEwmQ8eOHbFjx446ip7qknaUVOdWCijMTESOhoC/VuCLZVKKiIiIiIiIaknUpNS2bdsQFBSEJUuW4Pz58+jfvz8CAgKQkJBQZnuNRgN7e3ssWbIEXbp0KbNNVFQUJk6ciClTpuDChQuYMmUKJkyYgNOnT9flrVAdOHmrJCnVl/WkGgyOlCIiIiIiIiJDETUptXLlSsyYMQMzZ85Ehw4dEBYWBhcXF6xbt67M9q1bt8YXX3yBqVOnQqFQlNkmLCwMQ4YMQXBwMLy8vBAcHIxBgwYhLCysDu+EDE0QBF2R837tOHWvofBQ/pWUEgSuwEdEREREREQ1J1pSKj8/H9HR0fD399fb7+/vj5MnT9a436ioqFJ9Dh06tMI+NRoNMjIy9DYSV2xyFpLS82BqbIQebjZih0NPtLa1gNRIgixNIR5kaMQOh4iIiIiIiBox0ZJSKSkpKCoqglKp1NuvVCqhVqtr3K9ara52n6GhoVAoFLrNxcWlxtcnwzhyIxkA0KeNLcxMpSJHQ1qmxkZwszUHAPz5gCvwERERERERUc2JXuhcIpHovRYEodS+uu4zODgY6enpui0xMbFW16fa+/36QwDAwPb2IkdCz/J8UuycSSlqyEJCQiCRSPQ2lUqlOy4IAkJCQuDk5AQzMzP4+fnhypUrIkZMRERERNT8GIt1YTs7O0il0lIjmJKTk0uNdKoOlUpV7T5lMhlkMlmNr0mGlZlXgLN3HgEABrZ3EDkaepaXoyX2X1HjahKnuVLD1qlTJxw6dEj3Wir9a9TlihUrsHLlSoSHh8PT0xOffPIJhgwZghs3bsDS0lKMcOtFxOmyFxKpzOTergaOhIiIiIhIxJFSpqam8PHxQWRkpN7+yMhI+Pr61rjfvn37lurz4MGDteqT6tf/bqaioEhAa1tztLazEDscekYHRysAwPUkjpSihs3Y2BgqlUq32duXjLwUBAFhYWFYsmQJxo4dC29vb2zcuBE5OTmIiIgQOWoiIiIiouZD1Ol7CxYswHfffYfvv/8e165dwzvvvIOEhATMmTMHQMm0uqlTp+qdExMTg5iYGGRlZeHhw4eIiYnB1atXdcfffvttHDx4EJ9++imuX7+OTz/9FIcOHUJQUFB93hrVwtE/S+pJ+XGUVIPU8UlS6mZyFgqKikWOhqh8sbGxcHJygru7OyZNmoTbt28DAOLi4qBWq/UWxZDJZBgwYAAXxSAiIiIiqkeiTd8DgIkTJyI1NRUff/wxkpKS4O3tjX379sHNzQ0AkJSUhIQE/akG3bp10/05OjoaERERcHNzQ3x8PADA19cXW7duxQcffIClS5eibdu22LZtG3r37l1v90U1JwiCrp6UH+tJNUjO1mZoITNGlqYQtx5mwUtlJXZIRKX07t0bmzZtgqenJx48eIBPPvkEvr6+uHLlim6Kd1mLYty5c6fcPkNDQ7Fs2bI6jZuIiIiIqDkRNSkFAIGBgQgMDCzzWHh4eKl9giBU2uf48eMxfvz42oZGIrjxIBPqjDzITYzQp42t2OFQGSQSCbxUljh75zGuJ2UyKUUNUkBAgO7PnTt3Rt++fdG2bVts3LgRffr0AVCzRTEWLFige52RkcHVWomIiIiIakH01feInnbkRskoqb5tbCE3kVbSmsSirSt1jcXOqZGwsLBA586dERsbq1uFryaLYlhZWeltRERERERUc0xKUYPy+/WSelIDvVhPqiHTJqW4Ah81FhqNBteuXYOjoyPc3d2hUqn0FsXIz8/H0aNHuSgGEREREVE9En36HpFWWk4+zt55DADw82RSqiHr6FSSlLpyP6PSKU9EYli4cCFGjhwJV1dXJCcn45NPPkFGRgamTZsGiUSCoKAgLF++HB4eHvDw8MDy5cthbm6OyZMnix06EREREVGzwaQUNRhHbjxEUbGA9kpLuNqaix0OVcBLZQljIwkeZefjXlounK3570UNy927d/Hqq68iJSUF9vb26NOnD06dOqVbSGPRokXIzc1FYGAgHj9+jN69e+PgwYOwtLQUOXIiIiIiouaDSSlqMCKvPgAADOlYfk0XahjkJlK0V1niyv0MXLqbzqQUNThbt26t8LhEIkFISAhCQkLqJyAiIiIiIiqFNaWoQdAUFuHIjZJ6UkxKNQ7POSsAAJfupYscCRERERERETVGTEpRgxB1KxXZ+UVwsJShcyuF2OFQFXRu1RIAk1JERERERERUM0xKUYNw6FrJ1L3BHZUwMmLR7MZAmzy8eDcdgiCIHA0RERERERE1NkxKkegEQcChq5y619h4qlrAVGqE9NwCJD7KFTscIiIiIiIiamSYlCLRXbqXDnVGHsxNpejbxlbscKiKZMZSdHAsWansfOJjkaMhIiIiIiKixoZJKRKddtW9AZ72kJtIRY6GqqO7mzUA4Gw8k1JERERERERUPUxKkei0SSlO3Wt8erjZAADO3mFSioiIiIiIiKqHSSkS1a2HWbiuzoSxkQSDvJiUamx6tC4ZKXVDnYHMvAKRoyEiIiIiIqLGhEkpEtX+y2oAQL92dlCYm4gcDVWX0koOZ2szFAvA+YQ0scMhIiIiIiKiRoRJKRLVvktJAICXOqtEjoRqqmdrTuEjIiIiIiKi6jMWOwBqvu6kZuPK/QxIjSQY0pFJqcbKx80aO87fwx9xqWKHQkREJLqI0wk1Om9yb1cDR0JERNTwcaQUiebXJ1P3+raxhY2FqcjRUE31bWsLADh3Jw25+UUiR0NERERERESNBZNSJJpfn0zdC+DUvUatjZ0FnBRy5BcV44/4R2KHQ0RERFQlISEhkEgkeptK9dfnUkEQEBISAicnJ5iZmcHPzw9XrlwRMWIioqaHSSkSxd3HObhwNx1GEsCfU/caNYlEguc97AAA/7uZInI0RERERFXXqVMnJCUl6bZLly7pjq1YsQIrV67EmjVrcObMGahUKgwZMgSZmZkiRkxE1LQwKUWi0K6618vdBvaWMpGjodrq164kKXU8lkkpIiIiajyMjY2hUql0m729PYCSUVJhYWFYsmQJxo4dC29vb2zcuBE5OTmIiIgQOWoioqaDSSkSxZ6LT6bueTuKHAkZgjYpdS0pAw8zNSJHQ0RERFQ1sbGxcHJygru7OyZNmoTbt28DAOLi4qBWq+Hv769rK5PJMGDAAJw8ebLc/jQaDTIyMvQ2IiIqH5NSVO9uP8zChcQ0SI0keKkzk1JNgV0LGTq3UgAADl9/IHI0RERERJXr3bs3Nm3ahAMHDuDf//431Go1fH19kZqaCrW6ZFS/UqnUO0epVOqOlSU0NBQKhUK3ubi41Ok9EBE1dkxKUb3bGXMfANDfw45T95oQ/44lH9oOXGFSioiIiBq+gIAAjBs3Dp07d8bgwYOxd+9eAMDGjRt1bSQSid45giCU2ve04OBgpKen67bExMS6CZ6IqIlgUorqlSAI2Hn+HgDg5W6tRI6GDGmod0nB+hOxKcjSFIocDREREVH1WFhYoHPnzoiNjdWtwvfsqKjk5ORSo6eeJpPJYGVlpbcREVH5mJSienUu4TESHuXA3FSKIR3Lf6BT4+Ph0AJt7CyQX1SMIzeSxQ6HiIiIqFo0Gg2uXbsGR0dHuLu7Q6VSITIyUnc8Pz8fR48eha+vr4hREhE1LUxKUb3a8WSU1DBvFcxNjUWOhgxJIpHAv1PJbxX3PilkT0RERNRQLVy4EEePHkVcXBxOnz6N8ePHIyMjA9OmTYNEIkFQUBCWL1+OHTt24PLly5g+fTrMzc0xefJksUMnImoymBWgepNfWIz/PklWcOpe0zSqixO+PnoLh649wKPsfNhYmIodEhEREVGZ7t69i1dffRUpKSmwt7dHnz59cOrUKbi5uQEAFi1ahNzcXAQGBuLx48fo3bs3Dh48CEtLS5EjJyJqOpiUonpz9M+HSMspgL2lDL5t7cQOh+pARycrdG6lwKV76dgVcw9v9HMXOyQiIiKiMm3durXC4xKJBCEhIQgJCamfgIiImiFO36N680v0XQDA6C5OkBqVv2oJNW4TejgDALadSYQgCCJHQ0RERERERA2V6EmptWvXwt3dHXK5HD4+Pjh+/HiF7Y8ePQofHx/I5XK0adMGX3/9td7x8PBwSCSSUlteXl5d3gZVQp2eh8hrDwAAr/RwETkaqkujurSCqbERrqszcfbOY7HDISIiIiIiogZK1Ol727ZtQ1BQENauXYt+/frhm2++QUBAAK5evQpXV9dS7ePi4vDSSy9h1qxZ2Lx5M/73v/8hMDAQ9vb2GDdunK6dlZUVbty4oXeuXC6v8/uh8m09k4CiYgE9W1ujvYrz8JsyhbkJxnVvhS1/JOKbo7fRs7WN2CEREREREVEjFXE6oVbnT+5dOrdADYeoI6VWrlyJGTNmYObMmejQoQPCwsLg4uKCdevWldn+66+/hqurK8LCwtChQwfMnDkTb775Jj777DO9dhKJBCqVSm8j8RQWFWPrH4kAgNf7uIkcDdWHmf3bQCIBDl17gNgHmWKHQ0RERERERA2QaEmp/Px8REdHw9/fX2+/v78/Tp48WeY5UVFRpdoPHToUZ8+eRUFBgW5fVlYW3Nzc4OzsjBEjRuD8+fOGvwGqskPXkqHOyIOthSmGeTNB2By0tW8B/45KAMCXh2+KHA01R6GhoejZsycsLS3h4OCAMWPGlBpBO3369FJTvfv06SNSxEREREREzY9oSamUlBQUFRVBqVTq7VcqlVCr1WWeo1ary2xfWFiIlJQUAICXlxfCw8Oxe/dubNmyBXK5HP369UNsbGy5sWg0GmRkZOhtZDg/nr4DoKSWlMxYKnI0VF/mv+gBiQTYc+E+Lt5NEzscamaOHj2KuXPn4tSpU4iMjERhYSH8/f2RnZ2t127YsGFISkrSbfv27RMpYiIiIiKi5kfUmlJAyVS7pwmCUGpfZe2f3t+nTx+933T369cP3bt3x+rVq/Hll1+W2WdoaCiWLVtWo/ipYnEp2TgemwKJBHiNc3mbFe9WCrzctRW2n7+HT/Zew7a3+lT4f5vIkPbv36/3esOGDXBwcEB0dDReeOEF3X6ZTMYp3kREREREIhFtpJSdnR2kUmmpUVHJycmlRkNpqVSqMtsbGxvD1ta2zHOMjIzQs2fPCkdKBQcHIz09XbclJiZW826oPJtPlYyS8vO0h4uNucjRUH1bOLQ9ZMZG+CPuEX45d0/scKgZS09PBwDY2OgX3j9y5AgcHBzg6emJWbNmITk5udw+OKqWiIiIiMiwREtKmZqawsfHB5GRkXr7IyMj4evrW+Y5ffv2LdX+4MGD6NGjB0xMTMo8RxAExMTEwNHRsdxYZDIZrKys9DaqvfScAmz9o2SlhKm+rcUNhkTh1NIMQYM9AQD/779X8TBTI3JE1BwJgoAFCxbg+eefh7e3t25/QEAAfvzxRxw+fBiff/45zpw5gxdffBEaTdk/p6GhoVAoFLrNxcWlvm6BiIiIiKhJEnX1vQULFuC7777D999/j2vXruGdd95BQkIC5syZA6BkBNPUqVN17efMmYM7d+5gwYIFuHbtGr7//nusX78eCxcu1LVZtmwZDhw4gNu3byMmJgYzZsxATEyMrk+qP5tP30F2fhG8VJbw87QXOxwSycz+7ujoaIX03AIs+vmCbsotUX2ZN28eLl68iC1btujtnzhxIoYPHw5vb2+MHDkSv/76K/7880/s3bu3zH44qpaIiIiIyLBErSk1ceJEpKam4uOPP0ZSUhK8vb2xb98+uLm5AQCSkpKQkJCga+/u7o59+/bhnXfewVdffQUnJyd8+eWXGDdunK5NWloa3nrrLajVaigUCnTr1g3Hjh1Dr1696v3+mrPc/CJs+F8cAGDOgLasJdSMmUiN8PmELhj91f/w+42HWH8iDjP7txE7LGom5s+fj927d+PYsWNwdnausK2joyPc3NzKne4tk8kgk8nqIkwiIiIiomZJ9ELngYGBCAwMLPNYeHh4qX0DBgzAuXPnyu1v1apVWLVqlaHCoxr68fQdpGTlw9naDMOfK3/qJDUPHRytsHRERyzdeRmf7r+OXu42eM65pdhhURMmCALmz5+PHTt24MiRI3B3d6/0nNTUVCQmJlY43ZuIiIiIiAxH1Ol71DTl5Bfi66O3AADzX2wHEyl/zAh4vbcrhnVSoaBIwPwt55GZVyB2SNSEzZ07F5s3b0ZERAQsLS2hVquhVquRm5sLAMjKysLChQsRFRWF+Ph4HDlyBCNHjoSdnR1efvllkaMnIiIiImoemC0gg9sUVTJKytXGHGO7VzxdhpoPiUSCT8c9h1YtzXAnNQdLdlxmfSmqM+vWrUN6ejr8/Pzg6Oio27Zt2wYAkEqluHTpEkaPHg1PT09MmzYNnp6eiIqKgqWlpcjRExERERE1D6JP36Om5XF2Pr76/SYA4O1BHhwlRXoU5ib48tVumPBNFHZfuI/n29lhQk+uYEaGV1nC08zMDAcOHKinaIiIiIiIqCzMGJBBfXk4Fpl5hejoaIWXu7USOxxqgHzcrLFgiCcA4MPdl3EzOVPkiIiIiIiIiEgMTEqRwfz5IBM/RN0BACwZ3gFGRlxxj8r2twFt8Xw7O+QVFGNexHnkFRSJHRIRERERERHVMyalyCAEQcDSnZdRWCxgSEcl+rWzEzskasCMjCRYObEL7FqY4ro6E5/svSp2SERERERERFTPmJQig/jl3D2cjnsEuYkRPhzRUexwqBFwsJRj1cSuAIDNpxLw66UkcQMiIiIiIiKiesWkFNXavbRcLNt9BQDwf4M84GJjLnJE1Fj097DH3/zaAgDe334J6vQ8kSMiIiIiIiKi+sKkFNVKcbGART9fQKamEN1cW+Kt/m3EDokamQVDPPGcswLpuQVY9MvFSldNIyIiIiIioqaBSSmqlU1R8fjfzVSYmUixckJXGEv5I0XVYyI1wsoJXSAzNsKxPx9i8+kEsUMiIiIiIiKiesAMAtVY7INMhP56HQCw+CUvuNtZiBwRNVbtHCzx3jAvAMDyvdcQl5ItckRERERERERU15iUohrJyCvAWz9EQ1NYjP4edni9j5vYIVEjN923Nfq1s0VuQREW/BSDwqJisUMiIiIiIiKiOsSkFFVbcbGAd7bGIC4lG61amiFsYldIJBKxw6JGzshIgn+N7wJLuTHOJ6Th66O3xA6JiIiIiIiI6hCTUlRtX/wWi9+uJ0NmbIRvpvjAtoVM7JCoiXBqaYZlozoBAMIOxeLyvXSRIyIiIiIiIqK6wqQUVcvei0n44rdYAEDo2M7wbqUQOSJqal7u1goB3ioUFgt4Z1sM8gqKxA6JiIiIiIiI6gCTUlRlp2+n4p1tMQCAN/u5Y2x3Z3EDoiZJIpHgHy93hl0LGWKTs7B83zWxQyIiIiIiIqI6YCx2ANQ4xD7IxKxNZ5FfVIxhnVRYMryD2CFRE2ZjYYp/jX8Ob4SfwaaoO+ji3BLjfJgEJSIiKkvE6YQanTe5t6uBIyEiomfV9D1aq6m/V3OkFFUqKT0X0zecQUZeIXzcrBE2qSukRixsTnVroJcD/m+QBwBg8Y5LuHSX9aWIiIiIiIiaEo6UogqlZGnw+nencS8tF23sLPDvqT0gN5GKHRY1E0GDPHDlXjp+u56MOZujsXtePxbWpyaDIxuIiIiIqLnjSCkqV3puAaau/wO3HmbDSSHHphm9YGNhKnZY1IwYGUmwcmJXuNtZ4F5aLt7ceBZZmkKxwyIiIiIiIiIDYFKKypSTX4g3w8/galIG7FqYYvPM3nC2Nhc7LGqGFGYm+PfUHrA2N8GFxDS8GX6GiSkiIiIiIqImgEkpKiWvoAhvbYpG9J3HsJIb44cZvdHGvoXYYVEz1s6hBTa+2QstZMb4I+4RXvv3KaRmacQOi4iIiIiIiGqBSSnSk1dQhDmbo3HiZgrMTaUIf7MXOjhaiR0WEZ5zbokfZ/YuGTF1Nx2j1vyPxc+JiIiIiIgaMSalSCdbU4g3NpzBkRsPITcxwndTe6C7q7XYYRHpdHFpiZ//5qurMfXy2v/h84M3oCksEjs0IiIiIiIiqiYmpQjAk6Lm3/+BqNupsDCVYtObveHbzk7ssIhKaWvfAjvn9kOAtwqFxQJWH76Jl744jqhbqf+fvfuOb6pe/wD+yWiS7j2hi7I3tMwCigoIioAiXFGGgsoPF6JeQa8KOHpFxbqochW4qGC9V3BccdTFEJQhBdkIdNLSvdu0Sc7vj/QESneb5GR83q9XXtrTk3OehOZ8kyfP9/lKHRoRERERERG1A5NShL/yyjHjnV9NPaQ+vnckhkf7SR0WUbO8XV2QdFcsku4cigAPNc7lV+KOf/2GuR/8jiOZJVKHR0RERERERG2glDoAktYPJy5haXIqKrQ6hHlr8P78Yegbxh5SZB8mDwjF6JgAvPL9KXyyPxO7zxZg99kCjO8ViPvGxWBkNz/IZDKpwyQiIiIiIqImMCnlpKpr9Xjlu9PYuPcCBAEYHuWHdXcZq06I7Im3mwtemD4A942NQeKPZ/D54Wz8fDofP5/Ox6Cu3rh3XDfc2C8ESgULQ4mIiIiIiGwJk1JOpk5vwBepF7H2+9O4WFoDAJg7MhLP3NwXKiU/tJP9ivB3w9pZg/HQdT3w/u7z+O+hLBzJKsWDWw4j3M8Vi8Z0w8zYrnBX87JHRERERERkC/jpzAnU6Q04ll2KlBOX8NkfWbhUpgUAhHlr8OKtAzC+V5DEERKZT3SAO16cMQCPTuiJzfvS8eG+NGQWVeO5L4/j1e9OY8bQLrhzRCR6hXhKHSoREREREZFTkzwptW7dOrzyyivIyclBv379kJiYiLFjxza7/86dO7Fs2TIcP34cYWFh+Pvf/47Fixc32Oezzz7DM888g3PnziEmJgYvvvgiZsyYYemHYlFanR7n8iqRUVSF4qpaFFXWolKrg0EABEGAQRCgNwB6gwF6QUB1rQF55TXILa1BZnEVauoMpmMFeKixaGw0FoyOgsZFIeGjIrKcAA81lk3oif+7Jgb/OZSJDXsuIK2wCpv3pWPzvnQMi/LF7GERmNA3GN6uLlKHSxJq7zhERETOh2MFEdmrLb9ndOr+c0ZEmCmSpkmalEpOTsbSpUuxbt06xMfH47333sPkyZNx4sQJREQ0fuAXLlzAlClTcO+99+Kjjz7Cr7/+iiVLliAwMBC33XYbAGDfvn2YPXs2nn/+ecyYMQPbt2/HrFmzsGfPHowYMcLaD7Hd9AYB6YWVOHOpHKdzK3D6UhlO55YjrbAKeoPQ4eN6u7ogvrs/JvcPxcR+wVArmYwi5+CqUmDeqCjcNSISe88V4uPf0/H9iUs4kFaMA2nFcFHIMLZHIG7oE4wR3fzQLcDd4s3RDQYBdQZjolilkLMZu4TaOw4REZHz4VhBRGQ5kial1q5di4ULF2LRokUAgMTERHz33XdISkpCQkJCo/3fffddREREIDExEQDQp08fHDx4EK+++qopKZWYmIgJEyZgxYoVAIAVK1Zg586dSExMxNatW63zwFpQqzOgrKYOpdV1uFRWg4zCKmQUVSG9qAppBZX4K68CWp2hyft6aZToFuiBAA8VfN1UcFcroZDLoJDLIJMBcpkMyvqfXRRyBHtpEOKlQRdfV0T6uUEu5wdfcl5yuQxjegRgTI8AXCqrwacHMvHV0Ys4c6kCP53Kw0+n8gAYK6wGdvVGjyAPxAR5oIuPK/w9VPB3V8NNpYBKKYdSLoPOIECrM0Bbp0eNzoCy6joUVtSisFLb4L9FlfW3qloUV9aivEYH3RUJZpkM0CgV8NQo4e+hRoCHCgH1//X3UMPP3fh693N3gY+bCn5uKni5ukDB17NZtHccIiIi58OxgojIciRLStXW1uLQoUNYvnx5g+0TJ07E3r17m7zPvn37MHHixAbbJk2ahA8++AB1dXVwcXHBvn378OijjzbaR0xkNUWr1UKr1Zp+Li0tBQCUlZW15yHhZE4pVn91EjqDAXqDgDq9ATqDAJ1egE5vQLlW12AaXXPULnLEBHigR7AHegR5oHuwJ3oEeiDIS93Bigo9KirKO3A/IsfkCmD+sGDMHxaMc/nlSDmeh98vFCI1qxR5hVX4obAYP1gxnkoAlRVAbkHb9pfJALVSDpVCbvyvi/H/VUoF5DJAIZNBJpNh+tAwzI5r3ze44nVPEDpemWkv2jsOmWusEFVVduy63NHzSXXOjuporACfo7aw9t9tZ87ZGc7yOrP2OTlW2P5YIers607q85uD1I9B6vN3li3EbwsxdIbU8Ut1/raOFZIlpQoKCqDX6xEcHNxge3BwMHJzc5u8T25ubpP763Q6FBQUIDQ0tNl9mjsmACQkJGDVqlWNtoeHh7f14ZjdXwC+k+zsROQIdgC4r4P3LS8vh7e3tznDsTntHYdsZay416pnk+6cncHnqHV8jlrmLM9PZ8/JscJ2xwqR1K87qc9vDlI/BqnP31m2EL8txNAZUsdv6bFC8kbnV1f+CILQYjVQU/tfvb29x1yxYgWWLVtm+tlgMKCoqAj+/v4W6/VSVlaG8PBwZGZmwsvLyyLnsEV83M71uAHnfez2+rgFQUB5eTnCwsKkDsVq2jpmSDFWWIu9/r1aE5+jlvH5aZ0jPUccK6wzVjjS34zU+FyaD59L83H057KtY4VkSamAgAAoFIpG3zDk5eU1+iZCFBIS0uT+SqUS/v7+Le7T3DEBQK1WQ61WN9jm4+PT1ofSKV5eXg75B9gaPm7n46yP3R4ft6N/6y1q7zgk5VhhLfb492ptfI5axuendY7yHHGssN5Y4Sh/M7aAz6X58Lk0H0d+LtsyVsitEEeTVCoVYmNjkZKS0mB7SkoKRo8e3eR9Ro0a1Wj/77//HnFxcXBxcWlxn+aOSUREzqkj4xARETkXjhVERJYl6fS9ZcuWYe7cuYiLi8OoUaOwfv16ZGRkYPHixQCM5a/Z2dnYvHkzAGDx4sV4++23sWzZMtx7773Yt28fPvjggwar6j3yyCMYN24cXn75ZUybNg1ffPEFfvjhB+zZs0eSx0hERLartXGIiIiIYwURkeVImpSaPXs2CgsLsXr1auTk5KB///7YsWMHIiMjAQA5OTnIyMgw7R8dHY0dO3bg0UcfxTvvvIOwsDC8+eabuO2220z7jB49Gp988gn+8Y9/4JlnnkFMTAySk5MxYsQIqz++lqjVajz33HONynsdHR+3cz1uwHkfu7M+bnvT2jjkLPj32jo+Ry3j89M6Pkf2S6qxgn8z5sPn0nz4XJoPn0sjmeAMa7kSEREREREREZFNkaynFBEREREREREROS8mpYiIiIiIiIiIyOqYlCIiIiIiIiIiIqtjUoqIiIiIiIiIiKyOSSkbo9VqMXjwYMhkMqSmpkodjkWlpaVh4cKFiI6OhqurK2JiYvDcc8+htrZW6tDMbt26dYiOjoZGo0FsbCx2794tdUgWlZCQgGHDhsHT0xNBQUGYPn06Tp8+LXVYVpeQkACZTIalS5dKHQpRk/habR++ppuWnZ2Nu+66C/7+/nBzc8PgwYNx6NAhqcOyGTqdDv/4xz9M73e6deuG1atXw2AwSB0a2TBne+9oCRzjLIfjYedx7LyMSSkb8/e//x1hYWFSh2EVp06dgsFgwHvvvYfjx4/j9ddfx7vvvounnnpK6tDMKjk5GUuXLsXTTz+Nw4cPY+zYsZg8eTIyMjKkDs1idu7ciQceeAC//fYbUlJSoNPpMHHiRFRWVkodmtUcOHAA69evx8CBA6UOhahZfK22HV/TTSsuLkZ8fDxcXFzwzTff4MSJE3jttdfg4+MjdWg24+WXX8a7776Lt99+GydPnsSaNWvwyiuv4K233pI6NLJRzvje0RI4xlkGx8PO49jZkEwQBEHqIMjom2++wbJly/DZZ5+hX79+OHz4MAYPHix1WFb1yiuvICkpCefPn5c6FLMZMWIEhg4diqSkJNO2Pn36YPr06UhISJAwMuvJz89HUFAQdu7ciXHjxkkdjsVVVFRg6NChWLduHV544QUMHjwYiYmJUodF1Cpne622FV/TzVu+fDl+/fVXVnG04Oabb0ZwcDA++OAD07bbbrsNbm5u+PDDDyWMjGwV3ztaBse4zuN4aB4cOxtipZSNuHTpEu699158+OGHcHNzkzocyZSWlsLPz0/qMMymtrYWhw4dwsSJExtsnzhxIvbu3StRVNZXWloKAA71b9uSBx54ADfddBNuuOEGqUMhahdne622FV/Tzfvyyy8RFxeH22+/HUFBQRgyZAj+9a9/SR2WTRkzZgx+/PFHnDlzBgBw5MgR7NmzB1OmTJE4MrJFfO9oORzjOo/joXlw7GxIKXUABAiCgAULFmDx4sWIi4tDWlqa1CFJ4ty5c3jrrbfw2muvSR2K2RQUFECv1yM4OLjB9uDgYOTm5koUlXUJgoBly5ZhzJgx6N+/v9ThWNwnn3yCP/74AwcOHJA6FKJ2cbbXalvxNd2y8+fPIykpCcuWLcNTTz2F/fv34+GHH4Zarca8efOkDs8mPPnkkygtLUXv3r2hUCig1+vx4osv4o477pA6NLJBfO9oGRzjOo/joflw7GyISSkLWrlyJVatWtXiPgcOHMDevXtRVlaGFStWWCkyy2rr446LizP9fPHiRdx44424/fbbsWjRIkuHaHUymazBz4IgNNrmqB588EEcPXoUe/bskToUi8vMzMQjjzyC77//HhqNRupwiNrFmV6rbcXXdOsMBgPi4uLw0ksvAQCGDBmC48ePIykpySnfWDclOTkZH330EbZs2YJ+/fohNTUVS5cuRVhYGObPny91eGSjnPm9oyVwjOscjofmxbGzISalLOjBBx/E3/72txb3iYqKwgsvvIDffvsNarW6we/i4uJw55134t///rclwzS7tj5u0cWLFzF+/HiMGjUK69evt3B01hUQEACFQtHom628vLxG34A5ooceeghffvkldu3aha5du0odjsUdOnQIeXl5iI2NNW3T6/XYtWsX3n77bWi1WigUCgkjJGqas71W24qv6daFhoaib9++Dbb16dMHn332mUQR2Z4nnngCy5cvN703GjBgANLT05GQkMCkFDXi7O8dLYFjXOdxPDQvjp0NMSllQQEBAQgICGh1vzfffBMvvPCC6eeLFy9i0qRJSE5OxogRIywZokW09XEDxqUwx48fj9jYWGzcuBFyuWO1OVOpVIiNjUVKSgpmzJhh2p6SkoJp06ZJGJllCYKAhx56CNu3b8cvv/yC6OhoqUOyiuuvvx5//vlng2133303evfujSeffJKDNdkcZ32tthVf062Lj49vtMT6mTNnEBkZKVFEtqeqqqrR+xuFQgGDwSBRRGTLnPW9oyVwjDMfjofmxbGzISalbEBERESDnz08PAAAMTExDp3Nv3jxIq699lpERETg1VdfRX5+vul3ISEhEkZmXsuWLcPcuXMRFxdnqgbLyMjA4sWLpQ7NYh544AFs2bIFX3zxBTw9PU3f9nl7e8PV1VXi6CzH09OzUZ8Cd3d3+Pv7s38B2SRnfa22FV/TrXv00UcxevRovPTSS5g1axb279+P9evXO1zlc2dMnToVL774IiIiIkyrK69duxb33HOP1KGRjXLG946WwDHOfDgemhfHzqsIZHMuXLggABAOHz4sdSgWtXHjRgFAkzdH88477wiRkZGCSqUShg4dKuzcuVPqkCyquX/XjRs3Sh2a1V1zzTXCI488InUYRE3ia7X9+Jpu7KuvvhL69+8vqNVqoXfv3sL69eulDsmmlJWVCY888ogQEREhaDQaoVu3bsLTTz8taLVaqUMjG+Zs7x0tgWOcZXE87ByOnZfJBEEQrJYBIyIiIiIiIiIiAuBYDXyIiIiIiIiIiMguMClFRERERERERERWx6QUERERERERERFZHZNSRERERERERERkdUxKERERERERERGR1TEpRUREREREREREVsekFBERERERERERWR2TUkREREREREREZHVMShERERERERERkdUxKUVERERERERERFbHpBQREREREREREVkdk1JERERERERERGR1TEoREREREREREZHVMSlFRERERERERERWx6QUERERERERERFZHZNSRERERERERERkdUxKERERERERERGR1TEpRWa1cuVKyGQyFBQUNPn7/v3749prr+3QsRcsWICoqKgG24qKivC3v/0NQUFBkMlkmD59eoeOLbWoqCgsWLDA9PMvv/wCmUyGX375pV3HWbduHTZt2tSu+zR1rgULFsDDw6Ndx2nN3r17sXLlSpSUlDT63bXXXtvhvwsism+bNm2CTCZDWlqaRc8jk8mwcuXKdt1nx44dzd7n6uu2JXBs4NhARK1r6jPCSy+9hM8//7zRvh29jlpbU4/JGvcFGl9709LSIJPJ2j2ObNmyBYmJie26T1Pnau3zZUecOHECK1eubPK9R2efP2o/pdQBELXVM888g0ceeaTBtueffx7bt2/Hhg0bEBMTAz8/P4miM6+hQ4di37596Nu3b7vut27dOgQEBLTrg1JHz9Vee/fuxapVq7BgwQL4+Pg0+N26dessem4ion379qFr167tus+OHTvwzjvvNJmY2r59O7y8vMwUXdtwbCAiapuXXnoJM2fObPSFtbWubZ3V1OceqYSGhmLfvn2IiYlp1/22bNmCY8eOYenSpRY/V3udOHECq1atwrXXXtsoAWVLz72zYFKK7EZTF6djx44hJiYGd955p1nOIQgCampq4OrqapbjdZSXlxdGjhxp0XPU1dVBJpNZ5VytsfU3BkRk/8x9nRsyZIhZj9cWHBuIiDrHFq5tbWHppEx7qNVqiz9ner0eOp3OKudqjS09986C0/dIUmIJ7datW/H0008jLCwMXl5euOGGG3D69OkG+15ZSimWdv7www84efIkZDJZg1LcoqIiLFmyBF26dIFKpUK3bt3w9NNPQ6vVNjimTCbDgw8+iHfffRd9+vSBWq3Gv//9b9N0kp9++gn33nsv/P394eXlhXnz5qGyshK5ubmYNWsWfHx8EBoaiscffxx1dXWtPt66ujr8/e9/R0hICNzc3DBmzBjs37+/2eflytLi8+fP429/+xvCwsKgVqsRHByM66+/HqmpqQCM0zyOHz+OnTt3mp4P8fkSj/fhhx/iscceQ5cuXaBWq/HXX3+1WMZ8/PhxXH/99XB3d0dgYCAefPBBVFVVmX7fUjnvlVNlVq5ciSeeeAIAEB0d3ejfq6kpGu39N/zwww/Rp08fuLm5YdCgQfjf//7X/D8EEdm8DRs2YNCgQdBoNPDz88OMGTNw8uTJRvv961//Qs+ePaFWq9G3b19s2bKlydL7q6fvVVVV4fHHH0d0dLTpHHFxcdi6dSsA45jzzjvvmO4r3sRS/6am75WUlOCxxx5Dt27doFarERQUhClTpuDUqVMtPlaODRwbiByNOOXq6NGjuP322+Ht7Q0/Pz8sW7YMOp0Op0+fxo033ghPT09ERUVhzZo1De7f3NTutky/k8lkqKysxL///W/TdUW8lrQ0Nfmvv/7ClClT4OHhgfDwcDz22GONri3tvQZt3LgRvXr1gqurK+Li4vDbb79BEAS88soriI6OhoeHB6677jr89ddfDe7f1Dj2zjvvYNy4cQgKCoK7uzsGDBiANWvWtOkzSFMEQcCaNWsQGRkJjUaDoUOH4ptvvmm0X1PX9Pz8fNx3330IDw+HWq1GYGAg4uPj8cMPPwAwXr+//vprpKenNxhDrzzemjVr8MILLyA6OhpqtRo///xzi+NHZmYmbr31Vnh5ecHb2xt33XUX8vPzG+zT3FT9K8fsTZs24fbbbwcAjB8/3hSbeM6mnvuamhqsWLEC0dHRUKlU6NKlCx544IFGU8+joqJw880349tvv8XQoUPh6uqK3r17Y8OGDc38KxDASimyEU899RTi4+Px/vvvo6ysDE8++SSmTp2KkydPQqFQNNpfLO1csmQJSktL8fHHHwMwfqtaU1OD8ePH49y5c1i1ahUGDhyI3bt3IyEhAampqfj6668bHOvzzz/H7t278eyzzyIkJARBQUE4cOAAAGDRokW49dZb8cknn+Dw4cN46qmnTAPprbfeivvuuw8//PADXn75ZYSFhWHZsmUtPs57770XmzdvxuOPP44JEybg2LFjuPXWW1FeXt7qczRlyhTo9XqsWbMGERERKCgowN69e00Xw+3bt2PmzJnw9vY2TXlQq9UNjrFixQqMGjUK7777LuRyOYKCgpCbm9vk+erq6jBlyhTcf//9WL58Ofbu3YsXXngB6enp+Oqrr1qN90qLFi1CUVER3nrrLWzbtg2hoaEAmv8WvL3/hl9//TUOHDiA1atXw8PDA2vWrMGMGTNw+vRpdOvWrV2xEpH0EhIS8NRTT+GOO+5AQkICCgsLsXLlSowaNQoHDhxAjx49AADr16/H/fffj9tuuw2vv/46SktLsWrVqkYfDpqybNkyfPjhh3jhhRcwZMgQVFZW4tixYygsLARgLN+vrKzEf//7X+zbt890P/H6dbXy8nKMGTMGaWlpePLJJzFixAhUVFRg165dyMnJQe/evZuNhWMDxwYiRzVr1izcdddduP/++5GSkmJKovzwww9YsmQJHn/8cWzZsgVPPvkkunfvjltvvbXT59y3bx+uu+46jB8/Hs888wwAtDrduq6uDrfccgsWLlyIxx57DLt27cLzzz8Pb29vPPvsswDafw363//+h8OHD+Of//wnZDIZnnzySdx0002YP38+zp8/j7fffhulpaVYtmwZbrvtNqSmppoSN005d+4c5syZY0qMHDlyBC+++CJOnTrVoaTHqlWrsGrVKixcuBAzZ85EZmYm7r33Xuj1evTq1avF+86dOxd//PEHXnzxRfTs2RMlJSX4448/TGPounXrcN999+HcuXPYvn17k8d488030bNnT7z66qvw8vIyje3NmTFjBmbNmoXFixfj+PHjeOaZZ3DixAn8/vvvcHFxafPjvummm/DSSy/hqaeewjvvvIOhQ4cCaL5CShAETJ8+HT/++CNWrFiBsWPH4ujRo3juueewb98+7Nu3r8G4euTIETz22GNYvnw5goOD8f7772PhwoXo3r07xo0b1+Y4nYpAZEbPPfecAEDIz89v8vf9+vUTrrnmGtPPP//8swBAmDJlSoP9Pv30UwGAsG/fPtO2+fPnC5GRkQ32u+aaa4R+/fo12Pbuu+8KAIRPP/20wfaXX35ZACB8//33pm0ABG9vb6GoqKjBvhs3bhQACA899FCD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YIHQu3dvwd3dXfDw8BAGDhwovP7664JOpzPdLy0tTZg4caLg6ekpADA9X809z02d68rHc/ToUeHaa68VXF1dBT8/P+H//u//GqwiIgiCUFpaKixatEgIDg4W3N3dhalTpwppaWlNrn6xYsUKISwsTJDL5Q3OefUKS4LQ+X/Dq59TIrJNza2w9P777wsDBw4UVCqV4O3tLUybNk04fvx4o/uvX79e6N69u6BSqYSePXsKGzZsEKZNmyYMGTKkwX5XX5OWL18uxMXFCb6+voJarRa6desmPProo0JBQYFpH61WKyxatEgIDAwUZDJZgzibusYUFxcLjzzyiBARESG4uLgIQUFBwk033SScOnWqxeeAYwPHBiJH0973zE29pz9z5owwceJEwcvLSwgMDBQeeugh4euvv27T6nupqalCfHy84Obm1mA1uZaubc09hit15hokfr555ZVXGmxv6lrc1GP66quvhEGDBgkajUbo0qWL8MQTTwjffPNNm56PphgMBiEhIUEIDw8XVCqVMHDgQOGrr75qdO29+nNZTU2NsHjxYmHgwIGCl5eX4OrqKvTq1Ut47rnnhMrKStP9ioqKhJkzZwo+Pj6mMbSl56GpcwnC5X+HQ4cOCVOnThU8PDwET09P4Y477hAuXbrU4P5arVb4+9//LoSHhwuurq7CNddcI6SmpjZ57U9MTBSio6MFhULR4JxNPX/V1dXCk08+KURGRgouLi5CaGio8H//939CcXFxg/0iIyOFm266qdHjamo8o8tkgnDVpFgiIiIiO1VSUoKePXti+vTpWL9+vdThEBEREVELOH2PiIiI7FJubi5efPFFjB8/Hv7+/khPT8frr7+O8vJyPPLII1KHR0REREStYFKKiIiI7JJarUZaWhqWLFmCoqIiuLm5YeTIkXj33XfRr18/qcMjIiIiolZw+h4REREREREREVldy0vTEBERERERERERWQCTUkREREREREREZHVMShERERERERERkdWx0XkTDAYDLl68CE9PT8hkMqnDISKyGkEQUF5ejrCwMMjltvO9xbp16/DKK68gJycH/fr1Q2JiIsaOHdvkvtu2bUNSUhJSU1Oh1WrRr18/rFy5EpMmTTLts2nTJtx9992N7ltdXQ2NRtOmmDhWEJGzstWxwhZxrCAiZ9XWsYJJqSZcvHgR4eHhUodBRCSZzMxM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
Download .txt
gitextract_wsbu4mgw/

├── 01. Day 1 - introduction to Python/
│   ├── Dictionaries.ipynb
│   ├── List.ipynb
│   ├── Sets.ipynb
│   └── Touples.ipynb
├── 02. Day 2 - Python Loops and If-else/
│   └── loop-if-else.ipynb
├── 03. Day 3- Python Functions/
│   └── Python Functions .ipynb
├── 04. Day 4 - Python oops/
│   └── Python Oops.ipynb
├── 05. Day 5 - Python Modules/
│   └── Python Modules.ipynb
├── 07. Day 7 - NumPy Random/
│   └── NumPy Random.ipynb
├── 08. Day 8 - Pandas Introduction/
│   └── Pandas Introduction.ipynb
├── 09. Day 9 - Pandas - ipl data analysis/
│   └── Pandas -Analysis of ipl data.ipynb
├── 10. Day 10 - Data Manipulation in Pandas/
│   └── Data Manipulation.ipynb
├── 100. Day 100 - Brain Tumor Classification/
│   └── brain-tumor-classification.ipynb
├── 11. Day 11 - Matplotlib Introduction/
│   └── Matplotlib Introduction.ipynb
├── 12. Day 12 - Matplotlib Line/
│   └── Matplotlib Line.ipynb
├── 13. Day 13 -Matplotlib Bar-pie-Scatter Plot/
│   └── Matplotlib Bar Plot.ipynb
├── 14. Day 14 - Seaborn Introduction/
│   └── Seaborn Introduction.ipynb
├── 15. Day 15 - Seaborn Plots Types/
│   └── Seaborn Plots.ipynb
├── 22. Day 22 - Evaluation Metrics/
│   └── Performance Metrics.ipynb
├── 23. Day 23 - Train-Test-Split/
│   └── Train-Test_Split.ipynb
├── 25. Day 25 - Implementation Cross-Validation Techniques/
│   └── Techniques For cross validation.ipynb
├── 29. Day 29 - Simple Linear Regression/
│   └── simple-linear-regression.ipynb
├── 31. Day 31 - Implementation Of Multiple Linear Regression/
│   └── multiple-linear-regression.ipynb
├── 33. Day 33 - Logistic Regression/
│   └── logistic-regression.ipynb
├── 35. Day 35 - Implementation Of SVM/
│   └── svm-for-classification.ipynb
├── 37. Day 37 - Implementation Of KNN/
│   └── knn-for-classification-mobile-price-prediction.ipynb
├── 39. Day 39 - Implementation Of Decision Tree Algorithm/
│   └── decision-tree-algorithm.ipynb
├── 41. Day 41 - Random Forest Implementation/
│   └── random-forest.ipynb
├── 42. Day 42 - Hyperparameter Tuning Random Forest/
│   └── hyperparameter-tuning.ipynb
├── 43. Day 43 - Ensamble Learning Implementation/
│   └── ensamble-learning.ipynb
├── 45. Day 45 - Implementation of Naive Bayes/
│   └── gaussian-naive-bayes.ipynb
├── 47. Day 47 - Implementation of K Mean Clustering/
│   └── k-mean-clustering.ipynb
├── 49. Day 49 - DBSCAN Clustering Algorithm Implementation/
│   └── dbscan-clustering.ipynb
├── 50. Day 50 - Implementation of Hierarchical Clustering/
│   └── hierarchical-clustering.ipynb
├── 52. Day 52 - implementation of Gaussian Mixture Model/
│   └── gaussian-mixture-model.ipynb
├── 53. Day 53 - Fuzzy C-Mean Clustering implementation/
│   └── fuzzy-c-mean.ipynb
├── 56. Day 56 - Implementation of Apriori Algorithm/
│   └── apriori-algorithm.ipynb
├── 58. Day 58 - PCA Breast Cancer Dataset/
│   └── pca-cancer-dataset.ipynb
├── 60. Day 60 - LDA - WineQuality/
│   └── lda-wine-quality.ipynb
├── 62. Day 62 - Q - Learning BTC Dataset/
│   └── q-learning-bitcoins.ipynb
├── 63. Day 63 - DQN Algorithm Salesforce dataset/
│   └── dqn-algorithm.ipynb
├── 65. Day 65 - Implementation of Genetic Algorithm/
│   └── genetic-algorithm.ipynb
├── 67. Day 67 - Ridge Regression implementation/
│   └── ridge-regression.ipynb
├── 68. Day 68 - Lasso Regression implementation/
│   └── lasso-regression.ipynb
├── 69. Day 69 - ElasticNet Regression/
│   └── elasticnet-regression.ipynb
├── 71. Day 71 - Time Series Analysis implement/
│   └── time-series-analysis.ipynb
├── 72. Day 72 - SimpleTime Series Method/
│   └── simple-time-series-methods.ipynb
├── 73. Day 73 - Exponential smoothing methods/
│   └── exponential-smoothing-methods.ipynb
├── 74. Day 74 - Auto Regressive Methods/
│   └── auto-regressive-methods.ipynb
├── 76. Day 76 - Explainable AI-Shap/
│   └── explainable-ai-shap.ipynb
├── 79. Day 79 - NLP Text Classification/
│   └── nlp-text-classification.ipynb
├── 80. Day 80 - NLP Password Strength/
│   └── nlp-password-strength.ipynb
├── 81. Day 81 - NLP - Spam Detection/
│   └── nlp-spam-detection.ipynb
├── 82. Day 82 - Oversampling - Undersampling/
│   └── oversampling-undersampling.ipynb
├── 83. Day 83 - Twitter Sentiment Analysis/
│   └── twitter-sentiment-analysis.ipynb
├── 84. Day 84 - Emotion Detection - NLP/
│   └── emotion-detection-nlp.ipynb
├── 85. Day 85 - Language Detection - NLP/
│   └── language-detection-nlp.ipynb
├── 95. Day 95 - computer Vision Image processing/
│   └── image-processing.ipynb
├── 96. Day 96 - Image Processing/
│   └── image-processing.ipynb
├── 97. Day 97 - Watermark Using CV/
│   └── watermark-using-cv.ipynb
├── 98. Day 98 - Texture Features Extraction/
│   └── texture-features-extraction.ipynb
└── 99. Day 99 - Lane Detection/
    └── lane-detection-using-cv.ipynb
Copy disabled (too large) Download .json
Condensed preview — 62 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (34,594K chars).
[
  {
    "path": "01. Day 1 - introduction to Python/Dictionaries.ipynb",
    "chars": 6974,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"93ac7a94\",\n   \"metadata\": {},\n   \"source\": [\n    \"# -----------P"
  },
  {
    "path": "01. Day 1 - introduction to Python/List.ipynb",
    "chars": 10580,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"8297fde3\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Python Lists"
  },
  {
    "path": "01. Day 1 - introduction to Python/Sets.ipynb",
    "chars": 8540,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"d66abaed\",\n   \"metadata\": {},\n   \"source\": [\n    \"# ---------Pyt"
  },
  {
    "path": "01. Day 1 - introduction to Python/Touples.ipynb",
    "chars": 7025,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"4e4a3687\",\n   \"metadata\": {},\n   \"source\": [\n    \"# --------Toup"
  },
  {
    "path": "02. Day 2 - Python Loops and If-else/loop-if-else.ipynb",
    "chars": 10498,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"5430ac25\",\n   \"metadata\": {},\n   \"source\": [\n    \"#  -----------"
  },
  {
    "path": "03. Day 3- Python Functions/Python Functions .ipynb",
    "chars": 9984,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"f88e343c\",\n   \"metadata\": {},\n   \"source\": [\n    \"# -----------P"
  },
  {
    "path": "04. Day 4 - Python oops/Python Oops.ipynb",
    "chars": 8483,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"406a68cc\",\n   \"metadata\": {},\n   \"source\": [\n    \"# ------------"
  },
  {
    "path": "05. Day 5 - Python Modules/Python Modules.ipynb",
    "chars": 13077,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"7a97688c\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Python Modul"
  },
  {
    "path": "07. Day 7 - NumPy Random/NumPy Random.ipynb",
    "chars": 195585,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"bac89c8b\",\n   \"metadata\": {},\n   \"source\": [\n    \"# ------------"
  },
  {
    "path": "08. Day 8 - Pandas Introduction/Pandas Introduction.ipynb",
    "chars": 11810,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"e79fb075\",\n   \"metadata\": {},\n   \"source\": [\n    \"# ------------"
  },
  {
    "path": "09. Day 9 - Pandas - ipl data analysis/Pandas -Analysis of ipl data.ipynb",
    "chars": 75475,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"bdbf75b8\",\n   \"metadata\": {},\n   \"source\": [\n    \"# ------------"
  },
  {
    "path": "10. Day 10 - Data Manipulation in Pandas/Data Manipulation.ipynb",
    "chars": 8118,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"724f45a4\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Data Manipul"
  },
  {
    "path": "100. Day 100 - Brain Tumor Classification/brain-tumor-classification.ipynb",
    "chars": 358852,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "11. Day 11 - Matplotlib Introduction/Matplotlib Introduction.ipynb",
    "chars": 260765,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"4f7aed13\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Matplotlib\"\n"
  },
  {
    "path": "12. Day 12 - Matplotlib Line/Matplotlib Line.ipynb",
    "chars": 561323,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"20322ba7\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Matplotlib"
  },
  {
    "path": "13. Day 13 -Matplotlib Bar-pie-Scatter Plot/Matplotlib Bar Plot.ipynb",
    "chars": 344154,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"eb8f5f7b\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Matplotlib S"
  },
  {
    "path": "14. Day 14 - Seaborn Introduction/Seaborn Introduction.ipynb",
    "chars": 854274,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"0eb603a0\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Python Seabo"
  },
  {
    "path": "15. Day 15 - Seaborn Plots Types/Seaborn Plots.ipynb",
    "chars": 916715,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"e83c3397\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Seaborn Diff"
  },
  {
    "path": "22. Day 22 - Evaluation Metrics/Performance Metrics.ipynb",
    "chars": 3190,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"18c77747\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Performance "
  },
  {
    "path": "23. Day 23 - Train-Test-Split/Train-Test_Split.ipynb",
    "chars": 7102,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"5882df1f\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Train Test S"
  },
  {
    "path": "25. Day 25 - Implementation Cross-Validation Techniques/Techniques For cross validation.ipynb",
    "chars": 6613,
    "preview": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"id\": \"f42b9871\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Cross-Valida"
  },
  {
    "path": "29. Day 29 - Simple Linear Regression/simple-linear-regression.ipynb",
    "chars": 59077,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "31. Day 31 - Implementation Of Multiple Linear Regression/multiple-linear-regression.ipynb",
    "chars": 85980,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "33. Day 33 - Logistic Regression/logistic-regression.ipynb",
    "chars": 42929,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "35. Day 35 - Implementation Of SVM/svm-for-classification.ipynb",
    "chars": 378902,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "37. Day 37 - Implementation Of KNN/knn-for-classification-mobile-price-prediction.ipynb",
    "chars": 460019,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "39. Day 39 - Implementation Of Decision Tree Algorithm/decision-tree-algorithm.ipynb",
    "chars": 644224,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "41. Day 41 - Random Forest Implementation/random-forest.ipynb",
    "chars": 36836,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "42. Day 42 - Hyperparameter Tuning Random Forest/hyperparameter-tuning.ipynb",
    "chars": 31676,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "43. Day 43 - Ensamble Learning Implementation/ensamble-learning.ipynb",
    "chars": 54056,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "45. Day 45 - Implementation of Naive Bayes/gaussian-naive-bayes.ipynb",
    "chars": 63469,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "47. Day 47 - Implementation of K Mean Clustering/k-mean-clustering.ipynb",
    "chars": 494485,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "49. Day 49 - DBSCAN Clustering Algorithm Implementation/dbscan-clustering.ipynb",
    "chars": 2901297,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "50. Day 50 - Implementation of Hierarchical Clustering/hierarchical-clustering.ipynb",
    "chars": 648871,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "52. Day 52 - implementation of Gaussian Mixture Model/gaussian-mixture-model.ipynb",
    "chars": 544986,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "53. Day 53 - Fuzzy C-Mean Clustering implementation/fuzzy-c-mean.ipynb",
    "chars": 310468,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "56. Day 56 - Implementation of Apriori Algorithm/apriori-algorithm.ipynb",
    "chars": 325857,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "58. Day 58 - PCA Breast Cancer Dataset/pca-cancer-dataset.ipynb",
    "chars": 1073889,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "60. Day 60 - LDA - WineQuality/lda-wine-quality.ipynb",
    "chars": 4742867,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "62. Day 62 - Q - Learning BTC Dataset/q-learning-bitcoins.ipynb",
    "chars": 342688,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "63. Day 63 - DQN Algorithm Salesforce dataset/dqn-algorithm.ipynb",
    "chars": 834430,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "65. Day 65 - Implementation of Genetic Algorithm/genetic-algorithm.ipynb",
    "chars": 69775,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "67. Day 67 - Ridge Regression implementation/ridge-regression.ipynb",
    "chars": 2072466,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "68. Day 68 - Lasso Regression implementation/lasso-regression.ipynb",
    "chars": 508761,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "69. Day 69 - ElasticNet Regression/elasticnet-regression.ipynb",
    "chars": 888023,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "71. Day 71 - Time Series Analysis implement/time-series-analysis.ipynb",
    "chars": 639820,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "72. Day 72 - SimpleTime Series Method/simple-time-series-methods.ipynb",
    "chars": 804903,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "73. Day 73 - Exponential smoothing methods/exponential-smoothing-methods.ipynb",
    "chars": 901909,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "74. Day 74 - Auto Regressive Methods/auto-regressive-methods.ipynb",
    "chars": 1143290,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "76. Day 76 - Explainable AI-Shap/explainable-ai-shap.ipynb",
    "chars": 736645,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "79. Day 79 - NLP Text Classification/nlp-text-classification.ipynb",
    "chars": 227206,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "80. Day 80 - NLP Password Strength/nlp-password-strength.ipynb",
    "chars": 74833,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "81. Day 81 - NLP - Spam Detection/nlp-spam-detection.ipynb",
    "chars": 1282236,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "82. Day 82 - Oversampling - Undersampling/oversampling-undersampling.ipynb",
    "chars": 51166,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "83. Day 83 - Twitter Sentiment Analysis/twitter-sentiment-analysis.ipynb",
    "chars": 810261,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "84. Day 84 - Emotion Detection - NLP/emotion-detection-nlp.ipynb",
    "chars": 134692,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "85. Day 85 - Language Detection - NLP/language-detection-nlp.ipynb",
    "chars": 501525,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "95. Day 95 - computer Vision Image processing/image-processing.ipynb",
    "chars": 3513475,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "96. Day 96 - Image Processing/image-processing.ipynb",
    "chars": 524109,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "97. Day 97 - Watermark Using CV/watermark-using-cv.ipynb",
    "chars": 104953,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "98. Day 98 - Texture Features Extraction/texture-features-extraction.ipynb",
    "chars": 308866,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  },
  {
    "path": "99. Day 99 - Lane Detection/lane-detection-using-cv.ipynb",
    "chars": 1401170,
    "preview": "{\"metadata\":{\"kernelspec\":{\"language\":\"python\",\"display_name\":\"Python 3\",\"name\":\"python3\"},\"language_info\":{\"name\":\"pyth"
  }
]

About this extraction

This page contains the full source code of the Abdullah-khan0/100-DaysOf-Code-dataScience GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 62 files (32.9 MB), approximately 8.6M tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!